RAS-WiFi e MasterICS

Nel “lontano” 2013 sviluppai, insieme agli amici della Cem Srl, un dispositivo in grado di collegare delle centrali di allarme di modello Advisor Master © e Advisor Advanced © (UTC Fire & Security) ad Internet, mediante un circuito supplementare collegato al normale “bus” delle periferiche di questi dispositivi. Tutto funzionò bene e la prima installazione presso un cliente fu eseguita nell’Agosto 2014. Il dispositivo è in attesa di brevetto come estensione d’utilizzo delle summenzionate centrali.

La versione iniziale del progetto si basava su un circuito di interfaccia con il “bus” della centrale più un’altra scheda “Linux embedded”. I primi esperimenti furono condotti su una scheda Alix, basata su un processore X86, ma successivamente utilizzai una Raspberry PI, con architettura ARM, per ragioni esclusivamente legate al costo. Oggi ci sono delle alternative molto, molto interessanti. Così, ho riscritto l’intero progetto ed ho realizzato questa nuova scheda:

La single-board che permette di gestire la centrale con uno smartphone via internet

La single-board che permette di gestire la centrale con uno smartphone via internet

E’ una piccola meraviglia. Pochi centimetri quadrati ed ho potuto eliminare completamente la scheda “Linux Embedded” e concentrare sul microcontrollore Atmel tutto il lavoro di “bridging” necessario per il controllo remoto. Per la connessione a Internet ho utilizzato un modulo WiFi molto popolare e con un costo contenuto. Uno dei vantaggi di questa nuova versione, oltre a quello economico, è che per rendere operativo l’impianto non si deve più passare attraverso un server dedicato. Basta fare un abbonamento (anche gratuito, ma è meglio a pagamento) presso uno dei servizi tipo DynDns o simili, che rendono “statico” l’IP della vostra connessione ad Internet.

Ovviamente, anche l’applicazione per lo smartphone è cambiata. La precedente Master2Net rimane su Google Play per gli utenti del sistema “maggiore”, ma la nuova App MasterICS è pronta ed è già disponibile per gli utenti su un link privato della Cem Srl. A breve (dopo una serie consistente di collaudi) l’App sarà pubblicata anche su Google Play, disponibile per download gratuito.

La schermata principale dell’App è identica a quella del modello maggiore, come si vede dalla figura sottostante;

L'App per Android. Lo stato mostrato è quello in attesa di connessione.

L’App per Android. Lo stato mostrato è quello in attesa di connessione.

La variazione principale è nell’impostazione dei parametri di connessione. Nella versione precedente, si dovevano inserire i dati relativi al server del produttore (Cem Srl), mentre ora si deve inserire il nome fornito dal servizio DynDns (o simili), la porta di connessione e l’ID della scheda, che viene fornito al momento dell’acquisto. Ecco un esempio:

A sinistra, la lista degli indirizzi web, a destra quella delle schede con la porta di utilizzo e l'ID scheda

A sinistra, la lista degli indirizzi web, a destra quella delle schede con la porta di utilizzo e l’ID scheda

La scheda è in produzione pilota. Per ulteriori informazioni, rivolgersi alla Cem Srl.

DT-4000ZC logger per Android

Aggiornato: 10 Lug 2016
Ho realizzato, qualche tempo fa, un programma in ambiente Windows per collegare al PC un multimetro digitale di tipo DT-4000ZC. Questo multimetro (economico) ha una uscita seriale, ma non invia -come si potrebbe pensare- una serie di caratteri alfanumerici che contengono le informazioni sulla misura in atto, bensì una specie di “bitmap” di tutti i segmenti del display. Quindi, il programma deve “ricostruire” il dato misurato partendo da questi elementi.

Ulteriori spiegazioni si possono trovare nei miei precedenti articoli a questi links:
http://ficara.altervista.org/?p=1581
http://ficara.altervista.org/?p=1602
Il secondo link è stato citato anche dal sito Hack-a-Day:
http://hackaday.com/2013/08/26/logging-two-multimeters-at-nearly-the-same-time/

Ora mi trovo a dover effettuare una registrazione dell’andamento della tensione su una linea di un impianto di allarme e non voglio lasciare il mio notebook utilizzato come logger nel sito dove si trova l’allarme. Ho pensato quindi di riscrivere l’applicazione per Android e farla girare su un vecchio (economicissimo) tablet Android “Made in China” che possiedo.

L’applicazione è estremamente semplice :

La scermata principale

La schermata principale

Abbiamo un riquadro dove compare il contenuto del display LCD e due pulsanti che provocano l’avvio e l’arresto della registrazione. I dati vengono trasmessi dal multimetro secondo un proprio timing, di circa 2 invii al secondo. Se la registrazione è attiva (se il “led” rosso è acceso) ogni dato arrivato viene salvato in un file di log, altrimenti viene solo mostrato sul display. (9 Lug 2016) Ho aggiunto un box per impostare il numero di letture da ignorare, per ridurre le dimensioni del file di log in caso di misure che variano con molta lentezza nel tempo. Facciamo un esempio : quando si avvia la registrazione (log) vengono salvate 3 letture e quindi il programma controlla se l’utente ha settato un numero di campioni da saltare. Diciamo di aver deciso di saltare 27 letture ; il programma NON salverà su disco le successive 27 letture. Finite le letture da saltare, lo strumento registrerà di nuovo tre campioni e quindi il processo ricomincerà. Dato che ci sono approssimativamente 2 letture al secondo, scegliendo un numero di letture da saltare pari a 117, avremo un log di 3 letture ogni 60 secondi.

Ho inoltre fissato anche un limite alla lunghezza del file di log. Quando il contatore delle letture salvate raggiunge 86400, la registrazione si interrompe automaticamente.

Possiamo distinguere la fase di esclusione delle letture dal colore del box che contiene il numero di letture salvate ; se è grigio, ciò che arriva dal multimetro non viene salvato sul log, se invece è verde, la lettura viene salvata e il numero si incrementa.

Ho scelto di salvare tre letture per volta perché il protocollo dei dati inviati dal multimetro non prevede un checksum, quindi se ci fosse un errore nel trasferimento, con tre letture è possibile scartare l’errore facendo la scelta delle “due su tre” buone. Poi, se sono sbagliate più letture consecutive, allora è richiesto l’intervento del vostro Santo Protettore. Comunque, facendo un cavetto dati piuttosto corto (entro un metro), è difficile che ci siano errori…

Registrazione - la casella con il num. di campioni è grigia perché si stanno saltando delle letture

Registrazione – la casella con il numero di campioni salvati è grigia perché si stanno saltando delle letture

Registrazione - la casella con il num. di campioni è verde perché si letture vengono salvate sul log

Registrazione – la casella con il numero di campioni è verde perché le letture vengono salvate sul log

Il file di log viene inizializzato al momento in cui premiamo il pulsante start (quello col cerchio rosso) e gli viene dato il nome log_data_ora.txt (es: log_160706_101820.txt per un log avviato il 6 Luglio 2016 alle ore 10:18:20). Il file viene salvato sulla directory propria del programma, quindi, in questo caso, lo troveremo in Android/data/robotop.DT4Klogger/files/.

Ogni “linea” del file di log contiene l’ora e le informazioni lette dal multimetro. Per esempio:

17:35:44 DC Auto [2.200] V
17:35:44 DC Auto [2.201] V
17:35:45 DC Auto [2.201] V
17:35:56 DC Auto [2.206] V
17:35:57 DC Auto [2.206] V
17:35:57 DC Auto [2.207] V

Per aprire un file di log copiato dal tablet su un PC Windows, usate un text-editor tipo Genie o altri compatibili con la modalità Android (Linux) di terminare le linee di testo con il solo carattere LF (Line Feed, 0x0A), anziché CRLF (Carriage Return & Line Feed – 0x0D 0x0A) come usa Windows.

Quando l’applicazione viene avviata la prima volta, compare una richiesta di autorizzazione all’uso dell’interfaccia USB :

Richiesta di autorizzazione ad usare l'interfaccia USB

Richiesta di autorizzazione ad usare l’interfaccia USB

Diamo quindi l’autorizzazione per proseguire (si dovrà nuovamente toccare l’icona del programma per effettuare l’avvio). Se ci sono problemi con la seriale USB, si riceverà un messaggio di errore :

Oops ! Errore sulla seriale USB

Oops ! Errore sulla seriale USB

Come interfaccia USB ho utilizzato una di quelle schedine USB-TTL che sono comunissime nei negozi on-line e che costano un paio di Euro dai venditori cinesi. La mia utilizza il chip Prolific PL2303 ed è riconosciuta tranquillamente da Android.

Nota: alcuni tablet non riconoscono l’interfaccia USB-TTL se questa è collegata “a caldo”, cioè col tablet già acceso. Se si riceve l’errore “Impossibile usare porta COM”, provare a spegnere completamente il tablet e quindi riaccenderlo con l’interfaccia già collegata.

L’interfaccia USB, però, non basta per collegarsi al multimetro, che ha una presa Jack stereo come connettore d’uscita. Bisogna costruire un minuscolo adattatore. Questo è lo schema :

Lo schemino dell'adattatore

Lo schemino dell’adattatore

Io l’ho costruito direttamente su una striscetta di contatti con 3 pin, senza usare un CS. Ho poi collegato i tre pin all’interfaccia USB con i soliti cavetti Dupont. Il risultato è questo :

Scheda USB-TTL e circuitino adattatore per multimetro

Scheda USB-TTL e circuitino adattatore per multimetro

L’applicazione DT4Klogger.apk può essere scaricata gratuitamente dalla mia pagina Google Play a questo link :
https://play.google.com/store/apps/developer?id=Emilio+P.G.+Ficara

L'icona dell'App

L’icona dell’App

(10 Lug 2016) Note per la versione corrente dell’App gratuita :
1) l’App può essere usata solo su dispositivi che siano in grado di supportare USB OTG e di rilevare correttamente l’interfaccia USB-TTL collegata.
2) l’App attualmente supporta solo l’orientamento verticale. Se si ruota il tablet (o smartphone) l’applicazione viene chiusa.
3) l’App si chiude quando viene mandata in sospensione tramite il pulsante home o se si riceve una chiamata o un avviso.
4) l’App mantiene il dispositivo acceso, quindi il consumo della batteria può essere consistente.

M590 – modulo GSM/GPRS – Esperimenti

Sto realizzando un circuito di controllo di un server tramite SMS e, come al solito, prima di mettermi a scrivere il programma in C per il microcontrollore, faccio dei test con un hardware “minimalista” collegato al notebook. Per scrivere i programmi di test in ambiente Windows, uso spesso il FreeBasic con il supporto dell’IDE FireFly (vedi Links utili); entrambi i programmi sono freeware ed hanno potenzialità notevoli.

Dato che costruirò pochi esemplari di questo circuito di controllo, ho cercato un modulo GSM/GPRS che fosse facile da saldare su un PCB realizzato da me. Per questi progettini non sofisticati, sviluppo da solo il disegno del PCB e poi invio il file Gerber ad una ditta cinese scoperta su “un noto negozio on-line” e quindi ricevo i miei bellissimi circuiti stampati, con tanto di “verde” e di serigrafia, in meno di due settimane, ad un prezzo conveniente. La qualità, per chi avesse dei dubbi, è decisamente buona.

Tra i moduli “facili da saldare” ed economici ho trovato lo M590 della Neoway. Le piazzole di saldatura sono col passo 2.54mm e la documentazione si trova facilmente su Internet, sia quella relativa all’hardware elettronico, sia quella relativa ai vari comandi AT implementati nel software. Un ulteriore punto a favore di questa scelta è che sul “noto negozio on-line” si trovano dei “kit” di montaggio che comprendono il modulo stesso, un PCB e i vari materiali accessori. Ovviamente, tutti (o quasi) i componenti del kit sono in SMD, quindi difficoltosi da saldare per un principiante, ma io ho cominciato a 12 anni ed ora ne ho 60, quindi…

Quindi ho comprato tre di questi kit, da tre venditori diversi (diversificare, diversificare) ed ho atteso pazientemente. Appena è arrivato il primo “kit” mi sono messo all’opera. Per prima cosa ho letto approfonditamente il documento PDF trovato on-line dal titolo: Neoway M590 Hardware Design Manual V1.1.pdf e vi ho trovato molti consigli utili a sviluppare un circuito “come si deve”. Ho allora abbozzato uno schema a blocchi di come avrei realizzato il mio hardware di test.

block-diag-ss

Lo schema a blocchi dell’hardware di test

La cosa su cui più insiste il manuale dell’hardware è l’alimentazione del modulo. Quindi ho deciso che nel circuito di prova avrei usato una batteria ricaricabile al litio, una cella da 3.7V di formato AA (14500, la classica stilo). Il vantaggio di usare una batteria così è che questa è in grado di fornire senza problemi i picchi da 2A che il modulo richiede durante la trasmissione. Una batteria al litio “decente” è in grado di fornire una corrente di 5C, dove C è la capacità nominale, quindi con una cella da 1200mA posso chiedere spunti di 6A e così per l’alimentazione sono a posto. Per ricaricare la batteria, quando questa si scarica, ho costruito un piccolo circuito utilizzando un modulino che si trova on-line “a due lire” ed ho modificato la resistenza di programmazione per avere una corrente di ricarica di 350mA circa.

charger

Il carica-batteria per una cella da 3.7V tipo AA (14500)

Sistemata la sezione di alimentazione, ho visto che il manuale parlava di come uscire da situazioni di blocco software del modulo. Una parte della procedura si può tentare da comandi AT, ma in casi di emergenza, il costruttore consiglia di togliere alimentazione al modulo e ripartire da zero. Allora ho deciso di costruire uno switch controllabile da una linea del convertitore USB-TTL che userò come porta seriale dal PC al modulo. Ho usato un doppio mosfet P-N in single chip, anch’esso comprato on-line. Regge tranquillamente la corrente richiesta e viene attivato o disattivato dalla linea DTR che è controllabile tramite il mio software. Se non si necessita di tale “sofisticazione”, basta usare uno switch “a mano”.

switch-sch

Lo schema elettrico dello switch ON/OFF per l’alimentazione del modulo

Ora, l’ultima cosa rimasta è l’interfaccia seriale. Il convertitore USB-TTL che ho usato (sì, anche questo comprato on-line) è basato sul chip CP2102 ed ha, oltre ai soliti TXd e RXd anche i vari segnali di controllo, tra i quali le uscite DTR e RTS. L’uscita DTR l’ho usata per lo switch, mentre la RTS è inutilizzata, però nel programma di controllo (vedi sotto) c’è un checkbox per controllarne lo stato via software. Il modulo ha tutto il proprio I/O alimentato a 2.85V e il manuale avvisa chiaramente che superando i 3.3V si rompe. Oltre a questo, dallo schema interno si vede che i diodi di protezione portano un eventuale positivo presente su un pin fino in cima alla catena di alimentazione, mantenendo il modulo “parzialmente alimentato” anche in mancanza di Vbat, in una condizione in cui potrebbe “resettarsi male”. Per questa ragione ho usato il circuito consigliato (diodo e resistenza di pull-up verso VccIO) per la linea di ricezione dati. Infatti, se si spegne il modulo, la linea di TX del convertitore USB-TTL continua ad “iniettare” 3.3V sull’uscita. Se avessi solo messo una resistenza, questa tensione sarebbe entrata nel modulo andando ad alimentare (parzialmente) il circuito. Così, invece, il diodo non la lascia passare. Ho usato un BAT34, uno Schottky, perché a 2mA ha un drop di circa 300mV, abbastanza basso. La linea VccIO del modulo tira fuori 2.85V, ma con una corrente max di 3mA. La pull-up di 4K7 è abbondantemente “a specifiche”. L’unica cosa un po’ critica, in questa configurazione, è che i fronti di salita del segnale seriale sono un po’ lenti, dato che dipendono dalla capacità del pin di input e dalla resistenza di pull-up. Il modulo “nasce” con una velocità di trasmissione di 115200 BPS, che significa che ogni bit è “largo” circa 8.7 microsecondi ; un fronte di salita lento potrebbe, randomicamente, provocare un errore nei dati. La soluzione è quella di fornire al modulo il comando per abbassare questa velocità e salvare la nuova impostazione nella configurazione interna. Io uso quasi sempre i 19200 BPS, perché per applicazioni tipo SMS vanno più che bene e le possibilità di errori dovuti a fronti lenti si riducono enormemente.
Per la parte di trasmissione del modulo, ho messo come interfaccia solo una resistenza di protezione da 470 Ohm. E’ da notare che il convertitore USB-TTL che ho usato ha una strana serigrafia: il pin dove c’è scritto TXD non è quello di trasmissione, ma quello di ricezione ! Lo stesso vale per il pin RXD. In pratica, l’allegro ingegnere che ha progettato il circuito ha inteso dire: “questo Pin lo devi collegare a TXD” e non: “questo Pin è TXD”. Una filosofia strana, ma si sa come son fatti gli ingegneri… Fate attenzione, quindi, a non scambiare i Pin, altrimenti non funzionerà. Comunque, un piccolo dispositivo facile-facile per testare il pin di uscita (TXD) è composto da un led rosso e una resistenza da 470 Ohm in serie. Mettete il catodo del led sul pin da testare (TXD) e la resistenza su 3.3V. Con un programma di terminale (o con il mio presente più sotto) inviate un comando; se il led si illumina, il pin TXD è l’uscita, altrimenti provate spostando il catodo del Led sul pin RXD. Quello che fa illuminare il led è il segnale di uscita.
Ora, veniamo al kit. Ho montato il circuito stampato che è arrivato insieme al modulo M590, ma ho apportato qualche modifica, come in figura:

Il kit montato; lato connettore sim

Il kit montato; lato connettore sim

Sullo stampato sono evidenziate le piccole modifiche: ho innanzitutto saldato tra i pin Vbat e Gnd due condensatori (SMD), uno da 100nF e l’altro da 22pF. Servono per filtrare un po’ i disturbi ad alta frequenza sull’alimentazione. Ho poi saldato una resistenza da 4K7 tra il pin RXD (7) e VccIO (6). Questa è la resistenza di pull-up a cui si collegherà l’anodo del diodo BAT34. Il diodo l’ho montato sull’altro circuito (a sinistra) dove ci sono anche lo “switch” e il convertitore USB-TTL. Ho infine cambiato i led, usandone due in package 1206 (uno rosso e uno verde) ed ho cambiato le relative resistenze. Per il led rosso ho usato una resistenza da 1K e per il verde una da 470 Ohm. Con un biadesivo ho poi fissato il portapile per la batteria da 3.7V, in modo da tenere tutto vicino. Il circuito millefori dove c’è il resto del circuito è collegato tramite i soliti cavetti tipo Dupont. Dall’altra parte del CS c’è il modulo M590 e il connettore con i vari segnali. Ho eliminato il condensatore elettrolitico da 470uF e al posto del diodo ho messo un ponticello. In questo modo, il circuito funzionerà con la tensione di batteria.

Il kit montato; lato modulo M590

Il kit montato; lato modulo M590

E’ da notare che le celle ricaricabili al litio da 3.7V, una volta a piena carica forniscono una tensione di 4.2V e arrivano a 3.7V solo quando è rimasta una carica residua di circa il 10%. Una batteria non deve MAI scendere sotto i 2.85V, pena la perdita della proprietà di ricaricarsi. In ogni caso, alimentando il modulo con la batteria, vi accorgerete subito di quando questa si sta scaricando, perché dalla seriale comincerete a ricevere, ogni 3/4 secondi, il prompt MODEM:STARTUP, che indica che c’è stato un reset automatico. Quando la tensione scende sotto i 3.3V, c’è il reset automatico; poi il modulo prova a ripartire e appena va in trasmissione la tensione cade perché c’è un alto assorbimento e così si resetta tutto e ricomincia. Quando arrivate a questa situazione, prendetevi una pausa, mettete la batteria a ricaricare e andate a fare una passeggiata.

Arriviamo, infine, al programma di test. Questo è praticamente uguale a quello presentato per le prove del modulo WiFi ESP-01 (vedi http://ficara.altervista.org/?p=3158), ma ha pre-registrati altri comandi utili per il modulo M590, più i controlli per le linee DTR e RTS. Questi controlli, ovviamente, funzionano solo quando la porta COM è stata aperta con il comando Open. I moduli M590 comprati on-line, si vede chiaramente, sono dissaldati da uno stampato. Io credo che qualcuno abbia comprato uno stock di vecchie schede (migliaia di vecchie schede) ed abbia smontato i modulini, poi abbia fatto fare dei PCB “base” trovando così il modo di vendere la “roba vecchia” sul mercato (vastissimo, ormai) degli appassionati. Però, siccome il modulo è stato dissaldato (i miei tre, sebbene di diversi fornitori, sono tutti così) non è detto che risponda ai comandi con il settaggio “di default” a 115200 BPS. Nel mio caso, il primo che ho provato era “settato” a 38400 BPS. Io, nel mio programma, ho fissato come default 19200 BPS, perché ho già spiegato che è quello che uso più spesso. In ogni caso, fate diverse prove con velocità standard e aspettate di leggere sulla finestra dei messaggi il fatidico: MODEM:STARTUP. Ecco la schermata del programma in funzione:

Lo screenshot del programma in funzione

Lo screenshot del programma in funzione

Nell’esempio mostrato, usando i primi 4 comandi di fila, si è inviato uno SMS. Eccolo come è apparso, immediatamente, sul telefono a cui era destinato:

SMS ricevuto !

SMS ricevuto !

Il programma AT-M590 è un eseguibile puro, non ha bisogno di installazione. Per le istruzioni leggere l’articolo precedente (http://ficara.altervista.org/?p=3158), è tutto uguale. I checkbox DTR e RTS, una volta cliccati (con la COM PORT aperta) provocano il cambio di stato delle relative linee, e sulla finestra dei messaggi compare lo stato logico della linea (3.3V o Gnd). Il file zippato può essere scaricato da questo link. Per scompattare lo zip verrà richiesta una password; questa è: eficara.

Una volta scaricato il file, prima di scompattarlo, verificate che il suo hash MD5 sia: 978903344C7E65C33963E8F9983EE0A1 (vedi Links utili: Hashtab). Questo vi darà la certezza di aver scaricato il file originale, senza errori.

Buona sperimentazione !

AT-commands tool

Aggiornamento – 23 Lug 2016:
– modificato segnalatore inizio commento da // a ;; (per comandi includenti http:// ecc.)
– migliorata fase apertura/chiusura porta seriale
– eliminato invio automatico “AT” e attesa ricezione “OK” all’apertura porta COM
Il nuovo file eseguibile zippato è disponibile a questo link..
La password per scompattare lo zip è: eficara.
Il checksum MD5 è: F98FA8CBBD03F3D9A4E2C222306A111E

Ho deciso di modificare il programma scritto per fare delle prove con il modulo ESP-01, già descritto in un precedente post, perché mi sono trovato ad utilizzare dei modulini low-cost GSM-GPRS per l’invio di SMS. Entrambi i moduli M590 e SIM800 hanno, come di consueto, una serie di comandi AT, così come l’ESP8266. Ho quindi fatto delle aggiunte che dovrebbero rendere lo strumento più comodo ed efficace. Qui sotto potete vedere uno screenshot del programma in funzione.

Atool-ssPer prima cosa ho modificato il nome del programma, cambiandolo da Tool_ESP8266 a ATool, anche perché ho visto che di programmi chiamati “Tool_ESP8266” ce ne sono in giro davvero tanti ! Poi, ho fatto le seguenti modifiche e aggiunte:

Variazioni e aggiunte:

  • modificata default speed da 115200 a 9600 BPS
  • Aggiunti al file save / load anche i valori di COM e SPEED. Il comando load chiude anche la porta seriale, se era aperta; si dovrà quindi eseguire di nuovo un “open”.
  • Aggiunte altre 3 linee di comando, così passano da 9 a 12
  • Modificato il funzionamento dei “send”. Non mandano più un CR-LF a fine stringa
  • Aggiunta possibilità di costruire caratteri di controllo tramite il segno ^. Il carattere successivo a ^ viene calcolato con & 0x1F, permettendo quindi di inserire nella riga programmata vari tipi di caratteri di controllo. Per esempio, ^M verrà trasmesso come 0x0D (CR) e ^J come 0x0A (LF). Con questo sistema si potrà decidere come terminare le stringhe da inviare sulla seriale ed inserire altri caratteri di controllo necessari, ad esempio, nella trasmissione di SMS.
  • Aggiunto un box che indica la lunghezza della stringa nella riga che si sta modificando. La lunghezza non tiene conto dell’eventuale commento // e conta i caratteri di controllo (ad es. ^M) come un singolo byte. Questo è molto utile quando ci sono dei comandi in cui va inserita la lunghezza del pacchetto da trasmettere.
  • Modificato il funzionamento della finestra dei messaggi per la visualizzazione di messaggi da parte del dispositivo collegato anche se la stringa in arrivo non è terminata da CR o LF.

Il programma è stato scritto in FreeBasic, con l’IDE Firefly for FreeBasic. Entrambi i programmi sono disponibili gratuitamente presso i rispettivi siti (vedi colonna a destra della pagina Home, Links utili). Nell’immagine del programma in funzione è possibile vedere come si è ricevuto il testo di una pagina internet, inviando (dopo aver effettuato le fasi preliminari) i comandi AT-CIPSTART= e successivamente AT+CIPSEND= e quindi la stringa GET / . Il file scaricabile liberamente ATool.zip contiene l’eseguibile puro, non c’è bisogno di installazione. Scompattate lo zip in una directory (ad esempio: /downloads/tools) e potrete utilizzarlo immediatamente. Per scompattare lo zip serve una password che è: eficara. Per eseguire il comando “save” è necessario disporre dei permessi di scrittura nella cartella dove risiede l’eseguibile. Se avete scompattato l’eseguibile in una cartella in cui l’utente ha i diritti di scrittura, non c’è problema, altrimenti dovrete eseguire il programma come amministratore. Prima di scompattare lo zip, però, verificatene l’hash MD5: C1BC15FF6CF4A0E77B7661A08DCAD1F0. Se non corrisponde, non scompattate il file, potrebbe essere corrotto o non essere quello originale. Per il calcolo dell’hash MD5 io uso il programma freeware HashTab che può essere scaricato dal sito del produttore (vedi Links utili) e si integra nella Shell di Windows. In pratica, dopo averlo installato, quando cliccherete col destro su un file, tra le “proprietà” ci sarà anche lo strumento per calcolare l’Hash. Questo programma è molto comodo anche per verificare che i files copiati su supporti rimovibili siano esattamente uguali a quelli di origine. Vedrete così quanti errori ci possono essere nelle copie eseguite su memorie di massa USB di basso costo !

Per il momento è tutto. Buona sperimentazione !

ESP8266 Modify default SSID without a compiler

This program has been written in FreeBasic with the IDE FireFly 3.50 ; both tools are free, easy to use and very “light”.  The compiled executable doesn’t need for installation, it’s ready to run. Just download the zipped file ssid_mod.zip and expand it in a working directory (ie. \downloads\esp8266) and there will be the ssid_mod.exe ready to run.
In order to expand the .zip you must supply a password that is: eficara. Be sure that the downloaded file is the original one by checking its MD5 with a tool like HashTab that’s available for free.
The MD5 hash for the zipped file must be: FB94DDF8B155A0511C13A60FE585642D. If it’s different, do not expand the zip, ‘cause it isn’t the original one. Look at the screenshot of the program just executed:

SSIDmod_ssHow it works

Prior to write this software, I tried to modify the original firmware binary file ESP_8266_BIN0.92.bin with a hex-editor, looking for the string “ESP_” that was the prefix of the default SSID. I found the string at address 0x82C4. Well, it was simple. I stored a new SSID string at the same address, with the care to not overcome the memory area reserved for such data. I then saved the new binary file and tried to re-flash my ESP-01 module, but the programmer failed at a certain block. Ok, the simplest solution did not work. The reason was that the binary file isn’t a “true binary”, but is a collection of binary data, instructions, addresses that are used by the programmer software to communicate with the ESP-01 bootloader (when in flash mode). Looking on the internet I discovered an important information: all the blocks in this “no-binary .bin file” are followed by a checksum. The checksum is very simple: it’s just the xor of all the bytes in the block. Then I decided to write this program that simply creates a string with the same checksum of the original one. This is possible due to the easy implementation of the checksum by means of xor ;.if it was done with a real CRC, this programming approach couldn’t have been used.

The string in the original .bin file is “ESP_%02X%02X%02X” that seems to be a constant data or a variable initialization data. This will probably be used in C statement like: printf(“ESP_%02X%02X%02X”, x,y,z) that means send the ascii “ESP_” followed by three bytes of data in HEX format, 2 characters each, capital letters, to the standard output. In our case, the default SSID of the module may be(for example): ESP_9A0FE9 where 9A, 0F and E9 are the three least significative bytes of the MAC address of the WiFi chip. The C compiler saves all the initialization data in a memory area called “data segment” and the linker creates a fixed map of all that areas. So, if we modify some data without overcoming the assigned space, we can change any initialization string. Note that C strings are “null-terminated”, that means that after the ascii characters there is a /0 (0x00). This makes very simple to change the default SSID of the module, in our case. The important thing is that the ‘Replacement String’ must be at least 2 bytes shorter than the one we want to change. This is because we want to change the data in that memory space without changing the full block checksum. This can be obtained in a very easy way. It’s better to explain with an example: suppose that we want to change an initialization string with the contents “ABCDEF” ; the checksum for all the characters will be 0x07 (0x41 xor 0x42 xor 0x43 xor 0x44 xor 0x45 xor 0x46). Now, lets change it in “TEST” ; such string has checksum 0x16 (0x54 xor 0x45 xor 0x53 xor 0x54) , so we simply add after TEST a null-terminator (0x00) and the value that makes the checksum equal to the one of the old string. In this case it’s 0x11 (0x11 xor 0x16 = 0x07). At the end, the ESP C program, when accessing that data, will find a variable at the default address with the contents : 0x54 0x45 0x53 0x54 0x00 (and this is the end of string, for the program) followed by 0x11. The C program will ignore the 0x11 (it’s after the null-termination), but the .bin file will result correct because “ABCDEF” has exactly the same checksum as “TEST” followed by 0x00 and 0x11. That’s all.

Why the original string is 16 characters long (ESP_%02X%02X%02X) and we can only use a max 10 characters SSID ? It could be 14 max (16 of original size, minus 2 for the checksum adjustment), but in this C program only 10 characters are used, even if you write a 14 characters field. I still haven’t a compiler and toolchain for the ESP8266, nor the C sources to look inside, but, for now, I reached my target that is to change the default SSID of the module without using a compiler and a toolchain. 🙂

update: 2016/04/20

I tried the SSID change on a newer version of the firmware (ai-thinker-0.9.5.2-9600.bin), changing the ‘Search String’ to AI-THINKER_%02X%02X%02X, and modifying the wanted SSID, but at the end of re-flashing, the ESP-01 module still presented the old SSID AI-THINKER_A0C76D 🙁 The reason is simple: there is another point in the firmware where the string is saved in plain form. So I changed again the ‘Search String’ as you can see in the picture below and all was OK. Note that in this case, you can use an SSID up to 15 characters long.

new-version_ssReflashing the ESP-01 module

I used a tool called esp8266_flasher.exe to re-flash the ESP-01 module after the default SSID change; here is a screenshot of the operation. Note that the program ends with a failure trying to exit the “flash mode”, but it’s normal, ‘cause my hardware has a physical jumper to enter / leave such operating mode.

flash-downloader-ssThe original firmware, together with the programming tool, was found googling the internet for ESP8266_flasher_V00170901_00_Cloud Update Ready. The original binary file used in my experiments is the one named: ESP_8266_BIN0.92.bin

After resetting the module, the state of the WiFi networks visible from my computer was the one in the picture below. As you can see, I joined my ESP-01 module with SSID named WiFicara01, that was substituted to the one in the original flash rom binary file.

wifi-connected-ss

Software di test per ESP8266

Se qualcuno ha costruito il circuito che ho proposto nel mio precedente articolo sul fantastico IC ESP8266, potrà trovare utile un software di test in ambiente Windows per effettuare qualche prova. So che ci sono in giro applicazioni di tutti i tipi con la stessa funzione, ma di solito preferisco scrivere io stesso i miei programmi perché così ci metto dentro esattamente quello che mi serve, niente di più e niente di meno. Qui sotto si può vedere uno “screenshot” del programma in funzione:

tool_esp8266_ssIl programma è stato scritto in FreeBasic con l’IDE FireFly 3.50; questo ambiente di sviluppo è gratuito, facile da usare, “leggero” ed efficace.  Il programma è un eseguibile puro, non ha bisogno di installazione; una volta scaricato il file zippato Tool_ESP8266.zip si dovrà solo scompattare l’eseguibile in una directory di lavoro (ad es. \downloads\esp8266) e lì ci sara l’EXE pronto all’uso. Per scompattare il file verrà richiesta una password ; questa è eficara. Per verificare che il file zippato sia quello originale, mi raccomando di verificarne il contenuto calcolando l’hash (io uso il programma HashTab V5.10) e controllando che l’ MD5 sia: FC97A53A0465FCA6CD8CA471E2B2623E. Se è diverso, non scompattate il file, non è quello originale.

Caratteristiche del programma

Il programma comunica, attraverso una porta seriale, con il modulo ESP8266. In alto a destra nella schermata dell’applicazione ci sono i campi da riempire per settare la comunicazione seriale. Il numero della COM port potrà essere verificato vedendo, tra le risorse hardware del computer, quale indirizzo è stato assegnato dal sistema al convertitore USB-Seriale che avremo inserito in una delle porte USB del nostro computer. La velocità (speed) è solitamente di 115200 BPS, ma in alcuni moduli ESP molto vecchi (il primo lo comprai più di due anni fa) la comunicazione potrebbe essere inizialmente a 9600 BPS. Per verificare che tutto sia OK, basta inserire il numero della COM port e la velocità e cliccare il pulsante “open”. Se tutto è OK, allora la scritta sul pulsante si trasformerà in “close” e la porta di comunicazione sarà attivata; in caso contrario, si potrà leggere nella finestra dei messaggi la ragione per la quale la comunicazione non è possibile. In pratica, si può ricevere un errore per impossibilità di aprire la porta seriale (ad esempio. se avete sbagliato numero di porta COM) oppure per una velocità errata. In questo caso, riprovate inserendo altre velocità tra quelle standard: 4800, 9600, 19200, 38400, 57600, 115200 o superiori se la vostra interfaccia USB-Seriale le supporta..

Una volta aperta la comunicazione, abbiamo a disposizione alcuni comandi pre-caricati nelle 9 righe di comando. Il contenuto delle righe di comando, ovviamente, può essere modificato secondo le proprie necessità. Notate che a destra di ogni comando AT c’è un commento, iniziato da una doppia barra // ; tutto ciò che scriverete dopo la doppia barra (e la doppia barra stessa) non verrà inviato sulla porta seriale. A destra di ogni riga di comando c’è un pulsante di invio il cui uso è abbastanza intuitivo: invia sulla porta seriale il comando AT contenuto nella riga. Sulla finestra dei messaggi si vedrà il messaggio inviato e la conseguente risposta del modulo ESP collegato. I comandi pre-confezionati, così come li vedete appena aperto il programma, consentono di effettuare tutte le operazioni necessarie per attivare un server TCP sulla porta 80. Nella foto della schermata del programma, vedete l’effetto di un browser che cerca di accedere ad una pagina html del nostro ESP. Ovviamente, il browser rimane “impallato” per mancanza di risposte fino a quando non inviamo il comando sulla riga 9, che chiude la connessione TCP (oppure al timeout in attesa di risposta).

Se modifichiamo i comandi, inserendo al posto di quelli “di default”, quelli che riteniamo utili alla nostra sperimentazione, potremo poi salvarli (tutti insieme) usando il pulsante “save” in alto a destra nel riquadro -disk- ; analogamente, potremo ricaricare una combinazione di comandi salvata usando il pulsante “load”. Bisogna tenere presente che se il programma eseguibile è stato salvato in una directory che richiede i privilegi di amministratore, per salvare un file bisognerà lanciare il programma con i privilegi richiesti, quindi “esegui come amministratore”. Se si è utilizzata una directory con i diritti di scrittura da parte dell’utente, non ci sarà problema.

Per il momento è tutto. Buona sperimentazione !

Nota: a questo link è possibile trovare una nuova versione del programma con alcune importanti migliorie.

Ventola aspirafumi “al-volo”

Ho comprato una piccola lampada per illuminare la zona del tavolo dove costruisco i miei circuiti. Questa lampada è a bassa tensione, molto semplice. Nella base c’è un trasformatore da 220V a 12V di una discreta potenza. E’ molto pesante, quindi fa anche da contrappeso alla struttura. Poi, la tensione alternata a 12V è portata alla lampada alogena attraverso due “antennine” telescopiche che permettono di posizionare la luce all’altezza preferita. Il fatto che la tensione a 12Vca sia presente sulle “antennine”, mi ha fatto venire l’idea di costruire una ventola aspirafumi da utilizzare mentre faccio le saldature. Ho usato una ventola tipica da computer, un ponte di diodi per raddrizzare l’alternata ed un elettrolitico per il livellamento. Per prendere la corrente dalle “antennine” ho utilizzato delle clip metalliche a molla fatte (normalmente) per tenere insieme i fogli. Ecco il prodotto del mio lavoro:

La ventolina costruita in pochi minuti

La ventolina costruita in pochi minuti

Le clip metalliche aderiscono perfettamente alle antennine e sono fatte di materiale che si presta benissimo ad essere stagnato, quindi la saldatura dei fili è estremamente semplice. Ecco la foto della ventolina collegata alla lampada:

La ventola in funzione

La ventola in funzione

Quando faccio le saldature, metto la ventola in modo che aspiri l’aria dalla zona della saldatura e la spinga lontano dal mio naso… Se invece sto scrivendo qualcosa sul computer e fa caldo, giro la ventola in modo che rinfreschi me e pure il notebook !

Per l’uso come aspirafumi, consiglio di aggiungere dal lato dove “soffia”, una spugnetta di quelle nere, che di solito si trovano nelle confezioni di componenti elettronici. In questo modo le particelle dannose del fumo vi resteranno intrappolate e l’aria sarà più pulita.

SMPS – Sono Molto PericoloSi

L’acronimo SMPS, in Inglese, significa: “Switched-Mode Power Supply” e non: “Sono Molto PericoloSi”… Però sono veramente molto pericolosi ! Chiunque volesse cimentarsi nell’autocostruzione o nella riparazione di tali dispositivi, dovrà fare MOLTA attenzione, per non finire FULMINATO !

Le nostre case, ormai, sono disseminate di alimentatori SMPS; ogni telefono o smartphone ne ha uno, come pure ogni notebook, PC, televisore, sistema di illuminazione a LED e chi più ne ha, più ne metta. Un alimentatore SMPS di qualità, progettato bene e costruito con componenti affidabili, è robusto e sicuro, ma molto spesso i costruttori “senza brand” e “low cost” producono circuiti semplificati e con componenti di seconda scelta, con il risultato che un giorno andate ad inserire l’alimentatore nella presa di corrente e quello fa un suono secco e produce una nuvoletta di fumo nero. Questo, se vi va bene… perché ci sono finali peggiori.

Se vi viene voglia di riparare un alimentatore SMPS per il telefonino o comunque un modello di bassa potenza (max 10W), dovete per prima cosa attrezzarvi con un minimo di circuiteria di sicurezza per isolarvi dalla rete elettrica di casa a 220V. I contratti di casa da 2.5KW o 4KW portano sulle vostre prese di corrente una potenza capace di “friggervi” in pochi secondi, quindi… non siate incoscienti e prendete le dovute precauzioni. Non cercate di riparare o comunque di mettere le mani in alimentatori da più di 10W (per esempio, non provateci con gli alimentatori dei notebook) perché al salire della potenza, crescono anche le necessità di sicurezza e di una strumentazione professionale. Per dispositivi di potenza, rivolgetevi a laboratori attrezzati ed a tecnici che abbiano maturato un’esperienza pluriennale nel settore.

Protezione dalla linea 220V con due trasformatori

Protezione per linea 220V con due trasformatori

AVVISO : se volete fare esperimenti e collegare circuiti alla rete elettrica a 220V, lo fate a vostra discrezione e sotto la vostra responsabilità. L’attività in sé è rischiosa e comporta gravi pericoli, tra i quali anche il pericolo di vita. Ho dato risalto a questo avviso, scrivendolo in rosso, per mettere in guardia chiunque volesse replicare gli esperimenti descritti in questo articolo.

Per isolarsi dalla rete elettrica a 220V e disporre comunque di una sorgente di tensione alternata a 220V – 50Hz, la cosa più semplice da fare è quella di collegare tra loro due trasformatori identici attraverso gli avvolgimenti secondari. Io ho utilizzato due alimentatori in alternata, cioè privi di raddrizzatore, provvisti di prese secondarie (24V-18V-15V-12V-9V) perché in questo modo posso creare tensioni in uscita un po’ più alte o un po’ più basse di 220V, a seconda di come posiziono il selettore del trasformatore “primario” e di quello “secondario”. Lo schema elettrico qui sotto chiarirà meglio il concetto.

protect220v-schI selettori select #1 e #2 sono mostrati come se fossero solo con 2 posizioni, mentre ne hanno 5 nella realtà, ma per la nostra applicazione useremo solo le quattro combinazioni possibili con i due selettori mostrati in figura. Nella foto del prototipo circuitale mostrata sopra, si vede il tester che misura 213 Vca sul connettore denominato “220V protetta”; tale valore si ottiene mettendo i selettori #1 e #2 entrambi sulla posizione 24V e collegando il connettore denominato “Linea 220V 50Hz” alla presa di corrente.

Perché ci sono tanti alimentatori SMPS ?

Le ragioni sono di tipo economico e di ingombro. Un alimentatore standard, non switched-mode, è molto semplice (vedi schema)

Alimentatore standard, non regolato

Alimentatore standard, non regolato

In pratica c’è il trasformatore, un ponte raddrizzatore e un condensatore di livellamento. Il circuito è molto semplice e sarebbe anche poco costoso se non fosse per il trasformatore. L’efficienza dei trasformatori, infatti, aumenta con l’aumentare della frequenza. Un trasformatore fatto per funzionare a 50Hz ha bisogno di un notevole “pacco ferromagnetico” per trasferire la potenza dal primario al secondario. Però, purtroppo, la frequenza della linea elettrica a 220V è proprio di 50Hz… Allora come si fa ad usare dei trasformatori più piccoli per ottenere la stessa potenza ? Si realizza uno switched-mode ! In pratica si raddrizza la 220V (diodo e condensatore ad alto voltaggio) e con la tensione continua ottenuta si alimenta un oscillatore ad alta tensione con un’alta frequenza. Poi si utilizza questa alta frequenza in un trasformatore appositamente creato, che sarà molto più piccolo perché alle alte frequenze il pacco ferromagnetico si riduce moltissimo. Alla fine, sul secondario di questo piccolo trasformatore, metteremo di nuovo un raddrizzatore ed un condensatore di livellamento e così otterremo la bassa tensione livellata (ma non ancora stabilizzata).

Abbiamo detto che all’aumentare della frequenza, migliora l’efficienza dei trasformatori. Si è assistito, in questi anni, a un aumentare costante delle frequenze degli alimentatori switched-mode. Ricordo i primissimi che avevano oscillatori a circa 30 KHz, poi si è passati a 50, poi a 100, poi a 300 KHz e ultimamente si è andati oltre 1 MHz ! C’è però un limite, imposto soprattutto dalla irradiazione di frequenze “spurie” di questi circuiti. Gli oscillatori, infatti, sono ad onda rettangolare e con un duty-cycle (pieno/vuoto) variabile in funzione del carico d’uscita. Questo significa che un oscillatore ad oltre 1 MHz crea moltissime armoniche a frequenze tre, cinque, sette, nove (eccetera) volte superiori alla frequenza fondamentale. Un’onda quadra, quindi con un duty-cycle del 50%, genera una terza armonica con 1/3 della potenza della fondamentale, una quinta armonica con 1/5 della potenza, una settima con 1/7 e così via. Un’onda rettangolare (duty-cycle diverso dal 50%) ha sempre una gran quantità di armoniche, ma queste hanno una distribuzione di potenza differente. Se pensiamo che le variazioni di carico modificano continuamente il duty-cycle dell’oscillatore, ci rendiamo conto di quanto sia importante il problema delle emissioni di frequenze spurie. Un trasformatore ben costruito, comunque, tiene gran parte del campo elettromagnetico all’interno del proprio nucleo, ma più si sale di frequenza e più è facile andare a disturbare vari tipi di apparecchi radio.

Vediamo com’è fatto un tipico alimentatore SMPS di bassa potenza. Praticamente ogni caricabatterie per smartphone gli somiglia parecchio !

Un classico alimentatore SMPS di bassa potenza

Un classico alimentatore SMPS di bassa potenza

La sezione 1 è costituita dal circuito raddrizzatore / livellatore che trasforma l’alternata a 110/220V in una continua ad alta tensione che verrà usata per alimentare l’oscillatore ad alta frequenza. La sezione 2 è l’oscillatore ad alta frequenza che ha come carico il primario del trasformatore. La sezione 3 è il raddrizzatore / livellatore a bassa tensione, collegato al secondario del trasformatore. La sezione 4 è l’elemento che permette la stabilizzazione della tensione di uscita. In pratica è la “retroazione” o “feedback” per l’oscillatore. Per tenere isolata la parte a bassa tensione da quella ad alta tensione, si usa un fotoaccoppiatore. Il diodo zener costituisce l’elemento stabilizzatore ed agisce facendo accendere il led del fotoaccoppiatore quando la tensione d’uscita supera quella di zener (più la caduta del diodo led). Il transistor del fotoaccoppiatore modifica di conseguenza il funzionamento dell’oscillatore ad alta frequenza producendo così una bassa tensione costante al variare del carico. Questa è una semplificazione del funzionamento dell’alimentatore SMPS. Ci sono molte altre cose da conoscere sull’argomento e consiglio a chi volesse imparare davvero per bene di leggere i numerosi datasheets degli integrati più recenti per comprendere a fondo la teoria di questi circuiti e tutti i trucchi per ottimizzarne le prestazioni. Per fare pratica, ci sono anche delle “evaluation board” vendute da fornitori on-line di materiale elettronico. In alternativa, si può smontare il caricabatterie di un telefono e si troverà qualcosa di molto simile al circuito mostrato nella figura. Mi raccomando, siate prudenti. Questi circuiti sono pericolosi ! Se ci lasciate la pelle, non mandate da me i vostri eredi a lamentarsi della vostra prematura dipartita. Io vi ho avvisati !

Un esempio pratico

Qualche tempo fa vidi su un “noto negozio on-line” uno stock di 5 alimentatori SMPS di vecchio modello. Costavano veramente poco ed erano di produzione marcata STMicroelectronics, quindi di ottima qualità. Decisi di comprarli perché volevo utilizzarli per realizzare degli alimentatori da 9V per alcuni miei prototipi. Nella foto qui sotto vedete l’etichetta che era presente sul contenitore, ed il circuito interno dalla parte saldature e da quella dei componenti.

Caricabatterie di vecchia produzione, ma di buona qualità

Caricabatterie di vecchia produzione, ma di buona qualità

Come si vede dalla figura, all’interno c’era un secondo circuito, dotato perfino di un microcontrollore ST6. La ragione per questa “complicazione” è che qualche anno fa si tendeva a mettere il circuito di ricarica delle batterie all’interno degli alimentatori, anziché nei telefoni. Poi c’è stata una normativa europea che ha imposto a tutti i costruttori di mettere in commercio alimentatori compatibili fra loro e così i circuiti di ricarica si sono “spostati” all’interno dei telefoni. Oltre a questo, mentre prima la tendenza era quella di fare telefoni sempre più piccoli (quindi con pochissimo spazio all’interno per i circuiti), ora i telefoni stanno diventando sempre più grandi (praticamente sono dei tablet) e quindi di spazio all’interno ce n’è parecchio, almeno sul piano orizzontale.

Una volta data un’occhiata al circuito, ho visto che potevo eliminare completamente il microcontrollore e diversi altri componenti. Riducendo tutto all’osso, praticamente arrivando molto vicino allo schema presentato precedentemente, il risultato è stato questo:

Il circuito dopo l'eliminazione del "superfluo"

Il circuito dopo l’eliminazione del “superfluo”

Notate in basso nella foto il diodo Zener usato come stabilizzatore. Il valore di Zener è di 8.2V e in questo modo ho ottenuto una tensione di uscita (a vuoto) corrispondente a 8.2V + 1.5V di caduta attraverso il led del fotoaccoppiatore, per un totale di 9.7V , Volevo un alimentatore da 9V con tolleranza del +/- 10% e l’ho ottenuto. Di sotto la foto del tester che misura la tensione a vuoto. Per il momento è tutto…

La prova pratica: collegato alla linea (attraverso il circuito di sicurezza) e al tester

La prova pratica; il circuito è collegato alla linea 220V (attraverso il circuito di sicurezza) e al tester

Compleanno bisesto

Il 29 Febbraio del 2012 aprivo questo sito. Grazie alla sapiente scelta della data, devo scrivere un articolo che ricordi la ricorrenza solo una volta ogni quattro anni. Sono sempre stato un gran furbone. Il XXIX II MMXII la situazione economica era la seguente: petrolio a circa 140 $ al barile; un euro valeva circa 1,40 $; lo spread btp-bund era oltre i 500 punti. Il governo regolarmente eletto era stato costretto a dimettersi. La situazione di oggi XXIX II MMXVI è questa: petrolio a circa 30$ al barile; un euro vale circa 1,10$; lo spread btp-bund è a circa 100 punti ed abbiamo avuto tre governi non eletti democraticamente. Nonostante gli immensi vantaggi che provengono dalle mutate (e favorevolissime) condizioni economiche globali, la gran maggioranza della gente vive molto male e non riesce “ad arrivare alla fine del mese”. Gli economisti non sono in grado di fare “i conti della serva” e i politici non si accorgono che il mondo è profondamente cambiato. Un Paese viene considerato “governabile” solo se la maggioranza non ha opposizione, oppure se l’opposizione può essere messa a tacere con “un voto di fiducia”… Il bello è che con un terzo dei votanti (non degli aventi diritto al voto) si può prendere la maggioranza del parlamento, rendendo così, di fatto, la forma di governo in atto come una “dittatura a tempo”. Questo mi rattrista profondamente.

Normalmente, utilizzo questo sito come “contenitore” per i miei appunti su elettronica e informatica e per condividere con altri l’esperienza che ho acquisito negli anni e i risultati delle piccole prove che continuo ad eseguire perché sono ancora mosso dalla stessa curiosità che avevo da ragazzino. Questa volta, in occasione del primo “compleanno bisesto” del mio sito, ho voluto anche aggiungere questa amara constatazione sullo stato delle cose in questa Italia che comincia a puzzare di marcio.

Non temere, occasionale lettore di questa pagina… da domani si torna ai bei giochi dell’elettronica e dell’informatica. Anzi, per sorridere un po’ voglio pubblicare qui un “certificato di partecipazione”. Di che si tratta ? Inviai il mio nome alla NASA nell’anno 2008 (anche questo bisestile !!!) perché fosse incluso nella lista che sarebbe stata messa a bordo della sonda Kepler, lanciata poi nel 2009 verso le profondità dello spazio. Se la sonda troverà una forma di intelligenza lassù, mi aspetto di essere contattato, magari per una consulenza pagata in crediti stellari ! Per aspera ad astra…

certificate_border01a

Interfacciare il modulo ESP-01 con una porta USB

Ho di recente realizzato un progetto basato sul dispositivo ESP8266. Quando ho cominciato a lavorare sul dispositivo, ho acquistato un modulino ESP-01 su un “noto negozio on-line” e poi, per fare le prime prove, ho pensato di collegare il modulino ad una porta USB del notebook, in modo da scrivere qualche programma di test. Ho quindi realizzato questo circuitino di prova:

Il circuito montato

Il circuito montato

Questo circuito è costituito da tre blocchi, due dei quali sono l’interfaccia USB-TTL e l’ESP-01, mentre il terzo elemento è autocostruito. Ecco i tre blocchi:

I tre moduli del circuito

I tre moduli del circuito

A sinistra vediamo il circuitino autocostruito, al centro l’interfaccia USB-TTL e a destra il modulo WiFi ESP8266. Il circuito autocostruito è montato molto “alla svelta” come si evince dalle foto (fronte e retro):

il circuito autocostruito, fronte e retro

il circuito autocostruito, fronte e retro

Lo schema del circuito è questo (disegnato a mano, spero sia comprensibile) :

Schema elettrico del circuito e del collegamento dei moduli

Schema elettrico del circuito e del collegamento dei moduli

Nota: nel mio prototipo non c’è più spazio nemmeno per uno spillo, ma se ve ne costruite uno un po’ meno “compatto”, aggiungete una resistenza da 1K in serie al pulsante di reset dal lato Gnd, così pure sul jumper “re-flash”, sempre verso Gnd. Questo servirà a proteggere i segnali di I/O qualora nel modulo ESP-01 sia stata caricata una versione di firmware diversa da quella “base”, magari con i pin GPIO16 o GPIO0 non impostati come ingressi.

Sul modulo USB-TTL che ho usato io, ci sono solo 4 pin, che sono Vout, Txd, Rxd e Gnd, ma ci sono altri moduli che hanno più collegamenti. Quelli che servono, sono Gnd, Txd, Rxd e un quarto pin che porta la V_Usb, cioè il 5V preso dalla porta USB. Sul mio modulo c’è un jumper per scegliere se portare sul pin di uscita la tensione di 5V dalla presa USB oppure la 3.3V ricavata da un regolatore interno del chip. La tensione di 3.3V andrebbe bene, ma la corrente fornita dal regolatore interno è insufficiente, così useremo la 5V e creeremo la 3.3V con un regolatore LM1117-3.3, che è in grado di fornire al modulo ESP-01 i 3.3V e la corrente necessaria per funzionare. Il ponticello chiamato: “re-flash jumper” serve per fare l’update / upgrade del firmware contenuto nel modulo ESP-01, mentre il pulsante di reset serve… a resettare il modulo WiFi.