Циљ вежбе


Научити како да се повежете на WiFi уз помоћ микроконтролера Arduino и како да размењујете податке преко WiFi-ја


Задаци вежбе

1. Прикључити као подршку микроконтролер NodeMCU на бази WiFi модела ESP8266
2. Написати скеч за повезивање на WiFi мрежу и за бежични пренос података


Инструменти за испуњавање вежбе

1. Умрежени рачунар
2. Микроконтролер NodeMCU V3 на бази ESP8266 - 12E


Теоријски део 

Платформа NodeMCU направљена је на бази модела WiFi ESP8266. 
 Пинови платформе:

За коришћење ове платформе користимо подржку програмске средине Arduino IDE. У принципу све билиотеке које раде на Arduinu раде и на овој платформи, иако се пинови разликују од пинова који су на Arduinu. И тако, на платформи се налази један аналогни излаз А0, на којем ради 10- битан ADC. Дигиталним пиновима од 1 до 15 на Arduinu одговарају пинови који се означавају GRIO1 - GRIO16. Примера ради, ако у Arduinu користимо пин 12, том пину на нашој новој платформи одговара пин означен као D6 (GRIO12). Пинови GRIO1 - GRIO5, GRIO10, GRIO12 - GRIO15 подржавају PWM. 
Карактеристике платформе:
Подржавање WiFi протокола 802.11 b/g/n
WiFi Direct (P2P) , soft AP
Уграђени стек TCP/IP
STIO 2.0, SPI, UART
Уграђени PLL, регулатори и систем управљања напајањем
Нормални напон: 3,3V
Излазни напон: 3,7 - 20V
Максимална струја коју користи: 220мА
D9, D10 - UART
D1, D2 - I²C (D1 - SCL(SCK), D2 - SDA)
D5 - D8 SPI

Основни сајт прјекта: https://github.com/esp8266/Arduino


Извршавање вежбе


1. Прикључити као подршку микроконтролер NodeMCU на бази WiFi модела ESP8266


Када прикључујемо микроконтролер NodeMCU и окружење Arduino треба да урадимо следеће ствари:
1. Отварамо подешавања (Файл = > Настройки (подешавања))
2. Налазимо додатну адресу за менаџера платформе и притискамо десно дугме редактовања (заокружено на сникму екрана)


3. Додајемо URL:http://arduino.esp8266.com/stable/package_esp8266com_index.json
4. Сачувамо све то и улазимо у менаџера платформе (Инструменты => Плата (платформа) => Менеджер платы)

5. Тражимо "esp8266" и инсталирамо пакет "esp8266"
6. Креирамо нови скеч и чувамо га под називом Esp8266Test
7. Одабирамо платформу "NodeMCU 1.0 (ESP - 12E Module) " (Инструменты => Плата:). Ниже у менију "Инструменты" подешавамо CPU Frequency, Flash Size и Upload Speed на начин како је показано на снимку екрана (највероватније ће тамо бити управо та подешавања, а ако се платформа разликује од оне на слици више, вероватно ће се и подешавања разликовати).

8. Одабирамо нужни порт
 

2. Писање скеча за повезивање на WiFi мрежу и за бежични пренос података


Скеч за рад са WiFi користи библиотеке аналогне са стандардним библиотекама за WiFi које користи Arduino.
При раду са обичним Arduino и било којим WiFi шилдовима, прикључиваће се аналогни заглавни фајлови само без префикса "ESP8266"
Прикључимо заглавне фајлове

#include <ESP8266WiFi.h>
#include <ESP8266HTTPClient.h>

  Укажимо параметре WiFi мреже:

const char *essid="WIFI_ESSID";
const char *key="WIFI_KEY";

WIFI_ESSID и WIFI_KEY замењујемо са именом и шифром WiFi којег користимо.
У функцији setup() иницирамо Serial и повезујемо се на WiFi. 

Serial.begin(9600);
WiFi.begin(essid,key);
while(WiFi.status() != WL_CONNECTED)
{
    delay(500);
    Serial.print(".");
}
Serial.println("WiFi connected");

У функцији loop() испуњавамо GET захтев за WEB - страницу удаљеног сервера. Зато се прикључујемо на сервер:

WiFiClient client;
if(!client.connect("wl.unn.ru",80))
{
    Serial.println("connection failed");
    return;

Шаљемо генерисани GET захтев

client.print("GET /laboratory/?page=1 HTTP/1.1\r\nConnection: close\r\n\r\n");

Чекамо одговор од сервера

unsigned long timeout = millis();
while(client.available()==0)
{
    if(millis()-timeout>5000)
    {
        Serial.println(">>> Client Timeout !");
        client.stop();
        return;
    }
}

Изводимо одговор и чекамо 10 секунди

while(client.available())
{
    String line=client.readStringUntil('\r');
    Serial.print(line);
}
delay(10000);

Учитавамо скеч на платформу и отварамо менаџер порта. Тамо је дужан да се појавјује једном у 10 секунди код web - странице, коју добијамо као одговор од сервера wl.unn.ru

Додатни задатак: Креирати скеч за скенирање доступних WiFi мрежа