Il kit della Casa di Natale ha il Nano Il microcontrollore ha solo funzioni limitate, come accendere la luce utilizzando il pulsante accanto alla porta.
In questo post del blog il set si trasformerà in una piccola casa intelligente con funzione WiFi in look natalizio utilizzando un mini microcontrollore D1.
Hardware
Per l'implementazione è necessario:
D1miniESP8266 (possibili anche altre versioni)
Kit albero di Natale a LED (possibili anche altre versioni)
Anche come Fascio disponibile:
SmartHome nel pacchetto Casa di Natale
Collegare il convertitore di livello al D1mini utilizzando i cavi in silicone come segue:

Figura 1: cablaggio del D1mini
Per il lato destro è possibile utilizzare una presa multipla D1mini. Se si dispone degli strumenti adeguati, una connessione crimpata è ovviamente l'opzione professionale.
Dopo aver assemblato il kit Christmas House secondo le istruzioni, aprire il pannello del tetto sul lato del vano batteria.
Ora collega il relè e il DHT22 alle seguenti connessioni su Nano- Scudi accesi.
|
DHT22 |
Scudo |
relè |
Scudo |
|
+ |
V11 |
- |
G7 |
|
FUORI |
S11 |
+ |
(V7) |
|
- |
G11 |
S |
S7 |
I moduli già installati del kit rimangono ai collegamenti descritti nelle istruzioni.
La striscia LED WS2812 non viene utilizzata in questo blog, invece l'albero di Natale a LED viene controllato tramite il relè. Questo può essere utilizzato anche regolando il numero di LED.
Collegare l'albero LED come segue:
|
albero |
relè |
Scudo |
|
VCC |
|
v |
|
GND |
NO |
|
|
|
COM |
G |

Figura 2: Collegamenti per l'alimentazione a 5 V
Nota:
Se si alimenta il progetto con il relè e l'albero di Natale tramite una fonte di tensione esterna (ad esempio la batteria sul retro), i componenti aggiuntivi possono causare un notevole surriscaldamento del regolatore a bassa caduta di tensione in caso di fabbisogno di corrente elevato. Ciò può potenzialmente causare danni. Se il fabbisogno di corrente è superiore a 500 mA, utilizzare una fonte di tensione separata o un convertitore buck.
I relè e il sensore DHT22 ora possono essere fissati in casa, ad esempio, con nastro biadesivo.
Continua a lasciare aperta la parte posteriore del tetto per i passaggi successivi.
Software
Dal momento che Nano non ha un'interfaccia WLAN, è necessario il D1 mini. L'unico compito di questa persona è quello di mettere a disposizione il web server per il controllo. Le informazioni vengono quindi inviate all'interfaccia UART Nano, che assume il controllo totale dei componenti.
Poiché i due microcontrollori scambiano dati tramite l'interfaccia UART, la connessione deve essere separata per eseguire il flashing di un microcontrollore.
Preparazione dell'IDE di Arduino
Se siete alle prese con i microcontrollori per la prima volta, sarà comunque necessario scaricare gli appositi driver per poter trasferire il programma sulla scheda.
È possibile scaricare il file di installazione per il driver appropriato qui scaricare.
Per il D1 mini è necessario un pacchetto aggiuntivo. Per installarlo, copiare il seguente collegamento nell'IDE di Arduino in: File->Preferenze->URL gestione schede aggiuntive:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
e installare il pacchetto ESP32 nella gestione della scheda IDE Arduino.
Inoltre, le librerie devono poter controllare il display LCD, il modulo LED e il sensore DHT22:
Puoi installare le librerie utilizzando la gestione delle librerie integrata nell'IDE di Arduino o scaricarle come .zip utilizzando il collegamento da Github e andare su
Schizzo > includi libreria > Aggiungi libreria .zip...
incorporare.
Codice Nano
Scarica il seguente programma Nano:
|
#includere |
Il codice completo può qui essere scaricato.
Spiegazione:
All'inizio vengono integrate le librerie e create delle macro per i nomi dei pin dei moduli collegati.
Segue l'inizializzazione delle variabili globali e degli oggetti delle librerie.
Il seguente metodo legge i valori del sensore e genera da essi una stringa json, che viene poi inviata al D1mini tramite l'interfaccia seriale (UART) in modo che i valori climatici possano essere visualizzati sul sito web. Poiché l'LDR è solo un resistore e quindi non calibrato in fabbrica, i valori limite effettivi possono variare. Puoi impostarlo nella funzione map(). (900 limite inferiore 0%; 100 limite superiore 100%)
La seguente funzione readLine() forma una stringa dai singoli caratteri ricevuti tramite l'interfaccia UART. I caratteri vengono sommati qui fino all'inizio di una nuova riga (\n). La funzione è necessaria per la successiva valutazione dei dati.
In setup() vengono richiamati i metodi di avvio delle librerie e l'IO del relè viene configurato come output.
Il loop() inizia eseguendo il handleSensori funzionare ogni secondo. Il ritardo temporale viene qui implementato con un confronto utilizzando la funzione millis(). Ciò significa che loop() non è bloccato.
Successivamente viene valutata la stringa con l'input dal server web, quindi il LED viene impostato sul colore selezionato, il testo viene visualizzato sul display e infine il relè viene impostato sullo stato trasmesso.
Server web:
Ora segue il codice html che visualizza il server web:
|
|
Fondamentalmente ogni file html è in uno testa e corpo diviso. La configurazione avviene nella testa. Ciò include anche lo stile degli elementi.
Il corpo contiene anche i singoli elementi HTML come campi di input e pulsanti sceneggiatura Parte che contiene metodi.
Quando si preme un pulsante, viene eseguito un metodo assegnato, che poi trasmette l'input al microcontrollore.
Tuttavia, le funzioni e la struttura esatta dell'HTML non verranno discusse ulteriormente in questa sede.
Codice D1mini
Scarica il programma completo (download alla fine) sul D1mini:
|
#includere //Server webHTML// |
Il codice completo può qui essere scaricato.
Spiegazione:
Come nel codice per il Nano, All'inizio si integrano le librerie e si inizializzano oggetti e variabili globali.
Anche il codice html viene caricato in memoria qui. L'intero file html è stato omesso qui per chiarezza.
I seguenti metodi sono le funzioni di callback del server web, con le quali le voci vengono lette e visualizzate in caso di modifica.
La funzione readLine corrisponde sostanzialmente a quella in Nanoprogramma utilizzato. L'unica differenza è che qui viene utilizzata la funzione yield(), che consente l'esecuzione delle funzioni in background. Ciò significa che non ci sono problemi con il server web a causa di processi in background bloccati.
In setup() viene avviato un punto di accesso in modo da potersi connettere direttamente al D1mini e quindi non è necessaria alcuna connessione WiFi.
Successivamente vengono assegnati i metodi di callback e il server web viene avviato.
Il loop() è ancora una volta strutturato in modo analogo al programma di Nano. Qui la stringa ricevuta non viene valutata, ma viene inviata direttamente al server perché è già in formato json.
Dopo che entrambi i microcontrollori sono stati flashati, collega il mini gruppo D1 all'intestazione del pin UART libero sul Nano-Scudo. Assicurati che sia collegato correttamente (puoi usare il pin GND come riferimento nel cablaggio sopra.
Dopo il caricamento, connettiti alla rete aperta "SmartHome". Se ricevi una notifica che la rete non ha accesso a Internet, abilitala Mantieni la connessione per la rete. Una volta connesso alla rete, aprire il browser del dispositivo connesso e inserire l'indirizzo 192.168.4.1. Verrà quindi visualizzata la pagina seguente in cui è possibile controllare la casa intelligente.

Figura 3: schermata dal server web
Conclusione:
Ora che puoi controllare le singole parti del progetto tramite un server web, puoi ancora configurare le automazioni sul Nano programmarlo, ad esempio per utilizzare il pulsante come controllo. Tuttavia, assicurati che nel loop() non vengano utilizzati blocchi (mentre o ritardi) per non interrompere l'elaborazione dei dati da parte del server web.
Con queste automazioni ed eventualmente sensori o moduli aggiuntivi, puoi realizzare ed espandere il tuo piccolo progetto di casa intelligente.
Divertitevi a replicarlo :)
Per i lettori con conoscenze avanzate, vale la pena dare un'occhiata anche al blog hackerare un albero, in cui il kit dell'albero di Natale viene riprogrammato e puoi programmare i tuoi modelli.






