Introducció a Internet de les Coses - juny 2018

De Wiki d'en Jordi Binefa
La revisió el 11:40, 24 juny 2018 per Jordi (discussió | contribucions) (Alternatives al C de l'Arduino IDE)
Dreceres ràpides: navegació, cerca

En construcció / Under construction

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

Contingut

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

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

Instal·lació de PyQt4. Funciona amb Python 2.7

Instal·lació de PyQt5. Funciona amb Python3

Instal·lació de 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 Windows

Instal·lació de mosquitto a Linux

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 amb el maquinari

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)

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)

Ús d'Indusoft fent servir ModBus RTU

Connexió amb el mòdul ModBus

Configuració a l'Indusoft

Comunicacions amb xarxa Ethernet. Introducció al NodeRED

Ús del NodeRED

Comunicació UDP

Comunicació ModBus TCP

Serveis extra del NodeRED

Instal·lació de nous nodes

Correu electrònic

Open Weather

Panell de control (dashboard)

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

Mosquitto local a l'ordinador

Mosquitto local a la Raspberry Pi

Brokers remots

Ús al NodeRED

Ús a Indusoft

Ú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

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

SSH

screen

Accés sense contrasenya

Túnel invers

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

Visualització

Ginys d'entrada

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

Alternatives al C de l'Arduino IDE

ESP8266. ESP-12E Development Board (novembre 2015)

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

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