SlideShare a Scribd company logo
1 of 12
Download to read offline
http://www.robofun.ro Curs Gratuit Arduino si Robotica
Textul si imaginile din acest document sunt licentiate
Attribution-NonCommercial-NoDerivs
CC BY-NC-ND
Codul sursa din acest document este licentiat
Public-Domain
Esti liber sa distribui acest document prin orice mijloace consideri (email, publicare pe website /
blog, printare, sau orice alt mijloc), atat timp cat nu aduci nici un fel de modificari acestuia. Codul
sursa din acest document poate fi utilizat in orice fel de scop, de natura comerciala sau nu, fara
nici un fel de limitari.
http://www.robofun.ro/forum
http://www.robofun.ro Curs Gratuit Arduino si Robotica
WiFly Shield
Daca ai nevoie sa obtii informatii direct din Internet folosind Arduino, sau
sa ai un server web ruland pe Arduino si vrei sa-l accesezi tu din Internet, si
toate astea fara fir de retea, atunci WiFly Shield este ceea ce ai nevoie.
Functioneaza prin WIFI, se conecteaza la un router si iti ofera conexiune la
Internet pe Arduino. Daca nu iti este foarte clar cum functioneaza o retea de
calculatoare (termeni gen IP, DNS, MAC, DHCP iti suna ciudat), atunci iti
recomand sa citesti mai intai sectiunea in care se discuta despre shield-ul
Ethernet pentru Arduino, sectiune in care am prezentat si aceste concepte.
Libraria de care vei avea nevoie in codul de mai jos o gasesti in aceasta
pagina – http://www.robofun.ro/wifly_shield, descarc-o si instaleaz-o in mediul
tau Arduino inainte de a rula exemplul de mai jos.
http://www.robofun.ro/forum
http://www.robofun.ro Curs Gratuit Arduino si Robotica
WiFly Shield – Client Web
//pune "" la ambele daca nu ai parola la WIFI
#define SSID "networkID"
#define PASSPHRASE "password"
#include "WiFly.h"
#include "Credentials.h"
Client client("google.com", 80);
void setup() {
Serial.begin(9600);
WiFly.begin();
if (!WiFly.join(SSID, PASSPHRASE)) {
Serial.println("Conectare la reteaua WIFI esuata.");
}
Serial.println("Conectare in progres...");
if (client.connect()) {
Serial.println("Conectare reusita !");
client.println("GET /search?q=arduino HTTP/1.0");
http://www.robofun.ro/forum
http://www.robofun.ro Curs Gratuit Arduino si Robotica
client.println();
} else {
Serial.println("Conectare esuata");
}
}
void loop() {
if (client.available()) {
char c = client.read();
Serial.print(c);
}
if (!client.connected()) {
Serial.println();
Serial.println("disconnecting.");
client.stop();
for(;;)
;
}
}
Daca ai parcurs deja sectiunea despre Ethernet shield, vei vedea ca ceea
ce avem mai sus seamana foarte mult cu codul de acolo. Practic, se modifica
doar modul de conectare la retea. Sunt de remarcat cele doua constante de la
inceputul programului, care iti permit sa declari care este identificatorul tau de
retea WIFI si care este parola. Daca ai o retea fara parola, pune "" in loc de
parola si de id de retea.
Codul se conecteaza la serverul google.com si afiseaza in Serial Monitor
rezultatele cautarii pentru termenul "arduino" (tu vei vedea informatie in
format HTML, asa cum am explicat la sectiunea despre Ethernet Shield).
WiFly Shield – Server Web
//pune "" la ambele daca nu ai parola la WIFI
#define SSID "networkID"
#define PASSPHRASE "password"
#include "WiFly.h"
#include "Credentials.h"
Server server(80);
void setup() {
WiFly.begin();
if (!WiFly.join(SSID, PASSPHRASE)) {
Serial.println("Conectare la reteaua WIFI esuata.");
}
Serial.begin(9600);
Serial.print("IP: ");
http://www.robofun.ro/forum
http://www.robofun.ro Curs Gratuit Arduino si Robotica
Serial.println(WiFly.ip());
server.begin();
}
void loop() {
Client client = server.available();
if (client) {
boolean current_line_is_blank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
if (c == 'n' && current_line_is_blank) {
// send a standard http response header
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println();
for (int i = 0; i < 6; i++) {
client.print("* pe portul analogic ");
client.print(i);
client.print(" s-a citit valoarea ");
client.print(analogRead(i));
client.println("<br />");
}
break;
}
if (c == 'n') {
current_line_is_blank = true;
} else if (c != 'r') {
current_line_is_blank = false;
}
}
}
delay(100);
client.stop();
}
}
Exemplul de mai sus creaza un server web care ruleaza pe placa Arduino
si la fiecare cerere din browser raspunde cu valorile de pe porturile analogice,
ca mai jos. IP-ul server-ului este alocat in mod dinamic de router, asa ca, pentru
a sti care este adresa pe care o folosesti in browser, iti recomand sa deschizi
Serial Monitor si sa vezi in debug IP-ul alocat placii.
Stocarea online a datelor culese de Arduino, folosind Google Docs
Google Docs reprezinta o solutie excelenta pentru a loga online date
culese cu Arduino. Temperatura, umiditatea sau presiunea atmosferica sunt
exemple foarte bune in acest sens. Trimiterea lor online intr-un document Excel
se bazeaza pe functionalitatea Forms, oferita de Google Docs. Ideea de
http://www.robofun.ro/forum
http://www.robofun.ro Curs Gratuit Arduino si Robotica
principiu este de a genera un request HTTP din Arduino, care request sa fie
perfect similar cu cel generat de pagina din form-ul Google. Astfel, Google este
"pacalit" sa creada ca datele trimise de Arduino sunt de fapt trimise de un form
creat cu Google Docs.
Pentru acest proiect ai nevoie un Arduino cu conectare la Internet. Ai de
ales intre Arduino Ethernet sau Arduino UNO + Ethernet Shield. Senzorii sunt la
alegerea ta, in functie de ce date vrei sa trimiti in Google Docs. Pentru
exemplul de mai jos, eu am ales un BMP085 (ca sa masor presiunea
atmosferica si temperatura), si un HIH-4030 pentru masurarea umiditatii.
Evident ca tu poti alege ce senzori doresti.
Mai departe, acceseaza http://docs.google.com si creaza un document tip
spreasheet ("CREATE", apoi "Spreadsheet"). Ar trebui sa vezi un document
similar unui document Excel. Din meniul "Tools", alege "Create a form". Form-ul
creat ar trebui sa aiba cate un camp de tip "Text" pentru fiecare senzor pe care
il vei trimite catre Google Docs. Spre exemplu, eu am creat un camp
"temperatura", un camp "umiditate" si un camp "presiune", toate de tip "Text".
Selecteaza apoi din meniul "Form (0)" intrarea "Go to live form". Vei
vedea formularul creat de Google Docs pentru culegerea datelor. Mai departe,
va trebui sa analizezi codul sursa al paginii (in functie de browser-ul pe care il
folosesti, acest lucru se face diferit – spre exemplu in Chrome trebuie sa dai
click dreapta si apoi sa selectezi "View page source"). In codul sursa al paginii
localizeaza sirul de caractere "formkey=". Vei gasi ceva de genul
"formkey=dE9MTmlMc3N1RVNfdVJIRkFMNDltaXc6MQ". Acest sir de caractere
reprezinta identificatorul unic al formularului tau, identificator pe care Arduino il
va utiliza ca sa trimita informatiile. Localizeaza si campurile in care introduci
informatia utila (va fi simplu, pentru ca vor fi prefixate de numele campurilor
pe care le-ai dat tu cand ai creat formularul – vezi si imaginea de mai jos).
Numele acestor campuri ar trebui sa fie ceva de genul "entry.0.single",
"entry.1.single", "entry.2.single" si tot asa pentru toate campurile care le-ai
declarat.
http://www.robofun.ro/forum
http://www.robofun.ro Curs Gratuit Arduino si Robotica
Mai departe, ca sa trimita datele catre Google, Arduino va trimite o cerere
HTTP catre serverul Google, care cerere va fi identica cu cea pe care o trimite
browser-ul atunci cand apesi pe butonul "Submit" din formular. Practic, serverul
Google va fi convins ca acele date vin din formularul obisnuit si nu din Arduino.
http://www.robofun.ro/forum
http://www.robofun.ro Curs Gratuit Arduino si Robotica
http://www.robofun.ro/forum
http://www.robofun.ro Curs Gratuit Arduino si Robotica
Codul sursa integral pentru Arduino il gasesti aici -
http://robofun.ro/blog/cum-sa-trimiti-loghezi-pe-google-docs-temperatura-
presiunea-atmosferica-si-umiditatea-direct-din-arduino . In cele ce urmeaza
vom analiza partile interesante din cod. Chiar la inceput ai o declaratie de
forma "char formkey[] = "dG9HWmNXWjNRdWhBWG5ITlpNeUVBU2c6MQ";"
Aici va trebui sa modifici cheia din cod cu cheia din documentul tau, pe care ai
obtinut-o mai sus. Mai departe, in functia "loop" vei gasi denumirile campurilor
din document, pe care le-ai identificat deja mai sus. Va trebui sa modifici
aceasta zona din cod pentru a trimite exact informatiile culese de tine. Spre
exemplu, in cazul meu codul este ca mai jos :
String data;
data+="";
http://www.robofun.ro/forum
http://www.robofun.ro Curs Gratuit Arduino si Robotica
data+="entry.2.single=";
data+=temperatura;
data+="&entry.3.single=";
data+=presiune;
data+="&entry.4.single=";
data+=umiditate;
data+="&submit=Submit";
Adaug in varianta data rand pe rand denumirea unui camp si valoarea
acestuia, citita de Arduino. Mai departe, codul trimite request-ul catre serverul
Google pentru a inregistra informatia in document.
http://www.robofun.ro/forum
http://www.robofun.ro Curs Gratuit Arduino si Robotica
Aceasta a fost lectia 12. In final, as vrea sa te rog sa ne oferi feedback
asupra acestei lectii, pentru a ne permite sa le facem mai bune pe
urmatoarele.
Este vorba despre un sondaj cu 4 intrebari (oricare este optionala), pe
care il poti accesa dand click aici.
Sau ne poti contacta direct prin email la contact@robofun.ro .
Iti multumim,
Echipa Robofun.RO
http://www.robofun.ro/forum

More Related Content

What's hot

Curs gratuitarduino lectia9-senzoriatmosferici
Curs gratuitarduino lectia9-senzoriatmosfericiCurs gratuitarduino lectia9-senzoriatmosferici
Curs gratuitarduino lectia9-senzoriatmosfericiIulius Bors
 
Motoare pascupasarduinoeasydriver
Motoare pascupasarduinoeasydriverMotoare pascupasarduinoeasydriver
Motoare pascupasarduinoeasydriverIulius Bors
 
Arduino comunicatie i2c
Arduino comunicatie i2cArduino comunicatie i2c
Arduino comunicatie i2cIulius Bors
 
Curs gratuitarduino lectia6-senzoriforta
Curs gratuitarduino lectia6-senzorifortaCurs gratuitarduino lectia6-senzoriforta
Curs gratuitarduino lectia6-senzorifortaIulius Bors
 
Curs gratuitarduino lectia7-senzoridistanta
Curs gratuitarduino lectia7-senzoridistantaCurs gratuitarduino lectia7-senzoridistanta
Curs gratuitarduino lectia7-senzoridistantaIulius Bors
 
Arduino comparatorul intern
Arduino comparatorul internArduino comparatorul intern
Arduino comparatorul internIulius Bors
 
Conector bluetoothmatesilver arduino-pc
Conector bluetoothmatesilver arduino-pcConector bluetoothmatesilver arduino-pc
Conector bluetoothmatesilver arduino-pcIulius Bors
 
Curs gratuitarduino lectia13-mousesitastatura
Curs gratuitarduino lectia13-mousesitastaturaCurs gratuitarduino lectia13-mousesitastatura
Curs gratuitarduino lectia13-mousesitastaturaIulius Bors
 
Arduino yala electronicabazatapecodsecret
Arduino yala electronicabazatapecodsecretArduino yala electronicabazatapecodsecret
Arduino yala electronicabazatapecodsecretIulius Bors
 
Arduino releemodio2
Arduino releemodio2Arduino releemodio2
Arduino releemodio2Iulius Bors
 
Arduino multiplexarea le-durilor
Arduino multiplexarea le-durilorArduino multiplexarea le-durilor
Arduino multiplexarea le-durilorIulius Bors
 
Curs gratuitarduino lectia15-seismografcuexcel
Curs gratuitarduino lectia15-seismografcuexcelCurs gratuitarduino lectia15-seismografcuexcel
Curs gratuitarduino lectia15-seismografcuexcelIulius Bors
 
Arduino uno rfidid-12
Arduino uno rfidid-12Arduino uno rfidid-12
Arduino uno rfidid-12Iulius Bors
 
Arduino matriceled8x8
Arduino matriceled8x8Arduino matriceled8x8
Arduino matriceled8x8Iulius Bors
 
Arduino toraspberrypi firmata
Arduino toraspberrypi firmataArduino toraspberrypi firmata
Arduino toraspberrypi firmataIulius Bors
 

What's hot (17)

Curs gratuitarduino lectia9-senzoriatmosferici
Curs gratuitarduino lectia9-senzoriatmosfericiCurs gratuitarduino lectia9-senzoriatmosferici
Curs gratuitarduino lectia9-senzoriatmosferici
 
Motoare pascupasarduinoeasydriver
Motoare pascupasarduinoeasydriverMotoare pascupasarduinoeasydriver
Motoare pascupasarduinoeasydriver
 
Arduino comunicatie i2c
Arduino comunicatie i2cArduino comunicatie i2c
Arduino comunicatie i2c
 
Curs gratuitarduino lectia6-senzoriforta
Curs gratuitarduino lectia6-senzorifortaCurs gratuitarduino lectia6-senzoriforta
Curs gratuitarduino lectia6-senzoriforta
 
Curs gratuitarduino lectia7-senzoridistanta
Curs gratuitarduino lectia7-senzoridistantaCurs gratuitarduino lectia7-senzoridistanta
Curs gratuitarduino lectia7-senzoridistanta
 
Arduino comparatorul intern
Arduino comparatorul internArduino comparatorul intern
Arduino comparatorul intern
 
Conector bluetoothmatesilver arduino-pc
Conector bluetoothmatesilver arduino-pcConector bluetoothmatesilver arduino-pc
Conector bluetoothmatesilver arduino-pc
 
Curs gratuitarduino lectia13-mousesitastatura
Curs gratuitarduino lectia13-mousesitastaturaCurs gratuitarduino lectia13-mousesitastatura
Curs gratuitarduino lectia13-mousesitastatura
 
Arduino yala electronicabazatapecodsecret
Arduino yala electronicabazatapecodsecretArduino yala electronicabazatapecodsecret
Arduino yala electronicabazatapecodsecret
 
Aiesec University 2012-arduino
Aiesec University 2012-arduinoAiesec University 2012-arduino
Aiesec University 2012-arduino
 
Arduino releemodio2
Arduino releemodio2Arduino releemodio2
Arduino releemodio2
 
Arduino multiplexarea le-durilor
Arduino multiplexarea le-durilorArduino multiplexarea le-durilor
Arduino multiplexarea le-durilor
 
Curs gratuitarduino lectia15-seismografcuexcel
Curs gratuitarduino lectia15-seismografcuexcelCurs gratuitarduino lectia15-seismografcuexcel
Curs gratuitarduino lectia15-seismografcuexcel
 
Arduino uno rfidid-12
Arduino uno rfidid-12Arduino uno rfidid-12
Arduino uno rfidid-12
 
Arduino matriceled8x8
Arduino matriceled8x8Arduino matriceled8x8
Arduino matriceled8x8
 
Arduino rtc
Arduino rtcArduino rtc
Arduino rtc
 
Arduino toraspberrypi firmata
Arduino toraspberrypi firmataArduino toraspberrypi firmata
Arduino toraspberrypi firmata
 

Viewers also liked

Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...
Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...
Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...Iulius Bors
 
Raspberry pi timelapse
Raspberry pi timelapseRaspberry pi timelapse
Raspberry pi timelapseIulius Bors
 
Set prizecomandatedinarduino
Set prizecomandatedinarduinoSet prizecomandatedinarduino
Set prizecomandatedinarduinoIulius Bors
 
Arduino gyro stabilizator
Arduino gyro stabilizatorArduino gyro stabilizator
Arduino gyro stabilizatorIulius Bors
 
Raspberry pi firmata - arduino
Raspberry pi   firmata - arduinoRaspberry pi   firmata - arduino
Raspberry pi firmata - arduinoIulius Bors
 
Arduino wifi shield-drivermotoarel298
Arduino wifi shield-drivermotoarel298Arduino wifi shield-drivermotoarel298
Arduino wifi shield-drivermotoarel298Iulius Bors
 
Programare in prolog_pentru_inteligenta_artificiala
Programare in prolog_pentru_inteligenta_artificialaProgramare in prolog_pentru_inteligenta_artificiala
Programare in prolog_pentru_inteligenta_artificialaIulius Bors
 
Raspberry pi bmp085blueedition
Raspberry pi bmp085blueeditionRaspberry pi bmp085blueedition
Raspberry pi bmp085blueeditionIulius Bors
 
Arduino flexsensorbrickbionicfinger
Arduino flexsensorbrickbionicfingerArduino flexsensorbrickbionicfinger
Arduino flexsensorbrickbionicfingerIulius Bors
 
Cum instaleziapachesimysql peraspberrypi
Cum instaleziapachesimysql peraspberrypiCum instaleziapachesimysql peraspberrypi
Cum instaleziapachesimysql peraspberrypiIulius Bors
 
Asamblare statie meteo
Asamblare statie meteoAsamblare statie meteo
Asamblare statie meteoIulius Bors
 
Raspberry pi lcd-shield20x4
Raspberry pi lcd-shield20x4Raspberry pi lcd-shield20x4
Raspberry pi lcd-shield20x4Iulius Bors
 
Arduino indicatoare cp-usiram
Arduino indicatoare cp-usiramArduino indicatoare cp-usiram
Arduino indicatoare cp-usiramIulius Bors
 
Arduino yun arduino-wifi-ethernet-linux
Arduino yun arduino-wifi-ethernet-linuxArduino yun arduino-wifi-ethernet-linux
Arduino yun arduino-wifi-ethernet-linuxIulius Bors
 

Viewers also liked (16)

Arduino sht11
Arduino sht11Arduino sht11
Arduino sht11
 
Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...
Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...
Curs gratuitarduino lectia14-analogieelectricitatecurgereafluidelor-proiect-f...
 
Raspberry pi timelapse
Raspberry pi timelapseRaspberry pi timelapse
Raspberry pi timelapse
 
Arduino pid
Arduino pidArduino pid
Arduino pid
 
Set prizecomandatedinarduino
Set prizecomandatedinarduinoSet prizecomandatedinarduino
Set prizecomandatedinarduino
 
Arduino gyro stabilizator
Arduino gyro stabilizatorArduino gyro stabilizator
Arduino gyro stabilizator
 
Raspberry pi firmata - arduino
Raspberry pi   firmata - arduinoRaspberry pi   firmata - arduino
Raspberry pi firmata - arduino
 
Arduino wifi shield-drivermotoarel298
Arduino wifi shield-drivermotoarel298Arduino wifi shield-drivermotoarel298
Arduino wifi shield-drivermotoarel298
 
Programare in prolog_pentru_inteligenta_artificiala
Programare in prolog_pentru_inteligenta_artificialaProgramare in prolog_pentru_inteligenta_artificiala
Programare in prolog_pentru_inteligenta_artificiala
 
Raspberry pi bmp085blueedition
Raspberry pi bmp085blueeditionRaspberry pi bmp085blueedition
Raspberry pi bmp085blueedition
 
Arduino flexsensorbrickbionicfinger
Arduino flexsensorbrickbionicfingerArduino flexsensorbrickbionicfinger
Arduino flexsensorbrickbionicfinger
 
Cum instaleziapachesimysql peraspberrypi
Cum instaleziapachesimysql peraspberrypiCum instaleziapachesimysql peraspberrypi
Cum instaleziapachesimysql peraspberrypi
 
Asamblare statie meteo
Asamblare statie meteoAsamblare statie meteo
Asamblare statie meteo
 
Raspberry pi lcd-shield20x4
Raspberry pi lcd-shield20x4Raspberry pi lcd-shield20x4
Raspberry pi lcd-shield20x4
 
Arduino indicatoare cp-usiram
Arduino indicatoare cp-usiramArduino indicatoare cp-usiram
Arduino indicatoare cp-usiram
 
Arduino yun arduino-wifi-ethernet-linux
Arduino yun arduino-wifi-ethernet-linuxArduino yun arduino-wifi-ethernet-linux
Arduino yun arduino-wifi-ethernet-linux
 

Similar to Curs gratuitarduino lectia12-conexiunewifi-googledocs

Arduino cereri httpgetpost
Arduino cereri httpgetpostArduino cereri httpgetpost
Arduino cereri httpgetpostIulius Bors
 
Programare Web - De la CGI la servere de aplicatii
Programare Web - De la CGI la servere de aplicatiiProgramare Web - De la CGI la servere de aplicatii
Programare Web - De la CGI la servere de aplicatiiSabin Buraga
 
CLIW 2017-2018 (7/12) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...
CLIW 2017-2018 (7/12) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...CLIW 2017-2018 (7/12) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...
CLIW 2017-2018 (7/12) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...Sabin Buraga
 
Prezentare USO - Web Application Integration
Prezentare USO - Web Application IntegrationPrezentare USO - Web Application Integration
Prezentare USO - Web Application Integrationmihneasim
 
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #12): Programare Web....
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #12): Programare Web....Dezvoltarea aplicaţiilor Web la nivel de client (cursul #12): Programare Web....
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #12): Programare Web....Sabin Buraga
 
WADe 2014—2015 (supliment): Modelarea datelor în HTML: microformate & scheme ...
WADe 2014—2015 (supliment): Modelarea datelor în HTML: microformate & scheme ...WADe 2014—2015 (supliment): Modelarea datelor în HTML: microformate & scheme ...
WADe 2014—2015 (supliment): Modelarea datelor în HTML: microformate & scheme ...Sabin Buraga
 
Web 2016 (10/13) Servicii Web. De la arhitecturi orientate spre servicii (SOA...
Web 2016 (10/13) Servicii Web. De la arhitecturi orientate spre servicii (SOA...Web 2016 (10/13) Servicii Web. De la arhitecturi orientate spre servicii (SOA...
Web 2016 (10/13) Servicii Web. De la arhitecturi orientate spre servicii (SOA...Sabin Buraga
 
CLIW 2014—2015 (11/12): Programare Web. API-uri JavaScript în contextul HTML5
CLIW 2014—2015 (11/12): Programare Web. API-uri JavaScript în contextul HTML5CLIW 2014—2015 (11/12): Programare Web. API-uri JavaScript în contextul HTML5
CLIW 2014—2015 (11/12): Programare Web. API-uri JavaScript în contextul HTML5Sabin Buraga
 
Programare Web - Cookie-uri si sesiuni
Programare Web - Cookie-uri si sesiuniProgramare Web - Cookie-uri si sesiuni
Programare Web - Cookie-uri si sesiuniSabin Buraga
 
[Web Days] Manipularea Datelor, Conectivitate Si Performanta In Silverlight 2
[Web Days] Manipularea Datelor, Conectivitate Si Performanta In Silverlight 2[Web Days] Manipularea Datelor, Conectivitate Si Performanta In Silverlight 2
[Web Days] Manipularea Datelor, Conectivitate Si Performanta In Silverlight 2Diana Tataran
 
3173119 aplicatii-de-retea
3173119 aplicatii-de-retea3173119 aplicatii-de-retea
3173119 aplicatii-de-reteasorinm10
 
HTML5 în XXX de minute
HTML5 în XXX de minuteHTML5 în XXX de minute
HTML5 în XXX de minuteSabin Buraga
 
CLIW 2015-2016 (9/13) Ingineria dezvoltării aplicațiilor JavaScript
CLIW 2015-2016 (9/13) Ingineria dezvoltării aplicațiilor JavaScriptCLIW 2015-2016 (9/13) Ingineria dezvoltării aplicațiilor JavaScript
CLIW 2015-2016 (9/13) Ingineria dezvoltării aplicațiilor JavaScriptSabin Buraga
 
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #11): Programare Web....
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #11): Programare Web....Dezvoltarea aplicaţiilor Web la nivel de client (cursul #11): Programare Web....
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #11): Programare Web....Sabin Buraga
 
Cu codul în "nori"
Cu codul în "nori"Cu codul în "nori"
Cu codul în "nori"Sabin Buraga
 
Dezvoltarea aplicațiilor Web (supliment): Modelarea datelor în HTML: microfor...
Dezvoltarea aplicațiilor Web (supliment): Modelarea datelor în HTML: microfor...Dezvoltarea aplicațiilor Web (supliment): Modelarea datelor în HTML: microfor...
Dezvoltarea aplicațiilor Web (supliment): Modelarea datelor în HTML: microfor...Sabin Buraga
 

Similar to Curs gratuitarduino lectia12-conexiunewifi-googledocs (20)

Arduino cereri httpgetpost
Arduino cereri httpgetpostArduino cereri httpgetpost
Arduino cereri httpgetpost
 
Programare Web - De la CGI la servere de aplicatii
Programare Web - De la CGI la servere de aplicatiiProgramare Web - De la CGI la servere de aplicatii
Programare Web - De la CGI la servere de aplicatii
 
CLIW 2017-2018 (7/12) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...
CLIW 2017-2018 (7/12) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...CLIW 2017-2018 (7/12) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...
CLIW 2017-2018 (7/12) JavaScript în navigatorul Web. De la DOM la Ajax şi mas...
 
Prezentare USO - Web Application Integration
Prezentare USO - Web Application IntegrationPrezentare USO - Web Application Integration
Prezentare USO - Web Application Integration
 
HTML5? HTML5!
HTML5? HTML5!HTML5? HTML5!
HTML5? HTML5!
 
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #12): Programare Web....
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #12): Programare Web....Dezvoltarea aplicaţiilor Web la nivel de client (cursul #12): Programare Web....
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #12): Programare Web....
 
WADe 2014—2015 (supliment): Modelarea datelor în HTML: microformate & scheme ...
WADe 2014—2015 (supliment): Modelarea datelor în HTML: microformate & scheme ...WADe 2014—2015 (supliment): Modelarea datelor în HTML: microformate & scheme ...
WADe 2014—2015 (supliment): Modelarea datelor în HTML: microformate & scheme ...
 
Web 2016 (10/13) Servicii Web. De la arhitecturi orientate spre servicii (SOA...
Web 2016 (10/13) Servicii Web. De la arhitecturi orientate spre servicii (SOA...Web 2016 (10/13) Servicii Web. De la arhitecturi orientate spre servicii (SOA...
Web 2016 (10/13) Servicii Web. De la arhitecturi orientate spre servicii (SOA...
 
CLIW 2014—2015 (11/12): Programare Web. API-uri JavaScript în contextul HTML5
CLIW 2014—2015 (11/12): Programare Web. API-uri JavaScript în contextul HTML5CLIW 2014—2015 (11/12): Programare Web. API-uri JavaScript în contextul HTML5
CLIW 2014—2015 (11/12): Programare Web. API-uri JavaScript în contextul HTML5
 
Programare Web - Cookie-uri si sesiuni
Programare Web - Cookie-uri si sesiuniProgramare Web - Cookie-uri si sesiuni
Programare Web - Cookie-uri si sesiuni
 
[Web Days] Manipularea Datelor, Conectivitate Si Performanta In Silverlight 2
[Web Days] Manipularea Datelor, Conectivitate Si Performanta In Silverlight 2[Web Days] Manipularea Datelor, Conectivitate Si Performanta In Silverlight 2
[Web Days] Manipularea Datelor, Conectivitate Si Performanta In Silverlight 2
 
Comunicarea in AS3
Comunicarea in AS3Comunicarea in AS3
Comunicarea in AS3
 
Tice usb 1
Tice usb 1Tice usb 1
Tice usb 1
 
3173119 aplicatii-de-retea
3173119 aplicatii-de-retea3173119 aplicatii-de-retea
3173119 aplicatii-de-retea
 
Flori x
Flori xFlori x
Flori x
 
HTML5 în XXX de minute
HTML5 în XXX de minuteHTML5 în XXX de minute
HTML5 în XXX de minute
 
CLIW 2015-2016 (9/13) Ingineria dezvoltării aplicațiilor JavaScript
CLIW 2015-2016 (9/13) Ingineria dezvoltării aplicațiilor JavaScriptCLIW 2015-2016 (9/13) Ingineria dezvoltării aplicațiilor JavaScript
CLIW 2015-2016 (9/13) Ingineria dezvoltării aplicațiilor JavaScript
 
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #11): Programare Web....
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #11): Programare Web....Dezvoltarea aplicaţiilor Web la nivel de client (cursul #11): Programare Web....
Dezvoltarea aplicaţiilor Web la nivel de client (cursul #11): Programare Web....
 
Cu codul în "nori"
Cu codul în "nori"Cu codul în "nori"
Cu codul în "nori"
 
Dezvoltarea aplicațiilor Web (supliment): Modelarea datelor în HTML: microfor...
Dezvoltarea aplicațiilor Web (supliment): Modelarea datelor în HTML: microfor...Dezvoltarea aplicațiilor Web (supliment): Modelarea datelor în HTML: microfor...
Dezvoltarea aplicațiilor Web (supliment): Modelarea datelor în HTML: microfor...
 

Curs gratuitarduino lectia12-conexiunewifi-googledocs

  • 1.
  • 2. http://www.robofun.ro Curs Gratuit Arduino si Robotica Textul si imaginile din acest document sunt licentiate Attribution-NonCommercial-NoDerivs CC BY-NC-ND Codul sursa din acest document este licentiat Public-Domain Esti liber sa distribui acest document prin orice mijloace consideri (email, publicare pe website / blog, printare, sau orice alt mijloc), atat timp cat nu aduci nici un fel de modificari acestuia. Codul sursa din acest document poate fi utilizat in orice fel de scop, de natura comerciala sau nu, fara nici un fel de limitari. http://www.robofun.ro/forum
  • 3. http://www.robofun.ro Curs Gratuit Arduino si Robotica WiFly Shield Daca ai nevoie sa obtii informatii direct din Internet folosind Arduino, sau sa ai un server web ruland pe Arduino si vrei sa-l accesezi tu din Internet, si toate astea fara fir de retea, atunci WiFly Shield este ceea ce ai nevoie. Functioneaza prin WIFI, se conecteaza la un router si iti ofera conexiune la Internet pe Arduino. Daca nu iti este foarte clar cum functioneaza o retea de calculatoare (termeni gen IP, DNS, MAC, DHCP iti suna ciudat), atunci iti recomand sa citesti mai intai sectiunea in care se discuta despre shield-ul Ethernet pentru Arduino, sectiune in care am prezentat si aceste concepte. Libraria de care vei avea nevoie in codul de mai jos o gasesti in aceasta pagina – http://www.robofun.ro/wifly_shield, descarc-o si instaleaz-o in mediul tau Arduino inainte de a rula exemplul de mai jos. http://www.robofun.ro/forum
  • 4. http://www.robofun.ro Curs Gratuit Arduino si Robotica WiFly Shield – Client Web //pune "" la ambele daca nu ai parola la WIFI #define SSID "networkID" #define PASSPHRASE "password" #include "WiFly.h" #include "Credentials.h" Client client("google.com", 80); void setup() { Serial.begin(9600); WiFly.begin(); if (!WiFly.join(SSID, PASSPHRASE)) { Serial.println("Conectare la reteaua WIFI esuata."); } Serial.println("Conectare in progres..."); if (client.connect()) { Serial.println("Conectare reusita !"); client.println("GET /search?q=arduino HTTP/1.0"); http://www.robofun.ro/forum
  • 5. http://www.robofun.ro Curs Gratuit Arduino si Robotica client.println(); } else { Serial.println("Conectare esuata"); } } void loop() { if (client.available()) { char c = client.read(); Serial.print(c); } if (!client.connected()) { Serial.println(); Serial.println("disconnecting."); client.stop(); for(;;) ; } } Daca ai parcurs deja sectiunea despre Ethernet shield, vei vedea ca ceea ce avem mai sus seamana foarte mult cu codul de acolo. Practic, se modifica doar modul de conectare la retea. Sunt de remarcat cele doua constante de la inceputul programului, care iti permit sa declari care este identificatorul tau de retea WIFI si care este parola. Daca ai o retea fara parola, pune "" in loc de parola si de id de retea. Codul se conecteaza la serverul google.com si afiseaza in Serial Monitor rezultatele cautarii pentru termenul "arduino" (tu vei vedea informatie in format HTML, asa cum am explicat la sectiunea despre Ethernet Shield). WiFly Shield – Server Web //pune "" la ambele daca nu ai parola la WIFI #define SSID "networkID" #define PASSPHRASE "password" #include "WiFly.h" #include "Credentials.h" Server server(80); void setup() { WiFly.begin(); if (!WiFly.join(SSID, PASSPHRASE)) { Serial.println("Conectare la reteaua WIFI esuata."); } Serial.begin(9600); Serial.print("IP: "); http://www.robofun.ro/forum
  • 6. http://www.robofun.ro Curs Gratuit Arduino si Robotica Serial.println(WiFly.ip()); server.begin(); } void loop() { Client client = server.available(); if (client) { boolean current_line_is_blank = true; while (client.connected()) { if (client.available()) { char c = client.read(); if (c == 'n' && current_line_is_blank) { // send a standard http response header client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(); for (int i = 0; i < 6; i++) { client.print("* pe portul analogic "); client.print(i); client.print(" s-a citit valoarea "); client.print(analogRead(i)); client.println("<br />"); } break; } if (c == 'n') { current_line_is_blank = true; } else if (c != 'r') { current_line_is_blank = false; } } } delay(100); client.stop(); } } Exemplul de mai sus creaza un server web care ruleaza pe placa Arduino si la fiecare cerere din browser raspunde cu valorile de pe porturile analogice, ca mai jos. IP-ul server-ului este alocat in mod dinamic de router, asa ca, pentru a sti care este adresa pe care o folosesti in browser, iti recomand sa deschizi Serial Monitor si sa vezi in debug IP-ul alocat placii. Stocarea online a datelor culese de Arduino, folosind Google Docs Google Docs reprezinta o solutie excelenta pentru a loga online date culese cu Arduino. Temperatura, umiditatea sau presiunea atmosferica sunt exemple foarte bune in acest sens. Trimiterea lor online intr-un document Excel se bazeaza pe functionalitatea Forms, oferita de Google Docs. Ideea de http://www.robofun.ro/forum
  • 7. http://www.robofun.ro Curs Gratuit Arduino si Robotica principiu este de a genera un request HTTP din Arduino, care request sa fie perfect similar cu cel generat de pagina din form-ul Google. Astfel, Google este "pacalit" sa creada ca datele trimise de Arduino sunt de fapt trimise de un form creat cu Google Docs. Pentru acest proiect ai nevoie un Arduino cu conectare la Internet. Ai de ales intre Arduino Ethernet sau Arduino UNO + Ethernet Shield. Senzorii sunt la alegerea ta, in functie de ce date vrei sa trimiti in Google Docs. Pentru exemplul de mai jos, eu am ales un BMP085 (ca sa masor presiunea atmosferica si temperatura), si un HIH-4030 pentru masurarea umiditatii. Evident ca tu poti alege ce senzori doresti. Mai departe, acceseaza http://docs.google.com si creaza un document tip spreasheet ("CREATE", apoi "Spreadsheet"). Ar trebui sa vezi un document similar unui document Excel. Din meniul "Tools", alege "Create a form". Form-ul creat ar trebui sa aiba cate un camp de tip "Text" pentru fiecare senzor pe care il vei trimite catre Google Docs. Spre exemplu, eu am creat un camp "temperatura", un camp "umiditate" si un camp "presiune", toate de tip "Text". Selecteaza apoi din meniul "Form (0)" intrarea "Go to live form". Vei vedea formularul creat de Google Docs pentru culegerea datelor. Mai departe, va trebui sa analizezi codul sursa al paginii (in functie de browser-ul pe care il folosesti, acest lucru se face diferit – spre exemplu in Chrome trebuie sa dai click dreapta si apoi sa selectezi "View page source"). In codul sursa al paginii localizeaza sirul de caractere "formkey=". Vei gasi ceva de genul "formkey=dE9MTmlMc3N1RVNfdVJIRkFMNDltaXc6MQ". Acest sir de caractere reprezinta identificatorul unic al formularului tau, identificator pe care Arduino il va utiliza ca sa trimita informatiile. Localizeaza si campurile in care introduci informatia utila (va fi simplu, pentru ca vor fi prefixate de numele campurilor pe care le-ai dat tu cand ai creat formularul – vezi si imaginea de mai jos). Numele acestor campuri ar trebui sa fie ceva de genul "entry.0.single", "entry.1.single", "entry.2.single" si tot asa pentru toate campurile care le-ai declarat. http://www.robofun.ro/forum
  • 8. http://www.robofun.ro Curs Gratuit Arduino si Robotica Mai departe, ca sa trimita datele catre Google, Arduino va trimite o cerere HTTP catre serverul Google, care cerere va fi identica cu cea pe care o trimite browser-ul atunci cand apesi pe butonul "Submit" din formular. Practic, serverul Google va fi convins ca acele date vin din formularul obisnuit si nu din Arduino. http://www.robofun.ro/forum
  • 9. http://www.robofun.ro Curs Gratuit Arduino si Robotica http://www.robofun.ro/forum
  • 10. http://www.robofun.ro Curs Gratuit Arduino si Robotica Codul sursa integral pentru Arduino il gasesti aici - http://robofun.ro/blog/cum-sa-trimiti-loghezi-pe-google-docs-temperatura- presiunea-atmosferica-si-umiditatea-direct-din-arduino . In cele ce urmeaza vom analiza partile interesante din cod. Chiar la inceput ai o declaratie de forma "char formkey[] = "dG9HWmNXWjNRdWhBWG5ITlpNeUVBU2c6MQ";" Aici va trebui sa modifici cheia din cod cu cheia din documentul tau, pe care ai obtinut-o mai sus. Mai departe, in functia "loop" vei gasi denumirile campurilor din document, pe care le-ai identificat deja mai sus. Va trebui sa modifici aceasta zona din cod pentru a trimite exact informatiile culese de tine. Spre exemplu, in cazul meu codul este ca mai jos : String data; data+=""; http://www.robofun.ro/forum
  • 11. http://www.robofun.ro Curs Gratuit Arduino si Robotica data+="entry.2.single="; data+=temperatura; data+="&entry.3.single="; data+=presiune; data+="&entry.4.single="; data+=umiditate; data+="&submit=Submit"; Adaug in varianta data rand pe rand denumirea unui camp si valoarea acestuia, citita de Arduino. Mai departe, codul trimite request-ul catre serverul Google pentru a inregistra informatia in document. http://www.robofun.ro/forum
  • 12. http://www.robofun.ro Curs Gratuit Arduino si Robotica Aceasta a fost lectia 12. In final, as vrea sa te rog sa ne oferi feedback asupra acestei lectii, pentru a ne permite sa le facem mai bune pe urmatoarele. Este vorba despre un sondaj cu 4 intrebari (oricare este optionala), pe care il poti accesa dand click aici. Sau ne poti contacta direct prin email la contact@robofun.ro . Iti multumim, Echipa Robofun.RO http://www.robofun.ro/forum