INHOUDSOPGAWE:
- Voorrade
- Stap 1: Skakel die kring en Pi aan
- Stap 2: Die MPU6050
- Stap 3: Die Adafruit Ultimate Breakout GPS
- Stap 4: Die 16x2 LCD
- Stap 5: Servo, Leds, knop en skakelaar
- Stap 6: Die volledige kring
- Stap 7: Die kode
- Stap 8: Die databasis
- Stap 9: Die saak
Video: Track & trace vir klein winkels: 9 stappe (met foto's)
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:24
Dit is 'n stelsel wat ontwerp is vir klein winkels wat veronderstel is om op e-bikes of e-bromponies te ry vir aflewerings op kort afstand, byvoorbeeld 'n bakkery wat gebak wil aflewer.
Wat beteken Track and Trace?
Track and trace is 'n stelsel wat deur draers of koerierondernemings gebruik word om die vervoer van pakkies of items tydens vervoer op te teken. Op elke verwerkingsplek word die goedere geïdentifiseer en data na die sentrale verwerkingstelsel oorgedra. Hierdie data word dan gebruik om die versenders die status/opdatering van die goedere se ligging te gee.
Die stelsel wat ons maak, sal ook die roete en die hoeveelheid skokke en stote wat ontvang word, toon. Hierdie instruksies veronderstel ook dat u basiese kennis het van 'n framboos -pi, luislang en mysql.
let wel: dit is gemaak vir 'n skoolprojek, en as gevolg van die tydsbeperking is daar baie ruimte vir verbetering
Voorrade
-Raspberry Pi 4 model B
-Raspberry PI T-skoenmaker
-4x3, 7V Li-ion batterye
-2x dubbele batteryhouer
-DC Buck Step-down Converter 5v
-2x groot oranje LED's
-aan/af/aan skakelaar
-knoppie
-adafruit ultimate gps v3
-mpu6050
-16x2 lcd -skerm
-servomotor
Stap 1: Skakel die kring en Pi aan
As u die kring -pi met 'n battery wil aandryf, het u 'n paar opsies om dit te doen.
U kan 'n powerbank gebruik en die pi via USB aanskakel, miskien monteer u die toestel op 'n e-fiets of 'n scooter met 'n USB-poort, miskien het u 'n 5V-telefoonbattery wat wag om gebruik te word, of u kan 2 gebruik stelle 3,7V batterye parallel met 'n afwaartse omskakelaar, soos op die foto's getoon
Alles is goed, solank dit 'n deurlopende 5V kan lewer en 'n leeftyd het waarmee u tevrede is.
Stap 2: Die MPU6050
InleidingMPU6050 sensormodule is 'n geïntegreerde 6-as bewegingsopsporingstoestel.
- Dit het 'n 3-as-gyroscoop, 'n 3-as-versnellingsmeter, digitale bewegingsverwerker en 'n temperatuursensor, alles in 'n enkele IC.
- Verskeie parameters kan gevind word deur waardes van adresse van sekere registers met behulp van I2C -kommunikasie te lees. Gyroscoop- en versnellingsmeterlesing langs X-, Y- en Z -as is beskikbaar in 2 se komplementvorm.
- Gyroscooplesings is in grade per sekonde (dps) eenheid; Versnellingsmeterlesings is in g -eenheid.
I2C aktiveer
As u 'n MPU6050 met 'n Raspberry Pi gebruik, moet ons verseker dat die I2C -protokol op die Raspberry Pi aangeskakel is. Om dit te doen, maak die pi se terminaal deur stopverf of ander sagteware oop en doen die volgende:
- tik "sudo raspi-config" in
- Kies Interfacing Configurations
- In die koppelvlak -opsie, kies "I2C"
- Aktiveer I2C -opset
- Kies Ja as dit gevra word om te herlaai.
Nou kan ons toets/skandeer vir enige I2C -toestel wat aan ons Raspberry Pi -bord gekoppel is deur i2c -instrumente te installeer. Ons kan i2c -instrumente kry deur die geskikte pakketbestuurder te gebruik. Gebruik die volgende opdrag in die Raspberry Pi -terminale.
"sudo apt-get install -y i2c-tools"
Koppel nou enige I2C-gebaseerde toestel aan die gebruikersmoduspoort en skandeer die poort met die volgende opdrag, "sudo i2cdetect -y 1"
Dan reageer dit met die adres van die toestel.
As geen adres teruggestuur word nie, maak seker dat die MPU6050 behoorlik gekoppel is en probeer weer
Dit laat werk
noudat ons seker is dat i2c aangeskakel is en die pi die MPU6050 kan bereik, gaan ons 'n biblioteek installeer met die opdrag "sudo pip3 install adafruit-circuitpython-mpu6050".
As ons 'n python -toetslêer maak en die volgende kode gebruik, kan ons sien of dit werk:
invoer tyd
invoerbord
bus invoer
oimport adafruit_mpu6050
i2c = busio. I2C (board. SCL, board. SDA)
mpu = adafruit_mpu6050. MPU6050 (i2c)
terwyl dit waar is:
print ("Versnelling: X: %. 2f, Y: %.2f, Z: %.2f m/s^2" %(mpu. versnelling))
druk ("Gyro X: %. 2f, Y: %.2f, Z: %.2f grade/s" %(mpu.gyro))
druk ("Temperatuur: %.2f C" % mpu.temperatuur)
druk ("")
tyd. slaap (1)
As ons nou die versnelling in die X/Y/Z-as wil hê, kan ons die volgende gebruik:
accelX = mpu.acceleration [0] accelY = mpu.acceleration [1] accelZ = mpu.acceleration [2]
As ons dit kombineer met 'n eenvoudige as -verklaring in 'n konstante lus, kan ons die hoeveelheid skokke op 'n rit tel
Stap 3: Die Adafruit Ultimate Breakout GPS
Inleiding
Die uitbreek is gebou rondom die MTK3339-skyfiestel, 'n no-nonsense GPS-module van hoë gehalte wat tot 22 satelliete op 66 kanale kan opspoor, 'n uitstekende ontvanger met 'n hoë sensitiwiteit (-165 dB-dop!) En 'n ingeboude antenna. Dit kan tot 10 plek -opdaterings per sekonde doen vir hoë spoed, hoë sensitiwiteit aanmelding of opsporing. Die kragverbruik is ongelooflik laag, slegs 20 mA tydens navigasie.
Die bord bevat: 'n ultra-lae uitval 3.3V-reguleerder, sodat u dit kan aanvoer met 3.3-5VDC in, 5V-vlak veilige insette. gevind dat dit krag bespaar.
Toets die gps met arduino
As u toegang tot 'n arduino het, is dit 'n goeie idee om die module daarmee te toets.
Koppel VIN aan +5V Koppel GND aan Ground Connect GPS RX (data into GPS) to Digital 0 Connect GPS TX (data out of GPS) to Digital 1
Voer 'n leë arduino -kode uit en maak die seriële monitor op 9600 baud oop. As u GPS -data kry, werk u GPS -module.
Dit laat werk
Begin met die installering van die adafruit gps-biblioteek met die opdrag "sudo pip3 install adafruit-circuitpython-gps".
Nou kan ons die volgende python -kode gebruik om te sien of ons dit kan laat werk:
import timeimport board import busioimport adafruit_gpsimport serial uart = serial. Serial ("/dev/ttyS0", baudrate = 9600, timeout = 10)
gps = adafruit_gps. GPS (uart, debug = False) gps.send_command (b'PMTK314, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ') gps.send_command (b'PMTK220, 1000')
terwyl dit waar is:
gps.update () terwyl dit nie gps.has_fix is nie:
print (gps.nmea_sentence) print ('Wag vir oplossing …') gps.update () time.sleep (1) gaan voort
print ('=' * 40) # Druk 'n skeiding line.print ('Latitude: {0:.6f} degrees'.format (gps.latitude)) print (' Longitude: {0:.6f} degrees'.format (gps.longitude)) druk ("Fix quality: {}". format (gps.fix_quality))
# Sommige eienskappe buite breedtegraad, lengte- en tydstempel is opsioneel# en is moontlik nie teenwoordig nie. Kontroleer of dit geen is voordat u dit probeer gebruik nie! As gps.satellites nie Geen is nie:
druk ("# satelliete: {}". formaat (gps.satelliete))
as gps.altitude_m nie Geen is nie:
print ("Hoogte: {} meter".formaat (gps.altitude_m))
as gps.speed_knots nie Geen is nie:
print ("Spoed: {} knope".formaat (gps.speed_knots))
as gps.track_angle_deg nie Geen is nie:
print ("Spoorhoek: {} grade".formaat (gps.track_angle_deg))
as gps.horizontaal_verdunning nie Geen is nie:
print ("Horisontale verdunning: {}". formaat (gps.horizontaal_verdunning))
as gps.height_geoid nie Geen is nie:
print ("Hoogte geografiese ID: {} meter".formaat (gps.height_geoid))
tyd. slaap (1)
Stap 4: Die 16x2 LCD
Inleiding
LCD -modules word baie algemeen gebruik in die meeste ingebedde projekte, die rede hiervoor is die goedkoop prys, beskikbaarheid en programmeerdervriendelik. Die meeste van ons sou hierdie skerms in ons daaglikse lewe teëgekom het, hetsy by PCO's of sakrekenaars. 16 × 2 LCD word so genoem; dit het 16 kolomme en 2 rye. Daar is baie kombinasies beskikbaar, soos 8 × 1, 8 × 2, 10 × 2, 16 × 1, ens. Maar die 16 x 2 LCD -skerm wat die meeste gebruik word. Dit bevat dus (16 × 2 = 32) altesaam 32 karakters en elke karakter bestaan uit 5 × 8 pixelpunte.
Installeer smbus
Die System Management Bus (SMBus) is min of meer 'n afgeleide van die I2C -bus. Die standaard is ontwikkel deur Intel en word nou gehandhaaf deur die SBS Forum. Die hooftoepassing van die SMBus is om kritieke parameters op PC -moederborde en in ingebedde stelsels te monitor. Daar is byvoorbeeld baie voedingsspanningsmonitors, temperatuurmonitors en waaiermonitors/-beheer -IC's met 'n SMBus -koppelvlak beskikbaar.
Die biblioteek wat ons sal gebruik, vereis dat smbus ook geïnstalleer word. Om smbus op die rpi te installeer, gebruik die opdrag "sudo apt install python3-smbus".
Dit laat werk
Installeer eers die RPLCD -biblioteek met die opdrag "sudo pip3 install RPLCD".
nou toets ons die lcd deur die ip te vertoon met die volgende kode:
vanaf RPLCD.i2c voer CharLCDimport -aansluiting in
def get_ip_address ():
ip_address = 's = socket.socket (socket. AF_INET, socket. SOCK_DGRAM) s.connect (("8.8.8.8", 80)) ip_address = s.getsockname () [0] s.close () return ip_address
lcd = CharLCD ('PCF8574', 0x27)
lcd.write_string ('IP -adres: / r / n'+str (get_ip_address ()))
Stap 5: Servo, Leds, knop en skakelaar
Inleiding
'N Servomotor is 'n roterende aandrywer of motor wat presiese beheer moontlik maak ten opsigte van hoekposisie, versnelling en snelheid, die vermoëns wat 'n gewone motor nie het nie. Dit maak gebruik van 'n gewone motor en koppel dit met 'n sensor vir terugvoer oor posisies. Die kontroleerder is die mees gesofistikeerde deel van die servomotor, aangesien dit spesifiek vir die doel ontwerp is.
LED kort vir liguitstralende diode. 'N Elektroniese halfgeleierapparaat wat lig uitstraal wanneer 'n elektriese stroom daardeur beweeg. Hulle is aansienlik meer doeltreffend as gloeilampe, en brand selde uit. LED's word in baie toepassings gebruik, soos platskermvideo-uitstallings, en toenemend as algemene ligbronne.
'N Drukknop of 'n eenvoudige knoppie is 'n eenvoudige skakelmeganisme om 'n aspek van 'n masjien of 'n proses te beheer. Knoppies is gewoonlik gemaak van harde materiaal, gewoonlik plastiek of metaal.
'N Aan/uit/aan -skakelaar het 3 posisies waar die middelste een af is, hierdie tipes word meestal gebruik vir 'n eenvoudige motorbeheer waar u 'n voor-, af- en agteruit -toestand het.
Dit laat werk: die servo
Die servo gebruik 'n PWM -sein om te bepaal in watter hoek dit moet wees, maar vir ons het GPIO hierdie funksie ingebou. Daarom kan ons eenvoudig die volgende kode gebruik om die servo te beheer: voer RPi. GPIO in as GPIO
servo_pin = 18 duty_cycle = 7.5
GPIO.setmode (GPIO. BCM)
GPIO.setup (servo_pin, GPIO. OUT)
pwm_servo = GPIO. PWM (servo_pin, 50) pwm_servo.start (duty_cycle)
terwyl dit waar is:
duty_cycle = float (input ("Enter Duty Cycle (Left = 5 to Right = 10):")) pwm_servo. ChangeDutyCycle (duty_cycle)
Dit laat werk: die LED en skakelaar
As gevolg van die manier waarop ons die LED's en die skakelaar bedraad het, hoef ons nie die LED's te beheer of te lees en self te skakel nie. Ons stuur eenvoudig pulse na die knoppieheks, wat op sy beurt die sein na die LED sal stuur wat ons wil hê.
Dit laat werk: die knoppie
Vir die knoppie maak ons ons eie eenvoudige klas op hierdie manier wat ons maklik kan sien wanneer dit ingedruk word, sonder om 'n gebeurtenisopsporing daarby te hoef te voeg elke keer as ons dit gebruik. Ons maak die lêer classbutton.py met behulp van die volgende kode:
vanaf RPi -invoer GPIOklas -knoppie:
def _init _ (self, pin, bouncetime = 200): self.pin = pin self.bouncetime = bouncetime GPIO.setmode (GPIO. BCM) GPIO.setup (pin, GPIO. IN, GPIO. PUD_UP) @property def gedruk (self):
ingedrukt = GPIO.input (self.pin) return nie ingedrukt
def on_press (self, call_method):
GPIO.add_event_detect (self.pin, GPIO. FALLING, call_method, bouncetime = self.bouncetime)
def on_release (self, call_method):
GPIO.add_event_detect (self.pin, GPIO. RISING, call_method, bouncetime = self.bouncetime)
Stap 6: Die volledige kring
Noudat ons al die komponente nagegaan het, is dit tyd om hulle almal te kombineer.
Terwyl die foto's toon, toon die komponente alles op die broodbord, maar dit is beter om die lcd, adafruit GPS en die knoppie aan te sluit met behulp van wyfie- en manlike drade. Slegs die t-skoenmaker en die mpu6050 op 'n broodbord. As dit by die LED's en die skakelaar kom Gebruik langer drade om seker te maak dat u die blinkerstawe en stuurstang kan bereik.
Stap 7: Die kode
Om hierdie instruksies skoon te hou, het ek 'n github -bewaarplek met die backend- en frontend -lêers voorsien. Plaas die lêers eenvoudig in die frontend -lêergids in die/var/www/html -lêer en die lêers in die backend -lêer in 'n map in die/home/ [gebruikersnaam]/[vouernaam] gids
Stap 8: Die databasis
As gevolg van die manier waarop hierdie stelsel opgestel is, is daar 'n eenvoudige webwinkel met 'n lys produkte in 'n databasis, en ons het ook al die punte en bestellings wat hier gestoor word. volgende stap
Stap 9: Die saak
As ons eers weet wat die elektroniese werk is, kan ons dit in 'n boks stop. U kan kreatiewe vryheid hiermee neem. Voordat u dit bou, gryp u eenvoudig 'n kartondoos wat u nie meer nodig het nie, soos 'n leë graanboks, en sny dit vas, plak dit vas en vou dit totdat jy iets het waarvan jy hou. Meet en teken jou kas op 'n stuk papier en maak dit van 'n meer robuuste materiaal soos hout, of as dit nie jou ding is nie, druk dit uit. Maak seker dat al die elektronika daarin pas en jy het gate vir die knoppie, die draad na die skakelaar, die LED's en die LCD. Sodra jy jou saak gemaak het, is dit net 'n kwessie om 'n manier te vind om dit op jou fiets of bromponie te monteer.
Aanbeveel:
Outomatiese telling vir 'n klein Skee-Ball-spel: 10 stappe (met foto's)
Outomatiese puntetelling vir 'n klein balbalspeletjie: Tuisgemaakte Skee-bal-speletjies kan baie pret vir die hele gesin wees, maar die nadeel daarvan was altyd die gebrek aan outomatiese telling. Ek het voorheen 'n Skee-Ball-masjien gebou wat die balle in aparte kanale gegrond het op grond van die
POS -STELSEL VIR WINKELS, GROENTE EN DIENSSENTRUM UIT EXCEL Met die gebruik van strepieskodes: 7 stappe
POSSTELSEL VIR WINKELS, GROENTE EN DIENSSENTRUM UIT EXCEL Met die gebruik van strepieskodes: ek stel u met hierdie blog 'n uiteensetting van hoe u 'n eenvoudige POS -stelsel (verkooppunt) kan skep vir klein winkels, kruideniersware en dienssentrums. Met hierdie metode kan u die volgende fasiliteite bestuur sonder spesiale sagteware of duur toerusting. v Iss
Home Darkroom -ontwerp vir klein ruimtes: 7 stappe (met foto's)
Home Darkroom -ontwerp vir klein ruimtes: 360 -aansig van my omskepte kas - Sferiese beeld - RICOH THETAH, ek wil eers sê dat hierdie donkerkamer -ontwerp nie op almal van toepassing sal wees nie. U kas kan groter, kleiner wees, of u gebruik 'n badkamerruimte. Y
N Klein alarmstelsel met 'n super klein Arduino -versoenbare bord !: 10 stappe
N Klein alarmstelsel met 'n Super Tiny Arduino -versoenbare bord !: Hallo, vandag gaan ons 'n klein, lekker projek maak. Ons gaan 'n klein alarmtoestel bou wat die afstand tussen hom en 'n voorwerp voor hom meet. En as die voorwerp oor 'n vasgestelde afstand beweeg, sal die toestel u in kennis stel met 'n
Goedkoop ratmotors vir klein robotte: 5 stappe (met foto's)
Goedkoop ratmotors vir klein robotte: benodig u klein, kragtige en goedkoop motors vir u nuutste klein robotprojek? Ek het hierdie " N20 " Gearmotors 'n jaar of wat gelede terwyl ek aan my ProtoBot -projek gewerk het. Hulle is klein, kragtig en volop uit baie bronne aanlyn. Jy