Tartalomjegyzék:

Nyomon követés kisboltokban: 9 lépés (képekkel)
Nyomon követés kisboltokban: 9 lépés (képekkel)

Videó: Nyomon követés kisboltokban: 9 lépés (képekkel)

Videó: Nyomon követés kisboltokban: 9 lépés (képekkel)
Videó: 本当に買ってよかったキャンプギア 7選 2024, November
Anonim
Nyomon követés a kisboltok számára
Nyomon követés a kisboltok számára

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

Az áramkör és a Pi áramellátása
Az áramkör és a Pi áramellátása
Az áramkör és a Pi áramellátása
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

Az MPU6050
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:

  1. írja be: "sudo raspi-config"
  2. Válassza az Interfészkonfigurációk lehetőséget
  3. Az Interfész opcióban válassza az "I2C" lehetőséget
  4. I2C konfiguráció engedélyezése
  5. 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

Az Adafruit Ultimate Breakout GPS
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

16x2 LCD
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ó

Szervó, LED, gomb és kapcsoló
Szervó, 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

A teljes kör
A teljes kör
A teljes kör
A teljes kö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

Az Adatbázis
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

Az ügy
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: