Introducció a Internet de les Coses - juny 2018

De Wiki d'en Jordi Binefa
La revisió el 20:24, 5 jul 2018 per Jordi (discussió | contribucions) (Exemples d'ús fent servir ModBus RTU)
Dreceres ràpides: navegació, cerca

El contingut d'aquesta wiki s'anirà actualitzant durant la impartició del curs (del 25 al 29 de juny)

Temari a l'aplicatiu web del Departament d'Ensenyament de la Generalitat 0004990600 Internet de les coses (IoT)

Programa del curset d'introducció a Internet de les Coses - juny 2018

Contingut

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

Download PuTTY

Arxiu putty.exe des de https://github.com/jordibinefa/

git

Guia d'instal·lació per a qualsevol sistema operatiu

git download for Windows

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)

Arxiu MQTT.1.5.exe des de https://github.com/jordibinefa/ per afegir un controlador (driver) MQTT a l'InduSoft

Manual d'ús d'InduSoft

Aplicacions de mòbil

MQTTDash

IoT MQTT Panel

Modbus Viewer

Presa de contacte

Conjunt IoT. Prova inicial del maquinari

The Things Network.cat - Xarxa comunitària per a l’Internet de les Coses

Introducció a LoRaWAN

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.

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

Distribució dels pins del GPIO

WiringPi is a PIN based GPIO access library written in C for the BCM2835, BCM2836 and BCM2837 SoC devices used in all Raspberry Pi

An unofficial Python port of Gordon's WiringPi library

Segnix is an open-source interface library for hardware manipulation based on Linux platform and compatible with Arduino API. You can develop with it by using C/C++ and Python.

GPIO pin naming at Segnix API

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)

Voltage level translation

Two Transistors Form Bidirectional Level Translator

3Bpi - Pi de les Tres Branques

Font d'alimentació de 5V a 3,3V

Mòdul AMS1117 LDO 800mA

Botons. Concepte de pull-up

Pull-up and pull-down in 2 minutes!

Input Interfacing Circuits

Microrruptors

Miniature snap-action switch

Switch Basics

Relés Reed

Reed Relay basics

Relés de bobina

Funcionament d'un relé

Relés d'enclavament

HFD2/005-M-L2-D

Detecció per infrarojos

Detectors de seguidors de línies

Experiment 6: Line Following with IR Sparkfun Sensors

PIR

motion sensor basics | motion sensor types

SECURITY SYSTEM BASICS

Potenciòmetres

Electronics Basics – How a Potentiometer Works

Encoders

How Rotary Encoder Works and How To Use It with Arduino

Sensors tàctils

Touch Sensors

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

ESP8266-MFRC522

I2C

Expansor d'entrades/sortides PCF8574

Biblioteca PCF8574 d'en Rob Tillaart

Un exemple d'ús

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

BME280_WeatherStation_03.ino

Pantalla OLED

U8g2. Monochrome graphics library for embedded devices

UART

Software Serial

SoftwareSerial Library

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

Introducció al Node-RED

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

Introducció a 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)

Configuració de MQTT Dash

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

caption

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.

Limitations: data rate, packet size, 30 seconds uplink and 10 messages downlink per day Fair Access Policy

LoRa airtime calculator

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

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

Comunicació remota amb Raspberry Pi

Algunes ordres útils

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

Nextion Instruction Set

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

LuaNode For ESP32

MicroPython

MicroPython port to ESP8266

MicroPython port to the ESP32

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

Guia d'ús d'IoTgo

Grafana

Display ESP8266 sensor data using Grafana and Arduino IDE

Grafana showing MQTT data served by NodeRED Video by Oriol Rius