Sommario:

Amico mattutino: 8 passaggi
Amico mattutino: 8 passaggi

Video: Amico mattutino: 8 passaggi

Video: Amico mattutino: 8 passaggi
Video: Neima Ezza - Casa (prod. NKO) 2024, Novembre
Anonim
Image
Image

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

Schizzi e materiali
Schizzi e materiali

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

Schizzi e materiali
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

Creazione dell'involucro esterno
Creazione dell'involucro esterno
Creazione dell'involucro esterno
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

Taglio laser dell'involucro esterno
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

Metterlo insieme
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

Elettronica
Elettronica
Elettronica
Elettronica
Elettronica
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

Finale
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: