Tartalomjegyzék:
- Kellékek
- 1. lépés: Az áramkör és a Pi áramellátása
- 2. lépés: Az MPU6050
- 3. lépés: Az Adafruit Ultimate Breakout GPS
- 4. lépés: A 16x2 LCD
- 5. lépés: Szervo, LED, gomb és kapcsoló
- 6. lépés: A teljes áramkör
- 7. lépés: A kód
- 8. lépés: Az adatbázis
- 9. lépés: Az ügy
Videó: Nyomon követés kisboltokban: 9 lépés (képekkel)
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:40
Ez a rendszer olyan kis üzletek számára készült, amelyeket feltehetően e-kerékpárokra vagy e-robogókra szerelnek fel rövid távú szállításhoz, például pékségben, amely péksüteményeket kíván szállítani.
Mit jelent a Nyomkövetés?
A nyomkövetés olyan rendszer, amelyet a fuvarozók vagy futárszolgálatok használnak a csomagok vagy tételek szállítás közbeni mozgásának rögzítésére. Minden feldolgozási helyen azonosítják az árukat és továbbítják az adatokat a központi feldolgozó rendszerhez. Ezeket az adatokat azután az áruk helyzetének/frissítésének megadására használják a szállítók számára.
Az általunk készített rendszer megmutatja a megtett útvonalat, valamint a kapott ütések és ütések mennyiségét is. Ez az utasítás azt is feltételezi, hogy rendelkezik alapvető ismeretekkel a málna pi, a python és a mysql területén.
megjegyzés: ez egy iskolai projekthez készült, így az idő szűkössége miatt sok a fejlődési lehetőség
Kellékek
-Málna Pi 4 B modell
-Málna PI T-cobbler
-4x 3, 7V Li-ion akkumulátor
-2x dupla elemtartó
-DC Buck Step-down Converter 5v
-2x nagy narancssárga led
-be/ki/be kapcsoló
-gomb
-adafruit ultimate gps v3
-mpu6050
-16x2 lcd kijelző
-szervómotor
1. lépés: Az áramkör és a Pi áramellátása
A pi áramkör akkumulátorról történő táplálásakor néhány lehetőség van arra, hogyan kell ezt megtenni.
Használhat egy powerbankot, és a pi tápellátását USB-n keresztül hajthatja végre, esetleg az USB-porttal rendelkező e-kerékpárra vagy e-robogóra szereli fel a készüléket, esetleg 5 V-os telefon akkumulátora hever körül, és várja, hogy használhassa. 3,7 V -os elemkészletek párhuzamosan egy lépcsőzetes átalakítóval, mint a képeken
Bármi rendben van, amíg folyamatos 5V -ot tud biztosítani, és olyan élettartammal rendelkezik, amellyel elégedett.
2. lépés: Az MPU6050
Bevezetés Az MPU6050 érzékelő modul egy integrált 6 tengelyes mozgáskövető eszköz.
- 3 tengelyes giroszkóppal, 3 tengelyes gyorsulásmérővel, digitális mozgásprocesszorral és hőmérséklet-érzékelővel rendelkezik, mindezt egyetlen IC-ben.
- Különböző paramétereket találhat, ha bizonyos regiszterek címeiből olvas ki értékeket I2C kommunikáció használatával. A giroszkóp és a gyorsulásmérő leolvasása az X, Y és Z tengely mentén 2 -es komplement formában érhető el.
- A giroszkóp leolvasása másodpercben (dps) mértékegységben történik; A gyorsulásmérő leolvasása g egységben van megadva.
Az I2C engedélyezése
Ha az MPU6050 készüléket Raspberry Pi készülékkel használja, akkor ügyelnünk kell arra, hogy a Raspberry Pi I2C protokollja be legyen kapcsolva. Ehhez nyissa meg a pi terminálját gitt vagy más szoftverprogram segítségével, és tegye a következőket:
- írja be: "sudo raspi-config"
- Válassza az Interfészkonfigurációk lehetőséget
- Az Interfész opcióban válassza az "I2C" lehetőséget
- I2C konfiguráció engedélyezése
- Válassza az Igen lehetőséget, amikor újraindítást kér.
Most az i2c eszközök telepítésével tesztelhetjük/beolvashatjuk a Raspberry Pi táblához csatlakoztatott bármely I2C eszközt. I2c eszközöket szerezhetünk be az apt csomagkezelő használatával. Használja a következő parancsot a Raspberry Pi terminálon.
"sudo apt-get install -y i2c-tools"
Most csatlakoztasson bármilyen I2C-alapú eszközt a felhasználói módú porthoz, és a következő paranccsal ellenőrizze a portot, "sudo i2cdetect -y 1"
Ezután válaszol az eszköz címével.
Ha nem ad vissza címet, győződjön meg arról, hogy az MPU6050 megfelelően van csatlakoztatva, és próbálja újra
Hogy működjön
Most, hogy biztosak vagyunk abban, hogy az i2c engedélyezve van, és a pi elérheti az MPU6050-et, telepítünk egy könyvtárat a "sudo pip3 install adafruit-circuitpython-mpu6050" paranccsal.
Ha elkészítünk egy python tesztfájlt, és a következő kódot használjuk, láthatjuk, hogy működik -e:
importálási idő
import tábla
import üzlet
oimport adafruit_mpu6050
i2c = busio. I2C (board. SCL, board. SDA)
mpu = adafruit_mpu6050. MPU6050 (i2c)
míg igaz:
print ("Gyorsulás: X: %. 2f, Y: %.2f, Z: %.2f m/s^2" %(mpu.gyorsulás))
nyomtatás ("Giroszkóp X: %. 2f, Y: %.2f, Z: %.2f fok/s" %(mpu.gyro))
print ("Hőmérséklet: %.2f C" % mpu.temperature)
nyomtatás("")
time.sleep (1)
Ha most az X/Y/Z tengelyben szeretnénk a gyorsítást, akkor a következőket használhatjuk:
accelX = mpu.acceleration [0] accelY = mpu.acceleration [1] accelZ = mpu.acceleration [2]
ezt kombinálva egy egyszerű if utasítással egy állandó hurokban, számolni tudjuk az utazás sokkjainak mennyiségét
3. lépés: Az Adafruit Ultimate Breakout GPS
Bevezetés
A kitörés az MTK3339 lapkakészlet köré épül, egy értelmetlen, kiváló minőségű GPS modul, amely akár 22 műholdat is képes követni 66 csatornán, kiváló érzékenységű vevővel (-165 dB követés!) És beépített antennával rendelkezik.. Másodpercenként akár 10 helyfrissítést is képes végrehajtani a nagy sebességű, nagy érzékenységű naplózás vagy követés érdekében. Az energiafelhasználás hihetetlenül alacsony, mindössze 20 mA navigáció közben.
A tábla a következőket tartalmazza: rendkívül alacsony kiesésű 3,3 V-os szabályozó, így 3,3–5 V egyenáramú bemenettel, 5 V-os szintű biztonságos bemenettel táplálhatja, A LED körülbelül 1 Hz-en villog, miközben műholdakat keres, és 15 másodpercenként villog, ha javítás történik hatalmat takarítottak meg.
A gps tesztelése arduino -val
Ha van hozzáférése egy arduino -hoz, akkor érdemes tesztelni vele a modult.
Csatlakoztassa a VIN -t +5V -hoz Csatlakoztassa a GND -t a földhöz Csatlakoztassa a GPS RX -et (adatok a GPS -be) a digitálishoz 0 Csatlakoztassa a GPS TX -t (adatok a GPS -ből) a digitális 1 -hez
Egyszerűen futtasson egy üres arduino kódot, és nyissa meg a soros monitort 9600 baudon. Ha gps adatokat kap, a gps modul működik. Megjegyzés: ha a modul nem kap javítást, próbálja meg kitenni az ablakon vagy a teraszon kívülre
Hogy működjön
Kezdje el az adafruit gps könyvtár telepítését a "sudo pip3 install adafruit-circuitpython-gps" paranccsal.
Most a következő python -kódot használhatjuk, hogy meg tudjuk -e valósítani:
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')
míg igaz:
gps.update (), míg nem gps.has_fix:
print (gps.nmea_sentence) print ('Várakozás a javításra …') gps.update () time.sleep (1) folytatás
print ('=' * 40) # Nyomtasson el elválasztó sort. print ('Szélesség: {0:.6f} fok'. formátum (gps.latitude)) print ('Hosszúság: {0:.6f} fok'. formátum (gps.longitude)) print ("Fix minőség: {}". formátum (gps.fix_quality))
# Néhány szélességi, hosszúsági és időbélyegzőn kívüli attribútum opcionális#, és előfordulhat, hogy nincs jelen. Használat előtt ellenőrizze, hogy nincsenek -e! Ha a gps.satellites nem None:
print ("# műhold: {}". formátum (gps.satellites))
ha a gps.altitude_m nem Nincs:
print ("Magasság: {} méter".formátum (gps.altitude_m))
ha a gps.speed_knots nem Nincs:
print ("Sebesség: {} csomó".formátum (gps.speed_knots))
ha a gps.track_angle_deg értéke nincs:
print ("Pályaszög: {} fok".formátum (gps.track_angle_deg))
ha a gps.horizontal_dilution értéke nincs:
print ("Vízszintes hígítás: {}". formátum (gps.horizontal_dilution))
ha a gps.height_geoid nincs Nincs:
print ("Magasság földrajzi azonosító: {} méter".formátum (gps.height_geoid))
time.sleep (1)
4. lépés: A 16x2 LCD
Bevezetés
Az LCD modulokat nagyon gyakran használják a legtöbb beágyazott projektben, ennek oka az olcsó ár, a rendelkezésre állás és a programozóbarát. Legtöbbünk a PCO -knál vagy a számológépeknél találkozott volna ezekkel a kijelzőkkel a mindennapi életünkben. 16 oszlopot és 2 sort tartalmaz. Sokféle kombináció áll rendelkezésre, például 8 × 1, 8 × 2, 10 × 2, 16 × 1 stb., De a leggyakrabban használt a 16 × 2 LCD. Tehát összesen (16 × 2 = 32) 32 karakterből áll, és minden karakter 5 × 8 pixel pontból fog állni.
Az smbus telepítése
A System Management Bus (SMBus) többé -kevésbé az I2C busz származéka. A szabványt az Intel fejlesztette ki, és most az SBS Forum tartja fenn. Az SMBus fő alkalmazása a kritikus paraméterek figyelése PC alaplapokon és beágyazott rendszerekben. Például sok tápfeszültség -monitor, hőmérséklet -figyelő és ventilátor -monitor/vezérlő IC -k állnak rendelkezésre SMBus interfésszel.
Az általunk használt könyvtár megköveteli az smbus telepítését is. Az smbus rpi telepítéséhez használja a "sudo apt install python3-smbus" parancsot.
Hogy működjön
először telepítse az RPLCD könyvtárat a "sudo pip3 install RPLCD" paranccsal.
most teszteljük az LCD -t az ip megjelenítésével a következő kód használatával:
az RPLCD.i2c -ből importálja a CharLCDimport aljzatot
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 -cím: / r / n'+str (get_ip_address ()))
5. lépés: Szervo, LED, gomb és kapcsoló
Bevezetés
A szervomotor egy forgó hajtómű vagy motor, amely lehetővé teszi a szöghelyzet, a gyorsulás és a sebesség pontos szabályozását, olyan képességeket, amelyekkel a hagyományos motor nem rendelkezik. Rendszeres motort használ, és párosítja egy érzékelővel a pozíció visszacsatolásához. A vezérlő a szervomotor legkifinomultabb része, mivel kifejezetten erre a célra készült.
A LED rövid a fénykibocsátó diódához. Elektronikus félvezető eszköz, amely fényt bocsát ki, amikor elektromos áram halad át rajta. Lényegesen hatékonyabbak, mint az izzólámpák, és ritkán égnek ki. A LED-eket számos alkalmazásban használják, például síkképernyős videókijelzőkön, és egyre inkább általános fényforrásként.
A nyomógomb vagy egyszerűen gomb egy egyszerű kapcsolómechanizmus a gép vagy folyamat bizonyos aspektusainak vezérlésére. A gombok általában kemény anyagból készülnek, általában műanyagból vagy fémből.
A be/ki/be kapcsolónak 3 állása van, ahol a középső a kikapcsolt állapot. Ezeket a típusokat leginkább az egyszerű motorvezérlésre használják, ahol van előre-, kikapcsolt és hátrameneti állapot.
Működés: a szervó
A szervó PWM jelet használ annak meghatározására, hogy milyen szögben kell lennie nekünk, szerencsére a GPIO rendelkezik ezzel a funkcióval. Ezért egyszerűen használhatjuk a következő kódot a szervó vezérléséhez: RPi importálása. GPIO mint GPIOimport idő
szervo_pin = 18duty_cycle = 7.5
GPIO.setmode (GPIO. BCM)
GPIO.setup (servo_pin, GPIO. OUT)
pwm_servo = GPIO. PWM (szervo_pin, 50) pwm_servo.start (duty_cycle)
míg igaz:
duty_cycle = float (input ("Enter Duty Cycle (Left = 5 to Right = 10):")) pwm_servo. ChangeDutyCycle (duty_cycle)
Működés: a led és a kapcsoló
A LED -ek és a kapcsoló bekötésének módja miatt nem kell vezérelnünk vagy olvasnunk a LED -eket és magát a kapcsolót. Egyszerűen impulzusokat küldünk a gombos boszorkánynak, ami viszont a kívánt LED -re irányítja a jelet.
Működés: a gomb
A gombhoz saját egyszerű osztályt készítünk, így könnyen láthatjuk, ha megnyomjuk, anélkül, hogy minden használatkor hozzá kellene adnunk egy eseményérzékelőt. A classbutton.py fájlt a következő kód használatával készítjük el:
az RPi import GPIOclass gombjából:
def _init _ (self, pin, bouncetime = 200): self.pin = pin self.bouncetime = bouncetime GPIO.setmode (GPIO. BCM) GPIO.setup (pin, GPIO. IN, GPIO. PUD_UP) @tulajdon def megnyomva (self):
ingedrukt = GPIO.input (self.pin) return nem 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)
6. lépés: A teljes áramkör
Most, hogy áttekintettük az összes összetevőt, ideje összekeverni őket.
Míg a képek azt mutatják, hogy a komponensek mindent mutatnak a kenyértáblán, jobb, ha az LCD-t, az adafruit GPS-t és a gombot női és férfi vezetékek segítségével csatlakoztatják. Csak a t-cobbler és az mpu6050 legyen a kenyérsütőn. Amikor a LED-ekről és a kapcsolóról van szó használjon hosszabb huzalokat, hogy biztosan elérhesse a villogó rudakat és a kormányrudat.
7. lépés: A kód
Ennek az oktathatónak a tisztán tartása érdekében github tárolót adtam hozzá mind a háttér, mind a frontend fájlokhoz. Egyszerűen tegye a fájlokat a/var/www/html folde frontend mappájába, és a fájlokat a backend mappába a/home/mappában [felhasználónév]/[mappanév] mappa
8. lépés: Az adatbázis
Ennek a rendszernek a felépítése miatt van egy egyszerű webáruház, amely az adatbázisban található termékek listáját használja, továbbá minden útpontot és megrendelést ide mentünk. A létrehozási szkript megtalálható a github tárolóban, következő lépés
9. lépés: Az ügy
Amint ismerjük az elektronikai munkát, betölthetjük őket egy dobozba. Ezzel kreatív szabadságot vehet igénybe. Mielőtt megépítené, egyszerűen ragadjon meg egy kartondobozt, amelyre már nincs szüksége, mint például egy üres gabonapehely, és vágja le, ragassza fel. és hajtogassa addig, amíg valami tetszik. Mérje meg és rajzolja le a tokját egy papírlapra, és készítse el egy masszívabb anyagból, például fából, vagy ha ez nem a ti dolga, akkor nyomtassa ki. Csak győződjön meg róla, hogy minden elektronika elfér benne és lyukak vannak a gombhoz, a vezetékhez, amely a kapcsolóhoz megy, a LED -ekhez és az LCD -hez. Miután elkészítette a tokját, csak meg kell találnia a kerékpárra vagy a robogóra történő rögzítés módját
Ajánlott:
A COVID-19 kitörésének nyomon követése ESP8266 segítségével: 11 lépés (képekkel)
A COVID-19 kitörésének nyomon követése ESP8266 segítségével: Ez a kis szerkentyű segít naprakésznek lenni a koronavírus-járványról és az ország helyzetéről. Ez egy IoT-alapú projekt, amely valós idejű adatokat jelenít meg a koronavírus (COVID-19) okozta esetekről, halálesetekről és gyógyult emberekről
Hálózati vonal nyomon követése: 7 lépés
Hálózati vonal nyomon követése: Nos, szükségem van valamilyen módon, hogy nyomon lehessen követni néhány hálózati vonalat, amelyeket a házam építése közben telepítettek 7 évvel ezelőtt. Sajnos akkor még nem címkézték őket. Sok pénzt költhet egy kereskedelmi egységre, vagy egy kis tudással és 5 dollárral
A polgári infrastruktúrák szerkezeti egészségének nyomon követése vezeték nélküli rezgésérzékelők használatával: 8 lépés
A polgári infrastruktúrák szerkezeti állapotfelügyelete vezeték nélküli rezgésérzékelőkkel: A régi épület és a polgári infrastruktúra romlása halálos és veszélyes helyzethez vezethet. Ezen struktúrák folyamatos ellenőrzése kötelező. A strukturális egészségügyi monitorozás rendkívül fontos módszertan a
Szemmozgás -követés infravörös érzékelővel: 5 lépés
Szemmozgáskövetés infravörös érzékelő használatával: Infravörös érzékelőt használtam a szemmozgások érzékeléséhez és a LED vezérléséhez. Szemgolyókat készítettem NeoPixel LED szalaggal
Nyomon követhető elektromos Longboard: 16 lépés (képekkel)
Nyomon követhető elektromos Longboard: Ez a projekt egy elektromos longboardból áll, amely megtartja az útvonalat egy málna pi segítségével. Ezeket a munkameneteket egy mySQL adatbázisban tárolják, és megjelennek a webhelyemen, amely a „Flask” mikroszálas keretrendszerrel készült. (Ez egy iskolai projekt