En aquest cas el nostre microcontrolador es connectarà a una xarxa existent i demanarà una pàgina a un servidor connectat al web.
La pàgina sol·licitada serà https://www.google.cat/search?q=etseib.
// Aquest programa està parcialment basat en els exemples de la pàgina // https://www.arduino.cc/en/Tutorial/LibraryExamples#wifi1010 #include <SPI.h> // Carreguem la biblioteca SPI #include <WiFiNINA.h> // Carreguem la biblioteca WiFiNINA
const char idXarxa[] = "xarxa-wifi"; // Nom del punt d'accés const char contrasenya[] = "contrasenya-wifi"; // Contrasenya de connexió int status = WL_IDLE_STATUS; char server[] = "www.google.cat"; // Servidor al que ens connectarem char pagina[] = "/search?q=etseib"; // Pàgina que volem demanar WiFiClient client;
void setup() { // Inicialització
Serial.begin(9600); // Monitor sèrie
while (!Serial) {
; // Esperem que l'usuari obri el monitor sèrie
}
if (WiFi.status() == WL_NO_MODULE) {
Serial.println("No s'ha trobat el dispositiu Wi-Fi");
while (true); // Bloquegem el programa
}
String versio = WiFi.firmwareVersion();
if (versio < "1.0.0") {
Serial.println("Convindria actualitzar el firmware");
}
while (status != WL_CONNECTED) {
Serial.print("Connectant a la xarxa ");
Serial.println(idXarxa);
status = WiFi.begin(idXarxa, contrasenya);
delay(10000); // Ho tornarem a intentar passats 10 s
}
Serial.print("Connectat a ");
Serial.println(WiFi.SSID());
Serial.print("Estat de la connexió: ");
Serial.println(WiFi.status());
Serial.print("Adreça IP del dispositiu: ");
Serial.println(WiFi.localIP());
Serial.print("Intensitat del senyal: ");
Serial.print(WiFi.RSSI());
Serial.println(" dBm");
Serial.println();
Serial.println("Anem a connectar al servidor");
if (client.connect(server, 80)) { // Si ho hem aconseguit
Serial.println("S'ha fet la connexió al servidor");
client.print("GET ");
client.print(pagina);
client.println(" HTTP/1.1");
client.print("Host: ");
client.println(server);
client.println("Connection: close");
client.println();
}
}
void loop() { // Programa que es repeteix indefinidament
while (client.available()) {
char c = client.read(); // Rebem caràcters del servidor
Serial.write(c);
}
if (!client.connected()) { // Si es talla la connexió
Serial.println();
Serial.println("Ens hem desconnectat del servidor");
client.stop();
while (true); // Es bloqueja aquí
}
}
En aquest programa hi ha la condició que el monitor sèrie estigui obert per a que el programa comenci a funcionar. Això ens permet seguir tot el procés encara que triguem a obrir el monitor sèrie. Quan el microcontrolador hagi de funcionar de manera independent de l'ordinador caldrà eliminar les línies següents per evitar aquest bloqueig.
while (!Serial) {
; // Esperem que l'usuari obri el monitor sèrie
}
La petició que hem fet ha estat fent servir el protocol http (sense encriptació). La majoria de servidors ja no admeten el protocol http i demanen que sempre es faci servir un protocol segur (https), en aquest cas obtindríem una resposta en la que se'ns indicaria que aquesta pàgina s'ha mogut a un servidor https (encriptat) i no ens tornarà la informació.
Llavors hauríem de fer la petició fent servir un protocol segur SSL. En aquest cas caldria modificar les línies marcades en groc tal com es mostra a continuació (cada una al seu lloc).
WiFiSSLClient client;
if (client.connect(server, 443)) {

Aquesta obra d'Oriol Boix està llicenciada sota una llicència no importada Reconeixement-NoComercial-SenseObraDerivada 3.0.