LAKI PINGVINI<>
092019<><>

Robotdyn Uno+Wi-Fi

Mister Uno i doktor ESP

Momci i devojke iz Robotdyna ne sede skrštenih ruku. U moru Arduino kompatibilnih ploča i raznih aktuatora, u njihovoj garaži mogu se naći ploče koje su svojevrsna fuzija standardnog Una i standardnog ESP8266. Ova dva, naizgled prilično različita sveta, Robotdyn je spakovao na ploču koja prati layout Una, a kako oni koegzistiraju zajedno i da li imamo jedan ili dva ekosistema – trudićemo se da opišemo u tekstu koji sledi.

Robotdyn se baš potrudio da spakuje sve potrebne komponente koje su neophodne za ova dva mikrokontrolera, a ima ih dosta. Počećemo od naponske sekcije. Prvo što primećujemo je da ova ploča za razliku od standardnog Una ima mikro USB port za prebacivanje skeča. Pritom, za vezu sa računarom se koristi čip CH340G koji je odmah ispod. Za napajanje se standardno koristi DC priključak gde možemo priključiti strujne adaptere sa naponima od šest do devet volti, što je jasno naznačeno na ploči. Ako je opcija napajanje preko VIN pina, tu možemo koristiti napone između sedam i 12 volti. Na zvaničnoj stranici stoji da su naponi od devet do 24 volta, što je jako čudno, a mi nismo imali želju da to proveravamo. Preko USB porta ploču možemo napajati sa pet volti, ali i do maksimalnih 500 miliampera. Ploča nudi mnogo više struje za output u odnosu na standardni Uno i to do 800 miliampera, ukoliko se napaja preko DC priključka. Tu su i dva AMS1117 linijska regulatora za napone od 5 i 3,3 volta.

ATmega328P mikrokontroler je ovaj put svoje mesto našao uz digitalne hedere, gde je odmah iznad ICSP heder. Standardni šildovi koji koriste ovaj interfejs preko ICSP hedera na standardnom Unu ovde neće moći da se koriste. ATmega standardno radi na kloku od 16 megaherca, a ’reset’ taster ATmeginog mikrokontrolera je na svom mestu uz mikro USB port. Hederi sa strana su standardni za Uno i kompletni su, pa nema smisla da ih objašnjavamo po stoti put. Robotdyn je osim pinouta zadržao i sve funkcije koje Atmega nudi, pa tako imamo I2C, SPI i serijsku komunikaciju. Na ploči imamo četiri LED, gde je L zapravo built-in LED na pinu 13, zatim On i TX/RX.

Gde obično očekujemo da se nalazi Atmegin MCU, ovaj put imamo ESP8266 sa svojih 32 megabajta memorije. ESP8266 se na lokalnu mrežu može povezati putem odštampane antene na ploči ili putem eksterne antene za koju je ostavljen konektor. Wi-Fi mikrokontroler ima svoj ’reset’ taster koji je minijaturan i koji se nalazi odmah do muških hedera, a ovi su zapravo izvodi sa ESP8266. Hederi nose sve neophodne izvode preko kojih se ESP8266 može direktno programirati poput, recimo, ESP01. Od 12 pinova, pored naponskih, serijskih (RX/TX) i programabilnih, imamo još četiri za određene projekte koji se mogu koristiti.

Ploča može da se koristi na više načina. Na sredini imamo osam DIP prekidača sa različitim funkcijama, gde u zavisnosti od položaja možemo da prebacimo skeč posebno na Atmegu, a posebno na ESP8266. Od ovih osam prekidača koristi se samo sedam. Takođe, ovim prekidačima možemo postaviti da ova dva ekosistema komuniciraju međusobno putem serijskog interfejsa. Robotdyn u svojoj ponudi ima i Megu u sličnoj varijanti, ali u slučaju Mege, za komunikaciju se koristi ’Serial3’, pa nam ostaju veće mogućnosti za eventualni projekat. Tabelu sa oznakama položaja prekidača možete naći na zvaničnoj stranici proizvođača, ali i na samoj ploči. Inače, Robotdyn na svim svojim proizvodima stavlja vrlo jasne i čitke oznake, bez obzira na to koliko sitne bile. DIP prekidači se u principu koriste u parovima, po dva za svaku opciju, gde se samo za upload skeča na ESP8266 koriste tri.

Prekidačima 3 i 4 pristupamo Atmegi i odabirom Una za ploču u okviru IDE smo bez problema prebacili skeč na 328P. Za prebacivanje skeča na ESP8266 je potrebno podići prekidače 5, 6 i 7, gde ovaj sedmi prebacuje ESP8266 u flash mode. Za praćenje ESP8266 preko serijal terminala je potrebno ostaviti podignute samo 5 i 6. Ni sa prebacivanjem skeča na ESP8266 nismo imali problema, a za ploču je potrebno odabrati Generic ESP8266 Module. Podrazumeva se da su ESP8266 ploče već dodate u okviru IDE. Ovde treba naglasiti da nakon prebacivanja skeča na ESP8266 i vraćanja sedmog prekidača u off položaj, treba pritisnuti ’reset’ taster ESP8266 koji smo pomenuli. Procedura je dobro poznata svima koji su se već sretali sa ESP8266. Ako izuzmemo retke trenutke kada su svi prekidači off, to jest kada svako radi zasebno, ostaje još da vidimo kako ova dva komada silicijuma funkcionišu zajedno, kada su prva dva prekidača na on. To je nama zapravo i najzanimljivije. Ovde ćemo dodati da korišćenjem punog potencijala ove ploče onako kako je proizvođač zamislio, na serijski terminal treba zaboraviti. Za debuging možemo koristiti neki ekran, recimo LCD.

S obzirom na to da je na ovoj ploči komunikacija između ova dva MCU predviđena preko Serial interfejsa, nemamo puno izbora. Jedna varijanta je korišćenjem AT komandi. U zavisnosti od primerka, neke ploče dođu sa AT firmverom, što sa našim primerkom nije bio slučaj. Nakon malo preturanja po mreži i probanja nekoliko firmvera, na našoj ploči je ESP8266_NONOS_SDK_1541 radio kako treba, što ne znači da možda još neki drugi neće. Za upload smo koristili Flash Download Tools 364, a o proceduri je bilo reči ranije (SK 5/2017). Da bi se flešovao ESP8266, potrebno je, rekosmo, podići prekidače 5, 6 i 7. Druga varijanta je korišćenjem standardnih skečeva za komunikaciju putem serijal interfejsa. Na mreži ćete naći da je nemoguće pratiti Serial terminal dok traje komunikacija između ova dva MCU. To, zapravo, nije apsolutno tačno, ali nije ni preporučljivo, te iz tog razloga i predlažemo upotrebu I2C LCD ekrana. Nakon dužeg praćenja terminala će doći do grešaka u prenosu.

Mi smo napravili mali projekat gde ćemo podatke sa ATmege preko serijskog interfejsa slati na ESP8266, a ovaj će te podatke slati na udaljeni server preko lokalne mreže. Skeč za Uno je straightforward, gde imamo ArduinoJson biblioteku verzije 5.xx, zatim fake temperaturu, dok u setup funkciji vrednost bauda za serijsku komunikaciju stavljamo 57600. Dugo nam je trebalo da napravimo uspešnu komunikaciju između ova dva mikrokontrolera i tek sa ovim baud rateom smo je ostvarili. U loop funkciji pravimo JSON objekat i funkcijom printTo() šaljemo „temperaturu” serijskim interfejsom ka ESP8266. Temperatura svakim loopom raste za po jedan podeok, a tu je i pauza između slanja od dve sekunde.

#include <ArduinoJson.h>

int temp = 1;

void setup() {

Serial.begin(57600);

}

void loop() {

StaticJsonBuffer<1000> jsonBuffer;

JsonObject& root = jsonBuffer.createObject();

root["temp"] = temp;

root.printTo(Serial);

temp = temp+1;

delay(2000);

}

Skeč koji smo koristili za ESP8266 osim ArduinoJson biblioteke koristi i ESP8266WiFi neophodnu za bežično povezivanje na lokalnu mrežu. Nakon definisanja SSID, lozinke, servera i porta u setup funkciji takođe postavljamo serijski interfejs na 57600 bauda. U loop funkciji prikupljamo podatke koje smo dobili putem serijskog interfejsa i preko GET zahteva ih šaljemo u bazu na udaljenom serveru. O tome kako napraviti veb-stranicu, kako postaviti tabele u bazi i kako te podatke očitati, pisali smo kada je bilo reči o Wemos D1. Zapravo je ovaj poslednji skeč blaga modifikacija skeča koji smo koristili za D1 (SK 3/2018).

#include <ArduinoJson.h>

#include <ESP8266WiFi.h>

const char ssid[] = „ssid”;

const char password[] = „password”;

const char webServer[] = „www.somesite.org”;

const int httpPort = 80;

WiFiClient client;

void setup() {

Serial.begin(57600);

WiFi.begin(ssid,password);

while(WiFi.status()!=WL_CONNECTED){

delay(500);

}

}

void loop() {

StaticJsonBuffer<1000> jsonBuffer;

JsonObject& root = jsonBuffer.parseObject(Serial);

if (root == JsonObject::invalid())

return;

if (client.connect(webServer, httpPort) ) {

client.print(„GET /test/index.php?data1=”);

float data1=root["temp"];

client.print(data1);

client.println(„ HTTP/1.1”);

client.print(„Host: „);

client.println(webServer);

client.println(„Connection: close”);

client.println();

delay(1000);

}

}

Naravno da se ceo posao oko slanja mogao sažeti na jednostavniji kod, ali imajte na umu da se na ovaj način može poslati više nezavisnih podataka u decimalnom zapisu prostim dodavanjem, kao ispod.

root["data1"] = vrednost1;

root["data2"] = vrednost2;

root["data3"] = vrednost3;

root["data4"] = vrednost4;

Doktor Uno i mister ESP iz naslova mogu funkcionisati kao dve zasebne celine ako će nam Uno, recimo, meriti temperaturu preko DHT22 na svom digitalnom pinu i prikazati vrednosti na I2C LCD ekranu. Za to vreme ESP8266 preko svojih hedera može čitati temperaturu preko Dallasa i slati podatke na server. U takvoj varijanti će oba raditi savršeno. Međutim, radeći udruženim snagama kao u našem primeru, dostići će svoj pun potencijal, gde se maksimalno mogu iskoristiti svi GPIO sa oba mikrokontrolera. Za postojeće projekte gde se traži bezbolan dodatak Wi-Fija, Uno je odlično rešenje. Za stand alone projekte u razvoju tek da ne govorimo. Mega sa dodatkom ESP8266 istog proizvođača bi bila još bolje rešenje, što zbog GPIO, memorije, tako i zbog tri serijska interfejsa. Od nas sve preporuke.

Dejan PETROVIĆ

 
Foliate 1.5.3
Meteo-qt 1.0.0
Robotdyn Uno+Wi-Fi
Šta mislite o ovom tekstu?
MH-ET Live Tiny88
Home / Novi brojArhiva • Opšte temeInternetTest driveTest runPD kutakCeDetekaWWW vodič • Svet igara
Svet kompjutera Copyright © 1984-2018. Politika a.d. • RedakcijaKontaktSaradnjaOglasiPretplata • Help • English
SKWeb 3.22
Opšte teme
Internet
Test Drive
Test Run
PD kutak
CeDeteka
WWW vodič
Svet igara



Naslovna stranaPrethodni brojeviOpšte informacijeKontaktOglašavanjePomoćInfo in English

Svet kompjutera