Raspberry, Arduino o ESP?

Durante la Maker Faire di Roma, mentre raccontavo come funziona il mio progetto La Domotica fai-da-me mi sono  trovato spesso a rispondere alla domanda “ma perché non usi Arduino al posto del Raspberry?”. Semplicemente perché sono due cose completamente diverse.

Vediamo se riesco a farlo capire anche a quelli che “Arduino cosa?”.

In questo articolo affronterò anche le differenze tra Arduino ed ESP, altra spiegazione data circa 1000 volte agli avventori della fiera. Tutti affamati di sapere, dovete sempre chiedere e fate sempre bene.

Da sinistra a destra: Raspberry Pi Zero, Raspberry Pi Mod 3B, Arduino Duemilanove (uno dei primi messi in commercio), WeMos D1 Mini con ESP8266 (è la scheda scura più piccola che si vede sulla scheda blu) e una scheda Arduino di nuova concezione, della serie MKR.

Il Raspberry Pi non è altro che un piccolo computer. Fa (quasi) le stesse cose che può fare un PC comune con Linux installato. E’ una scheda che contiene una CPU, della memoria RAM, una scheda video, una scheda audio, alcune porte USB, un’interfaccia di rete e uno slot per metterci la memoria da usare come disco per il sistema operativo. La nuova serie 3B può montare una versione specifica di Windows.

E allora, perché non usi un PC normale e parli di Raspberry Pi?

Questa è un’ottima domanda. Vediamo tutti i perché

  • E’ tutto in unico pezzo (alimentatore a parte).
  • Costa poco (da 10 a 30€ a seconda della versione).
  • Consuma poco (nell’ordine dei 10W o anche meno).
  • Ha la possibilità di interagire un po’ con il mondo reale usando i PIN di GPIO. Ci si possono collegare sensori o dispositivi seriali, cose che solitamente con un PC non si possono fare.

Ok, il Raspberry Pi è un piccolo PC, quindi perché al posto suo non usi Arduino che è comunque piccolo?

Perché sono due schede profondamente diverse. Se sul Raspberry Pi posso avviare un sistema operativo, utilizzare programmi, avere un DB e mille altre cose, con Arduino tutto questo non è possibile. Arduino è un semplice microcontrollore.

Arduino ha un suo firmware, è programmabile e una volta programmato eseguirà le operazioni che gli sono state impartite per sempre, a meno che non venga riprogrammato. La programmazione di Arduino avviene con un suo sistema di sviluppo (si chiama IDE) e il codice che si scrive è in un linguaggio molto simile al C.

Arduino accede al mondo fisico (sensori) in maniera molto più diretta, senza dover passare per svariati strati software o la schedulazione della CPU, che potrebbe rallentare di molto le letture o le scritture.

Visto che le cose sono già complicate così, sul mercato c’è un’altra scheda, un piccolo microcontrollore, che fa grossa guerra ad Arduino: la famigerata scheda ESP8266.

In fiera, per capire il livello delle persone con cui parlavo, chiedevo “Conosci il Raspberry? Conosci Arduino? Conosci la ESP8266?” Normalmente l’ultima non la conosceva nessuno. Quando andavano via capivo di aver tolto un cliente ad Arduino (scusami Banzi)

La scheda ESP8266 ha alcuni punti interessanti rispetto ad Arduino, per il quale è diretta concorrente:

  • Costa molto meno (3€ contro i 25€ per la più piccola Arduino)
  • E’ più piccola (davvero molto piccola)
  • Ha meno ingressi/uscite digitali
  • Non ha uscite analogiche
  • Ha un solo ingresso analogico
  • Ha il WiFi integrato
  • Si programma con lo stesso linguaggio e usando lo stesso software di Arduino

La scheda base è davvero semplice e limitata, ad esempio non si può programmare con la USB, ma ci va un adattatore USB-seriale. Per ovviare a questo ci sono molti produttori che le hanno montate su schedine un po’ più grandi per poterle usare più facilmente. Io uso da un po’ di tempo le schede WeMos che hanno anche una struttura a shield (letteralmente scudo), praticamente delle schede già assemblate che permettono di impilare alcuni accessori, come sensori e display, sul microcontrollore, evitando fili vari sparsi in giro.

Ma, dopo tutta questa manfrina, io cosa devo usare per i miei progetti?

Non lo posso sapere, ma quel che ti consiglio è questo:

Se devi interagire solo con sensori e attuatori scegli i microcontrollori. Inizia comprando il kit base di Arduino (visto, Banzi, che te li mando lo stesso?) e fai tutti i progetti. A questo punto sei pronto per passare alle ESP.

Se invece il tuo sistema è più complesso, con sensori distribuiti, gestione di un DB, accessi web e quant’altro, prendi in considerazione il Raspberry Pi, se il tuo progetto richiede molto utilizzo della CPU devi ripiegare su qualche scheda “fruttata” più potente (Banana Pi, Orange Pi, Odroid, Udoo …) o direttamente un mini PC. Se hai bisogno di qualche sensore o qualche accessorio particolare il mini PC potrebbe però non essere la scelta giusta.

Dai, voglio iniziare, dove spendo i miei soldi?

Per tutto quello che riguarda Raspberry io uso i siti ufficiali PiMoroni e The Pi Hut
Arduino lo puoi comprare sullo store ufficiale o su Amazon (<– link sponsorizzato)
ESP di solito si acquista direttamente in Cina, se ti perdi tra Aliexpress o Banggod, puoi aprire il sito ufficiale di WeMos (ora Lolin) e poi andare sul loro shop. Se compri in Cina adeguati ai tempi di consegna e attento che sopra circa 20€ (spese di spedizione comprese) compaiono le spese doganali.

E’ giunto il momento della Maker Faire

Ci siamo, oggi vado a montare lo stand del mio progetto La domotica fai-da-me alla fiera di Roma.

Se volete avere aggiornamenti in tempo (quasi) reale potete seguirmi su Twitter o su Facebook.

Se invece volete passare a trovarmi sarò al padiglione 8, stand B7 (non ho la cartina dettagliata della disposizione dei padiglioni, così potete farvi un giro per cercarmi) da venerdì alle 14 a domenica alle 19.

Vi aspetto!

Torino Mini Maker Faire 2018

La Maker Faire è un evento organizzato in diverse parti del mondo dove maker (e tutto il mondo nerd che ci gira intorno) portano le loro realizzazioni per mostrarle o venderle al numeroso pubblico che viene attirato dall’evento.

Sono andato a vedere la fiera per molti anni, in quanto a Torino, da qualche anno, viene organizzata la Mini Maker Faire (mini perché è un evento della community). Qui ho sempre trovato spunti davvero interessanti e idee a tratti geniali.

Quest’anno ho fatto il grande passo e ho proposto il mio progetto di casa controllata dalla centralina che ho sviluppato io. Mi hanno accettato, quindi sarò presente come espositore 🙂

Se vi interessa vedere il sistema de “la domotica fai-da-me” funzionante (con un sacco di nuove funzionalità che ho sviluppato a discapito delle ore di sonno, in questi giorni) passate a trovarmi. Ne sarei davvero felice!

Dove?

Torino, Via Egeo 18, presso i locali del FabLab di Torino e Toolbox

Quando?

Sabato 2 e domenica 3 giugno 2018 dalle 10 alle 18:30

La Maker Faire ha anche un sacco di altri eventi come talk e laboratori, dalle 10 alle 20 di entrambi i giorni, secondo me un giro vale comunque la pena.

Ci vediamo lì?

Sensore di temperatura WiFi

Nel progetto della domotica fai da me non può mancare un sensore di temperatura, in questo caso con alcune caratteristiche particolari, utili a metterlo in ogni punto della casa senza dover cablare o far passare fili in giro per casa.

Le caratteristiche che sono riuscito ad ottenere sono:

  • Economico
  • WiFi
  • Portatile, quindi a batteria con una durata decente senza dover cambiare pile ogni pochi giorni.
  • Interfacciabile con la mia centralina basata sul Raspberry Pi

La lista della spesa è veramente minima e prevede, purtroppo, lunghe attese, perché tutto in arrivo dalla Cina.

  • WeMos D1 Mini
  • Sensore DHT22 (questo shield non esiste più, quindi dovete ripiegare su DHT12 o SHT30, il codice potrebbe cambiare)
  • Contenitore per 3 pile AA
  • Scatoletta (ho usato delle vecchie scatole di plastica dei nastri di backup LTO che ho trovato a mucchi in un magazzino in ufficio, ma se volete essere veramente pro, potete farvi stampare una scatola 3D da Freelabster)

La scheda WeMos D1 mini è basta su ESP8266, un microcontrollore tipo Arduino, ma con alcune caratteristiche che lo rendono davvero interessante.

Innanzitutto costa poco, con 4€ ci si porta a casa il processore, il modulo per alimentarlo e programmarlo via MicroUSB e tutta l’elettronica necessaria, poi è WiFi, di serie, senza nessun tipo di difficoltà a collegarlo alle reti casalinghe, ha la funzione di deep sleep, durante la quale non è attivo e consuma 0,3mA, questo lo rende perfetto per essere alimentato a batteria; in ultimo, ma non meno importante, si programma tramite l’IDE di Arduino, quindi il tutto è davvero semplice, se si ha già conoscenza della programmazione di Arduino.

Ho scelto la WeMos perché produce anche dei piccoli shields con sensori e altri dispositivi piccoli (relè, display OLED, …). Un po’ di pratica con il saldatore ed è possibile avere il proprio sensore di temperatura che occupa circa 2 cc (sì, è davvero piccolo!)

La parte di assemblaggio hardware è davvero banale: si saldano i pin sulla D1 e si saldano gli altri pin sullo shield, poi si collegano tra di loro. Fatto. Anzi, no, serve una saldatura aggiuntiva che colleghi tra di loro il pin RST e il pin D0 sullo shield con il sensore della temperatura.

img_2232
Saldare D0 a RST (attenzione, che se la piedinatura cambia dovete seguire i nomi dei pin e non la posizione che vedete in foto)

A cosa serve questo collegamento? E’ assolutamente necessario per il ciclo di deep sleep. Quando si impartisce il comando per questa specie di ibernazione, c’è un contatore interno che consuma molto poco e dà il segnale di reset al pin D1 al termine del conteggio, collegando il pin D1 al pin di reset questo sveglierà la scheda che riprenderà il suo lavoro, come appena accesa.

Perché devo saldarlo sullo shield? Perché quando questi due pin sono collegati tra loro è impossibile scrivere il programma nel microcontrollore, quindi quando si deve aggiornare il codice lo shield può essere tolto, così non ci saranno problemi.

L’alimentazione può essere fornita tramite 3 pile stilo AA alcaline o ricaricabili. messe in serie. Se alcaline, la tensione in uscita sarà 1,5×3 = 4,5V, se ricaricabili 1,2×3 = 3,6V (sapevate che le pile ricaricabili sono da 1,2 e non da 1,5?), la scheda funziona a 3,3V e ha un regolatore di tensione che le permette di funzionare anche con i 5V della USB, pertanto fornire un po’ più di 3,3V permetterà al tutto di funzionare adeguatamente.
Ho fatto un po’ di prove è sono giunto alla conclusione che i fili nero e rosso che escono dalla scatolina delle batterie possono essere saldati sulla scheda D1 Mini ai pin 5V (il rosso) e GND (nero). Con 3 pile stilo ricaricabili da 2000mAh sono arrivato a fare più di 6,500 letture (circa 90gg con una lettura ogni 20 minuti).

Dove saldare i cavetti delle batterie, attenzione alla polarità!
Dove saldare i cavetti delle batterie, attenzione alla polarità!

Il codice, che trovate come sempre su GitHub è molto banale e si può riassumere con i seguenti passi

  1. Attiva WiFi (mettete qui la vostra rete e la password, solo reti 2,4GHz)
  2. Attiva la comunicazione con il sensore DHT22
  3. Effettua la lettura (il sensore è lento, ci va un delay per attendere il risultato)
  4. Scrive la lettura chiamando il server web (quello fatto sulla centralina, se non ve lo ricoardate, andate a vedere il post relativo) che la memorizza
  5. Va in ibernazione per 10 minuti (ma potete mettere il tempo che più vi piace) per poi ricominciare dal punto 1

Nel codice, al momento della scrittura del valore sul DB, c’è il parametro della stanza, così, avendo più sensori sparsi per casa, si può avere l’andamento della temperatura in ogni stanza. Ho dovuto faticare un po’ per la creazione del link http per scrivere i dati nel DB.

Scrivere il codice tramite l’arduino IDE è banale, basta seguire la semplicissima guida per abilitare la scheda, scegliere il dispositivo D1 mini (con me ha funzionato quello indicato come “retired”) e usarla esattamente come Arduino. Con il Mac non ci sono riuscito, ho fatto tutto con un PC Windows 10.

Se invece volete creare un qualunque altro sensore che misuri il parametro ad intervalli regolari (umidità, gas, pioggia, acqua nella terra delle piante, allagamento, …) basta sostituire il DHT22 con il relativo componente e studiare come interfacciarlo con l’ESP, solitamente ci sono librerie per ogni tipo di sensore.

Registrare i dati dei sensori in giro per casa

Sempre parlando del mio progetto di domotica fai da me, vi presento oggi le poche righe di codice necessarie per memorizzare i dati dei sensori che spargerò per casa (per la gioia di mia quasi moglie!).

L’obiettivo è rendere disponibile un server web che memorizzi i dati passati con una GET http, così da scrivere il codice dello sketch del sensore per registrare il dato in questo modo:

http://[ip_server]:[porta]/?variabile1=valore1&variabile2=valore2

Questo tipo di chiamate si possono generare molto facilmente con Arduino (a patto che abbia una connessione di rete) o con ESP8266.

Oltre al server che recepisce i dati, serve anche un posto dove memorizzarli, per questo ho installato SQLite sul mio Raspberry, un motore di DB leggero, veloce e semplice da usare con Python. Leggi tutto “Registrare i dati dei sensori in giro per casa”

Lettura istantanea del consumo di corrente

Attenzione! Non sono responsabile per qualunque danno fisico (ustione, folgorazione, ...) o materiale (incendio, corto circuito, ...) possa accadere mentre cercate di riprodurre tutto il progetto o solo in parte! Non ho alcuna sponsorizzazione dai produttori e rivenditori a cui faccio riferimento nel post.

Questo progetto fa parte del più grande lavoro della domotica fai da me ed è stato nominato come “gingillo del giorno” in Digitalia, episodio 324

Prima di partire vorrei sottolineare che questo progetto è un po’ complesso e vi porta ad armeggiare intorno alla 220V di casa, quindi ci va attenzione e servono un po’ di basi di programmazione, impianti elettrici, saldatura. Ho usato componenti vecchiotti, potrebbe essere necessario comprarne di diversi e per questo adattare programmazione e collegamenti, se siete alle prime armi fatevi aiutare, ad esempio, in un FabLab (se non sapete cos’è un FabLab ne abbiamo parlato diffusamente in questa puntata di GeekCookies)

Negli alloggi moderni il contatore della corrente elettrica non è in casa, ma in cantina, se aggiungiamo che gli elettrodomestici moderni consumano parecchio, mi è capitato spesso, causa disattenzione, di dover correre in cantina a tirare su la leva del contatore perché avevo fatto partire lavastoviglie e forno. Quando salta la corrente si spegne anche il router, il PC e una serie di altri dispositivi (ho poi messo vari UPS in giro per casa), insomma, una gran scocciatura.

Un altro utilizzo interessante è accendere i singoli dispositivi che avete in casa per capire esattamente quanto consumano. Ho scoperto che la lavatrice consuma molto, ma solo per metà del ciclo, inoltre consuma di più quando muove lentamente il cestello piuttosto che quando fa la centrifuga. Ho scoperto che i 250W della lampada alogena richiedono un’immediata sostituzione con una a LED e che lavorare con il Mac consuma circa 250W. Spegnere con un interruttore TV, console, BluRay e compagnia quando non li uso mi fa risparmiare 7-8W (fate due conti sull’anno intero) e che ho un consumo “di fondo” (tutto spento, tranne i router, il frigo, il sensore stesso, il mio server) di circa 150W.

Leggi tutto “Lettura istantanea del consumo di corrente”