Reklama
Przełączniki zmierzch-czas-świt i wyłączniki czasowe to przydatne sposoby na zautomatyzowanie oświetlenia. Czy nie byłoby wspaniale, gdybyś mógł połączyć te dwa elementy, a nawet podłączyć je do Internetu, aby uzyskać naprawdę inteligentny system oświetlenia?
Raspberry Pi, przekaźnik, czujnik światła i odrobina kodu to wszystko, czego potrzebujesz, aby osiągnąć tę automatyczną nirwanę oświetleniową na sznurowadle.
Co będziesz potrzebował
Komponenty inteligentnego przełącznika światłoczułego można łatwo znaleźć. Będziesz potrzebował:
- Dowolny model Raspberry Pi z systemem Raspbian.
- ZA płyta przekaźnikowa, łatwo znaleźć na Amazon.
- Na Czujnik jasności Adafruit TSL2561.
- Przewody rozruchowe.
- Niektóre światła do automatyzacji!
Jak działa inteligentny przełącznik światłoczuły
Używając przekaźnika w taki sam sposób jak nasz projekt automatycznego otwierania drzwi garażowych Jak zautomatyzować bramę garażową za pomocą IFTTT i Raspberry PiW tym samouczku pokażemy, jak zautomatyzować bramę garażową przy użyciu wyłącznie Raspberry Pi i IFTTT. Czytaj więcej
, możesz zaprogramować Raspberry Pi, aby włączał i wyłączał obwód oświetlenia w ustalonych godzinach. Dodanie czujnika jasności do miksu oznacza, że Pi może wykryć poziom światła w otoczeniu i zdecydować, aby włączyć światła tylko wtedy, gdy są naprawdę potrzebne.Ponieważ Pi to niewielki komputer, który można podłączyć do sieci, można go skonfigurować również do sterowania przez Internet. Twoje inteligentne światła będą miały trzy wejścia do określenia, kiedy się włączą:
- Zaprogramowany harmonogram.
- Poziom światła otoczenia.
- Sygnał zastępujący wysyłany przez sieć.
Krok 1: Podłącz Raspberry Pi do przekaźnika
Jeśli dopiero zaczynasz korzystać z GPIO, zacznij od przeczytania Wszystko, co musisz wiedzieć o pinach GPIO Raspberry Pi.
Najpierw sprawdź, czy tablica przekaźników ma zworkę łączącą styki VCC i JD-VCC. Jeśli tak, usuń go.
Po wyłączeniu zasilania podłącz kartę przekaźników do swojego Pi w następujący sposób:
- Pi Pin 2 (5v) do JD-VCC na płycie przekaźników.
- Pi Pin 6 (GND) do GND na płycie przekaźników.
- Pi Pin 15 (GPIO 22) do IN1 na płycie przekaźników
- Pi Pin 17 (3.3v) do VCC na płycie przekaźników.
Krok 2: Podłącz czujnik luminancji
TSL2561 to czujnik światła, który może wykrywać podczerwień, pełne spektrum i światło widzialne dla ludzi. Może wysyłać bardzo dokładny odczyt cyfrowy do Raspberry Pi. Czujnik zgłasza poziom światła w skali od 0,1 (brak światła) do 40 000 (jasne słońce).
Płyta TSL2561 rozmawia z Raspberry Pi przy użyciu protokołu i2c. I2C potrzebuje tylko dwóch połączeń, jednego dla zegara, aby utrzymać synchronizację dwóch urządzeń, a drugiego dla przesyłanych danych. Oczywiście czujnik luksowy również potrzebuje trochę energii, więc można wykonać cztery połączenia:
- Podłącz Pi Pin 1 (3.3v) do Vin (lub VCC) na czujniku lux
- Podłącz Pi Pin 3 (SDA) do SDA na czujniku lux
- Podłącz Pi Pin 5 (SCL) do SCL na czujniku lux
- Podłącz Pin Pin 9 (GND) do GND czujnika luksa
Krok 3: Skonfiguruj i zainstaluj zależności
Zanim przejdziesz dalej, musisz sprawdzić, czy I2C jest włączony na twoim Raspberry Pi (domyślnie jest wyłączony). Wpisz następujące polecenie w terminalu:
sudo raspi-config
Wybierz Opcje interfejsów> P5 I2C, następnie wybierz tak.
Trafienie Wchodzić następnie wybierz koniec aby wyjść z ekranu konfiguracji. Uruchom ponownie Pi, aby zmiana zaczęła obowiązywać:
sudo restart
Pewne zależności są konieczne, aby Pi mógł komunikować się z płytką czujnika. Wpisz następujące polecenia:
sudo apt-get update. sudo apt-get install -y python-smbus. sudo apt-get install -y i2c-tools
Możesz sprawdzić, czy wszystko działa, pisząc:
sudo i2cdetect -y 1
Jeśli Twoje zależności są zainstalowane, a czujnik Lux jest podłączony prawidłowo, zobaczysz taką odpowiedź:
Tutaj narzędzie zgłasza, że znalazło urządzenie I2C (czujnik lux) pod adresem I2C 39.
Jeszcze nie skończyłeś z zależnościami. Będziesz także potrzebował kilku bibliotek. Najpierw utwórz folder, aby przechowywać wszystko związane z tym projektem w:
mkdir ~ / lighting. cd ~ / oświetlenie
Następnie pobierz butelka, lekka platforma, która utworzy prosty serwer WWW na twoim Pi. Użyjesz go do sterowania oświetleniem z Internetu.
wget https://bottlepy.org/bottle.py
Inne potrzebne biblioteki znajdują się w Github, więc jeśli na Raspberry Pi nie ma już zainstalowanego Git, dodaj go teraz:
sudo apt-get install git
Teraz sklonuj dwie biblioteki, takie jak to:
klon gita https://github.com/adafruit/Adafruit_Python_GPIO.git. klon gita https://github.com/adafruit/Adafruit_Python_PureIO.git
Na koniec utwórz skrypt testowy, tworząc nowy plik:
nano test.py
Wklej ten kod (dzięki uprzejmości Adafruit):
#! / usr / bin / env python. # - * - kodowanie: utf-8 - * - z __future__ import absolutny_import, podział, funkcja_wydruku, litery_jednostkowe. z tsl2561 import TSL2561. if __name__ == "__main__": tsl = TSL2561 (debugowanie = prawda) print (tsl.lux ())
naciśnij Ctrl + X aby zapisać, postępuj zgodnie z instrukcjami wyświetlanymi na ekranie, aby wyjść.
Po zakończeniu uruchom skrypt testowy:
python test.py
Jeśli wszystko jest zainstalowane i działa, otrzymasz numer. Ta liczba jest odczytem lux z czujnika. Spróbuj zablokować czujnik lub przesunąć go, aby uzyskać więcej lub mniej światła. Następnie ponownie uruchom skrypt testowy i sprawdź, jak zmienia się liczba.
Krok 4: Utwórz skrypty automatyzacji
Raspberry Pi włącza światła, gdy robi się ciemno, ale także wyłącza je w określonych porach. Na przykład możesz chcieć włączyć światła, gdy wieczorem robi się ciemno, a następnie zgasić około północy, aby oszczędzać prąd. Mogli przyjść ponownie wcześnie rano, a potem wyłączyć się, gdy zapali się światło.
Aby zarządzać harmonogramem z wieloma takimi strefami czasowymi, istnieją dwa różne skrypty. Jeden (onzone.py) będzie działać co minutę w czasie, gdy chcesz, aby światła były włączone, gdy jest ciemno. Inny (offzone.py) będzie działać co minutę w czasie, gdy chcesz, aby światła były wyłączone, niezależnie od poziomu oświetlenia.
Skrypty zostaną zaplanowane do uruchomienia za pomocą zadań cron Jak planować zadania w systemie Linux za pomocą Cron i CrontabMożliwość automatyzacji zadań jest jedną z tych futurystycznych technologii, które już tu są. Każdy użytkownik systemu Linux może korzystać z harmonogramu zadań systemowych i zadań użytkownika, dzięki cron, łatwej w obsłudze usłudze w tle. Czytaj więcej . Wybierając godziny dnia i nocy, w których uruchamiany jest każdy skrypt, łatwo będzie ustawić godziny, w których światła będą włączane automatycznie. Możesz ustawić dowolną liczbę okresów włączenia i wyłączenia.
Oprócz skryptów do automatycznego kontrolowania świateł istnieje trzeci skrypt do zarządzania sytuacjami zastępującymi. Umożliwi to zdalne włączanie świateł, niezależnie od poziomu oświetlenia otoczenia.
Skrypt 1: Strefa ON
Ten skrypt w języku Python będzie uruchamiany co minutę dnia, kiedy chcesz, aby światła włączały się, gdy jest ciemno. Pobierz skrypt, kopiując i wklejając to polecenie do terminala:
wget https://gist.githubusercontent.com/hamishdownell/ea151d2ff7c888ac09f8a850afaab4ee/raw/10b0e9d8ec42f8577750941da46a93d16b597c05/onzone.py
Za każdym razem, gdy plik onzone.py jest uruchamiany, czujnik pobiera wartość lux z czujnika, aby sprawdzić, czy jest ciemno. Jeśli tak, sprawdzi, czy światła są włączone, czy wyłączone. Jeśli są wyłączone, włączy je. Jeśli nie jest ciemno, skrypt sprawdzi, czy światła są włączone. Jeśli tak, wyłączy je, chyba że zostaną zastąpione.
Skrypt używa zmiennej o nazwie lowlux aby zdecydować, w którym momencie jest wystarczająco ciemno, aby włączyć światła. Możesz zmienić to na odpowiednie dla twojej instalacji, zmieniając wartość w tym wierszu u góry onzone.py:
lowlux = 50
Skrypt 2: Strefa OFF
Ten skrypt będzie uruchamiany co minutę dnia, w którym chcesz, aby światła były wyłączone, chyba że zostaną zastąpione. Pobierz skrypt:
wget https://gist.githubusercontent.com/hamishdownell/fb8970909145bbfefbbef8dba5f5a00f/raw/eae5a6057a51ca4727907c7d061f0a48b07da944/offzone.py
Ten skrypt nie dba o to, jak jasny lub ciemny jest. Jego zadaniem jest po prostu wyłączanie świateł, jeśli są włączone (chyba że zostały zastąpione).
Skrypt 3: Serwer zastępowania
Ten skrypt tworzy prostą usługę internetową, która może akceptować polecenia do wykonywania następujących czynności:
- Włącz światła na kilka minut, niezależnie od poziomu oświetlenia otoczenia.
- Wyłącz światła.
- Dowiedz się, czy światła są aktualnie włączone, czy wyłączone.
- Dowiedz się, jak długo jeszcze światła mają pozostać włączone, gdy zostaną zastąpione.
Pobierz skrypt:
wget https://gist.githubusercontent.com/hamishdownell/2303bfd9fb30d42e79923bdb7e69ed4e/raw/7dcb456b81b8ae58ae48efa225adb41ba7d7f69c/lightserver.py
Przed przejściem do następnego kroku uruchom skrypt offzone.py w następujący sposób:
python offzone.py
Spowoduje to utworzenie plików kontrolnych używanych przez skrypty do śledzenia wszystkiego.
Krok 5: Zaplanuj skrypty
Twój Raspberry Pi może uruchamiać skrypty automatyzacji z cronem. Skonfiguruj harmonogram w ten sposób:
sudo crontab -e
Wklej te dwa wiersze do edytora tekstu:
* 7,8,9,17,18,19,20,21,22,23 * * * python /home/pi/lighting/onzone.py> NULL. * 0,1,2,3,4,5,6,10,11,12,13,14,15,16 * * * python /home/pi/lighting/offzone.py> NULL
Uwaga: jeśli nazwa użytkownika zalogowana do Raspberry Pi nie była domyślna Liczba Pi, zmień odpowiednio ścieżkę.
Wymień wszystkie godziny, w których chcesz włączyć światła, gdy jest ciemno w pierwszej linii. Wszystkie godziny, w których chcesz zgasić światło, przechodzą na drugą linię.
Teraz ustaw skrypt zastępowania, aby uruchamiał się automatycznie po uruchomieniu Pi:
sudo nano /etc/rc.local
Wklej ten wiersz na dole pliku, a następnie zapisz i wyjdź:
python nohup /home/pi/lighting/lightserver.py &
Na koniec zrestartuj Raspberry Pi, abyś mógł sprawdzić, czy skrypt serwera ładuje się tak, jak powinien
sudo restart
Krok 6: Przetestuj przekaźnik
Przed podłączeniem lamp sprawdź, czy wszystko działa, korzystając z funkcji zastępowania. Wpisz następujące polecenie w przeglądarce internetowej w tej samej sieci co Pi, zastępując adres IP adresem własnego Raspberry Pi:
11.22.33.44:1234/overrideon/3
Jeśli wszystko będzie dobrze, usłyszysz kliknięcie przekaźnika, a przeglądarka odpowie, że światła zostały włączone na trzy minuty.
Gdy przekaźnik jest zamknięty, możesz przetestować inne funkcje zastępowania. Dzięki temu dowiesz się, o ile więcej minut światła będą włączone z powodu nadpisania:
11.22.33.44:1234/getoverrideremerem
To powinno ci powiedzieć, że światła są włączone:
11.22.33.44:1234/lightstatus
Wreszcie możesz je ponownie wyłączyć za pomocą:
11.22.33.44:1234/overrideoff
Przekaźnik kliknie, gdy się otworzy.
Krok 7: Podłącz swoje światła
Wyłącz i odłącz Raspberry Pi przed podłączeniem lamp do przekaźnika. Zamiast normalnego przełącznika użyj normalnie otwartych (NO) złączy na płycie przekaźników:
Na koniec możesz zainstalować czujnik lux w miejscu, w którym będzie on przechwytywał poziom światła otoczenia. Pamiętaj, że TSL2561 zgłosi, że jest nasycony, jeśli napotka bezpośrednie jasne światło słoneczne, więc najlepiej, jeśli to możliwe, trzymać go w cieniu.
Więcej projektów Raspberry Pi do wypróbowania
Zdalne zastępowanie nowej konfiguracji inteligentnego oświetlenia przez wpisywanie poleceń w przeglądarce internetowej jest dość kłopotliwe. Lepszym sposobem jest podłączenie czegoś takiego jak Amazon Echo, aby ułatwić sobie życie. Połączenie usługi Alexa i usługi Webhooks na IFTTT to prosty sposób na dodanie sterowania głosowego.
Zobacz nasze przewodnik po użyciu IFTTT aby pomóc Ci zacząć
Inną opcją jest użycie skrótów Siri. Pojedynczy skrót z menu może sprawdzać stan lamp i używać funkcji zastępowania, aby je włączać i wyłączać.
Jeśli podobał Ci się ten projekt, koniecznie sprawdź je dziwne projekty Raspberry Pi 10 najdziwniejszych projektów Raspberry PiW każdym z nas jest szalony naukowiec, a Raspberry Pi pozwala twojemu wewnętrznemu wariatowi wyjść i grać. Czasami rzeczy stają się dziwne. Bardzo dziwne. Czytaj więcej po więcej pomysłów.
Hamish jest niezależnym pisarzem, wieloletnim miłośnikiem technologii i potwierdzonym kujonem. Pracował w działach IT wielu międzynarodowych korporacji, zanim ostatecznie zwolnił szefa i poszedł sam.