ESP8266

De HLK-RM04 draait inmiddels probleemloos op de boot en ik ben verder aan het experimenteren met de ESP8266. Deze chip wordt veel gebruikt voor IoT toepassingen (Internet of Things) en kan als Access-Point (AP) en/of als Wifi-client (Station) gebruikt worden. De chip is verkrijgbaar op een aantal verschillende modules (ESP-01 t/m ESP-14). Deze modules hebben meer/ minder geheugen, andere antennes en meer/ minder IO-aansluitingen maar gebruiken allemaal de ESP8266 chip als basis. Omdat ik de module uitsluitend wil gaan gebruiken als serieel/ wifi converter voor NMEA-data zijn veel I/O aansluitingen niet zo belangrijk en heb ik gekozen voor de eenvoudigste module, de ESP-01.

De module is te programmeren via AT-commando’s die met een terminal programma (b.v. Termite) verstuurd kunnen worden. Voor wat meer complexe programma’s  (C++) kun je de module programmeren via een Arduino-board. Ook kun je hem rechtstreeks benaderen via de Arduino software waarop een speciale ESP8266 library draait.

Na wat speurwerk op internet kwam ik speciale firmware tegen die van de module een serieel/ wifi bridge maakt. Via een simpele webbrowser zijn een aantal basis instellingen te wijzigen zoals SSID, beveiliging en baudrate. De firmware heet esp-link en kan via een speciale flash-tool in de module geprogrammeerd worden.

Aansluiten van de module op een PC gaat via een USB-serieel converter. Hiervoor kun je verschillende converters gebruiken. Meest eenvoudig is het gebruik van een speciaal ontworpen USB/ ESP-01 converter. Op deze converter zit een schuifschakelaar waarmee de module in UART- of PROG (flash)-mode is te zetten. Ik heb goede ervaringen met deze converter die gebaseerd is op de CH340 chipset. Nadeel van modules die draaien op de PL2303 chipset is dat Windows standaard niet over de correcte driver beschikt. De goede driver kun je onderaan de pagina downloaden. Let op dat bij een update Windows deze driver kan overschrijven met een niet werkende driver. Er zijn ook converters die draaien op de FTDI-chipset maar die kreeg ik in deze toepassing niet goed aan de praat.

Je kunt de ESP-01 module ook gebruiken om bijvoorbeeld een sample AIS-NMEA signaal uit te zenden via wifi. Hiermee kun je testen of het signaal correct binnenkomt in navigatieprogramma’s zoals OpenCPN, NV-charts en Isailor. Onderaan deze pagina kun je zo’n AIS-sample downloaden. Via de VDR-plugin van OpenCPN stuur je de test-stream naar een externe com-poort waarop de ESP-01 module draait. Er zijn ook programma’s die allerlei verschillende NMEA messages kunnen simuleren en rechtstreeks doorsturen naar een com-poort, zoals NMEA-simulator.

Flashen esp-link:

Gebruik voor het flashen de USB/ ESP-01 converter
Installeer Flash-tool 2.4
Zet de schakelaar op PROG
Steek de converter in een USB-poort
Start het programma “Flash-tool”
Instellingen Flash-tool:

  • 26M
  • 40 Mhz
  • QIO
  • 8 Mbit
  • 115200 baud

Laad de Flash-tool met nieuwe firmware (in dit geval esp-link v3.0.alpha0- 2016-10-23). Neem de adressen exact over:

  • 0X0000 : boot_v1.6.bin
  • 0X3FE000 : blank.bin
  • 0X7C000 : esp_init_data_default.bin
  • 0X01000 :  user1.bin

Start de Flash-tool, nieuwe firmware wordt nu geladen
Verwijder na de update de converter uit de USB-poort
Zet de schakelaar op UART
Steek de converter weer in de USB-poort
Zoek nieuw wifi-netwerk met naam ESPxxxxx (open netwerk)
Login op IP-adres 192.168.4.1
Via de weg-GUI is de module naar wens in te stellen
Seriële informatie loopt via poort 23

Aansluitingen:

TX :  UART zenden
CH-PD :   Chip enable – Hoog (Vcc) bij normaal gebruik
RST :  External reset: Hoog (Vcc) normaal,  laag (GND) reset
Vcc : 3,3 V (Module kan slecht tegen 5V !)
RX : UART ontvangen
GPIO0 : Hoog voor normaal gebruik, Laag voor flash-update
GPIO2 : Hoog bij opstarten
GND :  Ground (0V)

Aansluiten hardware:

Houd er rekening mee dat de ESP-01 draait op een voedingsspanning van 3,3V en dat ook de data-ingang (RX) met max. 3,3V aangestuurd mag worden. Voor testdoeleinden kan wel even 5V gebruikt worden maar dat zal zeker invloed hebben op de betrouwbaarheid op langere termijn. Er zijn diverse (buck) converters te vinden die 5-12V kunnen omzetten naar 3,3V. Tijdens normaal gebruik moeten de aansluitingen CH-PD, RST, GPIO0 en GPIO2 “hoog” zijn. Je kunt deze daarom het beste via een weerstand van 10K verbinden met Vcc (3,3V). Voor het versturen van NMEA-messages is het wel raadzaam om een galvanische scheiding aan te brengen tussen de NMEA-gever en de ESP-01. Daarvoor heeft PCnautic een leuke uitvoering beschikbaar.

Er is inmiddels een nieuwe uitvoering van de ESP-01 op de markt gekomen met de aanduiding ESP-01S. Hardwarematig zijn er een aantal wijzigingen uitgevoerd waardoor het gebruik van pull-up weerstanden voor CH-PD, RST en GPIO0 niet meer nodig is. Ook de LED-configuratie is gewijzigd. Alle verschillen zijn uitvoerig beschreven op de website van CyberBlogSpot. De hier besproken esp-link firmware draait op beide modules.

Zip-bestanden van de Flash-tool en de esp-link firmware kun je hieronder downloaden:

Flash tool 2.4
esp-link-v3.0.alpha0

Aanvullende en meer gedetailleerde informatie over de ESP8266 kun je hieronder downloaden:

ESP8266-Getting Started
ESP8266-Datasheet
ESP8266-AT Commands Set
ESP8266_ESP32 Kolban
ESP8266_AT instruction set

Windows drivers (W7 & W8/10) voor de USB-serial converter die draait op de Prolific PL2303 chipset, kun je hieronder downloaden. Dit is een oude versie die nog steeds correct werkt:

Prolific V3.3.2.102 (24-09-2008)

AIS sample:

AIS nmea sample

Schematic diagram USB/ ESP-01 converter en het terminal-programma Termite:

USB to ESP-01 Adapter schematic
Termite

Firmware-updates:

Er zijn sinds het schrijven van het oorspronkelijke artikel in 2017 nieuwe firmware-updates van esp-link uitgekomen. Deze updates kun je eenvoudig uitvoeren via de webinterface van esp-link. Volg de aanwijzingen in het scherm “Upgrade firmware” en het proces wijst zichzelf.

esp-link v3.0.14
esp-link v3.2.47