Innehållsförteckning:
- Tillbehör
- Steg 1: Driva kretsen och Pi
- Steg 2: MPU6050
- Steg 3: Adafruit Ultimate Breakout GPS
- Steg 4: 16x2 LCD -skärmen
- Steg 5: Servo, lysdioder, knapp och switch
- Steg 6: Hela kretsen
- Steg 7: Koden
- Steg 8: Databasen
- Steg 9: Fallet
Video: Track & trace för små butiker: 9 steg (med bilder)
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:40
Detta är ett system som är tillverkat för små butiker som ska monteras på e-cyklar eller e-skotrar för korta leveranser, till exempel ett bageri som vill leverera bakverk.
Vad betyder Track and Trace?
Track and trace är ett system som används av transportörer eller kurirföretag för att registrera paket eller föremåls förflyttning under transport. Vid varje bearbetningsplats identifieras varorna och data överförs till det centrala bearbetningssystemet. Dessa data används sedan för att ge avsändare status/uppdatering av varans plats.
Systemet vi kommer att visa kommer också att visa rutten och mängden stötar och stötar. Denna instruktion förutsätter också att du har grundläggande kunskaper om hallon pi, python och mysql.
Obs! Detta gjordes för ett skolprojekt, så på grund av tidsbegränsningen finns det mycket utrymme för förbättringar
Tillbehör
-Raspberry Pi 4 modell B
-Raspberry PI T-skomakare
-4x 3, 7V Li-ion batterier
-2x dubbel batterihållare
-DC Buck Step-down Converter 5v
-2x stora orange lysdioder
-omkopplare/av/på
-knapp
-adafruit ultimate gps v3
-mpu6050
-16x2 lcd -skärm
-servomotor
Steg 1: Driva kretsen och Pi
När det gäller att driva kretsen pi med ett batteri har du några alternativ på hur du gör det.
Du kan använda en powerbank och driva pi via USB, kanske du monterar enheten på en elcykel eller e-scooter som har en USB-port, kanske har du ett 5V telefonbatteri som ligger och väntar på att användas eller du kan använda 2 uppsättningar med 3,7V batterier parallellt med en trappomvandlare som visas på bilderna
Allt är bra så länge det kan ge en kontinuerlig 5V och har en livstid du är nöjd med.
Steg 2: MPU6050
Introduktion MPU6050 sensormodul är en integrerad 6-axlig rörelsesspårningsenhet.
- Den har ett 3-axligt gyroskop, 3-axlig accelerometer, digital rörelseprocessor och en temperatursensor, allt i en enda IC.
- Olika parametrar kan hittas genom avläsning av värden från adresser till vissa register med I2C -kommunikation. Gyroskop- och accelerometeravläsning längs X-, Y- och Z -axlar finns i 2: s komplementform.
- Gyroskopavläsningar är i grader per sekund (dps) enhet; Accelerometeravläsningar är i g -enhet.
Aktiverar I2C
När du använder en MPU6050 med en Raspberry Pi bör vi se till att I2C -protokollet på Raspberry Pi är påslagen. För att göra detta öppnar du pi: s terminal genom spackel eller annan mjukvara och gör följande:
- skriv in "sudo raspi-config"
- Välj gränssnittskonfigurationer
- I gränssnittsalternativet, välj "I2C"
- Aktivera I2C -konfiguration
- Välj Ja när den frågar om att starta om.
Nu kan vi testa/söka efter alla I2C -enheter som är anslutna till vårt Raspberry Pi -kort genom att installera i2c -verktyg. Vi kan få i2c -verktyg genom att använda apt -pakethanteraren. Använd följande kommando i Raspberry Pi -terminalen.
"sudo apt-get install -y i2c-verktyg"
Anslut nu en I2C-baserad enhet till porten för användarläge och skanna den porten med följande kommando, "sudo i2cdetect -y 1"
Då svarar den med enhetsadress.
Om ingen adress returneras, se till att MPU6050 är korrekt ansluten och försök igen
Få det att fungera
nu när vi är säkra på att i2c är aktiverat och pi kan nå MPU6050 kommer vi att installera ett bibliotek med kommandot "sudo pip3 install adafruit-circuitpython-mpu6050".
om vi gör en python -testfil och använder följande kod kan vi se om den fungerar:
importtid
importbräda
importera bussar
oimport adafruit_mpu6050
i2c = busio. I2C (board. SCL, board. SDA)
mpu = adafruit_mpu6050. MPU6050 (i2c)
medan det är sant:
print ("Acceleration: X: %. 2f, Y: %.2f, Z: %.2f m/s^2" %(mpu.acceleration))
print ("Gyro X: %. 2f, Y: %.2f, Z: %.2f grader/s" %(mpu.gyro))
print ("Temperatur: %.2f C" % mpu.temperatur)
skriva ut("")
tid. sover (1)
när vi nu vill ha accelerationen i X/Y/Z-axeln kan vi använda följande:
accelX = mpu.acceleration [0] accelY = mpu.acceleration [1] accelZ = mpu.acceleration [2]
genom att kombinera detta med ett enkelt if -uttalande i en konstant slinga kan vi räkna antalet chocker på en resa
Steg 3: Adafruit Ultimate Breakout GPS
Introduktion
Utbrottet är byggt kring MTK3339-chipset, en no-nonsense, högkvalitativ GPS-modul som kan spåra upp till 22 satelliter på 66 kanaler, har en utmärkt högkänslig mottagare (-165 dB-spårning!) Och en inbyggd antenn. Det kan göra upp till 10 platsuppdateringar i sekunden för hög hastighet, högkänslig loggning eller spårning. Strömförbrukningen är otroligt låg, bara 20 mA under navigering.
Kortet levereras med: en 3.3V-regulator med extremt lågt utfall så att du kan driva den med 3.3-5VDC in, 5V-nivå ingångar, LED-lampan blinkar vid cirka 1 Hz medan den söker efter satelliter och blinkar var 15: e sekund när en fix är funnits spara energi.
Testar gps med arduino
Om du har tillgång till en arduino är det en bra idé att testa modulen med den.
Anslut VIN till +5V Anslut GND till GroundConnect GPS RX (data in GPS) to Digital 0Connect GPS TX (data out from GPS) to Digital 1
Kör helt enkelt en tom arduino -kod och öppna seriell bildskärm på 9600 baud. Om du får gps -data fungerar din gps -modul.
Få det att fungera
Börja med att installera adafruit gps-biblioteket med kommandot "sudo pip3 install adafruit-circuitpython-gps".
Nu kan vi använda följande pythonkod för att se om vi kan få det att fungera:
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')
medan det är sant:
gps.update () medan inte gps.has_fix:
print (gps.nmea_sentence) print ('Waiting for fix …') gps.update () time.sleep (1) fortsätt
print ('=' * 40) # Skriv ut en separator line.print ('Latitude: {0:.6f} degrees'.format (gps.latitude)) print (' Longitude: {0:.6f} degrees'.format (gps.longitude)) print ("Fixkvalitet: {}". format (gps.fix_quality))
# Vissa attribut bortom latitud, longitud och tidsstämpel är valfria# och kanske inte finns. Kontrollera om de är Inga innan du försöker använda! Om gps.satellites inte är Ingen:
print ("# satelliter: {}". format (gps.satelliter))
om gps.altitude_m inte är Ingen:
print ("Höjd: {} meter".format (gps.altitude_m))
om gps.speed_knots inte är Ingen:
print ("Hastighet: {} knop".format (gps.speed_knots))
om gps.track_angle_deg inte är None:
print ("Spårvinkel: {} grader".format (gps.track_angle_deg))
om gps.horizontal_dilution inte är Ingen:
print ("Horisontell utspädning: {}". format (gps.horizontal_dilution))
om gps.height_geoid inte är Ingen:
print ("Geo -ID för höjd: {} meter".format (gps.height_geoid))
tid. sover (1)
Steg 4: 16x2 LCD -skärmen
Introduktion
LCD -moduler används mycket ofta i de flesta inbäddade projekt, anledningen är dess billiga pris, tillgänglighet och programmerarvänliga. De flesta av oss skulle ha stött på dessa skärmar i vårt dagliga liv, antingen på PCO: er eller räknare. 16 × 2 LCD heter så eftersom; den har 16 kolumner och 2 rader. Det finns många kombinationer tillgängliga som, 8 × 1, 8 × 2, 10 × 2, 16 × 1, etc. men den mest använda är 16 × 2 LCD -skärmen. Så det kommer att ha (16 × 2 = 32) totalt 32 tecken och varje tecken kommer att bestå av 5 × 8 pixelpunkter.
Installera smbus
System Management Bus (SMBus) är mer eller mindre ett derivat av I2C -bussen. Standarden har utvecklats av Intel och upprätthålls nu av SBS Forum. SMBus huvudapplikation är att övervaka kritiska parametrar på PC -moderkort och i inbäddade system. Till exempel finns det många matningsspänningsmonitorer, temperaturövervakare och fläktmonitorer/styr -IC: er med ett SMBus -gränssnitt.
Det bibliotek vi använder kräver att smbus också installeras. För att installera smbus på rpi använder du kommandot "sudo apt install python3-smbus".
Få det att fungera
installera först RPLCD -biblioteket med kommandot "sudo pip3 install RPLCD".
nu testar vi LCD -skärmen genom att visa ip med följande kod:
från RPLCD.i2c importera CharLCDimport -uttag
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 () returnera ip_address
lcd = CharLCD ('PCF8574', 0x27)
lcd.write_string ('IP -adress: / r / n'+str (get_ip_address ()))
Steg 5: Servo, lysdioder, knapp och switch
Introduktion
En servomotor är en roterande ställdon eller motor som möjliggör en exakt kontroll när det gäller vinkelläge, acceleration och hastighet, funktioner som en vanlig motor inte har. Den använder en vanlig motor och parar den med en sensor för positionsåterkoppling. Styrenheten är den mest sofistikerade delen av servomotorn, eftersom den är speciellt utformad för ändamålet.
LED kort för ljusdiod. En elektronisk halvledare som avger ljus när en elektrisk ström passerar genom den. De är betydligt effektivare än glödlampor och brinner sällan ut. Lysdioder används i många applikationer, till exempel plattskärmsvideoskärmar, och alltmer som allmänna ljuskällor.
En tryckknapp eller helt enkelt knapp är en enkel omkopplingsmekanism för att styra någon aspekt av en maskin eller en process. Knappar är vanligtvis gjorda av hårt material, vanligtvis plast eller metall.
En på/av/på -omkopplare har 3 lägen där den mellersta är avstängd, dessa typer används mest för enkel motorstyrning där du har ett framåt-, av- och bakåtläge.
Få det att fungera: servon
Servon använder en PWM -signal för att avgöra vilken vinkel den behöver ha för tur för oss GPIO har den här funktionen inbyggd. Därför kan vi helt enkelt använda följande kod för att styra servon: importera RPi. GPIO som GPIOimporttid
servo_pin = 18duty_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)
medan det är sant:
duty_cycle = float (input ("Enter Duty Cycle (Left = 5 to Right = 10):")) pwm_servo. ChangeDutyCycle (duty_cycle)
Få det att fungera: LED och switch
På grund av hur vi kopplade ledarna och omkopplaren behöver vi inte styra eller läsa av lysdioderna och byta själva. Vi skickar helt enkelt pulser till knapphäxan som i sin tur leder signalen till den lysdiod vi vill ha.
Få det att fungera: knappen
För knappen ska vi göra vår egen enkla klass på det här sättet kan vi enkelt se när den trycks utan att behöva lägga till en händelsedetektering till den varje gång vi använder den. Vi kommer att göra filen classbutton.py med följande kod:
från RPi -import GPIOklass -knapp:
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 pressed (self):
ingedrukt = GPIO.input (self.pin) return inte 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)
Steg 6: Hela kretsen
Nu när vi har gått igenom alla komponenter är det dags att kombinera dem alla.
Medan bilderna visar komponenterna visar allt på själva brödbrädan är det bättre att ha lcd, adafruit GPS och knapp ansluten med hona till hankablar Har bara t-skomakaren och mpu6050 på ett brödbräda. När det gäller lysdioderna och omkopplaren använd längre ledningar för att se till att du når blinkarna och styret.
Steg 7: Koden
För att hålla denna instruerbara rena har jag tillhandahållit ett github -arkiv med både backend- och frontend -filer. Lägg bara filerna i frontend -mappen i/var/www/html -mappen och filerna i backend -mappen i en mapp i/home/ [användarnamn]/[mappnamn] mapp
Steg 8: Databasen
På grund av hur detta system är uppbyggt finns det en enkel webbshop med en lista över produkter i en databas, dessutom har vi alla sätt och punkter sparade här. Ett skapa -skript kan hittas på github -förvaret som är länkat i Nästa steg
Steg 9: Fallet
När vi väl känner till elektronikarbetet kan vi stoppa dem i en låda. Du kan ta lite kreativ frihet med detta. Innan du bygger det tar du bara en kartong du inte behöver längre som en tom spannmålslåda till exempel och skär den, tejpa den och vik det tills du har något du gillar. Mät och rita ditt fodral på ett papper och gör det av ett mer robust material som trä, eller om det inte är din sak 3d -utskrift. Se bara till att all elektronik passar inuti och du har hål för knappen, kabeln till omkopplaren, lysdioderna och LCD -skärmen. När du har gjort ditt fall är det bara att hitta ett sätt att montera det på din cykel eller skoter
Rekommenderad:
Väggfäste för iPad som kontrollpanel för hemautomation, med servostyrd magnet för att aktivera skärmen: 4 steg (med bilder)
Väggfäste för iPad Som kontrollpanel för hemautomation, med servostyrd magnet för att aktivera skärmen: På senare tid har jag ägnat ganska mycket tid åt att automatisera saker i och runt mitt hus. Jag använder Domoticz som min hemautomationsapplikation, se www.domoticz.com för mer information. I min sökning efter en instrumentpanelapplikation som visar all Domoticz -information tillsammans
POS -SYSTEM FÖR BUTIKER, GROCIER OCH SERVICECENTRER FRÅN EXCEL Med hjälp av streckkoder: 7 steg
POS -SYSTEM FÖR BUTIKER, GROCERIER OCH SERVICECENTRUM FRÅN EXCEL Med hjälp av streckkoder: Jag introducerar med den här bloggen för dig hur du skapar ett enkelt POS -system för försäljning av dagligvaror och servicecenter. Med denna metod kan du hantera följande anläggningar utan speciell programvara eller dyr utrustning. v Iss
Home Darkroom Design för små utrymmen: 7 steg (med bilder)
Home Darkroom Design för små utrymmen: 360 -vy över min ombyggda garderob - Sfärisk bild - RICOH THETAHi, jag skulle vilja börja med att säga att denna mörkrumsdesign inte kommer att vara tillämplig på alla. Din garderob kan vara större, mindre eller så kan du använda ett badrumsutrymme. Y
Billiga växelmotorer för små robotar: 5 steg (med bilder)
Billiga växelmotorer för små robotar: Behöver du små, kraftfulla och billiga motorer för ditt nyaste små robotprojekt? Jag upptäckte dessa " N20 " Gearmotors för något år sedan, medan jag arbetade med mitt ProtoBot -projekt. De är små, kraftfulla och rikliga från många källor online. Du
DIY kylfläns för små transistorer: 6 steg (med bilder)
DIY Heatsink för små transistorer: Här är en liten mini-instruerbar: Vill du pressa lite mer ström genom de billiga TO-92-pakettransistorerna? Lägg sedan till en liten kylfläns av metall. Jag gjorde den här för en PWM DC-motorförare, eftersom några 2N2222 bi-polära transistorer var praktiska. Det Fungerar