Sense fil és la tecnologia que permet la comunicació entre dispositius electrònics, que no es basa en el contacte físic a través de cables. Els aparells que són propers es comuniquen utilitzant ones radioelèctriques mitjançant els emissors i receptors incorporats.
Existeixen diferents tecnologies sense fil, algunes de les més conegudes són:
Wi-Fi: Xarxa de distància mitjana ideada per a substituir els fils d'una xarxa local (LAN).
Bluetooth: Xarxa de poca distància i baix consum de potència ideada per eliminar els cables dels perifèrics com ara auriculars, impressores, teclats, etc.
LoRaWAN: Xarxa de llarg abast i de baix consum (LPWAN) proposada per la LoRa Alliance pel desenvolupament de la Internet de les coses.
En aquest curs ens centrarem en les dues primeres, Wi-Fi i Bluetooth, ja que són les que porta incorporades la ESP32.
En el camp d'internet i l'IoT hi ha una gran varietat de protocols de comunicació per a diferents aplicacions. Per exemple, el protocol SMTP ens permet enviar correus electrònics, l' FTP permet pujar i baixar arxius cap a o des d'un servidor, HTTP que serveix per accedir a pàgines web i interactuar-hi, i MQTT que està especialment dissenyat per a aplicacions IoT on es transmeten petits paquets d'informació.
En aquest curs ens centrarem en el protocol HTTP, ja que és un protocol molt consolidat i àmpliament utilitzat.
El protocol HTTP és vell com la mateixa web. Va ser creat al començament de la dècada de 1990 per definir la manera com viatjaria la informació entre els servidors Web i els usuaris. El protocol HTTP reconeix dues parts que tenen un rol ben diferenciat: el servidor, que conté la informació i el client, que pretén accedir a aquesta informació. Per aquesta raó es diu que té o respon a una estructura client-servidor. Quan accedim a qualsevol pàgina a la Web ho fem emprant el protocol HTTP. En aquest cas nosaltres (o el navegador que usem per accedir) és el client, que demana informació al servidor, la qual generalment és una pàgina, que pot contenir molts elements diferents. Això s'anomena sol·licitud (request). Quan el servidor rep la sol·licitud l'analitza i, si pot, respon enviant la informació sol·licitada. Això s'anomena resposta (response). Si alguna cosa va fallar o el servidor no té la informació sol·licitada, respondreu amb un missatge d'error.
Per arribar al servidor amb la sol·licitud, necessitem saber la seva URL, l'adreça d'internet. De vegades, cal enviar alguna informació addicional a la sol·licitud. Per exemple, si només posem URL "www.google.com", la resposta serà la típica pàgina de cerca. Però si volem demanar a Google que ens busqui alguna cosa, com ara informació sobre l'ESP32, haurem de fer una nova sol·licitud però afegint "ESP32" com a dada addicional perquè Google realitzi la cerca. Això també passa quan emplenem un formulari amb les nostres dades o quan introduïm en una pàgina el nostre nom d'usuari i contrasenya.
Per enviar aquesta informació dins de la sol·licitud, el protocol HTTP té dos mètodes: GET i POST.
Al mètode GET, la informació enviada s'inclou al costat de l'adreça o URL després d'un símbol ? Si s'envien diverses dades, cal separar-les amb el símbol & . Exemple:
En aquest cas la URL www.ejemplo.com/prog.php “apunta” a un programa escrit en el llenguatge PHP que està al servidor al qual li passem els valors dato1 i dato2, que valen respectivament 100 i 200.
El mètode GET és molt simple i senzill d'implementar, però té diversos inconvenients. El principal és la manca de seguretat: les dades enviades estan a la vista de tothom. A més, els valors estan limitats a lletres i números i l'extensió total de l'URL més les dades no pot superar els 2000 caràcters.
El mètode POST no inclou les dades amb l'adreça sinó que les envia a part, de manera no visible. Això és ideal si volem enviar informació delicada o contrasenyes. D'aquesta manera tampoc no hi ha limitació en el format de les dades (podem enviar imatges o vídeos per exemple) ni en la seva longitud. Com a contrapart, és més complicat implementar.
En aquest curs utilitzarem el mètode GET per la seva simplicitat d'implementació.
El mòdul urequest inclou tots els mètodes necessaris per utilitzar el protocol HTTP, així com GET i POST. Veurem com funciona més endavant amb algun exemple.
En l'àmbit de xarxes informàtiques amb accés a internet, cal diferenciar entre:
El punt d'accés ó AP (Acces Point): és un dispositiu que interconnecta dispositius de comunicació sense fils per formar una xarxa sense fils. Normalment també pot connectar-se a una xarxa cablejada, i pot transmetre dades entre els dispositius connectats a la xarxa cable i els dispositius sense fils.
Estació ó STA (Station): cada dispositiu que es connecta amb la xarxa, per exemple un ordinador, un telèfon mòbil o una tablet .
Un microcontrolador ESP32 pot funcionar com a estació o com a punt d'accés. En aquest curs veurem el funcionament com a estació.
Connectar un ESP32 a una xarxa WiFi en mode STATION és molt senzill gràcies al mòdul network de la llibreria estàndard. Un dels mètodes més importants d'aquest mòdul és isconnected(), que retorna l'estat de la connexió com a booleà (cert o fals).
Quan no es necessita la connexió WiFi, és recomanable finalitzar-la, principalment per dos motius:
Estalvi d'energia, especialment quan la placa està alimentada amb bateries. El consum normal del microcontrolador (240 MHz) sense connexió WiFi és de 50 mA i amb connexió WiFi és d' entre 80 i 180 mA.
Estalvi de memòria al microcontrolador.
La desconnexió es realitza posant el mètode active() a False.
Si estem desenvolupant una aplicació de l'Internet de les coses (IoT) on mesurem alguna magnitud física a través d'un o més sensors, podem utilitzar aquesta informació de diferents maneres. Podem disparar una alerta o alarma quan un valor se surt de rang (per exemple si la temperatura és massa elevada) a través d'un mail, un tweet o un SMS; o també podem emmagatzemar els valors mesurats de manera periòdica en algun lloc o servidor per poder veure'ls després i fer algun tipus d'anàlisi (per exemple, com va variar la temperatura al llarg del dia o de la setmana). Per fer això darrer podem triar entre diverses opcions. Entre els serveis més coneguts tenim a Kaa,Thinger, myDevices, Thingsboard o Thingspeak. Alguns s'utilitzen directament al núvol i d'altres es poden instal·lar en un servidor privat, per mantenir la confidencialitat de les nostres dades. En aquest curs ens centrarem en Thingspeak, que compta amb un pla gratuït i a més és molt fàcil de configurar i utilitzar.
Quan fem servir Thingspeak per enviar dades des del nostre dispositiu amb el protocol HTTP, el dispositiu és el client i Thingspeak el servidor. Si volem enviar una dada, com un valor llegit des d'un sensor, hem de fer una sol·licitud a una URL que ens proveeix Thingspeak afegint com a informació addicional aquest valor.
A internet trobaràs diversos tutorials sobre com crear un compte a Thingspeak i com configurar un canal. Un cop creat i configurat el canal a la pestanya Api Keys tenim les claus per escriure o llegir el canal. Aquestes claus (keys) són codis que hem d'utilitzar per accedir al canal i que ens identifiquen com a propietaris (o usuaris autoritzats). Tenim una clau per enviar dades al canal (Write API Key) i una o diverses claus per llegir des del canal (Read API Keys).
Quan tenim un microcontrolador amb la capacitat d'accedir a Internet, s'obre un ventall de possibilitats gairebé infinites. Podem enviar les dades a un servidor web, com hem vist en l'apartat anterior, però també podem enviar alarmes a través de correu o qualsevol altra aplicació, guardar-les directament en un full de càlcul, etc.
Per facilitar aquesta interacció entre diverses aplicacions ja fa anys que han sorgit una sèrie de serveis que actuen com a intermediaris, com per exemple Zapier o IFTTT. En aquest cas treballarem amb IFTTT, que ofereix la possibilitat de crear aplicacions ( applets ) de l'estil “si passa això, fes allò” (if this, then that, d'aquí el seu nom), oferint centenars de possibilitats i combinacions de condicions i accions diferents. L'empresa ofereix un pla gratuït que ens permet crear fins a tres applets i un altre pagament que no té limitacions i compta amb més funcionalitats.
Les applets de IFTTT tenen un disparador (trigger) i una acció associada (action). Les accions poden estar associades a diferents serveis, com fer trucades telefòniques, enviar SMS, un missatge de Telegram, guardar dades a Google Drive, Dropbox o Evernote i els disparadors poden provenir de moltes fonts, com un assistent de veu, un esdeveniment del calendari, un mail o una publicació de Facebook. A IFTTT podem trobar moltes applets ja creades que podem modificar per adaptar-les a les nostres necessitats, però si no en trobem una apropiada, podem crear-ne una de pròpia.
Entre tots els esdeveniments o disparadors de IFTTT, els que ens interessen particularment per a aquesta aplicació són els anomenats Webhooks, que no són altra cosa que sol·licituds web a una determinada URL, proveïda per IFTTT, emprant el protocol HTTP.