Arduino YUN to płytka oparta na standardzie Arduino UNO. Zatem cały schemat połączeń przekaźnika jest identyczny z tym zaprezentowanym w dniu 2.
Arduino YUN to więcej niż zwykłe Arduino, dlatego postanowiłem poświecić mu jeden z dni z przekaźnikiem.
YUN, oprócz standardowego kontrolera AVR, ma w sobie dodatkowy komputer z Linuksem na bazie procesora MIPS. Komputer ten może łączyć się z internetem poprzez port Wi-Fi lub złącze Ethernet. Za pośrednictwem specjalnych bibliotek, mały kontroler Arduino łączy się z Linuksem i odbiera różne dane.
Najpopularniejszym sposobem odbierania danych jest protokół REST. Chodzi w nim o to, że komunikujesz się z Arduino za pomocą adresów WWW, a on odsyła informacje do przeglądarki.
Służy do tego biblioteka YunServer i YunClient. Elementy tej biblioteki czytają fragment linku wysłanego do Arduino i wysyłają to co ma się pojawić w przeglądarce.
Wykorzystując te biblioteki napisałem program, który steruje przekaźnikami podłączonymi do YUN do pinów cyfrowych 2, 3, za pośrednictwem linków.
#include <YunServer.h> #include <YunClient.h> YunServer server; // Piny do których podłaczone są przekaźniki 2 i 3 byte relayPins[] = {2, 3}; void setup() { server.listenOnLocalhost(); server.begin(); // Ustawianie pinów przekaźników jako wyjście for (byte i=0; i<sizeof(relayPins); i++) { pinMode(relayPins[i], OUTPUT); } } void loop() { YunClient client = server.accept(); if (client) { // Jeśli ktoś wywołał adres to włącza funkcje obsługi przekażnika relayHandle(client); client.stop(); } delay(50); } void relayHandle(YunClient client) { // Odczytywaie numeru przekanika byte index = client.parseInt(); byte mode; // Reakcja na błędny numer przekaźnika if (index == 0 || index >= (sizeof(relayPins))) { client.println(F("Error!")); } // Sprawdzanie czy chcesz odczytać stan czy zapisać if (client.read() == '/') { // Zapis stanu byte mode = client.parseInt(); digitalWrite(relayPins[index-1], mode); } else { // Odczyt stanu mode = digitalRead(relayPins[index-1]); } // Wyłanie wyników pracy przekaźników client.print(F("Relay: ")); client.print(index); if (mode == 0) { client.println(F(" Off")); } else { client.println(F(" On")); } }
Program działa tak, że wpisując do przeglądarki:
Zostanie włączony pierwszy przekaźnik podłączony do pinu 2. W przeglądarce pojawi się napis:
Relay: 1 On
Wpisując:
Ten przekaźnik zostanie wyłączony, a w przeglądarce pojawi się napis:
Relay: 1 Off
Zapewne już zauważyłeś, że pierwsza cyfra adresu odpowiada za numer przekaźnika, a druga za jego stan – 0 wyłączony, 1 włączony.
Idąc za ciosem, gdy wpiszesz:
włączysz drugi przekanik, podłączony do pinu 3.
W programie jest zmienna globalna
// Piny do których podłaczone są przekaźniki 2 i 3
byte relayPins[] = {2, 3};
do której nawiasów klamrowych {} możesz dopisać numery kolejnych pinów do których są podłączone przekaźniki, rozdzielając je przecinkiem.
Program działa dość prosto. W funkcji loop, sprawdzane jest czy program odebrał link. Jeśli tak to obiekt client jest czymś podobnym do obiektu Serial. To co się z niego odbiera to tekst adresu, który odebrało Arduino (cały napis znajdujący się za “http://myArduinoYun.local/arduino/”). U nas odbieramy “{numer}/{numer}”.
To co się wysyła do obiektu client, zostanie odebrane przez przeglądarkę i wyświetlone przez nią. Wysyłać można standardowo np. poprzez client.println(“Napis”);.
Metoda client.stop(); kończy połączenie z przeglądarką.
W programie jest jeszcze jedna opcja. Wpisując adres:
Otrzymasz tylko informację czy przekaźnik nr 1 jest włączony czy nie.
Dzięki Arduino Yun i modułowi przekaźnika Nettigo możesz sterować urządzeniami za pomocą przeglądarki WWW. Tradycyjnie używając linków na stronie, albo wykorzystując Ajax w JavaScript.
- Moduł przekaźnika Nettigo za 12zł w sklepie Nettigo
- Arduino YUN w sklepie Nettigo
- Opis specjalnych bibliotek Arduino YUN
sprae