Arduino brauzeriga asoslangan masofadan boshqarish pulti (linux): 9 qadam (rasmlar bilan)
Arduino brauzeriga asoslangan masofadan boshqarish pulti (linux): 9 qadam (rasmlar bilan)
Anonim
Arduino brauzeriga asoslangan masofadan boshqarish pulti (linux)
Arduino brauzeriga asoslangan masofadan boshqarish pulti (linux)
Arduino brauzeriga asoslangan masofadan boshqarish pulti (linux)
Arduino brauzeriga asoslangan masofadan boshqarish pulti (linux)

Bizning bolalarimiz bor. Men ularni chindan ham yaxshi ko'raman, lekin ular bolalar kanallarini qo'yganda, sun'iy yo'ldosh va televizor uchun masofadan boshqarish pultini yashirishadi. Bu bir necha yillar davomida har kuni sodir bo'lgandan keyin va mening sevikli rafiqam menga Rojdestvo uchun Arduino olib kelishga ruxsat berganidan so'ng, men Arduino bilan foydali narsa (uning nazarida!) Qilish vaqti keldi deb qaror qildim. Shunday qilib, biz bu erda eng yuqori nuqtaga egamiz: mening masofadan boshqarish pultlarim o'rnini bosadigan va mening ichki tarmog'im orqali kirish mumkin bo'lgan Arduino veb-interfeysi. Ethernet qalqoni nima uchun mening arduino eskizini saqlashga ruxsat bermasligini tushunganimda, men chekilgan qalqonni veb -server sifatida ishlatadigan yangi eskizni yozaman, ya'ni menga kompyuterda apache o'rnatilishi kerak emas. Kutib turing, men u erga boraman!

1 -qadam: old shartlar

Old shartlar
Old shartlar

Uskuna: Arduino tomoni: Arduino - Men Arduino Uno R2 Breadboard -dan foydalanayapman - sizning mahalliy elektronika do'koningiz yoki oshxona, agar siz haqiqiy non taxtasini o'rnatishni xohlasangiz - Men shaffof qopqoqli eski plastik qutini ishlatganman. singan masofadan boshqarish pultidan (bolalarga rahmat!) Infraqizil qabul qilgich - men o'zimni sehrli ko'zli masofadan uzatuvchi tranzistordan oldim - BC547 rezistoridan foydalandim - 1k ohmga teng bo'lgan 5k ohmli o'zgaruvchan qarshilikdan foydalanganman. qattiq yadroli RJ45 kabel g'altakidan Kompyuter tomoni: Kompyuter USB -server sifatida Arduino dasturiy ta'minotiga ulanadi: Arduino dasturi - arduino.cc masofaviy kutubxonasidan - https://www.arcfn.com/2009/08/multi-protocol- infrared -remote -library.html (rahmat Ken, ajoyib ish!) PHP o'rnatilgan Apache veb -serveri - apache.org Ichki IP -manzili - meniki 192.168.0.9 Masofadan boshqarish pultingizning tasviri - google yoki kamerangizda olingan rasm. Men o'zimni 200x600 o'lchamda saqladim

2 -qadam: Kengashni qurish

Kengashni qurish
Kengashni qurish

Arduino uchun taxtadan foydalanish tavsiya etiladi. Men Arduino va non taxtasini bir xil korpusga o'rnatdim va doimiy ravishda ishlatadigan barcha pimlarni to'g'ridan -to'g'ri non taxtasiga o'tkazdim. Ushbu loyihada ishlatiladigan Arduino pinlari: 5v, yerga o'rnatilgan raqamli pinlar 3, 11 (3 -pin IQ LEDni boshqaradi, 11 -pin IQ qabul qiluvchiga ulanadi)

3 -qadam: sxematik

Sxematik
Sxematik

Bu sxema juda oddiy, 4 ta komponent va 6 ta sim. IR LED ulanishlari: Rezistorning bir oyog'ini Arduino raqamli piniga ulang 3 Rezistorning ikkinchi oyog'ini tranzistorning asosiy piniga ulang (mening holatimda o'rta oyog'i) Transistor emitentini erga ulang Kollektorni ulang LEDning salbiy oyog'iga tranzistorni (qisqa oyog'i, LEDning tekis tomoni) LEDning musbat oyog'ini (uzun oyog'i, egri tomoni) 5V pinli IQ qabul qilgich ulanishlariga ulang (siz pinoutni topishingiz kerak) sizning IQ qabul qilgichingiz): GND pinini VS pinini 5v VO piniga Arduino raqamli pin 11 ga ulang.

4 -qadam: Arduino dasturiy ta'minotiga Irremote kutubxonasini qo'shing

Irremote kutubxonasini Arduino dasturiga qo'shing
Irremote kutubxonasini Arduino dasturiga qo'shing

irremote-bu Ken Shirriff tomonidan yozilgan ajoyib kutubxona va uning blogidan https://www.arcfn.com/2009/08/multi-protocol-infrared-remote-library.html kutubxonasini https:// arcfn saytidan yuklab olish mumkin..com/files/IRremote.zip -ni o'rnating va uni arduino uchun boshqa kutubxonalar kabi o'rnating. Uning blogida kutubxona va uni qanday o'rnatish haqida juda ko'p foydali ma'lumotlar bor.

5 -qadam: Masofadan boshqarish pultidagi kodlarni yozib oling

Mana zerikarli (lekin muqarrar) qismning boshlanishi: masofadan boshqarish pultidagi har bir tugmani bosish, chiqish chizig'ini saqlash va uni virtual masofadan boshqarish pultiga xaritalash. Siz buni faqat bir marta qilishingiz kerak, taxminan 20 daqiqa davom etadi. Chiqishlarni saqlash uchun matn muharririni ishga tushiring. Yangi hujjat yarating va masofadan boshqarish pultining har bir tugmachasini bitta qatorga yozing: Chapdan o'ngga, pastga va hokazo. Arduino IDE-ni ishga tushiring va "Fayllar-> Misollar-> IRremote-> IRrecvDump" -ni bosing va yuklang. sizning Arduino. Bu misol masofaviy kodlarni ketma -ket portga tashlaydi. Seriya port monitorini ishga tushiring va masofadan boshqarish pultidagi tugmani bosing. Siz ketma -ket monitor oynasida "Kod hal qilingan *: * (* bit)" qatorini ko'rasiz. Bu satrdan nusxa oling va hujjatingizga tegishli qatorga saqlang. Matn faylida barcha kalitlar saqlanmaguncha takrorlang. Men bilaman, bu bit qanchalik qiziqarli, men buni hozirgacha ikki marta qildim: P Endi biz matnli faylda biroz qidirish va almashtirishimiz kerak: "Dekodlangan" ni qidiring "" qidiring "bilan almashtiring: 0x" bilan almashtiring "," qidirish "(" bilan almashtirish "," bitlarni qidirish ")" "bilan almashtiring, shuning uchun: Dekodlangan NEC: 0x000110 (15 bit) kabi chiziq uchun endi bizda shunday chiziq bo'lishi kerak: NEC, 000110, 15

6 -qadam: Masofadan boshqarish pultingiz uchun veb -sahifa yarating

Endi biz sizning masofadan boshqarish pultingiz tasviridagi tugmachalarni xaritaga solishimiz kerak.

Men tugmachalarni xaritalash uchun https://www.maschek.hu/imagemap/imgmap -dan foydalandim va veb -sayt sizga ishlashini ta'minlaydigan kodni o'zgartirdim.

"Kompyuteringizda rasmdan foydalaning: [faylni tanlang]" tugmasini bosing, rasmingizni tanlang, [yuklash] ni bosing, [qabul qilish] tugmasini bosing. HREF uchun /remote.php? Alt: tugma nomi bilan, lekin bu sizga bog'liq.

Har bir tugma uchun takrorlang.

Hammasi tugadimi? Keyin davom etamiz. Sahifaning pastki qismida "Kod" bor, ustiga bosing va tasvir xaritasi uchun kod ko'rsatiladigan quti ochiladi. Buni nusxalash va yangi matnli hujjatga joylashtirish. Bu bizning veb -sahifamizning asosiy qismi.

Mana mening to'liq veb -sahifam, shunchaki uni o'zgartiring …

yuqoridagi o'z kodingiz bilan va masofadan boshqarish pultidagi tasvirlar bilan birga veb -katalogingizda (Linuxda/var/www) remote.php sifatida saqlang. O'z rasmlaringiz uchun chiziqlarni o'zgartiring:

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

Arduino LEDni boshqarish

7 -qadam: Masofadan boshqarish kodini Arduino -ga yuklang

Arduino -ga masofadan boshqarish kodini yuklang
Arduino -ga masofadan boshqarish kodini yuklang

Yangi eskiz yarating va unga quyidagi kodni qo'ying: Buyuk Britaniya/2012/02/irremote-arduino-tajriba/ * IRremote kutubxonasi mualliflik huquqi 2009 Ken Shirriff, https://arcfn.com */#inclack inline inline Print & operator << (Print & obj, T arg) {obj.print (arg); qaytish obj; } boolean end = false; char inData [64]; // Hajmi mos keladigan bayt indeksi = 0; #deop EOP "\ n" IRsend irsend; void setup () {Serial.begin (9600); Seriyali << "Serial port ishga tushirildi" << EOP; } void loop () {String pch, sType, sTemp; char inChar, sTest, k; int sBits; uzun sHeks; int i, j; while (1) {while (Serial.available ()> 0) {inChar = Serial.read (); agar (indeks == 0) {pch = ""; } if (inChar == '\ r' || inChar == '\ n' || inChar == '/') // EOP {end = true; indeks = 0; tanaffus; } else {if (indeks <64) // Massiv hajmi {pch += inChar; indeks ++; }}} if (end) {// inData -dagi ma'lumotlarni bu erda tahlil qiling… pch.toUpperCase (); i = pch.indexOf ('')! = -1? pch.indexOf (''): pch.indexOf (','); sType = pch.substring (0, i); i ++; // ',' yoki '' // ga o'ting // i endi oltilik j = pch.lastIndexOf ('') boshlanishini ko'rsatadi! = -1? pch.lastIndexOf (''): pch.lastIndexOf (','); // j endi hex sHex = 0 dan keyin ',' yoki '' ga ishora qiladi; sTemp = pch.substring (i, j); if (sTemp.substring (0, 2) == String ("0X")) sTemp = sTemp.substring (2); uchun (i = 0; i <sTemp.length (); i ++) {k = sTemp ; agar (! ((k> = '0' && k = 'A' && k <= 'F')))); sHex *= 16; agar (k> = '0' && k <= '9') sHex += (k - '0'); aks holda (k> = 'A' && k <= 'F') sHex + = ((k - 'A') + 10); agar (! ((k> = '0' && k = 'A' && k <= 'F')))); } sTemp = pch.substring (j+1); sBits = 0; uchun (i = 0; i <sTemp.length (); i ++) {k = sTemp ; sBits *= 10; agar (k> = '0' && k <= '9') sBits += (k - '0'); } if (sType.length ()> 0) {Seriyali << pch << EOP << "Kod turi:" << sType << "Hex:"; Serial.print (sHex, HEX); Seriyali << "bitlar:" << sBits; } sendIt (sType, sHex, sBits); pch = ""; tugadi = 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); } if if (sType.equals (String ("RC5"))) {irsend.sendRC5 (sHex, sBits); } if if (sType.equals (String ("SONY")))) {irsend.sendSony (sHex, sBits); } if if (sType.equals (String ("NEC")))) {if (! i) irsend.sendNEC (sHex, sBits); } else if (sType.equals (String ("")))) {Serial << "Kechiktirish" << EOP; kechikish (450); } kechiktirish (30); }}

8 -qadam: Kompyuteringizdan veb -serverga ulaning

Kompyuteringizdan veb -serverga ulaning
Kompyuteringizdan veb -serverga ulaning

.. yoki telefon yoki android yoki ipad yoki boshqa: brauzerda https:// veb -server IP -manzili/remote.php -ga o'ting, men uchun bu manzil https://192.168.0.9/remote.php, lekin sizniki boshqacha bo'lishi shubhasiz. Agar hamma narsa ishlayotgan bo'lsa, siz masofadan boshqarish pultining rasmini ko'rishingiz kerak, uni bosishingiz mumkin.

9 -qadam: Ixtiyoriy qadam: Xostlar faylini ishlatishni osonlashtirish uchun ularni tahrirlang

Ixtiyoriy qadam: Xostlar faylini ishlatishni osonlashtirish uchun ularni tahrirlang
Ixtiyoriy qadam: Xostlar faylini ishlatishni osonlashtirish uchun ularni tahrirlang

Men qilgan qadam mening xostlar faylini tahrir qilish edi (Linuxda/etc/hosts, Windows: C: / Windows / System32 / Drivers / etc / hosts). E'tibor bering, bu faylni faqat ma'muriy buyruq irodasi (Windows) yoki su (linux) yordamida tahrirlash mumkin ip.add.re.ss masofadan boshqarish pultini IP.add.re.ss bilan almashtiring va faylni saqlang.. Qisqa ismli veb -sahifaga kirishni xohlagan har bir qurilmada buni qilish kerak. Endi siz masofadan boshqarish pultiga https://remote/remote.php orqali kirishingiz mumkin, bu mening birinchi ko'rsatmam, muloyim bo'ling va agar biron bir muammo bo'lsa, menga xabar bering, shunda men ularni hal qila olaman.