Sommario:
- Passaggio 1: Brainstorming dell'idea
- Passaggio 2: schizzi e materiali
- Passaggio 3: creazione dell'involucro esterno
- Passaggio 4: taglio laser dell'involucro esterno
- Passaggio 5: metterlo insieme
- Passaggio 6: codice
- Passaggio 7: elettronica
- Passaggio 8: finale
Video: Amico mattutino: 8 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:03
Alcune persone hanno programmi molto impegnativi, il che rende facile dimenticare una o due cose. Con questa sveglia puoi impostare più sveglie per tenerti nei tempi previsti. L'orologio funziona 24 ore su 24 e tutto ciò che devi fare è programmarlo per suonare alle diverse ore del giorno che si adattano al tuo programma. Quando lo fai, i tempi che hai impostato appariranno sullo schermo LCD, in modo che tu possa controllare per assicurarti che siano corretti e servire come promemoria extra.
Passaggio 1: Brainstorming dell'idea
Quando stavamo cercando di risolvere il problema, abbiamo utilizzato il metodo a lisca di pesce per avere un'idea e il risultato è stato la nostra sveglia.
Passaggio 2: schizzi e materiali
Durante questo passaggio abbiamo cercato di fare un elenco di tutte le cose che pensavamo avremmo avuto bisogno per l'elettronica e l'involucro esterno. Quindi abbiamo realizzato uno schizzo di come volevamo che fosse la sveglia e come avremmo assemblato il suo involucro esterno.
Passaggio 3: creazione dell'involucro esterno
Per il primo prototipo volevo solo vedere come si sarebbero adattate le giunture delle dita, quindi ho usato una scatola da scarpe e non ho usato misure esatte.
Passaggio 4: taglio laser dell'involucro esterno
Per il secondo prototipo volevo ottenere le misure esatte e ho dovuto creare un pdf da inviare al laser cutter. Per fare ciò ho utilizzato un sito Web di app per la creazione di scatole, https://boxdesigner.connectionlab.org. Su quel sito ho poi inserito le dimensioni 3D della scatola, lo spessore del nostro materiale, le unità di misura e che tipo di file volevo che creasse. Le dimensioni delle scatole erano 7,5 x 3 x 5 pollici e ho usato un 1/8 di materiale acrilico spesso. Le misurazioni delle tacche delle articolazioni delle dita sono state quindi configurate automaticamente per essere 0,46875 pollici. Ho selezionato la versione pdf perché questo è il tipo di file che legge un laser cutter e volevo apportare alcune modifiche in Adobe al file. Ho cambiato i colori della linea in rosso, in modo che il laser cutter sapesse ritagliarli invece di incidere la forma, e ho aggiunto una scatola rettangolare con dimensioni di 3,92 pollici per 1,56 pollici su quella che sarebbe stata la parte anteriore del scatola. Ho anche aggiunto un rettangolo ritagliato con dimensioni di 1 pollice per 0,5 pollici sul lato destro in basso per fungere da apertura per il cavo collegato alla sveglia. Infine ho aggiunto tre aperture circolari in alto per i due cicalini e il pulsante. Le aperture del cicalino avevano un diametro di 0,5 pollici e l'apertura del pulsante era di 0,375 pollici.
Passaggio 5: metterlo insieme
Quando tutti i pezzi sono stati ritagliati ho usato una siringa e colla acrilica per sigillarli insieme. Ho tenuto insieme i pezzi e ho fatto gocciolare la colla tra le tacche per unire i lati, ma la parte superiore non è stata incollata.
Passaggio 6: codice
Introduzione:
Questo progetto è stato codificato utilizzando il linguaggio c++ sul software Arduino IDE. Il microcontrollore utilizzato era il NodeMCU con ESP8266. Per questo progetto avremmo bisogno di un modo per tenere con precisione l'ora, un cicalino per suonare, un sistema di allarme per far suonare l'allarme e uno schermo per visualizzare l'ora e gli orari della sveglia. Per il codice completo fare riferimento a questo link
Importazione di librerie
Per prima cosa, dobbiamo importare le librerie necessarie.
#include "RTClib.h"
#include "Wire.h" #include #include #include #include
Iniziare le variabili
Successivamente è necessario avviare le variabili per dopo, assegnare il layout dei pin per i pulsanti del cicalino, impostare l'RTC e impostare l'indirizzo I2C del display LCD.
LiquidCrystal_I2C lcd(0x27, 20, 4);
const int cicalino1 = 12; const int cicalino2 = 0; const int pulsante = 2; RTC_DS3231 rtc; char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Martedì", "Wednesday", "Thursday", "Friday", "Saturday"} int starttime; int activetime; int tempo precedente = 0; char ahours1[3]; char ammins1[3]; int ora1 = 0; int min1 = 0; char ahours2[3]; char ammins2[3]; int ora2 = 0; int min2 = 0; char ahours3[3]; char amins3[3]; int ora3 = 0; int min3 = 0; int allarme = 0; int ByteReceived; char ricevutoChar; const byte numChars = 32; char ha ricevutoChars[numChars];
Impostare
Successivamente, abbiamo bisogno di una funzione che avvii tutti i processi necessari. In questa funzione, dobbiamo avviare l'LCD e stampare i tempi iniziali, creare una funzione più piccola che dia all'RTC il tempo reale se non lo ha già e avviare il monitor seriale.
void setup() {
#ifndef ESP8266 while (!Serial); #endif if(! rtc.begin()) { Serial.println("Impossibile trovare RTC"); mentre(1); } if (rtc.lostPower()) { Serial.println("RTC ha perso potenza, impostiamo l'ora!"); rtc.adjust(DateTime(F(_DATE_), F(_TIME_))) } lcd.init(); lcd.backlight(); // attiva Baklight. lcd.clear(); // Cancella LCD lcd.print("00:00"); //visualizza sul display LCD dopo il caricamento del codice lcd.setCursor(10, 0); lcd.print("00:00"); lcd.setCursor(0, 1); lcd.print("Ora"); lcd.setCursor(10, 1); lcd.print("Allarme 1"); lcd.setCursor(0, 3); lcd.print("Allarme 2"); lcd.setCursor(0, 2); lcd.print("00:00"); lcd.setCursor(10, 3); lcd.print("Allarme 3"); lcd.setCursor(10, 2); lcd.print("00:00"); rtc.begin(); pinMode(pulsante, INGRESSO); //Imposta un pin per il pulsante di silenzio pinMode(buzzer1, OUTPUT); // imposta un pin per l'uscita del cicalino pinMode(buzzer2, OUTPUT); // imposta un pin per l'uscita del cicalino Serial.begin(9600); Serial.println("Inserimento orario allarmi in formato HHMM senza spazi tra gli allarmi"); ora di inizio = millis()/1000; }
Ricevendo dati
Ora, dobbiamo essere in grado di ricevere gli orari della sveglia. Per farlo abbiamo creato una funzione per ricevere i dati dal monitor seriale e memorizzarli in un array.
void recvWithEndMarker() {
statico int ndx = 0; String timein = Serial.readString(); for(ndx = 0; timein[ndx]; ndx++){ caratteri ricevuti[ndx] = timein[ndx]; } caratteri ricevuti[ndx] = '\0'; Serial.print(receivedChars); }
Impostazione degli allarmi
Il prossimo passo è essere in grado di impostare gli allarmi. Ecco il codice per l'allarme 1. Per l'allarme 2 e 3 è stato ripetuto lo stesso processo con alcune modifiche numeriche.
/* Allarme 1*/
recvWithEndMarker(); int h, m; for (h = 0; h < 2; h++) { ore1[h] = caratteri ricevuti[h]; } for (m = 2; m < 4; m++) { amins1[m-2] = caratteri ricevuti[m]; } ore1[h] = '\0'; amins1[m-2] = '\0'; Serial.print(ore1); Serial.print(amins1); ora1 = atoi(ore1); min1 = atoi(amin1); Serial.print(hour1); Serial.print(min1);
Cicalino/pulsante
Fatto ciò, dobbiamo far suonare il cicalino quando l'ora reale e l'ora della sveglia sono uguali. Anche in questo passaggio creiamo un pulsante tipo snooze che interrompe il cicalino mentre lo tieni premuto.
/* Pulsante Silenzio */
silenzio interiore; int b; b = digitalRead(2); if (b == BASSO) { silenzio = 1; } else { silenzio = 0; } /* Avvia sveglia */ if (ore == ora1 && minuti == min1) { allarme = 1; } else if (ore == ora2 && minuti == min2) { allarme = 1; } else if (ore == ora3 && minuti == min3) { allarme = 1; } else { allarme = 0; silenzio = 0; } if (allarme == 1 && silenzio == 0) { tone(buzzer1, 4000, 1000); tono (cicalino2, 4000, 1000); ritardo(1000); noTono(cicalino1); noTone(cicalino2); ritardo(1000); }
Tempi di stampa
Infine, abbiamo bisogno di stampare gli orari della sveglia e il tempo reale sullo schermo LCD.
DateTime now = rtc.now();
int ore = (ora.ora()); int mins = (now.minute()); /* Ora sveglia in formato 00:00 */ lcd.setCursor(10, 0); lcd.print(ore1); lcd.setCursor(13, 0); lcd.print(amins1);lcd.setCursor(0, 2); lcd.print(ore2); lcd.setCursor(3, 2); lcd.print(amin2); lcd.setCursor(10, 2); lcd.print(ore3); lcd.setCursor(13, 2); lcd.print(amin3); /* Visualizza ora da RTC */ lcd.setCursor(0, 0); lcd.print(ore); lcd.print(: ); lcd.print(min);
Passaggio 7: elettronica
Ci sono più pezzi nell'elettronica di questo progetto, come si vede nella distinta base. La prima immagine è uno schema dell'elettronica finale del progetto. La seconda immagine è il nostro progetto elettronico finale. La terza immagine è del nostro progetto nel mezzo del secondo prototipo.
Per iniziare, collega il tuo NodeMCU all'estremità opposta della breadboard. Dovrai quindi collegare tutti gli altri dispositivi elettronici al NodeMCU e alla breadboard. Inizia collegando lo schermo LCD ai pin D1 per SCL e D2 per SDA. Il display LCD consentirà all'utente di visualizzare l'ora corrente e le ore di sveglia impostate. Ora collega con un cavo i cicalini ai pin D3 e D6. I cicalini consentiranno all'allarme di avvisare l'utente quando il tempo impostato è stato raggiunto. È ora necessario collegare un pulsante per consentire l'arresto dell'allarme. Collegare questo pulsante al pin D4. Ora collegherai il tuo orologio in tempo reale alla breadboard. Collega l'orologio in tempo reale in modo che utilizzi gli stessi pin SDA e SCL utilizzati per il display LCD.
Passaggio 8: finale
Se hai seguito le informazioni fornite, il tuo progetto potrebbe assomigliare all'immagine sopra. Ti auguriamo buona fortuna nei tuoi tentativi di ricreare questo progetto e quando avrai completato il tuo progetto ti incoraggiamo a condividere immagini e commenti con noi nei commenti. Grazie e buona fortuna amici Maker.
Consigliato:
Luci del migliore amico a lunga distanza fai-da-te: 4 passaggi (con immagini)
Luci del migliore amico a lunga distanza fai-da-te: ho realizzato luci sincronizzate a lunga distanza conosciute come "Best Friend" lampade. Ciò significa solo che sono mantenuti sincronizzati con il colore corrente dell'altra lampada. Quindi, se dovessi cambiare una lampada in verde, poco dopo l'altra lampada diventerebbe verde
ShWelcome Box: l'amico a volte: 8 passaggi
ShWelcome Box: l'amico a volte: cerchi compagnia?
Benvenuto in un amico: 10 passaggi
Benvenuto in un amico: un progetto creato da: Chris Kang, David Kalman, Rick Schutte e Misha Gliwny
Smetti di inveire con l'amico degli sfoghi: 8 passaggi (con immagini)
Stop Rants With the Rant Buddy: A casa mia troviamo molto di cui lamentarci: l'autobus era in ritardo, il distributore dell'acqua al lavoro non è abbastanza freddo, la gastronomia chiude presto. Ma se lasciati incontrollati, questi piccoli brontolii possono trasformarsi in sproloqui in piena regola. È qui che questo pratico rant-stop
Come Descrivere una Serie TV per un Amico Cieco: 4 Passaggi (Illustrato)
Come descrivere una serie TV per un amico cieco.: Alcune serie TV sono descritte (DVS), ma molte non lo sono e se sei non vedente o ipovedente le cose possono diventare un po' confuse. Puoi chiedere a un amico di digitare una descrizione (che ha detto che l'amico inizierà a trovare un po' troppo dispendioso in termini di tempo), ma registra