İçindekiler:

Arduino Tarayıcı Tabanlı Uzaktan Kumanda (linux): 9 Adım (Resimli)
Arduino Tarayıcı Tabanlı Uzaktan Kumanda (linux): 9 Adım (Resimli)

Video: Arduino Tarayıcı Tabanlı Uzaktan Kumanda (linux): 9 Adım (Resimli)

Video: Arduino Tarayıcı Tabanlı Uzaktan Kumanda (linux): 9 Adım (Resimli)
Video: Patron görmesin :) 2024, Kasım
Anonim
Arduino Tarayıcı Tabanlı Uzaktan Kumanda (linux)
Arduino Tarayıcı Tabanlı Uzaktan Kumanda (linux)
Arduino Tarayıcı Tabanlı Uzaktan Kumanda (linux)
Arduino Tarayıcı Tabanlı Uzaktan Kumanda (linux)

Çocuklarımız var. Onları çok seviyorum ama çocuk kanallarını açtıklarında uydu ve TV için uzaktan kumandayı saklıyorlar. Bunun birkaç yıl boyunca her gün gerçekleşmesinden sonra ve sevgili karım Noel için bir Arduino'ya sahip olmama izin verdikten sonra, Arduino ile (onun gözünde!) faydalı bir şeyler yapmanın zamanının geldiğine karar verdim. İşte burada bunun doruk noktasına ulaştık: Arduino'ya uzaktan kumandalarımın yerini alan ve dahili ağımdan erişilebilen web tabanlı bir arayüz. Ethernet kalkanımın neden arduino'mun bir taslak tutmasına izin vermediğini anladığımda, ethernet kalkanını web sunucusu olarak kullanan yeni bir çizim yazacağım, yani bilgisayarımda Apache'nin kurulu olmasına ihtiyacım yok. Takipte kalın, oraya geleceğim!

Adım 1: Önkoşullar

Önkoşullar
Önkoşullar

Donanım: Arduino tarafı: Arduino - Arduino Uno R2 Breadboard kullanıyorum - yerel elektronik mağazanız veya otantik bir breadboard istiyorsanız mutfak Montaj muhafazası - Şeffaf kapaklı eski bir plastik kasa kullandım Bileşenler: Kızılötesi LED - Lehimini söktüm bir tanesi kırık bir uzaktan kumandadan (teşekkürler çocuklar!) Kızılötesi Alıcı - Benimkini sihirli bir göz uzaktan genişleticiden aldım Transistör - BC547 Direnç kullandım - 1k ohm'a ayarlanmış 1,5k ohm değişken direnç kullandım Breadboard atlama telleri - Benimkini aldım bir katı çekirdekli RJ45 kablo makarasından Bilgisayar tarafı: Sunucu olarak kullanılacak bilgisayar Arduino'ya USB kablosu Yazılım: Arduino yazılımı - arduino.cc uzaktan kumanda kitaplığından - https://www.arcfn.com/2009/08/multi-protocol- infrared-remote-library.html (teşekkürler Ken, harika çalışma!) PHP'nin kurulu olduğu Apache web sunucusu - apache.org Dahili IP adresi - benimki 192.168.0.9 Uzaktan kumandanızın resmi - google veya kameranızda çekilmiş bir resim. Benimkini 200x600 çözünürlükte kaydettim

Adım 2: Tahtayı Oluşturma

Yönetim Kurulunu Oluşturmak
Yönetim Kurulunu Oluşturmak

Bir arduino için bir breadboard kullanılması şiddetle tavsiye edilir. Arduino'mu ve bir devre tahtasını aynı muhafazaya monte ettim ve düzenli olarak kullandığım tüm pinleri doğrudan devre tahtasına kalıcı olarak bağladım. Bu proje için kullanılan Arduino pinleri: 5v, toprak Dijital pinler 3, 11 (pin 3 IR LED'i kontrol eder, pin 11 IR alıcısına bağlanır)

Adım 3: Şematik

Şematik
Şematik

Bu şematik çok basit, 4 bileşen ve 6 telli. IR LED bağlantıları: Direncin ayaklarından birini Arduino dijital pin 3'e bağlayın Direncin diğer ayağını transistörün taban pinine bağlayın (benim durumumda orta bacak) Transistörün emitörünü toprağa bağlayın Kolektörü bağlayın transistörün LED'in negatif ayağına (kısa bacak, LED'in düz tarafı) LED'in pozitif ayağını (uzun bacak, kavisli taraf) 5v pin IR alıcı bağlantılarına bağlayın (pin çıkışını bulmanız gerekir) sizin özel IR alıcınız): GND pinden toprağa VS pinden 5v VO pinden Arduino dijital pin 11'e

Adım 4: Arduino Yazılımına Uzak Kitaplık Ekleme

Arduino Yazılımına Irremote Library Ekleme
Arduino Yazılımına Irremote Library Ekleme

irremote, Ken Shirriff tarafından yazılmış harika bir kütüphanedir ve https://www.arcfn.com/2009/08/multi-protocol-infrared-remote-library.html adresindeki blogundan edinilebilir. Kütüphaneyi https://arcfn adresinden indirin..com/files/IRremote.zip ve arduino için başka herhangi bir kitaplık gibi kurun. Blogunda kütüphane ve nasıl kurulacağı hakkında birçok yararlı bilgi var.

Adım 5: Uzaktan Kumandalarınızdan Kodları Kaydedin

Sıkıcı (ama kaçınılmaz) bölümün başlangıcı: Uzaktan kumandadaki her düğmeye basmak, çıktı dizesini kaydetmek ve sanal uzaktan kumandaya eşlemek. Sadece bir kez yapmanız gerekiyor, yaklaşık 20 dakika kadar sürmesini bekleyin. Çıktınızı kaydetmek için bir metin düzenleyici başlatın. Yeni bir belge oluşturun ve her satıra bir tane olmak üzere uzaktan kumandanızdaki her düğmeyi yazın: Gücü Açın Sol Sağa.. et cetera Arduino IDE'yi başlatın ve "Dosyalar->Örnekler->IRremote->IRrecvDump" üzerine tıklayın ve yükleyin senin Arduino'n. Bu örnek, uzak kodları seri bağlantı noktasına atacaktır. Seri bağlantı noktası monitörünü başlatın ve uzaktan kumandanızdaki bir tuşa basın. Seri monitör penceresinde bir dizenin göründüğünü göreceksiniz: "Kodu çözülmüş *: * (* bit)". Bu satırı kopyalayın ve belgenize uygun satıra kaydedin. Tüm anahtarlarınızı metin dosyasında depolayana kadar tekrarlayın. Bu parçanın ne kadar eğlenceli olduğunu biliyorum, şimdiye kadar iki kez yaptım:P Şimdi metin dosyasında biraz arama ve değiştirme yapmamız gerekiyor: "Kodu çözülmüş" ile değiştir "" ile ara ": 0x" ile değiştir ", " arama " (" " ile değiştir ", " " bitleri ara)" yerine "" ile değiştir Bu nedenle, aşağıdaki gibi bir satır için: Çözülmüş NEC: 0x000110 (15 bit) artık şunu yazan bir satırımız olmalıdır: NEC, 000110, 15

6. Adım: Uzaktan Kumandanız için Web Sayfasını Oluşturun

Şimdi uzaktan kumandanızın görüntüsünün üzerindeki düğmeleri eşleştirmemiz gerekiyor.

Düğmeleri eşleştirmek için https://www.maschek.hu/imagemap/imgmap kullandım ve çalışmasını sağlamak için web sitesinin size verdiği kodu değiştirdim.

"Bilgisayarınızda bir resim kullan: [dosya seç]"e tıklayın, resminizi seçin, [yükle]'ye tıklayın, [kabul et]'e tıklayın Her bir düğmenin üzerine dikdörtgenler, daireler vb. bırakın. HREF için metin belgesinden /remote.php?command= ve bu düğmenin satırını koyun, örneğin /remote.php?command=NEC, 000110, 15 Ayrıca doldurmanız akıllıca olacaktır (ve hata ayıklamaya çok yardımcı olacaktır). Alt: buton ismiyle ama bu size kalmış.

Her düğme için tekrarlayın.

Hepsi tamam? Sonra devam edeceğiz. Bu sayfanın altında "Kod" var, buna tıklayın ve görüntü haritasının kodunu gösteren bir kutu açılacaktır. Bunu kopyalayın ve yeni bir metin belgesine yapıştırın. Bu, web sayfamızın ana kısmıdır.

İşte tam web sayfam, sadece…

yukarıdaki kendi kodunuzla ve uzaktan kumanda görüntülerinizle birlikte web dizininizde (/var/www) remote.php olarak kaydedin. Kendi resimleriniz için çizgileri değiştirin:

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

Arduino LED kontrolü

Adım 7: Uzaktan Kumanda Kodunu Arduino'nuza Yükleyin

Uzaktan Kumanda Kodunu Arduino'nuza Yükleyin
Uzaktan Kumanda Kodunu Arduino'nuza Yükleyin

Yeni bir eskiz oluşturun ve aşağıdaki kodu içine yapıştırın: /* * WebRemote * Arduino PWM pin 3'e bir IR LED bağlanmalıdır. * Sürüm 0.1 Temmuz, 2009 * Bu kodun telif hakkı Gregory Fenton, https://labby.co. uk/2012/02/irremote-arduino-experimentation/ * IRremote Library telif hakkı 2009 Ken Shirriff, https://arcfn.com */ #include şablonu satır içi Yazdır ve işleci <<(Yazdır venesne, Tar arg) { obj.print(arg); dönüş nesnesi; } boole sonu = yanlış; char inData[64]; // Uygun bayt indeksi olarak boyutlandır = 0; #define EOP "\n" IRsend irsend; geçersiz kurulum() { Serial.begin(9600); Seri << "Seri bağlantı noktası başlatıldı" << EOP; } void loop() { String pch, sType, sTemp; char inChar, sTest, k; int sBit'ler; uzun sHex; int i, j; while(1) { while(Serial.available() > 0) { inChar = Seri.read(); if(index == 0) { pch = ""; } if(inChar == '\r' || inChar == '\n' || inChar == '/') // EOP { sona erdi = doğru; indeks = 0; kırmak; } else { if(index < 64) // Dizi boyutu { pch += inChar; dizin++; } } } if(end) { // inData içindeki verileri burada ayrıştırın… pch.toUpperCase(); ben = pch.indexOf(' ') != -1 ? pch.indexOf(' '): pch.indexOf(', '); sType = pch.substring(0, i); ben++; // ', ' veya ' ' öğesini atla // şimdi onaltılının başlangıcını işaret ediyorum j = pch.lastIndexOf(' ') != -1 ? pch.lastIndexOf(' '): pch.lastIndexOf(', '); // j şimdi onaltılı sHex = 0'dan sonra ', ' veya ' ' işaretini gösteriyor; 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'))) ara; sHex *= 16; if(k >= '0' && k <= '9') sHex += (k - '0'); else if (k >= 'A' && k <= 'F') sHex += ((k - 'A') + 10); if(!((k >= '0' && k = 'A' && k <= 'F'))) ara; } sTemp = pch.substring(j+1); sBit = 0; for(i = 0; i < sTemp.length(); i++) { k = sTemp; sBit *= 10; if(k >= '0' && k <= '9') sBits += (k - '0'); } if(sType.length()>0) { Seri << pch << EOP << "Kod tipi: "<< sType << " Onaltılı: "; Serial.print(sHex, HEX); Seri << " Bitler: " << sBits; } sendIt(sType, sHex, sBits); pch = ""; sona erdi = 0; } } } void sendIt(String sType, uzun sHex, int sBits) { for(int i = 0; i < 2; i++) { if(sType.equals(String("RC6"))) { irsend.sendRC6(sHex), sBit'ler); } 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(""))) { Seri << "Gecikme" << EOP; gecikme(450); } gecikme(30); } }

Adım 8: Bilgisayarınızdan Web Sunucusuna Bağlanın

Bilgisayarınızdan Web Sunucusuna Bağlanın
Bilgisayarınızdan Web Sunucusuna Bağlanın

.. veya telefon veya android veya ipad veya her neyse: tarayıcınızda https://webserver IP address/remote.php adresine gidin Benim için adres https://192.168.0.9/remote.php ama sizinki şüphesiz farklı olacaktır. Her şey çalışıyorsa, üzerine tıklayabileceğiniz düğmeler ile uzaktan kumandanızın bir resmini görmelisiniz.

9. Adım: İsteğe Bağlı Adım: Kullanımını Kolaylaştırmak için Hosts Dosyanızı Düzenleyin

İsteğe Bağlı Adım: Kullanımını Kolaylaştırmak için Hosts Dosyanızı Düzenleyin
İsteğe Bağlı Adım: Kullanımını Kolaylaştırmak için Hosts Dosyanızı Düzenleyin

Yaptığım bir adım, hosts dosyamı düzenlemekti (linux'ta/etc/hosts, Windows'ta C:\Windows\System32\Drivers\etc\hosts). Bu dosyanın yalnızca bir yönetici komut isteminde (windows) veya su (linux) tarafından düzenlenebileceğini unutmayın. ip.add.re.ss remote satırını ekleyin ip.add.re.ss'yi sunucu IP adresiyle değiştirin ve dosyayı kaydedin. Bunu, kısa adla web sayfasına erişmek istediğiniz her cihazda yapmanız gerekir. Artık uzaktan kumandaya https://remote/remote.php ile erişebilirsiniz. Bu benim ilk uygun talimatım, nazik olun ve herhangi bir sorun varsa bana bildirin ki onları düzeltebileyim.

Önerilen: