Sommario:

Localizzatore GPS in tempo reale fatto in casa (SIM800L, Ublox NEO-6M, Arduino): 8 passaggi
Localizzatore GPS in tempo reale fatto in casa (SIM800L, Ublox NEO-6M, Arduino): 8 passaggi

Video: Localizzatore GPS in tempo reale fatto in casa (SIM800L, Ublox NEO-6M, Arduino): 8 passaggi

Video: Localizzatore GPS in tempo reale fatto in casa (SIM800L, Ublox NEO-6M, Arduino): 8 passaggi
Video: GPS Tracker (localizzatore) con SIM800L e GPS Neo6M - 1/4 - schemi - Video 671 2024, Dicembre
Anonim
Localizzatore GPS in tempo reale fatto in casa (SIM800L, Ublox NEO-6M, Arduino)
Localizzatore GPS in tempo reale fatto in casa (SIM800L, Ublox NEO-6M, Arduino)

Quindi hai un modulo GSM in giro come me? Anche un localizzatore GPS?

La pensiamo allo stesso modo!

In questo tutorial, cercherò di guidarti su come raggiungere il tuo obiettivo dal punto di vista di un principiante.

Poiché non avevo precedenti conoscenze di ingegneria elettrica (a dire il vero, il progetto non ha bisogno di molto, ma nah) e non avevo idea di come realizzare un dispositivo che inviasse dati in tempo reale a un server web, ho riscontrato numerosi problemi. Tuttavia, alla fine sono riuscito a far funzionare le cose.

Quindi, in questo tutorial, voglio sottolineare gli errori che un principiante può commettere e costruire il progetto di conseguenza.

Ricorda: fai sempre attenzione mentre lavori con l'elettricità!

NOTA: non sono un professionista. Il codice potrebbe non essere abbastanza sofisticato per tutte le tue esigenze. Il progetto vuole essere un "progetto hobby", ma! ha funzionato per me. E se ha funzionato per me, funzionerebbe anche per te!

Passaggio 1: prerequisiti

Prerequisiti
Prerequisiti
Prerequisiti
Prerequisiti
Prerequisiti
Prerequisiti

MODULO GSM - SIM800L

  • Abbastanza piccolo, facile da usare
  • In grado di utilizzare Internet mobile (GPRS)
  • A buon mercato

MODULO GPS - Ublox NEO6M

  • Anche piccolo
  • Svolge molto bene il suo lavoro

Un microcontrollore - può essere qualsiasi cosa - potresti usare il famoso Arduino Uno o il Nano per liberare spazio

Batteria - Ho usato una cella 18650 come principale e unica fonte di alimentazione (Nominale 3,7 V)

Portabatterie: perché? - perché saldare una batteria 18650 è piuttosto pericoloso a causa del calore.

Modulo step-up convertitore DC-DC Boost 5V - Must have, poiché l'Arduino che ho usato ha bisogno di 5V

Strumenti, cose di base che possono tornare utili:

Fili, saldatore, breadboard per test

Passaggio 2: concetto principale

Concetto principale
Concetto principale

Il concetto principale del sistema è il seguente:

Si compone di 3 parti:

  1. Un dispositivo - che ha le coordinate GPS corrette e può connettersi a un server in remoto e inviare dati ad esso
  2. Un server web - che può ricevere dati in entrata - memorizzarli - e servire altri client
  3. La piattaforma - dove possiamo visualizzare le coordinate - Idealmente dovrebbe essere ora un'applicazione mobile o un sito web

Passaggio 3: il modulo SIM800L

Il modulo SIM800L
Il modulo SIM800L
Il modulo SIM800L
Il modulo SIM800L

Ho avuto difficoltà con il modulo.

Vorrei iniziare con alcune caratteristiche e riferimenti.

Secondo la scheda tecnica:

  • Funziona tra 3,4 V - 4,4 V
  • Può inviare SMS, effettuare chiamate vocali ad altri telefoni e persino connettersi a Internet!
  • Possiamo comunicare con esso tramite i comandi AT!
  • Può utilizzare fino a 2A nelle ore di punta! Nota: probabilmente non sarai in grado di misurarlo con un multimetro, a causa delle sue basse frequenze di campionamento

La mia esperienza è che il SIM800L sotto i 3,8 V non funziona davvero.

Per maggiori informazioni visita: scheda tecnica

Quindi il tuo compito è fornire almeno 3,8 V al modulo (idealmente 4 V), un alimentatore che emette almeno 2 A.

Prima di utilizzare il modulo nel dispositivo finale, ti suggerisco di stabilire una comunicazione con la tua SIM800L e il tuo computer per assicurarti che il tuo dispositivo funzioni correttamente.

Per prima cosa, collega la scheda SIM come nell'immagine sopra.

Per collegarlo al tuo PC, puoi utilizzare un convertitore da USB a TTL o un Arduino.

Ora vado con Arduino.

Collega il SIM800L VCC e GND ai terminali della tua fonte di alimentazione.

Collega TX al decimo pin digitale di Arduino, RX all'undicesimo pin digitale di Arduino.

Scarica il codice, ho collegato in questo passaggio.

Con il codice, puoi inviare comandi e recuperarli sul tuo monitor seriale.

Alcuni semplici comandi:

AT Restituisce OK, se la connessione è OK.

ATD+123456789; Chiama un determinato numero di telefono. Nota: non dimenticare di terminare con un punto e virgola.

AT+CPIN? Restituisce lo stato della carta SIM (bloccata o meno)

Se vuoi inviare un SMS, devi terminare l'inserimento con un carattere speciale, puoi farlo con il simbolo '$'.

Per ulteriori comandi interessanti ti suggerisco di leggere questo.

Ci sono vari comandi, familiarizza con loro, sono davvero utili.

C'è un LED di stato rosso che ti dice in quale operazione si trova il SIM800L.

64 MS ON - 800MS OFF - SIM800L non è registrato alla rete.

64 MS ON - 3000MS OFF - SIM800L è registrato nella rete.

64 MS ON - 300MS OFF - SIM800l è in modalità GPRS

Se il SIM800L continua a riavviarsi dopo circa 8-10 lampeggi, potrebbe essere dovuto alla mancanza di alimentazione efficiente.

Se non vai bene dopo AT, controlla il cablaggio! Se hai un multimetro, controlla la continuità dei fili.

Controllare le connessioni dei fili e dei giunti di saldatura! Il modulo funzionerà solo quando lampeggia.

Passaggio 4: Ublox Neo 6m

Ublox Neo 6m
Ublox Neo 6m
Ublox Neo 6m
Ublox Neo 6m

Alcune caratteristiche

  • Voltaggio massimo: 3.6V - L'ho alimentato con il pin 3.3V di Arduino
  • L'assorbimento di corrente massimo è 67 mA, quindi puoi alimentarlo da arduino
  • Intervallo di temperatura:: -40-85 Celsius (immagino che ti andrà bene)

L'unità che ho ordinato è arrivata con un'antenna vista nella foto, l'ho semplicemente inserita nello slot corrispondente.

Il dispositivo quando ha segnali, lampeggia con LED blu.

Per prima cosa, controlla qui come funziona un GPS, se non lo sai.

Quando il dispositivo è acceso e trova 3 satelliti, invia molti valori separati da virgole all'Arduino come sopra.

Per aiutare il nostro lavoro, possiamo utilizzare alcune librerie esterne per analizzare questi dati per essere più leggibili dall'uomo.

Puoi usare la libreria TinyGps o la libreria NeoGPS. Ho usato il secondo perché è più leggero.

Per il test, devi collegare i pin di alimentazione ad arduino 3.3V e GND.

Scarica questo codice e utilizzalo con il tuo GPS. RX Digitale pin 10, TX Digitale pin 11

Nota: non dimenticare di utilizzare il modulo all'aperto, preferibilmente in assenza di nuvole.

Dopo mezzo minuto, il dispositivo dovrebbe lampeggiare ed emettere le tue coordinate GPS!:)

Una volta che sai che il tuo SIM800L e il modulo GPS funzionano correttamente, puoi andare al passaggio successivo.

Passaggio 5: circuiti

circuiti
circuiti

Il circuito è come in foto.

Quindi, la batteria 18650 da 3,4 V - 4,2 V è la fonte di alimentazione principale. Sim800L ottiene l'energia direttamente da esso. C'è un condensatore tra loro in parallelo per migliorare la stabilità del circuito.

Quando scegli un condensatore, dovresti scegliere un condensatore a bassa ESR.

Un convertitore step-up da 5V aumenta la tensione della batteria a 5V (ir è necessario perché Arduino funziona con 5V).

La barra di alimentazione 5V è collegata qui al Nano. Il Sim800L e il Neo6m sono collegati con Nano come nell'immagine. (Sim Tx-D10, SimRx-D11; NeoTX-D3, NeoRX-D4)

D12 è connesso a RST, quindi siamo in grado di riavviare programmaticamente il sistema (tranne il SIM800L). NOTA: questo metodo di riavvio potrebbe non essere la migliore pratica)

E infine, due LED sono collegati al NANO, così possiamo dire all'utente, se si verifica un errore.

Passaggio 6: codice

Il codice è allegato a Instructables o dai un'occhiata a github.

Puoi modificarlo in modo che funzioni correttamente per le tue esigenze, oppure puoi utilizzare il codice di altri se lo desideri.

waitUntilResponse(); la funzione di supporto è stata presa dal suo codice. Controlla il suo lavoro e anche il codice!

In breve, nella funzione di configurazione, dobbiamo abilitare la connessione GPRS del nostro modulo SIM800L. Sappiamo se ha successo se il LED lampeggia rapidamente. (setupGPRSConnection())

Nella funzione loop - ogni 15 secondi viene chiamata la funzione sendData() - che ha la richiesta

Ho usato le stringhe di query per inviare i dati al server web in questo formato:

indirizzo IP/file.php?key=value&key=value es.

Se si verifica un errore, il LED corrispondente si accende. (SIM, GPS)

Passaggio 7: server Web

Server web
Server web

Per il nostro utilizzo è sufficiente un semplice server web leggero.

Ci sono alcune opzioni tra cui puoi scegliere:

  1. Potresti utilizzare un server remoto di un'azienda, che probabilmente dovrai pagare regolarmente.
  2. Potresti usare il tuo computer. Lo suggerisco solo per i test, non è molto efficiente farlo funzionare 24 ore su 24, 7 giorni su 7, a causa dello spreco di energia, dei problemi di sicurezza.
  3. Potresti usare un piccolo computer, come Raspberry PI. Leggero, economico, non consuma molta energia.

Ho provato la 2a e la 3a opzione, hanno funzionato bene. Bene, l'obiettivo principale non sono i server di questo istruibile, ma ti suggerisco alcuni consigli.

Se usi un PC, probabilmente usi Windows. Se fossi in te, installerei su di esso un server Apache o XAMPP.

XAMPP contiene già PHP, oltre al fatto che include anche HTML, Perl e un sistema di gestione del database. Con PHP puoi creare un server dinamico. Se vuoi utilizzare il server locale che hai appena creato da qualsiasi parte del mondo, devi assegnare un IP statico al tuo PC ed eseguire un portforwarding. Un utile tutorial per IP statico:

E tutta la faccenda del port forwarding:

Se hai un Raspberry, è una buona pratica usarlo. Puoi familiarizzare con i comandi di Linux ed eseguire il tuo server 24 ore su 24, 7 giorni su 7.

Il sistema operativo era Raspbian Jessie con una configurazione senza testa (senza tastiera, monitor) - l'ho controllato con il mio computer con connessione SSH.

Ho usato Putty per accedere al mio Raspberry. Non dimenticare di cambiare la password del tuo account, in modo che altri non possano accedere al tuo Pi. Il valore predefinito è: pi, passw: lampone.

Ho installato un server web lighttpd con sqlite3. Buon tutorial trovato qui:

Ho usato principalmente PHP nel codice del server. Con PHP puoi ricevere dati, leggere/scrivere database - codificare una query in un formato json, ecc. … Questo tutorial ti aiuterà molto, come gestire il tuo database con PHP.

Puoi visualizzare il mio codice anche su github, nella cartella server_files.

E, naturalmente, devi abilitare il portforwarding al tuo Pi sul tuo router, se vuoi accedervi da remoto.

Passaggio 8: fine/esperienza

Un recinto è ancora da fare.

La mia esperienza è che il sistema non funziona troppo male. Ma ci sono miglioramenti di stabilità in attesa.

Se il tracker non funziona con il codice che ho allegato, non preoccuparti. Cerca di assicurarti che SIM800L e NEO 6M funzionino come dovrebbero. Puoi modificare liberamente il mio codice, o cercarne uno migliore. Spero solo di poterti mostrare un esempio di come puoi completare questo progetto.

Accetto qualsiasi consiglio, correzione dai commenti. Sentiti libero di chiedere.

Consigliato: