ESP8266 WIFI

Uit MakerSpace Leiden
Ga naar: navigatie, zoeken

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.