Diferència entre revisions de la pàgina «Pàgina principal»

De things.cat
Salta a: navegació, cerca
m (ESP32)
m (Programació remota (OTA))
(Hi ha 57 revisions intermèdies del mateix usuari que no es mostren)
Línia 21: Línia 21:
  
 
== C / C++ ==
 
== C / C++ ==
 +
[https://github.com/jordibinefa/arduino-IDE-libraries Biblioteques per Arduino, ESP8266 i ESP32]
 +
 +
[https://github.com/jordibinefa/arduino-IDE-codes Codis per Arduino, ESP8266 i ESP32]
 +
 
=== ESP8266 ===
 
=== ESP8266 ===
 
[https://wiki.binefa.cat/index.php?title=Afegint_la_targeta_ESP8266_a_l%27IDE_d%27Arduino Afegint la targeta ESP8266 a l'IDE d'Arduino] (NodeMCU1.0)
 
[https://wiki.binefa.cat/index.php?title=Afegint_la_targeta_ESP8266_a_l%27IDE_d%27Arduino Afegint la targeta ESP8266 a l'IDE d'Arduino] (NodeMCU1.0)
  
 
[https://github.com/jordibinefa/arduino-IDE-codes/tree/master/esp8266_udpServer_01b esp8266_udpServer_01.ino] Codi UDP per a ESP8266
 
[https://github.com/jordibinefa/arduino-IDE-codes/tree/master/esp8266_udpServer_01b esp8266_udpServer_01.ino] Codi UDP per a ESP8266
 +
 +
[https://wiki.binefa.cat/index.php?title=MQTT_a_l%27ESP8266 MQTT a l'ESP8266]
  
 
=== ESP32 ===
 
=== ESP32 ===
Línia 32: Línia 38:
  
 
[https://binefa.cat/IoT/modbus/rtu/esp32/ Exemple de ModBus RTU fent servir NodeRED i ESP32 (amb la placa IoT PLB)]
 
[https://binefa.cat/IoT/modbus/rtu/esp32/ Exemple de ModBus RTU fent servir NodeRED i ESP32 (amb la placa IoT PLB)]
 +
 +
[https://techtutorialsx.com/2017/05/06/esp32-arduino-creating-a-task/ ESP32 Arduino: Creating a FreeRTOS task]
 +
 +
[https://savjee.be/2020/01/multitasking-esp32-arduino-freertos/ Multitasking on ESP32 with Arduino and FreeRTOS]
 +
 +
==== ESP-IDF ====
 +
[https://docs.espressif.com/projects/esp-idf/en/latest/esp32/get-started/ Get Started]
 +
 +
[https://docs.platformio.org/en/latest/tutorials/espressif32/espidf_debugging_unit_testing_analysis.html Get started with ESP-IDF and ESP32-DevKitC: debugging, unit testing, project analysis]
  
 
== Python ==
 
== Python ==
 
=== Accés al maquinari de la Raspberry Pi emprant Python ===
 
=== Accés al maquinari de la Raspberry Pi emprant Python ===
 +
[https://wiki.binefa.cat/index.php?title=Com_connectar-hi_pantalles_OLED_SSD1306_(128x64) Com connectar-hi pantalles OLED SSD1306 (128x64)]
 +
 +
[https://wiki.binefa.cat/index.php?title=%C3%9As_d%27entrades_anal%C3%B2giques_amb_l%27ADS115_controlant_sortides_PWM Ús d'entrades analògiques amb l'ADS115 controlant sortides PWM]
 +
 
=== Micropython ===
 
=== Micropython ===
 
[https://blog.miguelgrinberg.com/post/micropython-and-the-internet-of-things-part-i-welcome Micropython and the Internet of Things]
 
[https://blog.miguelgrinberg.com/post/micropython-and-the-internet-of-things-part-i-welcome Micropython and the Internet of Things]
Línia 41: Línia 60:
  
 
[https://github.com/micropython/micropython/tree/master/ports/esp32 MicroPython port to the ESP32]
 
[https://github.com/micropython/micropython/tree/master/ports/esp32 MicroPython port to the ESP32]
 +
 +
[https://icircuit.net/esp32-micropython-getting-started/1999 ESP32 – Getting started with MicroPython]
  
 
[https://hackernoon.com/get-on-the-good-foot-with-micropython-on-the-esp32-decdd32c4720 Get on the Good Foot with MicroPython on the ESP32]
 
[https://hackernoon.com/get-on-the-good-foot-with-micropython-on-the-esp32-decdd32c4720 Get on the Good Foot with MicroPython on the ESP32]
Línia 51: Línia 72:
 
=== Raspbian ===
 
=== Raspbian ===
 
[https://randomnerdtutorials.com/how-to-install-mosquitto-broker-on-raspberry-pi/ How to Install Mosquitto Broker on Raspberry Pi]
 
[https://randomnerdtutorials.com/how-to-install-mosquitto-broker-on-raspberry-pi/ How to Install Mosquitto Broker on Raspberry Pi]
 +
 +
[https://wiki.binefa.cat/index.php?title=Adaptaci%C3%B3_per_a_que_la_Raspberry_Pi_funcioni_com_a_punt_d%27acc%C3%A9s_donant_adreces_IP_de_classe_B Adaptació per a que la Raspberry Pi funcioni com a punt d'accés donant adreces IP de classe B]
 +
 +
[https://wiki.binefa.cat/index.php?title=Instal%C2%B7laci%C3%B3_dels_nodes_node-red-contrib-ttn_i_node-red-contrib-modbustcp-no-pooling_a_la_Raspberry_Pi Instal·lació dels nodes node-red-contrib-ttn i node-red-contrib-modbustcp-no-pooling a la Raspberry Pi]
  
 
[https://wiki.binefa.cat/index.php?title=Instal%C2%B7laci%C3%B3_de_l%27OPC-UA_a_la_Raspberry_Pi,_fent_servir_Python,_i_control_des_d%27Indusoft Instal·lació de l'OPC-UA a la Raspberry Pi, fent servir Python, i control des d'Indusoft]
 
[https://wiki.binefa.cat/index.php?title=Instal%C2%B7laci%C3%B3_de_l%27OPC-UA_a_la_Raspberry_Pi,_fent_servir_Python,_i_control_des_d%27Indusoft Instal·lació de l'OPC-UA a la Raspberry Pi, fent servir Python, i control des d'Indusoft]
 +
 +
[https://wiki.binefa.cat/index.php?title=Pr%C3%A0ctica_de_connexi%C3%B3_remota_a_una_Raspberry_Pi Pràctica de connexió remota a una Raspberry Pi]
  
 
=== Mongoose OS ===
 
=== Mongoose OS ===
Línia 59: Línia 86:
 
= Control remot dels dispositius IoT. Programari =
 
= Control remot dels dispositius IoT. Programari =
 
Al '''programari''' li diem'' '''software''' ''en anglès.
 
Al '''programari''' li diem'' '''software''' ''en anglès.
 +
 +
== Protocols ==
 +
[https://binefa.cat/IoT/teoria/ethernetTcpUdp_00.pdf TCP/UDP Capa de transport d'Ethernet]
 +
 +
[[Instal·lació d'un servidor de sòcols web a un Debian amb Apache]]
 +
 +
 +
=== MQTT(S) ===
 +
[https://binefa.cat/IoT/teoria/mqtt_00.pdf Introducció a MQTT]
 +
 +
[https://www.rs-online.com/designspark/mqtt MQTT] explained by Andy Stanford-Clark (co-inventor of MQTT). Article written in 2017, and refering to v3.1.1
 +
 +
[https://www.hivemq.com/mqtt-5/ MQTT 5 Essentials] by HiveMQ
 +
 +
[http://www.steves-internet-guide.com/mqtt-hosting-brokers-and-servers/ MQTT Brokers/Servers and Cloud Hosting Guide] by Steve's Internet Guide
 +
 +
[http://mqtt-explorer.com/ MQTT Explorer] An all-round MQTT client that provides a structured topic overview
 +
 +
[https://github.com/pixavier/mqtt4snap MQTT a Snap!]
 +
 +
==== Public MQTT(S) brokers ====
 +
[http://test.mosquitto.org/ mosquitto]
 +
 +
[https://www.hivemq.com/public-mqtt-broker/ HiveMQ MQTT broker]
 +
 +
[https://diyprojects.io/8-online-mqtt-brokers-iot-connected-objects-cloud/ MQTT brokers online with a free offer to test and connect IoT to the internet]
  
 
== Programació local (ordinadors d'escriptori i dispositius mòbils) ==
 
== Programació local (ordinadors d'escriptori i dispositius mòbils) ==
Línia 67: Línia 120:
  
 
[http://www.steves-internet-guide.com/downloads/ Instal·lació de Mosquitto a Windows]
 
[http://www.steves-internet-guide.com/downloads/ Instal·lació de Mosquitto a Windows]
 +
 +
Per a actualitzar les claus dels dipòsits de Debian:
 +
wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
 +
sudo apt-key add mosquitto-repo.gpg.key
  
 
=== SCADA ===
 
=== SCADA ===
Línia 76: Línia 133:
  
 
[[Gestió de Node-RED]]
 
[[Gestió de Node-RED]]
 +
 +
[https://www.aprendiendoarduino.com/cursos/node-red-developer-para-iot-nivel-i/ Node-RED Developer para IoT. Nivel I]
  
 
==== UDP ====
 
==== UDP ====
Línia 81: Línia 140:
  
 
==== MQTT(S) ====
 
==== MQTT(S) ====
 +
[https://wiki.binefa.cat/index.php?title=MQTT_i_MQTTS MQTT i MQTTS]
 +
 
[https://binefa.cat/IoT/nodeRed/prj/mqtt_esp8266_esp32/ex00/ Exemple amb MQTT i NodeRED emprant ESP8266 i ESP32]
 
[https://binefa.cat/IoT/nodeRed/prj/mqtt_esp8266_esp32/ex00/ Exemple amb MQTT i NodeRED emprant ESP8266 i ESP32]
  
 
[https://binefa.cat/IoT/nodeRed/prj/mqtt_esp8266_esp32/ex01/ Exercici amb MQTT i NodeRED emprant ESP8266]
 
[https://binefa.cat/IoT/nodeRed/prj/mqtt_esp8266_esp32/ex01/ Exercici amb MQTT i NodeRED emprant ESP8266]
 +
 +
[[Elevador en Snap! controlat remotament amb MQTT mitjançant NodeRED fent crides HTTP]]
 +
 +
[http://mqtt-explorer.com/ MQTT Explorer]
  
 
==== Telegram ====
 
==== Telegram ====
Línia 92: Línia 157:
  
 
[https://binefa.cat/IoT/nodeRed/prj/modbusCtrl/ ModBus TCP al NodeRED]
 
[https://binefa.cat/IoT/nodeRed/prj/modbusCtrl/ ModBus TCP al NodeRED]
 +
 +
==== Alguns nodes extra ====
 +
[https://flows.nodered.org/node/node-red-contrib-google-sheets node-red-contrib-google-sheets]
 +
 +
[https://github.com/sammachin/node-red-contrib-google-sheets node-red-contrib-google-sheets al Github]
  
 
=== Sistemes d'emmagatzematge i visualització ===
 
=== Sistemes d'emmagatzematge i visualització ===
Línia 100: Línia 170:
 
[[Sentilo]]
 
[[Sentilo]]
  
= Teoria =
+
=== Xarxes d'àrea estesa de baix consum (LPWAN) ===
== MQTT(S) ==
+
==== Conceptes teòrics ====
[https://binefa.cat/IoT/teoria/ethernetTcpUdp_00.pdf TCP/UDP Capa de transport d'Ethernet]
+
[https://ca.wikipedia.org/wiki/Xarxa_de_llarg_abast Xarxa de llarg abast (WAN)]
 +
 
 +
[https://ca.wikipedia.org/wiki/Chirp_spread_spectrum Espectre eixamplat (Chirp Spread Spectrum)]
 +
 
 +
[https://ca.wikipedia.org/wiki/Espectre_eixamplat_per_seq%C3%BC%C3%A8ncia_directa Espectre eixamplat per seqüència directa (DSSS)]
 +
 
 +
[https://ca.wikipedia.org/wiki/Espectre_eixamplat_per_salt_de_freq%C3%BC%C3%A8ncia Espectre eixamplat per salt de freqüència (FHSS)]
 +
 
 +
[https://en.wikipedia.org/wiki/LPWAN What is LPWAN?]
 +
 
 +
[https://cms.edn.com/ContentEETimes/Documents/EDN/LP%20WAN%20Comparison%20Table%20final.pdf Comparison table of Low Power WAN alternatives]
 +
 
 +
==== LoRa ====
 +
[https://wiki.binefa.cat/index.php?title=LoRa LoRa]
 +
 
 +
==== SigFox ====
 +
[https://docs.pycom.io/chapter/tutorials/sipy/register.html Registering SiPy with Sigfox]
 +
 
 +
[[Interacció amb SiPy1.0r de pycom]]
 +
 
 +
==== Antenes ====
 +
[https://youtu.be/CJNq2I_PDHQ Andreas Spiess video: "#182 ESP32 Lora Boards: What you need to know before you buy (incl. Antenna knowledge)"]
 +
 
 +
=== Bots ===
 +
==== Bot de Telegram ====
 +
[https://wiki.binefa.cat/index.php?title=Bot_de_Telegram Bot de Telegram]
 +
 
 +
==== Bot de Mastodon ====
 +
No totes les instàncies de [https://ca.wikipedia.org/wiki/Mastodon_(xarxa_social) Mastodon] faciliten la instal·lació de bots. Per a fer les primeres passes us recomano aquesta [https://botsin.space/ instància pensada per allotjar bots de Mastodon].
 +
 
 +
[https://botsin.space/@siarq_sensors Exemple de bot de Mastodon] per a fer lectures de sensors cada hora.
 +
 
 +
[https://gist.github.com/aparrish/661fca5ce7b4882a8c6823db12d42d26 Getting credentials for the Mastodon API with Mastodon.py, step by step]
 +
 
 +
= Una aproximació a OPC-UA =
 +
 
 +
[[OPC-UA]]
 +
 
 +
= Placa IoT-02 =
 +
[[Placa IoT-02]]
 +
 
 +
== Programació remota (OTA) ==
 +
 
 +
[[Image:Esp32Ota.png|center|Programacio OTA de la placa IoT-02]]
 +
 
 +
=== Dos programes de prova de programació remota ===
 +
[https://binefa.cat/training/iot02/ota/IoT-02_OTAWebUpdater_01.zip IoT-02_OTAWebUpdater_01] (Fa pampallugues el led blanc) Per a que us funcioni, haureu d'actualitzar el codi amb el vostre nom de xarxa sense fils (SSID) i la vostra contrasenya d'accés.
 +
 
 +
[https://binefa.cat/training/iot02/ota/IoT-02_OTAWebUpdater_02.zip IoT-02_OTAWebUpdater_02] (Fa pampallugues el led verd) Per a que us funcioni, haureu d'actualitzar el codi amb el vostre nom de xarxa sense fils (SSID) i la vostra contrasenya d'accés.
 +
 
 +
=== Programació a la vora (''edge'') ===
 +
L'ordinador a la vora (''edge'') pot ser un ordinador normal, habitualment de poca potència, del tipus Raspberry Pi.
 +
 
 +
Per a tenir visibilitat externa de la pàgina web servida per la placa IoT-02 (per exemple amb la IP 192.168.1.151:80), ho redireccionarem a un port ( 192.168.1.151:80 --> localhost:5001 )
 +
 
 +
Per a fer funcionar [https://binefa.cat/training/iot02/ota/edge/simple-port-forwarding.js simple-port-forwarding.js] caldrà haver afegit el paquet '''http-proxy''':
 +
 
 +
npm install http-proxy
 +
 
 +
El codi nodejs de redireccionament (suposant que la placa IoT-02 ha adquirit l'adreça IP 192.168.1.151):
 +
var httpProxy = require('http-proxy');
 +
var targetHost = '192.168.1.151';
 +
var portOrigen = 80;
 +
var portDesti = 5001;
 +
httpProxy.createProxyServer({target:'http://' + targetHost + ':' + portOrigen}).listen(portDesti);
 +
 
 +
Per a fer aquest redireccionador sigui un servei, es copia [https://binefa.cat/training/iot02/ota/edge/myForwardingService.service myForwardingService.service] a la carpeta '''/etc/systemd/system''' o el fem de nou amb un editor:
 +
 
 +
cd /etc/systemd/system
 +
sudo nano [https://binefa.cat/training/iot02/ota/edge/myForwardingService.service myForwardingService.service]
 +
sudo chmod 755 myForwardingService.service
 +
sudo systemctl daemon-reload
 +
sudo systemctl '''start''' myForwardingService
 +
 
 +
Per a veure l'estat del servei:
 +
systemctl '''status''' myForwardingService
 +
 
 +
I per a fer que el servei es posi en marxa al reiniciar l'ordinador a la vora:
 +
sudo systemctl '''enable''' myForwardingService
 +
 
 +
=== Programació al núvol ===
 +
Mitjançant una xarxa virtual privada (VPN) de l'estil [https://www.zerotier.com/ ZeroTier] podem fer que l'ordinador a la vora i l'ordinador al núvol comparteixin la mateixa xarxa.
 +
 
 +
Suposant que l'ordinador a la vora té la IP 10.242.156.158, podem redireccionar-hi 10.242.156.158:5001 --> localhost:7007 :
 +
 
 +
var httpProxy = require('http-proxy');
 +
var targetHost = '10.242.156.158';
 +
var portOrigen = 5001;
 +
var portDesti = 7007;
 +
httpProxy.createProxyServer({target:'http://' + targetHost + ':' + portOrigen}).listen(portDesti);
 +
 
 +
I així tenim accés remot des del núvol, connectant mitjançant l'ordinador a la vora que es connecta a la placa IoT-02.
 +
 
 +
Per accedir-hi des del navegador, escriviu a la URL:
 +
<nom_de_domini>:7007
 +
Això visualitzarà el que presenta l'ordinador a la vora (la IP és la VPN a l'ordinador a la vora):
 +
10.242.156.158:5001
 +
Que al seu temps presenta el servei pel port 80 de la placa IOT-02 connectada a la mateixa xarxa local que l'ordinador a la vora:
 +
192.168.1.151
  
[https://binefa.cat/IoT/teoria/mqtt_00.pdf Introducció a MQTT]
+
=== Els tres mètodes de programació OTA de l'ESP32 ===
 +
[https://www.programmersought.com/article/90864120754/ How to implement OTA online update of ESP32 firmware]
  
 
= Formació =
 
= Formació =
21802500 - Màster Industria 4.0 [https://wiki.binefa.cat/index.php?title=Tecnolog%C3%ADas_IoT,_Hands_on_y_MVP Tecnologías IoT, Hands on y MVP] (2019)
+
UPC-School - Màster Industria 4.0 [http://binefa.com/index.php?title=Tecnolog%C3%ADas_IoT,_Hands_on_y_MVP_(2021) Tecnologías IoT, Hands on y MVP (2021)]
 +
 
 +
[http://binefa.com/index.php?title=Nodes_sensors_(motes)_i_passarel%C2%B7les_(gateways) Nodes sensors (motes) i passarel·les (gateways)]  pel [https://www.fundaciocim.org/ca/formacio/master-mtdi Màster en Transformació Digital en la Indústria] (23 de març de 2021)
 +
 
 +
[http://binefa.com/index.php?title=Monitoritzaci%C3%B3_de_la_qualitat_de_l%27aire_mesurant_CO2_i_VOC_amb_LoRa Monitorització de la qualitat de l'aire mesurant CO2 i VOC amb LoRa] (9 de gener de 2021)
 +
 
 +
[[Curset introductori d'Internet de les Coses per ADTelecom]] (Comença el 5 de novembre de 2020)
 +
 
 +
[http://binefa.com/index.php?title=%C3%9As_de_les_dades_generades_pels_sensors_LoRaWAN_i_arquitectura_del_sistema._Rub%C3%AD_2020 Ús de les dades generades pels sensors LoRaWAN i arquitectura del sistema. Rubí, 17 de juny de 2020]
 +
 
 +
[https://wiki.binefa.cat/index.php?title=Curset_a_TE_Connectivity_del_4_de_mar%C3%A7_de_2020 Curset a TE Connectivity del 4 de març de 2020] a [https://www.te.com/ TE Connectivity]
 +
 
 +
[https://wiki.binefa.cat/index.php?title=Introducci%C3%B3_r%C3%A0pida_a_LoRaWAN_i_The_Things_Network Introducció ràpida a LoRaWAN i The Things Network] (Ajuntament de Viladecans, 19 de febrer de 2020)
 +
 
 +
UPC-School - Màster Industria 4.0 [http://binefa.com/index.php?title=Tecnolog%C3%ADas_IoT,_Hands_on_y_MVP_(2020) Tecnologías IoT, Hands on y MVP (2020)]
 +
 
 +
UPC-School - 21802500 - Màster Industria 4.0 [https://wiki.binefa.cat/index.php?title=Tecnolog%C3%ADas_IoT,_Hands_on_y_MVP Tecnologías IoT, Hands on y MVP] (2019)
  
 
[https://wiki.binefa.cat/index.php?title=Introducci%C3%B3_r%C3%A0pida_a_LoRaWAN_i_The_Things_Network Introducció ràpida a LoRaWAN i The Things Network] a l'[http://www.icm.csic.es/ Institut de Ciències del Mar] (27 / setembre / 2018 i 25 / setembre / 2019)
 
[https://wiki.binefa.cat/index.php?title=Introducci%C3%B3_r%C3%A0pida_a_LoRaWAN_i_The_Things_Network Introducció ràpida a LoRaWAN i The Things Network] a l'[http://www.icm.csic.es/ Institut de Ciències del Mar] (27 / setembre / 2018 i 25 / setembre / 2019)
  
 
[https://wiki.binefa.cat/index.php?title=Introducci%C3%B3_a_Internet_de_les_Coses_-_juny_2018 Introducció a Internet de les Coses - juny 2018] (Curset de formació per a professors de CF realitzat a l'[https://agora.xtec.cat/iesramblaprim/ Institut Rambla Prim])
 
[https://wiki.binefa.cat/index.php?title=Introducci%C3%B3_a_Internet_de_les_Coses_-_juny_2018 Introducció a Internet de les Coses - juny 2018] (Curset de formació per a professors de CF realitzat a l'[https://agora.xtec.cat/iesramblaprim/ Institut Rambla Prim])
 +
<!--
 +
[[Sunna LoRa RMM v3.0]]
 +
-->
 +
 +
= Opinió =
 +
[http://www.xavierpi.com/mi40/HaciaUnIoT_democraticoYEfectivo.pdf Hacia un Internet de las Cosas democrático y efectivo] per Xavier Pi (octubre 2018)
  
 
<!--
 
<!--
Línia 118: Línia 309:
  
 
Consulteu la [https://meta.wikimedia.org/wiki/Help:Contents Guia d'Usuari] per a més informació sobre com utilitzar aquest programari wiki.
 
Consulteu la [https://meta.wikimedia.org/wiki/Help:Contents Guia d'Usuari] per a més informació sobre com utilitzar aquest programari wiki.
 +
  
 
== Primers passos ==
 
== Primers passos ==

Revisió del 08:51, 6 abr 2021

things.cat
Una pàgina pràctica sobre la Internet de les Coses

Dispositius IoT. Maquinari i microprogramari

Al maquinari li diem hardware en anglès.

Al microprogramari li diem firmware en anglès.

IoT és l'acrònim d'Internet of Things. En català abreujat li podríem dir IdC per a referir-nos a la Internet de les Coses. En el moment d'escriure aquest text, la comunitat catalanoparlant sembla haver optat per referir-se als dispositius de la Internet de les Coses com a dispositius IoT. Si el termcat es pronuncia de manera diferent, provaré d'adaptar la terminologia.

Controladors

Als controladors els hi diem drivers en anglès.

El xip FT232 ha estat durant molt de temps el xip més comú per convertir d'USB a UART. Fins al punt que se'n van fer còpies pirates. Una actualització del sistema operatiu privatiu Windows va explotar una característica dels xips pirates: els xips pirates tenien el registre d'identificació USB de lectura i escriptura i l'original era tan sols de lectura. L'actualització que va fer Windows provocava l'escriptura d'aquest registre i hi escrivia un zero, que feia que el sistema operatiu ho identifiqués com a concentrador USB i no com a controlador d'UART, fent que el maquinari quedés inservible. A l'any 2014 em vaig veure atrapat amb uns quants Arduino Nano que duien aquest xip pirata i vaig escriure How to recover bricked fake FT232 per a poder-los reprogramar i poder-los fer servir amb sistemes operatius lliures GNU/Linux.

A partir d'aquell moment, bona part de les plaques de fabricació xinesa van començar a dur, massivament, el xip CH340 per a convertir d'USB a UART.

Controlador CH340

Controlador FT232

C / C++

Biblioteques per Arduino, ESP8266 i ESP32

Codis per Arduino, ESP8266 i ESP32

ESP8266

Afegint la targeta ESP8266 a l'IDE d'Arduino (NodeMCU1.0)

esp8266_udpServer_01.ino Codi UDP per a ESP8266

MQTT a l'ESP8266

ESP32

esp32_udpServer_01b Codi UDP per a ESP32

esp32_i2cScanner_02.ino Adreces de dispositius I2C connectats

Exemple de ModBus RTU fent servir NodeRED i ESP32 (amb la placa IoT PLB)

ESP32 Arduino: Creating a FreeRTOS task

Multitasking on ESP32 with Arduino and FreeRTOS

ESP-IDF

Get Started

Get started with ESP-IDF and ESP32-DevKitC: debugging, unit testing, project analysis

Python

Accés al maquinari de la Raspberry Pi emprant Python

Com connectar-hi pantalles OLED SSD1306 (128x64)

Ús d'entrades analògiques amb l'ADS115 controlant sortides PWM

Micropython

Micropython and the Internet of Things

MicroPython port to ESP8266

MicroPython port to the ESP32

ESP32 – Getting started with MicroPython

Get on the Good Foot with MicroPython on the ESP32

Exemple en micropython de comunicació MQTT amb un ESP32 i el sensor DS18B20 (One Wire Interface)

Exemple en micropython de comunicació MQTT amb un ESP32 i el sensor BME280 (I2C)

Sistemes operatius encastats

Raspbian

How to Install Mosquitto Broker on Raspberry Pi

Adaptació per a que la Raspberry Pi funcioni com a punt d'accés donant adreces IP de classe B

Instal·lació dels nodes node-red-contrib-ttn i node-red-contrib-modbustcp-no-pooling a la Raspberry Pi

Instal·lació de l'OPC-UA a la Raspberry Pi, fent servir Python, i control des d'Indusoft

Pràctica de connexió remota a una Raspberry Pi

Mongoose OS

Guia ràpida d'introducció a Mongoose OS[en]

Control remot dels dispositius IoT. Programari

Al programari li diem software en anglès.

Protocols

TCP/UDP Capa de transport d'Ethernet

Instal·lació d'un servidor de sòcols web a un Debian amb Apache


MQTT(S)

Introducció a MQTT

MQTT explained by Andy Stanford-Clark (co-inventor of MQTT). Article written in 2017, and refering to v3.1.1

MQTT 5 Essentials by HiveMQ

MQTT Brokers/Servers and Cloud Hosting Guide by Steve's Internet Guide

MQTT Explorer An all-round MQTT client that provides a structured topic overview

MQTT a Snap!

Public MQTT(S) brokers

mosquitto

HiveMQ MQTT broker

MQTT brokers online with a free offer to test and connect IoT to the internet

Programació local (ordinadors d'escriptori i dispositius mòbils)

Configuració de MQTT Dash (aplicació per Android)

Mosquitto local a l'ordinador

How to Install Mosquitto MQTT Broker/Server on Ubuntu 16.04

Instal·lació de Mosquitto a Windows

Per a actualitzar les claus dels dipòsits de Debian:

wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
sudo apt-key add mosquitto-repo.gpg.key

SCADA

SCADA fent servir Python QML i Arduino

Núvol

Node-RED

Introducció al Node-RED

Gestió de Node-RED

Node-RED Developer para IoT. Nivel I

UDP

Codi NodeRED per a esp8266_udpServer_01.ino i esp32_udpServer_01b

MQTT(S)

MQTT i MQTTS

Exemple amb MQTT i NodeRED emprant ESP8266 i ESP32

Exercici amb MQTT i NodeRED emprant ESP8266

Elevador en Snap! controlat remotament amb MQTT mitjançant NodeRED fent crides HTTP

MQTT Explorer

Telegram

Un exemple d'us de Telegram amb el NodeRed

Modbus TCP

Arxius per treballar amb Modbus TCP El segon vídeo explica i compara Modbus RTU i Modbus TCP

ModBus TCP al NodeRED

Alguns nodes extra

node-red-contrib-google-sheets

node-red-contrib-google-sheets al Github

Sistemes d'emmagatzematge i visualització

Base de dades de sèries temporals InfluxDB

Instal·lació de Grafana a Debian[en]

Sentilo

Xarxes d'àrea estesa de baix consum (LPWAN)

Conceptes teòrics

Xarxa de llarg abast (WAN)

Espectre eixamplat (Chirp Spread Spectrum)

Espectre eixamplat per seqüència directa (DSSS)

Espectre eixamplat per salt de freqüència (FHSS)

What is LPWAN?

Comparison table of Low Power WAN alternatives

LoRa

LoRa

SigFox

Registering SiPy with Sigfox

Interacció amb SiPy1.0r de pycom

Antenes

Andreas Spiess video: "#182 ESP32 Lora Boards: What you need to know before you buy (incl. Antenna knowledge)"

Bots

Bot de Telegram

Bot de Telegram

Bot de Mastodon

No totes les instàncies de Mastodon faciliten la instal·lació de bots. Per a fer les primeres passes us recomano aquesta instància pensada per allotjar bots de Mastodon.

Exemple de bot de Mastodon per a fer lectures de sensors cada hora.

Getting credentials for the Mastodon API with Mastodon.py, step by step

Una aproximació a OPC-UA

OPC-UA

Placa IoT-02

Placa IoT-02

Programació remota (OTA)

Programacio OTA de la placa IoT-02

Dos programes de prova de programació remota

IoT-02_OTAWebUpdater_01 (Fa pampallugues el led blanc) Per a que us funcioni, haureu d'actualitzar el codi amb el vostre nom de xarxa sense fils (SSID) i la vostra contrasenya d'accés.

IoT-02_OTAWebUpdater_02 (Fa pampallugues el led verd) Per a que us funcioni, haureu d'actualitzar el codi amb el vostre nom de xarxa sense fils (SSID) i la vostra contrasenya d'accés.

Programació a la vora (edge)

L'ordinador a la vora (edge) pot ser un ordinador normal, habitualment de poca potència, del tipus Raspberry Pi.

Per a tenir visibilitat externa de la pàgina web servida per la placa IoT-02 (per exemple amb la IP 192.168.1.151:80), ho redireccionarem a un port ( 192.168.1.151:80 --> localhost:5001 )

Per a fer funcionar simple-port-forwarding.js caldrà haver afegit el paquet http-proxy:

npm install http-proxy

El codi nodejs de redireccionament (suposant que la placa IoT-02 ha adquirit l'adreça IP 192.168.1.151):

var httpProxy = require('http-proxy');
var targetHost = '192.168.1.151';
var portOrigen = 80;
var portDesti = 5001;
httpProxy.createProxyServer({target:'http://' + targetHost + ':' + portOrigen}).listen(portDesti);

Per a fer aquest redireccionador sigui un servei, es copia myForwardingService.service a la carpeta /etc/systemd/system o el fem de nou amb un editor:

cd /etc/systemd/system
sudo nano myForwardingService.service
sudo chmod 755 myForwardingService.service
sudo systemctl daemon-reload
sudo systemctl start myForwardingService

Per a veure l'estat del servei:

systemctl status myForwardingService

I per a fer que el servei es posi en marxa al reiniciar l'ordinador a la vora:

sudo systemctl enable myForwardingService

Programació al núvol

Mitjançant una xarxa virtual privada (VPN) de l'estil ZeroTier podem fer que l'ordinador a la vora i l'ordinador al núvol comparteixin la mateixa xarxa.

Suposant que l'ordinador a la vora té la IP 10.242.156.158, podem redireccionar-hi 10.242.156.158:5001 --> localhost:7007 :

var httpProxy = require('http-proxy');
var targetHost = '10.242.156.158';
var portOrigen = 5001;
var portDesti = 7007;
httpProxy.createProxyServer({target:'http://' + targetHost + ':' + portOrigen}).listen(portDesti);

I així tenim accés remot des del núvol, connectant mitjançant l'ordinador a la vora que es connecta a la placa IoT-02.

Per accedir-hi des del navegador, escriviu a la URL:

<nom_de_domini>:7007

Això visualitzarà el que presenta l'ordinador a la vora (la IP és la VPN a l'ordinador a la vora):

10.242.156.158:5001

Que al seu temps presenta el servei pel port 80 de la placa IOT-02 connectada a la mateixa xarxa local que l'ordinador a la vora:

192.168.1.151

Els tres mètodes de programació OTA de l'ESP32

How to implement OTA online update of ESP32 firmware

Formació

UPC-School - Màster Industria 4.0 Tecnologías IoT, Hands on y MVP (2021)

Nodes sensors (motes) i passarel·les (gateways) pel Màster en Transformació Digital en la Indústria (23 de març de 2021)

Monitorització de la qualitat de l'aire mesurant CO2 i VOC amb LoRa (9 de gener de 2021)

Curset introductori d'Internet de les Coses per ADTelecom (Comença el 5 de novembre de 2020)

Ús de les dades generades pels sensors LoRaWAN i arquitectura del sistema. Rubí, 17 de juny de 2020

Curset a TE Connectivity del 4 de març de 2020 a TE Connectivity

Introducció ràpida a LoRaWAN i The Things Network (Ajuntament de Viladecans, 19 de febrer de 2020)

UPC-School - Màster Industria 4.0 Tecnologías IoT, Hands on y MVP (2020)

UPC-School - 21802500 - Màster Industria 4.0 Tecnologías IoT, Hands on y MVP (2019)

Introducció ràpida a LoRaWAN i The Things Network a l'Institut de Ciències del Mar (27 / setembre / 2018 i 25 / setembre / 2019)

Introducció a Internet de les Coses - juny 2018 (Curset de formació per a professors de CF realitzat a l'Institut Rambla Prim)

Opinió

Hacia un Internet de las Cosas democrático y efectivo per Xavier Pi (octubre 2018)