Innholdsfortegnelse:
- Trinn 1: Forutsetninger
- Trinn 2: Bygg styret
- Trinn 3: Skjematisk
- Trinn 4: Legg til Irremote Library i Arduino -programvaren
- Trinn 5: Registrer kodene fra fjernkontrollene
- Trinn 6: Lag en webside for fjernkontrollen
- Trinn 7: Last opp fjernkontrollkoden til din Arduino
- Trinn 8: Koble til webserveren fra datamaskinen
- Trinn 9: Valgfritt trinn: Rediger vertsfilen din for å gjøre den enklere å bruke
2025 Forfatter: John Day | [email protected]. Sist endret: 2025-01-13 06:58
Vi har barn. Jeg elsker dem, men de gjemmer fjernkontrollen for satellitten og TVen når de setter på barnekanalene. Etter at dette hadde skjedd daglig i flere år, og etter at min kjære kone tillot meg å ha en Arduino til jul bestemte jeg meg for at det var på tide å lage noe nyttig (i hennes øyne!) Med Arduino. Så her har vi kulminasjonen på det: Et nettbasert grensesnitt til Arduino som erstatter fjernkontrollene mine og er tilgjengelig fra mitt interne nettverk. Når jeg finner ut hvorfor ethernet -skjoldet mitt ikke tillater min arduino å beholde en skisse, vil jeg skrive en ny skisse som bruker ethernet -skjoldet som webserver, noe som betyr at jeg ikke trenger apache installert på datamaskinen min. Følg med, jeg kommer dit!
Trinn 1: Forutsetninger
Maskinvare: Arduino side: Arduino - Jeg bruker et Arduino Uno R2 brødbrett - din lokale elektronikkbutikk eller kjøkkenet hvis du vil ha et autentisk monteringsskap for brødbrett - jeg brukte en gammel plastkasse med et gjennomsiktig lokk Komponenter: Infrarød LED - jeg desolderte en fra en ødelagt fjernkontroll (takk barn!) Infrarød mottaker - Jeg fikk min fra en magisk øye fjernforlenger Transistor - jeg brukte en BC547 motstand - jeg brukte en 1,5k ohm variabel motstand satt til 1k ohm brødbrett jumper ledninger - jeg fikk min fra en solid kjerne RJ45 -kabelrulle Datamaskin: Datamaskin som skal brukes som server USB -ledning til Arduino -programvare: Arduino -programvare - fra arduino.cc irremote -bibliotek - fra https://www.arcfn.com/2009/08/multi-protocol- infrarød -ekstern -bibliotek.html (takk Ken, flott arbeid!) Apache webserver med PHP installert - apache.org Intern IP -adresse - min er 192.168.0.9 Bilde av fjernkontrollen din - google eller et bilde tatt på kameraet ditt. Jeg lagret min i 200x600 oppløsning
Trinn 2: Bygg styret
Det anbefales sterkt å bruke et brødbrett til en arduino. Jeg monterte min Arduino og et brødbrett i samme kabinett og koblet alle pinnene jeg regelmessig bruker direkte til brødbrettet permanent. Arduino -pinner som brukes til dette prosjektet: 5v, bakken Digitale pinner 3, 11 (pin 3 styrer IR -LED, pin 11 kobles til IR -mottakeren)
Trinn 3: Skjematisk
Denne skjemaet er veldig enkelt, 4 komponenter og 6 ledninger. IR LED -tilkoblinger: Koble det ene benet på motstanden til Arduino digital pin 3 Koble det andre benet til motstanden til basistappen på transistoren (midtbenet i mitt tilfelle) Koble transistorens sender til jord Koble kollektoren av transistoren til det negative benet på LED -en (kort etappe, flat side av LED -en) Koble det positive benet (langt ben, buet side) til LED -en til 5v -pinners IR -mottakerforbindelser (du må finne pinout for din spesielle IR -mottaker): GND -pin til bakken VS -pin til 5v VO -pin til Arduino digital pin 11
Trinn 4: Legg til Irremote Library i Arduino -programvaren
irremote er et flott bibliotek skrevet av Ken Shirriff og er tilgjengelig fra bloggen hans på https://www.arcfn.com/2009/08/multi-protocol-infrared-remote-library.html Last ned biblioteket fra https:// arcfn.com/files/IRremote.zip og installer det som på et annet bibliotek for arduinoen. Bloggen hans har mye nyttig informasjon om biblioteket og hvordan du installerer det.
Trinn 5: Registrer kodene fra fjernkontrollene
Her er starten på den kjedelige (men uunngåelige) delen: Trykk på hver knapp på fjernkontrollen, lagre utdatastrengen og kartlegg den til den virtuelle fjernkontrollen. Du trenger bare å gjøre det en gang, forvent å ta omtrent 20 minutter eller så. Start et tekstredigeringsprogram for å lagre utdataene. Lag et nytt dokument og skriv ut hver knapp på fjernkontrollen, én per linje: Slå av venstre til høyre.. osv. Start Arduino IDE og klikk på "Filer-> Eksempler-> IRfjern-> IRrecvDump" og last den opp til din Arduino. Dette eksemplet vil dumpe de eksterne kodene til den serielle porten. Start seriell portmonitor og trykk på en tast på fjernkontrollen. Du vil se en streng vises i det serielle skjermvinduet: "Dekodert *: * (* bits)". Kopier denne linjen og lagre den i dokumentet på den aktuelle linjen. Gjenta til du har alle nøklene dine lagret i tekstfilen. Jeg vet hvor gøy denne biten er, jeg har gjort det to ganger så langt: P Vi trenger nå å søke litt og erstatte i tekstfilen: søk etter "Dekodert" erstatt med "" søk etter ": 0x" erstatt med "," søk etter "(" erstatt med "," søk etter "biter)" erstatt med "" Så for en linje som: Dekodert NEC: 0x000110 (15 biter) bør vi nå ha en linje som sier: NEC, 000110, 15
Trinn 6: Lag en webside for fjernkontrollen
Vi må nå kartlegge knappene på bildet av fjernkontrollen.
Jeg brukte https://www.maschek.hu/imagemap/imgmap til å kartlegge knappene og endret koden som nettstedet gir deg for å få det til å fungere.
Klikk på "Bruk et bilde på datamaskinen din: [velg fil]", velg bildet ditt, klikk på [last opp], klikk på [godta] Slipp rektangler, sirkler osv. På hver knapp. For HREF, legg /remote.php?command= og linjen for den knappen fra tekstdokumentet, for eksempel /remote.php?command=NEC, 000110, 15 Det ville være lurt (og hjelpe enormt i feilsøking) hvis du også fyller ut Alt: med knappens navn, men det er opp til deg.
Gjenta for hver knapp.
Ferdig? Så fortsetter vi. Nederst på siden er "Kode", klikk på den, og en boks åpnes som viser koden for bildekartet. Kopier det og lim det inn i et nytt tekstdokument. Dette er hoveddelen av nettsiden vår.
Her er min komplette webside, bare bytt ut …
med din egen kode ovenfor og lagre den som remote.php i webkatalogen (/var/www på linux) sammen med fjernkontrollbildene. Endre linjene for dine egne bilder:
"https://www.w3.org/TR/html4/loose.dtd">
Arduino LED -kontroll
Trinn 7: Last opp fjernkontrollkoden til din Arduino
Lag en ny skisse og lim inn følgende kode i den:/ * * WebRemote * En IR -LED må være koblet til Arduino PWM pin 3. * Versjon 0.1 juli, 2009 * Denne koden opphavsrett Gregory Fenton, https://labby.co. uk/2012/02/irremote-arduino-experimentation/ * IRremote Library copyright 2009 Ken Shirriff, https://arcfn.com */#include template inline Print & operator << (Print & obj, T arg) {obj.print (arg); returnere obj; } boolsk ended = false; røye inData [64]; // Størrelse som passende byteindeks = 0; #define EOP "\ n" IRsend irsend; ugyldig oppsett () {Serial.begin (9600); Seriell << "Seriell port initialisert" << EOP; } void loop () {String pch, sType, sTemp; røye inChar, sTest, k; int sBits; lang sHex; int i, j; while (1) {while (Serial.available ()> 0) {inChar = Serial.read (); hvis (indeks == 0) {pch = ""; } hvis (inChar == '\ r' || inChar == '\ n' || inChar == '/') // EOP {ended = true; indeks = 0; gå i stykker; } annet {if (indeks <64) // Matrisestørrelse {pch += inChar; indeks ++; }}} hvis (slutt) {// Analyser dataene i inData her … pch.toUpperCase (); i = pch.indexOf ('')! = -1? pch.indexOf (''): pch.indexOf (','); sType = pch.substring (0, i); i ++; // hoppe over ',' eller '' // jeg peker nå på starten av hex j = pch.lastIndexOf ('')! = -1? pch.lastIndexOf (''): pch.lastIndexOf (','); // j peker nå på ',' eller '' etter hex sHex = 0; sTemp = pch.substring (i, j); hvis (sTemp.substring (0, 2) == String ("0X")) sTemp = sTemp.substring (2); for (i = 0; i <sTemp.length (); i ++) {k = sTemp ; hvis (! ((k> = '0' && k = 'A' && k <= 'F'))) break; sHex *= 16; hvis (k> = '0' && k <= '9') sHex += (k - '0'); ellers hvis (k> = 'A' && k <= 'F') sHex + = ((k - 'A') + 10); hvis (! ((k> = '0' && k = 'A' && k <= 'F'))) break; } sTemp = pch.substring (j+1); sBits = 0; for (i = 0; i <sTemp.length (); i ++) {k = sTemp ; sBits *= 10; hvis (k> = '0' && k <= '9') sBits += (k - '0'); } hvis (sType.length ()> 0) {Seriell << pch << EOP << "Kodetype:" << sType << "Hex:"; Serial.print (sHex, HEX); Seriell << "Bits:" << sBits; } sendIt (sType, sHex, sBits); pch = ""; slutt = 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); } annet hvis (sType.equals (String ("RC5"))) {irsend.sendRC5 (sHex, sBits); } annet hvis (sType.equals (String ("SONY"))) {irsend.sendSony (sHex, sBits); } annet hvis (sType.equals (String ("NEC"))) {if (! i) irsend.sendNEC (sHex, sBits); } annet hvis (sType.equals (String (""))) {Seriell << "Forsinkelse" << EOP; forsinkelse (450); } forsinkelse (30); }}
Trinn 8: Koble til webserveren fra datamaskinen
.. eller telefon eller android eller ipad eller hva som helst: gå til https:// webserver IP -adresse/remote.php i nettleseren For meg er adressen https://192.168.0.9/remote.php, men din vil uten tvil være annerledes. Hvis alt fungerer, bør du se et bilde av fjernkontrollen med knapper du kan klikke på.
Trinn 9: Valgfritt trinn: Rediger vertsfilen din for å gjøre den enklere å bruke
Et trinn jeg gjorde var å redigere vertsfilen min (/etc/hosts på linux, C: / Windows / System32 / Drivers / etc / hosts på windows). Vær oppmerksom på at denne filen bare kan redigeres i en administrativ ledetekst (Windows) eller ved su (linux) Legg til linjen ip.add.re.ss ekstern erstatning ip.add.re.ss med serverens IP -adresse og lagre filen. Du må gjøre dette på hver enhet du ønsker å få tilgang til websiden med det korte navnet. Nå kan du få tilgang til fjernkontrollen med https://remote/remote.php Dette er min første ordentlig instruerbare, vær forsiktig og gi meg beskjed hvis det er problemer, så jeg kan fikse dem.