Zbuduj wskaźnik LED za pomocą Raspberry Pi (e-mail, pogoda lub cokolwiek)
Raspberry Pi tworzy ładną, kompaktową platformę do dołączania lampki wskaźnikowej do różnego rodzaju projektów - powiadomienia o pogodzie, nowe wiadomości e-mail itp. Przeczytaj, kiedy pokażemy, jak podłączyć moduł LED do pi i skonfigurować podstawowe powiadomienia.
Dlaczego chcę to zrobić?
Bo to zabawne. W przeciwieństwie do wielu naszych tutoriali, w których zamieszczamy małą blurb na górze, dokładnie opisującą korzyści, jakie możesz czerpać z projektu, blurb jest w tym przypadku bardzo krótki, ponieważ korzyścią jest po prostu dobra zabawa.
Raspberry Pi to idealne urządzenie do zabawy, eksperymentowania z elektroniką i nauki programowania. Nikt wymagania na przykład wskaźnik natężenia deszczu w kuchni, ale budowa jest świetnym ćwiczeniem i wspaniałym przypomnieniem o zabraniu ze sobą parasola w dni potencjalnie burzowe.
Czego potrzebuję?
Aby śledzić samouczek, potrzebujesz kilku rzeczy. Po pierwsze, zakładamy, że już wykonałeś nasz poprzedni tutorial: Poradnik HTG do rozpoczęcia pracy z Raspberry Pi (i tym samym masz podstawy do zainstalowania Rasbian na naszym Raspberry Pi).
Jeśli szukasz tego projektu z budżetem, możemy śmiało powiedzieć, że najnowszy model Raspberry Pi to znacząca przesada dla tej pracy, a my zachęcamy cię do wyssania kurzu ze starego Raspberry Pi, którego podsunąłeś w szafie lub podnieść tani używany z eBay lub temu podobne. Mądry budżet od długiego zęba Raspberry Pi 1 Model A lub Model B, który wylądował w serwisie eBay za 10-15 $, idealnie pasuje do tego projektu, kupując nową generację prądu 35 USD Pi.
Oprócz posiadania funkcjonalnej jednostki Pi z zainstalowanym Raspbian będziesz potrzebować następujących rzeczy:
- 1 moduł LedBorg (~ 5,00 $ z dostawą 4 $ z Wielkiej Brytanii do USA, działa ze wszystkimi modelami Raspberry Pi).
- 1 Wyczyść obudowę Raspberry Pi w komplecie z konkretnym modelem Pi, takim jak w przypadku Raspberry Pi 1 Model B.
Uwaga: Czysta / matowa obudowa Pi jest całkowicie opcjonalna, ale jeśli używasz nieprzezroczystej obudowy, wskaźnik LED będzie ukryty w środku. Musisz albo wyciąć dziurę w swojej skrzynce, żeby wypuścić światło, albo użyć kabla przedłużającego GPIO z zestawem do przełamywania - takim jak ten z Adafruit Industries - by związać LedBorg z twoim Raspberry Pi. Podczas korzystania z kabla breakout dodaje około 8 dolarów na koszt projektu, który oferuje więcej możliwości dostosowania produktu końcowego, dzięki czemu można łatwiej umieścić LED wewnątrz rzeczy lub pod czymś, co chcesz oświetlić.
Instalowanie LedBorg
Chociaż z pewnością można zbudować sobie całkowicie od zera wskaźnik LED (a wyszukiwarka wywoła wiele osób, które to zrobiły) organizacja Piborg produkuje tak kompaktowy i niedrogi moduł LED, LedBorg, że nie mogliśmy Przeciwstawiaj się używaniu go jako podstawy dla naszego projektu wskaźnika LED Raspberry Pi.
Instalowanie modułu jest szybkie, ponieważ zostało zaprojektowane tak, aby pasowało bezpośrednio do pinów GPIO na Pi. Najpierw wyłącz swoje Pi i otwórz skrzynkę.
Najważniejszą częścią procesu instalacji jest ustawienie modułu tak, aby ikona LedBorg znajdowała się najbliżej modułu RCA na płycie Raspberry Pi (a tym samym krawędź LedBorg jest na równi z krawędziami płyty Pi z wystającą częścią część LedBorga zawieszona nad płytką Pi, a nie poza krawędzią). Zobacz zdjęcie powyżej.
Gdy masz otwartą tablicę Pi, teraz byłby to doskonały czas na pokrycie wskaźników LED na pokładzie (obok portów USB), szczególnie jeśli używasz przezroczystej obudowy. Nie chcesz, aby odczytanie wskaźnika LedBorg było mylące, ponieważ wskaźniki zasilania i sieci są tak jasne.
Pokryliśmy naszą warstwę białą taśmą elektryczną. To przyciemniło je na tyle, że mogliśmy je nadal odnosić, ale były one o wiele słabsze niż LedBorg, który nie rozpraszał uwagi..
Gdy już zainstalujesz LedBorg i opcjonalnie pokryjesz wskaźniki LED Pi elektryczną taśmą, czas zamknąć obudowę. Przed przejściem do kolejnej fazy samouczka uruchom swoją grę.
Instalowanie oprogramowania LedBorg
PiBorg dostarcza świetny pakiet oprogramowania dla LedBorg, który zawiera zarówno kontroler GUI, jak i sterowniki, aby uzyskać dostęp do LedBorg z wiersza poleceń.
Zanim zaczniemy, musisz się upewnić, że kupujesz odpowiedni pakiet dla swojej wersji Rasbian i numer wersji swojej karty Raspberry Pi.
Jeśli twoja płyta Raspberry Pi nie ma otworów montażowych, jest to wersja 1. Jeśli twój Raspberry Pi ma otwory montażowe (zlokalizowane przez porty USB i między portem zasilania i HDMI), to jest to Wersja 2. Musisz także znać wersję jądra twojej instalacji Rasbian. Otwórz terminal i wprowadź następujące polecenie, aby sprawdzić:
uname -r
Po uzyskaniu numeru wersji i numeru jądra możesz odwiedzić sekcję pakietów, aby pobrać link do paczki. W naszym przypadku używamy płyty Revision 1 z jądrem 3.6.11, więc pobieramy plik raspbian-2013-02-09-rev1.zip.
Aby zainstalować wszystkie gadżety, musimy otworzyć terminal na Pi. a następnie wprowadź następujące polecenia, aby zainstalować pakiet LedBorg.
Uwaga: Musisz zastąpić adres URL w trzecim poleceniu adresem URL pakietu dla kombinacji twoja deska / jądro.
mkdir ~ / ledborg-setup
cd ~ / ledborg-setup
wget -O setup.zip http://www.piborg.org/downloads/ledborg/raspbian-2013-02-09-rev1.zip
rozpakuj setup.zip
chmod + x install.sh
./install.sh
W tym momencie masz już opakowanie GUI dla sterowników LedBorg i samych sterowników. Na pulpicie Raspbian zobaczysz ikonę dla wrappera GUI:
Śmiało i kliknij ikonę LedBorg, aby uruchomić opakowanie GUI. Zostaniesz potraktowany do interfejsu wyboru koloru, jak na przykład:
Teraz jest idealny moment, aby upewnić się, że moduł działa. Wybierz dowolny kolor, z wyjątkiem czarnego, aby go wypróbować. Sprawdzimy to, wybierając kilka kolorów:
Wygląda dobrze! Jest jasna, a matowe tworzywo z pudełka, które zamówiliśmy dla projektu, oferuje umiarkowaną dyfuzję. Jeśli chcesz grać z modułem LED jeszcze przed przejściem, kliknij Tryb demo:
W trybie demonstracyjnym możesz przełączać się pomiędzy wszystkimi kolorami przy różnych prędkościach, sprawdzać wysoką / niską moc wyjściową i w inny sposób wkładać moduł LED przez kolejne kroki.
To tutaj, w sekcji Demo Mode, możesz również zmienić LedBorg w pierwszy z wielu wskaźników. Wybierając CPU w sekcji Kolory, dioda LED zacznie się zmieniać z zielonego na żółty na czerwony, aby wskazać obciążenie procesora ARM Raspberry Pi. Sugerujemy zmianę prędkości na spowolnienie, gdy jesteś na niej - szybka aktualizacja diody LED zbyt szybko i sprawia, że rozprasza się wskaźnik procesora zamiast użytecznego.
Oprócz korzystania z interfejsu GUI do wybierania kolorów można wybierać kolory z terminala za pomocą wartości RGB. Otwórz terminal i wprowadź następujące polecenie, aby wyłączyć diodę LED:
echo "000"> / dev / ledborg
Sposób, w jaki LedBorg obsługuje wartości RGB, oznacza, że 0 oznacza, że kanał jest wyłączony, 1 oznacza, że kanał ma połowę mocy, a 2 oznacza, że kanał ma pełną moc. Tak więc na przykład 001 ustawi czerwony kanał na 0%, zielony kanał na 0% i niebieski na 50% mocy.
Zmień wartość na 002, a wyjście LED pozostanie niebieskie, ale będzie jaśniejsze, ponieważ niebieski kanał ma teraz 100% mocy wyjściowej. Zmień wartość na 202, a czerwony i niebieski na pełnej mocy połącz, aby uzyskać kolor magenta.
Teraz, gdy wiemy, jak ręcznie manipulować diodą LED, spójrzmy na użycie skryptów, aby zmienić naszą diodę LED z prostego światła w rzeczywisty wskaźnik.
Konfigurowanie swojego LedBorg jako wskaźnika deszczu
W tej części samouczka połączymy kilka rzeczy, aby nasz moduł LED LedBorg stał się wskaźnikiem deszczu opartym na prognozie pogody dla naszej lokalizacji. Użyjemy skryptu Python do wywoływania interfejsu API pogody, który z kolei odczyta szansę na deszcz w ciągu dnia, a następnie przełączy diodę LED z off na jasno niebieski, aby wskazać prognozowany deszcz.
Najpierw musimy uzyskać klucz dostępu API do Weather Underground. Do osobistego użytku i małych projektów programistycznych interfejs API jest bezpłatny. Wejdź na stronę rejestracji API Weather API tutaj i zarejestruj się, aby uzyskać klucz API.
Po uzyskaniu klucza API odwiedź Weather Underground i wyszukaj miasto, które chcesz monitorować. W naszym przypadku będziemy monitorować San Fransisco, Kalifornia. Adres URL strony prognozy San Fransisco to:
http://www.wunderground.com/US/CA/San_Francisco.html
Ważną częścią naszych celów jest ostatnia część adresu URL: /CA/San_Francisco.html. Zamierzamy użyć tego do edycji prognozy adresu URL narzędzia API. Podstawowy URL to:
http://api.wunderground.com/api/Klucz interfejsu API YYUR / forecast / q / STATE / CITY.json
Możesz wygenerować prognozę dla dowolnego miasta w USA, wpisując swój klucz API, dwuliterowy kod stanu i nazwę miasta z adresu URL, który wyciągnąłeś z wyników wyszukiwania w metodzie Weather Underground.
Po dodaniu adresu URL interfejsu API z kluczem API i wstawionym stanem / miastem można następnie edytować następujący skrypt Python, tworząc nowy dokument tekstowy na Pi za pomocą Leafpad i wklejając do niego poniższy kod:
od urllib2 importować urlopen
import json
req = urlopen ('http://api.wunderground.com/api/Klucz interfejsu API' YOUR / forecast / q / STATE / CITY.json ')
parsed_json = json.load (req)
pop = int (parsed_json ['forecast'] ['txt_forecast'] ['forecastday'] [0] ['pop'])# Poniżej znajduje się wartość debugowania.
# Edytuj hasz i zmień
# liczba całkowita do 0-100 do przetestowania
# Odpowiedź LED.# pop = 0
print 'Aktualna szansa opadów to .'. format (pop)
# Ustawienie domyślne to włączenie diody LED
# dla jakiejkolwiek szansy na deszcz powyżej 20%. Możesz dostosować
# wartość w "jeśli pop> 20:" jak chcesz.
jeśli pop> 20:
LedBorg = open ('/ dev / ledborg', 'w')
LedBorg.write ('002')
del LedBorg
print ("Deszcz!")
jeszcze:
LedBorg = open ('/ dev / ledborg', 'w')
LedBorg.write ('000')
del LedBorg
print ("Bez deszczu!")
Zapisz plik jako wunderground.py w katalogu / home / pi /. Otwórz terminal i wpisz następujące polecenie:
python wunderground.py
Jeśli klucz API i kody stanu / miasta zostały wpisane poprawnie, powinien on wywołać odpowiedź wyglądającą następująco:
Jeśli przewidywana jest precyzja dla twojego obszaru, twoje wyjście LedBorg powinno wyglądać tak:
Teraz czekanie na deszczowy dzień, aby właściwie przetestować scenariusz, byłoby nużące. Jeśli nie ma obecnie szans na deszcz w Twojej okolicy i chcesz zobaczyć diodę LED, edytuj skrypt wunderground.py i zastąp wartość przejścia "pop = pop" w linii 13 wartością większą niż 20, np. 60 że nasza prognoza wróciła. Pamiętaj, aby po zakończeniu zmienić linię z powrotem na "pop = pop".
Ostatnim krokiem jest skonfigurowanie zadania cron do automatycznego uruchamiania skryptu, który właśnie zapisaliśmy w regularnych odstępach czasu, aby utrzymać aktualny wskaźnik LED. Ponieważ to zadanie jest konieczne zarówno w przypadku tego skryptu, jak i wskaźnika poczty e-mail, który nastąpi, omówimy konfigurowanie zadania cron po tym, jak pokazaliśmy, jak skonfigurować drugi skrypt.
Konfigurowanie swojego LedBorg jako wskaźnika Gmaila
Kto nie lubi naprawy dopaminy, która pojawia się w wiadomościach e-mail w skrzynce odbiorczej? W tej części samouczka pokażemy, jak korzystać z LedBorg jako nowego wskaźnika Gmaila. Tak jak ostatnim razem, połączymy zewnętrzne wejście (w tym przypadku kanał Atom zamiast API) i prosty skrypt do sterowania naszą diodą LED.
Musimy nieco rozszerzyć funkcjonalność naszej instalacji Pythona, instalując FeedParser, narzędzie do czytania kanałów RSS / Atom w Pythonie. Otwórz terminal i wprowadź następujące polecenie:
sudo easy_install Feedparser
Po zakończeniu instalacji możemy przystąpić do pracy nad utworzeniem skryptu sprawdzania Gmaila. Ponownie, używając Leafpad wklej poniższy tekst do edytora. Zmień nazwę użytkownika i hasło, aby pasowały do nazwy użytkownika i hasła konta Gmail, które chcesz sprawdzić.
importuj filtr żywiołów
# Wprowadź swoją nazwę użytkownika Gmaila
# i hasło. Nie dołączaj
# część @ gmail.com
# Twoja nazwa użytkownika.
nazwa użytkownika = "nazwa użytkownika"
hasło = "hasło"
mail = int (feedparser.parse ("https: //" + nazwa użytkownika + ":" + hasło + "@ mail.google.com/gmail/feed/atom")["feed"]["fullcount"])
# Poniżej znajduje się wartość debugowania.
# Edytuj hasz i zmień
# liczba całkowita do 0 lub 1 do testowania
# Odpowiedź LED.# mail = 0
jeśli mail> 0:
LedBorg = open ('/ dev / ledborg', 'w')
LedBorg.write ('020')
del LedBorg
print ('Mail!')
jeszcze:
LedBorg = open ('/ dev / ledborg', 'w')
LedBorg.write ('000')
del LedBorg
print ("Bez poczty!")
Zapisz skrypt jako gmailcheck.py. Otwórz terminal i wpisz następujące polecenie:
python gmailcheck.py
Jeśli e-mail znajduje się w skrzynce odbiorczej Gmaila, dioda zmieni kolor na zielony, a otrzymasz odpowiedź w następujący sposób:
Jeśli masz pocztę w swojej skrzynce odbiorczej Gmaila, Twój LedBorg będzie wyglądać tak:
Podobnie jak skrypt sprawdzający deszcz, uwzględniliśmy wartość debugowania. Jeśli nie masz żadnych nowych wiadomości e-mail, możesz wysłać wiadomość e-mail, aby zwiększyć liczbę odebranych wiadomości do 1 lub edytować skrót komentarza i zmienić wiersz debugowania na "mail = 1", aby przetestować skrypt. Pamiętaj, aby przywrócić linię, gdy skończysz testowanie.
Przejdź do następnej sekcji samouczka, aby ustawić skrypt Gmaila zgodnie z harmonogramem.
Konfigurowanie zadania Cron do uruchamiania skryptu
Skoro mamy dwa skrypty do grania, musimy ustawić zadanie cron, aby uruchomić je przez cały dzień, aby utrzymać aktualny wskaźnik LED.
Pierwszą rzeczą, którą chcemy zrobić, to wyłączyć diodę LED, jeśli jest ona aktualnie włączona z poprzednich eksperymentów. W terminalu:
echo "000"> / dev / ledborg
Gdy wciąż znajdujesz się w wierszu poleceń, możesz otworzyć edytor cron. Jeśli nigdy wcześniej nie skonfigurowałeś zadania cron, zdecydowanie zalecamy zapoznanie się z naszym przewodnikiem korzystania z niego tutaj. To powiedziawszy, przeprowadzimy cię przez ustalenie podstawowego harmonogramu tutaj.
W terminalu:
sudo crontab -e
To otworzy tabelę crona Raspbian w edytorze tekstu Nano. Użyj klawiszy strzałek, aby przewinąć w dół do samego dołu. W tym miejscu przygotujemy powtarzające się zadanie cron dla naszych skryptów Pythona.
Jeśli chcesz ustawić skrypt deszczu, wprowadź następujący wiersz do tabeli crona:
* / 5 * * * * python /home/pi/wunderground.py
Naciśnij CTRL + X, aby wyjść; wybierz opcję tak, aby zapisać i zastąpić istniejącą tabelę cron. Wartość, którą wprowadziliśmy w tabeli cron "* / 5 * * * *", uruchamia skrypt co 5 minut, na zawsze.
Co 5 minut to dobry czas na skrypt sprawdzający prognozowany deszcz - możesz nawet twierdzić, że jest nieco zbyt agresywny - ale jeśli próbujesz utrzymać pocztę e-mail, jest to zbyt długi okres na powiadomienie . Jeśli konfigurujesz harmonogram skryptu powiadomienia Gmaila, wpisz następujący wiersz w tabeli cron:
* / 1 * * * * python /home/pi/wunderground.py
Wpis ten uruchamia skrypt gmailcheck.py co minutę w celu uzyskania znacznie szybszego powiadomienia o aktualizacji.
To wszystko! Możesz eksperymentować z własnymi skryptami w języku Python, usuwając z nich instrukcje if / else i wypróbowując je za pomocą zupełnie nowych zmiennych. Jeśli możesz znaleźć źródło danych, możesz zmienić je w zmienną w swoim skrypcie Pythona - średnie wartości zapasów, liczby pyłków, wspomina Twitter, jeśli istnieje interfejs API, możesz go przekształcić w zewnętrzny wskaźnik LED.
Na koniec chcę podziękować wszystkim wspaniałym zasobom, z których korzystałem przy tym projekcie. Minęło trochę ponad dziesięć lat, odkąd aktywnie pisałem programy i trzeba było kilku uderzeń, aby usunąć kurz i rdzę. Współautorzy w / r / LearnPython pomogli mi pomiatać w wynikach API dla Weather Underground, badając, jak Michael w Mitch Tech zajmował się kanałem Gmail Atom, parsował go dla LedBorg easy, i studiował moduły nauki Pythona w Code Academy świetny sposób na poznanie podstawowej składni i struktury języka, z którego nigdy wcześniej nie korzystałem.