Indholdsfortegnelse:
- Forbrugsvarer
- Trin 1: Tænd for kredsløbet og Pi
- Trin 2: MPU6050
- Trin 3: Adafruit Ultimate Breakout GPS
- Trin 4: 16x2 LCD
- Trin 5: Servo, lysdioder, knap og switch
- Trin 6: Det fulde kredsløb
- Trin 7: Koden
- Trin 8: Databasen
- Trin 9: Sagen
Video: Track & trace for små butikker: 9 trin (med billeder)
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:26
Dette er et system, der er lavet til små butikker, der formodes at montere på e-cykler eller e-scootere til levering af kort rækkevidde, for eksempel et bageri, der ønsker at levere bagværk.
Hvad betyder Track and Trace?
Track and trace er et system, der bruges af transportører eller kurerfirmaer til at registrere flytning af pakker eller genstande under transport. På hvert behandlingssted identificeres varerne og data videresendes til det centrale behandlingssystem. Disse data bruges derefter til at give afsendere status/opdatering af varens placering.
Systemet, vi laver, viser også den rute, der er taget, og mængden af stød og stød, der modtages. Denne instruks forudsætter også, at du har en grundlæggende viden om en hindbær pi, python og mysql.
Bemærk: dette blev lavet til et skoleprojekt, derfor er der på grund af tidsbegrænsningen meget plads til forbedringer
Forbrugsvarer
-Raspberry Pi 4 model B
-Raspberry PI T-skomager
-4x 3, 7V Li-ion batterier
-2x dobbelt batteriholder
-DC Buck Step-down Converter 5v
-2x store orange LED'er
-tænd/sluk/tænd -kontakt
-knap
-adafruit ultimate gps v3
-mpu6050
-16x2 lcd -skærm
-servomotor
Trin 1: Tænd for kredsløbet og Pi
Når det kommer til at forsyne kredsløbet med et batteri, har du et par muligheder for, hvordan du gør det.
Du kan bruge en powerbank og tænde for pi'en via USB, måske monterer du enheden på en e-cykel eller e-scooter, der har en USB-port, måske har du et 5V telefonbatteri, der ligger og venter på at blive brugt, eller du kan bruge 2 sæt med 3,7V batterier parallelt med en nedtrapningsomformer som vist på billederne
Alt er fint, så længe det kan levere en kontinuerlig 5V og har en levetid, du er tilfreds med.
Trin 2: MPU6050
Introduktion MPU6050 sensormodul er en integreret 6-akset bevægelsessporingsenhed.
- Den har et 3-akset gyroskop, 3-akset accelerometer, digital bevægelsesprocessor og en temperatursensor, alt i en enkelt IC.
- Der kan findes forskellige parametre ved at aflæse værdier fra adresser på bestemte registre ved hjælp af I2C -kommunikation. Gyroskop- og accelerometeraflæsning langs X-, Y- og Z -akser er tilgængelige i 2’s komplementform.
- Gyroskopmålinger er i grader pr. Sekund (dps) enhed; Accelerometeraflæsninger er i g -enhed.
Aktivering af I2C
Når du bruger en MPU6050 med en Raspberry Pi, skal vi sikre, at I2C -protokollen på Raspberry Pi er tændt. For at gøre dette skal du åbne pi's terminal gennem spartel eller anden softaware og gøre følgende:
- indtast "sudo raspi-config"
- Vælg grænsefladekonfigurationer
- I grænsefladeindstilling vælges "I2C"
- Aktiver I2C -konfiguration
- Vælg Ja, når den beder om at genstarte.
Nu kan vi teste/scanne for enhver I2C -enhed, der er sluttet til vores Raspberry Pi -kort ved at installere i2c -værktøjer. Vi kan få i2c -værktøjer ved at bruge apt -pakkehåndtering. Brug følgende kommando i Raspberry Pi -terminalen.
"sudo apt-get install -y i2c-værktøjer"
Tilslut nu enhver I2C-baseret enhed til porten i brugertilstand, og scan den port ved hjælp af følgende kommando, "sudo i2cdetect -y 1"
Derefter reagerer den med enhedsadresse.
Hvis ingen adresse returneres, skal du kontrollere, at MPU6050 er korrekt tilsluttet, og prøv igen
Få det til at fungere
nu hvor vi er sikre på, at i2c er aktiveret, og pi'en kan nå MPU6050, vil vi installere et bibliotek ved hjælp af kommandoen "sudo pip3 install adafruit-circuitpython-mpu6050".
hvis vi laver en python -testfil og bruger følgende kode, kan vi se, om den virker:
importtid
import bord
importere forretninger
oimport adafruit_mpu6050
i2c = busio. I2C (board. SCL, board. SDA)
mpu = adafruit_mpu6050. MPU6050 (i2c)
mens det er sandt:
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)
Print("")
time.sleep (1)
når vi nu ønsker accelerationen i X/Y/Z-aksen, kan vi bruge følgende:
accelX = mpu.acceleration [0] accelY = mpu.acceleration [1] accelZ = mpu.acceleration [2]
ved at kombinere dette med en simpel if -sætning i en konstant sløjfe kan vi tælle mængden af stød på en tur
Trin 3: Adafruit Ultimate Breakout GPS
Introduktion
Udbruddet er bygget op omkring MTK3339-chipsættet, et ikke-nonsens, højkvalitets GPS-modul, der kan spore op til 22 satellitter på 66 kanaler, har en fremragende højfølsom modtager (-165 dB tracking!) Og en indbygget antenne. Det kan udføre op til 10 placeringsopdateringer i sekundet til højhastighedstog, logning eller sporing med høj følsomhed. Strømforbruget er utroligt lavt, kun 20 mA under navigation.
Tavlen leveres med: en 3.3V regulator med meget lavt frafald, så du kan forsyne den med 3.3-5VDC ind, 5V sikker indgange, LED'en blinker ved ca. 1Hz, mens den søger efter satellitter og blinker hvert 15. sekund, når der er en løsning fundet at spare strøm.
Test af gps'en med arduino
Hvis du har adgang til en arduino, er det en god idé at teste modulet med det.
Tilslut VIN til +5V Tilslut GND til GroundConnect GPS RX (data til GPS) til Digital 0Connect GPS TX (data out from GPS) to Digital 1
Kør blot en tom arduino -kode, og åbn den serielle skærm på 9600 baud. Hvis du får gps -data, fungerer dit gps -modul. Bemærk: hvis dit modul ikke får en løsning, skal du prøve at sætte det ud af et vindue eller udenfor på en terrasse
Få det til at fungere
Start med at installere adafruit gps-biblioteket ved hjælp af kommandoen "sudo pip3 install adafruit-circuitpython-gps".
Nu kan vi bruge følgende python -kode til at se, om vi kan få det til at fungere:
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')
mens det er sandt:
gps.update () mens ikke gps.has_fix:
print (gps.nmea_sentence) print ('venter på løsning …') gps.update () time.sleep (1) fortsæt
print ('=' * 40) # Udskriv en separator line.print ('Latitude: {0:.6f} grader'.format (gps.latitude)) print (' Longitude: {0:.6f} degrees'.format (gps.longitude)) print ("Fix kvalitet: {}". format (gps.fix_quality))
# Nogle attributter ud over breddegrad, længdegrad og tidsstempel er valgfrie# og er muligvis ikke til stede. Kontroller, om de er Ingen, før du prøver at bruge! Hvis gps.satellites ikke er Ingen:
print ("# satellitter: {}". format (gps.satellitter))
hvis gps.altitude_m ikke er Ingen:
print ("Højde: {} meter".format (gps.altitude_m))
hvis gps.speed_knots ikke er Ingen:
print ("Hastighed: {} knob".format (gps.speed_knots))
hvis gps.track_angle_deg ikke er Ingen:
print ("Sporvinkel: {} grader".format (gps.track_angle_deg))
hvis gps.horizontal_dilution ikke er Ingen:
print ("Horisontal fortynding: {}". format (gps.horizontal_dilution))
hvis gps.height_geoid ikke er Ingen:
print ("Geo -id for højde: {} meter".format (gps.height_geoid))
time.sleep (1)
Trin 4: 16x2 LCD
Introduktion
LCD -moduler bruges meget almindeligt i de fleste integrerede projekter, grunden er den billige pris, tilgængelighed og programmeringsvenlig. De fleste af os ville være stødt på disse skærme i vores daglige liv, enten på PCO’er eller lommeregnere. 16 × 2 LCD hedder det fordi; den har 16 kolonner og 2 rækker. Der er mange tilgængelige kombinationer, f.eks. 8 × 1, 8 × 2, 10 × 2, 16 × 1 osv., Men den mest brugte er 16 × 2 LCD. Så det vil have (16 × 2 = 32) i alt 32 tegn, og hvert tegn består af 5 × 8 Pixel Dots.
Installation af smbus
System Management Bus (SMBus) er mere eller mindre et derivat af I2C -bussen. Standarden er udviklet af Intel og vedligeholdes nu af SBS Forum. SMBus 'hovedapplikation er at overvåge kritiske parametre på pc -bundkort og i integrerede systemer. For eksempel er der en masse forsyningsspændingsovervågning, temperaturmonitor og ventilatorovervågning/kontrol -IC'er med en SMBus -grænseflade tilgængelig.
Det bibliotek, vi vil bruge, kræver også, at smbus installeres. For at installere smbus på rpi skal du bruge kommandoen "sudo apt install python3-smbus".
Få det til at fungere
Først skal du installere RPLCD -biblioteket ved hjælp af kommandoen "sudo pip3 install RPLCD".
nu tester vi lcd'en ved at vise ip'en ved hjælp af følgende kode:
fra RPLCD.i2c import CharLCDimport stik
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 () returner ip_address
lcd = CharLCD ('PCF8574', 0x27)
lcd.write_string ('IP -adresse: / r / n'+str (get_ip_address ()))
Trin 5: Servo, lysdioder, knap og switch
Introduktion
En servomotor er en roterende aktuator eller motor, der muliggør en præcis kontrol med hensyn til vinkelposition, acceleration og hastighed, kapaciteter, som en almindelig motor ikke har. Den anvender en almindelig motor og kobler den med en sensor til positionsfeedback. Controlleren er den mest sofistikerede del af servomotoren, da den er specielt designet til formålet.
LED kort til lysdiode. En elektronisk halvleder, der udsender lys, når en elektrisk strøm passerer igennem den. De er betydeligt mere effektive end glødepærer og brænder sjældent ud. LED'er bruges i mange applikationer, f.eks. Fladskærmsvideoskærme og i stigende grad som generelle lyskilder.
En trykknap eller blot en knap er en simpel omskiftermekanisme til at styre et eller andet aspekt af en maskine eller en proces. Knapper er typisk lavet af hårdt materiale, normalt plast eller metal.
En tænd/sluk/tænd -kontakt har 3 positioner, hvor den midterste er slukket tilstand, disse typer bruges mest til simpel motorstyring, hvor du har en fremad-, slukket- og bagudtilstand.
Få det til at fungere: servoen
Servoen bruger et PWM -signal til at bestemme, hvilken vinkel den skal have for heldigvis for os GPIO har denne funktion indbygget. Derfor kan vi simpelthen bruge følgende kode til at styre servoen: import RPi. GPIO som GPIOimporttid
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)
mens det er sandt:
duty_cycle = float (input ("Enter Duty Cycle (Left = 5 to Right = 10):")) pwm_servo. ChangeDutyCycle (duty_cycle)
Få det til at fungere: LED og switch
På grund af den måde, hvorpå vi tilsluttede LED'erne og kontakten, behøver vi ikke at styre eller aflæse lysdioderne og skifte sig selv. Vi sender simpelthen pulser til knappen, som heksen igen leder signalet til den led, vi ønsker.
Få det til at fungere: knappen
For knappen skal vi lave vores egen enkle klasse på denne måde kan vi let se, når den trykkes uden at skulle tilføje en hændelsesdetektering til den hver gang vi bruger den. Vi vil lave filen classbutton.py ved hjælp af følgende kode:
fra RPi import GPIOklasse knap:
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 presset (self):
ingedrukt = GPIO.input (self.pin) return ikke 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)
Trin 6: Det fulde kredsløb
Nu hvor vi har gået over alle komponenterne, er det tid til at kombinere dem alle.
Mens billederne viser, viser komponenterne alt på selve brødbrættet, men det er bedre at have lcd'en, adafruit GPS'en og knappen tilsluttet ved hjælp af hun- til hanledninger Kun have t-skomageren og mpu6050 på et brødbræt. Når det kommer til LED'erne og kontakten brug længere ledninger til at sikre, at du kan nå blinklysstængerne og styret.
Trin 7: Koden
For at holde denne instruerbare rene har jeg leveret et github -lager med både backend- og frontend -filer. Sæt blot filerne i frontend -mappen i/var/www/html -mappen og filerne i backend -mappen i en mappe i/home/ [brugernavn]/[mappenavn] mappe
Trin 8: Databasen
På grund af den måde, dette system er opsat på, er der en simpel webshop, der er oprettet ved hjælp af en liste over produkter i en database, og vi har også alle de punkter og ordrer, der er gemt her. Næste skridt
Trin 9: Sagen
Når vi kender elektronikarbejdet, kan vi putte dem i en æske. Du kan tage en kreativ frihed med dette. Inden du bygger det, skal du bare tage en papkasse, som du ikke længere har brug for, f.eks. En tom kornæske og klippe den, tape den og fold det, indtil du har noget, du kan lide. Mål og tegn din sag på et stykke papir og lav den af et mere robust materiale som træ, eller hvis det ikke er din ting, 3D -print den. Bare sørg for, at al elektronikken passer ind og du har huller til knappen, ledningen til kontakten, lysdioderne og lcd'en. Når du har lavet din sag, er det bare et spørgsmål om at finde en måde at montere den på din cykel eller scooter
Anbefalede:
Små H-bro-drivere - Grundlæggende: 6 trin (med billeder)
Små H-bro-drivere | Grundlæggende: Hej og velkommen tilbage til en anden instruerbar! I den forrige viste jeg dig, hvordan jeg oprettede spoler i KiCad ved hjælp af et python -script. Derefter oprettede og testede jeg et par variationer af spoler for at se, hvilken der fungerer bedst. Mit mål er at erstatte den enorme
Dual Trace Oscilloskop: 11 trin (med billeder)
Dual Trace -oscilloskop: Da jeg byggede mit tidligere mini -oscilloskop, ville jeg se, hvor godt jeg kunne få min mindste ARM -mikrokontroller til at udføre en STM32F030 (F030), og det gjorde et godt stykke arbejde. I en af kommentarerne blev det foreslået, at en " Blue Pill " med en STM32F103
POS -SYSTEM FOR BUTIKKER, GROCERIER OG SERVICECENTRE FRA EXCEL Med brug af stregkoder: 7 trin
POS -SYSTEM FOR BUTIKKER, GROCERIER OG SERVICECENTRE FRA EXCEL Med brug af stregkoder: Jeg introducerer med denne blog til dig, hvordan du opretter et simpelt POS -system (salgssted) til små butikker, dagligvarer og servicecentre. Med denne metode kan du administrere følgende faciliteter uden særlig software eller dyrt udstyr. v Iss
Home Darkroom Design til små rum: 7 trin (med billeder)
Home Darkroom Design til små rum: 360 visning af mit konverterede skab - Sfærisk billede - RICOH THETAHi, jeg vil gerne starte med at sige, at dette mørkerumsdesign ikke vil være relevant for alle. Dit skab kan være større, mindre, eller du kan bruge et badeværelse. Y
Professionel ART Tracing Lightbox GRATIS på under 15 minutter !!! ($ 100 i butikker): 3 trin
Professionel ART Tracing Lightbox GRATIS på under 15 minutter !!! ($ 100 i butikker): Vær opmærksom på alle kunstnere, arkitekter, fotografer og hobbyentusiaster: Har du nogensinde haft svært ved at spore over kunstværker, fotos eller andre medier? Har du nogensinde arbejdet på et kunstværk og fundet sporingspapir til at være ubelejligt, ineffektivt eller