Arduino – zdalne sterowanie oświetleniem

W tym artykule opiszę sposób wykonania zdalnego sterowania jednym urządzeniem wpinanym do gniazdka 230V z wykorzystaniem Arduino. Wykorzystane będzie połączenie przez USB z komputerem, który jednocześnie będzie pełnił rolę serwera WWW. Dzięki temu rozwiązaniu możliwe będzie sterowanie zarówno z tej stacji jak i dzięki WiFi przez laptop, tablet, czy telefon komórkowy.

Efekt końcowy będzie wyglądał tak:

W takim razie zabieramy się do pracy 🙂

Założenia

Przyznam, że zastanawiałem się trochę nad wybraniem technologii: java, czy node.js, ajax czy sockiet.io, itp. Zdecydowałem jednak że wykorzystam swoje materiały które opisywałem już wcześniej na blogu, a mianowicie: Czat z socket.io i Java. Dzięki socket.io komunikacja będzie szybsza i dodatkowo można będzie zaktualizować status oświetlenia na wszystkich urządzeniach podłączonych do panelu.

Elementy systemu:

  1. Sprzęt
    1. Arduino
    2. Przekaźnik do sterowania napięciem 230v, (kupiłem taki)
    3. Przewód 2 x 0,75mm²
    4. Gniazdo 230V
    5. Wtyczka 230V
    6. Przewody połączeniowe żeńsko-męskie do płytek stykowych
  2. Serwer WWW:
    1. java: apache tomcat (może też być jetty)
    2. java: netty-socketio
    3. java: rxtx
    4. html/js: bootstrap
    5. js: socket.io

 

No to zaczynamy!

Przewód zasilający i przekaźnik

Przeciągamy przewód 2 x 0,75mm² do zabezpieczającej puszki nadtynkowej, rozcinami osłonę i jeden z dwóch przewodów (ja akurat łączyłem dwa kable, stąd ta kostka w środku) i łączymy je pomiędzy wyjście COM i jedno z wyjść sterowanych przekaźnikiem. Z drugiej strony przekaźnika podłączamy przewody połączeniowe żeńsko-męskie (IN – wyjście sterujące, GND – masa, VCC – 5V).

1429445002560

Następnie do jednego z końców przewodu montujemy wtyczkę, a do drugiego gniazdo na 230V:

gniazdo_wtyczka

Zrobiliśmy w tym momencie przedłużacz, do którego w łatwy sposób wepniemy naszą lampkę biurkową.

Wychodzące trzy przewody połączeniowe z puszki wpinamy w Arduino: (IN – wyjście sterujące, GND – masa, VCC – 5V). Ja wykorzystałem pin 13 do sterowania przekaźnikiem.

Program Arduino

Nasz program będzie włączał przekaźnik, na podstawie otrzymanej liczby z portu szeregowego. Wartość 1 będzie załączała wyjście, a każda inna wartość będzie wyłączała. Aby można było zrealizować połączenie przez np. putty czy szeregowy monitor, w linii 22 pobierany jest kolejny znak komendy. Jeśli będzie to znak zakończenia linii, dopiero wtedy stan wyjścia zostanie zaktualizowany.

Panel użytkownika serwera WWW

Ściągamy aktualną wersję bootstrapa i socket.io, i tworzymy stronę do sterowania żarówką (uwaga, poniżej przedstawiam tylko najważniejsze fragmenty, nie całość):

Tworzymy plik w katalogu js/arduino.js do obsługi interfejsu i wysyłaniu komend do serwera WWW.
Uwaga! Adres 192.168.1.12 należy zamienić na adres ip komputera na którym będzie uruchomiony serwer WWW, a docelowo go sparametryzować

Panel wyglada następująco:

Java – serwer WWW

Tworzymy nowy projekt Mavenowy (w Netbeans: File->New project->Maven->Web Application.

W dependencies dodajemy dwie zależności: netty-socketio 1.7.7 i org.rxtx

Ściągamy bibliotekę rxtx (w moim przypadku windows 65 bit) rozpakowujemy i plik rxtxSerial.dll kopiujemy do głównego katalogu Windowsa.

Klasa do przechowywania komend:

Klasa do odbioru i wysyłki danych z portu szeregowego. Uwaga! Numer portu „COM5” należy zamienić na numer portu pod którym wpięty jest Arduino, a docelowo go sparametryzować

 

Klasa do obsługi socket.io w celu komunikacji z javascript przeglądarek klientów. Uwaga! Adres 192.168.1.12 należy zamienić na adres ip serwera na którym będzie uruchomiony program, a docelowo go sparametryzować:

Klasa inicjująca połączenie szeregowe w momencie startu serwera:

Na sam koniec tworzymy plik web.xml w katalogu WEB-INF:

To tyle. Wystarczy podłączyć nasz przygotowany przewód do zasilania i do niego lampkę.
Aplikacja jest gotowa do builda i uruchomienia np. przez Apache Tomcat czy np. Jetty.

Uwaga! Zarówno po stronie javascript i serwera java jest sporo parametrów do sparametryzowania której obsługi powyżej nie ma:

  • adres ip serwera www
  • numer portu serwera sockiet.io
  • konfiguracja połączenia szeregowego
  • itd.

Artykuł na majsterkowo.pl

Ponieważ dodałem ten artykuł na majsterkowo.pl będzie mi niezmiernie miło jeśli zagłosujecie na niego 🙂

To również może Cię zainteresować:

One thought on “Arduino – zdalne sterowanie oświetleniem

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *