Sommario:
- Passaggio 1: Schema del circuito e protezioni del circuito
- Fase 2: Costruzione
- Passaggio 3: Programmazione dello scudo WiFi
- Passaggio 4: aggiunta di LED indicatori (opzionale)
- Passaggio 5: impostazione della configurazione tramite la pagina Web integrata
- Passaggio 6: Aiuto – Nessun dato
Video: Hub NMEA/AIS economico -- Bridge da RS232 a Wifi per uso a bordo: 6 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 09:59
Aggiornamento 9 gennaio 2021 – Aggiunta connessione TCP aggiuntiva e riutilizzo dell'ultima connessione se più client si connettono Aggiornamento 13 dicembre 2020 – Aggiunta versione senza configurazione del codice per barche con router esistenti
introduzione
Questo bridge da NMEA / AIS RS232 a WiFi si basa sullo scudo WiFi ESP8266-01. AIS è un sistema di identificazione automatica per mostrare la posizione delle navi vicine. NMEA 0183 è lo standard della National Marine Electronics Association utilizzato per i messaggi GPS.
Il bridge da RS232 a WiFi è stato modificato rispetto a ESP8266-01 WiFi Shield per essere alimentato da una batteria da 12 V e accettare un ingresso RS232 (+/-15 V) e creare una rete locale che trasmette i dati tramite TCP e UDP. È stato sviluppato in collaborazione con Jo che voleva gestire una rete locale autonoma ed economica per accedere ai dati del suo AIS da qualsiasi punto del suo yacht. Questo modulo risultante crea un punto di accesso (un router) e imposta un server TCP per un massimo di 4 connessioni e trasmette anche i dati su un gruppo di trasmissione UDP. Viene fornita una pagina web di configurazione per impostare i numeri di porta TCP e UDP, la potenza WiFi Tx e la velocità di trasmissione RS232 in ingresso. A differenza del WiFi Shield, non esiste un pulsante di configurazione, quindi una volta costruito il modulo può essere completamente sigillato a tenuta stagna. I circuiti di protezione sono inclusi per rendere questo dispositivo robusto contro il cablaggio errato. Sebbene sia stato progettato pensando a NMEA (GPS) e AIS, il modulo gestirà qualsiasi dato RS232 con baud rate tra 4800 e 38400 (e altri modificando lo sketch Arduino).
Caratteristiche
- Utilizza il modulo ESP8266-01 economico e facilmente disponibile: è possibile utilizzare anche altri moduli ESP8266
- Robusto: - Il circuito ha una serie di protezioni integrate per evitare errori durante il cablaggio.
- Efficienza energetica: un alimentatore convertitore DC-DC alimenta in modo efficiente l'unità da una batteria da 12 V e la potenza WiFi Tx può essere ridotta per risparmiare più energia.
- Semplice da usare: basta collegare un'alimentazione da 5,5 V a 12 V e la linea RS232 TX, quindi collegare il ricevitore alla rete e connettersi al servizio TCP o UDP per ricevere i dati. Può essere rapidamente sostituito con uno di riserva in caso di guasto dell'unità
- Semplice da configurare: non è necessaria alcuna riprogrammazione, nessuna modalità di configurazione speciale. Viene fornita una pagina di configurazione che consente di impostare il baud rate RS232 e la potenza di trasmissione WiFi e i numeri di porta per i server TCP e UDP
-
Opzionale Versione senza configurazione: - C'è anche un altro schizzo in cui tutta la configurazione è pre-programmata. Questo è per quelle situazioni che hanno già una rete locale in esecuzione con un proprio router (Access Point)
Forniture:
Questo ESP8266-01 RS232 a WiFi Bridge necessita delle seguenti parti o simili. I prezzi mostrati qui sono aggiornati ad agosto 2020 ed escludono le spese di spedizione e una sorta di custodia in plastica: -
Modulo WiFi ESP8266-01 - ~ US $ 1,50 online (cogli le tue possibilità) OPPURE per un prodotto affidabile SparkFun ESP8266-01 - US $ 6,95
MPM3610 Convertitore buck da 3,3 V Adafruit – 5,95 USD Ingresso da 5 V a 21 V, OPPURE Modulo di alimentazione step-down buck DC-DC 3A online Aliexpress ~ 2,00 USD
Intestazione a 10 pin Element14 - US $ 0,40 (o morsettiera a 28 pin di Jaycar AU $ 0,95)
1 off 1N5711 Schottky Diode Digikey 1,15 USD (o Jaycar 1,60 USD)
2 diodi 1N4001 SparkFun US $ 0,30 (o 1N4004 Jaycar $ 1,00) Qualsiasi diodo 1A 50 V o superiore andrà bene, ad esempio 1N4001, 1N4002, 1N4003, 1N4004
1 off 2N3904 transistor NPN SparkFun US $ 0,50 (o Jaycar AU $ 0,75 qualsiasi NPN per uso generico con Vce > 40 V, Hfe > 50 a 1 mA, Ic > 50 mA ad es. BC546, BC547, BC548, BC549, BC550, 2N2222
6 x 3K3 resistori ad es. Resistori 3K3 – Digikey – US $ 0,60 (o 3K3ohm 1/2 Watt 1% Resistori a film metallico – Pk.8 da Jaycar AU $ 0,85)
3 off 330R resistor Element14 US $ 0,10 (o 330ohm 1/2 Watt 1% resistori a film metallico – Pk.8 da Jaycar AU $ 0,85)
1 off 10K resistor Element14 US$0.05 (o 10k Ohm 0.5 Watt resistori a film metallico - Confezione da 8 da Jaycar AU$0.85)
Scheda Vero (collegamenti e binari bus) Jaycar HP9556 OR (striscia di rame) (striscia di rame) es. Jaycar HP9540 ~AU$5.50
e una custodia in plastica e un cavo di collegamento.
Costo totale ~ US $ 9,90 + spedizione e custodia in plastica (ad agosto 2020) utilizzando Aliexpress ESP8266-01 e il modulo DC-DC OPPURE ~ US $ 19,30 utilizzando il modulo Sparkfun ESP8266-01 e il convertitore buck DC-DC Adafruit. Abbastanza economico per fare un paio di pezzi di ricambio.
Per programmare il bridge da RS232 a WiFi, è necessario anche un cavo da USB a seriale. Qui viene utilizzato un cavo seriale da USB a TTL di SparkFun (US $ 10,95) perché ha estremità ben etichettate e ha il supporto del driver per un'ampia gamma di sistemi operativi Compreso il cavo di programmazione, il costo per un solo ponte da RS232 a WiFi è di ~ US $ 20 a US $ 24 (più spedizione e custodia).
Passaggio 1: Schema del circuito e protezioni del circuito
Sopra c'è lo schema del circuito per il bridge da RS232 a WiFi (versione pdf). Questo è stato adattato da ESP8266-01 Wifi Shield e modificato per accettare RS232 e un'alimentazione da 5 V a 12 V (batteria). Il convertitore da CC a CC fornisce un funzionamento efficiente dal punto di vista energetico da una batteria da 12 V per l'uso notturno quando non c'è energia solare e il consumo di energia è limitato.
Nel circuito sono state integrate una serie di protezioni del circuito. Le connessioni sul lato sinistro del circuito vengono utilizzate solo durante la costruzione per programmare/debuggare l'unità. I resistori 330R R6 e R7 proteggono dal cortocircuito di un'uscita TX su un'uscita TX durante la programmazione/debug. Durante la programmazione si collega TX a RX e RX a TX. L'output TX di debug deve essere collegato a un input RX UART 3v3 per visualizzare l'output di debug (vedere i commenti nello sketch ESP8266_NMEA_BRIDGE.ino).
Le connessioni sul lato destro del circuito vengono utilizzate per collegare l'unità completata all'alimentazione e alla sorgente NMEA/AIS RS232. Queste sono le uniche connessioni che devono essere accessibili una volta che l'unità è stata costruita. Mantieni queste connessioni in coppia.
Il 2N3904 fornisce l'inversione e lo spostamento del livello dal segnale RS232 +/- 15V all'ingresso TTL UART all'ESP2866. La tensione inversa tra l'emettitore e la base del 2N3904 è specificata per resistere ad almeno 6V. Il D4 limita la tensione della base dell'emettitore inverso a essere inferiore a 1V quando l'ingresso RS232 è -15V.
Infine, "driver e ricevitori RS-232 devono essere in grado di resistere a cortocircuiti indefiniti a terra" (RS232 wikipedia) quindi se si collegano accidentalmente le linee RS232 ai terminali di alimentazione, non si dovrebbe danneggiare il dispositivo NMEA/AIS.
Alimentazione elettrica
Il diodo D1 impedisce l'applicazione della tensione inversa al convertitore CC-CC se si scambiano le connessioni +V e GND durante il cablaggio. D1 ha una piccola corrente di dispersione. D2 fornisce un percorso a bassa tensione per quella corrente di dispersione per mantenere la tensione inversa sul convertitore DC-DC al di sotto di -0,3 V. Il resistore 330R (R10) nella linea RS232 GND fornisce protezione contro il cortocircuito della batteria a terra se il cavo +ve della batteria è collegato al filo GND di alimentazione della scheda mentre è collegato RS232 GND.
Il convertitore DC-DC è valutato per un ingresso operativo fino a 21 V, quindi è adatto per una batteria da 12 V mentre viene sostituita. Una batteria a piena carica può arrivare fino a ~14,8V e la tensione del caricabatterie può essere superiore, 16V o più. Il valore di ingresso 21V del convertitore DC-DC è valutato per gestire questo. Il collegamento accidentale dell'alimentazione inversa (nel cuore della notte in caso di maltempo) è protetto contro. La tensione massima assoluta per l'ingresso del convertitore è 28V quindi può gestire un segnale RS232 collegato ad esso. La tensione RS232 è specificata per essere inferiore a +/- 25V.
Se si collegano accidentalmente i cavi dell'alimentatore alle connessioni RS232 TX/GND (invertiti o meno), i resistori da 10K e 330R proteggeranno dal cortocircuito dell'alimentatore.
In sintesi, il circuito è protetto dallo scambio di cavi di alimentazione e RS232 e dal collegamento dei fili di tali coppie in entrambi i modi. Lo scambio di cavi, uno per ogni coppia, non è protetto in tutte le combinazioni, quindi mantieni l'RS232 e i cavi di alimentazione accoppiati e collegali a coppie.
La corrente media utilizzata dalla scheda è di circa 100 mA (a seconda della potenza di trasmissione WiFi e della velocità dei dati). Se si utilizzasse un semplice regolatore lineare per alimentare la scheda da una batteria da 12 V, il consumo energetico sarebbe di 12 V x 100 mA = 1,2 W o 1,2 Ah per 12 notti. L'utilizzo del convertitore da CC a CC, che ha un'efficienza del 70% circa, riduce questo carico a 0,47 W o 0,47 Ah in una notte di 12 ore.
Fase 2: Costruzione
Ho costruito questa unità utilizzando un piccolo pezzo di vero pannello con collegamenti e bus di alimentazione (versione pdf). Ecco le viste dall'alto e dal basso della scheda completata. Assicurati di controllare attentamente il cablaggio quando hai finito. È facile collegare al pin sbagliato quando si capovolge e si collega dal basso.
Passaggio 3: Programmazione dello scudo WiFi
Ogni bridge da RS232 a WiFi deve essere programmato una volta, solo e mai più. Una pagina Web integrata fornisce l'accesso alle configurazioni disponibili.
Installazione del supporto ESP8266
Per programmare lo scudo seguire le istruzioni fornite su https://github.com/esp8266/Arduino in Installazione con Boards Manager. Quando si apre Boards Manager dal menu Strumenti → Board e selezionare Type Contributed e installare la piattaforma esp8266. Questo progetto è stato compilato utilizzando la versione ESP8266 2.6.3. Le versioni successive potrebbero essere migliori ma potrebbero avere i propri bug poiché la piattaforma si sta evolvendo rapidamente.
Chiudi e riapri l'IDE Arduino e ora puoi selezionare "Modulo generico ESP8266" dal menu Strumenti → Scheda.
Installazione di librerie di supporto
È inoltre necessario installare, da https://www.forward.com.au/pfod/pfodParserLibraries/index.html, le ultime versioni della libreria pfodESP8266BufferedClient (per pfodESP8266Utils.h e pfodESP8266BufferedClient.h) e della libreria millisDelay (per millisDelay. h).
Scarica questi file zip sul tuo computer, spostali sul desktop o in un'altra cartella che puoi trovare facilmente e quindi usa l'opzione del menu IDE di Arduino Schizzo → Importa libreria → Aggiungi libreria per installarli. È inoltre necessario installare la libreria SafeString. La libreria SafeString è disponibile dal gestore della libreria Arduino oppure puoi scaricare direttamente il file SafeString.zip per l'installazione manuale tramite Sketch → Importa libreria → Aggiungi libreria
Arresta e riavvia l'IDE Arduino e in File-> Esempi dovresti ora vedere pfodESP8266BufferedClient e SafeString.
Programmazione della scheda
Per programmare la scheda, mettere la scheda in modalità programmazione cortocircuitando il collegamento (in basso a sinistra). Quindi collegare il cavo seriale USB a TTL UART
Nota attentamente collegare solo i cavi 3V3 TX/RX alla connessione sul lato sinistro utilizzando il 3V3 TX/RX dal cavo seriale USB a TTL di Sparkfun. I collegamenti dei cavi sono RX (giallo), TX (arancione), VCC (5V) (rosso), e GND (nero). Notare che il cavo giallo (RX) è collegato al pin TX sulla scheda e il cavo arancione (TX) è collegato al pin RX sulla scheda. Il cavo nero (GND) è collegato a GND per il pin TX/RX
Nota: sembrano esserci due versioni di questo cavo. Le versioni precedenti hanno 5V Vcc e RX (Marrone), TX (Tan-like/Peach), VCC (Rosso), e GND (Nero), in ogni caso qui non viene utilizzato il cavo VCC. Ci sono anche commenti che il filo TX e RX sono invertiti in alcuni casi. Se l'IDE Arduino non è in grado di programmare la scheda, prova a scambiare i cavi TX/RX. Il 330R protegge dai cortocircuiti TX-TX.
Alimenta la scheda da un alimentatore o una batteria da 6V a 12V 500mA o superiore. Collegare prima il cavo di alimentazione -Ve (GND) in modo che la corrente di alimentazione non cerchi di rifluire attraverso la connessione USB. Utilizzare preferibilmente un'alimentazione o una batteria isolata (fluttuante) da 6V a 12V. Nota che i moduli DC-DC di Aliexpress richiedono almeno un'alimentazione di 6,5 V.
Quindi collega il cavo USB al computer. Seleziona la sua porta COM nel menu Strumenti → Porta. Lascia la frequenza della CPU, la dimensione del flash e la velocità di caricamento alle impostazioni predefinite.
Controlla la foto e il cablaggio. Vedere anche Suggerimenti per la programmazione di ESP8266 (espcomm non riuscito) Compilare lo sketch ESP8266_NMEA_BRIDGE.ino. Quindi seleziona File → Carica o usa il pulsante Freccia destra per compilare e caricare il programma. Vengono caricati due file. Se ricevi un messaggio di errore durante il caricamento, controlla che le connessioni dei cavi siano inserite nei pin corretti e riprova.
Una volta completata la programmazione, togliere la modalità di programmazione cortocircuitando il collegamento e le connessioni TX/RX di programmazione quindi togliere e riaccendere l'alimentazione per riavviare la scheda nella sua modalità normale.
Collegare il dispositivo NMEA/AIS.
Nessuna versione di configurazione
Esiste un'altra versione di questo schizzo, ESP8266_NMEA_BRIDGE_noCfg.ino, in cui tutta la configurazione è pre-programmata nel codice dello schizzo. In questo caso l'hub NMEA si collega a un router (access point) esistente per rendere disponibili i dati alla rete.
La configurazione è tutta nella parte superiore del file ESP8266_NMEA_BRIDGE_noCfg.ino.
// ================= CONFIGURAZIONE HARD CODED ==================
const char ssid = "yourRouterSSID"; // imposta qui l'SSID della tua rete const char password = "yourRouterPassword"; // imposta qui la password della tua rete IPAddress staticIP(10, 1, 1, 190); // imposta qui l'IP statico dell'hub NMEA. NOTA il, tra i numeri // assicurati che nessun altro dispositivo sia in esecuzione con questo stesso IP e che l'IP sia nell'intervallo IP del tuo router // gli intervalli IP comuni del router vanno da 10.1.1.2 a 10.1.1.254 // da 192.168.1.2 a 192.168.254.254 e // da 172.16.1.2 a 172.31.254.254 // il router è solitamente 10.1.1.1 o 192.168.1.1 o 172.16.1.1 a seconda dell'intervallo IPAddress udpBroadcaseIP(230, 1, 1, 1); // imposta qui l'IP di trasmissione UDP. NOTA il, tra i numeri. Questo IP è indipendente dall'intervallo del router non modificare const uint16_t tcpPortNo = 10110; // imposta la porta del server tcp NMEA No qui const uint16_t udpPortNo = 10110; // imposta la porta di trasmissione UDP NMEA No qui const unsigned int txPower = 10; // Potenza TX nell'intervallo da 0 a 82; const unsigned int GPS_BAUD_RATE = 4800; // il baud rate seriale del tuo modulo GPS // ================= FINE DELLA CONFIGURAZIONE HARD CODED ==============
Passaggio 4: aggiunta di LED indicatori (opzionale)
Il mio consulente di vela su questo progetto, Jo, ha suggerito di montare un led Red Power e un led Green Data sul case per indicare che le cose stanno funzionando. Ecco il circuito modificato con questi due led aggiunti. (versione pdf)
R9 e R11 impostano la corrente del Led e quindi la luminosità. Utilizzare il resistore più grande che renda ancora visibili i led. Saranno difficili da vedere alla luce diretta del sole o in una cabina luminosa, quindi monta l'unità in un angolo buio per la massima visibilità. Jaycar ha dei led sulla cornice rosso e verde adatti (~AU$2.75) e Sparkfun ha alcuni led rossi e verdi super luminosi (US$1.70) ma quasi tutti i led rossi e verdi andranno bene.
Passaggio 5: impostazione della configurazione tramite la pagina Web integrata
Quando accendi la scheda dopo la programmazione, creerà automaticamente una rete locale. Cioè diventerà un punto di accesso locale (router). Il nome della rete inizierà con NMEA_ seguito da 12 cifre esadecimali univoche per ciascuna scheda, ad es. NMEA_18FE34A00239 La password per la rete locale è sempre NMEA_WiFi_Bridge. Se hai bisogno di scambiare unità in mare, spegni quella vecchia, installa quella di riserva e poi cerca la nuova rete NMEA_….. e usa la password NMEA_WiFi_Bridge per unirti ad essa.
Se non riesci a vedere la rete, avvicinati alla scheda del circuito e verifica di avere i cavi di alimentazione collegati correttamente. Dovrebbe esserci una luce blu sulla scheda ESP8266-01.
Dopo aver effettuato l'accesso alla rete con il computer o il telefono cellulare, è possibile aprire la pagina Web di configurazione all'indirizzo https://10.1.1.1 (Nota: digitare https://10.1.1.1, se si digita solo 10.1.1.1 si potrebbe far sì che Google provi a cercarlo e fallisca poiché non sei connesso a Internet)
La pagina di configurazione consente di impostare la potenza di trasmissione WiFi. Numeri più bassi per meno potenza, autonomia e consumo di corrente. È inoltre possibile modificare i numeri di porta per le connessioni TCP e UDP. La 10110 predefinita è la porta designata per le connessioni NMEA, ma puoi sceglierne una tua se lo desideri. I numeri IP sono fissi. Infine puoi impostare la velocità di trasmissione in modo che corrisponda alla tua sorgente NMEA/AIS. 4800 baud è la velocità di trasmissione standard per NMEA. Mentre 34800 baud è la velocità di trasmissione standard per AIS.
Una volta effettuate le selezioni, fare clic su Invia e viene mostrata una pagina di riepilogo delle modifiche che sono state memorizzate.
Se questi non sono corretti, utilizzare il pulsante Indietro del browser per tornare indietro e risolverli. Per applicare le modifiche è necessario riavviare la scheda. Fare clic sul pulsante Applica queste modifiche lo farà.
Al riavvio la scheda mostrerà automaticamente di nuovo la pagina di configurazione con la configurazione corrente.
Collega il tuo computer o dispositivo mobile alla connessione TCP o UDP e verifica di ricevere i dati.
Questo è finito!! Sigillare tutto in una scatola di plastica a tenuta stagna lasciando liberi solo i due cavi di alimentazione ei due cavi RS232.
Passaggio 6: Aiuto – Nessun dato
Una volta che ti sei connesso alla rete e impostato il tuo dispositivo mobile per connettersi al TCP 10.1.1.1 e alla porta che hai impostato (o unisciti al gruppo multicast UDP 230.1.1.1 con la porta che hai impostato), se ancora non ottieni qualsiasi dato prova i seguenti passaggi.
1) Verificare che l'apparecchiatura NMEA/AIS sia accesa
2) Verificare che i cavi RS232 siano collegati nel modo corretto.
3) Controllare l'impostazione 'controllo di flusso' sull'apparecchiatura NMEA/AIS. Impostalo su "NESSUNO" se questa è un'opzione. In caso contrario, scegliere 'hardware' OPPURE controllo di flusso RTS/CTS e cortocircuitare i pin da RTS a CTS e DSR del cavo NMEA/AIS. Questo è per un connettore DB-25, collega i pin 4 e 5 e 6 insieme. Per un connettore DB-9, collegare i pin 6, 7 e 8 insieme. Con il controllo 'hardware' l'apparecchiatura NMEA/AIS (il DTE) asserisce RTS (ReadyToSend) quando vuole inviare dati. Con queste connessioni il pin RTS pilota i pin ClearToSend (CTS) e DataSetReady (DSR) che vengono reinseriti nell'apparecchiatura NMEA/AIS per comunicargli che l'altro lato è pronto e in grado di ricevere dati.
Debug
Per attivare l'output di debug TX, decommentare, ovvero modificare per #define DEBUGvicino alla parte superiore dello schizzo ESP8266_NMEA_BRIDGE.ino.
Rimuovere i cavi USB TX/RX e collegare semplicemente il cavo Yellow RX all'uscita Debug TX. Lasciare il cavo GND nero collegato a GND per TX/RX. Il monitor seriale IDE Arduino ora mostrerà i messaggi di debug.
Per impostazione predefinita, viene avviato il gruppo multicast UDP, ma è possibile disabilitarlo commentando, ovvero modificando in // #define UDP_BROADCAST nella parte superiore dello schizzo ESP8266_NMEA_BRIDGE.ino.
Conclusione
Questo bridge da NMEA/AIS RS232 a WiFi è robusto e semplice da usare. Funziona in modo efficiente da una fonte di 12 batterie ed è abbastanza economico da portare con te un ricambio che puoi scambiare a metà del viaggio, se necessario.