Spisu treści:

Obudź mnie - inteligentny budzik: 6 kroków
Obudź mnie - inteligentny budzik: 6 kroków

Wideo: Obudź mnie - inteligentny budzik: 6 kroków

Wideo: Obudź mnie - inteligentny budzik: 6 kroków
Wideo: POBUDKA 2024, Listopad
Anonim
Obudź mnie – inteligentny budzik
Obudź mnie – inteligentny budzik

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

Podłączanie elektroniki
Podłączanie elektroniki
Podłączanie elektroniki
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

Projekt bazy danych
Projekt 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

Zaplecze Raspberry Pi
Zaplecze 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

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

  1. Przednia płyta z otworami na głośnik i kilka ścianek na 7-segmentowy wyświetlacz
  2. Zewnętrzny pierścień do taśmy ledowej z przezroczystego PETG.
  3. Środkowa część
  4. 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: