*/ ?>

Početnik si s Croduinom. Ili s elektronikom? Za oko ti je zapeo određeni modul, ali ne znaš kako ga koristiti? Bez brige, tu je KKM! Kako Koristiti Module (KKM) je serija blog tutorijala e-radionice na kojoj ćeš pronaći sve što ti treba kako bi započeo rad sa svojim omiljenim modulom. Tutorijali obuhvaćaju: tehničke karakteristike, princip rada, upute kako povezati modul s Croduinom te osnovni kod. Sve ostalo prepuštamo tebi na maštu.

UVOD

U ovom tutorijalu pokazat ćemo kako možemo programirati Croduino bez spajanja kabelom na računalo. Radi se o Croduino Nova2 koji koristi ESP8266 mikrokontroler, a programirat ćemo ga preko WiFi mreže. Što je OTA, kako radi, što nam je sve potrebno za programiranje te sam postupak programiranja opisan je u nastavku.

KAKO RADI?

Prvo ćemo objasniti što je OTA te potom kako se kod prebacuje i pokreće na Croduin-u. OTA(Over the Air) je proces prebacivanja koda na mikrokontroler putem WiFi mreže umjesto serijskog porta. Ova mogućnost nam je korisna ako se mikrokontroler nalazi na teško dostupnom mjestu ili je udaljen od nas pa ne možemo priključiti kabel za serijsku komunikaciju. Kako kod prebacujemo preko WiFi mreže ova metoda nije baš sigurna, jer svatko povezan na istu mrežu kao i naš Croduino, može prebaciti svoj kod na Croduino. Kako bi to izbjegli možemo koristiti lozinku koja se lako ubacuje u kod jer biblioteka koja se koristi ima tu mogućnost. Kada prebacujemo kod Arduino IDE će zatražiti unos lozinke od nas, ali kada je jednom upišemo on ju zapamti i ne moramo više upisivati osim ako je ne promijenimo u kodu kada će ponovno zatražiti unos lozinke za prebacivanje koda. Prilikom uploada novog koda flash čip sadrži stari kod(koji je trenutno pokrenut) i novi kod koji smo prebacili. Kada je kod prebačen Croduino Nova2 se resetira i pokreče se novi kod koji smo zadnji prebacili. Kada pišemo naš kod moramo biti sigurni da ima dovoljno memorije za program koji je trenutno na Croduino Nova2 i za naš novi program jer kako smo opisali tijekom prebacivanja novog programa i stari se nalazi u memoriji te ako je novi program prevelik doći će do greške prilikom prebacivanja.

PROGRAMI ZA OTA PROGRAMIRANJE

Da bi mogli prebaciti kod preko WiFi mreže trebamo imati instalirane neke programe koji nam omogućuju tu funkcionalnost. Prvo trebamo imati Arduino IDE i podršku za Croduino Nova2, ubacivanje podrške za Croduino NOVA2 opisano je u tutorijalu. Prilikom instalacije treba odabrati verziju 2.4.1 ili 2.4.2 jer na novijoj verziji (2.5) ne radi postavljanje zaštite lozinkom prilikom prenošenja novog programa na pločicu. Drugo što nam je potrebno je Python 2.7.x(www.python.org/downloads )( nemojte instalirati Python 3.5 jer nije podržan). Prilikom instalacije treba odabrati instalaciju za sve korisnike( slika 1) te u Customize Python 2.7.X potrebno je odabrati opciju „Add python.exe to Path“ (slika 2).

ARDUINO KOD

Za prebacivanje koda putem WiFi mreže prvo se trebamo povezati na WiFi mrežu. Kako bismo to napravili trebamo povezati Croduino Nova s računalom putem USB kabla i prebaciti prvi kod u kojem trebamo upisati SSID i PASSWORD naše mreže. Kada prebacimo prvi kod i otvorimo Serial monitor trebali bi dobiti IP adresu ako je sve dobro prošlo, a ako dobijemo poruku o grešci treba provjeriti dali su SSID i PASSWORD dobro upisani.
//uključujemo potrebne biblioteke za rad sa ESP8266 na kojem je baziran Croduino Nova2
#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>
#include <WiFiUdp.h>
//uključujemo ArduinoOTA biblioteku koja nam omogućuje programiranje Croduina preko WiFi mreže
#include <ArduinoOTA.h>
//Unosimo SSID i password za mrežu na koju želimo povezati naš Croduino
const char* ssid = "SSID_mreze";
const char* password = "lozinka_za_WiFi";
void setup() {
Serial.begin(115200);//započinjemo serijsku komunikaciju(115200 bauda)
Serial.println("Booting");
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);//započinjemo konekciju na našu WiFi mrežu
//ako povezivanje nije uspjelo ispisujemo poruku o grešci i resetiramo Croduino
while (WiFi.waitForConnectResult() != WL_CONNECTED) {
Serial.println("Connection Failed! Rebooting...");
delay(5000);
ESP.restart();
}
// Postavljamo port za naš Croduino( nije potrebno mijenjati, jer je zadani postavljen na 8266)
// ArduinoOTA.setPort(8266);
// Ovom naredbom mijenjamo ime našeg Croduina koje vidimo prilikom prebacivanja koda(zadano je esp8266-[ChipID])
// ArduinoOTA.setHostname("myesp8266");
//postavljamo lozinku za upload koda( zaštita da nam drugi ne mogu prenijeti kod na pločicu(za postavljanje potrebno otkomentirati funkciju)
// ArduinoOTA.setPassword((const char *)"123");
//unutar metode on start pišemo kod koji želimo da se izvrši kada krene prenošenje
ArduinoOTA.onStart([]() {
Serial.println("Start");
});
//unutar ove metode pišemo kod koji želimo da se izvrši kada završimo s prenošenjem
ArduinoOTA.onEnd([]() {
Serial.println("\nEnd");
});
//unutar ove metode pišemo kod koji želimo da se izvrši tijekom procesa prenošenja
ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) {
Serial.printf("Progress: %u%%\r", (progress / (total / 100)));
});
//unutar metode pišemo što želimo da se izvrši kada se dogodi neki error prilikom prenošenja
ArduinoOTA.onError([](ota_error_t error) {
Serial.printf("Error[%u]: ", error);
if (error == OTA_AUTH_ERROR) Serial.println("Auth Failed");//pogreška autentifikacije
else if (error == OTA_BEGIN_ERROR) Serial.println("Begin Failed");//pogreška prilikom pokretanja
else if (error == OTA_CONNECT_ERROR) Serial.println("Connect Failed");//pogreška prilikom povezivanja
else if (error == OTA_RECEIVE_ERROR) Serial.println("Receive Failed");//pogreška prilikom prenošenja novog koda
else if (error == OTA_END_ERROR) Serial.println("End Failed");// pogreška na kraju prenošenja koda
});
ArduinoOTA.begin();//pokrećemo ArduinoOTA kako bi ponovno mogli prenositi kod putem WiFi mreže
Serial.println("Ready");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());//ispisujemo IP adresu
}
void loop() {
//funkcija koja čeka prenošenje novog koda
ArduinoOTA.handle();
}
Drugi kod je zapravo Blink kod koji pali i gasi ugrađenu LED diodu na pinu 13, samo imamo još dio koda koji nam je potreban za prebacivanje preko WiFi mreže. Sav kod koji trebamo da Croduino izvodi pišemo kao i za Croduino Basic pločicu samo treba još dodati funkcije koje služe za prebacivanje koda preko WiFi mreže kako bi sljedeći puta mogli ponovno uploadati kod putem WiFi mreže. Kako bi kod prebacili preko WiFi mreže u postavkama pod Port trebamo odabrati esp38266-verzija_pločice at IP_adresa našeg Croduina što je prikazano na slici. NAPOMENA: ako nam prebacivanje koda ne uspije potrebno je promijeniti postavke vatrozida za python kako bi mogli prebaciti kod putem WiFi mreže(možda treba promijeniti i postavke antivirusnog programa).
//uključujemo potrebne biblioteke za rad sa ESP8266 na kojem je baziran Croduino Nova2
#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>
#include <WiFiUdp.h>
//uključujemo ArduinoOTA biblioteku koja nam omogućuje programiranje Croduina preko WiFi mreže
#include <ArduinoOTA.h>
//Unosimo SSID i password za mrežu na koju želimo povezati naš Croduino
const char* ssid = "SSID_mreze";
const char* password = "lozinka_za_WiFi";
int ESP_BUILTIN_LED=13;
void setup() {
Serial.begin(115200);//započinjemo serijsku komunikaciju(115200 bauda)
Serial.println("Booting");
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);//započinjemo konekciju na našu WiFi mrežu
//ako povezivanje nije uspjelo ispisujemo poruku o grešci i resetiramo Croduino
while (WiFi.waitForConnectResult() != WL_CONNECTED) {
Serial.println("Connection Failed! Rebooting...");
delay(5000);
ESP.restart();
}
// Postavljamo port za naš Croduino( nije potrebno mijenjati, jer je zadani postavljen na 8266)
// ArduinoOTA.setPort(8266);
// Ovom naredbom mijenjamo ime našeg Croduina koje vidimo prilikom prebacivanja koda(zadano je esp8266-[ChipID])
// ArduinoOTA.setHostname("myesp8266");
//postavljamo lozinku za upload koda( zaštita da nam drugi ne mogu prenijeti kod na pločicu(za postavljanje potrebno otkomentirati funkciju)
// ArduinoOTA.setPassword((const char *)"123");
//unutar metode on start pišemo kod koji želimo da se izvrši kada krene prenošenje
ArduinoOTA.onStart([]() {
Serial.println("Start");
});
//unutar ove metode pišemo kod koji želimo da se izvrši kada završimo s prenošenjem
ArduinoOTA.onEnd([]() {
Serial.println("\nEnd");
});
//unutar ove metode pišemo kod koji želimo da se izvrši tijekom procesa prenošenja
ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) {
Serial.printf("Progress: %u%%\r", (progress / (total / 100)));
});
//unutar metode pišemo što želimo da se izvrši kada se dogodi neki error prilikom prenošenja
ArduinoOTA.onError([](ota_error_t error) {
Serial.printf("Error[%u]: ", error);
if (error == OTA_AUTH_ERROR) Serial.println("Auth Failed");//pogreška autentifikacije
else if (error == OTA_BEGIN_ERROR) Serial.println("Begin Failed");//pogreška prilikom pokretanja
else if (error == OTA_CONNECT_ERROR) Serial.println("Connect Failed");//pogreška prilikom povezivanja
else if (error == OTA_RECEIVE_ERROR) Serial.println("Receive Failed");//pogreška prilikom prenošenja novog koda
else if (error == OTA_END_ERROR) Serial.println("End Failed");// pogreška na kraju prenošenja koda
});
ArduinoOTA.begin();//pokrećemo ArduinoOTA kako bi ponovno mogli prenositi kod putem WiFi mreže
Serial.println("Ready");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());//ispisujemo IP adresu
pinMode(ESP_BUILTIN_LED, OUTPUT);//postavljamo pin 13 kao izlaz
}
void loop() {
//funkcija koja čeka prenošenje novog koda
ArduinoOTA.handle();
digitalWrite(ESP_BUILTIN_LED, LOW);//postavljamo pin 13 na LOW te palimo LED diodu koja je ugrađena na pločici
delay(1000);//pauza od 1 sekunde
digitalWrite(ESP_BUILTIN_LED, HIGH);//postavljamo pin 13 na HIGH te gasimo LED diodu koja je ugrađena na pločici
delay(500);//pauza od pola sekunde
}

Početnik si s Croduinom. Ili s elektronikom? Za oko ti je zapeo određeni modul, ali ne znaš kako ga koristiti? Bez brige, tu je KKM! Kako Koristiti Module (KKM) je serija blog tutorijala e-radionice na kojoj ćeš pronaći sve što ti treba kako bi započeo rad sa svojim omiljenim modulom. Tutorijali obuhvaćaju: tehničke karakteristike, princip rada, upute kako povezati modul s Croduinom te osnovni kod. Sve ostalo prepuštamo tebi na maštu.

Početnik si s Croduinom. Ili s elektronikom? Za oko ti je zapeo određeni modul, ali ne znaš kako ga koristiti? Bez brige, tu je KKM! Kako Koristiti Module (KKM) je serija blog tutorijala e-radionice na kojoj ćeš pronaći sve što ti treba kako bi započeo rad sa svojim omiljenim modulom. Tutorijali obuhvaćaju: tehničke karakteristike, princip rada, upute kako povezati modul s Croduinom te osnovni kod. Sve ostalo prepuštamo tebi na maštu.