Spisu treści:

Zdalne sterowanie oparte na przeglądarce Arduino (linux): 9 kroków (ze zdjęciami)
Zdalne sterowanie oparte na przeglądarce Arduino (linux): 9 kroków (ze zdjęciami)

Wideo: Zdalne sterowanie oparte na przeglądarce Arduino (linux): 9 kroków (ze zdjęciami)

Wideo: Zdalne sterowanie oparte na przeglądarce Arduino (linux): 9 kroków (ze zdjęciami)
Wideo: Instalacja i konfiguracja UniFi Controller na Raspberry Pi na potrzeby lokalnej sieci bezprzewodowej 2024, Listopad
Anonim
Zdalne sterowanie oparte na przeglądarce Arduino (linux)
Zdalne sterowanie oparte na przeglądarce Arduino (linux)
Zdalne sterowanie oparte na przeglądarce Arduino (linux)
Zdalne sterowanie oparte na przeglądarce Arduino (linux)

Mamy dzieci. Uwielbiam je do kawałków, ale kiedy włączają kanały dla dzieci, ukrywają pilota do satelity i telewizora. Po tym, jak to się działo na co dzień przez kilka lat i po tym, jak moja kochana żona pozwoliła mi mieć Arduino na święta, zdecydowałem, że nadszedł czas, aby zrobić coś użytecznego (w jej oczach!) z Arduino. Oto kulminacja tego: interfejs sieciowy do Arduino, który zastępuje moje piloty i jest dostępny z mojej sieci wewnętrznej. Kiedy dowiem się, dlaczego moja tarcza Ethernet nie pozwala mojemu arduino zachować szkicu, napiszę nowy szkic, który używa tarczy Ethernet jako serwera WWW, co oznacza, że nie potrzebuję zainstalowanego Apache na moim komputerze. Bądź na bieżąco, dotrę tam!

Krok 1: Warunki wstępne

Wymagania wstępne
Wymagania wstępne

Sprzęt: Strona Arduino: Arduino - używam płytki prototypowej Arduino Uno R2 - Twój lokalny sklep z elektroniką lub kuchnia, jeśli chcesz autentyczną płytkę stykową Obudowa montażowa - Użyłem starej plastikowej obudowy z przezroczystą pokrywką Komponenty: Podczerwień LED - wylutowałem jeden ze zepsutego pilota (dzięki dzieciom!) Odbiornik podczerwieni - Dostałem swój z przedłużacza magicznego oka Tranzystor - Użyłem rezystora BC547 - Użyłem rezystora zmiennego 1,5 kΩ ustawionego na przewody połączeniowe 1 kΩ Breadboard - mam swój ze szpuli z kablem solid core RJ45 Strona komputera: Komputer jako serwer Przewód USB do Arduino Oprogramowanie: Oprogramowanie Arduino - z biblioteki arduino.cc - z https://www.arcfn.com/2009/08/multi-protocol- infrared-remote-library.html (dzięki Ken, świetna robota!) Serwer WWW Apache z zainstalowanym PHP - apache.org Wewnętrzny adres IP - mój to 192.168.0.9 Zdjęcie pilota - google lub zdjęcie zrobione aparatem. Zapisałem swoją w rozdzielczości 200x600

Krok 2: Budowanie tablicy

Budowanie zarządu
Budowanie zarządu

Zalecane jest użycie płytki stykowej dla arduino. Zamontowałem Arduino i płytkę stykową w tej samej obudowie i podłączyłem wszystkie piny, których regularnie używam, bezpośrednio do płytki stykowej na stałe. Piny Arduino użyte w tym projekcie: 5v, masa Cyfrowe piny 3, 11 (pin 3 steruje diodą IR, pin 11 łączy z odbiornikiem IR)

Krok 3: Schemat

Schematyczny
Schematyczny

Ten schemat jest bardzo prosty, 4 elementy i 6 przewodów. Połączenia diody IR: Podłącz jedną z nóg rezystora do pinu cyfrowego Arduino 3 Podłącz drugą nogę rezystora do pinu bazy tranzystora (w moim przypadku środkowa) Podłącz emiter tranzystora do masy Podłącz kolektor tranzystora do ujemnej nogi diody LED (krótka noga, płaska strona diody LED) Podłącz dodatnią nogę (długa noga, zakrzywiona strona) diody LED do 5-pinowego złącza odbiornika podczerwieni (musisz znaleźć pinout dla Twój konkretny odbiornik podczerwieni): pin GND do uziemienia pin VS do pinu 5V VO do pinu cyfrowego Arduino 11

Krok 4: Dodaj Irremote Library do oprogramowania Arduino

Dodaj bibliotekę Irremote do oprogramowania Arduino
Dodaj bibliotekę Irremote do oprogramowania Arduino

irremote to wspaniała biblioteka napisana przez Kena Shirriffa i jest dostępna na jego blogu pod adresem https://www.arcfn.com/2009/08/multi-protocol-infrared-remote-library.html Pobierz bibliotekę z https://arcfn.com/files/IRremote.zip i zainstaluj go tak, jak każdą inną bibliotekę dla arduino. Jego blog zawiera wiele przydatnych informacji na temat biblioteki i sposobu jej instalacji.

Krok 5: Zapisz kody z pilotów

Oto początek nudnej (ale nieuniknionej) części: naciśnięcie każdego przycisku na pilocie, zapisanie ciągu wyjściowego i przypisanie go do wirtualnego pilota. Musisz to zrobić tylko raz, spodziewaj się, że zajmie to około 20 minut. Uruchom edytor tekstu, aby zapisać wyniki. Utwórz nowy dokument i wpisz każdy przycisk na pilocie, po jednym w wierszu: Power Up Down Left Right.. i tak dalej Uruchom Arduino IDE i kliknij "Files->Examples->IRremote->IRrecvDump" i prześlij go do Twoje Arduino. Ten przykład zrzuci zdalne kody do portu szeregowego. Uruchom monitor portu szeregowego i naciśnij klawisz na pilocie. W oknie monitora szeregowego pojawi się ciąg znaków: "Dekodowane *: * (* bity)". Skopiuj ten wiersz i zapisz go w swoim dokumencie w odpowiednim wierszu. Powtarzaj, aż wszystkie klucze będą przechowywane w pliku tekstowym. Wiem jak fajnie jest ten bit, robiłem to już dwa razy:P Teraz musimy trochę poszukać i podmienić w pliku tekstowym: szukaj "Decoded" zamień na "" szukaj ":0x" zamień na ", " szukaj " (" zamień na ", " szukaj " bitów)" zamień na "" Tak więc dla linii takiej jak: Decoded NEC: 0x000110 (15 bitów) powinniśmy mieć teraz linię, która mówi: NEC, 000110, 15

Krok 6: Utwórz stronę internetową dla pilota

Teraz musimy zmapować przyciski na obrazie pilota.

Użyłem https://www.maschek.hu/imagemap/imgmap do mapowania przycisków i zmodyfikowałem kod, który daje strona internetowa, aby działał.

Kliknij „Użyj obrazu na swoim komputerze: [wybierz plik]”, wybierz obraz, kliknij [prześlij], kliknij [akceptuj] Upuść prostokąty, kółka itp. na każdy przycisk. Dla HREF wstaw /remote.php?command= i linię dla tego przycisku z dokumentu tekstowego, na przykład /remote.php?command=NEC, 000110, 15 Byłoby mądrze (i pomogłoby niezmiernie w debugowaniu) jeśli dodatkowo wypełnisz Alt: z nazwą przycisku, ale to zależy od Ciebie.

Powtórz dla każdego przycisku.

Wszystko gotowe? Wtedy będziemy kontynuować. Na dole tej strony znajduje się „Kod”, kliknij go, a otworzy się okno z kodem mapy obrazu. Skopiuj to i wklej do nowego dokumentu tekstowego. To jest główna część naszej strony internetowej.

Oto moja kompletna strona internetowa, wystarczy zastąpić…

z własnym kodem powyżej i zapisz go jako remote.php w katalogu sieciowym (/var/www na linux) wraz z obrazami pilota. Zmień linie dla własnych obrazów:

„https://www.w3.org/TR/html4/loose.dtd">

Sterowanie diodami Arduino

Krok 7: Prześlij kod zdalnego sterowania do Arduino

Prześlij kod zdalnego sterowania do swojego Arduino
Prześlij kod zdalnego sterowania do swojego Arduino

Utwórz nowy szkic i wklej do niego następujący kod: /* * WebRemote * Dioda podczerwieni musi być podłączona do pinu 3 Arduino PWM. * Wersja 0.1, lipiec 2009 r. * Prawa autorskie do tego kodu: Gregory Fenton, https://labby.co. uk/2012/02/irremote-arduino-experimentation/ * IRremote Library copyright 2009 Ken Shirriff, https://arcfn.com */ #include template inline Drukuj &operator <<(Drukuj &obj, T arg) { obj.print(arg); zwróć obj; } wartość logiczna zakończona = fałsz; char w danych[64]; // Odpowiedni rozmiar indeksu bajtu = 0; #define EOP "\n" IRsend irsend; void setup() { Serial.begin(9600); Serial << "Zainicjowano port szeregowy" << EOP; } void loop() { String pch, sType, sTemp; char inChar, stTest, k; int bity; długi szesnast; int i, j; while(1) { while(Serial.available() > 0) { inChar = Serial.read(); if(indeks == 0) { pch = ""; } if(inChar == '\r' || inChar == '\n' || inChar == '/') // EOP { end = true; indeks = 0; przerwa; } else { if(index < 64) // Rozmiar tablicy { pch += inChar; indeks++; } } } if(ended) { // Analizuj dane w inData here… pch.toUpperCase(); i = pch.indexOf(' ') != -1 ? pch.indexOf(' '): pch.indexOf(', '); sType = pch.substring(0, i); i++; // pomiń ', ' lub ' ' // i wskazuje teraz na początek hex j = pch.lastIndexOf(' ') != -1 ? pch.lastIndexOf(' '): pch.lastIndexOf(', '); // j teraz wskazuje na ', ' lub ' ' po hex sHex = 0; sTemp = pch.substring(i, j); if(sTemp.substring(0, 2) == String("0X")) sTemp = sTemp.substring(2); for(i = 0; i < sTemp.długość(); i++) { k = sTemp; if(!((k >= '0' && k = 'A' && k <= 'F'))) break; sześcian *= 16; if(k >= '0' && k <= '9') sHex += (k - '0'); inaczej if (k >= 'A' && k <= 'F') sHex += ((k - 'A') + 10); if(!((k >= '0' && k = 'A' && k <= 'F'))) break; } sTemp = pch.substring(j+1); sBity = 0; for(i = 0; i < sTemp.długość(); i++) { k = sTemp; sBity *= 10; if(k >= '0' && k <= '9') sBity += (k - '0'); } if(sType.length()>0) { Serial << pch << EOP << "Typ kodu: "<< sType << " Hex: "; Serial.print(sHex, HEX); Szeregowe << " Bity: " << sBity; } sendIt(sType, sHex, sBits); pch = ""; zakończony = 0; } } } void sendIt(String sType, long sHex, int sBits) { for(int i = 0; i < 2; i++) { if(sType.equals(String("RC6"))) { irsend.sendRC6(sHex, bity); } else if (sType.equals(String("RC5"))) { irsend.sendRC5(sHex, sBits); } else if(sType.equals(String("SONY"))) { irsend.sendSony(sHex, sBits); } else if(sType.equals(String("NEC"))) { if (!i) irsend.sendNEC(sHex, sBits); } else if(sType.equals(String("))) { Serial << "Opóźnienie" << EOP; opóźnienie(450); } opóźnienie(30); } }

Krok 8: Połącz się z serwerem internetowym z komputera

Połącz się z serwerem internetowym ze swojego komputera
Połącz się z serwerem internetowym ze swojego komputera

.. albo telefon albo android albo ipad lub cokolwiek innego: wejdź na https://adres IP serwera/remote.php U mnie adres to https://192.168.0.9/remote.php ale twój bez wątpienia będzie inny. Jeśli wszystko działa, powinieneś zobaczyć zdjęcie pilota z przyciskami, które możesz kliknąć.

Krok 9: Krok opcjonalny: Edytuj plik Hosts, aby był łatwiejszy w użyciu

Opcjonalny krok: Edytuj plik Hosts, aby był łatwiejszy w użyciu
Opcjonalny krok: Edytuj plik Hosts, aby był łatwiejszy w użyciu

Krokiem, który zrobiłem, była edycja pliku hosts (/etc/hosts w systemie Linux, C:\Windows\System32\Drivers\etc\hosts w systemie Windows). Zwróć uwagę, że ten plik można edytować tylko w administracyjnym wierszu poleceń (windows) lub su (linux) Dodaj wiersz ip.add.re.ss remote zastąp ip.add.re.ss adresem IP serwera i zapisz plik. Musisz to zrobić na każdym urządzeniu, na którym chcesz uzyskać dostęp do strony internetowej o krótkiej nazwie. Teraz możesz uzyskać dostęp do pilota za pomocą https://remote/remote.php To jest moja pierwsza odpowiednia instrukcja, bądź delikatny i daj mi znać, jeśli są jakieś problemy, abym mógł je naprawić.

Zalecana: