Inhoudsopgave:
- Stap 1: Schakelschema en circuitbeveiligingen
- Stap 2: constructie
- Stap 3: Het WiFi-schild programmeren
- Stap 4: Indicator-leds toevoegen (optioneel)
- Stap 5: De configuratie instellen via de ingebouwde webpagina
- Stap 6: Help – Geen gegevens
Video: Goedkope NMEA/AIS Hub -- RS232 naar Wifi Bridge voor gebruik aan boord - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:14
Update 9 januari 2021 – Extra TCP-verbinding toegevoegd en laatste verbinding hergebruiken als meer clients verbinding maken Update 13 december 2020 – Geen configuratieversie van de code toegevoegd voor boten met bestaande routers
Invoering
Deze NMEA/AIS RS232 naar WiFi bridge is gebaseerd op het ESP8266-01 WiFi Shield. AIS is een automatisch identificatiesysteem om de positie van nabijgelegen schepen te tonen. NMEA 0183 is de National Marine Electronics Association-standaard die wordt gebruikt voor GPS-berichten.
De RS232 naar WiFi-brug is gewijzigd van het ESP8266-01 WiFi-schild om te worden gevoed door een 12V-batterij en een RS232-ingang (+/-15V) te accepteren en een lokaal netwerk te creëren dat de gegevens uitzendt via TCP en UDP. Het is ontwikkeld in samenwerking met Jo, die een goedkoop en eenvoudig op zichzelf staand lokaal netwerk wilde runnen om overal op zijn jacht toegang te krijgen tot zijn AIS-gegevens. Deze resulterende module creëert een toegangspunt (een router) en stelt een TCP-server in voor maximaal 4 verbindingen en zendt ook de gegevens uit op een UDP-uitzendgroep. Er is een configuratiewebpagina beschikbaar om de TCP- en UDP-poortnummers, het WiFi Tx-vermogen en de inkomende RS232-baudrate in te stellen. In tegenstelling tot het WiFi Shield is er geen configuratieknop, dus eenmaal geconstrueerd kan de module volledig waterdicht worden afgedicht. Beveiligingscircuits zijn inbegrepen om dit apparaat robuust te maken tegen verkeerde bedrading. Hoewel ontworpen met NMEA (GPS) en AIS in gedachten, kan de module alle RS232-gegevens verwerken met baudsnelheden tussen 4800 en 38400 (en andere door de Arduino-schets te bewerken).
Functies
- Gebruikt de goedkope en gemakkelijk verkrijgbare ESP8266-01-module: - Andere ESP8266-modules kunnen ook worden gebruikt
- Robuust: - Het circuit heeft een aantal ingebouwde beveiligingen om fouten bij het aansluiten te voorkomen.
- Energiezuinig: - Een DC-DC-convertervoeding voedt het apparaat efficiënt met een 12V-batterij en het WiFi Tx-vermogen kan worden verminderd om meer stroom te besparen.
- Eenvoudig te gebruiken: - Sluit gewoon een voeding van 5,5 V tot 12 V en de RS232 TX-lijn aan en sluit vervolgens uw ontvanger aan op het netwerk en maak verbinding met de TCP- of UDP-service om de gegevens te ontvangen. Kan snel worden verwisseld voor een reserve-exemplaar als het apparaat uitvalt
- Eenvoudig te configureren: - Er is geen herprogrammering nodig, geen speciale configuratiemodus. Er is een configuratiepagina beschikbaar waarmee u de RS232-baudrate en het WiFi-zendvermogen en de poortnummers voor de TCP- en UDP-servers kunt instellen
-
Optioneel Geen configuratieversie: - Er is ook een andere schets waar alle configuratie voorgeprogrammeerd is. Dit is voor die situaties die al een lokaal netwerk hebben met een eigen router (Access Point)
Benodigdheden:
Deze ESP8266-01 RS232 naar WiFi Bridge heeft de volgende onderdelen nodig, of iets dergelijks. De hier getoonde prijzen zijn per augustus 2020 en exclusief verzendkosten en een soort plastic koffer:-
WiFi-module ESP8266-01 - ~ US $ 1,50 online (neem uw kansen) OF voor betrouwbaar product SparkFun ESP8266-01 - US $ 6,95
MPM3610 3.3V Buck Converter Adafruit - US$5.95 5V naar 21V input, OF DC-DC 3A Buck Step-down voedingsmodule online Aliexpress ~US2.00
10-pins header Element14 - US $ 0,40 (of 28 Pin Header Terminal Strip van Jaycar AU $ 0,95)
1 van 1N5711 Schottky Diode Digikey US $ 1,15 (of Jaycar AU $ 1,60)
2 off 1N4001 Diodes SparkFun US$0.30 (of 1N4004 Jaycar AU$1.00) Elke diode van 1A 50V of hoger is voldoende, bijv. 1N4001, 1N4002, 1N4003, 1N4004
1 korting 2N3904 NPN-transistor SparkFun US $ 0,50 (of Jaycar AU $ 0,75 elke NPN voor algemeen gebruik met Vce > 40 V, Hfe > 50 bij 1 mA, Ic > 50 mA bijv. BC546, BC547, BC548, BC549, BC550, 2N2222
6 x 3K3 weerstanden b.v. 3K3-weerstanden - Digikey - US $ 0,60 (of 3K3ohm 1/2 Watt 1% metaalfilmweerstanden - Pk.8 van Jaycar AU $ 0,85)
3 off 330R weerstand Element14 US $ 0,10 (of 330 ohm 1/2 Watt 1% metaalfilmweerstanden - Pk.8 van Jaycar AU $ 0,85)
1 korting op 10K weerstand Element14 US $ 0,05 (of 10k Ohm 0,5 Watt metaalfilmweerstanden - Set van 8 van Jaycar AU $ 0,85)
Vero board (schakels en busrails) Jaycar HP9556 OR (strip koper) (strip koper) b.v. Jaycar HP9540 ~€ 5,50
en een plastic behuizing en aansluitdraad.
Totale kosten ~ US $ 9,90 + verzendkosten en plastic behuizing (vanaf augustus 2020) met Aliexpress ESP8266-01 en DC-DC-module OF ~ US $ 19,30 met Sparkfun ESP8266-01-module en Adafruit DC-DC buck-converter. Goedkoop genoeg om een paar reserveonderdelen te maken.
Om de RS232 naar WiFi Bridge te programmeren, heb je ook een USB naar Seriële kabel nodig. Hier wordt een USB-naar-TTL-seriële kabel van SparkFun (10,95 dollar) gebruikt omdat deze mooi gelabelde uiteinden heeft en driverondersteuning heeft voor een breed scala aan besturingssystemen. Inclusief de programmeerkabel, bedragen de kosten voor slechts één RS232 naar WiFi-brug ~ US $ 20 tot US $ 24 (exclusief verzendkosten en een koffer).
Stap 1: Schakelschema en circuitbeveiligingen
Hierboven staat het schakelschema voor de RS232 naar WiFi Bridge (pdf-versie). Dit is aangepast van het ESP8266-01 Wifi Shield en aangepast om RS232 en een 5V tot 12V (batterij)voeding te accepteren. De DC-naar-DC-converter zorgt voor een energiezuinige werking van een 12V-batterij voor gebruik 's nachts wanneer er geen zonne-energie is en het stroomverbruik hoog is.
In het circuit zijn een aantal circuitbeveiligingen ingebouwd. De aansluitingen aan de linkerkant van het circuit worden tijdens de bouw alleen gebruikt om de unit te programmeren/debuggen. De 330R-weerstanden R6 en R7 beschermen tegen kortsluiting van een TX-uitgang naar een TX-uitgang bij het programmeren/debuggen. Bij het programmeren verbind je TX met RX en RX met TX. De debug TX-uitgang moet worden aangesloten op een RX UART 3v3-ingang om de debug-uitgang te zien (zie de opmerkingen in de ESP8266_NMEA_BRIDGE.ino-schets).
De aansluitingen aan de rechterkant van het circuit worden gebruikt om de voltooide unit aan te sluiten op de voeding en de NMEA/AIS RS232-bron. Dit zijn de enige aansluitingen die toegankelijk moeten zijn als de unit eenmaal is gebouwd. Houd deze verbindingen in paren.
De 2N3904 zorgt voor de inversie en niveauverschuiving van het RS232 +/-15V-signaal naar de TTL UART-ingang naar de ESP2866. De sperspanning tussen de emitter en de basis van de 2N3904 is gespecificeerd om minimaal 6V te weerstaan. De D4 beperkt de omgekeerde emitterbasisspanning tot minder dan 1V wanneer de RS232-ingang -15V is.
Ten slotte, "RS-232-stuurprogramma's en -ontvangers moeten bestand zijn tegen onbeperkte kortsluiting naar aarde" (RS232-wikipedia), dus als u per ongeluk de RS232-lijnen op de voedingsaansluitingen aansluit, mag dit het NMEA/AIS-apparaat niet beschadigen.
Stroomvoorziening
De diode D1 voorkomt dat er sperspanning wordt toegepast op de DC-DC-converter als u de +V- en GND-aansluitingen verwisselt tijdens de bedrading. D1 heeft een kleine lekstroom. D2 biedt een laagspanningspad voor die lekstroom om de sperspanning op de DC-DC-omzetter onder -0,3 V te houden. De 330R-weerstand (R10) in de RS232 GND-lijn biedt bescherming tegen kortsluiting van de batterij naar aarde als de +ve-kabel van de batterij is aangesloten op de GND-draad van de voeding van het bord terwijl de RS232 GND is aangesloten.
De DC-DC-converter is geschikt voor maximaal 21V operationele input, dus hij is geschikt voor een 12V-batterij terwijl deze wordt vervangen. Een volledig opgeladen batterij kan tot ~14,8V bedragen en de laadspanning kan hoger zijn, 16V of meer. De ingangsclassificatie van 21 V van de DC-DC-converter is geschikt om dit aan te kunnen. Per ongeluk omgekeerde voedingsaansluiting (midden in de nacht bij ruw weer) is beveiligd tegen. De absolute maximale spanning voor de converter-ingang is 28V en kan dus een RS232-signaal aan. De RS232-spanning is gespecificeerd als minder dan +/- 25V.
Als u per ongeluk de kabels van uw voeding aansluit op de RS232 TX/GND-aansluitingen (al dan niet verwisseld), zullen de 10K- en de 330R-weerstanden beschermen tegen kortsluiting in de voeding.
Samengevat is het circuit beschermd tegen het verwisselen van stroom- en RS232-draden en het op een of andere manier aansluiten van de draden van die paren. Het verwisselen van draden, één van elk paar, is niet in alle combinaties beschermd, dus houd de RS232 en voedingskabels gepaard en verbind ze in paren.
De gemiddelde stroom die door het bord wordt gebruikt, is ongeveer 100 mA (afhankelijk van het wifi-zendvermogen en de gegevenssnelheid). Als een eenvoudige lineaire regelaar zou worden gebruikt om het bord van een 12V-batterij te voorzien, zou het stroomverbruik 12V x 100mA = 1,2W of 1,2Ahrs zijn over een 12-nacht. Het gebruik van de DC-naar-DC-converter, die ~70% efficiënt is, vermindert deze belasting tot 0,47 W of 0,47 Ah gedurende een nacht van 12 uur.
Stap 2: constructie
Ik heb dit apparaat geconstrueerd met behulp van een klein stukje vero-bord met links en stroombussen (pdf-versie). Hier zijn de boven- en onderaanzichten van het voltooide bord. Zorg ervoor dat u de bedrading zorgvuldig controleert als u klaar bent. Het is gemakkelijk om de verkeerde pin aan te sluiten als u omdraait en vanaf de onderkant bedraden.
Stap 3: Het WiFi-schild programmeren
Elke RS232 naar WiFi-brug hoeft maar één keer en nooit meer te worden geprogrammeerd. Een ingebouwde webpagina geeft toegang tot de beschikbare configuraties.
ESP8266-ondersteuning installeren
Volg de instructies op https://github.com/esp8266/Arduino onder Installing With Boards Manager om het schild te programmeren. Bij het openen van de Boards Manager vanuit het menu Tools → Board en selecteer Type Contributed en installeer het esp8266-platform. Dit project is gecompileerd met behulp van de ESP8266 versie 2.6.3. Latere versies zijn misschien beter, maar kunnen hun eigen bugs hebben omdat het platform snel evolueert.
Sluit en open de Arduino IDE opnieuw en u kunt nu "Generic ESP8266 Module" selecteren in het menu Tools → Board.
Ondersteunende bibliotheken installeren
U moet ook vanaf https://www.forward.com.au/pfod/pfodParserLibraries/index.html de nieuwste versies van pfodESP8266BufferedClient-bibliotheek (voor pfodESP8266Utils.h en pfodESP8266BufferedClient.h) en millisDelay-bibliotheek (voor millisDelay. H).
Download deze zip-bestanden naar uw computer, verplaats ze naar uw bureaublad of een andere map die u gemakkelijk kunt vinden en gebruik vervolgens de Arduino IDE-menuoptie Schets → Bibliotheek importeren → Bibliotheek toevoegen om ze te installeren. U moet ook de SafeString-bibliotheek installeren. De SafeString-bibliotheek is beschikbaar via de Arduino-bibliotheekmanager of u kunt het SafeString.zip-bestand rechtstreeks downloaden voor handmatige installatie via Sketch → Bibliotheek importeren → Bibliotheek toevoegen
Stop en herstart de Arduino IDE en onder Bestand->Voorbeelden zou je nu pfodESP8266BufferedClient en SafeString moeten zien.
Het bord programmeren
Om het bord te programmeren, zet u het bord in de programmeermodus door de link (linksonder) te kortsluiten. Sluit vervolgens de USB naar TTL UART seriële kabel aan
Let op: sluit alleen 3V3 TX/RX-kabels aan op de linkeraansluiting met behulp van de 3V3 TX/RX van Sparkfun's USB naar TTL seriële kabel. De kabelaansluitingen zijn RX (geel), TX (oranje), VCC (5V) (rood), en GND (zwart). Merk op dat de gele (RX) kabel is aangesloten op de TX-pin op het bord en de oranje (TX) kabel is aangesloten op de RX-pin op het bord. De zwarte (GND) kabel is aangesloten op de GND voor TX/RX pin
Opmerking: er lijken twee versies van deze kabel te zijn. Oudere versies hebben 5V Vcc en RX (Bruin), TX (Tan-achtig/Perzik), VCC (Rood) en GND (Zwart), in ieder geval wordt de VCC-kabel hier niet gebruikt. Er zijn ook opmerkingen dat de TX- en RX-draad in sommige gevallen worden omgekeerd. Als de Arduino IDE het bord niet kan programmeren, probeer dan de TX/RX-kabels om te wisselen. De 330R beschermt tegen TX-TX shorts.
Voed het bord van een 6V tot 12V 500mA of grotere voeding of batterij. Sluit eerst de Power supply -Ve (GND)-kabel aan, zodat de stroom van de voeding niet probeert terug te stromen via de USB-aansluiting. Gebruik bij voorkeur een geïsoleerde (zwevende) 6V tot 12V voeding of batterij. Let op: de Aliexpress DC-DC-modules hebben minimaal een 6.5V-voeding nodig.
Sluit vervolgens de USB-kabel aan op uw computer. Selecteer de COM-poort in het menu Extra → Poort. Laat de CPU-frequentie, flitsgrootte en uploadsnelheid op hun standaardinstellingen staan.
Controleer de foto en uw bedrading. Zie ook ESP8266-programmeertips (espcomm mislukt) Compileer de ESP8266_NMEA_BRIDGE.ino-schets. Selecteer vervolgens Bestand → Uploaden of gebruik de pijl naar rechts om het programma te compileren en te uploaden. Er worden twee bestanden geüpload. Als je een foutmelding krijgt tijdens het uploaden, controleer dan of je kabelverbindingen op de juiste pinnen zijn aangesloten en probeer het opnieuw.
Zodra de programmering is voltooid, verwijdert u de programmeermodus door de link en de programmeer-TX/RX-verbindingen kort te sluiten en schakelt u vervolgens de voeding uit en weer in om de kaart opnieuw op te starten in de normale modus.
Sluit het NMEA/AIS-apparaat aan.
Geen configuratieversie
Er is een andere versie van deze schets, ESP8266_NMEA_BRIDGE_noCfg.ino, waarin alle configuratie is voorgeprogrammeerd in de schetscode. In dit geval maakt de NMEA-hub verbinding met een bestaande router (toegangspunt) om de gegevens beschikbaar te stellen aan het netwerk.
De configuratie staat allemaal bovenaan het ESP8266_NMEA_BRIDGE_noCfg.ino-bestand.
// ================= HARD CODED CONFIG ==================
const char ssid = "uwRouterSSID"; // stel hier de SSID van uw netwerk in const char password = "yourRouterPassword"; // stel hier het wachtwoord van uw netwerk in IPAddress staticIP (10, 1, 1, 190); // stel hier het statische IP-adres van de NMEA-hub in. LET OP de, tussen de cijfers // zorg ervoor dat er geen ander apparaat wordt uitgevoerd met hetzelfde IP-adres en dat het IP-adres zich in het IP-bereik van uw router bevindt // de gebruikelijke IP-bereiken van de router zijn 10.1.1.2 tot 10.1.1.254 // 192.168.1.2 tot 192.168.254.254 en // 172.16.1.2 tot 172.31.254.254 // de router is meestal 10.1.1.1 of 192.168.1.1 of 172.16.1.1, afhankelijk van het bereik IPAddress udpBroadcaseIP(230, 1, 1, 1); // stel hier het UDP-uitzend-IP in. LET OP de, tussen de cijfers. Dit IP-adres is onafhankelijk van het routerbereik. const uint16_t tcpPortNo = 10110; // stel NMEA tcp-serverpoort in Nee hier const uint16_t udpPortNo = 10110; // stel NMEA UDP-uitzendpoort in Nee hier const unsigned int txPower = 10; // TX-vermogen in bereik 0 tot 82; const unsigned int GPS_BAUD_RATE = 4800; // de seriële baudrate van je GPS-module // ================= EINDE VAN HARD CODED CONFIG ==============
Stap 4: Indicator-leds toevoegen (optioneel)
Mijn zeilconsulent voor dit project, Jo, stelde voor om een Red Power-led en een Green Data-led op de behuizing te monteren om aan te geven dat de zaken draaien. Hier is het aangepaste circuit met deze twee leds toegevoegd. (pdf-versie)
R9 en R11 stellen de Led-stroom in en daarmee de helderheid. Gebruik de grootste weerstand die de leds nog zichtbaar maakt. Ze zijn moeilijk te zien in direct zonlicht of in een lichte cabine, dus monteer de unit in een donkere hoek voor maximaal zicht. Jaycar heeft geschikte bezel-leds rood en groen (~ AU$ 2,75) en Sparkfun heeft een aantal superheldere rode en groene leds (US$ 1,70), maar bijna elke rode en groene led is voldoende.
Stap 5: De configuratie instellen via de ingebouwde webpagina
Wanneer u het bord na het programmeren inschakelt, zal het automatisch een lokaal netwerk creëren. Dat wil zeggen dat het een lokaal toegangspunt (router) wordt. De netwerknaam begint met NMEA_ gevolgd door 12 hexadecimale cijfers die uniek zijn voor elk bord, bijv. NMEA_18FE34A00239 Het wachtwoord voor het lokale netwerk is altijd NMEA_WiFi_Bridge. Als u eenheden op zee moet verwisselen, schakelt u de oude uit, installeert u de reserve en zoekt u naar het nieuwe NMEA_…..-netwerk en gebruikt u het wachtwoord NMEA_WiFi_Bridge om u erbij aan te sluiten.
Als u het netwerk niet kunt zien, ga dan dichter bij de printplaat staan en controleer of de stroomkabels correct zijn aangesloten. Er moet een blauw licht zijn op het ESP8266-01-bord.
Zodra u met uw computer of mobiele telefoon verbinding heeft gemaakt met het netwerk, kunt u de configuratie-webpagina openen op https://10.1.1.1 (Opmerking: typ https://10.1.1.1 in, als u alleen 10.1.1.1 typt kan ertoe leiden dat Google ernaar probeert te zoeken en faalt omdat je geen verbinding hebt met internet)
Op de configuratiepagina kunt u het wifi-zendvermogen instellen. Lagere cijfers voor minder vermogen en bereik en stroomverbruik. U kunt ook de poortnummers voor de TCP- en UDP-verbindingen wijzigen. De standaard 10110 is de aangewezen poort voor NMEA-verbindingen, maar u kunt uw eigen poort kiezen als u dat wilt. De IP-nummers zijn vast. Ten slotte kunt u de baudrate zo instellen dat deze overeenkomt met uw NMEA/AIS-bron. 4800 baud is de standaard baudrate voor NMEA. Terwijl 34800 baud de standaard baudrate is voor AIS.
Nadat u uw selecties hebt gemaakt, klikt u op Verzenden en een overzichtspagina van de opgeslagen wijzigingen wordt weergegeven.
Als deze niet correct zijn, gebruik dan de browser terug-knop om terug te gaan en ze op te lossen. Om de wijzigingen toe te passen, moet het bord opnieuw worden opgestart. Als u op de knop Deze wijziging toepassen klikt, wordt dat gedaan.
Zodra het bord opnieuw is opgestart, wordt automatisch de configuratiepagina weer weergegeven met de huidige configuratie.
Sluit uw computer of mobiele apparaat aan op de TCP- of UDP-verbinding en controleer of u gegevens ontvangt.
Dat is het klaar!! Sluit alles af in een waterdichte plastic doos en laat alleen de twee stroomkabels en de twee RS232-kabels vrij.
Stap 6: Help – Geen gegevens
Als u eenmaal verbinding heeft gemaakt met het netwerk en uw mobiele apparaat hebt ingesteld om verbinding te maken met TCP 10.1.1.1 en de poort die u hebt ingesteld (of sluit u aan bij de UDP-multicastgroep 230.1.1.1 met de poort die u hebt ingesteld), als u nog steeds geen alle gegevens probeer de volgende stappen.
1) Controleer of de NMEA / AIS-apparatuur is ingeschakeld
2) Controleer of de RS232-kabels op de juiste manier zijn aangesloten.
3) Controleer de 'flow control' instelling op uw NMEA / AIS apparatuur. Zet het op 'NONE' als dat een optie is. Zo niet, kies dan 'hardware' OF RTS/CTS flow control en sluit de RTS naar CTS en DSR pinnen van de NMEA/AIS kabel kort. Dat is voor een DB-25-connector, verbind pinnen 4 en 5 en 6 met elkaar. Voor een DB-9-connector verbindt u pinnen 6 en 7 en 8 met elkaar. Met 'hardware' besturing stelt de NMEA/AIS apparatuur (de DTE) RTS (ReadyToSend) vast wanneer het data wil versturen. Met deze verbindingen stuurt de RTS-pin de ClearToSend (CTS) en DataSetReady (DSR) pinnen aan die terug in de NMEA / AIS-apparatuur worden ingevoerd om te vertellen dat de andere kant klaar is en in staat is om gegevens te ontvangen.
Debuggen
Om de Debugging TX-uitvoer in te schakelen, verwijdert u commentaar, d.w.z. bewerk naar #define DEBUGin de buurt van de bovenkant van de ESP8266_NMEA_BRIDGE.ino-schets.
Verwijder de TX/RX USB-kabels en sluit gewoon de gele RX-kabel aan op de Debug TX-uitgang. Laat de zwarte GND-kabel aangesloten op GND voor TX/RX. De Arduino IDE Seriële Monitor zal nu foutopsporingsberichten weergeven.
Standaard wordt de UDP-multicastgroep gestart, maar u kunt deze uitschakelen door commentaar te geven, d.w.z. bewerken naar // #define UDP_BROADCAST bovenaan de ESP8266_NMEA_BRIDGE.ino-schets.
Conclusie
Deze NMEA/AIS RS232 naar WiFi bridge is robuust en eenvoudig te gebruiken. Het werkt efficiënt op een 12-batterijbron en is goedkoop genoeg om een reserve bij u te hebben die u indien nodig halverwege de reis kunt verwisselen.