ESP8266 WiFi mooduli programmeerimine

ESP8266 moodul on populaarne kuna sisaldab endas nii mikrokontrollerit kui ka sissehitatud WiFi tuge olles seejuures hästi kättesaadav ning soodne. Eriti suurt rolli mängib see IoT seadmete iseehitamises kuna kõik on mugavalt ühes moodulis koos. Populaarne arendusplaat NodeMCU on samuti ehitatud ESP8266 baasil.

Käesolevas artiklis kasutan konkreetselt ESP8266 ESP-07 moodulit aga sama skeem töötab ka näiteks ESP-12 mooduliga. Arvutiga ühendamiseks kasutan CP2102 adapterit mille abil laen näidisprogrammi ESP8266 peale. Et Arduino arenduskeskkonnaga (IDE) saaks ka ESP8826 mooduleid programmeerida peame sellele kõigepealt vastava toe lisama. Arendusplaadi lisamine on mugav lahendus neile kes on harjunud Arduino arenduskeskkonda kasutama. Kuigi Arduino keskkonnale toe lisamine pole ainus võimalus selle mooduli programmeerimiseks keskendun siin siiski vaid sellele.

Tähele tasuks panna, et algselt on moodulil peal AT käske toetav Espressif firmware. Peale emaskordet programmi peale panekut see tugi kaob ja selle taastamiseks peab selle uuesti peale flashima.

ESP8266 toe lisamine Arduino arenduskeskkonda

Alates versioonist 1.6.4 saab arendusplaatide (Boards) tugesid lisada paari lihtsa sammuga. Kindlasti olete märganud, et saate (Tools -> Boards) menüüst valida millisele Arduino plaadile te programmi peale panete. Nüüd lisame sinna juurde ESP8266 arendusplaatide valikud.

Arduino IDE arendusplaatide valik (boards)
Arduino IDE arendusplaatide valik (boards)

Kõigepealt peame Arduino IDE-le selgeks tegema, et kust leiab ESP8266 arendusplaatide toe. Selleks tuleb avada menüüst File -> Preferences ning Settings vahelehelt leida Addional Boards Manager URLs väli. Selle välja taga on kastike millele klikates avaneb aken kuhu saab lisada pakkide aadresse. Lisame sinna uue reana “http://arduino.esp8266.com/stable/package_esp8266com_index.json” ja salvestame muudatused.

Arduino arenduskeskkonda esp8826 plugina lisamine- samm 1
Arduino arenduskeskkonda esp8826 paki lisamine

Nüüd teab “Boards manager” ka ESP8266 arendusplaatide valikust. See tuleb veel alla tõmmata/aktiveerida. Selleks tuleb minna menüüs Tools -> Board -> Manage boards ja otsida sealt üles ESP8266 sektsioon ning vajutada “Install”. Pärast edukat installeerimist peaks tekkima Boards ehk arendusplaatide menüüsse mitmeid ESP8266 arendusplaatide variante.

Arduino arenduskeskkonda esp8826 toe lisamine. Allalaadimine ning aktiveerimine
Arduino arenduskeskkonda esp8826 toe lisamine. Allalaadimine ning aktiveerimine

Nüüd peaks kõik valmis olema selleks, et arenduskeskkonnas saaks wifi moodulile programmi peale laadida. Kui pole kindel mis mooduliga täpsemalt tegu on või pole vastava mooduli varianti valikus võib valida plaadiks “Generic ESP8266 Module“. Seda teen ka käesoleva ESP-07 mooduli puhul.

Generic ESP8266 Module arendusplaadiks valimine
Generic ESP8266 Module arendusplaadiks valimine

 

Mooduli käima panek

esp8266 ESP-07 ja ESP-12 pinout
esp8266 ESP-07 ja ESP-12 pinout

Kuna see moodul pole täislahendus nagu seda on näiteks NodeMCU vajab see stabiilsemaks tööks lisakomponente. Toiteks tuleks kasutada välist 3.3V toidet mis ideaalis suudaks anda vajadusel välja kuni 1A voolu. Lisaks tasub panna toite peale suurem elektrolüütkondensaator (nt 470μF) ning väike 0.1μF keraamiline kondensaator (võimalikult mooduli lähedale). Nii on kõige kindlam, et flashimisel või töötamisel müstilisi probleeme ei tekiks. Tehniliselt saab ka ilma kondensaatoriteta hakkama. Vaja läheb veel takisteid 4tk (näiteks 10 kOhm) ning RESET nuppu. Tegelikult töötab moodule ka siis kui need takistid vahelt ära võtta. Neid takisteid kasutatakse vajalikel klemmidel pinge üles või alla tõmbamiseks. Nende eesmärk on ära hoida sisendi „ujumine“ staatilise elektri ning muude võimalike häirete tõttu. Nupu võib asendada ka muidugi lihtsalt juhtmega mida vajadusel saab ühendada. Tulemuseks on alljärgnev skeem.

ESP8266 ESP-07 ja ESP-12 mooduli miinimum ühendused
ESP8266 ESP-07 ja ESP-12 mooduli miinimum ühendused

ESP8266 moodulitel on aukude/jalgade vahe 2mm (SMD moodul) mitte 2.54 nagu näiteks jootevaba prototüüpimisplaatidel. Moodulil puuduvad eelnevalt joodetud jalad. Seega tuleb ka need ise joota kasutades näiteks traadi või juhtmejuppe. Tegelikult on olemas ka spetsiaalsed vaheplaadid selle probleemi lahendamiseks. Vaheplaadil on ka takistid olemas. Kuna minul polnud kohe käepärast vahetükki sai see kiirelt ise kokku joodetud, et mugavam oleks mooduliga ümber käia. Vahetükile sai lisatud kohe külge takistid, keraamiline kondensaator ja RESET lüliti.

ESP8266 kiirelt kokkujoodetud vahetükk/adapter
ESP8266 kiirelt kokkujoodetud vahetükk/adapter

 

CP2102 adapteri ja ESP8266 ühendamine

Nüüd võib asuda adapterit ühendama ning lisada klemmile GPIO2 testimiseks üks LED. Näidiskood kasutab seda väljundiks. Kuna CP2102 on 3.3V loogikapingega võime selle ühendada otse ESP mooduli külge. Allolev skeem näitab kõiki ühendusi mida on vaja, et näidiskoodi saaks peale laadida. BOOT lüliti võib asendada samuti juhtmega mille saab vajadusel maaga (GND) ühendada.

ESP8266 mooduli ühenduskeem programmeerimiseks ja kasuutamiseks koos LED-iga.
ESP8266 mooduli ühenduskeem programmeerimiseks ja testimiseks koos LED-iga

Kui teil on olemas serial adapter mis töötab 5V loogikapingega (või pole kindel mis pingega) siis peab vahele lisama serial ühenduse vahele loogikapinge muunduri.

Programmi peale laadimine ja näidiskood

Programmi peale laadimiseks tuleb lüliti BOOT liigutada sellisesse asendisse, et GPIO0 klemm oleks ühenduses maaga (GND). See tähendab, et kui adapter teeb restarti moodulile siis läheb see käima see flashimise režiimis. Arduino arenduskeskkonda kopeerida alljärgnev kood ning vajutada ülesaadimise nuppu.

void setup() {
  //GPIO2 klemmi määrame väljundiks
  pinMode(2, OUTPUT);
}

void loop() {
  //GPIO2 klemmi määrame pinge 3.3V peale, ehk loogika HIGH/kõrge - LED läheb põlema
  digitalWrite(2, HIGH);

  //ootame 1 sekundi (1000 mikrosekundit)
  delay(1000);
  
  //GPIO2 klemmi määrame pinge 0V peale, ehk loogika LOW/kõrge - LED kustub
  digitalWrite(2, LOW);

  //ootame 1 sekundi (1000 mikrosekundit)
  delay(1000);

  //Nüüd hakkab programm otsast peale loop() algusest
}

Kui programmi pealelaadimine moodulile oli edukas siis peaks terminalist avanema alljärgnev pilt. BOOT lüliti võib liigutada tagasi tavalisse asendisse ning moodulile võib teha restardi.

Üleslaadimine ESP8266 moodulile lõpetatud
Üleslaadimine ESP8266 moodulile lõpetatud

Mis edasi?

Antud artiklis andsin ülevaate esimestest sammudest millega alustada. Järgmine kord kirjutan sellest kuidas moodul internetiga ühendada. Märksõnaks oleks ka IoT ja andmete pilves hoidmine. Järgmine artikkel asub siin: “ESP8266 WiFi mooduli programmeerimine – salvestame andmed pilve“.