Inhoudsopgave:

Arduino browsergebaseerde afstandsbediening (linux) - Ajarnpa
Arduino browsergebaseerde afstandsbediening (linux) - Ajarnpa

Video: Arduino browsergebaseerde afstandsbediening (linux) - Ajarnpa

Video: Arduino browsergebaseerde afstandsbediening (linux) - Ajarnpa
Video: EasyThreed X1 3D Printer Review - Everything to get started. Also, is it any good? 2024, November
Anonim
Arduino browsergebaseerde afstandsbediening (linux)
Arduino browsergebaseerde afstandsbediening (linux)
Arduino browsergebaseerde afstandsbediening (linux)
Arduino browsergebaseerde afstandsbediening (linux)

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

Vereisten
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 bord bouwen
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:

Schematisch
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-bibliotheek toevoegen aan de Arduino-software
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

Upload de afstandsbedieningscode naar uw Arduino
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

Verbinding maken met de webserver vanaf uw computer
Verbinding maken 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

Optionele stap: bewerk uw hosts-bestand om het gebruiksvriendelijker te maken
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: