Spisu treści:
- Krok 1: Burza mózgów na pomysł
- Krok 2: Szkicowanie i materiały
- Krok 3: Tworzenie obudowy zewnętrznej
- Krok 4: Cięcie laserowe obudowy zewnętrznej
- Krok 5: Łączenie w całość
- Krok 6: Kod
- Krok 7: Elektronika
- Krok 8: Finał
Wideo: Morning Buddy: 8 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:31
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ł
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
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
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
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ść
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
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ł
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:
Lazy 301 Dart Buddy!: 5 kroków
Lazy 301 Dart Buddy!: Moi współlokatorzy z college'u i ja niedawno odziedziczyliśmy zniszczoną tablicę do rzutek… Zaczęliśmy odkrywać gry takie jak 301, w których każdy gracz zaczyna od 301 punktów, schodzi do zera w ciągu kilku rund . To było zabawne, ale pisanie na
Arduino Bread Board Buddy: 12 kroków
Arduino Bread Board Buddy: Buduję wszystkie obwody na płytce do chleba; jednak budowanie tego samego obwodu sto razy może być monotonne, więc lubię modułowe części do budowy prototypów. Większość obwodów, takich jak zasilacze 5-woltowe, jest dość standardowa. Płyta do chleba Arduino Budd
Stop Rants z Rant Buddy: 8 kroków (ze zdjęciami)
Stop Rants With the Rant Buddy: W moim domu znajdujemy wiele powodów do narzekań: autobus się spóźniał, chłodnica wody w pracy nie jest wystarczająco zimna, delikatesy zamykane są wcześnie. Ale pozostawione bez kontroli, te drobne narzekania mogą wzrosnąć w pełnowymiarowe tyrady. To tam ten poręczny rant-stop
Gadające urządzenie do pomiaru indeksu UV z użyciem czujnika VEML6075 i Little Buddy Talker: 5 kroków
Gadające urządzenie do pomiaru indeksu UV, wykorzystujące czujnik VEML6075 i Little Buddy Talker: nadchodzi lato! Świeci słońce! Co jest świetne. Ale ponieważ promieniowanie ultrafioletowe (UV) staje się coraz bardziej intensywne, ludzie tacy jak ja mają piegi, małe brązowe wysepki pływające w morzu czerwonej, swędzącej, spalonej słońcem skóry. Możliwość posiadania informacji w czasie rzeczywistym
The Morning Machine: 5 kroków (ze zdjęciami)
The Morning Machine: Czy kiedykolwiek obudziłeś się rano ze swoim denerwującym alarmem, a następnie przeszedłeś całą drogę do kuchni, aby przejść przez wysiłek nalania swojego drinka? Nie szukaj dalej! Ta instrukcja nauczy Cię, jak zrobić maszynę, która nie może