Firmware termostato con display compatibile HomeKit: installazione e configurazione

In questa breve e semplificata guida è spiegato come flashare e configurare un NodeMCU per realizzare un termostato con display compatibile con Apple Homekit.

Occorrente

NodeMCU -- https://amzn.to/30ZJiVf

Display OLED 0.96" -- https://amzn.to/2WXNKCs

Sensore di temperatura DHT22 -- https://amzn.to/2W9vXuY

Pulsanti (3x) -- https://amzn.to/2Wffo0H 

In alternativa possono essere utilizzati anche i pulsanti touch -- https://amzn.to/2VxxXZy

Relè arduino 5v -- https://amzn.to/2Wa8GJp

Convertitore seriale USB -- https://amzn.to/2YzHJ03

Cavetti jumper Dupont -- https://amzn.to/2YyBObv

Collegamento display e sensore  

Prima di procedere all'installazione del firmware bisogna obbligatoriamente procedere al collegamento del display OLED e del sensore di temperatura. I pulsanti potranno essere connessi in un secondo momento. Il sistema infatti effettuera una verifica sulla presenza di display e sensore prima di collegarlo alla vostra rete domestica. Pertanto non sarà possibile effettuare il paring con l'app Casa se eseguite questo passaggio.

Pin D1 NodeMCU va collegato a Pin SDA Display

Pin D5 NodeMCU va collegato a Pin SCL Display

Pin 3v3 (o 3v*) NodeMCU va collegato a Pin VCC Display

Pin GND (o G*) NodeMCU va collegato a Pin GND Display

Pin D2 NodeMCU va collegato a Pin OUT Sensore

Pin 3v3 (o 3v*) NodeMCU va collegato a Pin + Sensore

Pin GND (o G*) NodeMCU va collegato a Pin - Sensore

* il nome può variare a seconda del modello NodeMCU utilizzato

 

Collegamento al lettore 

Collega il tuo NodeMCU al convertitore seriale così come di seguito illustrato

 

Installazione con OTA

Prima di tutto crea una cartella sulla scrivania del vostro mac e rinominala "files". Scarica quindi otaboot.binrboot.bin e blank_config.bin all'interno della cartella creata. Assicurati di aver collegato il tuo NodeMCU come illustrato al passo precedente e collega il tuo convertitore seriale alla porta USB del tuo Mac, tenendo premuto il pulsante "FLASH" presente sul dispositivo. La pressione simultanea del pulsante sul NodeMCU all'alimentazione dello stesso mettera questo in modalità "flash". Usa esptool.py per "flashare" il dispositivo

Primo step: fai un "erase"

Posizionati tramite terminale con il comando cd all'interno della cartella dove hai in precedenza salvato i file

cd Desktop/file

A questo punto puoi iniziare l'erase del nostro device 

esptool.py -p /dev/your_ESPPort erase_flash

Generalmente la porta ESP è /dev/tty.SLAB_USBtoUART oppure /dev/tty.USB0000

Puoi fare una ricerca tra i vari dispositivi con il comando ls /dev/tty* che ti mostrerà tutti i dispositivi connessi Effettuato l'erase dovreste avere un messaggio come il seguente: 

Chip erase completed successfully in 0.0s Hard resetting via RTS pin... 

La procedura è quindi andata a buon fine e possiamo passare allo step successivo. Scollegate il vostro cavo usb e ricollegatelo tenendo premuto il tasto "flash" del NodeMCU. 

Secondo step: flash firmware OTA

esptool.py -p /dev/your_ESPPort --baud 115200 write_flash -fs 1MB -fm dout -ff 40m \ 0x0 rboot.bin 0x1000 blank_config.bin 0x2000 otaboot.bin 

Nota: se stai usando una vecchia versione di esptool, devi cambiare -fs 1MB con -fs 8MB Effettuato l'erase dovreste avere un messaggio come il seguente:

Hash of data verified. Leaving... Hard resetting via RTS pin... 

Effettuato questo scollegate e ricollegate il cavo usb dal vostro mac. Questa volta non serve premere il tasto di accensione del NodeMCU poichè non dobbiamo metterlo in modalità flash.

Terzo step: configurazione OTA

Ora andremo a configurare la rete wi-fi e la repositery da installare. Il dispositivo, una volta avviato genera una sua rete wifi che inizia con LCM ed è seguita dagli ultimi numeri del mac address. Per iniziare la configurazione iniziamo con il collegare un dispositivo iOS a questa rete (sarà sufficiente andare in Impostazioni -- Wi-Fi e cercare tra le varie reti raggiungibili la rete che inizia con LCM- e collegarci).

Dopo alcuni secondi si aprirà automaticamente una finestra come quella nell'immmagine qui sotto

Procedete con questo ordine, assicuratevi di aver seguito tutti e 5 i punti prima di premere il tasto Join!

1. selezionate la rete wifi a cui volete connettere il dispositivo

2. nel campo Password inserite la password della rete wi-fi selezionata

3. sostituite il testo presente nel campo OTA repositery con lizzus/new-homekit-thermostat

4. non modificare il testo presente nel campo OTA Binary File e quindi lasciate la voce main.bin

5. assicuratevi che il display ed il sensore siano connessi come indicato nel primo passaggio

6. premete il pulsante Join Una volta cliccato il tasto join il vostro device inizierà a scaricare l'ultima release del firmware direttamente dalla repositery GitHub. Questa procedura impiega circa 5-7 minuti.  Nota: se questo step fallisce dovrete iniziare la procedura dal primo step.

Se avete eseguito le operazioni correttamente, al termine dell caricamento del firmware, il vostro display apparirà così:

Quarto step: installazione nell'app Casa:

Seguite le normali procedure per aggiungere un dispositivo all'applicazione Casa di Apple. Non appena l'app vi chiederà di inquadrare il codice di configurazione di HomeKit, cliccate su "Non hai il codice o non puoi scansionarlo?"

Nella schermata successiva andate a selezionare il vostro dispositivo

l'app Casa vi avviserà che l'accessorio non è certificato. Ignorate questo messaggio e cliccate su "Aggiungi comunque"

inserite quindi il seguente codice: 11111111

L'operazione di pairing del tuo dispositivo impiega circa 30-60 secondi.

Non appena terminato il paring comparirà una finestra come questa:

Successivamente l'app casa ci darà la possibilità di impostare il nome del dispositivo e la stanza ove questo è ubicato:

Nota: se il pairing fallisce sarà sufficiente riavviare il vostro dispositivo e procedere nuovamente con questo step (non la procedura dall'inizio).

Schema di collegamento finale

Ecco lo schema di collegamento tra NodeMCU, sensore di temperatura/umidità, display OLED, relè e pulsanti

 
(clicca sull'immagine per ingrandirla)

Pin D1 NodeMCU va collegato a Pin SDA Display

Pin D5 NodeMCU va collegato a Pin SCL Display

Pin 3v3 (o 3v*) NodeMCU va collegato a Pin VCC Display

Pin GND (o G*) NodeMCU va collegato a Pin GND Display

Pin D2 NodeMCU va collegato a Pin OUT Sensore

Pin 3v3 (o 3v*) NodeMCU va collegato a Pin + Sensore

Pin GND (o G*) NodeMCU va collegato a Pin - Sensore

Pin D0 NodeMCU va collegato a Pin S relè

Pin VIN (o V*) NodeMCU va collegato a Pin + relè

Pin GND (o G*) NodeMCU va collegato a Pin - relè

Pin D6 NodeMCU va collegato a Pin S pulsante temperatura +

Pin VIN (o V*) NodeMCU va collegato a Pin + pulsante temperatura +

Pin GND (o G*) NodeMCU va collegato a Pin - pulsante temperatura +

Pin D7 NodeMCU va collegato a Pin S pulsante temperatura -

Pin VIN (o V*) NodeMCU va collegato a Pin + pulsante temperatura -

Pin GND (o G*) NodeMCU va collegato a Pin - pulsante temperatura -

Pin D3 NodeMCU va collegato a Pin S pulsante modalità

Pin VIN (o V*) NodeMCU va collegato a Pin + pulsante modalità

Pin GND (o G*) NodeMCU va collegato a Pin - pulsante modalità

*il nome può variare a seconda del modello NodeMCU utilizzato

Funzionamento dei pulsanti e del relè

Alla porta COM ed NO del relè andranno collegati i cavi connessi al vostro sistema di riscaldamenrto. Naturalmente quando il termostato sarà attivo il relè sarà commutato da NC a NO azionando il sistema. 

I tre pulsanti, ovvero "+", "-" e "modalità" consentono di:

  • pulsante "+": aumentare di 0,5° la temperatura 
  • pulsante "-": diminuire di 0,5° la tempertaura
  • pulsante "modalità": cliccando 1 volta cambia lo status da acceso "heat" a spento "off". La pressione continua invece resetterà il device

I pulsanti funzionano in modo autonomo.

Extra

Ecco il file STL per il triplo frutto porta display. Lo trovi qui


Filippo Lizza

42 Blog post

Commenti
topzoe 4 anni

When I press + and - buttons, nothing append... the Mode button is ok. Any idea?

 
 
Rigatone 5 anni

così però se togli alimentazione, quando viene ripristinata si accende in riscaldamento