Lampa sterowana WiFi

Lampa sterowana WiFi

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

Program

Wybieramy nasz obraz systemu:

editIMGChec

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.

bitvise

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

console

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:

Po zainstalowaniu możemy ustawić sobie opcję (Zalecam jeżeli używacie w takim celu jak ja) uruchamiania przy starcie systemu.

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:

wp_ss_20131216_0001

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)) .

Oto link do pobrania

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

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

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:

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

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

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:

powinno otworzyć nam się coś w rodzaju notatnika o takiej zawartości:

edytujemy to tak aby wyglądało następująco:

 

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:

tratatatatagpio

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 )

IMAG0174

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

 

 

Ocena: 4.13/5 (głosów: 71)

Podobne posty

44 komentarzy do “Lampa sterowana WiFi

  • 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 :)

    Odpowiedz
    • 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.

      Odpowiedz
      • 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 :)

        Odpowiedz
  • A jak rozwiazales zasilanie ? Rozumiem ze jak wylaczysz lampe zwyklym przyciskiem na scianie to juz nic wiecej nie zrobisz bo bedzie odciete zasilanie ?

    Odpowiedz
    • 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ć.

      Odpowiedz
            • 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. :)

              Odpowiedz
              • 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

                Odpowiedz
                • 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.

                  Odpowiedz
    • 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.

      Odpowiedz
      • 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 :)

        Odpowiedz
        • 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.

          Odpowiedz
        • 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ń :)

          Odpowiedz
  • Sugestie dotyczące opisu:

    1. Wklejanie w liście potrzebnego sprzętu linku do Allegro jest bez sensu, za 2 miesiące czytelnicy będą mogli tylko po adresie się domyśleć jaki to jest przekaźnik. Wstaw lepiej jego opis, może zdjęcie lub link do jakiegoś sklepu.
    2. Używaj akapitów lub oddzielaj poszczególne części od siebie jakimiś małymi, pogrubionymi nagłówkami. Wpis jest długi, łatwiej będzie się go czytało.
    Odpowiedz
    • Dzięki bardzo zmienię link ale to za niedługo bo musze zdjęcia dobre porobić :)
      A akapity poprawię – Dzięki ;)

      Odpowiedz
  • 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 :-)

    Odpowiedz
  • 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)

    Odpowiedz
  • 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?

    Odpowiedz
  • Ś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

    Odpowiedz
  • 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 ????

    Odpowiedz
  • 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 :)

    Odpowiedz
  • 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? :)

    Odpowiedz
  • 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.

    Odpowiedz
  • 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.

    Odpowiedz
    • 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

      Odpowiedz
      • Wejdź w folder gdzie jest instalka Webiopi i zmień wpisy jak niżej i zainstaluj od nowa

        1. python/native/cpuinfo.c,change “BCM2708” to “BCM2709”;
        2. python/native/gpio.c, change “#define BCM2708_PERI_BASE 0x20000000″ to “#define BCM2708_PERI_BASE 0x3f000000″;
        3. run setup.sh again.
        Odpowiedz
  • 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?

    Odpowiedz
    • 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 ;)

      Odpowiedz

Odpowiedz

anuluj

Masz uwagi?