Spisu treści:
- Kieszonkowe dzieci
- Krok 1: Konfiguracja Raspberry Pi
- Krok 2: Podłączanie elektroniki
- Krok 3: Projektowanie bazy danych
- Krok 4: Konfiguracja Arduino
- Krok 5: Backend Raspberry Pi
- Krok 6: Sprawa
Wideo: Obudź mnie - inteligentny budzik: 6 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:28
Wake me up to inteligentny budzik, który może być również używany jako inteligentne światło.
Wbudowany pasek ledowy symuluje naturalne światło wpadające do pokoju. Umożliwia to spokojny, naturalny sposób na rozpoczęcie dnia.
Budzik jest również wyposażony w wyświetlacz 4*7-segmentowy do odczytywania czasu, głośniki do budzenia się przy ulubionej muzyce, przycisk dotykowy, ldr do regulacji jasności taśmy led oraz czujnik temperatury, za pomocą którego można przeglądać temperatura w Twoim pokoju.
Kieszonkowe dzieci
Lista dokładnych cen, które zapłaciłem, znajduje się tutaj:
Mikrokontrolery i komputery:
Raspberry Pi 4I używał raspberry pi 4 4GB, jednak każdy model raspberry pi 3+ powinien być w porządku
Arduino Uno
Arduino służy do sterowania 4*7 segmentowym wyświetlaczem zegara.
Czujniki:
- TMP36: czujnik temperatury
- LDR: Rezystor zależny od światła
Siłowniki:
- WS2801: Indywidualnie adresowany pasek led
- Wyświetlacz LCD: Wyświetlacz LCD 16*2.
- 4*7-segmentowy wyświetlacz zegara;
IC:
- 74HC595: rejestr zmian dla wyświetlacza lcd
- MCP3008: 8-bitowy konwerter analogowo-cyfrowy
- Konwerter poziomów logicznych: używany do komunikacji między raspi i arduino
Inne rzeczy:
- Wzmacniacz adafruit MAX9744 do zasilania głośników
- Dowolny głośnik, użyłem pełnozakresowego głośnika Visaton 4Ohm 8Watt (nr art. 2240)
- Zasilacz 9 V do zasilania wzmacniacza
- Zasilacz 5 V do zasilania taśmy led i innych komponentów. Pamiętaj, że każda dioda led w taśmie led może pobierać 60 mA, więc upewnij się, że zasilanie jest wystarczające.
- Kilka rezystorów 220Ohm
- Mała płytka stykowa do włożenia do walizki.
Narzędzia:
- Lutownica.
- Coś do wykonania obudowy (użyłem drukarki 3d z PLA i PETG i kilkoma naklejkami winylowymi, aby uzyskać efekt drewna).
Krok 1: Konfiguracja Raspberry Pi
Naszym głównym mikrokontrolerem jest raspberry pi.
Raspberry pi obsługuje nasz lokalny serwer internetowy, bazę danych, kontroluje pasek led, głośniki, …
Część 1: Instalowanie Raspbian
Użyj tego samouczka, aby zainstalować raspbian:
Upewnij się, że SSH jest włączone
Część 2: Nawiązywanie połączenia
Aby połączyć się z Internetem, musisz uzyskać dostęp do terminala Raspberry Pi. Polecam stosowanie szpachli. W terminalu wpisz:
wpa_passphrase "Twoja sieć" "Twój identyfikator SSID" >> /etc/wpa_supplicant/wpa_supplicant.conf
„YourNetwork” to nazwa Twojej sieci Wi-Fi, a „YourSSID” to hasło do sieci.
Po dodaniu sieci spróbuj ponownie uruchomić Raspberry Pi.
Wpisz polecenie „ping 8.8.8.8”, to wyśle pakiet do serwerów Google, jeśli otrzymasz odpowiedź, że twoja sieć jest skonfigurowana i działa!
Część 3: Zainstaluj potrzebne programy
Będziemy potrzebować kilku dodatkowych programów, aby uruchomić ten projekt.
Zanim zaczniemy, uruchom te 2 polecenia, aby upewnić się, że wszystko jest zaktualizowane.
aktualizacja sudo apt
aktualizacja sudo apt
To może zająć chwilę.
Apache
sudo apt zainstaluj apache2 -y
sudo apt zainstaluj php libapache2-mod-php -y
MariaDB
sudo apt zainstaluj serwer mariadb mariadb-klient -y
sudo apt zainstaluj php-mysql -y
PHPMyAdmin
sudo apt zainstaluj phpmyadmin -y
python
Musimy zainstalować pip, aby włączyć niektóre biblioteki Pythona
pip3 zainstaluj mysql-connector-python
pip3 zainstaluj kolbę-socketio
pip3 zainstaluj kolby-cors
pip3 instalacja gevent
pip3 zainstaluj gevent-websocket
Krok 2: Podłączanie elektroniki
Dodałem 2 schematy, 1 to schemat płytki prototypowej do celów testowych. Polecam zbudować pierwszy schemat i spróbować uruchomić kod.
Dodałem poniżej pliki fryzujące.
Krok 3: Projektowanie bazy danych
To jest schemat bazy danych, który stworzyłem. Słowa są w języku holenderskim, ale szczegółowo wyjaśnię każdą tabelę.
Tabela 1: tblMuziek
To całkiem prosty stół. Zapisuje nazwę wykonawcy, nazwę utworu i nazwę pliku utworu.
Tabela 2: tblLedstrip
Ta tabela śledzi bieżący stan taśmy ledowej, zapisuje stan taśmy led. Potrzebujemy tego do funkcji smartlight.
Tabela 3: tblSensoren
Ta tabela śledzi czujniki w naszym alarmie. Przechowujemy nazwę czujnika i kanału MCP3008
Tabela 4: tblMeting
Ta tabela przechowuje wartości naszych czujników wraz z ich czasem.
Tabela 5: tblWekker
Ta tabela przechowuje hasło i nazwę twojego budzika (np. Sypialnia) Ta tabela nie jest obowiązkowa, ale dodałem ją, ponieważ zakładam, że będziesz mieć więcej niż 1 budzik w swoim domu.
Tabela 6: tblAlarm
To chyba najważniejszy stół. Śledzi ustawiony przez Ciebie alarm i co ma robić zegar (którą piosenkę odtwarzać, która sekwencja diod LED, w jakie dni ma się włączać,…). Bardzo ważne jest śledzenie 2 dat. 1 data służy do zapisywania, o której godzinie alarm powinien się włączyć. Drugi śledzi, kiedy ostatnio włączył się alarm. Aby wiedzieć, w który dzień powinien zadziałać, użyłem varchar, który zawiera liczbę 7 cyfr. Pierwsza cyfra to poniedziałek, drugi wtorek… Jeśli to 1, to powinno zgasnąć, jeśli to 0, nie powinno. Przykład: 1111100 oznacza to, że ten alarm powinien się włączyć w poniedziałek, wtorek, środę, czwartek i piątek.
Krok 4: Konfiguracja Arduino
Ten krok jest bardzo prosty. W następnym kroku będzie link do mojego github, gdzie można pobrać plik arduino.
Co robi program?
Program czeka na przybycie danych szeregowych z pi.
Jak tylko dane zostaną odebrane, analizuje ciąg i odsyła potwierdzenie do pi.
Ciąg będzie wyglądał mniej więcej tak: „1201” oznacza to, że jest 12:01. Użyłem zwykłego 7-segmentowego wyświetlacza anodowego, co oznacza, że cyfry powinny być wysokie, a A, B, C, D, E, F, G i DP powinny być niskie, aby je włączyć. Jeśli używasz wspólnej katody, powinieneś po prostu zmienić WYSOKI na NISKI i NISKI na WYSOKI.
Oto link z dodatkowymi informacjami o działaniu wyświetlaczy 7-segmentowych. (z wykorzystaniem biblioteki):
www.instructables.com/id/Using-a-4-digit-7…
Oto link dotyczący 7-segmentowych wyświetlaczy bez użycia biblioteki:
create.arduino.cc/projecthub/Sanwandter1/p…
Krok 5: Backend Raspberry Pi
Możesz pobrać mój kod za pomocą Github. (https://github.com/VanHevelNico/WakeMeUp)
Jak zainstalować program:
Backend jest napisany w Pythonie przy użyciu flask. Możesz stworzyć usługę, która automatycznie uruchamia ten program (app.py).
Powinieneś umieścić kod frontendu w pliku html serwera Apache, który pobraliśmy wcześniej. (/zmienna/html)
Jak działa ten program?
Gdy budzik jest włączony, przejdź do adresu ip swojego zegara (będzie wyświetlany na lcd)
Jak tylko przejdziesz do tego adresu IP w przeglądarce, twój komputer wyśle żądanie socket.io do zaplecza, mówiąc, że klient się połączył. Gdy backend otrzyma to, rozpocznie się kilka wątków, które wyjaśnię poniżej.
Ustawiać
To inicjuje wszystkie potrzebne obiekty.
Pobierz Temp
To odczytuje kanał 0 mcp3008 i konwertuje dane binarne na rzeczywistą temperaturę i umieszcza je w bazie danych z aktualną datą i godziną.
GetTempGrafiek
To pobiera ostatnie 20 wartości czujnika temperatury i wysyła je do interfejsu.
tijd_sturen
Ta metoda pobiera aktualny czas i sprawdza, czy zmieniła się minuta. Jeśli to się zmieniło, program wysyła nowy czas do arduino za pomocą komunikacji szeregowej
sprawdźAlarmy
To jest najważniejsza metoda. Pobiera wszystkie alarmy, które są włączone i sprawdza, czy któryś z tych alarmów musi zniknąć od teraz do 5 minut temu (jest to bufor, który zapewnia, że każdy alarm zostanie uruchomiony, gdy zajdzie taka potrzeba). Jeśli alarm ma się włączyć uruchamiamy muzykę, ledstrip, … Ciągle odczytujemy rezystor czuły na siłę i gdy wartość spadnie poniżej 1000 (odczyt fsr jest wciśnięty) Wyłączamy alarm i aktualizujemy alarm w Baza danych. Datę ostatniego uruchomienia alarmu ustawiamy na datę bieżącą.
stanŚwiatło
Ta metoda emituje wartość ledstrip i w razie potrzeby włącza ledstrip.
lichtAanpassen
Jest to dodatkowa metoda, aby upewnić się, że pasek led i lampka alarmowa nie są w konflikcie.
Krok 6: Sprawa
Link do moich plików można znaleźć tutaj:
Do wydrukowania obudowy użyłem drukarki 3d. Jest wydrukowany w 4 różnych częściach:
- Przednia płyta z otworami na głośnik i kilka ścianek na 7-segmentowy wyświetlacz
- Zewnętrzny pierścień do taśmy ledowej z przezroczystego PETG.
- Środkowa część
- Tylna płyta z otworem na lcd i otworem na kable.
W oryginalnym modelu nie było otworu na 7-segmentowy wyświetlacz, ale jest to potrzebne, ponieważ w przeciwnym razie światło 7-segmentowego wyświetlacza nie będzie prześwitywać.
Jak widać po włożeniu wszystkich elementów, użyłem winylowych naklejek o wyglądzie drewna, aby efekt końcowy wyglądał lepiej. Wyświetlacz zegara prześwituje przez naklejkę, co daje bardzo ładny efekt.
Zalecana:
Obudź maszynę: 4 kroki
Wake Up Machine: Powodem, dla którego stworzyłem tę maszynę, jest to, że kiedy budzę się rano przez alarm, łatwo zasypiam, jeśli nie założę okularów, a alarm można łatwo zamknąć, naciskając przycisk. Dlatego zrobiłem tę maszynę, która mogłaby korzystać
Obudź się !!!: 5 kroków
Wake Up !!!: Ten projekt ma obudzić ludzi. Jest wiele osób, które nie mogły obudzić się z alarmu, więc ten projekt ma pomóc tym ludziom łatwo i szybko się obudzić. W projekcie wykorzystano serwomotor i fotorezystor, gdy światła na fotorezystorze ś
Rozświetl mnie!: 20 kroków (ze zdjęciami)
Light Me Up!: członkowie zespołu projektowego (Hyewon Shin, Eunjeong Ko, Junsung Yi) Co by było, gdybyś mógł dotknąć i zaprojektować światło? Jak by to było, gdybyś miał piękny wzór światła, który sam zaprojektowałeś z ciekawą animacją? Light me up będzie i
Testowanie czujników temperatury – który dla mnie?: 15 kroków (ze zdjęciami)
Testowanie czujników temperatury - który dla mnie?: Jednym z pierwszych czujników, które nowicjusze w dziedzinie komputerów fizycznych chcą wypróbować, jest urządzenie do pomiaru temperatury. Cztery z najpopularniejszych czujników to TMP36, który ma wyjście analogowe i wymaga przetwornika analogowo-cyfrowego, DS18B20, który
Zegar lokalizacji Ktoś mnie kocha: 6 kroków (ze zdjęciami)
Zegar lokalizacji Ktoś mnie kocha: Z bliskimi za granicą lub poza stanem nic nie mówi, że myślę o tobie lepiej niż zawsze wiem, która jest dla nich godzina! Moi emerytowani teściowie przygotowywali się do służby na misji kościelnej w Berlinie w Niemczech, a moja żona wymyśliła g