Sommario:
- Passaggio 1: l'hardware
- Passaggio 2: creazione del display LCD
- Passaggio 3: configurazione del software
- Passaggio 4: Opzionale - Spegnimento del display
- Passaggio 5: appendi il calendario
Video: Calendario da parete intelligente: 5 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:03
Mia moglie ed io avevamo un classico calendario da parete di carta, su cui segnavamo le date importanti. Utilizziamo anche il calendario di Google sui nostri smartphone per contrassegnare gli eventi, quindi questo significava un doppio lavoro. Quindi ho deciso di creare una sorta di calendario da parete intelligente, che mostrerà i nostri promemoria, eventi e altri dati. Dato che ho varie vecchie parti elettroniche in giro, il mio obiettivo era riutilizzarle il più possibile e costruire il calendario con il minor costo possibile.
In questo tutorial ti mostrerò come creare un calendario da parete intelligente, visualizzando eventi da diversi account Google. Visualizzerà anche l'ora, la data, il meteo, la temperatura e alcune informazioni aggiuntive. Sarà alimentato da un computer Raspberry Pi con un sensore di movimento Passive Infrared Sensor (PIR) collegato, in modo che il display si accenda, quando viene rilevato un movimento nella stanza, ma si spenga dopo pochi minuti di inattività. Questo tutorial si basa su molti altri tutorial che ho trovato su Internet e fornirò i collegamenti ad essi per una migliore comprensione. Sono necessarie alcune conoscenze di programmazione di base (HTML, Python, …).
Passaggio 1: l'hardware
Come accennato in precedenza, ho cercato di riutilizzare il maggior numero di vecchie parti elettroniche per contenere i costi. Tuttavia alcuni oggetti li ho dovuti acquistare, quindi elencherò tutto ciò che è necessario per la costruzione.
- Un kit Raspberry Pi. Inizialmente ho usato il mio vecchio modello 2 da qualche altro progetto. Ha funzionato, ma la modifica e il ricaricamento della pagina Web mi ha richiesto molto tempo, quindi alla fine sono passato al modello 3, che funziona in modo più fluido
- Schermo a cristalli liquidi. Ho usato lo schermo del mio vecchio laptop, quindi avevo solo bisogno di acquistare la scheda driver LVDS e l'alimentatore https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=hdmi+ driver+LVDS+scheda&_sacat=0
- Scatola portaoggetti in plastica per l'elettronica
- Sensore di movimento a infrarossi passivo
- Sensore di temperatura/umidità AM2302
- Raccoglitore scorrevole in plastica nera per cornice LCD
- Vari cavi (HDMI, 5,5 mm per alimentazione CC, cavi jumper breadboard senza saldatura, …)
Passaggio 2: creazione del display LCD
Ho usato lo schermo LCD del mio vecchio laptop obsoleto. Ci sono diversi tutorial su come farlo, ho seguito questo:
www.instructables.com/id/How-to-reuse-the-old-LCD-Screen-of-your-broken-Lap/
Ho smontato la cover del mio vecchio laptop, ho estratto il display LCD e poi ho ordinato la scheda driver LVDS corretta. Ho fornito al venditore il codice del prodotto, che si trova sul retro dell'LCD, nel mio caso è LP171WE3 (TL)(A2) - vedere l'etichetta in basso a destra nell'ultima immagine, e poi mi ha inviato l'LVDS appropriato. Tieni presente che avrai anche bisogno dell'alimentatore per il display, quindi chiedi al venditore di inviarlo anche tu. Ho anche acquistato una bella scatola di plastica da 14,5 × 7,5 × 2 cm per adattarla perfettamente alla scheda del driver e attaccarla al lato posteriore dell'LCD.
Ora il display LCD ha una cornice metallica, che non sembra carina. Inizialmente l'ho verniciato a spruzzo di nero, ma la vernice ha iniziato a staccarsi. Quindi ho preso quattro raccoglitori a scorrimento in plastica nera, che vengono generalmente utilizzati per rilegare fogli di carta, li ho ritagliati di conseguenza e li ho attaccati per coprire il telaio. Sembrava a posto, quindi ho collegato tutti i cavi, collegato HDMI al mio vecchio Raspberry Pi e Voila: ha funzionato! C'era un'immagine mostrata sul display, quindi ero pronto per passare al passaggio successivo: quali informazioni mostrare sul display e come mostrarle.
Passaggio 3: configurazione del software
Quando stavo cercando su Internet alcuni indizi su come costruire un calendario, mi sono ispirato a questa pagina https://dakboard.com/site. Forniscono il prodotto finito (il display, il computer e il software funzionante), ma hanno anche un eccellente tutorial per la soluzione fai-da-te (https://blog.dakboard.com/diy-wall-display/). Ti consiglio di seguire questo tutorial, almeno per la prima parte con le istruzioni su come preparare e configurare il sistema su Raspberry, in modo che il browser carichi automaticamente la pagina web desiderata all'avvio.
Ha funzionato bene, tuttavia stavo cercando una soluzione che potesse essere più personalizzata secondo i miei desideri. Ho deciso di configurare il mio server web e creare una pagina web, che mostrerà informazioni aggiuntive oltre al calendario. Ho scelto Wordpress.org, poiché è ben documentato e ha un buon supporto e una vasta comunità per aiutarti. Ecco il tutorial su come installare Wordpress su Raspberry Pi: https://projects.raspberrypi.org/en/projects/lamp-web-server-with-wordpress. Con Wordpress installato, era il momento di progettare la mia homepage. Puoi utilizzare uno dei tanti temi forniti o progettare da zero. Ad ogni modo, per questo è necessaria una certa conoscenza della programmazione HTML.
Ho disegnato la mia pagina, in modo che sul lato sinistro sia mostrato il calendario (https://sl.wordpress.org/plugins/google-calendar-events/), mentre sul lato destro siano mostrati l'ora e la data (https://sl.wordpress.org/plugins/google-calendar-events/)://www.timeanddate.com/clocks/free.html e https://www.arclab.com/en/kb/htmlcss/display-date-time-javascript-php-ssi.html). Le previsioni del tempo provengono da questa pagina (https://www.1a-vreme.si/vremensko-okno/), che fornisce widget di previsioni per le città slovene, ma immagino che su Internet si possano trovare anche widget per altri paesi. La temperatura viene rilevata utilizzando il sensore AM2302 (https://www.ebay.com/sch/i.html?_from=R40&_trksid=m570.l1313&_nkw=AM2302+&_sacat=0), come spiegato alla fine di questo capitolo. In basso c'è un semplice conto alla rovescia giornaliero, che mostra quanti giorni mancano a qualche evento (interessante per i miei figli sapere, quanti giorni dovranno aspettare per qualcosa). In alto a destra c'è il plug-in MetaSlider (https://wordpress.org/plugins/ml-slider/), che scorre casualmente sulle immagini selezionate della mia famiglia. Inoltre ho usato il plugin Background Slider (https://sl.wordpress.org/plugins/background-slider-master/) per mostrarmi un'immagine casuale per uno sfondo migliore.
Come accennato in precedenza, la temperatura interna viene rilevata utilizzando il sensore AM2302. Ci sono molti tutorial su come ottenere la temperatura, io ho seguito questo: https://www.modmypi.com/blog/am2302-temphumidity-sensor. Successivamente ho spostato questo sensore su un altro Raspberry Pi con Home Assistant in esecuzione, perché è più facile leggere e pubblicare valori utilizzando il suo componente DHT Sensor (https://www.home-assistant.io/components/sensor.dht/). Home Assistant può anche raccogliere la temperatura esterna utilizzando vari componenti meteorologici, io ho usato il componente YR.no (https://www.home-assistant.io/components/sensor.yr/). Con ciò, ho scritto uno script di automazione per raccogliere la temperatura interna/esterna da questi componenti e scriverli in un file di testo, che viene quindi visualizzato sul mio calendario da parete. Per ulteriori informazioni su Home Assistant, consultare la home page (https://www.home-assistant.io/).
Passaggio 4: Opzionale - Spegnimento del display
Ora abbiamo il nostro calendario impostato e funzionante, proprio come piace a noi. Ma non vogliamo che il display sia acceso 24 ore su 24, 7 giorni su 7. Lo vogliamo solo quando c'è qualcuno a casa. Inoltre non vogliamo che si accenda nel cuore della notte, quando andiamo in bagno, è troppo luminoso! Quindi collegheremo un sensore a infrarossi per notare, quando qualcuno è in piedi davanti ad esso, e aggiungeremo alcuni limiti di tempo, quando dovrebbe accendersi.
Tieni presente che le mie capacità di programmazione sono piuttosto limitate, quindi quanto segue potrebbe non essere ottimale, dal momento che l'ho scelto da vari forum e tutorial online, ma essenzialmente funziona. Tuttavia, qualsiasi raccomandazione è ancora benvenuta. Per prima cosa inizieremo con il test per accendere/spegnere il monitor manualmente. Per questo, creeremo due file (ad esempio monitor_on.sh e monitor_off.sh) e ci scriveremo del codice. Il modo più semplice per farlo è accedere al tuo Raspberry usando SSH e digitare
sudo nano monitor_on.sh
e digita il seguente codice
tvservice --preferito;
startx /usr/bin/graphic_launcher `fgconsole`
Premi CTRL+X per salvare ed uscire, quindi crea il secondo file
sudo nano monitor_off.sh
e digita il seguente codice
tvservice --off;
Ancora una volta, premi CTRL+X per salvare ed uscire. Rendi eseguibili questi file appena creati:
sudo chmod +x monitor_on.sh
sudo chmod +x monitor_off.sh
Ora per provare se questi comandi funzionano, digita
sudo./monitor_off.sh
sudo./monitor_on.sh
Il monitor dovrebbe ora spegnersi e accendersi di conseguenza. Ho notato che su Raspberry Pi 2 ci sono voluti quasi 10 secondi per accendere il monitor. Su Raspberry Pi 3 ci vogliono 1-2 secondi. Successivamente collegheremo un sensore a infrarossi, che attiverà questi script. Ancora una volta, ci sono molti tutorial su come configurare Raspberry Pi e PIR, ho seguito questo: https://www.instructables.com/id/PIR-Sensor-Interfacing-With-Raspberry-Pi/. Fondamentalmente, crea un file usando l'editor nano (ad esempio motion_sensor.py) e digita il codice Python appropriato al suo interno. Di seguito è riportato l'esempio del mio file:
import RPi. GPIO as GPIOimport timeimport sysimport subprocessimport datetime as dtimport osGPIO.setwarnings(False)# GPIO.setmode(GPIO. BOARD)GPIO.setmode(GPIO. BCM)GPIO.setup(17, GPIO. IN) #PIRturned_off = Falselast_motion_time = time.time()SHUTOFF_DELAY = 180 # secondiwhile True:i=GPIO.input(17)if i==0: #Quando l'output del sensore di movimento è BASSO, spegne il monitor se non viene spento e time.time() > (last_motion_time + SHUTOFF_DELAY):print "No intruders", iturned_off = Truetime.sleep(1)subprocess.call(['/home/pi/monitor_off.sh'], shell=True)elif i==1: #Quando viene emesso dal sensore di movimento è ALTO, accendi il monitor su ONprint "Rilevato intruso", itime.sleep(1)last_motion_time = time.time()sys.stdout.flush()if turn_off e dt.datetime.now().hour > 5 e dt.datetime. now().hour < 23:turned_off = Falsesubprocess.call(['/home/pi/monitor_on.sh'], shell=True)if _name_ == '_main_':try:main() tranne KeyboardInterrupt:GPIO.cleanup ()
Si noti che "GPIO.setup(17, GPIO. IN)" indica che il pin di uscita da PIR è collegato al pin 17 su Raspberry Pi. Quale pin dipende dalla definizione di GPIO.setmode (GPIO. BOARD) o GPIO.setmode (GPIO. BCM). La differenza è spiegata qui: https://raspberrypi.stackexchange.com/questions/12966/what-is-the-difference-between-board-and-bcm-for-gpio-pin-numbering. Ho # davanti a GPIO. BOARD, quindi viene ignorato e viene utilizzato GPIO. BCM.
Notare la linea
SHUTOFF_DELAY = 180 #secondi
Qui viene indicato per quanto tempo il monitor è rimasto acceso dall'ultimo movimento rilevato, prima che venga spento. Questo è utile perché non voglio che il monitor si spenga / si accenda costantemente quando ci passo vicino, ma voglio tenerlo acceso per un po' di tempo, prima che si spenga. Ho scelto l'intervallo di 180 secondi, in modo che il monitor si spenga circa 3 minuti dopo che è stato rilevato l'ultimo movimento.
Infine, questa linea
se turn_off e dt.datetime.now().hour > 6 e dt.datetime.now().hour < 23:
afferma che il monitor si accende solo tra le 6:00 e le 23:00, quindi non mi disturba durante la notte. Le linee
stampa "Nessun intruso", i
e
print "Intruso rilevato", i
servono solo per testare lo script, puoi eliminarli in un secondo momento, quando lo farai funzionare. Ora prova lo script:
sudo python motion_sensor.py
Dovresti vedere i messaggi "Rilevato intruso", se muovi la mano sopra il sensore, altrimenti sarà "Nessun intruso". Quando questo script viene testato e funziona, impostalo per l'avvio all'avvio:
sudo nano ~/.config/lxsession/LXDE-pi/autostart
e aggiungi la seguente riga
@sudo /usr/bin/python /home/pi/motion_sensor.py
Ovviamente devi specificare il nome file corretto dello script Python che hai creato.
Passaggio 5: appendi il calendario
Con tutto pronto, è ora di appendere il calendario al muro!
Inizialmente stavo pensando di nascondere Raspberry Pi dietro il display LCD, in modo che fosse necessario un solo cavo (alimentazione CC). Ma poiché Raspberry funziona a 5V e il display LCD funziona a 12V, avrei bisogno di un trasformatore aggiuntivo. Inoltre, il case Raspberry è piuttosto spesso, il che significa che l'LCD sarebbe distanziato di circa 3 centimetri dal muro. Quindi ho abbandonato questo e ho lasciato solo l'elettronica LCD dietro l'LCD, in modo che ora sia a meno di 1 centimetro dal muro. Ho acquistato due cavi lunghi 5 metri, uno HDMI e uno da 5, 5 mm per l'alimentazione DC. Entrambi i cavi sono bianchi, come il muro, il che significa che non risaltano molto. Ho montato l'LCD sulla parete e ho messo Raspberry sopra il frigorifero sulla parete opposta, quindi è praticamente nascosto, ma comunque facilmente accessibile.
Consigliato:
Luce LED da scrivania intelligente - Illuminazione intelligente con Arduino - Area di lavoro Neopixel: 10 passaggi (con immagini)
Luce LED da scrivania intelligente | Illuminazione intelligente con Arduino | Neopixels Workspace: Al giorno d'oggi trascorriamo molto tempo a casa, studiando e lavorando virtualmente, quindi perché non rendere il nostro spazio di lavoro più grande con un sistema di illuminazione personalizzato e intelligente basato su Arduino e LED Ws2812b. Qui ti mostro come costruire il tuo Smart Luce LED da scrivania che
Sveglia intelligente: una sveglia intelligente realizzata con Raspberry Pi: 10 passaggi (con immagini)
Sveglia intelligente: una sveglia intelligente realizzata con Raspberry Pi: hai mai desiderato un orologio intelligente? Se è così, questa è la soluzione per te! Ho realizzato Smart Alarm Clock, questo è un orologio con cui puoi modificare l'ora della sveglia in base al sito web. Quando la sveglia suona, ci sarà un suono (cicalino) e 2 luci si accenderanno
Giardinaggio intelligente basato su IoT e agricoltura intelligente con ESP32: 7 passaggi
Giardinaggio intelligente basato su IoT e agricoltura intelligente Utilizzo di ESP32: il mondo sta cambiando come il tempo e quindi l'agricoltura. Oggigiorno, le persone stanno integrando l'elettronica in ogni campo e l'agricoltura non fa eccezione per questo. Questa fusione dell'elettronica in agricoltura sta aiutando gli agricoltori e le persone che gestiscono i giardini. In questo
Calendario digitale da parete e centro informazioni per la casa: 24 passaggi (con immagini)
Calendario da parete digitale e Centro informazioni per la casa: in questo Instructable trasformerò una vecchia TV a schermo piatto in un calendario digitale a parete con cornice in legno e un centro informazioni per la casa alimentato da un Raspberry Pi. L'obiettivo era quello di avere a colpo d'occhio l'accesso a informazioni pertinenti per tutti i membri del
Raspberry Pi: calendario a parete e centro notifiche: 5 passaggi (con immagini)
Raspberry Pi: calendario a parete e centro notifiche: prima dell'"era digitale" molte famiglie usavano i calendari da parete per mostrare una vista mensile degli eventi imminenti. Questa versione moderna del calendario da parete include le stesse funzioni di base: Un'agenda mensile Sincronizzazione delle attività dei membri della famiglia