Witam wszystkich majsterkowiczów, jako, iż jest to mój pierwszy poradnik chciałbym się przedstawić, nazywam się Daniel. W tym poradniku zaprezentuje wam jak wprowadzić modyfikację do lampy sufitowej, używając przy tym Raspberry PI – tak aby można było sterować nią poprzez WiFi, czyli do jej sterowania będziemy mogli używać Komputera, Tabletu, Telefonu. Zacznijmy od listy potrzebnych nam rzeczy:
- Lampa
- Raspberry Pi
- Moduł przekaźnikowy (w moim przypadku:Ten)
- WiFi Dongle dla naszego raspberry PI
- Troszkę czasu i chęci
Zacznijmy od zgrania na nasz Raspberry PI podstawowego systemu (Raspbian)
Aby to zrobić pobieramy obraz systemu. Po jego pobraniu przy użyciu Win32DiskImager zgrywamy obraz systemu na kartę pamięci której będziemy używać do naszego Raspsberry.
Uruchamiamy Win32DiskImager
Wybieramy nasz obraz systemu:
Po czym klikamy WRITE, po skopiowaniu obrazu na kartę wsadzamy kartę do naszego RaspberryPi i uruchamiamy je.
Teraz trochę o obsłudze raspberry przez nas. Do raspberry możemy podłączyć kable Video i klawiaturę, lub kabel LAN do naszego routera. Już tłumaczę dlaczego. Możemy sterować naszym Raspberry PI za pomocą klienta SSH (Ja tak będę robił, ze względu na wygodę pracy w takim systemie), ewentualnie możemy się zdecydować na pracę tradycyjną przy pomocy po prostu klawiatury podłączonej do naszego raspberry PI, ci który będą korzystali z tej metody mogą pominąć ten kawałek poradnika, aż do części w której przed sobą będę miał już konsolę z Raspberry.
Pobieramy i instalujemy klienta SSH – W moim przypadku bitvise ssh client. W oknie programu najpierw zmieniamy Initial method na “Password”, w polu host wpisujemy IP naszego raspberry, które przydzielił mu router – możemy to sprawdzić w panelu routera. Jeżeli nie zmienialiśmy danych logowania to w polu “Username” wpisujemy “pi” a w “Password” wpisujemy “raspberry” po czym klikamy login.
Jeżeli wszystko poprawnie uzupełniliście powinna odtworzyć nam się konsolka (jeżeli coś poszło nie tak napisz w komentarzu postaram się pomóc):
W tej konsoli już możemy spokojnie pracować tak jak gdybyśmy mieli podłączony normalny kabel VIDEO
Do sterowania lampą za pomocą sieci użyjemy interfejsu WebIOPi, ponieważ jest bardzo prosty w obsłudze.
Zacznijmy od jego instalacji w ten oto sposób:
1 2 3 4 |
$ wget http://webiopi.googlecode.com/files/WebIOPi-0.6.0.tar.gz $ tar xvzf WebIOPi-0.6.0.tar.gz $ cd WebIOPi-0.6.0 $ sudo ./setup.sh |
Po zainstalowaniu możemy ustawić sobie opcję (Zalecam jeżeli używacie w takim celu jak ja) uruchamiania przy starcie systemu.
1 |
$ sudo update-rc.d webiopi defaults |
Później musimy się zdecydować co i jak chcemy zrobić – właściwie po co i do czego, sytuacja jest indywidualna moja lampa posiada normalne Żarówki oraz 62 diody LED. Z tego względu mój panel przygotowałem specjalnie dla niej oraz aby dobrze współpracował z moim telefonem. Wygląda on następująco:
Filmik z prezentacją znajdziecie na końcu poradnika.
Każdy chce tego używać pewnie w innym celu w innych okolicznościach i w ogóle do innego zastosowania, więc pewnie może uznać mój skrypt za bezużyteczny, jednak dodam go ze względu na to, że wiele osób rozumie język (Prosty HTML i podstawy JS(Wystarczy znać angielski aby skumać to JS)) .
Można go dowolnie edytować, a jeśli ktoś się na tym nie zna proszę pisać w komentarzach, chętnie się skontaktuje i pomogę w programowaniu jak i wykonywaniu całości. Tworząc ten skrypt bazowałem na tym co udostępnił autor WebIOPi – Nie jest on w pełni mojego autorstwa.
Aby go wgrać umieszczamy go na naszym serwerze w ścieżce
1 |
/usr/share/webiopi/htdocs |
UWAGA – Znajduje się już tam plik “index.html” – ja zmieniłem jego nazwę na “webiopimenu.html” ze względu na kolidowanie z moim plikiem jest to podstawowy interfejs WebIOPi – jeśli ktoś go uzna za niepotrzebny można go usunąć, ale nie polecam zawsze może przydać się na przyszłość.
Mała uwaga – Mogą występować problemy z dodaniem z konta “PI” wtedy przy pomocy konsolki używamy polecania
1 |
$ sudo passwd |
system poprosi nas o “New UNIX password” ustawiamy tym sposobem hasło do konta administratora – raczej nie będziemy go potem używać ale warto zapamiętać. Po ustawieniu hasła logujemy się na użytkownika “root” i hasło które ustawiliśmy – tym sposobem mamy już pełne prawa do edycji plików w naszej Malinie.
Jak już udało nam się wgrać nasz plik na serwer przystąpimy do konfiguracji WebIOPi – zacznijmy w sumie od tego, że nie będziemy tam zbyt wiele grzebać, kto nie chce nie musi – ja zmienię tam tylko port HTTP mojego WebIOPi – co ułatwi dostęp do strony (Na końcu adresu nie będzie trzeba wpisywać :8000(O ile nie używamy apache na raspberry możemy taką operacje spokojnie wykonać)
Okej zaczynajmy – Polecam edycję konsolkową ponieważ nie edytujemy dużo i będzie nam prościej. Wpisujemy w naszej konsolce polecenie:
1 |
$ sudo nano /etc/webiopi/config |
powinien otworzyć nam się edytor tekstu – Klikamy CTRL+W
Pokaże nam się pasek wyszukiwania w którym wpiszemy słowo ‘port’ – powinno nam się ukazać kilka linijek w których będzie
1 2 3 4 |
[HTTP] # HTTP Server configuration enabled = true port = 8000 |
Linijkę port = 8000 zmieniamy na port = 80
W konfiguracji na teraz to byłoby na tyle klikamy teraz CTRL+X po czym klikamy Y i enter. Możemy przejść do uruchomienia naszego WebIOPi – chyba najłatwiej będzie nam po prostu wpisać polecenie
1 |
$ reboot |
ponieważ system postawi się od nowa a autostart uruchomi nasz WebIOPi. Możemy teraz wejść na adres IP naszego Raspberry pi i ujrzymy wszystko co do tej pory zrobiliśmy. Strona przy uruchamianiu rasbpi może prosić nas o hasło:
Login to: webiopi
a hasło: raspberry
Jeszcze informacja jak podłączyć nasze Raspberry do sieci WiFi:
Wpisujemy polecenie:
1 |
sudo nano /etc/network/interfaces |
powinno otworzyć nam się coś w rodzaju notatnika o takiej zawartości:
1 2 3 4 |
auto lo iface lo inet loopback iface eth0 inet dhcp |
edytujemy to tak aby wyglądało następująco:
1 2 3 4 5 6 7 8 9 10 11 |
auto lo iface lo inet loopback iface eth0 inet dhcp allow-hotplug wlan0 auto wlan0 iface wlan0 inet dhcp wpa-ssid "<strong>ssid</strong>" wpa-psk "<em><strong>password</strong></em>" |
Proszę zrwócić uwagę na konieczność edycji pola wpa-ssid uzupełniając je SSID swojej sieci oraz pola wpa-psk hasłem swojej sieci
Gdy już wszystko uzupełniliśmy klikamy CTRL+X potem Y oraz ENTERTeraz wykonajmy reboot (wpisujemy polecenie sudo reboot)naszego raspberry – Należy również odłączyć kabel internetowy od raspberry w przeciwnym razie raspberry nie połączy się z siecią WiFi.
Nadeszła pora na zrobienie już pracy hardware’owej – oto jak podłączyć moduł przekaźnikowy
Użyjemy w nim 4 wejść – GND, IN1, IN2 i VCC – Czyli właściwie wszystkich. Niżej dodam zdjecie z numerami pinów GPIO dla prostoty:
Do pinu GND podłączamy pin z – do IN1 podłączamy 25 i IN2 podłączamy 7 (oczywiście jeżeli korzystacie z mojego skryptu – ponieważ każdy dowolnie mógł sobie to zmodyfikować. Radzę również zaizolować spód raspberry (Chyba, że macie obudowę) oraz modułu przekaźnikowego, ze względu na występowanie zwarć. No i na sam koniec podłączamy odpowiednie okablowanie do naszych przekaźników – u mnie w lampie wygląda to nieco skomplikowanie ponieważ muszę wylutować moduł który sterował lampą dotychczas(sterowanie radiowe) całą pracę ukażą poniższe zdjęcia: ( Tak wiem zasilacz podłączony idiotycznie, ale nie miałem niczego innego na 5V a miałem obawy, że podczas rozbierania tego zniszczę jego obudowę więc zdecydowałem się zrobić to tak )
Film z działania dodam w najbliższym czasie, ze względu na to, że teraz nie mam możliwości go nagrać. Mogę na razie powiedzieć że system działa bez jakiegokolwiek opóźnienia oraz stabilnie (Po całej nocy, rano wstałem i od razu mogłem załączyć lampę.)
Taka informacja dla tych którzy się za to biorą radzę zakleić czymś diody na raspberry o jeśli takie są to również na przekaźnikach – u mnie cała lampa w nocy była czerwona, a nie chce mi się już jej ściągać ze względu na trudność montażu
Można to taniej zrobić przez Arduino/Atmega i moduł ethernet ale na pewno artykuł przyda się dla początkujących “malinowców” :D Sam się zastanawiam nad zakupem w niedługim czasie :)
Racja – koszt dobiegł połowy ceny mojej lampy :D Ale za to jaka
frajda ;D Arduino ani programatora Atmegi nie miałem więc nie zrobiłem
tego w ten sposób – Choć plan taki jest bo szkoda mi malinę na lampę
tracić. Ale plan taki jest, że raspberry będzie routerem i jednostką
centralną która będzie sterowała także pozostałymi elementami które mam w
planie.
No niestety ale jeśli chcemy zrobić coś w stylu “inteligentnego domu” to myślę że bez mikrokontrolerów np. Atmega8 + modułów RF się nie obędzie :) Ale raspberry jako jednostka centralna myślę jak najbardziej jest idealny do tego celu :) No chyba że chcemy ciągnąć kilometry kabli to chyba starczy samo raspberry :)
Właśnie tego chciałem uniknąć ;)
A jak rozwiazales zasilanie ? Rozumiem ze jak wylaczysz lampe zwyklym przyciskiem na scianie to juz nic wiecej nie zrobisz bo bedzie odciete zasilanie ?
Tak, ale nie wyłączam jej wcale nie ma po co telefon zawsze mam pod reka wiec mogę ja zgasić. Choć na upartego moznaby cos wymyślić.
Masz podwójny włącznik? Czy pojedynczy na ścianie?
Pojedynczy – już myślałem, żeby jeden dawał do raspberry jako “Przełącznik lampy” a drugi zasilanie.
To zawsze możesz po kablu przesyłać dane do PI :] albo wyprostować (w gniazdku) i użyć jako wielkie 1 wire;) rozkręć może idą 3 a nie 2 przewody ;P
Właśnie 2 :/ Wielka szkoda bo byłoby super – jakby szły 3 to w ogóle zrobił bym stałe zasilanie do raspberry i tylko 3 to sygnał że trzeba zaświecić/zgasić. No ale cóż jak już przejdę na “Nadajnik – odbionik” to może tak zrobie i dam nadajnik w puszcze. :)
chyba odbiornik w puszcze a nie nadajnik ?
podchodzilem do czegos takiego i najlepiej dac odbiornikonadajnik w “przelaczniku od lampy” zeby mozna tez poznac w centralnym miejscu stan lampy (np gdy jest zgaszona przelacznikiem).
ale nie rozwiazalem zasilania ukladu tak zeby zgaszenie swiatla nie odcinalo zasilania do ukladu takze
W przełączniku nadajnik – żeby zmieniał stan lampy, po co mi tam odbiornik. Odbiornik w lampie musi być. Nad tym myślę ale to potem.
Mało praktyczne i zbyt kosztowne aby wsadzić samą maline do środka gdy można by nią cały dom wysterować
To racja – ale nie miałem żadnego innego rozwiązania ponieważ nie miałem żadnego nadajnika ani odbiornika – plan jest aby tam dać po prostu atmege ale musze kupić jeszcze arduino żeby mieć czym zaprogramować a arduino zostanie na potem – To robiłem na szybko ale jestem z tego bardzo zadowolony.
Kup lepiej USBasp a taniej Cie wyjdzie (i łatwiej zaprogramować atmege niż przy użyciu Arduino) no chyba że chcesz się uczyć na tym Arduino to kup Arduino :)
Może i racja – myślałem o Arduino tak na potem ale w sumie to mam maline i nie potrzeba mi Arduino. W każdym razie chciałbym malinę mieć na biurku – ale póki służy tylko do lampy to mi to nie przeszkadza, choć w najbliższym czasie na pewno wezmę się za budowe nadajnika i odbiornika.
A może SMTDiscovery? Będzie bardziej rozwojowo? Jednak chyba ARM to przyszłość?:)
Może racja – Nad tym trzeba by się zastanowić – ale to potem.
Dokładnie tak – USBAsp i ATmega i do tego para transceiverów od naszych skośnookich braci :D Wrzucamy atmelka z transceiverkiem pod lampę, a drugi podpinamy pod malinkę, która może, jak już wspomniał Init0:disqus, sterować większą ilością urządzeń :)
transciverów?!
Sugestie dotyczące opisu:
Dzięki bardzo zmienię link ale to za niedługo bo musze zdjęcia dobre porobić :)
A akapity poprawię – Dzięki ;)
Dlaczego nie PuTTY?
Według uznania ;) Ja wolę Bitvise – Jakoś lepiej mi się na nim pracuje.
PuTTy od lat nie rozwijane, polecam fork KiTTy
http://www.chiark.greenend.org.uk/~sgtatham/putty/changes.html – PuTTY nadal jest rozwijane, ale imo lepsze jest PuTTY Tray http://haanstra.eu/putty/, jeżeli już musisz ssh-ować z Windowsa :P
Bardzo fajne. A ja właśnie działam nad projektem opartym na Node.js. , praktycznie zostało mi jeszcze tylko zaprogramowanie szablonu w Jade do wizualizacji, mam już część serwerową opartą na frameworku Express (javascript), napisanego klienta z użyciem modułów HTTP i SerialPort (Node), do Arduino dołączony jest termometr, odczyt następuje co 30 sekund, wysyłka danych na serialport, w tym momencie skrypt w node parsuje dane i tworzy zapytanie GET w którym przekazuje temperaturę a odpowiednia trasa obsługuje dane wizualizując je we wspomnianym Jade , Node jest naprawdę niesamowite :-)
Chętnie zlecę stworzenie listy przepięciowej (4, 5 portów + bolec) sterowanej Wifi (z aplikacja na androida), najlepiej do jakiś 3kW (grzejnik w firmie)
a jeśli nie mam chasła na Wi-Fi to jak to wpisać do raspberry?
Witam.
Mam mały problem, jeśli zrestartuję malinkę wszystkie porty ustawią się jako wejścia przez co nie mogę sterować portami. Czy da się zrobić aby porty ustawiały się jako wyjścia przy starcie?
Świetny pomysł. Dokładny opis pozwolił mi postawić pierwsze kroki na “malinowym księżycu”. Najtrudniejsze zawsze na początku sprawić by “dioda zamrugała” Oby więcej takich pomocy dla początkujących. Pozdrawiam
witam map pytanie czemu plik index.html po uruchomieniu w przeglądarce tak na próbę nie działa pokazują się tylko pasy szare ???? jak to uruchomić by podejrzeć jak wygląda ta strona ????
Witam, mam małe pytanko co do Webiopi, bo nie chce zaczac czegoś co potem Mi się nie przyda :)!
Chcę zbudować inteligentny dom, lecz część ma działać w automacie (w programie python z IDLE, ale także z panelu dotykowego 7 calowego, czy jest możliwość wykorzystania tego jako wizualizacja do panelu gdzie będę miał przyciski np. załącz wyłącz, ale również, aby w tle działał mój program i robił to automatycznie.
Pozdrawiam :)
Witam :)
uprzedzam że dopiero zaczynam zabawę z raspberry.
robię wszytko tak jak jest napisane ale kiedy chcę wrzucić index.html do /usr/share/webiopi/htdocs nic się nie dzieje. Dodam że nazwy istniejącego już tam pliku index.html nie mogę zmienić bo wyskakuje błąd ;/
Macie jakieś rady? :)
zaloguj się na konto root, a nie pi. napisane jest w poradniku :)
Witam,
Edytuje plik index.html jednak na stronie nie widać zmian. Wklejam całkiem inny plik index.html i sytuacja wygląda podobnie, wyświetlana jest stara strona zamiast nowej. Czy ktoś spotkał się z podobnym problemem?
Pozdrawiam,
Dawid.
ja nie mogę otworzyć tego okna w internecie.Wyskakuje mi błąd.
A czy można coś takiego zrobić dla 10 lamp nie bedzie zakłóceń w eterze?
Witam!
Robię wszystko wedle instrukcji, gdy go uruchamiam ponownie i chcę wejść na stronę to jej nie znajduje. Urządzenie to Raspberry Pi 2 b , podłączony kablem z routerem.
u mnie to samo, potrafi ktos wytlumaczyc dlaczego ?
Doszedlem do wniosku ze to przez to ze mamy najnowsza wersje RPI prawdopodobnie webiopi nie obsluguje portow gpio pod tą wersję rasberry pi (zainstalowałem najnowsza wersje webiopi 0.7.1) strona sie uruchomila ale nie ma prawidlowych pinow gpio i nie da sie wprzypisac sygnalu in i out
Wejdź w folder gdzie jest instalka Webiopi i zmień wpisy jak niżej i zainstaluj od nowa
jak to wygląda bezprzewodowo z modułem, modułami wifi? czy można na jednym raspberry, arduino podłączyć kilka włączników bezprzewodowo?
patryk: Teraz coś takiego zrobiłem, że właśnie w mojej lampie po uporzćdkowaniu paru rzeczy mam Arduino, z tym, że na próbę korzystam z NRf i póki co nie narzekam, A raspberry (Już Pi3) stoi w pokoju i służy jako serwer do aplikacji mobilnej która tym wszystkim steruje, całość jest stosunkowo prosta i nie masz ograniczeń co do ilości modułów, dla oszczędności można zrobić jeszcze tak, że wstawisz tam ATMegę albo jakeigoś ARM’a i sprawa załatwiona ;)