Sommario:

Track&trace per piccoli negozi: 9 passaggi (con immagini)
Track&trace per piccoli negozi: 9 passaggi (con immagini)

Video: Track&trace per piccoli negozi: 9 passaggi (con immagini)

Video: Track&trace per piccoli negozi: 9 passaggi (con immagini)
Video: Shopify Tutorial: 9 errori da evitare quando crei il tuo ecommerce 2024, Novembre
Anonim
Track&trace per piccoli negozi
Track&trace per piccoli negozi

Questo è un sistema che è fatto per piccoli negozi che dovrebbero essere montati su e-bike o e-scooter per consegne a corto raggio, ad esempio una panetteria che vuole consegnare pasticcini.

Cosa significa Track and Trace?

Track and trace è un sistema utilizzato dai corrieri o dai corrieri per registrare il movimento di pacchi o articoli durante il trasporto. In ogni luogo di lavorazione, le merci vengono identificate e i dati vengono trasmessi al sistema centrale di elaborazione. Questi dati vengono quindi utilizzati per fornire ai mittenti lo stato/aggiornamento dell'ubicazione delle merci.

Il sistema che creeremo mostrerà anche il percorso effettuato e la quantità di urti e urti ricevuti. Questo istruibile presuppone anche che tu abbia una conoscenza di base di un lampone pi, python e mysql.

nota: questo è stato realizzato per un progetto scolastico, quindi a causa del limite di tempo c'è molto margine di miglioramento

Forniture

-Raspberry Pi 4 modello B

-Raspberry PI T-ciabattino

-4 batterie agli ioni di litio da 3, 7 V

-2x portabatteria doppio

-Convertitore step-down buck DC 5v

-2x grandi led arancioni

-interruttore on/off/on

-pulsante

-adafruit ultimo gps v3

-mpu6050

-16x2 display lcd

- servomotore

Passaggio 1: alimentazione del circuito e Pi

Alimentazione del circuito e Pi
Alimentazione del circuito e Pi
Alimentazione del circuito e Pi
Alimentazione del circuito e Pi

Quando si tratta di alimentare il circuito pi con una batteria, hai alcune opzioni su come farlo.

Potresti usare un powerbank e alimentare il pi tramite USB, forse stai montando il dispositivo su una e-bike o e-scooter che ha una porta USB, forse hai una batteria del telefono da 5V in giro in attesa di essere usata o potresti usare 2 set di batterie da 3,7 V in parallelo con un convertitore step-down come mostrato nelle immagini

Va bene qualsiasi cosa purché possa fornire un 5V continuo e abbia una vita di cui sei soddisfatto.

Passaggio 2: l'MPU6050

L'MPU6050
L'MPU6050

IntroduzioneIl modulo sensore MPU6050 è un dispositivo di tracciamento del movimento a 6 assi integrato.

  • Ha un giroscopio a 3 assi, un accelerometro a 3 assi, un processore di movimento digitale e un sensore di temperatura, il tutto in un unico circuito integrato.
  • È possibile trovare vari parametri leggendo i valori dagli indirizzi di determinati registri utilizzando la comunicazione I2C. La lettura del giroscopio e dell'accelerometro lungo gli assi X, Y e Z sono disponibili in forma complementare a 2.
  • Le letture del giroscopio sono in gradi al secondo (dps); Le letture dell'accelerometro sono in unità g.

Abilitazione di I2C

Quando si utilizza un MPU6050 con un Raspberry Pi, è necessario assicurarsi che il protocollo I2C sul Raspberry Pi sia attivato. Per fare ciò, aprire il terminale del pi tramite mastice o altro software e procedere come segue:

  1. digita "sudo raspi-config"
  2. Seleziona le configurazioni di interfaccia
  3. Nell'opzione Interfaccia, seleziona "I2C"
  4. Abilita la configurazione I2C
  5. Seleziona Sì quando ti viene chiesto di riavviare.

Ora possiamo testare/scansionare qualsiasi dispositivo I2C collegato alla nostra scheda Raspberry Pi installando gli strumenti i2c. Possiamo ottenere strumenti i2c utilizzando il gestore di pacchetti apt. Usa il seguente comando nel terminale Raspberry Pi.

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

Ora collega qualsiasi dispositivo basato su I2C alla porta in modalità utente e scansiona quella porta usando il seguente comando, "sudo i2cdetect -y 1"

Quindi risponderà con l'indirizzo del dispositivo.

Se non viene restituito alcun indirizzo, assicurarsi che l'MPU6050 sia collegato correttamente e riprovare

Far funzionare

ora che siamo sicuri che i2c sia abilitato e il pi possa raggiungere l'MPU6050 installeremo una libreria usando il comando "sudo pip3 install adafruit-circuitpython-mpu6050".

se creiamo un file di test python e usiamo il seguente codice possiamo vedere se funziona:

tempo di importazione

scheda di importazione

attività di importazione

oimport adafruit_mpu6050

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

mpu = adafruit_mpu6050. MPU6050(i2c)

mentre vero:

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

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

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

Stampa("")

tempo.sonno(1)

quando ora vogliamo l'accelerazione nell'asse X/Y/Z possiamo usare quanto segue:

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

combinando questo con una semplice istruzione if in un ciclo costante possiamo contare la quantità di shock su un viaggio

Passaggio 3: l'Adafruit Ultimate Breakout GPS

L'Adafruit Ultimate Breakout GPS
L'Adafruit Ultimate Breakout GPS

introduzione

Il breakout è costruito attorno al chipset MTK3339, un modulo GPS pratico e di alta qualità in grado di tracciare fino a 22 satelliti su 66 canali, ha un eccellente ricevitore ad alta sensibilità (tracciamento di -165 dB!) e un'antenna incorporata. Può eseguire fino a 10 aggiornamenti della posizione al secondo per la registrazione o il monitoraggio ad alta velocità e alta sensibilità. Il consumo energetico è incredibilmente basso, solo 20 mA durante la navigazione.

La scheda viene fornita con: un regolatore da 3,3 V con dropout ultra basso in modo da poterlo alimentare con ingressi da 3,3-5 V CC, ingressi sicuri a livello 5 V, Il LED lampeggia a circa 1 Hz durante la ricerca dei satelliti e lampeggia una volta ogni 15 secondi quando viene rilevato un fix trovato per conservare il potere.

Testare il gps con arduino

Se hai accesso a un arduino, è una buona idea testare il modulo con esso.

Collega VIN a +5VCollega GND a GroundConnect GPS RX (dati in GPS) a Digital 0Collega GPS TX (dati in uscita da GPS) a Digital 1

Basta eseguire un codice arduino vuoto e aprire il monitor seriale a 9600 baud. Se ottieni dati gps, il tuo modulo gps funziona. Nota: se il tuo modulo non si risolve, prova a metterlo fuori da una finestra o su una terrazza

Far funzionare

Inizio dell'installazione della libreria adafruit gps utilizzando il comando "sudo pip3 install adafruit-circuitpython-gps".

Ora possiamo usare il seguente codice Python per vedere se possiamo farlo funzionare:

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')

mentre vero:

gps.update() mentre non gps.has_fix:

print(gps.nmea_sentence)print('In attesa di correzione…')gps.update()time.sleep(1)continua

print('=' * 40) # Stampa un separatore line.print('Latitudine: {0:.6f} gradi'.format(gps.latitudine))print('Longitudine: {0:.6f} gradi'.format (gps.longitude))print("Qualità correzione: {}".format(gps.fix_quality))

# Alcuni attributi oltre a latitudine, longitudine e timestamp sono facoltativi# e potrebbero non essere presenti. Controlla se sono Nessuno prima di provare a usare! se gps.satellites non è Nessuno:

print("# satelliti: {}".format(gps.satellites))

se gps.altitude_m non è Nessuno:

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

se gps.speed_knots non è Nessuno:

print("Velocità: {} nodi".format(gps.speed_knots))

se gps.track_angle_deg non è Nessuno:

print("Angolo della traccia: {} gradi".format(gps.track_angle_deg))

se gps.horizontal_dilution non è Nessuno:

print("Diluizione orizzontale: {}".format(gps.diluizione_orizzontale))

se gps.height_geoid non è Nessuno:

print("ID geografico altezza: {} metri".format(gps.height_geoid))

tempo.sonno(1)

Passaggio 4: il display LCD 16x2

L'LCD 16x2
L'LCD 16x2

introduzione

I moduli LCD sono molto comunemente usati nella maggior parte dei progetti embedded, il motivo è il suo prezzo economico, la disponibilità e la facilità di programmazione. La maggior parte di noi si sarebbe imbattuta in questi display nella vita di tutti i giorni, sia al PCO che alle calcolatrici. Il display LCD 16 × 2 è chiamato così perché; ha 16 colonne e 2 righe. Ci sono molte combinazioni disponibili come 8×1, 8×2, 10×2, 16×1, ecc. ma la più usata è l'LCD 16×2. Quindi, avrà (16×2=32) 32 caratteri in totale e ogni personaggio sarà composto da 5×8 Pixel Dots.

Installazione di smbus

Il System Management Bus (SMBus) è più o meno un derivato del bus I2C. Lo standard è stato sviluppato da Intel ed è ora mantenuto dal Forum SBS. L'applicazione principale di SMBus è il monitoraggio dei parametri critici sulle schede madri dei PC e nei sistemi embedded. Ad esempio, sono disponibili molti circuiti integrati di monitoraggio della tensione di alimentazione, monitoraggio della temperatura e monitoraggio/controllo della ventola con un'interfaccia SMBus.

La libreria che utilizzeremo richiede che sia installato anche smbus. Per installare smbus sull'rpi utilizzare il comando "sudo apt install python3-smbus".

Far funzionare

prima di installare la libreria RPLCD usando il comando "sudo pip3 install RPLCD".

ora testiamo l'LCD visualizzando l'ip utilizzando il seguente codice:

da 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('indirizzo IP:\r\n'+str(get_ip_address()))

Passaggio 5: servo, led, pulsante e interruttore

Servo, LED, pulsante e interruttore
Servo, LED, pulsante e interruttore

introduzione

Un servomotore è un attuatore rotante o motore che consente un controllo preciso in termini di posizione angolare, accelerazione e velocità, capacità che un normale motore non ha. Fa uso di un motore normale e lo accoppia con un sensore per il feedback di posizione. Il controller è la parte più sofisticata del servomotore, poiché è progettato specificamente per lo scopo.

LED corto per diodo a emissione luminosa. Un dispositivo elettronico a semiconduttore che emette luce quando una corrente elettrica lo attraversa. Sono notevolmente più efficienti delle lampadine a incandescenza e raramente si bruciano. I LED sono utilizzati in molte applicazioni come i display video a schermo piatto e sempre più come fonti di luce generali.

Un pulsante o semplicemente un pulsante è un semplice meccanismo di commutazione per controllare alcuni aspetti di una macchina o di un processo. I pulsanti sono generalmente realizzati in materiale duro, solitamente plastica o metallo.

Un interruttore on/off/on ha 3 posizioni in cui quella centrale è lo stato off, questi tipi sono principalmente utilizzati per il semplice controllo del motore in cui si ha uno stato avanti, fuori e indietro.

Per farlo funzionare: il servo

Il servo utilizza un segnale PWM per determinare a quale angolo deve essere fortunatamente per noi GPIO ha questa funzione integrata. Pertanto possiamo semplicemente utilizzare il seguente codice per controllare il servo: import RPi. GPIO as GPIOimport time

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)

mentre vero:

duty_cycle = float(input("Enter Duty Cycle (da sinistra = 5 a destra = 10):"))pwm_servo. ChangeDutyCycle(duty_cycle)

Come farlo funzionare: il led e l'interruttore

A causa del modo in cui abbiamo cablato i led e l'interruttore, non abbiamo bisogno di controllare o leggere i led e l'interruttore stesso. Inviamo semplicemente impulsi al pulsante che a sua volta indirizzerà il segnale al led che vogliamo.

Far funzionare: il pulsante

Per il pulsante creeremo la nostra classe semplice in questo modo possiamo facilmente vedere quando viene premuto senza dover aggiungere un evento di rilevamento ogni volta che lo usiamo. Creeremo il file classbutton.py usando il seguente codice:

da RPi import GPIOclass Pulsante:

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 pressato(self):

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

Passaggio 6: il circuito completo

Il circuito completo
Il circuito completo
Il circuito completo
Il circuito completo

Ora che abbiamo esaminato tutti i componenti, è tempo di combinarli tutti.

Mentre le immagini mostrano che i componenti mostrano tutto sulla breadboard stessa, è meglio avere l'affissione a cristalli liquidi, il GPS adafruit e il pulsante collegati utilizzando cavi da femmina a maschio. Solo il t-cobbler e l'mpu6050 su una breadboard. Quando si tratta dei led e dell'interruttore usa cavi più lunghi per assicurarti di poter raggiungere le barre degli indicatori di direzione e la barra dello sterzo.

Passaggio 7: il codice

Per mantenere pulito questo istruibile ho fornito un repository github con entrambi i file di backend e frontend. [nome utente]/[nome cartella] cartella

Passaggio 8: il database

Il database
Il database

A causa del modo in cui questo sistema è configurato, c'è un semplice negozio online impostato utilizzando un elenco di prodotti in un database, inoltre abbiamo tutti i punti e gli ordini salvati qui. Uno script di creazione può essere trovato nel repository github collegato nel passo successivo

Passaggio 9: il caso

Il caso
Il caso

Una volta che sappiamo che l'elettronica funziona, possiamo inserirli in una scatola. Puoi prenderti un po' di libertà creativa con questo. Prima di costruirlo, prendi semplicemente una scatola di cartone che non ti serve più, ad esempio una scatola di cereali vuota, e tagliala, fissala con del nastro adesivo e piegalo fino a quando non hai qualcosa che ti piace. Misura e disegna la custodia su un pezzo di carta e realizzala con un materiale più robusto come il legno, o se non fa per te stampalo in 3D. Assicurati solo che tutta l'elettronica si adatti all'interno e hai i fori per il pulsante, il filo che va all'interruttore, i led e l'lcd. Una volta che hai realizzato la tua custodia è solo questione di trovare un modo per montarla sulla tua bici o scooter

Consigliato: