Оглавление:

Пульт дистанционного управления на базе браузера Arduino (linux): 9 шагов (с изображениями)
Пульт дистанционного управления на базе браузера Arduino (linux): 9 шагов (с изображениями)

Видео: Пульт дистанционного управления на базе браузера Arduino (linux): 9 шагов (с изображениями)

Видео: Пульт дистанционного управления на базе браузера Arduino (linux): 9 шагов (с изображениями)
Видео: Продавец ДНС не хотел продавать нам видеокарту за 115к 😂😂😂 2024, Ноябрь
Anonim
Удаленное управление на базе браузера Arduino (linux)
Удаленное управление на базе браузера Arduino (linux)
Удаленное управление на базе браузера Arduino (linux)
Удаленное управление на базе браузера Arduino (linux)

У нас есть дети. Я их очень люблю, но они все время прячут пульт для спутникового и телевизионного вещания, когда включают детские каналы. После того, как это происходило ежедневно в течение нескольких лет, и после того, как моя дорогая жена разрешила мне купить Arduino на Рождество, я решил, что пришло время сделать что-то полезное (в ее глазах!) С Arduino. Итак, у нас есть кульминация этого: веб-интерфейс для Arduino, который заменяет мои пульты и доступен из моей внутренней сети. Когда я выясню, почему мой экран Ethernet не позволяет моему Arduino сохранять эскиз, я напишу новый эскиз, который использует экран Ethernet в качестве веб-сервера, то есть мне не нужен apache, установленный на моем компьютере. Следите за обновлениями, я доберусь туда!

Шаг 1. Предварительные требования

Предпосылки
Предпосылки

Аппаратное обеспечение: Сторона Arduino: Arduino - я использую макетную плату Arduino Uno R2 - ваш местный магазин электроники или кухню, если вам нужен настоящий макет Монтажный корпус - я использовал старый пластиковый корпус с прозрачной крышкой. один из сломанного пульта дистанционного управления (спасибо детям!) Инфракрасный приемник - я получил свой от транзистора удаленного расширителя Magic Eye - Я использовал резистор BC547 - Я использовал переменный резистор 1,5 кОм, установленный на 1 кОм Перемычки макетной платы - я получил свой от сплошного кабельного барабана RJ45 Сторона компьютера: компьютер для использования в качестве сервера USB-кабель к Arduino Программное обеспечение: программное обеспечение Arduino - из библиотеки arduino.cc irmote - с 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, используемые в этом проекте: 5 В, заземление Цифровые контакты 3, 11 (контакт 3 управляет ИК-светодиодом, контакт 11 подключается к ИК-приемнику)

Шаг 3: Схема

Схема
Схема

Эта схема очень проста, 4 компонента и 6 проводов. Подключение ИК-светодиода: Подключите одну из ножек резистора к цифровому выводу Arduino 3 Подсоедините другую ножку резистора к выводу базы транзистора (средняя ножка в моем случае) Подключите эмиттер транзистора к земле Подсоедините коллектор транзистора к отрицательной ножке светодиода (короткая ножка, плоская сторона светодиода) Подключите положительную ножку (длинная ножка, изогнутая сторона) светодиода к контактам 5-вольтового ИК-приемника (вам нужно будет найти распиновку для ваш конкретный ИК-приемник): вывод GND на землю VS вывод на 5 В вывод VO на цифровой вывод 11 Arduino

Шаг 4: добавьте библиотеку Irremote в программное обеспечение Arduino

Добавить библиотеку Irremote в программное обеспечение Arduino
Добавить библиотеку Irremote в программное обеспечение Arduino

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

Шаг 5: запишите коды с вашего пульта дистанционного управления

Вот начало скучной (но неизбежной) части: нажатие каждой кнопки на пульте дистанционного управления, сохранение выходной строки и отображение ее на виртуальном пульте дистанционного управления. Вам нужно сделать это только один раз, это займет около 20 минут или около того. Запустите текстовый редактор, чтобы сохранить результат. Создайте новый документ и напечатайте каждую кнопку на вашем пульте дистанционного управления, по одной в строке: Power Up Down Left Right … и так далее. Запустите Arduino IDE, нажмите «Files-> Examples-> IRremote-> IRrecvDump» и загрузите его в ваш Arduino. В этом примере удаленные коды будут сбрасываться в последовательный порт. Запустите монитор последовательного порта и нажмите кнопку на пульте дистанционного управления. Вы увидите строку, появившуюся в окне монитора последовательного порта: «Decoded *: * (* bits)». Скопируйте эту строку и сохраните в своем документе в соответствующей строке. Повторяйте, пока все ваши ключи не будут сохранены в текстовом файле. Я знаю, насколько интересен этот бит, я проделал это дважды: P Теперь нам нужно немного поискать и заменить в текстовом файле: поиск "Decoded" заменить на "" search for ": 0x" заменить на "," поиск "(" заменить на "," поиск "битов)" заменить на "" Итак, для такой строки, как: Decoded NEC: 0x000110 (15 бит), теперь у нас должна быть строка, которая говорит: 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

Шаг 7: загрузите код дистанционного управления на ваш Arduino

Загрузите код дистанционного управления в свой Arduino
Загрузите код дистанционного управления в свой Arduino

Создайте новый эскиз и вставьте в него следующий код: / * * WebRemote * ИК-светодиод должен быть подключен к контакту 3 PWM Arduino * Версия 0.1, июль 2009 г. * Авторские права на этот код принадлежат Грегори Фентону, https://labby.co. uk / 2012/02 / remmote-arduino -expermentation / * Авторские права на IRremote Library 2009 Ken Shirriff, https://arcfn.com * / #include template inline Print & operator << (Print & obj, T arg) {obj.print (arg); return obj; } логическое завершение = ложь; char inData [64]; // Соответствующий размер byte index = 0; #define EOP "\ n" IRsend irsend; void setup () {Serial.begin (9600); Последовательный << "Последовательный порт инициализирован" << EOP; } void loop () {Строка pch, sType, sTemp; char inChar, sTest, k; int sBits; long sHex; int i, j; в то время как (1) {в то время как (Serial.available ()> 0) {inChar = Serial.read (); если (индекс == 0) {pch = ""; } if (inChar == '\ r' || inChar == '\ n' || inChar == '/') // EOP {end = true; index = 0; перерыв; } else {if (index <64) // Размер массива {pch + = inChar; index ++; }}} if (finished) {// Разбираем данные в inData здесь… pch.toUpperCase (); я = pch.indexOf ('')! = -1? pch.indexOf (''): pch.indexOf (','); sType = pch.substring (0, i); i ++; // пропускаем ',' или '' // теперь i указывает на начало шестнадцатеричного j = pch.lastIndexOf ('')! = -1? pch.lastIndexOf (''): pch.lastIndexOf (','); // j теперь указывает на ',' или '' после шестнадцатеричного sHex = 0; sTemp = pch.substring (i, j); если (sTemp.substring (0, 2) == String ("0X")) sTemp = sTemp.substring (2); для (я = 0; я <sTemp.length (); я ++) {k = sTemp [я]; если (! ((k> = '0' && k = 'A' && k <= 'F'))) перерыв; sHex * = 16; если (k> = '0' && k <= '9') sHex + = (k - '0'); иначе, если (k> = 'A' && k <= 'F') sHex + = ((k - 'A') + 10); если (! ((k> = '0' && k = 'A' && k <= 'F'))) перерыв; } sTemp = pch.substring (j + 1); sBits = 0; для (я = 0; я <sTemp.length (); я ++) {k = sTemp [я]; sBits * = 10; если (k> = '0' && k <= '9') sBits + = (k - '0'); } if (sType.length ()> 0) {Serial << pch << EOP << "Тип кода:" << sType << "Hex:"; Серийный.печать (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:// IP-адрес веб-сервера / remote.php в своем браузере. Для меня адрес https://192.168.0.9/remote.php, но ваш, несомненно, будет другим. Если все работает, вы должны увидеть изображение вашего пульта дистанционного управления с кнопками, на которые вы можете нажимать.

Шаг 9. Необязательный шаг: отредактируйте файл Hosts, чтобы упростить его использование

Необязательный шаг: отредактируйте файл Hosts, чтобы упростить его использование
Необязательный шаг: отредактируйте файл Hosts, чтобы упростить его использование

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

Рекомендуемые: