Inhoudsopgave:
- Stap 1: Vereisten
- Stap 2: Het bord bouwen
- Stap 3: Schematisch:
- Stap 4: Irremote-bibliotheek toevoegen aan de Arduino-software
- Stap 5: Noteer de codes van uw afstandsbedieningen
- Stap 6: Maak de webpagina voor uw afstandsbediening
- Stap 7: Upload de afstandsbedieningscode naar uw Arduino
- Stap 8: Maak verbinding met de webserver vanaf uw computer
- Stap 9: Optionele stap: bewerk uw hosts-bestand om het gebruiksvriendelijker te maken
Video: Arduino browsergebaseerde afstandsbediening (linux) - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:14
We hebben kinderen. Ik ben dol op ze, maar ze verstoppen steeds de afstandsbediening voor de satelliet en tv als ze de kinderzenders aanzetten. Nadat dit een aantal jaren dagelijks gebeurde, en nadat mijn lieve vrouw me een Arduino voor Kerstmis had gegeven, besloot ik dat het tijd was om iets nuttigs te maken (in haar ogen!) met de Arduino. Dus hier hebben we het hoogtepunt daarvan: een webgebaseerde interface naar de Arduino die mijn afstandsbedieningen vervangt en toegankelijk is vanaf mijn interne netwerk. Als ik erachter ben waarom mijn ethernet-schild mijn arduino niet toestaat een schets te bewaren, zal ik een nieuwe schets schrijven die het ethernet-schild als webserver gebruikt, wat betekent dat ik geen apache op mijn computer hoef te installeren. Blijf op de hoogte, ik kom er wel!
Stap 1: Vereisten
Hardware: Arduino-kant: Arduino - Ik gebruik een Arduino Uno R2 Breadboard - uw plaatselijke elektronicawinkel, of de keuken als u een authentieke breadboard wilt Montagebehuizing - Ik gebruikte een oude plastic behuizing met een transparant deksel Componenten: Infrarood LED - ik heb desoldered een van een kapotte afstandsbediening (bedankt kinderen!) Infraroodontvanger - Ik heb de mijne van een Magic Eye Remote Extender Transistor - Ik gebruikte een BC547-weerstand - Ik gebruikte een 1.5k ohm variabele weerstand ingesteld op 1k ohm Breadboard-jumpers - Ik heb de mijne van een solide RJ45-kabelhaspel Computerzijde: Computer te gebruiken als server USB-kabel naar Arduino Software: Arduino-software - van arduino.cc irremote-bibliotheek - van https://www.arcfn.com/2009/08/multi-protocol- infrarood-remote-library.html (bedankt Ken, geweldig werk!) Apache-webserver met PHP geïnstalleerd - apache.org Intern IP-adres - het mijne is 192.168.0.9 Afbeelding van uw afstandsbediening - google of een foto gemaakt met uw camera. Ik heb de mijne opgeslagen met een resolutie van 200x600
Stap 2: Het bord bouwen
Het gebruik van een breadboard voor een arduino wordt sterk aanbevolen. Ik heb mijn Arduino en een breadboard in dezelfde behuizing gemonteerd en alle pinnen die ik regelmatig gebruik, permanent rechtstreeks op het breadboard aangesloten. Arduino-pinnen gebruikt voor dit project: 5v, aarde Digitale pinnen 3, 11 (pin 3 bestuurt de IR-LED, pin 11 maakt verbinding met de IR-ontvanger)
Stap 3: Schematisch:
Dit schema is heel eenvoudig, 4 componenten en 6 draden. IR LED-aansluitingen: Sluit een van de benen van de weerstand aan op Arduino digitale pin 3 Sluit het andere been van de weerstand aan op de basispin van de transistor (het middelste been in mijn geval) Sluit de emitter van de transistor aan op aarde Sluit de collector aan van de transistor naar de negatieve poot van de LED (korte poot, platte kant van de LED) Sluit de positieve poot (lange poot, gebogen kant) van de LED aan op de 5v pin IR-ontvangeraansluitingen (u zou de pinout moeten vinden voor uw specifieke IR-ontvanger): GND-pin naar aarde VS-pin naar 5v VO-pin naar Arduino digitale pin 11
Stap 4: Irremote-bibliotheek toevoegen aan de Arduino-software
irremote is een geweldige bibliotheek geschreven door Ken Shirriff en is beschikbaar via zijn blog op https://www.arcfn.com/2009/08/multi-protocol-infrared-remote-library.html Download de bibliotheek van https://arcfn.com/files/IRremote.zip en installeer het zoals elke andere bibliotheek voor de arduino. Zijn blog bevat veel nuttige informatie over de bibliotheek en hoe deze te installeren.
Stap 5: Noteer de codes van uw afstandsbedieningen
Hier is het begin van het saaie (maar onvermijdelijke) deel: elke knop op de afstandsbediening indrukken, de uitvoerreeks opslaan en toewijzen aan de virtuele afstandsbediening. U hoeft het maar één keer te doen, verwacht ongeveer 20 minuten te duren. Start een teksteditor om uw uitvoer op te slaan. Maak een nieuw document en typ elke knop op uw afstandsbediening, één per regel: Power Up Down Left Right.. et cetera Start de Arduino IDE en klik op "Files->Examples->IRremote->IRrecvDump" en upload het naar uw Arduino. In dit voorbeeld worden de externe codes naar de seriële poort gedumpt. Start de seriële poortmonitor en druk op een toets op uw afstandsbediening. U ziet een tekenreeks verschijnen in het seriële monitorvenster: "Decoded *: * (* bits)". Kopieer deze regel en sla deze op in uw document op de juiste regel. Herhaal dit totdat u al uw sleutels in het tekstbestand hebt opgeslagen. Ik weet hoe leuk dit stukje is, ik heb het tot nu toe twee keer gedaan:P We moeten nu een beetje zoeken en vervangen in het tekstbestand: zoek naar "Decoded" vervang door "" zoek naar ": 0x" vervang door ", " zoeken naar " (" vervangen door ", " zoeken naar " bits)" vervangen door "" Dus voor een regel zoals: Gedecodeerde NEC: 0x000110 (15 bits) zouden we nu een regel moeten hebben die zegt: NEC, 000110, 15
Stap 6: Maak de webpagina voor uw afstandsbediening
We moeten nu de knoppen op uw afbeelding van uw afstandsbediening in kaart brengen.
Ik gebruikte https://www.maschek.hu/imagemap/imgmap om de knoppen in kaart te brengen en wijzigde de code die de website je geeft om het te laten werken.
Klik op "Gebruik een afbeelding op uw computer: [kies bestand]", selecteer uw afbeelding, klik op [upload], klik op [accept] Zet rechthoeken, cirkels enz. op elke knop. Voor HREF zet u /remote.php?command= en de regel voor die knop uit het tekstdocument bijvoorbeeld /remote.php?command=NEC, 000110, 15 Het zou verstandig zijn (en enorm helpen bij het debuggen) als u ook Alt: met de naam van de knop maar dat is aan jou.
Herhaal dit voor elke knop.
Helemaal klaar? Dan gaan we verder. Onderaan die pagina staat "Code", klik daarop en er wordt een vak geopend met de code voor de imagemap. Kopieer dat en plak het in een nieuw tekstdocument. Dit is het hoofdgedeelte van onze webpagina.
Hier is mijn volledige webpagina, vervang gewoon de …
met uw eigen code hierboven en sla deze op als remote.php in uw webdirectory (/var/www op linux) samen met uw afstandsbedieningsafbeeldingen. Wijzig de regels voor uw eigen afbeeldingen:
"https://www.w3.org/TR/html4/loose.dtd">
Arduino LED-besturing
Stap 7: Upload de afstandsbedieningscode naar uw Arduino
Maak een nieuwe schets en plak de volgende code erin: /* * WebRemote * Een IR LED moet worden aangesloten op Arduino PWM pin 3. * Versie 0.1 juli 2009 * Deze code copyright Gregory Fenton, https://labby.co. uk/2012/02/irremote-arduino-experimentation/ * IRremote Bibliotheek copyright 2009 Ken Shirriff, https://arcfn.com */ #include template inline Print &operator <<(Print &obj, T arg) { obj.print(arg); retour obj; } boolean eindigde = onwaar; char inData[64]; // Grootte zoals van toepassing byte-index = 0; #define EOP "\n" IRsend irsend; void setup() { Serial.begin(9600); Serieel << "Seriële poort geïnitialiseerd" << EOP; } void loop() { String pch, sType, sTemp; char inChar, sTest, k; int sBits; lange sHex; int i, j; while(1) { while(Serial.available() > 0) { inChar = Serial.read(); if(index == 0) { pch = ""; } if(inChar == '\r' || inChar == '\n' || inChar == '/') // EOP {einde = waar; index = 0; pauze; } else {if(index <64) // Arraygrootte {pch += inChar; index++; } } } if(ended) { // Parseer de gegevens in inData hier… pch.toUpperCase(); i = pch.indexOf(' ') != -1? pch.indexOf(' '): pch.indexOf(', '); sType = pch.substring(0, i); i++; // sla over ', ' of ' ' // i wijst nu naar het begin van hex j = pch.lastIndexOf(' ') != -1 ? pch.lastIndexOf(' '): pch.lastIndexOf(', '); // j wijst nu naar ', ' of ' ' na hex sHex = 0; sTemp = pch.substring(i, j); if(sTemp.substring(0, 2) == String("0X")) sTemp = sTemp.substring(2); for(i = 0; i < sTemp.length(); i++) { k = sTemp; if(!((k >= '0' && k = 'A' && k <= 'F'))) breken; sHex *= 16; if(k >= '0' && k <= '9') sHex += (k - '0'); anders als (k >= 'A' && k <= 'F') sHex += ((k - 'A') + 10); if(!((k >= '0' && k = 'A' && k <= 'F'))) breken; } sTemp = pch.substring(j+1); sBits = 0; for(i = 0; i < sTemp.length(); i++) { k = sTemp; sBits *= 10; if(k >= '0' && k <= '9') sBits += (k - '0'); } if(sType.length()>0) { Serieel << pch << EOP << "Codetype: "<< sType << " Hex: "; Seriële.afdruk (sHex, HEX); Serieel << " Bits: " << sBits; } sendIt(sType, sHex, sBits); pch = ""; beëindigd = 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); } 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(""))) { Serieel << "Vertragend" << EOP; vertraging (450); } vertraging (30); } }
Stap 8: Maak verbinding met de webserver vanaf uw computer
.. of telefoon of android of ipad of wat dan ook: ga naar https://webserver IP-adres/remote.php in je browser. Voor mij is het adres https://192.168.0.9/remote.php maar dat van jou zal ongetwijfeld anders zijn. Als alles werkt, ziet u een afbeelding van uw afstandsbediening met knoppen waarop u kunt klikken.
Stap 9: Optionele stap: bewerk uw hosts-bestand om het gebruiksvriendelijker te maken
Een stap die ik deed was het bewerken van mijn hosts-bestand (/etc/hosts op linux, C:\Windows\System32\Drivers\etc\hosts op Windows). Merk op dat dit bestand alleen kan worden bewerkt in een administratieve opdrachtprompt (windows) of door su (linux) Voeg de regel ip.add.re.ss remote toe vervang ip.add.re.ss door het IP-adres van de server en sla het bestand op. U zou dit moeten doen op elk apparaat dat u toegang wilt geven tot de webpagina met de korte naam. Nu heb je toegang tot de afstandsbediening met https://remote/remote.php Dit is mijn eerste echte instructable, wees voorzichtig en laat het me weten als er problemen zijn, zodat ik ze kan oplossen.
Aanbevolen:
Bedien uw LED's met de afstandsbediening van uw tv?! -- Arduino IR-zelfstudie: 5 stappen (met afbeeldingen)
Bedien uw LED's met de afstandsbediening van uw tv?! || Arduino IR-zelfstudie: in dit project zal ik je laten zien hoe ik de nutteloze knoppen op de afstandsbediening van mijn tv heb hergebruikt om de LED's achter mijn tv te bedienen. Je kunt deze techniek ook gebruiken om allerlei dingen te besturen met een beetje code-editing. Ik zal ook wat vertellen over de theorie
TV-afstandsbediening wordt een RF-afstandsbediening -- NRF24L01+ zelfstudie: 5 stappen (met afbeeldingen)
TV-afstandsbediening wordt een RF-afstandsbediening || NRF24L01+ Tutorial: In dit project laat ik je zien hoe ik de populaire nRF24L01+ RF IC heb gebruikt om de helderheid van een ledstrip draadloos aan te passen via drie nutteloze knoppen van een tv-afstandsbediening. Laten we beginnen
Veilige Arduino-afstandsbediening: 5 stappen
Veilige Arduino-afstandsbediening: dit is een voorbeeld van hoe u een ultraveilige draadloze (garage-)afstandsbediening kunt maken. Meestal hebben afstandsbedieningen een rolling code-beveiliging, die door elke geavanceerde dief kan worden omzeild. erin hacken zou ac
Draadloze afstandsbediening met 2,4 GHz NRF24L01-module met Arduino - Nrf24l01 4-kanaals / 6-kanaals zenderontvanger voor quadcopter - RC Helikopter - RC-vliegtuig met Arduino: 5 stappen (met afbeeldingen)
Draadloze afstandsbediening met 2,4 GHz NRF24L01-module met Arduino | Nrf24l01 4-kanaals / 6-kanaals zenderontvanger voor quadcopter | RC Helikopter | Rc-vliegtuig met Arduino: een Rc-auto besturen | Quadcopter | Drone | RC vliegtuig | RC-boot, we hebben altijd een ontvanger en zender nodig, stel dat we voor RC QUADCOPTER een 6-kanaals zender en ontvanger nodig hebben en dat type TX en RX is te duur, dus we gaan er een maken op onze
Browsergebaseerde PCB's: 7 stappen
Browsergebaseerde PCB's: als u projecten aanneemt of maakt, zullen sommige gemakkelijk en sommige moeilijk zijn. Sommige zullen eenmalig zijn en andere zullen op grote schaal moeten worden gemaakt. In dit artikel zullen we mijn grootste project tot nu toe onderzoeken, Distributed Symphony, en hoe de microfoon