ArduinoWifi
Voor dit project gebruik ik de ESP8266 ESP-01 Serial Wireless WIFI Module. Dit is een kleine printplaat met 8 connectoren om aan te sluiten.
Aan de buitenkand de GND en VCC, hier kruislinks naast de TX en RX. De 4 binnenste pins zijn voor CPIO0, CPIO2, CH_PD en RST.
![]() |
![]() |
ArduinoBreadboard
Niet echt een breadboard, maar een lijstje welke connectoren je waarop moet uitsluiten. De ESP moet met 2 raden op voeding worden aangesloten, op de CH_PD en op VCC. Voor de aarde is er maar een verbinding, GND. En dan moet de TX worden aangesloten op de TX ingang van de Arduino, en hetzelfde voor de RX.
ESP8266 ESP-01 | Arduino Uno |
---|---|
TX | TX - Pin 1 |
RX | RX - Pin 0 |
CH_PD | 3.3 V |
RST | Niet aangesloten |
VCC | 3.3 V |
GND | GND |
GPIO0 | Niet aangesloten |
GPIO2 | Niet aangesloten |
Meestal worden TX en RX kruislings aangesloten. Dat moet hier juist niet!
ArduinoSource code
Bij dit project hoort geen sourcecode. Wellicht wat raar? Maar we gaan toch echt deze WIFI module helemaal doen zonder source code, nouja bijna althans. We gaan werken met het 'lege' programma op de Arduino. Dit is enkel en alleen om te zorgen dat er geen ouder programma op de Arduino loopt, en ons bij de acties die we gaan doen in de in de weg zit.
Kies "Bestand" en dan "Nieuw". Je krijgt dan een programma met lege setup() en loop() functies. Deze mag je nu laden naar de Arduino.
ArduinoInteractie
We gaan met de Arduino communiceren, hiervoor gebruiken we geen programma. Zorg dat het standaard lege programma is geladen, dan heb je zeker verbinding met de Arduino.
Kies nu in het Arduino-menu onder "Hulpmiddelen" en dan "Seriële Monitor". Er komt een klein window op het scherm. Bovenin een lege regel en onderin een groot leeg vlak.

Hierboven hoe de interactie hier is beschreven. Na ingave van het commando moet je een ENTER geven.
ArduinoConnectie maken
Maak verbinding met de Arduino
AT
OK
ArduinoConnectie modus
Vraag op in welke modus de Arduino staat. Dit kan een 1, 2 of 3 zijn. 1=Client, 2=Host en 3=Beide.
De meeste devices staan vanuit de fabriek ingesteld, op 1=Client. Voor het gebruik is het handiger om het device in te stellen op 3=Beide.
De host is de 'baas' in de verbinding, de client is de 'gast' in de verbinding. Denk aan het verschil tussen een werkgever en werknemer. In de communicatie is het altijd belangrijk om te weten welke rol je hebt!
AT+CWMODE?
+CWMODE:1
We gaan de Arduino instellen op modus beide, zodat die zowel in client als in host mode kan werken.
AT+CWMODE=3
OK
ArduinoIP verbinding
Ons WIFI kaartje heeft een eigen IP adres. We gaan opvragen wat dit is. We krijgen dan 4 waarden terug.
AT+CIFSR
+CIFSR:APIP,"192.168.4.1"
+CIFSR:APMAC,"62:01:94:74:5c:42"
+CIFSR:STAIP,"0.0.0.0" <--- Nu nog leeg
+CIFSR:STAMAC,"60:01:94:74:5c:42"
In het antwoord staan 4 regels met op iedere regel een waarde. Op de eerste 2 regels staan de AP nummers. AP staat voor Access Point. Dit is het adres als het Wifi kaartje aan het uitzenden is om verbinding te maken met een server. Als de kaart als Client werkt dus.
De STA nummers staan voor Station, dit zijn de nummers als ons Wifi kaartje de Host is in de verbinding. Hier staat alleen een waarde in indien de Wifi kaart is verbonden met het Wifi netwerk. Als host dus.
Ieder van deze bevat een IP nummer en een MAC nummer.
Als ons kaartje is verbonden met het Wifi netwerk, dan zal het kaartje een vrij IP adres oppikken, dat dan het STAIP zal worden. Als er geen verbinding is (zoals nu waarschijnlijk) dan is de STAIP leeg.
Verbind met je eigen WIFI netwerk "HomeWifi" en geef het wachtwoord.
AT+CWJAP="HomeWifi","GaGewoonWeg"
WIFI CONNECTED
WIFI GOT IP
OK
Als je nu het opvraag commando opnieuw geeft, zul je zien dat het STAIP adres nu wel is ingevuld.
AT+CIFSR
+CIFSR:APIP,"192.168.4.1"
+CIFSR:APMAC,"62:01:94:74:5c:42"
+CIFSR:STAIP,"192.168.2.16" <--- Nu met IP adres
+CIFSR:STAMAC,"60:01:94:74:5c:42"
ArduinoInstellen als server
We gaan ons Wifi kaartje instellen als server. Maar eerst moeten we daarvoor opgeven dat er meerdere connecties tegelijkertijd met ons Wifi kaartje kunnen plaatsvinden. Het is immers een server.
AT+CIPMUX=1
OK
Wil je maar een (1) verbinding, dan geef je AT+CPMIX=0. Als je meerdere verbindingen toestaat, dan kunnen er maximaal 4 connecties tegelijkertijd gebeuren.
We gaan nu de Wifi kaart instellen als server. Hier moeten 2 waarden (parameters) aan worden meegegeven. De mode en de pport.
De mode kan een 0,1 zijn. 0=verwijderen als server, 1=maken als server. We kiezen hier de waarde 1.
De andere parameter is het poortnummer waarop we gaan sturen. Zeg maar het deurtje dat we gebruiken om binnen te komen. De standaard (default) waarde is 333. Wij gaan poort 80 gebruiken
AT+CIPSERVER=1,80
OK
0,CONNECT
We zijn klaar om te gaan verbinden. De kaart geeft aan dat er nog geen verbindingen zijn.
ArduinoVerbinden
Open nu een web browser en zoek verbinding met het STAIP adres. In het voorbeeld hierboven is dat 192.168.2.16.
Je browser heeft bovenin een regel waarin je normaal de URL ingeeft. Dit is het adres waar je heen wilt, dus www.google.nl, www.punthooft.nl etc. Geef hier nu gewoon het IP nummers in, en druk op enter.
Er zal op het eerste gezicht niets gebeuren, maar dat lijkt gewoon zo. Er gebeurd wel wat! We zien een lege pagina. En je zult zien dat de browser aan het laden is (en blijft). Geen paniek. Dat hoort zo, snel lees verder!
Toen we in de browser op de enter drukten, zagen we in de monitor van de Arduino (dat schermpje) opeens een tekst komen:
+IPD,0,354:GET / HTTP/1.1
Host: 192.168.2.14
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:65.0) Gecko/20100101 Firefox/65.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: nl,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
DNT: 1
Connection: keep-alive
Upgrade-Insecure-Requests: 1
Hieruit lezen we dat er een verbinding is gemaakt met een host (ons Wifi kaartje) op 192.168.2.14. Dat is het IP adres dat we hebben ingegeven.
We zien dat we komen via een Mozilla agent in Firefox vanaf een Mac die OS X 10.14 heeft. We zien dat de gebruiker als taalvoorkeur Nederlands (nl) heeft en als tweede taal Engels (en-US). We zien nog meer info, maar daar gaan we nu even niet op in.
De situatie is nu dat het Wifi kaartje voor host aan het spelen is. En de browser (Firefox) staat te wachten op een antwoord. De browser en het Wifi kaartje zien elkaar dus.
ArduinoVerbinden
We gaan wat terug sturen. De Arduino is nog steeds verbonden met de computer, dus we sturen van de computer een woord naar de Arduino. Die zet het door naar de Wifi kaart. Die stuurt et via je Wifi netwerk terug naar je computer, waar het in de browser zal komen. Pjoef.
We gaan het woordje "Hallo" sturen. Dit woord bestaat uit 5 letters. Hiervoor geven we onderstaand commando waarin we zeggen dat er op link 0 (de eerste link) maar liefst 5 tekens gaan sturen
AT+CIPSEND=0,5
OK
>
Verder gebeurd er even niets. Maar we zien dat de Arduino stat te wachten. Waarop? Op onze 5 tekens.
Achter het > teken kun je nu 5 tekens typen. "Hallo". En sluit af met een Enter
Hallo
busy s...
Recv 5 bytes
SEND OK
Mocht je meer letters hebben ingegeven, dan heb je pech. Enkel de eerste 5 tekens zullen worden meegenomen. Hij zal dat aangeven met recv (=received / ontvangen) 5 bytes, Ieder character is een byte. Het woordje Hallo is naar je browser verzonden.
In je browser zul je de tekens nog niet (!) zien. De server is immers nog vrolijk aan het zenden en de browser weet nog niet dat we klaar zijn. Misschien komt er meer dat de browser moet weten, dus die blijft vrolijk staan wachten. We moeten tegen de browser roepen dat we klaar zijn. We sluiten de verbinding op link 0.
AT+CIPCLOSE=0
0,CLOSED
Tegelijkertijd zullen we in de browser het woordje Hallo zien verschijnen.
We hebben onze eerste verbinding tussen de Wifi kaart en de browser gemaakt!
