Een WiFi-schakelaar voor 3 dollar – die het ook doet

31 oktober 2019, 00:00
Puur uit nieuwsgierigheid bestelde ik bij aliexpress.com een klein ESP8266-relaisprintje, voor bijna niets – in zalige onwetendheid van de moeite die het zou kosten om het ding te laten doen waarvoor het verkocht werd. Veni, vidi en (uiteindelijk) vici – dit is mijn verhaal.

Bera Somnath (India)

Het kleine dingetje dat in figuur 1 is afgebeeld, zou volgens de verkoper(s) voorzien moeten zijn van een ingebouwd schakelprogramma, dus ik hoefde alleen maar “een of andere Android-smartphone te gebruiken om het te bedienen”. Helaas – ik heb verschillende Chinees- en Engelstalige Android-apps uitgeprobeerd, maar het ding deed het voor geen meter... Oké, het apparaatje krijgt verbinding met de WiFi van mijn PC of laptop als server en met het dynamische IP-adres lukt het ook nog – maar daarna gebeurt er niets meer. Een serverpagina is in geen velden of wegen te bekennen. Compleet gefrustreerd besloot ik dan maar mijn eigen programma te ontwikkelen en in het stomme ding te laden!

Figuur 1. WiFi-relaisprintje van aliexpress. Hardware: oké; kosten: oké; software: nulkommaniks.

Het begin

Ik heb de schakelaar opnieuw geprogrammeerd om verbinding te maken met mijn WiFi-router met een vast IP-adres en een vaste poort, zoals hier: 192.168.1.99 en poort 8083. Eenmaal aangesloten gedroeg het bord zich als een webserver op http://192.168.1.99:8083 en de ‘switch’ was zichtbaar in de browser. Het indrukken van de aan- of uit-knop zorgde ervoor dat die het corresponderende gedrag vertoonde. Voor de eenvoud heb ik een refresh-teller en een relais-statusindicatie toegevoegd om de stand van het relais (dat wil zeggen aan of uit) te kunnen zien.

Plan van aanpak

Daarna heb ik in mijn DSL-router ‘port forwarding’ van de 8083-poort ingesteld naar de 8083-poort van de “192.168.1.99”-computer (dus het relaisprintje) dat erop wordt aangesloten. Zodra u het externe IP-adres van uw router kent, kun uw er zo ongeveer van de andere kant van het universum verbinding mee maken – zo simpel! Maar de vraag is, hoe komt u het externe IP-adres van uw router te weten? Da’s niet moeilijk: u vraagt uw zoon, dochter of uw echtgenote om de configuratiepagina van de router te openen, naar het tabblad Status te gaan en het IP-adres van de router te lokaliseren – bij de meeste DSL-routermodems gaat dat zo. Wanneer uw laptop, desktop of mobiele telefoon worden verbonden met uw WiFi-netwerk, krijgen die een IP-adres dat als identiteitsbewijs voor dat apparaat in het WiFi-netwerk geldt. Ook uw DSL-router krijgt een IP-adres wanneer hij verbinding maakt met het internet, en dat is het adres waarom het hier gaat.

Maar in Bera’s wondere wereld der elektronica is er geen gebrek aan problemen! Het externe IP-adres van een router verandert vaak – tot 10 keer per keer per keer is niet ongewoon. Dus eigenlijk hebt u een huisknecht nodig die de modem permanent in de gaten houdt en u 10 keer of vaker per dag dat IP-adres toeroept – zou het niet mooi zijn als u uw kat of hond dat kunstje kon leren...

Maar waar een probleem is, is ook een oplossing – tenminste in de wereld van de elektronica. Als u een probleem kunt formuleren en dan kunt vereenvoudigen, bent u al een eind op weg naar de oplossing. Gelukkig hebben de meeste standaard-DSL-modems een ingebouwde DDNS (Dynamic DNS) tracking-mogelijkheid. U geeft gewoon de naam van de DNS host-server op, de DNS-naam en alle andere autorisatiegegevens, en de modem zal de wijzigingen van het externe adres zelf bijhouden. U moet alleen maar de DNS-naam die u hebt geregistreerd bij de site van de DNS host-server uit uw geheugen opgraven en de forwarding-poort in de modem – in mijn geval is dat berapi.ddns.net:8083 van noip.com. In figuur 2a en figuur 2b ziet u mijn instellingen.

Figuur 2a. Port forwarding bij de D-Link modem.
Figuur 2b. Dynamische DNS-sen bij de D-Link modem.

Architectuur

Bij de basisuitvoering van de ESP8266 – ook wel ESP-01 geheten – steken er 8 pinnen uit de print (figuur 3). Maar als u goed kijkt, ziet u dat de chip in totaal 32 pinnen heeft. Oftewel: omwille van de eenvoud worden de andere pinnen op dit printje door de fabrikant niet gebruikt. Het 5V-relais is via een schakeltransistor verbonden met de GPIO0-pin. Wanneer GPIO0 laag wordt, wordt het relais geactiveerd; en het relais wordt natuurlijk uitgeschakeld wanneer de GPIO0 hoog wordt. Op de print is een gewone 3,3V-regelaar gemonteerd die volkomen tevreden is met 7...9 VDC op zijn VCC-aansluiting.

Figuur 3. De basisuitvoering van de ESP8266 (ESP-01) heeft 8 aansluitingen die via headerpinnen toegankelijk zijn.

Programmer

Dit is eigenlijk het eenvoudigste deel van het project. U hebt alleen een programmer nodig om dit wondertje te programmeren! De programmer doet niets anders dan de Arduino-sketch via de USB-poort van de computer naar de ‘hersenen’ in de ESP8266-chip over te brengen. Het CP2102-board van FTDI is bij aliexpress voor iets meer dan een dollar verkrijgbaar. Als u een functionerend Arduino UNO-board bij de hand hebt, kun daarmee ook de sketch naar het mirakel te uploaden. De aansluitingen voor beide types zijn weergegeven in figuur 4 en figuur 5. Wanneer u de reset-pin van de Arduino aan massa legt, fungeert de Arduino UNO in de praktijk als een USB/serieel-converter zoals de FTDI CP2120!

Figuur 4. Het laden van de sketch met behulp van de FTDI USB/serieel-omzetter.
Figuur 5. Als alternatief voor figuur 4: het kan ook met een Arduino UNO-board.

In beide gevallen hebben we voorzien in een Push-to-On schakelaar, die ongeveer 10 seconden ingedrukt moet worden gehouden tijdens het uploaden van de sketch. Laat na die 10 seconden de knop weer los; de sketch is dan na ongeveer 60 seconden geladen. Alle LED’s op het FTDI-printje knipperen dat het een lieve lust is terwijl de sketch wordt geladen.

Uitvoer van het programma

De programmasketch is als gratis download beschikbaar via de projectpagina bij dit artikel. Vervang het WiFi-ID en het wachtwoord door uw WiFi-ID en wachtwoord en upload de schets door in de Arduino IDE op de gelijknamige knop te drukken (ga naar Sketch Upload).

Figuur 6 toont de uitvoer van ons mirakeltje nadat de sketch was geladen en DDNS en port forwarding goed liepen. Door deze in een willekeurig browservenster op een Android- of Apple-smartphone waar ook ter wereld in te voeren, zal het relais het indrukken trouw volgen.

Figuur 6. De mini-relaisschakelaar van de auteur in actie op een eigen webserver.

Onderdelenlijst en prijzen

Prijzen van aliexpress.com zoals die op het moment van schrijven golden.

  • FTDI USB/serieel-converter CD2120: $1,02 (optioneel)
  • WiFi ESP8266-relais: $1,85

Totale kosten nog geen $3,00 (exclusief 5V-voeding)

 

Nawoord

Het enige wat nu nog moet gebeuren is de verbinding te beveiligen, anders kan iedereen die de URL van de switch kent het relais bedienen, met alle gevolgen van dien. Ik vermoed dat u daar meteen mee aan de slag gaat – ik wens u veel succes!

(180724-04)

 

 

----------------------------------------------------------------------------------------------------------------------------------------------------

Wilt u meer van die fantastische Elektor-artikelen?

 

--> Neem vandaag nog een abonnement op Elektorlabs - u mist nooit meer een artikel, project of handleiding!

----------------------------------------------------------------------------------------------------------------------------------------------------


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Reacties worden ingeladen...
gerelateerde items