Sommario:
- Forniture
- Passaggio 1: alimentazione del circuito e Pi
- Passaggio 2: l'MPU6050
- Passaggio 3: l'Adafruit Ultimate Breakout GPS
- Passaggio 4: il display LCD 16x2
- Passaggio 5: servo, led, pulsante e interruttore
- Passaggio 6: il circuito completo
- Passaggio 7: il codice
- Passaggio 8: il database
- Passaggio 9: il caso
Video: Track&trace per piccoli negozi: 9 passaggi (con immagini)
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:01
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
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
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:
- digita "sudo raspi-config"
- Seleziona le configurazioni di interfaccia
- Nell'opzione Interfaccia, seleziona "I2C"
- Abilita la configurazione I2C
- 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
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
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
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
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
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
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:
SISTEMA POS PER NEGOZI, ALIMENTARI E CENTRI SERVIZI DA EXCEL Con Utilizzo di codici a barre: 7 passaggi
SISTEMA POS PER NEGOZI, ALIMENTARI E CENTRI SERVIZI DA EXCEL Con l'utilizzo di codici a barre: con questo blog vi presento come creare un semplice sistema POS (punti vendita) per piccoli negozi alimentari e centri servizi. Con questo metodo è possibile gestire le seguenti strutture senza software speciali o apparecchiature costose. v È
Progettazione di una camera oscura domestica per piccoli spazi: 7 passaggi (con immagini)
Design per camera oscura domestica per piccoli spazi: vista a 360 del mio armadio convertito - Immagine sferica - RICOH THETA Ciao, vorrei iniziare dicendo che questo design per camera oscura non sarà applicabile a tutti. Il tuo armadio potrebbe essere più grande, più piccolo o potresti utilizzare uno spazio bagno. Sì
Motoriduttori economici per piccoli robot: 5 passaggi (con immagini)
Motoriduttori economici per piccoli robot: hai bisogno di motori piccoli, potenti ed economici per il tuo nuovo progetto di piccoli robot? Ho scoperto questi "N20" Motoriduttori circa un anno fa, mentre lavoravo al mio progetto ProtoBot. Sono piccoli, potenti e abbondanti da molte fonti online. Voi
Dissipatore fai da te per piccoli transistor: 6 passaggi (con immagini)
Dissipatore di calore fai-da-te per piccoli transistor: ecco un piccolo mini-istruttivo: vuoi spremere un po' più di corrente attraverso quei transistor del pacchetto TO-92 economici? Quindi aggiungi un piccolo dissipatore di calore in metallo. L'ho realizzato per un driver per motore CC PWM, poiché alcuni transistor bipolari 2N2222 erano utili. Funziona
Costruire piccoli robot: realizzare robot micro-sumo da un pollice cubico e più piccoli: 5 passaggi (con immagini)
Costruire piccoli robot: realizzare robot micro-sumo da un pollice cubico e più piccoli: ecco alcuni dettagli sulla costruzione di piccoli robot e circuiti. Questo tutorial coprirà anche alcuni suggerimenti e tecniche di base utili nella costruzione di robot di qualsiasi dimensione. Per me, una delle grandi sfide dell'elettronica è vedere quanto sia piccolo un