Innehållsförteckning:

Track & trace för små butiker: 9 steg (med bilder)
Track & trace för små butiker: 9 steg (med bilder)

Video: Track & trace för små butiker: 9 steg (med bilder)

Video: Track & trace för små butiker: 9 steg (med bilder)
Video: Störig granne 2024, November
Anonim
Track & trace för små butiker
Track & trace för små butiker

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

Driva kretsen och Pi
Driva kretsen och Pi
Driva kretsen och Pi
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

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

  1. skriv in "sudo raspi-config"
  2. Välj gränssnittskonfigurationer
  3. I gränssnittsalternativet, välj "I2C"
  4. Aktivera I2C -konfiguration
  5. 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

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

16x2 LCD
16x2 LCD

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

Servo, lysdioder, knapp och switch
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

Hela kretsen
Hela kretsen
Hela kretsen
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

Databasen
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

Fallet
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: