ESP8266 WIFI
Inhoud
aansluiten
De FTDI moet als volgt aangesloten worden:
ESP-01 Dit is de oorspronkelijke ESP8266 Wifi dongle. Deze is altijd bedoeld als "Serial to Wifi" converter en heeft daarmee weinig GPIO pinnetjes naar buiten doorgevoerd. Alleen GPIO02 en GPIO00 zijn doorgevoerd. Hierbij geldt dat GPIO00 naar ground getrokken moet worden wanneer men wil programmeren. 3v -- 3v
gnd -- gnd
RX -- TX
TX -- RX
CH_PD -- hoog trekken via een 10k resistor
Andere ESP bordjes
Voor de ESP bordjes met meer pinnen zullen er nog een paar extra dingen gedaan moeten worden wil de ESP werken:
GPIO15 - Ground GPIO16 verbinden met Reset Als men van Deep Sleep gebruik wil maken.
arduino library
https://github.com/tuanpmt/espduino
Spelen
op het moment dat je met het chipje kan praten via serieel.
listen van ap's
hiervoor moet je in mode 1 of 3 staan.
AT+CWMODE List de mode
AT+CWMODE=<mode> zet de mode op 1, client of 2, AP, of 3 Both.
AT+CWLAP list de AP
join een accesspoint
AT+CWMODE=1
AT+CWJAP=<accesspoint name="">,<password>
AT+CIFSR check je ip settings
open een socket
zodra je gejoined bent
tcp pakketje versturen
op linux doosje
ip a => chech ipnummer nc -l 8000 => open tcp listener
op chipje
AT+CWJAP="MakerSpaceLeiden_gast","<pw>" OK AT+CIFSR +CIFSR:STAIP,"192.168.3.168" +CIFSR:STAMAC,"18:fe:34:9f:3f:96" OK AT+CIPMUX=0 OK AT+CIPSTART="TCP","192.168.3.129",8000 CONNECT OK AT+CIPSEND=11 > Hello World busy s... SEND OK OK AT+CIPCLOSE CLOSED
let op 11 is hier de lengte van de string.
Firmware flashen
esptool.py --port /dev/tty.usbserial-ftdi write_flash 0x00000 0x00000-oled-mks.bin 0x40000 0x40000-oled-mks.bin. Hiervoor is het nodig om zowel GPIO00 als Reset even naar de ground te trekken. Het is handig om hier kleine drukknopjes voor te gebruiken die in een breadboard passen. Serial dongles met een CTS/RTS/DTR aansluiting zouden de chip zelf moeten kunnen aansturen. Bij de knopjes is de volgende procedure het handigst. Druk GPIO00 in en hou deze ingedrukt, vlak voor de upload, vervolgens kort een reset geven en GPIO00 loslaten. Dit zou de chip in de programmeerstand moeten staan.
Arduino IDE om ESP te programmeren
Er is een aangepaste versie van de arduino IDE om de de ESP direct te programmeren: https://github.com/esp8266/Arduino.
Deze is vooral erg makkelijk te gebruiken met de boards manager in arduino > 1.6.4. (Met de library manager kun je gelijk een mqtt library instaleren)
zo is het mogelijk om de GPIO, van de ESP, aan te spreken en bijvoorbeeld MQTT te gebruiken (via de arduino library pubsubclient) zonder een arduino te gebruiken.
voor de ESP-03 versie werkt het pas nadat een oudere Firmware geflashed is (blank.bin in 0X0000 van versie 0.9.4). zie forum: http://www.esp8266.com/viewtopic.php?f=32&t=2275
Lua/NodeMCU
Er is een alternatieve firmware ontwikkeld [1], waarmee de Lua interpreter wordt geïmplementeerd. Lua is een vriendelijke taal, maar Lua op de ESP8266 werkt niet echt goed voor grotere projecten. De hoeveelheid flashgeheugen en interne RAM is vrij beperkt en men loopt met MQTT en andere dingen snel tegen de grens aan. Daarnaast lijkt het platform steeds minder actief ontwikkeld te worden (misschien heeft de maker de Arduino ESP8266 ontdekt?).
Lua is wel een prachtig taaltje met diverse hogere functies en abstracties, terwijl de performance vergelijkbaar is met veel low level talen.
Aandachtspunten voor de ESP8266
De ESP8266 is een verdacht krachtig chipje en zeker in combinatie met de Arduino IDE kunnen heel veel dingen gedaan worden zonder een extra bord in de vorm van een arduino/launchpad of STM32 (en wat er nog meer op de markt is). Er is wel een aantal dingen waar je op moet letten bij de ESP:
- Het chipje is erg gevoelig voor een slechte voeding. Er zit veel dynamiek in de stroom tijdens slaap/rust en daadwerkelijk uitzenden. Kies batterijen met een lage inwendige weerstand. Na meerdere projecten met deze chips gedaan te hebben is de conclusie dat een significant deel het resultaat is van een niet passende voeding.
- Er is veel verandering en het is een actief ontwikkeld platform. Het loont om regelmatig te kijken naar de sites. Inmiddels (24 mei 2015) zit de ESP8266 SDK op versie 1.0. Arduino ESP8266 wordt ook op wekelijkse basis bijgehouden.
Further Reading
de ESP8266 is een wifi microcontroller die gebruikt kan worden om de arduino aan het internet te hangen of ook zelfstandig als messagebus te functioneren. Een aantal mensen hebben deze al in bestelling. Hier alvast wat links voor later onderzoek.