Съдържание:

Дистанционно управление, базирано на браузър Arduino (Linux): 9 стъпки (със снимки)
Дистанционно управление, базирано на браузър Arduino (Linux): 9 стъпки (със снимки)

Видео: Дистанционно управление, базирано на браузър Arduino (Linux): 9 стъпки (със снимки)

Видео: Дистанционно управление, базирано на браузър Arduino (Linux): 9 стъпки (със снимки)
Видео: Экипаж (драма, фильм-катастрофа, реж. Александр Митта, 1979 г.) 2024, Ноември
Anonim
Дистанционно управление, базирано на браузър Arduino (Linux)
Дистанционно управление, базирано на браузър Arduino (Linux)
Дистанционно управление, базирано на браузър Arduino (Linux)
Дистанционно управление, базирано на браузър Arduino (Linux)

Имаме деца. Обичам ги на парчета, но продължават да крият дистанционното за сателит и телевизия, когато пускат детските канали. След като това се случва ежедневно в продължение на няколко години и след като скъпата ми съпруга ми позволи да направя Arduino за Коледа, реших, че е време да направя нещо полезно (в очите й!) С Arduino. Тук имаме кулминацията на това: уеб-базиран интерфейс към Arduino, който замества дистанционното ми управление и е достъпен от моята вътрешна мрежа. Когато разбера защо моят ethernet щит не позволява на моя arduino да запази скица, ще напиша нова скица, която използва ethernet щита като уеб сървър, което означава, че нямам нужда от инсталиран apache на моя компютър. Очаквайте, ще стигна!

Стъпка 1: Предпоставки

Предпоставки
Предпоставки

Хардуер: Arduino страна: Arduino - Използвам Arduino Uno R2 Breadboard - вашият местен магазин за електроника или кухнята, ако искате автентичен монтажен шкаф за платки - използвах стар пластмасов корпус с прозрачен капак Компоненти: Инфрачервен светодиод - разпаял съм един от счупено дистанционно управление (благодаря деца!) Инфрачервен приемник - получих моя от транзистор за дистанционно разширение с вълшебно око - използвах резистор BC547 - използвах променлив резистор 1.5k ohm, настроен на 1k ohm кабели за джъмпер - получих моето от твърдо ядро RJ45 кабелна макара Страна на компютъра: Компютърът да се използва като сървър USB кабел към софтуера Arduino: Софтуер Arduino - от библиотеката на arduino.cc unemote - от https://www.arcfn.com/2009/08/multi-protocol- infrared -remote -library.html (благодаря Кен, чудесна работа!) Уеб сървър на Apache с инсталиран PHP - apache.org Вътрешен IP адрес - моят е 192.168.0.9 Снимка на вашето дистанционно управление - google или снимка, направена с вашата камера. Запазих моята с резолюция 200x600

Стъпка 2: Изграждане на борда

Изграждане на борда
Изграждане на борда

Използването на макет за arduino е силно препоръчително. Монтирах моя Arduino и макет в същия корпус и свързах всички щифтове, които редовно използвам директно директно към дъската. Пиновете на Arduino, използвани за този проект: 5v, заземени цифрови пинове 3, 11 (щифт 3 контролира IR LED, щифт 11 се свързва с IR приемника)

Стъпка 3: Схематично

Схематично
Схематично

Тази схема е много проста, 4 компонента и 6 проводника. IR LED връзки: Свържете един от краката на резистора към Arduino цифров извод 3 Свържете другия крак на резистора към основния щифт на транзистора (средният крак в моя случай) Свържете емитер на транзистора към земята Свържете колектора на транзистора към отрицателния крак на светодиода (къс крак, плоска страна на светодиода) Свържете положителния крак (дълъг крак, извита страна) на светодиода към 5 -пиновите връзки на IR приемника (ще трябва да намерите извода за вашия конкретен IR приемник): GND щифт към земя VS щифт към 5v VO щифт към Arduino цифров щифт 11

Стъпка 4: Добавете библиотеката Irremote към софтуера Arduino

Добавете библиотеката Irremote към софтуера Arduino
Добавете библиотеката Irremote към софтуера Arduino

unremote е страхотна библиотека, написана от Кен Шириф и е достъпна от неговия блог на https://www.arcfn.com/2009/08/multi-protocol-infrared-remote-library.html Изтеглете библиотеката от https:// arcfn.com/files/IRremote.zip и го инсталирайте както всяка друга библиотека за arduino. В блога му има много полезна информация за библиотеката и как да я инсталирате.

Стъпка 5: Запишете кодовете от вашите дистанционни управления

Ето началото на скучната (но неизбежна) част: Натискането на всеки бутон на дистанционното управление, запазване на изходния низ и картографирането му към виртуалното дистанционно управление. Трябва да го направите само веднъж, очаквайте да отнеме около 20 минути. Стартирайте текстов редактор, за да запазите резултата си. Създайте нов документ и въведете всеки бутон на дистанционното управление, по един на ред: Захранване надолу вляво надясно.. и така нататък Стартирайте Arduino IDE и кликнете върху „Файлове-> Примери-> IRremote-> IRrecvDump“и го качете в вашия Arduino. Този пример ще изхвърли отдалечените кодове към серийния порт. Стартирайте монитора на серийния порт и натиснете клавиш на дистанционното управление. В прозореца на серийния монитор ще видите низ: "Decoded *: * (* bits)". Копирайте този ред и го запишете в документа си на съответния ред. Повторете, докато не запазите всичките си ключове в текстовия файл. Знам колко забавен е този бит, правех го два пъти досега: P Сега трябва да направим малко търсене и замяна в текстовия файл: търсене на „Decoded“replace с „„ search for “: 0x“replace с "," search for "(" replace with "," search for "bits)" replace with "" Така че за ред като: Decoded NEC: 0x000110 (15 bits) сега трябва да имаме ред, който казва: NEC, 000110, 15

Стъпка 6: Създайте уеб страница за вашето дистанционно управление

Сега трябва да картографираме бутоните на вашето изображение на вашето дистанционно управление.

Използвах https://www.maschek.hu/imagemap/imgmap за картографиране на бутоните и промених кода, който уебсайтът ви дава, за да работи.

Кликнете върху „Използвайте изображение на вашия компютър: [изберете файл]“, изберете вашето изображение, щракнете върху [качване], щракнете върху [приемете] Пуснете правоъгълници, кръгове и т.н. върху всеки бутон. За HREF поставете /remote.php?command= и реда за този бутон от текстовия документ например /remote.php?command=NEC, 000110, 15 Би било разумно (и ще помогнете изключително при отстраняването на грешки), ако попълните и Alt: с името на бутона, но това зависи от вас.

Повторете за всеки бутон.

Готово? След това ще продължим. В долната част на тази страница е „Код“, щракнете върху нея и ще се отвори поле, показващо кода за картинката. Копирайте го и го поставете в нов текстов документ. Това е основната част на нашата уеб страница.

Ето моята пълна уеб страница, просто заменете…

със собствения си код по -горе и го запазете като remote.php във вашата уеб директория (/var/www в linux) заедно с изображенията от вашето дистанционно управление. Променете редовете за вашите собствени изображения:

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

Arduino LED управление

Стъпка 7: Качете кода за дистанционно управление на вашия Arduino

Качете кода за дистанционно управление на вашия Arduino
Качете кода за дистанционно управление на вашия Arduino

Създайте нова скица и поставете следния код в нея:/ * * WebRemote * IR LED трябва да бъде свързан към PWM пин 3 на Arduino. * Версия 0.1 юли 2009 г. * Този код е авторско право Gregory Fenton, https://labby.co. uk/2012/02/unremote-arduino-експериментиране/ * IRremote библиотека авторски права 2009 Ken Shirriff, https://arcfn.com */#include template inline Print & operator << (Print & obj, T arg) {obj.print (arg); връщане obj; } логическо завършване = невярно; char inData [64]; // Размер според подходящия байтов индекс = 0; #define EOP "\ n" IRsend irsend; void setup () {Serial.begin (9600); Сериен << "Инициализиран сериен порт" << EOP; } void loop () {String pch, sType, sTemp; char inChar, sTest, k; int sBits; дълъг sHex; int i, j; while (1) {while (Serial.available ()> 0) {inChar = Serial.read (); if (индекс == 0) {pch = ""; } if (inChar == '\ r' || inChar == '\ n' || inChar == '/') // EOP {завърши = вярно; индекс = 0; прекъсване; } else {if (индекс <64) // Размер на масива {pch += inChar; индекс ++; }}} if (завършил) {// Анализирайте данните в inData тук… pch.toUpperCase (); i = pch.indexOf ('')! = -1? pch.indexOf (''): pch.indexOf (','); sType = pch.substring (0, i); i ++; // прескачане на ',' или '' // i сега сочи към началото на hex j = pch.lastIndexOf ('')! = -1? pch.lastIndexOf (''): pch.lastIndexOf (','); // j сега сочи към ',' или '' след шестнадесетичен sHex = 0; sTemp = pch.substring (i, j); if (sTemp.substring (0, 2) == String ("0X")) sTemp = sTemp.substring (2); за (i = 0; i <sTemp.length (); i ++) {k = sTemp ; if (! ((k> = '0' && k = 'A' && k <= 'F'))) прекъсване; sHex *= 16; if (k> = '0' && k <= '9') sHex += (k - '0'); иначе ако (k> = 'A' && k <= 'F') sHex + = ((k - 'A') + 10); if (! ((k> = '0' && k = 'A' && k <= 'F'))) прекъсване; } sTemp = pch.substring (j+1); sBits = 0; за (i = 0; i <sTemp.length (); i ++) {k = sTemp ; sBits *= 10; if (k> = '0' && k <= '9') sBits += (k - '0'); } if (sType.length ()> 0) {Serial << pch << EOP << "Тип код:" << sType << "Hex:"; Serial.print (sHex, HEX); Сериен << "Битове:" << sBits; } sendIt (sType, sHex, sBits); pch = ""; завърши = 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 ("")))) {Serial << "Delaying" << EOP; забавяне (450); } забавяне (30); }}

Стъпка 8: Свържете се към уеб сървъра от вашия компютър

Свържете се към уеб сървъра от вашия компютър
Свържете се към уеб сървъра от вашия компютър

.. или телефон или android или ipad или каквото и да е: отидете на https:// webserver IP address/remote.php във вашия браузър За мен адресът е https://192.168.0.9/remote.php, но вашият без съмнение ще бъде различен. Ако всичко работи, трябва да видите снимка на вашето дистанционно управление с бутони, върху които можете да кликнете.

Стъпка 9: Незадължителна Стъпка: Редактирайте вашия хост файл, за да го направите по -лесен за използване

Незадължителна стъпка: Редактирайте вашия хост файл, за да го направите по -лесен за използване
Незадължителна стъпка: Редактирайте вашия хост файл, за да го направите по -лесен за използване

Една стъпка, която направих, беше да редактирам файла с хостове (/etc/hosts в linux, C: / Windows / System32 / Drivers / etc / hosts в windows). Обърнете внимание, че този файл може да бъде редактиран само в административен команден ред (windows) или от su (linux) Добавете реда ip.add.re.ss дистанционно заменете ip.add.re.ss с IP адреса на сървъра и запишете файла. Трябва да направите това на всяко устройство, което искате да получите достъп до уеб страницата с краткото име. Сега можете да получите достъп до дистанционното с https://remote/remote.php Това е първият ми подходящ инструктаж, бъдете внимателни и ме уведомете, ако има някакви проблеми, за да мога да ги поправя.

Препоръчано: