Ore



IoT DotMatrix


                     La domotica integrata con IoT.

In questo articolo, illustro alcuni esempi di domotica tramite rete Wi-Fi, il tutto con un semplice modulo "ESP8266 Nodemcu" e pochi componenti a esso connessi.
La domotica viene applicata in molti settori, svolgendo un ruolo importantissimo nel rendere "intelligenti" le apparecchiature per il controllo remoto a distanza.
La componentistica elettronica utilizzata per questo tabellone con insegne scorrevoli è di facile reperibilità, nel caso non si abbia praticità con la creazione di circuiti stampati fornirò dei link a moduli led già pre-assemblati.
 
Componenti:
1 modulo ESP8266-12 Nodemcu

*****************************************************
      Componenti per un modulo di matrice led 8x8:
1 =  resistenza da 12k 1/4w
1 =  condensatore elettrolitico da 10uf 10v smd CAPMP3216X180
1 =  condensatore ceramico da 100nf smd 0402
64= led 5mm del colore a vostra scelta
1 =  MAX7219 DIL24NAR della Maxim
Datasheet

*****************************************************
in alternativa potrete acquistare moduli
pre-assemblati come questo che troverete su
ebay.



Schema elettrico modulo a matrice di led 8x8  (Clicca sull'immagine per ingrandirla)
 

PCB modulo a matrice di led 8x8 (Download PCB f.to CADCAM GERBER X2)

 

Adesso passiamo all'assemblaggio con il modulo ESP8266 Nodemcu e al collegamento dei 5v.
Come da schema allegato si possono effettuare i collegamenti tra i moduli Led ed il modulo ESP8266 Nodemcu, le connessioni dovrebbero essere più brevi possibili per minimizzare gli effetti dell'induttanza del cablaggio e dell'interferenza magnetica. il Firmware sviluppato ha la possibilità di pilotare in cascata fino a 10 Moduli led con matrice (8*8) pertanto potrete collegarne in seriale fino ad un massimo di 10.
Se in alternativa ai comuni Led, vorrete collegare Led molto più potenti, vi consiglio di adattare il Max7219 con dei transistor in modo da non sollecitare la portata dello stesso Dirver e bruciarlo. A questo punto non vi resta che procurarvi un alimentatore da 5V con amperaggio adeguato al consumo. Se vi può interessare nel video postato sto utilizzando 10 moduli pre-assemblati, con il settaggio massimo di luminosità durante lo scorrimento ho un consumo complessivo di 950 mA.

 
 
 
 
PROGRAMMAZIONE ESP8266 Nodemcu
 
Per programmare il modulo ESP8266 si ha bisogno dell'IDE di Arduino, un cavo USB Type-A--->Micro-B e i driver richiesti, del chip seriale-Usb di cui è corredato il modulo ESP8266.

1: Collegare il modulo ESP8266 al computer tramite cavo USB, eventualmente se richiesto installare i Driver.


2: Aprire l'Ide di Arduino, e settare questi parametri nel menù strumenti. Ovvio che la porta COM deve corrispondere a quella del modulo attaccato al vostro PC.

Una volta eseguite queste due operazioni e verificate che sono andate a buon fine, nello skethc di Arduino copiate il listato seguente, non è niente altro che un Loader, in pratica installa l'ultima versione che ho rilasciato del DOT-Matrix.

Loader.ino (ARDUINO)
/*
 *  Loader DOT-MATRIX ESP8266-12 nodemcu
 *  Created by Capoccettigroup.com, 2018.
 *  This example is in public domain.
 *  
 */

#include <ESP8266WiFi.h>
#include <ESP8266httpUpdate.h>
#define LOG Serial.print
#define LOG2 Serial.println
const char* ssid = "NOME_SSID";// Inserire il proprio SSID
const char* password = "Password";// Inserire la propria Password
const int FW_VERSION = 0;
const char* fwUrlBase = "http://www.capoccettigroup.com/Guest/ESPDOT/";

void setup() {
  Serial.begin(115200);
  Serial.println();
  LOG("Connesso a SSID : ");
  LOG2(ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    LOG(".");
  }
  LOG2("WiFi Connesso");
  FirmwareUpdates();
}

void FirmwareUpdates() {
uint8_t mac[6];
  char macAddr[14];
  WiFi.macAddress( mac );
  sprintf(macAddr, "%02X%02X%02X%02X%02X%02X", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
  Serial.println(macAddr);
  String fwURL = String( fwUrlBase );
  fwURL.concat( "versione");
  String fwVersionURL = fwURL;
  fwVersionURL.concat( ".txt" );
  HTTPClient httpClient;
  httpClient.begin( fwVersionURL );
  int httpCode = httpClient.GET();
  if( httpCode == 200 ) {
    String newFWVersion = httpClient.getString();
    int newVersion = newFWVersion.toInt();
    if( newVersion > FW_VERSION ) {
      LOG2( "Preparazione Aggiornamento..." );
      LOG2( "Attendere......." );
      Serial.flush();
      String fwImageURL = fwURL;
      fwImageURL.concat( ".bin" );
      t_httpUpdate_return ret = ESPhttpUpdate.update( fwImageURL );
      switch(ret) {
        case HTTP_UPDATE_FAILED:
          Serial.printf("HTTP_UPDATE_FAILD Error (%d): %s", ESPhttpUpdate.getLastError(),
           ESPhttpUpdate.getLastErrorString().c_str());
          Serial.printf("\nHTTP_UPDATE_FAILD Error (%d): %s\n", ESPhttpUpdate.getLastError(),
           ESPhttpUpdate.getLastErrorString().c_str());
          Serial.flush();
          break;
        case HTTP_UPDATE_NO_UPDATES:
          LOG2("Non Aggiornato");
          Serial.flush();
          break;
      }
    }
  }
  else {
    LOG( "Aggiornamento firmware fallito, codice " );
    LOG2( httpCode );
    Serial.flush();
  }
  httpClient.end();
  LOG2("Riavvio Modulo...");
  ESP.restart();
}
  
void loop() {
}
Assicuratevi di aver installato le librerie necessarie. Librerie ESP8266 , di aver inserito nello sketch il vostro SSID e la Password, salvatelo e compilate il tutto trasferendolo nel Modulo ESP8266. Se la procedura è andata a buon fine, nel Monitor Seriale di Arduino vi dovrà comparire più o meno quanto segue...

Connesso a SSID : MioWi-Fi
.........WiFi Connesso
0123456789 (MAC modulo ESP8266)
Preparazione Aggiornamento...
Attendere.......

 ets Jan  8 2013,rst cause:2, boot mode:(3,6)

load 0x4010f000, len 1384, room 16
tail 8
chksum 0x2d
csum 0x2d
v09f0c112
@cp:0
ld


Adesso il modulo ESP8266 è programmato, per farlo funzionare bisogna effettuare ancora alcuni passaggi, la configurazione effettiva della connessione wi-fi e indicare dove saranno allocati i file che dovrà andare a leggere in remoto sul server.
 
Preparazione del proprio spazio server:
 

Se non avete a disposizione uno spazio server in rete potete trovare alcuni Hosting gratuiti, importante che abbiano la possibilità di far girare script in PHP. Io personalmente mi trovo benissimo con Aruba.
 
Una volta creato il vostro spazio Hosting, con un programma FTP, create al suo interno una cartella dal nome "SetDot"
 
questa cartella a sua volta conterrà i file che vedrete di seguito per la gestione del DotMatrix.
 
Vediamo la struttura interna della cartella SetDot:


Passiamo alla creazione dei file ed al loro trasferimento nella cartella SetDot:
 
messaggio.txt, create un file txt con al suo interno un qualsiasi messaggio "Hello World" senza <CR>
set.txt, create un file con al suo interno questa scritta: "IMPOSTAZIONI:2:0:0:D:A:F:F" senza <CR>
Questi due file devono essere impostati con le proprietà di scrittura, lettura ed esecuzione, potrete impostare queste proprietà tramite FTP ed il comando CHMOD, nel caso usaste un server Windows con il doppio spazio adibito anche a Linux, dovrete impostare queste proprietà tramite il pannello di controllo.
 
data.php
<?php 
echo date('d/m/Y');
?>
ora.php
<?php
echo date('\o\r\e H:i');
?>
SetRead.php
<?php
$filename = "set.txt"; 
$fp = fopen ($filename, "r");	
$msg = fgets ($fp,5096); 
fclose ($fp);
echo $msg;
?>
SetWriteOk.php
<html>
<head>
<title>IMPOSTAZIONI INVIATE</title>
<style type="text/css">
.style1 {
	font-family: Arial, Helvetica, sans-serif;
	text-align: center;
}
.style2 {
	font-family: Arial, Helvetica, sans-serif;
}
.style3 {
	text-align: center;
}
.style4 {
	font-family: Arial, Helvetica, sans-serif;
	font-size: xx-small;
}
</style>
</head>
<body>
<?php
$messaggio = $_POST['messaggio'];
$velocita = $_POST['velocita'];
$luminosita = $_POST['luminosita'];
$pausa = $_POST['pausa'];
$scorrimento = $_POST['scorrimento'];
$onoff = (isset($_POST['onoff']));
if ($onoff == '1'){
	$onoff = 'A';
}else{
	$onoff = 'S';
}
$data = (isset($_POST['data']));
if ($data == '1'){
	$data = 'T';
}else{
	$data = 'F';
}
$ora = (isset($_POST['ora']));
if ($ora == '1'){
	$ora = 'T';
}else{
	$ora = 'F';
}
$fp = fopen("set.txt","w");
fwrite($fp,"IMPOSTAZIONI:{$velocita}:{$luminosita}:{$pausa}:{$scorrimento}:{$onoff}:{$data}:{$ora}");
fclose($fp);
if ($messaggio <> ''){
$fp = fopen("messaggio.txt","w");
fwrite($fp,"{$messaggio}");
fclose($fp);
}
?>

<p class="style1"> </p>
<p class="style1"> </p>
<p class="style1"> </p>
<p class="style1"><strong>Impostazioni inviate</strong></p>
<p> </p>
<div class="style3">
<span class="style2">
<a href="javascript:history.go(-1);">Ritorna alla pagina precedente</a></span>
<br>
<br>
</div>
<p class="style3"><span class="style4">Created by </span>
<a href="https://www.capoccettigroup.com"><span class="style4">
capoccettigroup.com</span></a></p>
</body>
</html>
txtread.php
<?php 
$filename = "messaggio.txt"; 
$fp = fopen ($filename, "r");
$ms = fgets ($fp,5096);
fclose ($fp);
echo $ms;
?>
SetWrite.html
<html>
<head>
<title>IMPOSTAZIONI DOT-MATRIX</title>
<style type="text/css">
.style1 {
	text-align: center;
}
.style3 {
	text-align: center;
	font-family: Arial, Helvetica, sans-serif;
}
.style4 {
	font-size: xx-small;
}
.style5 {
	font-size: x-large;
}
</style>
</head>
<body>
<div class="style1">
<span class="style5">IMPOSTAZIONI DOT-MATRIX</span> <br>
<br>
<br>
</div>
<form action="SetWriteOk.php" method="post">
<div class="style1">
Messaggio: <br>
<input type="text" size="30" maxlength="380" name="messaggio"> <br>
</div>
<p class="style1">Velocità:</p>
<div class="style1">
	<input type="range" name="velocita" min="1" max="5" value="3">
	<br>
</div>
<p class="style1">Luminosità:</p>
<div class="style1">
	<input type="range" name="luminosita" min="0" max="9" value="1">
	<br>
</div>
<p class="style1">Pausa:</p>
<div class="style1">
	<input type="range" name="pausa" min="0" max="9" value="0">
	<br>
	<br>
<input type="radio" name="scorrimento" value="D" checked> Scorrimento DX SX<br>
<input type="radio" name="scorrimento" value="S" > Scorrimento SX DX<br>
	<br>
<input type="checkbox" name="data" value="" checked > Inserimento Data
	<br>
<input type="checkbox" name="ora" value="" checked > Inserimento Ora
	<br>
<input type="checkbox" name="onoff" value="" checked > on/off
<br>
<br><input type="submit" value="Invia">
</div>
</form>
<p class="style3"><span class="style4">Created by </span>
<a href="https://www.capoccettigroup.com"><span class="style4">
capoccettigroup.com</span></a></p>
</body>
</html>
Settaggio impostazioni ESP8266 Nodemcu:
 

Terminata la fase di programmazione e Upload del modulo, creato quanto descritto per il proprio spazio server passiamo alla configurazione del modulo ESP8266 per collegarlo alla mostra rete Wi-Fi ed indirizzarlo al proprio server per la lettura dei messaggi.
Tramite il WiFi Del vostro computer o telefonino cercate la rete SSID "DOT", collegatevi ad essa, la password è "12345678",

 

 
poi aprite il browser e digitate questo numero Ip 192.168.4.1 che corrisponde all' AP del modulo ESP8266. Vi comparirà la homepage per eseguire le impostazioni
 

 
Nella homepage troverete due link, Configurazione WiFi e Configurazione URL.
Fate click su Configurazione URL, in questa pagina potrete impostare il dominio del vostro server precedentemente configurato. Dovrete inserire nel campo URL Dominio il link che punta alla Root del vostro server in questo modo:
http:\\www.miodominio.xxx e premere il bottone salva URL. Adesso il modulo ESP8266 sa che tutte le informazioni le troverà in quell'URL.
 

 
salvata la configurazione dell'URL tornate alla homepage e fate click su Configurazione WiFi, in questa pagina visualizzerete tutte le informazioni per verificare dove siete connessi oppure impostare il collegamento del modulo ESP8266 alla vostra rete WiFi.
Partendo dall'alto visualizzerete il nome AP del modulo e il suo numero IP,
poi troverete il nome SSID a cui siete connessi con il rispettivo numero IP,
l'Url del dominio a cui il modulo si deve collegare,
la lista delle reti WiFi adiacenti, in questa lista troverete anche la vostra.
Posizionatevi sul campo SSID ed inserite Correttamente il nome della vostra rete, rispettando i caratteri maiuscoli, minuscoli, poi posizionatevi nel campo Password ed inserite la stessa password della vostra rete WiFi.
Premete sul pulsante Connetti.
Adesso tutto è configurato. (Sempreché non abbiate tralasciato qualche passaggio)

 

 
Per una maggiore sicurezza, fate un reset del modulo ESP8266 ed aspettate che faccia il suo ciclo di riavvio. Se tutto funziona visualizzerete il primo messaggio standard nei primi 15 secondi di scorrimento dopodiché inizierà a visualizzare il messaggio contenuto nel vostro server. Il ciclo di aggiornamento dei messaggi e delle impostazioni ha un intervallo di 15 secondi.
 

Cambiare il messaggio o le impostazioni di luminosità e scorrimento:
 

Adesso non vi resta che andare nella pagina web del vostro server per poter cambiare il messaggio o le impostazioni di scorrimento , velocità ecc.
Per fare questo dovrete andare su
http:\\www.miodominio.xxx\SetDot\SetWrite.html
Chiunque vorrà modificare la pagina graficamente potrà farlo a proprio piacimento.
 
 
 
 
Qui trovi la sezione di gestione Display Dot-Matrix tramite Web sviluppata in codice ASP per alcuni test che effettuo da remoto.
   
ATTENZIONE: l'autore non è in alcun modo responsabile per danni di qualunque genere derivanti dal malfunzionamento dei circuiti a cose, persone o animali ecc. Inoltre devono essere rispettate tutte le regole di sicurezza imposte dalla legge e soprattutto dal buonsenso dell'operatore. 

Created by CapoccettiGroup © 2018