Arduino Browser Batay sa Remote Control (linux): 9 Mga Hakbang (na may Mga Larawan)
Arduino Browser Batay sa Remote Control (linux): 9 Mga Hakbang (na may Mga Larawan)
Anonim
Arduino Browser Batay sa Remote Control (linux)
Arduino Browser Batay sa Remote Control (linux)
Arduino Browser Batay sa Remote Control (linux)
Arduino Browser Batay sa Remote Control (linux)

May mga anak tayo. Mahal ko sila sa mga piraso ngunit itinatago nila ang remote control para sa satellite at TV kapag inilagay nila ang mga channel ng mga bata. Matapos ito mangyari sa araw-araw na batayan sa loob ng maraming taon, at pagkatapos ng aking minamahal na asawa na pinapayagan akong magkaroon ng isang Arduino para sa Pasko napagpasyahan kong oras na upang gumawa ng isang bagay na kapaki-pakinabang (sa kanyang mga mata!) Kasama ang Arduino. Kaya narito mayroon kaming tuktok na: isang interface na batay sa web sa Arduino na pumapalit sa aking mga remote at naa-access mula sa aking panloob na network. Kapag nalaman ko kung bakit hindi papayagan ng aking kalasag na ethernet ang aking arduino na panatilihin ang isang sketch ay magsusulat ako ng isang bagong sketch na gumagamit ng ethernet na kalasag bilang web server, nangangahulugang hindi ko kailangan ng naka-install na Apache sa aking computer. Abangan, makakarating ako doon!

Hakbang 1: Mga Kinakailangan

Mga Pangangailangan
Mga Pangangailangan

Hardware: Gilid ng Arduino: Arduino - Gumagamit ako ng isang Arduino Uno R2 Breadboard - ang iyong lokal na tindahan ng electronics, o ang kusina kung nais mo ang isang tunay na enclosure ng mountboard ng breadboard - Gumamit ako ng isang lumang plastik na kaso na may isang transparent na takip ng Mga Bahagi: Infrared LED - Inutil ko isa mula sa isang sirang remote control (salamat mga bata!) Infrared Receiver - Nakuha ko ang minahan mula sa isang magic eye remote extender Transistor - Gumamit ako ng isang BC547 Resistor - Gumamit ako ng isang 1.5k ohm variable resistor na nakatakda sa 1k ohm Breadboard jumper wires - nakuha ko ang akin mula sa isang solidong core ng RJ45 cable reel Ang panig ng computer: Ang computer na gagamitin bilang server USB ay humantong sa Arduino Software: Arduino software - mula sa arduino.cc irremote library - mula sa https://www.arcfn.com/2009/08/multi-protocol- infrared-remote-library.html (salamat Ken, mahusay na trabaho!) Apache web server na naka-install ang PHP - apache.org Panloob na IP address - ang sa akin ay 192.168.0.9 Larawan ng iyong remote control - google o isang larawan na kuha sa iyong camera. Nai-save ko ang akin sa resolusyon na 200x600

Hakbang 2: Pagbuo ng Lupon

Pagbuo ng Lupon
Pagbuo ng Lupon

Ang paggamit ng isang breadboard para sa isang arduino ay lubos na inirerekomenda. Inilagay ko ang aking Arduino at isang breadboard sa parehong enclosure at na-wire ang lahat ng mga pin na regular kong ginagamit nang direkta sa breadboard nang permanente. Ginamit ang mga pin ng Arduino para sa proyektong ito: 5v, ground Digital pin 3, 11 (pin 3 ang kumokontrol sa IR LED, ang pin 11 ay kumokonekta sa IR receiver)

Hakbang 3: Skematika

Skematika
Skematika

Ang eskematiko na ito ay napaka-simple, 4 na bahagi at 6 na mga wire. Mga koneksyon sa IR LED: Ikonekta ang isa sa mga binti ng risistor sa Arduino digital pin 3 Ikonekta ang iba pang mga binti ng risistor sa base pin ng transistor (ang gitnang binti sa aking kaso) Ikonekta ang emitter ng transistor sa lupa Ikonekta ang kolektor ng transistor sa negatibong binti ng LED (maikling binti, patag na bahagi ng LED) Ikonekta ang positibong binti (mahabang binti, hubog na bahagi) ng LED sa 5v pin IR mga koneksyon ng receiver (kakailanganin mong hanapin ang pinout para sa ang iyong partikular na IR receiver): GND pin sa ground VS pin sa 5v VO pin sa Arduino digital pin 11

Hakbang 4: Magdagdag ng Irremote Library sa Arduino Software

Idagdag ang Irremote Library sa Arduino Software
Idagdag ang Irremote Library sa Arduino Software

Ang irremote ay isang mahusay na silid-aklatan na isinulat ni Ken Shirriff at magagamit mula sa kanyang blog sa https://www.arcfn.com/2009/08/multi-protocol-infrared-remote-library.html I-download ang silid-aklatan mula sa https:// arcfn.com / files / IRremote.zip at i-install ito tulad ng gagawin mo sa anumang iba pang library para sa arduino. Ang kanyang blog ay mayroong maraming kapaki-pakinabang na impormasyon tungkol sa library at kung paano ito mai-install.

Hakbang 5: Itala ang Mga Code Mula sa Iyong Mga Remote na Kontrol

Narito ang pagsisimula ng nakakasawa (ngunit hindi maiiwasan) na bahagi: Ang pagpindot sa bawat pindutan sa remote control, i-save ang output string at pagmamapa nito sa virtual na remote control. Minsan mo lang ito gawin, asahan na tatagal ng humigit-kumulang 20 minuto o higit pa. Magsimula ng isang text editor upang mai-save ang iyong output. Lumikha ng isang bagong dokumento at i-type ang bawat pindutan sa iyong remote control, isa bawat linya: Power Up Down Kaliwa Kanan.. at iba pa Simulan ang Arduino IDE at mag-click sa "Files-> Mga halimbawa-> IRremote-> IRrecvDump" at i-upload ito sa ang Arduino mo. Itatapon ng halimbawang ito ang mga malalayong code sa serial port. Simulan ang Serial port monitor at pindutin ang isang susi sa iyong remote control. Makakakita ka ng isang string na lilitaw sa serial monitor window: "Na-decode *: * (* bits)". Kopyahin ang linyang ito at i-save ito sa iyong dokumento sa naaangkop na linya. Ulitin hanggang maimbak mo ang lahat ng iyong mga key sa text file. Alam ko kung gaano kasaya ang kaunting ito, nagawa ko ito nang dalawang beses sa ngayon: P Kailangan namin ngayon na gumawa ng isang maliit na paghahanap at pagpapalit sa text file: maghanap para sa "Na-decode" palitan ng "" search for ": 0x" palitan ng "," search for "(" palitan ng "," search for "bits)" palitan ng "" Kaya para sa isang linya tulad ng: Naka-decode NEC: 0x000110 (15 bits) mayroon na tayong linya na nagsasabing: NEC, 000110, 15

Hakbang 6: Lumikha ng Web Page para sa Iyong Remote Control

Kailangan namin ngayong mapa ang mga pindutan sa iyong imahe ng iyong remote control.

Gumamit ako ng https://www.maschek.hu/imagemap/imgmap upang mapa ang mga pindutan at binago ang code na ibinibigay sa iyo ng website upang ito ay gumana.

Mag-click sa "Gumamit ng isang imahe sa iyong computer: [pumili ng file]", piliin ang iyong imahe, i-click ang [upload], i-click ang [tanggapin] I-drop ang mga parihaba, bilog atbp sa bawat pindutan. Para sa HREF ilagay /remote.php?command= at ang linya para sa pindutang iyon mula sa dokumento ng teksto halimbawa /remote.php?command=NEC, 000110, 15 Magiging matalino (at matulungan nang labis sa pag-debug) kung pinunan mo rin Alt: kasama ang pangalan ng pindutan ngunit nasa iyo iyon.

Ulitin para sa bawat pindutan.

Tapos na? Pagkatapos ay magpapatuloy kami. Sa ilalim ng pahinang iyon ay "Code", mag-click doon at magbubukas ang isang kahon na ipinapakita ang code para sa imagemap. Kopyahin iyon at i-paste ito sa isang bagong dokumento sa teksto. Ito ang pangunahing bahagi ng aming web page.

Narito ang aking kumpletong web page, palitan lamang ang…

gamit ang iyong sariling code sa itaas at i-save ito bilang remote.php sa iyong direktoryo sa web (/ var / www sa linux) kasama ang iyong mga imahe ng remote control. Baguhin ang mga linya para sa iyong sariling mga imahe:

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

Kontrol ng Arduino LED

Hakbang 7: I-upload ang Remote Control Code sa Iyong Arduino

I-upload ang Remote Control Code sa Iyong Arduino
I-upload ang Remote Control Code sa Iyong Arduino

Lumikha ng isang bagong sketch at i-paste ang sumusunod na code dito: / * * WebRemote * Ang isang IR LED ay dapat na konektado sa Arduino PWM pin 3. * Bersyon 0.1 Hulyo, 2009 * Ang code na ito na copyright Gregory Fenton, https://labby.co. uk / 2012/02 / irremote-arduino-experimentation / * copyright ng IRremote Library 2009 Ken Shirriff, https://arcfn.com * / # isama ang template ng inline na Print & operator << (Print & obj, T arg) {obj.print (arg); bumalik obj; } natapos ang boolean = false; char inData [64]; // Sukat bilang naaangkop byte index = 0; #define EOP "\ n" IRsend irsend; void setup () {Serial.begin (9600); Serial << "Inisyal na serial port" << EOP; } void loop () {String pch, sType, sTemp; char inChar, sTest, k; int sBits; mahabang sHex; int i, j; habang (1) {habang (Serial.available ()> 0) {inChar = Serial.read (); kung (index == 0) {pch = ""; } kung (inChar == '\ r' || inChar == '\ n' || inChar == '/') // EOP {natapos = totoo; index = 0; pahinga; } iba pa {kung (index <64) // Array size {pch + = inChar; index ++; }}} kung (natapos) {// I-parse ang data sa inData dito… pch.toUpperCase (); i = pch.indexOf (")! = -1? pch.indexOf ("): pch.indexOf (','); sType = pch.substring (0, i); ako ++; // laktawan ang ',' o '' // tinuturo ko na ngayon upang magsimula ang hex j = pch.lastIndexOf (")! = -1? pch.lastIndexOf ("): pch.lastIndexOf (','); // j ngayon ay tumuturo sa ',' o '' pagkatapos ng hex sHex = 0; sTemp = pch.substring (i, j); kung (sTemp.substring (0, 2) == String ("0X")) sTemp = sTemp.substring (2); para sa (i = 0; i <sTemp.length (); i ++) {k = sTemp ; kung (! ((k> = '0' && k = 'A' && k <= 'F'))) masira; sHex * = 16; kung (k> = '0' && k <= '9') sHex + = (k - '0'); kung hindi man kung (k> = 'A' && k <= 'F') sHex + = ((k - 'A') + 10); kung (! ((k> = '0' && k = 'A' && k <= 'F'))) masira; } sTemp = pch.substring (j + 1); sBits = 0; para sa (i = 0; i <sTemp.length (); i ++) {k = sTemp ; sBits * = 10; kung (k> = '0' && k <= '9') sBits + = (k - '0'); } kung (sType.length ()> 0) {Serial << pch << EOP << "Type ng code:" << sType << "Hex:"; Serial.print (sHex, HEX); Serial << "Bits:" << sBits; } sendIt (sType, sHex, sBits); pch = ""; natapos = 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); } iba pa kung (sType.equals (String ("RC5"))) {irsend.sendRC5 (sHex, sBits); } iba pa kung (sType.equals (String ("SONY"))) {irsend.sendSony (sHex, sBits); } iba pa kung (sType.equals (String ("NEC"))) {if (! i) irsend.sendNEC (sHex, sBits); } iba pa kung (sType.equals (String (""))) {Serial << "Delaying" << EOP; pagkaantala (450); } pagkaantala (30); }}

Hakbang 8: Kumonekta sa Web Server Mula sa Iyong Computer

Kumonekta sa Web Server Mula sa Iyong Computer
Kumonekta sa Web Server Mula sa Iyong Computer

.. o telepono o android o ipad o anupaman: pumunta sa https:// webserver IP address / remote.php sa iyong browser Para sa akin ang address ay https://192.168.0.9/remote.php ngunit ang iyo ay walang alinlangan na magkakaiba. Kung gumagana ang lahat dapat mong makita ang isang larawan ng iyong remote control na may mga pindutan na maaari mong i-click.

Hakbang 9: Opsyonal na Hakbang: I-edit ang Iyong Mga Host File upang Gawin itong Mas Madaling Gumamit

Opsyonal na Hakbang: I-edit ang Iyong Mga Host File upang Gawin itong Mas Madaling Gamitin
Opsyonal na Hakbang: I-edit ang Iyong Mga Host File upang Gawin itong Mas Madaling Gamitin

Ang isang hakbang na ginawa ko ay i-edit ang aking file ng mga host (/ etc / host sa linux, C: / Windows / System32 / Drivers / etc / host sa windows). Tandaan na ang file na ito ay maaari lamang mai-edit sa isang administrative command prompt (windows) o sa pamamagitan ng su (linux) Idagdag ang linya ip.add.re.ss remote palitan ip.add.re.ss sa server IP address at i-save ang file. Kakailanganin mong gawin ito sa bawat aparato na nais mong i-access ang web page na may maikling pangalan. Ngayon ay maaari mong ma-access ang remote gamit ang https://remote/remote.php Ito ang aking unang tamang pagtuturo, maging banayad at ipaalam sa akin kung mayroong anumang mga problema upang maayos ko ang mga ito.