- Materiali richiesti
- Arduino LoRa Shield
- Fabbricazione di PCB per LoRa Shield
- Assemblaggio del PCB
- Collegamento del modulo GPS al trasmettitore LoRa
- Programmazione di Arduino LoRa come trasmettitore GPS
- Programmazione di Arduino LoRa come ricevitore GPS
- Localizzatore GPS Arduino LoRa funzionante
Sapere dove si trova un particolare oggetto / persona è sempre stato confortante. Oggi, il GPS è ampiamente utilizzato in applicazioni di gestione delle risorse come il monitoraggio dei veicoli, il monitoraggio della flotta, il monitoraggio delle risorse, il monitoraggio delle persone, il monitoraggio degli animali domestici, ecc. Considerando entrambi, LoRa sembra essere la scelta perfetta poiché ha un consumo energetico molto basso e può operare su lunghe distanze. Quindi, in questo tutorial costruiremo un sistema di localizzazione GPS utilizzando LoRa, il sistema sarà costituito da un trasmettitore che leggerà le informazioni sulla posizione dal modulo GPS NEO-6Me trasmetterlo senza fili su Lora. La parte ricevente riceverà le informazioni e le visualizzerà su un display LCD 16x2. Se sei nuovo su LoRa, impara a conoscere LoRa e LoRaWAN Technology e come può essere interfacciato con Arduino prima di procedere oltre.
Per mantenere le cose semplici ed economiche per questo progetto non useremo un gateway LoRa. Invece eseguirà la comunicazione peer to peer tra il trasmettitore e il ricevitore. Tuttavia, se desideri una portata globale, puoi sostituire il ricevitore con un LoRa Gateway. Inoltre, poiché vengo dall'India, utilizzeremo il modulo LoRa a 433 MHz che qui è la banda ISM legale, quindi potresti dover selezionare un modulo in base al tuo paese. Detto questo, iniziamo…
Materiali richiesti
- Arduino Lora Shield - 2Nos (PCB design disponibile per il download)
- Arduino Uno - 2Nos
- SX1278 Modulo LoRa 433 MHz - 2
- Antenna Lora 433 MHz
- Modulo GPS NEO-6M
- Modulo display LCD
- Cavi di collegamento
Arduino LoRa Shield
Per rendere più facile la costruzione di cose con LoRa, abbiamo progettato uno Shield LoRa Arduino per questo progetto. Questo scudo è costituito dall'SX1278 433 MHz con un regolatore da 3,3 V progettato utilizzando il regolatore variabile LM317. Lo Shield si posizionerà direttamente sopra Arduino fornendogli funzionalità LoRa. Questo LoRa Shield sarà utile quando devi distribuire nodi di rilevamento LoRa o creare una rete mesh LoRa. Il completo schema elettrico per il LoRa Arduino Shield è il seguente
Lo Shield è costituito da un jack da 12V che, quando alimentato, verrà utilizzato per regolare 3,3V per il modulo LoRa utilizzando il regolatore LM317. Verrà anche utilizzato per alimentare Arduino UNO tramite pin Vin e il 5V regolato da Arduino viene utilizzato per alimentare l'LCD sullo scudo. La tensione di uscita dell'LM317 è fissata a 3,3 V utilizzando rispettivamente il resistore R1 e R2, il valore di questi resistori può essere calcolato utilizzando il calcolatore LM317.
Poiché il modulo LoRa consuma una potenza molto bassa, può anche essere alimentato direttamente dal pin 3.3V di Arduino, ma abbiamo utilizzato un design del regolatore esterno poiché LM317 è più affidabile del regolatore di tensione a bordo. Lo scudo ha anche un potenziometro che può essere utilizzato per regolare la luminosità del display LCD. Il collegamento del modulo LoRa con Arduino è simile a quello che abbiamo fatto nel nostro precedente tutorial sull'interfacciamento di Arduino con Lora.
Fabbricazione di PCB per LoRa Shield
Ora che il nostro circuito è pronto, possiamo procedere con la progettazione del nostro PCB. Ho aperto con il software di progettazione PCB e ho iniziato a formare le mie tracce. Una volta completato il progetto del PCB, la mia scheda aveva un aspetto simile a questo mostrato di seguito
Puoi anche scaricare i file di progettazione in formato GERBER e fabbricarli per ottenere le tue schede. Il collegamento al file Gerber è fornito di seguito
Scarica il file Gerber per Arduino LoRa Shield
Ora che il nostro design è pronto, è tempo di fabbricarli. Per completare il PCB è abbastanza semplice, segui semplicemente i passaggi seguenti
Passaggio 1: accedi a www.pcbgogo.com, registrati se è la prima volta. Quindi, nella scheda Prototipo PCB, inserisci le dimensioni del tuo PCB, il numero di strati e il numero di PCB richiesto. Supponendo che il PCB sia 80 cm × 80 cm è possibile impostare le dimensioni come mostrato di seguito.
Passaggio 2: procedi facendo clic sul pulsante Cita ora . Verrai indirizzato a una pagina in cui impostare alcuni parametri aggiuntivi, se necessario, come il materiale utilizzato per la spaziatura delle tracce, ecc. Ma per lo più i valori predefiniti funzioneranno bene. L'unica cosa che dobbiamo considerare qui è il prezzo e il tempo. Come puoi vedere, il tempo di costruzione è di soli 2-3 giorni e costa solo $ 5 per il nostro PSB. È quindi possibile selezionare un metodo di spedizione preferito in base alle proprie esigenze.
Passaggio 3: il passaggio finale è caricare il file Gerber e procedere con il pagamento. Per assicurarsi che il processo sia fluido, PCBGOGO verifica se il tuo file Gerber è valido prima di procedere con il pagamento. In questo modo puoi essere certo che il tuo PCB è facile da fabbricare e ti raggiungerà come impegnato.
Assemblaggio del PCB
Dopo che la scheda è stata ordinata, mi ha raggiunto dopo alcuni giorni anche se il corriere in una scatola ben imballata ben etichettata e come sempre la qualità del PCB era eccezionale.
Ho acceso la mia barra di saldatura e ho iniziato a montare la scheda. Dato che Footprints, pad, vias e serigrafia sono perfettamente della giusta forma e dimensione, non ho avuto problemi a montare la tavola. Una volta completata la saldatura, la scheda aveva questo aspetto qui sotto, come puoi vedere si adatta perfettamente alla mia scheda Arduino Uno.
Poiché il nostro progetto ha un trasmettitore LoRa Arduino e un ricevitore LoRa Arduino, avremo bisogno di due schermi uno per il ricevitore e l'altro per il trasmettitore. Quindi ho proceduto con la saldatura di un altro PCB, sia il PCB con modulo LoRa che LCD è mostrato sotto.
Come puoi vedere solo il ricevitore LoRa shied (quello sinistro) ha un LCD collegato, il lato trasmettitore è costituito solo dal modulo LoRa. Collegheremo ulteriormente un modulo GPS al lato trasmettitore come discusso di seguito.
Collegamento del modulo GPS al trasmettitore LoRa
Il modulo GPS utilizzato qui è il modulo GPS NEO-6M, il modulo può funzionare a bassissima potenza con un fattore di forma ridotto che lo rende adatto per applicazioni di tracciamento. Tuttavia, sono disponibili molti altri moduli GPS che abbiamo utilizzato in precedenza in diversi tipi di applicazioni di tracciamento dei veicoli e rilevamento della posizione.
Il modulo funziona a 5 V e comunica utilizzando la comunicazione seriale a 9600 baud rate. Quindi alimentiamo il modulo al pin + 5V di Arduino e colleghiamo i pin Rx e Tx rispettivamente al pin digitale D4 e D3 come mostrato di seguito
I pin D4 e D3 verranno configurati come pin seriali del software. Una volta alimentato, il modulo GPS NEO-6M cercherà la connessione satellitare e produrrà automaticamente tutte le informazioni in modo seriale. Questi dati di output saranno nel formato di frase NMEA che sta per National Marine Electronics Association ed è il formato standard per tutti i dispositivi GPS. Per saperne di più sull'utilizzo del GPS con Arduino, segui il link. Questi dati saranno grandi e la maggior parte del tempo dovremo formularli manualmente per ottenere il risultato desiderato. Fortunatamente per noi c'è una libreria chiamata TinyGPS ++ che fa tutto il lavoro pesante per noi. Devi anche aggiungere la libreria LoRa se non l'hai ancora fatto. Quindi scarichiamo entrambe le librerie dal link sottostante
Scarica TinyGPS ++ Arduino Library
Scarica Arduino LoRa Library
Il link scaricherà un file ZIP che potrà poi essere aggiunto all'IDE di Arduino seguendo il comando Sketch -> Include Library -> Add.ZIP library. Una volta che sei pronto con l'hardware e la libreria possiamo procedere con la programmazione delle nostre schede Arduino.
Programmazione di Arduino LoRa come trasmettitore GPS
Come sappiamo, LoRa è un dispositivo ricetrasmettitore, il che significa che può sia inviare che ricevere informazioni. Tuttavia in questo progetto di localizzatore GPS useremo un modulo come trasmettitore per leggere le informazioni di coordinate dal GPS e inviarle, mentre l'altro modulo come ricevitore che riceverà i valori delle coordinate GPS e lo stamperà sul display LCD. Il programma per entrambi i moduli Trasmettitore e Ricevitore si trova in fondo a questa pagina. Assicurati di aver installato le librerie per modulo GPS e modulo LoRa prima di procedere con il codice. In questa sezione vedremo il codice del trasmettitore.
Come sempre iniziamo il programma aggiungendo le librerie e i pin richiesti. Qui la libreria SPI e LoRa viene utilizzata per la comunicazione LoRa e la libreria TinyGPS ++ e SoftwareSerial viene utilizzata per la comunicazione GPS. Il modulo GPS nel mio hardware è collegato ai pin 3 e 4 e quindi lo definiamo anche come segue
#includere
All'interno della funzione di setup iniziamo il monitor seriale e inizializziamo anche il software seriale come “gpsSerial ” per la comunicazione con il nostro modulo GPS NEO-6M. Nota anche che ho usato 433E6 (433 MHz) come frequenza operativa LoRa potresti dover cambiarla in base al tipo di modulo che stai utilizzando.
void setup () { Serial.begin (9600); gpsSerial.begin (9600); while (! Serial); Serial.println ("LoRa Sender"); if (! LoRa.begin (433E6)) { Serial.println ("Avvio di LoRa fallito!"); mentre (1); } LoRa.setTxPower (20); }
All'interno della funzione loop controlliamo se il modulo GPS sta inviando dei dati, se sì allora leggiamo tutti i dati e li formuliamo usando la funzione gps.encode. Quindi controlliamo se abbiamo ricevuto dati di posizione validi utilizzando la funzione gps.location.isValid () .
while (gpsSerial.available ()> 0) if (gps.encode (gpsSerial.read ())) if (gps.location.isValid ()) {
Se abbiamo ricevuto una posizione valida, possiamo quindi iniziare a trasmettere i valori di latitudine e longitudine. La funzione gps.location.lat () fornisce la coordinata della latitudine e la funzione gps.location.lng () fornisce la coordinata della longitudine. Dato che li stamperemo sul display LCD 16 * 2 dobbiamo menzionare quando cagare sulla seconda riga, quindi usiamo la parola chiave "c" per intimare al ricevitore di stampare le seguenti informazioni sulla riga 2.
LoRa.beginPacket (); LoRa.print ("Lat:"); LoRa.print (gps.location.lat (), 6); LoRa.print ("c"); LoRa.print ("Long:"); LoRa.print (gps.location.lng (), 6); Serial.println ("Inviato tramite LoRa"); LoRa.endPacket ();
Programmazione di Arduino LoRa come ricevitore GPS
Il codice del trasmettitore sta già inviando il valore delle coordinate di latitudine e longitudine, ora il ricevitore deve leggere questi valori e stamparli sul display LCD. Allo stesso modo qui aggiungiamo la libreria per il modulo LoRa e il display LCD e definiamo a quali pin è collegato il display LCD e inizializziamo anche il modulo LoRa come prima.
#includere
All'interno della funzione loop ascoltiamo i pacchetti di dati dal modulo LoRa del trasmettitore e le dimensioni di esso utilizzando la funzione LoRa.parsePacket () e li memorizziamo nella variabile “ packetSize ”. Se vengono ricevuti pacchetti, procediamo con la lettura come caratteri e la stampa sul display LCD. Il programma controlla anche se il modulo LoRa sta inviando la parola chiave “c”, in caso affermativo stampa le restanti informazioni sulla seconda riga.
if (packetSize) {// Se il pacchetto ha ricevuto Serial.print ("Pacchetto ricevuto '"); lcd.clear (); while (LoRa.available ()) { char in arrivo = (char) LoRa.read (); if (in arrivo == 'c') { lcd.setCursor (0, 1); } else { lcd.print (in arrivo); } }
Localizzatore GPS Arduino LoRa funzionante
Una volta che l'hardware e il programma sono pronti possiamo caricare entrambi i codici nei rispettivi moduli Arduino e alimentarli utilizzando un adattatore 12V o un cavo USB. Quando il Trasmettitore è alimentato, puoi notare il LED blu sul modulo GPS lampeggiante, questo indica che il modulo sta cercando una connessione satellitare per ottenere le coordinate. Nel frattempo il modulo ricevitore si accenderà e visualizzerà un messaggio di benvenuto sullo schermo LCD. Una volta che il trasmettitore invia le informazioni, il modulo ricevitore le visualizzerà sul suo LCD come mostrato di seguito
Ora puoi muoverti con il modulo GPS del trasmettitore e noterai che il ricevitore aggiorna la sua posizione. Per sapere dove si trova esattamente il modulo trasmettitore è possibile leggere i valori di latitudine e longitudine visualizzati sul display LCD e inserirli in Google Maps per ottenere la posizione sulla mappa come mostrato di seguito.
La lavorazione completa la trovate anche nel video riportato in fondo a questa pagina. Spero che tu abbia capito il tutorial e ti sia piaciuto costruire qualcosa di utile con esso. Se hai dei dubbi puoi lasciarli nella sezione commenti qui sotto o utilizzare i nostri forum per altre domande tecniche.