Cuprins:

Urmărire și urmărire pentru magazine mici: 9 pași (cu imagini)
Urmărire și urmărire pentru magazine mici: 9 pași (cu imagini)

Video: Urmărire și urmărire pentru magazine mici: 9 pași (cu imagini)

Video: Urmărire și urmărire pentru magazine mici: 9 pași (cu imagini)
Video: Ce înseamna semnul tau din nastere 2024, Noiembrie
Anonim
Track & trace pentru magazine mici
Track & trace pentru magazine mici

Acesta este un sistem conceput pentru magazinele mici care se presupune că se montează pe biciclete electrice sau scutere electronice pentru livrări la distanță scurtă, de exemplu o brutărie care dorește să livreze produse de patiserie.

Ce înseamnă Track and Trace?

Track and trace este un sistem utilizat de transportatori sau companii de curierat pentru a înregistra mișcarea coletelor sau a articolelor în timpul transportului. În fiecare locație de procesare, mărfurile sunt identificate și datele sunt transmise către sistemul central de procesare. Aceste date sunt apoi utilizate pentru a oferi expeditorilor starea / actualizarea locației mărfurilor.

Sistemul pe care îl vom face va arăta, de asemenea, ruta parcursă și cantitatea de șocuri și umflături primite. Acest instructable presupune, de asemenea, că aveți cunoștințe de bază despre zmeură pi, python și mysql.

notă: acest lucru a fost făcut pentru un proiect școlar, astfel, datorită constrângerii de timp, există mult spațiu de îmbunătățire

Provizii

-Raspberry Pi 4 model B

-Cablon T-Raspberry PI

-4x baterii Li-ion 3, 7V

-2x Suport dublu pentru baterie

-DC Buck Step-down Converter 5v

-2 leduri portocalii mari

-întrerupător pornit / oprit / pornit

-buton

-adafruit ultimate gps v3

-mpu6050

-Afisaj LCD 16x2

-servo motor

Pasul 1: Alimentarea circuitului și a Pi

Alimentarea circuitului și a Pi
Alimentarea circuitului și a Pi
Alimentarea circuitului și Pi
Alimentarea circuitului și Pi

Când vine vorba de alimentarea circuitului pi cu o baterie, aveți câteva opțiuni despre cum să o faceți.

Puteți utiliza un powerbank și alimenta pi prin USB, poate montați dispozitivul pe o bicicletă electronică sau un scuter electronic care are un port USB, poate aveți o baterie de telefon de 5V care așteaptă să fie utilizată sau ați putea folosi 2 seturi de baterii de 3,7 V în paralel cu un convertor de coborâre, așa cum se arată în imagini

Orice este în regulă, atâta timp cât poate oferi un 5V continuu și are o viață cu care sunteți mulțumit.

Pasul 2: MPU6050

MPU6050
MPU6050

Introducere Modulul senzor MPU6050 este un dispozitiv integrat de urmărire a mișcării pe 6 axe.

  • Are un giroscop pe 3 axe, accelerometru pe 3 axe, procesor de mișcare digitală și un senzor de temperatură, toate într-un singur IC.
  • Diferiti parametri pot fi gasiti citind valorile de la adresele anumitor registre folosind comunicarea I2C. Citirea giroscopului si a accelerometrului de-a lungul axelor X, Y si Z sunt disponibile in forma complementului 2.
  • Citirile giroscopului sunt în grade pe secundă (dps) unitate; Citirile accelerometrului sunt în unitate g.

Activarea I2C

Când utilizați un MPU6050 cu un Raspberry Pi, ar trebui să ne asigurăm că protocolul I2C de pe Raspberry Pi este pornit. Pentru aceasta, deschideți terminalul pi prin chit sau alt software și efectuați următoarele:

  1. tastați „sudo raspi-config”
  2. Selectați Configurări de interfață
  3. În opțiunea Interfață, selectați „I2C”
  4. Activați configurația I2C
  5. Selectați Da când solicită repornirea.

Acum, putem testa / scana orice dispozitiv I2C conectat la placa noastră Raspberry Pi instalând instrumente i2c. Putem obține instrumente i2c folosind managerul de pachete apt. Utilizați următoarea comandă în terminalul Raspberry Pi.

"sudo apt-get install -y i2c-tools"

Acum conectați orice dispozitiv bazat pe I2C la portul în modul utilizator și scanați acel port folosind următoarea comandă, „sudo i2cdetect -y 1”

Apoi va răspunde cu adresa dispozitivului.

Dacă nu se returnează nicio adresă, asigurați-vă că MPU6050 este conectat corect și încercați din nou

Făcând-o să funcționeze

acum că suntem siguri că i2c este activat și pi poate ajunge la MPU6050 vom instala o bibliotecă folosind comanda „sudo pip3 install adafruit-circuitpython-mpu6050”.

dacă facem un fișier de testare Python și folosim următorul cod, putem vedea dacă funcționează:

timpul de import

bord de import

import busi

oimport adafruit_mpu6050

i2c = busio. I2C (board. SCL, board. SDA)

mpu = adafruit_mpu6050. MPU6050 (i2c)

în timp ce este adevărat:

print ("Accelerare: X:%. 2f, Y:%.2f, Z:%.2f m / s ^ 2"% (mpu.acceleration))

print ("Gyro X:%. 2f, Y:%.2f, Z:%.2f grade / s"% (mpu.gyro))

print ("Temperatura:%.2f C"% mpu.temperature)

imprimare("")

time.sleep (1)

când dorim acum accelerația pe axa X / Y / Z putem folosi următoarele:

accelX = mpu.acceleration [0] accelY = mpu.acceleration [1] accelZ = mpu.acceleration [2]

combinând acest lucru cu o declarație simplă if într-o buclă constantă putem număra cantitatea de șocuri dintr-o călătorie

Pasul 3: Adafruit Ultimate Breakout GPS

GPS-ul Adafruit Ultimate Breakout
GPS-ul Adafruit Ultimate Breakout

Introducere

Breakout-ul este construit în jurul chipsetului MTK3339, un modul GPS de înaltă calitate care poate urmări până la 22 de sateliți pe 66 de canale, are un receptor excelent de înaltă sensibilitate (urmărire -165 dB!) Și o antenă încorporată. Poate efectua până la 10 actualizări de locație pe secundă pentru înregistrarea sau urmărirea cu viteză mare, sensibilitate ridicată. Consumul de energie este incredibil de redus, doar 20 mA în timpul navigării.

Placa vine cu: un regulator ultra-redus de 3,3 V, astfel încât să îl puteți alimenta cu 3,3-5VDC intrare, intrări sigure la nivel de 5V, LED-ul clipește la aproximativ 1Hz în timp ce caută sateliți și clipește o dată la 15 secunde când o soluție este găsit pentru a conserva puterea.

Testarea GPS-ului cu arduino

Dacă aveți acces la un arduino, este o idee bună să testați modulul cu acesta.

Conectați VIN la + 5V Conectați GND la sol Conectați GPS RX (date în GPS) la Digital 0 Conectați GPS TX (date de la GPS) la Digital 1

Pur și simplu rulați un cod arduino gol și deschideți monitorul serial pe 9600 baud. Dacă primiți date GPS modulul GPS funcționează. Notă: dacă modulul dvs. nu are o soluție, încercați să-l puneți pe o fereastră sau în exterior pe o terasă.

Făcând-o să funcționeze

Începeți instalarea bibliotecii gps adafruit utilizând comanda „sudo pip3 install adafruit-circuitpython-gps”.

Acum putem folosi următorul cod python pentru a vedea dacă îl putem face să funcționeze:

timp de import import placa de 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')

în timp ce este adevărat:

gps.update () în timp ce nu este gps.has_fix:

print (gps.nmea_sentence) print ('Se așteaptă remedierea …') gps.update () time.sleep (1) continua

print ('=' * 40) # Imprimați o linie separatoare.print ('Latitudine: {0:.6f} grade'. format (gps.latitude)) print ('Longitudine: {0:.6f} grade'. format (gps.longitude)) print („Calitate fixă: {}”. format (gps.fix_quality))

# Unele atribute dincolo de latitudine, longitudine și marcaj de timp sunt opționale # și s-ar putea să nu fie prezente. Verificați dacă nu sunt niciunul înainte de a încerca să utilizați! Dacă gps.satellites nu este Nici unul:

print („# sateliți: {}”. format (gps.satellites))

dacă gps.altitude_m nu este None:

print („Altitudine: {} metri”.format (gps.altitude_m))

dacă gps.speed_knots nu este None:

print („Viteză: {} noduri”.format (gps.speed_knots))

dacă gps.track_angle_deg nu este None:

print („Unghiul urmăririi: {} grade”.format (gps.track_angle_deg))

dacă gps.horizontal_dilution nu este Niciuna:

print („Diluare orizontală: {}”. format (gps.horizontal_dilution))

dacă gps.height_geoid nu este None:

print („ID înălțime geografică: {} metri”.format (gps.height_geoid))

time.sleep (1)

Pasul 4: LCD 16x2

Ecranul LCD de 16x2
Ecranul LCD de 16x2

Introducere

Modulele LCD sunt foarte frecvent utilizate în majoritatea proiectelor încorporate, motivul fiind prețul său ieftin, disponibilitatea și programarea prietenoasă. Cei mai mulți dintre noi am fi întâlnit aceste afișaje în viața noastră de zi cu zi, fie la PCO, fie la calculatoare.16 × 2 LCD este denumit astfel deoarece; are 16 coloane și 2 rânduri. Există o mulțime de combinații disponibile, cum ar fi, 8 × 1, 8 × 2, 10 × 2, 16 × 1 etc., dar cea mai utilizată este LCD-ul de 16 × 2. Deci, va avea (16 × 2 = 32) 32 de caractere în total și fiecare caracter va fi format din 5 × 8 Pixel Dots.

Instalarea smbus

System Management Bus (SMBus) este mai mult sau mai puțin un derivat al magistralei I2C. Standardul a fost dezvoltat de Intel și este menținut acum de SBS Forum. Principala aplicație a SMBus este monitorizarea parametrilor critici de pe plăcile de bază ale computerului și din sistemele încorporate. De exemplu, există o mulțime de monitorizare a tensiunii de alimentare, monitorizare a temperaturii și circuite integrate de monitorizare / control al ventilatorului cu o interfață SMBus disponibilă.

Biblioteca pe care o vom folosi necesită instalarea și smbus. Pentru a instala smbus pe rpi folosiți comanda „sudo apt install python3-smbus”.

Făcând-o să funcționeze

mai întâi instalați biblioteca RPLCD folosind comanda „sudo pip3 install RPLCD”.

acum testăm lcd afișând ip-ul folosind următorul cod:

din RPLCD.i2c import CharLCDimport socket

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 ('Adresă IP: / r / n' + str (get_ip_address ()))

Pasul 5: Servo, Leds, Buton și Comutator

Servo, Leds, Buton și Comutator
Servo, Leds, Buton și Comutator

Introducere

Un servomotor este un actuator rotativ sau motor care permite un control precis în ceea ce privește poziția unghiulară, accelerația și viteza, capacități pe care nu le are un motor obișnuit. Folosește un motor obișnuit și îl împerechează cu un senzor pentru feedback-ul poziției. Controlerul este cea mai sofisticată parte a servomotorului, deoarece este conceput special pentru acest scop.

LED scurt pentru diode emițătoare de lumină. Un dispozitiv electronic semiconductor care emite lumină atunci când un curent electric trece prin el. Sunt considerabil mai eficiente decât becurile cu incandescență și rareori se ard. LED-urile sunt utilizate în multe aplicații, cum ar fi afișajele cu ecran plat și din ce în ce mai mult ca surse generale de lumină.

Un buton sau pur și simplu un buton este un mecanism simplu de comutare pentru a controla unele aspecte ale unei mașini sau ale unui proces. Butoanele sunt de obicei realizate din material dur, de obicei din plastic sau metal.

Un comutator de pornire / oprire / pornire are 3 poziții în care cea din mijloc este starea oprită, aceste tipuri sunt utilizate în cea mai mare parte pentru controlul simplu al motorului în care aveți o stare înainte, oprită și inversă.

Făcând-o să funcționeze: servo

Servo-ul folosește un semnal PWM pentru a determina ce unghi trebuie să fie la noroc pentru noi GPIO are această caracteristică încorporată. Prin urmare, putem folosi pur și simplu următorul cod pentru a controla servo-ul: import RPi. GPIO ca GPIO import timp

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)

în timp ce este adevărat:

duty_cycle = float (input ("Enter Duty Cycle (Left = 5 to Right = 10):")) pwm_servo. ChangeDutyCycle (duty_cycle)

Făcând-o să funcționeze: ledul și comutatorul

Datorită modului în care am conectat ledul și comutatorul, nu este necesar să controlăm sau să citim ledurile și să le comutăm. Pur și simplu trimitem impulsuri către butonul vrăjitoare, care va rota la rândul său semnalul către ledul dorit.

Făcând-o să funcționeze: butonul

Pentru buton, vom crea propria noastră clasă simplă, astfel vom vedea cu ușurință când este apăsat, fără a fi nevoie să adăugăm un eveniment detectat la el de fiecare dată când îl folosim. Vom crea fișierul classbutton.py folosind următorul cod:

din butonul GPIOclass de import RPi:

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 apăsat (self):

ingedrukt = GPIO.input (self.pin) return nu este 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)

Pasul 6: Circuitul complet

Circuitul complet
Circuitul complet
Circuitul complet
Circuitul complet

Acum, că am trecut peste toate componentele, este timpul să le combinăm pe toate.

În timp ce imaginile arată că componentele arată totul pe panoul propriu-zis, este mai bine să aveți lcd, GPS-ul adafruit și butonul conectat folosind fire de la mamă la masculin. folosiți fire mai lungi pentru a vă asigura că puteți ajunge la barele intermitente și la bara de direcție.

Pasul 7: Codul

Pentru a păstra această instrucțiune curată, am oferit un depozit github cu fișierele backend și frontend. Pur și simplu puneți fișierele în folderul frontend din folderul / var / www / html și fișierele din folderul backend într-un folder din / home / folderul [username] / [foldername]

Pasul 8: baza de date

Baza de date
Baza de date

Datorită modului în care este configurat acest sistem, există un magazin online simplu, utilizând o listă de produse dintr-o bază de date, în plus, avem toate punctele și comenzile salvate aici. Un script de creare poate fi găsit în depozitul github legat în urmatorul pas

Pasul 9: Cazul

Cazul
Cazul

Odată ce știm că funcționează electronica, le putem înfășura într-o cutie. Puteți să vă lăsați o libertate creativă cu aceasta. Înainte de a o construi, pur și simplu apucați o cutie de carton de care nu mai aveți nevoie, cum ar fi o cutie goală de cereale, de exemplu și tăiați-o, lipiți-o cu bandă și pliați-l până când aveți ceva care vă place. Măsurați-vă și trageți carcasa pe o bucată de hârtie și confecționați-o dintr-un material mai robust, cum ar fi lemnul, sau dacă nu este ceea ce vă place, imprimați-l 3D. aveți găuri pentru buton, firul care trece la întrerupător, led și ecranul LCD. Odată ce ați făcut ca cazul dvs. să fie doar o problemă de a găsi un mod de a-l monta pe bicicletă sau scuter

Recomandat: