Introducció a Internet de les Coses - juny 2018
El contingut d'aquesta wiki s'anirà actualitzant durant la impartició del curs (del 25 al 29 de juny)
Programa del curset d'introducció a Internet de les Coses - juny 2018
Contingut
- 1 Seqüència de presentacions
- 2 Instal·lació de tot el programari
- 3 Presa de contacte
- 4 Perifèrics sense bus de comunicació
- 4.1 Convertidors bidireccionals. Font d'alimentació de 5V a 3,3V
- 4.2 Font d'alimentació de 5V a 3,3V
- 4.3 Botons. Concepte de pull-up
- 4.4 Microrruptors
- 4.5 Relés Reed
- 4.6 Relés de bobina
- 4.7 Relés d'enclavament
- 4.8 Detecció per infrarojos
- 4.9 Potenciòmetres
- 4.10 Encoders
- 4.11 Sensors tàctils
- 4.12 Pont en H. Motors
- 4.13 Servomotors
- 4.14 Sensor ultrasònic
- 5 Perifèrics amb bus de comunicació
- 6 Comunicacions industrials amb port sèrie i ModBus RTU. Introducció a Indusoft
- 7 Comunicacions amb xarxa Ethernet. Introducció al NodeRED
- 8 Protocols específics d'Internet de les Coses
- 9 LoRaWAN
- 10 Comunicació remota amb Raspberry Pi
- 11 HMI de baix cost. Pantalla tàctil Nextion
- 12 Alternatives al C de l'Arduino IDE
- 13 Visualització al núvol
Seqüència de presentacions
20180625
Guia de presentació pel dia 25 de juny de 2018
20180626
Guia de presentació pel dia 26 de juny de 2018
20180627
Guia de presentació pel dia 27 de juny de 2018
20180628
Guia de presentació pel dia 28 de juny de 2018
20180629
Guia de presentació pel dia 29 de juny de 2018
Instal·lació de tot el programari
Controladors
CH340
Guia d'instal·lació en pdf (document de makeit.cat)
Arxiu comprimit del controlador CH341SER.zip
Arxiu CH341SER.zip des de https://github.com/jordibinefa/
FT232
Controlador per a Windows de l'FT232
Arxiu ft232.zip des de https://github.com/jordibinefa/
IDE d'Arduino 1.8.5
Descàrrega de l'Arduino IDE per a instal·lar-ho a l'escriptori
Afegint més microcontroladors (targetes) a l'Arduino IDE
Installing additional cores -Arduino official documentation-
Afegint targeta ESP8266
Afegint la targeta ESP8266 a l'IDE d'Arduino (NodeMCU1.0)
Afegint targeta ESP32
Installing the ESP32 Board in Arduino IDE (Windows instructions)
Afegint la targeta ESP32 a l'IDE d'Arduino (DOIT ESP32 DEVKIT V1)
Afegint targeta Arduino MKR WAN 1300
Guia completa de l'Arduino MKR WAN 1300 d'en Xose Pérez
Getting Started with the Arduino MKR WAN 1300 -Arduino official documentation-
Guia de l'Arduino MKR WAN 1300 d'en Gonzalo Casas
How to send and receive data with the MKR WAN 1300 LoRa module -Arduino official documentation-
MKRWAN library -Arduino official documentation-
putty / gtkterm
El gtkterm és als dipòsits de Debian i Ubuntu. Recordeu d'afegir el vostre usuari al grup dialout
Arxiu putty.exe des de https://github.com/jordibinefa/
git
Guia d'instal·lació per a qualsevol sistema operatiu
Filezilla / Nautilus
FileZilla Client sftp://
Nextion Editor
Descàrrega de l'editor de les pantalles tàctils Nextion
Python
Instal·leu les dues versions de Python més populars, Python 2.7 i Python3 Un cop heu instal·lat el Python3, aneu a la carpeta C:\Users\EL_VOSTRE_USUARI\AppData\Local\Programs\Python\Python36-32 i reanomeneu python.exe per python3.exe, i després afegiu la ruta al PATH. Per a que faci efecte heu de sortir i tornar a entrar a la sessió.
Instal·lació de PyQt4 per Python 2.7 Seleccioneu PyQt4-4.10-gpl-Py2.7-Qt4.8.4-x64.exe si la vostra màquina és de 64 bits
Instal·lació de PyQt5. Funciona amb Python3 (Una altra manera és python3 -m pip install pyqt5)
Instal·lació de pyserial (Una altra manera és python3 -m pip install pyserial)
How to setup Raspbian Stretch Lite on Raspberry Pi 3 to run Python 3 applications
NodeRED
Instal·lació de NodeRED a una distribució de Linux basada en Debian
Instal·lació de NodeRED a Windows
Instal·lació de NodeRED a la Raspberry Pi
Mosquitto
Instal·lació de mosquitto a Linux
Instal·lació de mosquitto a Windows
Indusoft
Descarregueu la versió acadèmica d'InduSoft (InduSoft Educational) o compartim en un disc dur l'arxiu comprimit de 900MB.
Gestió de les llicències d'ús acadèmic (de la pàgina 4 a la 7 del pdf)
Aplicacions de mòbil
Presa de contacte
Conjunt IoT. Prova inicial del maquinari
The Things Network.cat - Xarxa comunitària per a l’Internet de les Coses
Conjunt IoT. Prova de connectivitat a The Things Network
Ampliació de la connectivitat a The Things Network
Placa S4A Programming Learning Board (S4A PLB) amb Arduino Nano (Placa S4A PLB vermella. MakeIt)
Pugeu el codi S4AFirmware16.ino a la placa S4A PLB i fem proves amb l'Scratch For Arduino
Pàgina oficial de Make it! (kit que fa servir la placa S4A Programming Learning Board)
Arxius de disseny en KiCad de la placa S4A Programming Learning Board
Xerrada sobre S4A PLB / Make It! a la llibreria Hispano Americana (pdf i codis -Scratch, ArduBlock i C d'Arduino-)
Placa witty ESP8266
Posada en marxa de la placa witty ESP8266
Placa IoT (Placa IoT blanca. ttn.cat)
Esquema de la placa IoT blanca
Arxius de disseny en KiCad de la placa IoT ttn.cat
Placa ESP32 (TTGO)
Posada en marxa de la placa amb la pantalla Nextion, l'OLED i els relés connectats a l'extensor I2C PCF8574.
ESP32 Hardware Design Guidelines
Raspberry Pi
Accés a la Raspberry Pi mitjançant SSH amb la IP mostrada a la pantalla OLED. Aturada del programa stats. Detecció de tots els dispositius I2C connectats a la placa. Prova dels relés fent servir Python. Posar la imatge del gatet a la pantalla OLED. Verificació de funcionament dels serveis NodeRED i mosquitto, així com de la instal·lació dels nodes node-red-contrib-ttn i node-red-contrib-modbustcp-no-pooling. Prova d'accés al NodeRED pel navegador i el port 1880.
Distribució dels pins del GPIO
An unofficial Python port of Gordon's WiringPi library
Perifèrics sense bus de comunicació
Convertidors bidireccionals. Font d'alimentació de 5V a 3,3V
Convertidors bidireccionals (3,3V <-> 5V)
Bi-Directional Logic Level Converter Hookup Guide (Level shifter)
Two Transistors Form Bidirectional Level Translator
3Bpi - Pi de les Tres Branques
Font d'alimentació de 5V a 3,3V
Botons. Concepte de pull-up
Pull-up and pull-down in 2 minutes!
Microrruptors
Relés Reed
Relés de bobina
Relés d'enclavament
Detecció per infrarojos
Detectors de seguidors de línies
Experiment 6: Line Following with IR Sparkfun Sensors
PIR
motion sensor basics | motion sensor types
Potenciòmetres
Electronics Basics – How a Potentiometer Works
Encoders
How Rotary Encoder Works and How To Use It with Arduino
Sensors tàctils
ESP32 capacitive touch example
Pont en H. Motors
Arduino DC Motor Control Tutorial – L298N | PWM | H-Bridge
Tutorial for MD-L298 Motor Driver Module
Servomotors
Controlar un servo con Arduino
Sensor ultrasònic
Ultrasonic Sensor HC-SR04 and Arduino Tutorial
Complete Guide for Ultrasonic Sensor HC-SR04 with Arduino
Perifèrics amb bus de comunicació
One Wire Interface
DS18B20
Exemple en micropython de comunicació MQTT amb un ESP32 i el sensor DS18B20 (One Wire Interface)
Using Dallas 18B20 temperature sensor on Arduino
SPI
Sensor de temperatura, humitat i altímetre. BME280
Mode SPI: A la línia 34 de BME280_WeatherStation.ino assegureu-vos de tenir:
bme280.parameter.communication = 2;
Connexió a la placa.
VCC VCC GND GND SCL SCK (13) SDA MOSI (11) CSB CS (10) // bme280.parameter.SPI_cs = 2; <-- Canvieu el 2 per un 10 SDO MISO (12)
Connector P2 a la placa S4A PLB
+----------+ +----------+ | GND SCK | | GND 13 | | MISO MOSI| | 12 11 | CS x | 10 9 | | x A4 | | 8 18 | | A5 +5V | | 19 +5V | +----------+ +----------+
Adafruit BME280 Humidity + Barometric Pressure + Temperature Sensor Breakout
BME280 library for SPI interface ( for Arduino - ESP32 )
How to Hookup BME280 Sensor to Arduino using SPI
ESP8266 with two BME280 Sensors over SPI
Ethernet. ENC28J60
Modbus TCP/IP on Arduino Nano + ENC28J60
Tutorial Módulo Ethernet ENC28J60 y Arduino
Cicero’s Ethernet Project (ENC28J60 connected at ESP8266)
RFID
How to Use RFID RC522 With Arduino Nano
I2C
Expansor d'entrades/sortides PCF8574
Biblioteca PCF8574 d'en Rob Tillaart
Sensor de temperatura, humitat i altímetre. BME280
Mode I2C:
A la línia 34 de BME280_WeatherStation.ino assegureu-vos de tenir:
bme280.parameter.communication = 0;
Connexió a la placa.
VCC VCC S4A PLB ESP32 GND GND SCL SCK (19) (A5) (4) SDA MOSI (18) (A4) (15) CSB CS SDO MISO
Connector P2 a la placa S4A PLB
+----------+ +----------+ | GND SCK | | GND 13 | | MISO MOSI| | 12 11 | CS x | 10 9 | | x A4 | | 8 18 | | A5 +5V | | 19 +5V | +----------+ +----------+
Recordeu de fer servir un scanner I2C (s4a_i2c_scanner.ino o esp32_i2cScanner.ino) per saber l'adreça (sovint és la 0x76)
bme280.parameter.I2CAddress = 0x77; <-- Canvieu el 0x77 per 0x76 o l'adreça I2C trobada.
Adafruit BME280 Humidity + Barometric Pressure + Temperature Sensor Breakout
Pantalla OLED
U8g2. Monochrome graphics library for embedded devices
UART
Software Serial
HMISerial
esp32_serialPass.ino Equivalent al Software Serial però en maquinari real sobre l'ESP32
Bluetooth
Comunicacions industrials amb port sèrie i ModBus RTU. Introducció a Indusoft
Ús d'Indusoft fent servir el port sèrie
Introducció al disseny amb InduSoft
Introducció a les comunicacions (1a part)
Introducció a les comunicacions (2a part)
Exemples d'ús fent servir ModBus RTU
Exemple de ModBus RTU fent servir InduSoft i Arduino
Exemple de ModBus RTU fent servir NodeRED i Arduino
Exemple de ModBus RTU fent servir NodeRED i ESP32 (amb la placa IoT PLB)
Comunicacions amb xarxa Ethernet. Introducció al NodeRED
TCP/UDP Capa de transport d'Ethernet
Ús del NodeRED
Exemple de generació de número aleatori amb NodeRED
Interaccionar amb ordres de terminal amb NodeRED
Interacció amb The Things Network des de NodeRED (Fet servir de facto a la prova de bidireccionalitat)
Comunicació UDP
esp8266_udpServer_01.ino Codi UDP per a ESP8266
Codi NodeRED per a esp8266_udpServer_01.ino i esp32_udpServer_01b
Verifiqueu l'adreça del vostre PCF8574 fent servir esp32_i2cScanner_02.ino
esp32_udpServer_01b Codi UDP per a ESP32
Comunicació ModBus TCP
El segon vídeo explica i compara Modbus RTU i Modbus TCP
Arxius per treballar amb Modbus TCP
OPC-UA
Instal·lació de l'OPC-UA a la Raspberry Pi, fent servir Python, i control des d'Indusoft
Protocols específics d'Internet de les Coses
MQTT
QoS. Brokers remots i locals.
MQTT i NodeRED
Exemple amb MQTT i NodeRED emprant ESP8266 i ESP32
Exercici amb MQTT i NodeRED emprant ESP8266
ModBus TCP amb NodeRED (Es farà servir quan s'expliqui el protocol ModBus TCP)
Mosquitto local a l'ordinador
How to Install Mosquitto MQTT Broker/Server on Ubuntu 16.04
Instal·lació de Mosquitto a Windows
Mosquitto local a la Raspberry Pi
How to Install Mosquitto Broker on Raspberry Pi
Ús a Indusoft
Controlador MQTT per a InduSoft
Configuració d'Indusoft per a fer servir MQTT
Ús a Android (MQTTDash)
Exemples
Exemple en micropython de comunicació MQTT amb un ESP32 i el sensor BME280 (I2C)
Exemple en micropython de comunicació MQTT amb un ESP32 i el sensor DS18B20 (One Wire Interface)
CoAP
CoAP. RFC 7252 Constrained Application Protocol
thingTronics ESP8266 12E Arduino Library
CoAP simple server, client library for Arduino IDE, ESP32.
LoRaWAN
Introducció
El sistema de comunicació LoRa va ser inventat per SemTech per a la lectura de comptadors de llum.
LoRa vs LoRaWAN
LoRa vs LoRaWAN-Difference between LoRa and LoRaWAN
Bones pràctiques
En general, la normativa europea de les freqüències de ràdio al voltant dels 868MHz diu que tan sols podem fer un ús d'un 1% per hora de l'espectre (1% de 3600 segons = 36 segons per hora). Als missatges de pujada (uplink), els que tramet el node cap a les passarel·les, la recomanació de bones pràctiques de The Things Network és fer servir l'espectre 30 segons al dia (per tant, és 24 cops més restrictiva que la normativa europea) de temps a l'aire (TOA, Time on Air). Depenent de les característiques de comunicació del missatge el temps a l'aire pot anar entre 30 milisegons (permetent 1000 missatges diaris) i 6 segons (permetent 5 missatges diaris). Això és degut a que els nodes fan broadcasting (emeten a tothom) i més d'una passarel·la pot capturar el mateix missatge. Als missatges de baixada (downlink, de la passarel·la al node) la recomanació de bones pràctiques de The Things Network és fer servir un màxim de 10 missatges al dia.
All what you need to know about regulation on RF 868MHz for LPWan
LoRa
ESP8266 and Arduino using LoRa and AES encryption (19 / juny / 2016)
Adding AES encryption to LoRa at SX1276 on Arduino (15 / juny / 2016)
ESP8266 library for SX1276 using LoRa and PyQt (13 / juny / 2016)
Arduino library for SX1276 using LoRa and PyQt (6 / juny / 2016)
The Things Network
Taller de presentació de The Things Network i exemple d'ús d'un termòstat emprant l'MKR WAN 1300 (Presentació de thethingsnetwork.cat)
Visualització de dades (Presentació de thethingsnetwork.cat)
Pàgina oficial de The Things Network - Catalunya
Pàgina oficial de The Things Network. Gestió web de passarel·les i nodes
NodeRED. Nodes TTN i ús amb MQTT
Cas pràctic d'ús de LoRaWAN. Node de TTGO connectat a The Things Network
Comunicació remota amb Raspberry Pi
SSH, accés segur sense contrasenya i túnel invers SSH
Implementació d'un túnel SSH invers
screen
screen. Persistència de les accions remotes
Raspberry Pi com a punt d'accés
Raspberry Pi com a punt d'accés
HMI de baix cost. Pantalla tàctil Nextion
Biblioteca modificada de Nextion per a IDE d'Arduino(NexConfig.h)
Biblioteca original de Nextion per a Arduino
Pantalla Nextion connectada a la Raspberry Pi
How to use Nextion to work with Raspberry Pi?
Raspberry Pi 3 add-on supplementary document v1.0
A Python library for Nextion smart display management
Nextion HMI with Raspberry PI and NodeRED Video by Oriol Rius
Nextion HMI with Raspberry PI Video by Oriol Rius
Alternatives al C de l'Arduino IDE
ESP8266. ESP-12E Development Board (novembre 2015)
Kolban's book on ESP32 (June 2018)
Kolban's Book on the ESP8266 (November 2016)
LUA
Programming the ESP8266 With Lua
MicroPython
Get on the Good Foot with MicroPython on the ESP32
Exemple en micropython de comunicació MQTT amb un ESP32 i el sensor BME280
Mongoose OS
Mongoose OS. Starting with JavaScript
Visualització al núvol
Visualització de dades (Presentació d'en Xose Pérez de thethingsnetwork.cat)
Plotly
Displaying realtime data on web using plot.ly on S4A PLB
ESP8266’s Witty sending data to plot.ly
ThinkSpeak
Displaying ESP8266’s LDR level on web using ThingSpeak
IoTgo
Grafana
Display ESP8266 sensor data using Grafana and Arduino IDE
Grafana showing MQTT data served by NodeRED Video by Oriol Rius