Indholdsfortegnelse:

Track & trace for små butikker: 9 trin (med billeder)
Track & trace for små butikker: 9 trin (med billeder)

Video: Track & trace for små butikker: 9 trin (med billeder)

Video: Track & trace for små butikker: 9 trin (med billeder)
Video: Ternet Ninja 2 ''Bad Boy'' Men Hvis Jeg Skulle Lave En Sang (REMIX) 2024, Juli
Anonim
Track & trace for små butikker
Track & trace for små butikker

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

Drift af kredsløbet og Pi
Drift af kredsløbet og Pi
Drift af kredsløbet og Pi
Drift af 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

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

  1. indtast "sudo raspi-config"
  2. Vælg grænsefladekonfigurationer
  3. I grænsefladeindstilling vælges "I2C"
  4. Aktiver I2C -konfiguration
  5. 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

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

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

Servo, lysdioder, knap og switch
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

Det fulde kredsløb
Det fulde kredsløb
Det fulde kredsløb
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

Databasen
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

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