Innehållsförteckning:

Arduino webbläsarbaserad fjärrkontroll (linux): 9 steg (med bilder)
Arduino webbläsarbaserad fjärrkontroll (linux): 9 steg (med bilder)

Video: Arduino webbläsarbaserad fjärrkontroll (linux): 9 steg (med bilder)

Video: Arduino webbläsarbaserad fjärrkontroll (linux): 9 steg (med bilder)
Video: ESP32 Turorial 1 - Introduction to SunFounder's ESP32 IoT Learnig kit Software and Arduino IDE 2024, December
Anonim
Arduino webbläsarbaserad fjärrkontroll (Linux)
Arduino webbläsarbaserad fjärrkontroll (Linux)
Arduino webbläsarbaserad fjärrkontroll (Linux)
Arduino webbläsarbaserad fjärrkontroll (Linux)

Vi har barn. Jag älskar dem i bitar men de fortsätter att gömma fjärrkontrollen för satelliten och TV: n när de sätter på barnkanalerna. Efter att det här hade hänt dagligen i flera år och efter att min älskade fru tillät mig att ha en Arduino till jul bestämde jag mig för att det var dags att göra något nyttigt (i hennes ögon!) Med Arduino. Så här har vi kulmen på det: ett webbaserat gränssnitt till Arduino som ersätter mina fjärrkontroller och är tillgängligt från mitt interna nätverk. När jag kommer på varför min ethernet -sköld inte tillåter min arduino att hålla en skiss kommer jag att skriva en ny skiss som använder ethernet -skölden som webbserver, vilket betyder att jag inte behöver apache installerat på min dator. Håll utkik, jag kommer dit!

Steg 1: Förutsättningar

Förkunskaper
Förkunskaper

Hårdvara: Arduino -sida: Arduino - Jag använder en Arduino Uno R2 -brödbräda - din lokala elektronikbutik eller köket om du vill ha en äkta brödbräda Monteringshölje - Jag använde ett gammalt plastfodral med ett transparent lock Komponenter: Infraröd LED - jag avlödde en från en trasig fjärrkontroll (tack barn!) Infraröd mottagare - Jag fick min från en magic eye remote extender Transistor - jag använde en BC547 motstånd - jag använde ett 1,5k ohm variabelt motstånd inställd på 1k ohm Breadboard -bygeltrådar - jag fick min från en solid RJ45 -kabelrulle Datorsida: Dator som ska användas som server USB -ledning till Arduino -programvara: Arduino -programvara - från arduino.cc irremote -bibliotek - från https://www.arcfn.com/2009/08/multi-protocol- infrarött -fjärr -bibliotek.html (tack Ken, bra jobbat!) Apache -webbserver med PHP installerat - apache.org Intern IP -adress - min är 192.168.0.9 Bild på din fjärrkontroll - google eller en bild tagen på din kamera. Jag sparade min i upplösningen 200x600

Steg 2: Bygga styrelsen

Bygga styrelsen
Bygga styrelsen

Att använda en brödbräda för en arduino rekommenderas starkt. Jag monterade min Arduino och en brödbräda i samma hölje och kopplade alla stift som jag regelbundet använder direkt till brödbrädan permanent. Arduino -stift som används för detta projekt: 5v, jordade digitala stift 3, 11 (stift 3 styr IR -lysdioden, stift 11 ansluter till IR -mottagaren)

Steg 3: Schematisk

Schematisk
Schematisk

Denna schema är mycket enkel, 4 komponenter och 6 ledningar. IR LED -anslutningar: Anslut ett av motståndets ben till Arduino digital stift 3 Anslut det andra benet på motståndet till transistorns basstift (mittbenet i mitt fall) Anslut transistorns emitter till jord Anslut kollektorn av transistorn till det negativa benet på lysdioden (kort ben, platt sida av lysdioden) Anslut lysdiodens positiva ben (långa ben, böjda sidan) till 5v -stifts IR -mottagaranslutningarna (du måste hitta pinout för din speciella IR -mottagare): GND -stift till jord VS -stift till 5v VO -stift till Arduino digital stift 11

Steg 4: Lägg till Irremote -biblioteket i Arduino -programvaran

Lägg till Irremote -biblioteket i Arduino -programvaran
Lägg till Irremote -biblioteket i Arduino -programvaran

irremote är ett fantastiskt bibliotek skrivet av Ken Shirriff och är tillgängligt från hans blogg på https://www.arcfn.com/2009/08/multi-protocol-infrared-remote-library.html Ladda ner biblioteket från https:// arcfn.com/files/IRremote.zip och installera det som på ett annat bibliotek för arduino. Hans blogg har mycket användbar information om biblioteket och hur man installerar det.

Steg 5: Spela in koder från dina fjärrkontroller

Här är början på den tråkiga (men oundvikliga) delen: Tryck på varje knapp på fjärrkontrollen, spara utmatningssträngen och mappa den till den virtuella fjärrkontrollen. Du behöver bara göra det en gång, räkna med att ta cirka 20 minuter eller så. Starta en textredigerare för att spara din produktion. Skapa ett nytt dokument och skriv ut varje knapp på din fjärrkontroll, en per rad: Starta ner vänster till höger.. osv Starta Arduino IDE och klicka på "Filer-> Exempel-> IR-fjärr-> IRrecvDump" och ladda upp den till din Arduino. Detta exempel dumpar fjärrkoderna till serieporten. Starta seriell portmonitor och tryck på en knapp på fjärrkontrollen. Du kommer att se en sträng visas i det seriella skärmfönstret: "Avkodad *: * (* bitar)". Kopiera den här raden och spara den i ditt dokument på rätt rad. Upprepa tills du har alla dina nycklar lagrade i textfilen. Jag vet hur kul den här biten är, jag har gjort det två gånger hittills: P Vi måste nu söka och byta ut lite i textfilen: sök efter "Avkodad" ersätt med "" sök efter ": 0x" ersätt med "," sök efter "(" ersätt med "," sök efter "bitar)" ersätt med "" Så för en rad som: Avkodad NEC: 0x000110 (15 bitar) bör vi nu ha en rad som säger: NEC, 000110, 15

Steg 6: Skapa webbsidan för din fjärrkontroll

Vi måste nu kartlägga knapparna på din bild av din fjärrkontroll.

Jag använde https://www.maschek.hu/imagemap/imgmap för att kartlägga knapparna och ändrade koden som webbplatsen ger dig för att få det att fungera.

Klicka på "Använd en bild på din dator: [välj fil]", välj din bild, klicka på [ladda upp], klicka på [acceptera] Släpp rektanglar, cirklar etc på varje knapp. För HREF, lägg till /remote.php?command= och raden för den knappen från textdokumentet till exempel /remote.php?command=NEC, 000110, 15 Det vore klokt (och oerhört bra vid felsökning) om du också fyller i Alt: med knappnamnet men det är upp till dig.

Upprepa för varje knapp.

Klart? Sedan fortsätter vi. Längst ner på sidan finns "Kod", klicka på den så öppnas en ruta som visar koden för bildkartan. Kopiera det och klistra in det i ett nytt textdokument. Detta är huvuddelen av vår webbsida.

Här är min kompletta webbsida, ersätt bara …

med din egen kod ovan och spara den som remote.php i din webbkatalog (/var/www på linux) tillsammans med dina fjärrkontrollbilder. Ändra raderna för dina egna bilder:

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

Arduino LED -kontroll

Steg 7: Ladda upp fjärrkontrollkoden till din Arduino

Ladda upp fjärrkontrollkoden till din Arduino
Ladda upp fjärrkontrollkoden till din Arduino

Skapa en ny skiss och klistra in följande kod i den:/ * * WebRemote * En IR -lysdiod måste vara ansluten till Arduino PWM pin 3. * Version 0.1 juli, 2009 * Denna kod upphovsrätt Gregory Fenton, https://labby.co. Storbritannien/2012/02/irremote-arduino-experiment/ * IRremote Library copyright 2009 Ken Shirriff, https://arcfn.com */#include template inline Print & operator << (Print & obj, T arg) {obj.print (arg); return obj; } booleskt slutat = falskt; char inData [64]; // Storlek som lämpligt byteindex = 0; #define EOP "\ n" IRsend irsend; void setup () {Serial.begin (9600); Seriell << "Seriell port initialiserad" << EOP; } void loop () {String pch, sType, sTemp; röding inChar, sTest, k; int sBits; lång sHex; int i, j; while (1) {while (Serial.available ()> 0) {inChar = Serial.read (); if (index == 0) {pch = ""; } if (inChar == '\ r' || inChar == '\ n' || inChar == '/') // EOP {ended = true; index = 0; ha sönder; } annat {if (index <64) // Arraystorlek {pch += inChar; index ++; }}} if (ended) {// Analysera data i inData här … pch.toUpperCase (); i = pch.indexOf ('')! = -1? pch.indexOf (''): pch.indexOf (','); sType = pch.substring (0, i); i ++; // hoppa över ',' eller '' // i pekar nu på början av hex j = pch.lastIndexOf ('')! = -1? pch.lastIndexOf (''): pch.lastIndexOf (','); // j pekar nu på ',' eller '' efter hex sHex = 0; sTemp = pch.substring (i, j); if (sTemp.substring (0, 2) == String ("0X")) sTemp = sTemp.substring (2); för (i = 0; i <sTemp.length (); i ++) {k = sTemp ; if (! ((k> = '0' && k = 'A' && k <= 'F'))) break; sHex *= 16; om (k> = '0' && k <= '9') sHex += (k - '0'); annars om (k> = 'A' && k <= 'F') sHex + = ((k - 'A') + 10); if (! ((k> = '0' && k = 'A' && k <= 'F'))) break; } sTemp = pch.substring (j+1); sBits = 0; för (i = 0; i <sTemp.length (); i ++) {k = sTemp ; sBits *= 10; om (k> = '0' && k <= '9') sBits += (k - '0'); } if (sType.length ()> 0) {Seriell << pch << EOP << "Kodtyp:" << sType << "Hex:"; Serial.print (sHex, HEX); Seriella << "Bits:" << sBits; } sendIt (sType, sHex, sBits); pch = ""; slutade = 0; }}} void sendIt (String sType, long sHex, int sBits) {for (int i = 0; i <2; i ++) {if (sType.equals (String ("RC6"))) {irsend.sendRC6 (sHex, sBits); } annars if (sType.equals (String ("RC5"))) {irsend.sendRC5 (sHex, sBits); } annars if (sType.equals (String ("SONY"))) {irsend.sendSony (sHex, sBits); } annars if (sType.equals (String ("NEC"))) {if (! i) irsend.sendNEC (sHex, sBits); } annars if (sType.equals (String (""))) {Seriell << "Fördröjning" << EOP; fördröjning (450); } fördröjning (30); }}

Steg 8: Anslut till webbservern från din dator

Anslut till webbservern från din dator
Anslut till webbservern från din dator

.. eller telefon eller android eller ipad eller vad som helst: gå till https:// webbserver IP -adress/remote.php i din webbläsare För mig är adressen https://192.168.0.9/remote.php men din kommer utan tvekan att vara annorlunda. Om allt fungerar bör du se en bild på din fjärrkontroll med knappar du kan klicka på.

Steg 9: Valfritt steg: Redigera värdfilen så att den blir enklare att använda

Valfritt steg: Redigera din värdfil så att den blir enklare att använda
Valfritt steg: Redigera din värdfil så att den blir enklare att använda

Ett steg jag gjorde var att redigera mina värdfiler (/etc/hosts på linux, C: / Windows / System32 / Drivers / etc / hosts på windows). Observera att den här filen bara kan redigeras i en administrativ kommandotolk (Windows) eller med su (linux) Lägg till raden ip.add.re.ss fjärrbyte ip.add.re.ss med serverns IP -adress och spara filen. Du skulle behöva göra detta på varje enhet du ville komma åt webbsidan med det korta namnet. Nu kan du komma åt fjärrkontrollen med https://remote/remote.php Detta är min första riktiga instruerbara, var försiktig och meddela mig om det finns några problem så att jag kan åtgärda dem.

Rekommenderad: