Digitaal in duidelijke taal


[ARDUINO] Draadloos visitekaartje

Je hebt het vast wel eens zelf meegemaakt: je zit in een cafe of een flexwerkplek, maar je hebt geen internet. Dan ga je al gauw op zoek naar een draadloos netwerk in de buurt, maar die zijn bijna allemaal beveiligd. Je bent dan blij als je een onbeveiligd netwerk vindt, dat ook nog een beetje in de buurt is. Daar kun je natuurlijk ook op een andere manier gebruik van maken.

Voor dit project heb ik een WiFi-chip geprogrammeerd, die zich laat zien als onbeveiligd netwerk. De techniek die hiervoor gebruikt wordt, is dezelfde als bij een captive portal: zodra je met deze chip verbindt, krijg je van je laptop of telefoon de vraag of je je wil inloggen op het netwerk. Op het moment dat je daarop drukt, krijg je niet de verwachte inlogpagina, maar een HTML-pagina met jouw contactgegevens. Zo heb je je eigen draadloze visitekaartje gemaakt.

Benodigdheden:

 

 Computer algemeen

Aansluiten

Sluit de ESP8266 aan zoals in onderstaande afbeelding weergegeven:
ESP8266 FTDI
TXD RXD
RXD TXD
GPIO0 GND
GND GND
VCC VCC
CHPD VCC

Vlak voordat je code wil uploaden, moet de chip gereset worden. Dat doe je door RST te verbinden met GND. Het makkelijkst is dit door een schakelaar te plaatsen tussen RST en GND.

Code

#include <esp8266wifi.h>
#include <dnsserver.h>
#include <esp8266webserver.h>

const byte DNS_PORT = 53;
IPAddress apIP(192, 168, 1, 1);
DNSServer dnsServer;
ESP8266WebServer webServer(80);

void setup() {
  WiFi.mode(WIFI_AP);
  WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0));
  WiFi.softAP("Hier komt de naam van jouw netwerk");
  dnsServer.setTTL(0);
  dnsServer.setErrorReplyCode(DNSReplyCode::ServerFailure);
  dnsServer.start(DNS_PORT, "*", apIP);

  webServer.onNotFound([]() {
    String message = "Hier komt jouw HTML-pagina";

    webServer.send(200, "text/html", message);
  });
  webServer.begin();
}

void loop() {
  dnsServer.processNextRequest();
  webServer.handleClient();
}
Om de code op de ESP8266 te zetten, heb ik gebruik gemaakt van Arduino 1.6.11. Voeg onder File > Preferences de volgende URL toe voor Boards Managers: http://arduino.esp8266.com/package_esp8266com_index.json. Vervolgens kun je onder Tools > Board > Boards Manager zoeken op ESP8266, en het juiste board installeren. Daarna kun je onder Tools > Board, de Generic ESP8266 Module selecteren. Op https://github.com/esp8266/Arduino kun je de juiste libraries vinden. Zorg ervoor dat je ESP8266WiFi.h, DNSServer.h en ESP8266WebServer.h in de Arduino/Libraries map hebt staan.

Als je de code hebt overgenomen in de Arduino IDE, kies je voor Upload (Ctrl + U). De code zal gecompileerd worden, en daarna meteen worden geüpload. Voor het uploaden moet je ervoor zorgen dat de chip gereset is.

 

Resultaat

Als de code geüpload is, kun je testen of het werkt. Als het goed is, zendt de WiFi-chip de netwerknaam uit die je zelf hebt opgegeven in de code.

De netwerknaam die ik heb gekozen, heb ik er als volgt in gezet:
WiFi.softAP("Looking for me? xF0x9Fx91xBB");

Wil je ook icoontjes in je de netwerknaam? Kijk dan op http://apps.timwhitlock.info/emoji/tables/unicode voor de byte-code.

Maak vervolgens verbinding met het netwerk.




Als je eenmaal verbonden bent, zal Android vragen om in te loggen op het netwerk. Ook kun je gewoon zelf naar een willekeurig adres in je browser gaan.


Mijn wireless business card ziet er als volgt uit: