Tilasin AliExpressistä kaksi NodeMCU ESP-12E mikrokontrolleria, jotka perustuvat ESP8266 kehitysalustaan.
Kyseisessä mallissa on 4MB flash-muisti ja yhteensä 11 GPIO pinniä erilaisia sensoreita ja lisäosia varten. ESP:ssä on USB-serial muuntaja ja virtansa se ottaa micro-USB -liittimestä. Ohjelmakoodin lataaminen laitteeseen on helppoa, sillä se onnistuu suoraan Arduino IDE:n kautta.
Arduino IDE:n lataus Windowsille, Linuxille ja Macille: https://www.arduino.cc/en/Main/Software?
Löytyy myös esimerkiksi Debianin apt-pakettivarastoista.
ESP-12E:n lisääminen käyttöönotto Arduino IDE:ssä:
Aluksi pitää lisätä erillinen Board-manageri Arduino IDE:een, joka kattaa eri ESP-sarjan mikrokontrollerit. Tämä tapahtuu navigoimalla: Tiedosto > Asetukset
Kohtaan Additional Boards Manager URLs laitetaan:
http://arduino.esp8266.com/versions/2.4.1/package_esp8266com_index.json
Sitten OK.
Seuraavaksi navigoidaan Työkalut > Kortti: X > Boards Manager…
Etsitään hausta esp8266 by ESP8266 Community ja asennetaan se:
Sitten tökätään ESP-12E kiinni tietokoneeseen USB:lla:
Kun laite on yhdistetty, valitaan kortiksi NodeMCU 1.0 (ESP-12E Module).
Kortin lisäksi, pitää ilmoittaa, missä COM-portissa se on kiinni. Sen voi tarkistaa Laitehallinnan kautta Portit (COM ja LPT) alta.
Oma ESP-12E näkyi COM6-portissa nimellä Silicon Labs CP210x USB to UART Bridge. Valitaan sama portti myös Arduino IDE:ssä Työkalut > Portti
Lisäksi itse ainakin korotin latausnopeutta. Muuten ohjelmakoodin lataaminen ESP:n FLASH-muistiin kestää ikuisuuden oletusnopeudella 9600 baud.
EDIT: Valmistaja kehottaa itse käyttämään 9600 baud ratea. Itse olin kuitenkin kärsimätön, enkä jaksanut odottaa lataamista niin kauaa.
Laite on nyt asennettu oikein ja voidaan siirtyä ohjelmointiin.
Ohjelmakoodi:
Esimerkkinä käytin techtutorialsx:n koodia verkkoon yhdistämisestä: https://techtutorialsx.com/2016/07/16/esp8266-connecting-to-a-wifi-network/
#include // WLAN information: const char* ssid = "SSID"; const char* password = "salasana"; void setup (){ Serial.begin(115200); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); Serial.println("Connecting.."); } Serial.println(WiFi.localIP()); } void loop() { // put your main code here, to run repeatedly: }
Verkon tiedot, eli SSID ja salasana on tallennettu muuttujiin ssid ja password. Const, eli consant-muuttujat eivät koskaan muutu, sillä ne ovat READ-only.
Serial.begin(115200); määrittelee serial-yhteyden nopeuden.
Ohjelma printtaa serial-monitoriin tekstiä “Connecting…”, kunnes ESP on yhdistänyt verkkoon. Verkkoon yhdistämisen jälkeen, se printaa DHCP-palvelimelta saamansa IP-osoitteen.
Ennen ohjelman lataamista, kannattaa compilata koodi painamalla Varmista-nappia. Ohjelma kyllä käännetään myös lähetyksen yhteydessä, mutta tässä vaiheessa on hyvä tarkistaa, ettei koodissa ole virheitä.
Ohjelmakoodin lataaminen ESP-12E:lle:
Seuraavaksi lähetetään koodin ESP:lle painamalla Lähetä-painiketta. Ikkunan alaosassa näkyy latauksen eteneminen ja mahdolliset virheet koodissa.
Lataamisen aikana ESP:n sininen LED-valo vilkkuu.
Heti, kun ohjelma on ladattu [100%], avataan sarjamonitori navigoiden ylävalikosta: Työkalut > Sarjamonitori. Huomaa, että tekstit tulevat sarjamonitoriin reaaliaikaisesti, eli jos avaa sen liian hitaasti, niin kaikki merkinnät ovat jo saattaneet mennä tämän kaltaisessa koodissa, jossa mitään tietoa ei printata uudelleen ja uudelleen.
Jos serial-monitoriin tulee ihmeellisiä merkkejä, kannattaa tarkistaa, että serial-monitorin baud-rate vastaa ohjelmakoodissa asetettua. Tämän jälkeen kannattaa ladata koodi uudelleen.
Latasin koodin uudelleen ja avasin sarjamonitorin.
ESP yhdisti kotini langattomaan verkkoon parissa sekunnissa ja sai IP-osoitteekseen 192.168.1.8.
Testasin sen liikennettä pingaamalla sitä omalta tietokoneeltani:
ICMP-paketit meni läpi molempiin suuntiin, eli langaton yhteys toimii.
Tarkoituksena olisi jossain kohtaa tehdä näistä kahdesta hankkimastani ESP:stä eräänlainen summerisysteemi, jossa toisessa on kiinni nappi, jota painamalla ESP lähettää HTTP POST -viestillä tai MQTT-protokollalla tiedon napin painamisesta palvelimelle (Raspberry Pi 3), josta toinen ESP sitten hakee tiedon napin painamisesta ja hälyttää summerilla äänimerkin.
Lähteet:
WiFi-verkkoon yhdistäminen:
https://techtutorialsx.com/2016/07/16/esp8266-connecting-to-a-wifi-network/