If-Koubou

Zbuduj wskaźnik LED za pomocą Raspberry Pi (e-mail, pogoda lub cokolwiek)

Zbuduj wskaźnik LED za pomocą Raspberry Pi (e-mail, pogoda lub cokolwiek) (Jak)

Raspberry Pi tworzy ładną kompaktową platformę do podłączania światła wskaźnika do różnego rodzaju projektów - powiadomienia o pogodzie, nowe wiadomości e-mail itp. Przeczytaj, jak pokazujemy, 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 czerpiesz 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 budowanie jednego jest zabawnym ćwiczeniem i wspaniałym przypomnieniem, aby zabrać ze sobą parasol w dniach potencjalnie burzowych.

Czego potrzebuję?

Aby śledzić samouczek, potrzebujesz kilku rzeczy. Po pierwsze, zakładamy, że wykonałeś już 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 jest znaczącym przesadą dla tej pracy i chcielibyśmy, abyś otrzepał kurz ze starego Raspberry Pi, którego podsunąłeś w szafie lub podnieść tani używany z eBay lub podobnego. Mądry budżet, długowieczny model Raspberry Pi 1 Model A lub Model B, który wylądował w serwisie eBay za 10-15 USD, idealnie pasuje do tego projektu, kupując nowiuteńką generację 35 zł 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, współpracuje ze wszystkimi modelami Raspberry Pi).
  • 1 Wyczyść obudowę Raspberry Pi, zgodną 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

Podczas gdy z pewnością można zbudować sobie całkowicie od zera wskaźnik LED (a zapytanie wyszukiwarki sprawi, że wielu ludzi to zrobiło) organizacja Piborg produkuje tak kompaktowy i niedrogi moduł LED, LedBorg, że nie mogliśmy przeciwstawić 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 już nie rozpraszał.

Gdy już zainstalujesz LedBorg i opcjonalnie pokryjesz wskaźniki LED Pi elektryczną taśmą, czas zamknąć kopie zapasowe. Przed przejściem do kolejnej fazy samouczka uruchom swoje Pi up.

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 również 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 trzeciej komendzie adresem URL pakietu dla kombinacji board / kernel.

mkdir ~ / ledborg-setup
cd ~ / ledborg-setup
wget -O setup.zip http://www.piborg.org/downloads/ledborg/raspbian-2013-02-09-rev1.zip
rozpakuj plik setup.zip
chmod + x install.sh
./install.sh

W tym momencie masz teraz opakowanie GUI dla sterowników LedBorg i samych sterowników. Na pulpicie Raspbian zobaczysz ikonę dla opakowania 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 jasny, 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ą, a także 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 wolną, gdy jesteś na niej - szybka aktualizacja diody LED zbyt szybko i sprawia, że ​​wskaźnik procesora rozprasza uwagę, a nie jest użyteczny.

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 jest taki, ż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 będziemy przeczesywać kilka rzeczy w celu przekształcenia naszego modułu LedBorg LED w wskaźnik deszczu oparty 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ć przewidywany 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 API YYUR / forecast / q / STATE / CITY.json

Możesz wygenerować prognozę dla dowolnego miasta w USA, wpisując 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ć poniższy skrypt Python, tworząc nowy dokument tekstowy na Pi za pomocą Leafpad i wklejając do niego poniższy kod:

od urllib2 import 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

drukuj "Obecna szansa na opady 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 wpisałeś swój klucz API i kody stanu / miasta poprawnie, powinien on wywołać odpowiedź, która wygląda jak:

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 wierszu 13 wartością większą niż 20, na przykład 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 poprawki dopaminy, która pojawia się w momencie pojawienia się nowego e-maila 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, który napędza 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 naszego skryptu sprawdzania Gmaila. Ponownie, za pomocą Leafpada wklej poniższy tekst do edytora. Zmień nazwę użytkownika i hasło, aby pasowało 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 przetestowania
# 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 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 żadnej nowej 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 naszych poprzednich eksperymentów. W terminalu:

echo "000"> / dev / ledborg

Podczas gdy wciąż jesteś w linii 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 deszczowy, wprowadź następujący wiersz do tabeli cron:

* / 5 * * * * python /home/pi/wunderground.py

Naciśnij CTRL + X, aby wyjść; wybierz 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 łata dla skryptu sprawdzającego 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 powiadomienia . Jeśli konfigurujesz harmonogram skryptu powiadomienia Gmaila, wpisz następujący wiersz w tabeli cron:

* / 1 * * * * python /home/pi/wunderground.py

Ten wpis 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 instrukcji wyrażenia if / else i wypróbowując je za pomocą zupełnie nowych zmiennych. Jeśli uda Ci się znaleźć źródło danych, które możesz zmienić w średnią w swoim teście Pythona - średnie ceny, liczby pyłków, wspomina Twitter, jeśli istnieje interfejs API, możesz go przekształcić w wskaźnik LED.

Na koniec chcę podziękować wszystkim wspaniałym zasobom, z których korzystałem przy tym projekcie. Minęło trochę ponad dekadę, 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, studiują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.