ESPertino, demoboard software

Maestro - ambiente di sviluppo visual studio 2015

Quando si riceve in anteprima una scheda o un microcontroller per me è come iniziare un viaggio, una nuova avventura. Iniziare a studiarne caratteristiche e tecnologie porta sempre ad un arricchimento professionale. Con ESPertino è stato lo stesso, ecco quindi che vorrei condividere con voi il mio viaggio descrivendovi funzionalità, curiosità e possibilità di questa scheda ispirata ad Arduino e gli innumerevoli cloni esistenti. Progetteremo un software da caricare sulla scheda e un altro per Windows per pilotarla facendoli dialogare tramite la porta seriale e in futuro tramite il Blootooth. In pratica una demoboard ma software.

Introduzione

Scopo del progetto, come accennato, sarà realizzare sia un software per pilotare ESPertino, sia un eseguibile per Windows che possa dialogare e comandare ESPertino tramite comunicazione seriale. Collegheremo ad ESPertino diversi sensori e componenti e ogni volta monitoreremo l'attività di questi tramite i due programmi. Al termine del viaggio avremo toccato un po tutti i sensori che si possono collegare a questa scheda cercando d'imparare cose nuove e/o riutilizzandone di già conosciute.

Velocemente, per ogni sensore o componente usato, cercheremo di capirne le caratteristiche principali e come lavora.

DHT11

Il DHT11, vedi figura 1, è un piccolo sensore per misurare temperatura e umidità e dispone di una uscita digitale dei valori rilevati. In questo modo garantisce un'elevata affidabilità e stabilità anche a lungo termine. Questo sensore include una misurazione dell'umidità di tipo resistivo e un termistore per misura della temperatura il tutto collegato ad un microcontroller a 8 bit, che offre eccellenti qualità, velocità di risposta e anti-interferenza.

La calibrazione avviene in laboratorio da parte del produttore e i valori di riferimento sono immagazzinati nel microcontroller. L'interfacciamento è di tipo seriale monodirezionale. Dimensioni ridotte e basso consumo lo rendono perfetto per tutti i progetti di domotica e simili. E' interessante notare come in commercio ve ne siano versioni a 3 e 4 pin, anche se poi se ne usano sempre 3 per il funzionamento.

Foto sensore DHT11

Figura 1: sensore DHT11

Nonostante sia un buon prodotto non dimentichiamo che è pur sempre un sensore nato per l'hobbistica, non mettetelo a contatto con sostanze liquide o lasciatelo solo il sole diretto per ore.

Alimentazione

 3-5.5V DC

Segnale di uscita

 digitale tramite single-bus

Elemento sensibile

 Resistenza in Polimero

Campo di misura umidità

 20-90% di umidità relativa, temperatura di 0-50 gradi Celsius

Precisione

 umidità + -4% RH (Max + -5% di umidità relativa), temperatura +-2.0 Celsius

Sensibilità

 umidità 1% di umidità relativa, temperatura 0.1 Celsius

Ripetibilità umidità

 + -1% di umidità relativa temperatura +-1 Celsius

Umidità isteresi

 + -1% RH

Stabilità a lungo termine

 + -0.5% UR / anno

Tempo di rilevazione

 medio: 2s

Dimensioni

 12 * 15,5 * 5,5 millimetri (variabili a seconda del produttore)

 Iniziamo

Prepariamoci ad analizzare questa prima parte del progetto assicurandoci di avere tutto il necessario:

  • ESPertino
  • Cavo USB (uguale a quello che si usa per Arduino, USB A - micro USB)
  • Sensore DHT11
  • Una resistenza da 10K.
  • PC con Windows 7, 8, 10 con l'IDE di Arduino installato.
  • Visual Studio 2015.

Colleghiamo il DHT11 ad ESPertino come da schema in figura 2:

collegamento dht11

Figura 2: collegamento dht11

Adesso colleghiamo ESPertino alla porta seriale e facciamo l'upload dello sketch. Ricordate di selezionare la scheda dopo aver installato i corretti driver così come spiegato negli articoli precedenti. Io l'ho collegata anche come ESP32 Dev  Module con successo.

//----------------------------------------------
// INTERFACCIA ESPERTINO - MAESTRO
// ver. 1.0.0
//----------------------------------------------
// scritto da Gabriele Guizzardi (Brain & Bytes)
//----------------------------------------------
// Copyright 2017 Elettronica Open Source
//----------------------------------------------

#include <dht.h>
#define sensor 4 
dht DHT;

// onboard LEDs
const int ledPin5 = 5;
const int ledPin13 = 13;
// onboard Relays
const int relPin14 = 14; //K1
const int relPin12 = 12; //K2
String readString;

void setup() {
 // imposta la comunicazione seriale
 Serial.begin(9600);
 delay(500);
 // inizializza i LED e i Relé come OUTPUT
 pinMode(ledPin5, OUTPUT);
 pinMode(ledPin13, OUTPUT);
 pinMode(relPin14, OUTPUT);
 pinMode(relPin12, OUTPUT);
 digitalWrite(ledPin5, HIGH);
 digitalWrite(ledPin13, HIGH);
 Serial.println("Inizio...");
}

void loop() {

 // ricezione dati da seriale
 if (Serial.available() > 0) {
  // 
  while (Serial.available()) {
  delay(3); 
  char c = Serial.read();
  readString += c; 
 }
 // lettura sensore DHT11
 if (readString == "DHT") {
  dht11();
 }

 // spengo il LED 05
 if (readString == "L05") {
  digitalWrite(ledPin5, HIGH);
  Serial.println("LED 5 SPENTO");
 } 
 // accendo il LED 05
 if (readString == "H05") {
  digitalWrite(ledPin5, LOW);
  Serial.println("LED 5 ACCESO");
 }
 // spengo il LED 13
 if (readString == "L13") {
  digitalWrite(ledPin13, HIGH);
  Serial.println("LED 13 SPENTO");
 } 
 // accendo il LED 13
 if (readString == "H13") {
  digitalWrite(ledPin13, LOW);
  Serial.println("LED 13 ACCESO");
 }
 // rilascio il relé 1
 if (readString == "LK1") {
  digitalWrite(relPin14, HIGH);
  Serial.println("K1 (14) SPENTO");
 } 
 // eccito il relé 1
 if (readString == "HK1") {
  digitalWrite(relPin14, LOW);
  Serial.println("K1 (14) ACCESO");
 }
 // rilascio il relé 2
 if (readString == "LK2") {
  digitalWrite(relPin12, HIGH);
  Serial.println("K2 (12) SPENTO");
 } 
 // eccito il relé 2
 if (readString == "HK2") {
  digitalWrite(relPin12, LOW);
  Serial.println("K2 (12) ACCESO");
 }

 readString="";
 }
}

void dht11() { // sensore di temperatura/umidità
 DHT.read11(sensor);

 Serial.print(DHT.humidity);
 Serial.print(";");
 Serial.println(DHT.temperature);

 delay(2000); 
}

Questo semplice programma getta le basi per un futuro ampliamento del codice per poter aggiungere sensori e funzionalità al nostro ESPertino. Vedremo infatti come il programma per Windows utilizzi i comandi di tre lettere per pilotare la scheda. In pratica automatizzeremo quanto stiamo per fare a mano via software.

Procediamo con ordine. Per testare subito se tutto funziona aprite il Monitor Seriale, impostatelo su 9600 baud e premente il pulsante di reset su ESPertino. Vedrete apparire il messaggio "Avvio..." (e forse anche una serie di caratteri spuri, nulla di allarmante) e potrete fare un primo test scrivendo nella casella di testo il comando H13 seguito da Invio. Il LED onboard collegato sul pin 13 della scheda si accenderà. Otterrete anche un messaggio di conferma. Allo stesso modo potete inviare un po tutti i comandi fino ad ora riconosciuti:

  • H13 e L13 accendono e spengono il LED onboard sul pin 13
  • H05 e L05 accendono e spengono il LED onboard sul pin 05
  • HK1 e LK1 eccitano e diseccitano il RELE' onboard sul pin 14
  • HK2 e LK2 eccitano e diseccitano il RELE' onboard sul pin 12
  • DHT richiede una trasmissione di umidità e temperatura dal sensore DHT11 collegato sul pin 04

Come detto nel cappello dell'articolo, implementeremo altri comandi e funzionalità nei futuri articoli.

Se avete anche solo una minima esperienza su Arduino leggere il codice sarà uno scherzo, si tratta di una forma molto semplice di ricezione, dalla porta seriale, dei comandi ricevuti e successiva esecuzione dell'operazione desiderata. In pratica un minuscolo interprete. Come noterete, i LED e il Relé sono accesi o eccitati con dei semplici digitalwrite mentre la lettura del sensore avviene tramite richiamo della funzione DHT11 in fondo al codice.
[...]

ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2379 parole ed è riservato agli abbonati MAKER. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici MAKER e potrai fare il download (PDF) dell'EOS-Book del mese. ABBONATI ORA, è semplice e sicuro.

Abbonati alle riviste di elettronica

5 Commenti

  1. Giovanni Di Maria Giovanni Di Maria 28 settembre 2017
  2. Luca Giuliodori Luca Giuliodori 29 settembre 2017
    • Gabriele Guizzardi. 2 ottobre 2017
  3. Giovanni Carrera Giovanni Carrera 6 ottobre 2017
  4. claudio51 20 ottobre 2017

Scrivi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *