Spisu treści:

Morning Buddy: 8 kroków
Morning Buddy: 8 kroków

Wideo: Morning Buddy: 8 kroków

Wideo: Morning Buddy: 8 kroków
Wideo: Ups. 2024, Listopad
Anonim
Image
Image

Niektórzy ludzie mają bardzo napięte harmonogramy, co sprawia, że łatwo zapomnieć o kilku rzeczach. Za pomocą tego budzika możesz ustawić wiele alarmów, aby trzymać się harmonogramu. Zegar działa na 24 godziny i wszystko, co musisz zrobić, to zaprogramować go tak, aby uruchamiał się o różnych porach dnia, które pasują do Twojego harmonogramu. Gdy to zrobisz, ustawione czasy pojawią się na ekranie LCD, dzięki czemu możesz sprawdzić, czy są prawidłowe i służyć jako dodatkowe przypomnienie.

Krok 1: Burza mózgów na pomysł

Szkicowanie i materiały
Szkicowanie i materiały

Kiedy próbowaliśmy rozwiązać ten problem, użyliśmy metody rybich kości, aby wpaść na pomysł i zaowocować naszym budzikiem.

Krok 2: Szkicowanie i materiały

Szkicowanie i materiały
Szkicowanie i materiały

Podczas tego kroku staraliśmy się sporządzić listę wszystkich rzeczy, które naszym zdaniem będą potrzebne do elektroniki i obudowy zewnętrznej. Potem wymyśliliśmy szkic tego, jak ma wyglądać budzik i jak zmontujemy jego obudowę.

Krok 3: Tworzenie obudowy zewnętrznej

Tworzenie obudowy zewnętrznej
Tworzenie obudowy zewnętrznej
Tworzenie obudowy zewnętrznej
Tworzenie obudowy zewnętrznej

W przypadku pierwszego prototypu chciałem tylko zobaczyć, jak pasują do siebie stawy palców, więc użyłem pudełka po butach i nie używałem dokładnych pomiarów.

Krok 4: Cięcie laserowe obudowy zewnętrznej

Laserowe cięcie zewnętrznej obudowy
Laserowe cięcie zewnętrznej obudowy

W przypadku drugiego prototypu chciałem uzyskać dokładne pomiary i musiałem stworzyć plik pdf do wysłania do wycinarki laserowej. W tym celu skorzystałem ze strony internetowej aplikacji do tworzenia pudełek, https://boxdesigner.connectionlab.org. Na tej stronie wprowadziłem następnie trójwymiarowe wymiary pudełka, grubość naszego materiału, jednostki miary i rodzaj pliku, który chciałem utworzyć. Wymiary pudełek wynosiły 7,5 cala x 3 cale x 5 cali, a ja użyłem grubego materiału akrylowego o grubości 1/8 cala. Pomiary nacięć stawu palcowego zostały następnie automatycznie skonfigurowane na 0,46875 cala. Wybrałem wersję pdf, ponieważ jest to typ pliku, który odczytuje wycinarka laserowa i chciałem wprowadzić pewne zmiany w pliku Adobe. Zmieniłem kolory linii na czerwony, aby wycinarka laserowa wiedziała, jak je wyciąć zamiast grawerować kształt, i dodałem prostokątne pudełko o wymiarach 3,92 cala na 1,56 cala na tym, co miało być przednią częścią skrzynka. Dodałem również wycięty prostokąt o wymiarach 1 cal na 0,5 cala z prawej strony na dole, aby służył jako otwór na przewód podłączony do budzika. Na koniec dodałem u góry trzy okrągłe otwory na dwa brzęczyki i przycisk. Otwory brzęczyka miały średnicę 0,5 cala, a otwór przycisku 0,375 cala.

Krok 5: Łączenie w całość

Łączenie w całość
Łączenie w całość

Po wycięciu wszystkich kawałków sklejałam je strzykawką i klejem akrylowym. Trzymałem kawałki razem i wlałem klej między nacięcia, aby złączyć boki, ale góra nie była sklejona.

Krok 6: Kod

Wstęp:

Ten projekt został napisany w języku c++ na oprogramowaniu Arduino IDE. Zastosowanym mikrokontrolerem był NodeMCU z układem ESP8266. W tym projekcie potrzebowalibyśmy sposobu na dokładne śledzenie czasu, brzęczyka do dźwięku, systemu alarmowego, który powoduje brzęczenie alarmu, oraz ekranu do wyświetlania czasu i czasu alarmu. Aby uzyskać pełny kod, skorzystaj z tego linku

Importowanie bibliotek

Po pierwsze, musimy zaimportować potrzebne biblioteki.

#include "RTClib.h"

#include "Wire.h" #include #include #include #include

Zmienne inicjujące

Następnie musimy zainicjować zmienne na później, przypisać układ pinów do przycisków brzęczyka, ustawić RTC i ustawić adres I2C wyświetlacza LCD.

LiquidCrystal_I2C lcd (0x27, 20, 4);

const int brzęczyk1 = 12; const int brzęczyk2 = 0; const int przycisk = 2; RTC_DS3231 RTC; char daysOfTheWeek[7][12] = {"Niedziela", "Poniedziałek", "Wtorek", "Środa", "Czwartek", "Piątek", "Sobota"} int starttime; int czas aktywności; int czas poprzedzający = 0; znak godz1[3]; znak amin1[3]; int godzina1 = 0; int min1 = 0; char ahours2[3]; char amins2[3]; int godzina2 = 0; int min2 = 0; char agodziny3[3]; char amins3[3]; int godzina3 = 0; int min3 = 0; wewn alarm = 0; int Odebrany bajt; otrzymany znakChar; const byte numChars = 32; char odebraneChars[liczbaChars];

Ustawiać

Następnie musimy mieć funkcję, która uruchamia wszystkie niezbędne procesy. W tej funkcji musimy uruchomić LCD i wydrukować początkowe czasy, zrobić mniejszą funkcję, która daje zegarowi RTC czas rzeczywisty, jeśli jeszcze go nie ma, i uruchomić monitor szeregowy.

pusta konfiguracja () {

#ifndef ESP8266 while (!Serial); #endif if(! rtc.begin()) { Serial.println("Nie można znaleźć RTC"); natomiast(1); } if (rtc.lostPower()) { Serial.println("RTC stracił zasilanie, ustawmy czas!"); rtc.adjust(DataCzas(F(_DATA_), F(_CZAS_))) } lcd.init(); podświetlenie LCD(); // włącza Baklight. lcd.clear(); // Czyści LCD lcd.print("00:00"); //wyświetlanie na LCD po przesłaniu kodu lcd.setCursor(10, 0); lcd.print("00:00"); lcd.setCursor(0, 1); lcd.print("Czas"); lcd.setCursor(10, 1); lcd.print("Alarm 1"); lcd.setCursor(0, 3); lcd.print("Alarm 2"); lcd.setCursor(0, 2); lcd.print("00:00"); lcd.setCursor(10, 3); lcd.print("Alarm 3"); lcd.setCursor(10, 2); lcd.print("00:00"); rtc.początek(); pinMode(przycisk, WEJŚCIE); //Ustaw pinezkę dla przycisku ciszy pinMode(buzzer1, OUTPUT); // ustaw pin dla wyjścia brzęczyka pinMode(buzzer2, OUTPUT); // ustaw pin dla wyjścia brzęczyka Serial.begin(9600); Serial.println("Wprowadzanie czasu alarmów w formacie HHMM bez spacji pomiędzy alarmami"); czas rozpoczęcia = milis()/1000; }

Odbieranie danych

Teraz musimy mieć możliwość odbierania godzin alarmów. W tym celu stworzyliśmy funkcję odbierania danych z monitora szeregowego i przechowywania ich w tablicy.

void recvWithEndMarker() {

statyczny int ndx = 0; String timein = Serial.readString(); for(ndx = 0; timein[ndx]; ndx++){ odebraneChars[ndx] = timein[ndx]; } odebraneChars[ndx] = '\0'; Serial.print(otrzymaneznaki); }

Ustawianie alarmów

Kolejnym krokiem jest możliwość ustawienia alarmów. Oto kod dla alarmu 1. Dla alarmu 2 i 3 powtórzono ten sam proces z kilkoma zmianami numerów.

/* Alarm 1*/

recvWithEndMarker(); int h, m; for (h = 0; h < 2; h++) { agodziny1[h] = odebraneznaki[h]; } for (m = 2; m < 4; m++) { amins1[m-2] = odebraneznaki[m]; } ahours1[h] = '\0'; amin1[m-2] = '\0'; Serial.print(ahours1); Serial.print(amin1); godzina1 = atoi(godzina1); min1 = atoi(aminy1); Serial.print(godzina1); Druk.seryjny(min1);

Brzęczyk/przycisk

Po wykonaniu tych czynności musimy włączyć brzęczyk, gdy czas rzeczywisty i czas alarmu są równe. Również w tym kroku wykonujemy przycisk drzemki, który zatrzymuje brzęczyk, gdy go trzymasz.

/* Przycisk wyciszania */

w ciszy; intb; b = odczyt cyfrowy(2); if (b == LOW) { cisza = 1; } else { cisza = 0; } /* Uruchom alarm */ if (godziny == godzina1 && minuty == min1) { alarm = 1; } else if (godziny == godzina2 && minuty == minuta2) { alarm = 1; } else if (godziny == godzina3 && minuty == minuta3) { alarm = 1; } else { alarm = 0; cisza = 0; } if (alarm == 1 && cisza == 0) { ton(brzęczyk1, 4000, 1000); ton (brzęczyk2, 4000, 1000); opóźnienie (1000); brak dźwięku (brzęczyk1); brak dźwięku (brzęczyk2); opóźnienie (1000); }

Czasy drukowania

Na koniec musimy wydrukować czasy alarmów i czas rzeczywisty na ekranie LCD.

DataCzas teraz = rtc.now();

int godzin = (teraz.godzina()); int min = (teraz.minuta()); /* Czas alarmu w formacie 00:00 */ lcd.setCursor(10, 0); lcd.print(godziny1); lcd.setCursor(13, 0); lcd.print(amins1);lcd.setCursor(0, 2); lcd.print(godziny2); lcd.setCursor(3, 2); lcd.print(amins2); lcd.setCursor(10, 2); lcd.print(godziny3); lcd.setCursor(13, 2); lcd.print(amins3); /* Wyświetl czas z RTC */ lcd.setCursor(0, 0); lcd.print(godziny); lcd.print(":"); lcd.print(min);

Krok 7: Elektronika

Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika

Jak widać w zestawieniu materiałów, elektronika tego projektu składa się z wielu elementów. Pierwsze zdjęcie to schemat projektów finalnej elektroniki. Drugi obraz to nasz ostateczny projekt elektroniczny. Trzecie zdjęcie przedstawia nasz projekt w środku drugiego prototypu.

Aby rozpocząć, podłącz NodeMCU do drugiego końca płytki prototypowej. Następnie będziesz musiał podłączyć całą pozostałą elektronikę do NodeMCU i płytki stykowej. Zacznij od podłączenia ekranu LCD do pinów D1 dla SCL i D2 dla SDA. Wyświetlacz LCD pozwoli użytkownikowi zobaczyć aktualny czas i ustawione czasy alarmu. Teraz podłącz przewodem brzęczyki do pinów D3 i D6. Brzęczyki pozwolą alarmowi powiadomić użytkownika o osiągnięciu ustawionego czasu. Musisz teraz dołączyć przycisk, aby umożliwić zatrzymanie alarmu. Dołącz ten przycisk do pinu D4. Teraz dołączysz swój zegar czasu rzeczywistego do płytki prototypowej. Podłącz zegar czasu rzeczywistego, aby używał tych samych pinów SDA i SCL, które są używane do wyświetlacza LCD.

Krok 8: Finał

Finał
Finał

Jeśli postępowałeś zgodnie z podanymi informacjami, Twój projekt może wyglądać jak na powyższym obrazku. Życzymy powodzenia w próbach odtworzenia tego projektu, a po jego zakończeniu zachęcamy do dzielenia się z nami zdjęciami i uwagami w komentarzach. Dziękuję i życzę powodzenia innym Stwórcom.

Zalecana: