ESP8266 microcontroller als wifi-extender

Marco den Teuling
1

Inhoudsopgave

Je kunt de ESP8266 microcontroller gebruiken als goedkope wifi-extender voor toepassingen waarbij weinig bandbreedte nodig is. Dat kan zelfs helemaal zonder programmeren of geknutsel.

Vervelend dat die nieuwe slimme stekkerdoos voor in de tuin met zijn slechte interne wifi-­antenne de router in huis niet kan bereiken. Ook jammer dat de Raspberry Pi die in de meterkast staat om het energie­verbruik te meten alleen met een slakkengang op het netwerk komt. Moet je daar dan een stroomvretende en relatief dure repeater voor kopen?

Er is een alternatief: de ESP8266 wifi-microcontroller, populair bij hobbyisten, wordt een wifi-extender met de gratis opensource firmware van de GitHub-user Martin-­Ger. Een groot bereik en hoge datasnelheden moet je niet verwachten, want de ESP heeft slechts één antenne (SISO) en werkt uitsluitend op 2,4 GHz.

 

Wat is haalbaar?

Lage waarden in Mbit/s met dubbele cijfers zijn al ‘zeer goed’, als er veel radiosignalen in de omgeving zijn of obstakels, kom je wellicht niet verder dan een paar honderd kilobits per seconde.

Maar de ESP is wel zuinig: tijdens de tests voor dit artikel haalden we een energieverbruik van minder dan 0,5 watt bij een gemiddeld dataverkeer van 90 kbps. Een belangrijk verschil met de gebruikelijke wifi-extenders is dat de firmware niet werkt als een transparante repeater, maar in plaats daarvan als een NAT-router met een eigen subnet en andere wifi-toegangsgegevens.

Dat zorgt ervoor dat apparaten niet onnodig verbinding maken met het trage ESP-netwerk. Ongehinderde communicatie naar het ESP-netwerk werkt ondanks NAT via portforwarding of statische routes.

Doorlezen is gratis, maar eerst even dit:

Dit artikel is met grote zorg samengesteld door de redactie van c’t magazine – het meest toonaangevende computertijdschrift van Nederland en België. Met zeer uitgebreide tests en praktische workshops biedt c’t de diepgang die je nergens online vindt.

Bekijk de abonnementen   Lees eerst verder

Hardware en installatie

De ESP8266 is verkrijgbaar in allerlei uitvoeringen. De makkelijkste manier is een usb-versie zoals de Wemos D1 mini. Die kost ongeveer vijf euro en heeft zowel de signaalconverters als de usb-TTL-adapter die nodig zijn voor het programmeren, samen met de ESP op één printplaat.

Je hoeft daar verder niet voor te solderen. Eenmaal geprogrammeerd, kan de Wemos D1 mini rechtstreeks op een usb-voeding worden aangesloten. Hij verbruikt niet veel energie, dus je kunt daar een voeding voor gebruiken die anders toch maar niets ligt te doen in een bureaula vanwege te weinig ­vermogen.

In de zendmodus heeft het apparaat niet meer dan 0,6 watt nodig. Een usb-voeding van 200 milliampère is dus genoeg. Voor het installeren is een computer nodig met een usb-poort en een apparaat met wifi en een browser.


Meer lezen over geknutsel met microcontrollers? Blijf op de hoogte via onze nieuwsbrief:


Download eerst de twee firmwarebestanden 0x00000.bin en 0x02000.bin van de GitHub-reposi­tory en zet die in een map. Om de firmware naar de microcontroller te schrijven, heb je esptool nodig, een stukje software dat firmwarebestanden naar de ESP schrijft.

Bij macOS en Linux installeer je het via de Python-pakketmanager pip met het commando: sudo pip install esptool. Als het commando mislukt, probeer je het met pip3. Als dat ook mislukt, lees dan in de documentatie van je besturingssysteem hoe je pip of pip3 op je computer kunt installeren.

Nadat je esptool met succes geïnstalleerd hebt, sluit je de ESP via usb aan op je computer en bepaal je eerst het adres van de virtuele seriële poort via de commandline. Bij Linux kun je dat doen met sudo ls /dev/ttyUSB*, bij macOS met ls /dev/tty.*.

Als er geen andere seriële adapter aangesloten is, wordt de inter­face bij Linux gewoonlijk /dev/ttyUSB0 genoemd. Zoek in macOS naar ‘usbserial’ of iets dergelijks en noteer de volledige naam. Ga daarna naar de firmwaremap en voer het installatiecommando uit.

Vervang <port> door het eerder bepaalde poortadres. Pas de flashgrootte aan als je een andere ESP-hardwarebasis gebruikt. Hier gebruiken we 4MB voor de 4 MB van de Wemos D1 mini: esptool –port <port> write_flash -fs 4MB -ff 80m -fm dio 0x00000 0x00000.bin 0x02000 0x02000.bin

wifi-extender ESP8266

Nadat de firmware erop is gezet, kun je de Wemos D1 aan bijna elke usb-voeding hangen. Het energieverbruik is minder dan een halve watt.



Als je het Windows Subsystem for Linux (WSL) geïnstalleerd hebt, kun je onder Windows op bijna dezelfde manier te werk gaan. Je downloadt de bestanden met wget rechtstreeks naar je gebruikersmap (kopieer de downloadlink, wget <link>) of je navigeert met cd /mnt/c/… naar de betreffende Windows-map.

Windows geeft seriële poorten door aan /dev/ttyS<X>, waarbij <X> wordt vervangen door het COM-poort­nummer dat bij Apparaatbeheer te zien is. Daarna kun je esptool starten met de aangepaste parameters.

Als alternatief kun je onder Windows de Flash Download Tools van Espressif gebruiken met een grafische gebruikersinterface. Pak het gedownloade zipbestand uit en start de toepassing in de map. Selecteer de Developer Mode en bij het volgende venster ESP8266 DownloadTool.

Klik op de drie puntjes in de eerste regel en selecteer 0x00000.bin voor het eerste flashbestand. Voer in het veld rechts het geheugengebied in dat moet worden geschreven: 0x00000. Doe hetzelfde op de tweede regel met 0x02000.bin en 0x02000. Selecteer vervolgens de optie 32Mbit bij FLASH SIZE – wat overeenkomt met 4 MB – en de juiste poort bij COM.

Configuratie

op je computer openen en verbinding maken met MyAP en dus met de ESP. Ga naar http://192.168.4.1 met een willekeurige browser om toegang te krijgen tot de webinterface.

Wijzig eerst de AP Settings (Access Point) naar een configuratie met encryptie (bevestig met Set) om te voorkomen dat de toegangsgegevens van je thuisnetwerk onversleuteld via wifi verzonden worden.

Maak vervolgens verbinding met de ESP met die nieuwe toegangsgegevens om de interface weer op te roepen en voer de toegangsgegevens in van je thuisnetwerk bij de STA Settings (Station).

Bevestig de instellingen met Connect, dan is de ESP-repeater klaar voor gebruik. Optioneel kun je de webinterface van de repeater ‘vergrendelen’, zodat de configuratie alleen kan worden gewijzigd na het invoeren van de WPA2-sleutel (Lock Config).

Je hebt vanaf je thuisnetwerk en vanaf het ESP-netwerk toegang tot de webinterface en de telnet-interface. Het ip-adres van de ESP-repeater in je thuisnetwerk kun je meestal vinden in de lijst met clients van je router.

De telnet-interface op poort 7777 kan veel meer dan de webinterface. Je kunt bijvoorbeeld de led uitschakelen om het toch al lage energieverbruik nog wat verder terug te dringen. Maak verbinding via een commando: telnet <ip-adres> 7777.

Gebruik help om een lijst met commando’s weer te geven, waaronder set ­status_led. Gebruik dat om te configureren via welke GPIO de firmware de status-led aanzet. Om die uit te schakelen, zet je de waarde op 17: set status_led 17. Wil je dat dat dergelijke wijzigingen in het live-systeem reboots overleven, dan moet je ze met save naar het configuratiegeheugen schrijven.

Diensten forwarden en routing

Standaard wordt netwerkadresomzetting (NAT) gebruikt om verkeer van het afzonderlijke ESP-subnet (192.168.4.0/24) naar je thuisnetwerk te leiden. Je router en de apparaten in je thuisnetwerk weten niets over dat subnet en zien alleen het ip-adres van de ESP in het thuisnetwerk.

Als de apparaten aan de ESP alleen uitgaande verbindingen maken, is die configuratie voldoende. Als er echter diensten op het ESP-subnet draaien die bereikbaar moeten zijn, moet je portforwarding instellen op de ESP of een statische route in je router configureren zodat de dienst bereikbaar is vanaf het thuisnetwerk.

Je stelt portforwarding via telnet in op de ESP met portmap add <externe poort> <ip-adres van apparaat op ESP-subnet> <poort van dienst op apparaat in ESP-subnet>.

Daardoor kun je de dienst makkelijk bereiken via het ip-adres van de ESP-repeater in het thuisnetwerk (bijv. 192.168.2.25) op de externe poort (bijv. 80 voor een webserver). Vergeet niet om de port-share op te slaan met save.

ESP8266 webinterface firmware

De webinterface van de firmware is eenvoudig en biedt alleen de basis. Via de uitgebreidere telnet-interface kun je extra instellingen configureren.

Als je router statische routes ondersteunt, kun je de ESP ook als router aanwijzen tussen je thuisnetwerk en het ESP-subnet, zodat apparaten op je thuisnetwerk clients in de 192.168.4.0/ 24-adresruimte rechtstreeks kunnen bereiken.

Om dat te doen, maak je eerst een DHCP-adresreservering voor de ESP, zodat die altijd hetzelfde ip-adres krijgt. Bij een Fritzbox-router heet die optie bijvoorbeeld ‘Altijd hetzelfde IPv4 adres aan dit netwerkapparaat toewijzen’.

Je kunt die vinden bij ‘Thuisnetwerk / Netwerk’ via het bewerken-pictogram bij het betreffende apparaat. Raadpleeg indien nodig de instructies van je router voor meer informatie.

De statische route bestaat uit het doelsubnet (hier 192.168.4.0), het bijbehorende subnetmasker (255.255.255.0 of /24) en de te gebruiken gateway (het ip-adres van de ESP in het thuisnetwerk). Bij FritzOS kun je een statische route instellen bij ‘Thuisnetwerk / Netwerkinstellingen / IPv4 Routes’.

Deactiveer tenslotte de netwerkadresomzetting via de telnet-interface met set nat 0 en sla opnieuw op met save. Om je configuratie te controleren, kun je vanaf het thuisnetwerk 192.168.4.1 pingen, het ip-adres van de ESP in het tweede subnet.

Ideaal voor IoT

De routerfirmware maakt van de ESP8266 geen perfecte oplossing voor het draadloze thuisnetwerk. Maar voor het integreren van IoT-apparaten die weinig rekenkracht en nauwelijks dataverkeer vergen op het thuisnetwerk, is het volstrekt toereikend en enorm zuinig.

De firmware heeft nog een aantal netwerkfuncties – de volledige docu­mentatie is te vinden in de GitHub-repository van de ontwikkelaar.

(Deze informatie is afkomstig uit het artikel van Andrijan Möcker en Marco den Teuling uit c’t magazine 10/2021, p. 138. Online bewerking door Alieke van Sommeren)

Meer microcontroller-artikelen lees je in c't magazine nov/2021

Deel dit artikel

Lees ook

RISC-V programmeren: met platform IO en microcontrollerboard

Een instap in de wereld van de opensource technologie RISC-V hoeft niet veel te kosten. We hebben het RISC-V-board Longan Nano uitgeprobeerd met Platf...

Wifi controller voor wifi-netwerken: vier oplossingen getest

Soms zijn repeaters of mesh-wifikits niet de juiste oplossing, bijvoorbeeld als je overal snel wifi wilt maar met meerdere gescheiden zones. We bekijk...

1 Praat mee
avatar
  Abonneer  
nieuwsteoudste
Laat het mij weten wanneer er
WizzOldy
Lezer
WizzOldy

Toevallig bereikte mij gisteren een mailing via de website op Facebook ESP8266 ESP32 for Beginners een link die verwees naar een heel handig overzicht wat er aan ESP32 familie ondertussen was uitgekomen, voor bijvoorbeeld LoRa toepassingen.

De ESP8266 is intussen al behoorlijk verouderd, men moet externe tools aanschaffen welke de ESP32 in zich heeft zoals WiFi, de ESP32 heeft 2 onafhankele kernen die men onafhankellijk van elkaar programmeert, en veel meer voordelen die de ESP8266 gewoon niet in zich heeft.

Voor het zeer complete excel gelijke overzicht zie de onderstaande link.

https://docs.google.com/spreadsheets/d/1Mu-bNwpnkiNUiM7f2dx8-gPnIAFMibsC2hMlWhIHbPQ/edit#gid=0