Универсальный пульт Arduino + Bluetooth + ИК + Android

Аватара
Автор темы
Дим M
Администратор
Администратор
Сообщения: 1154
Репутация: 74
С нами: 5 лет 5 месяцев

Универсальный пульт Arduino + Bluetooth + ИК + Android

Сообщение #1 Дим » 13 января 2018, 22:57

Наткнулся в интернете на интересную статью в которой описывалось, как сделать универсальный пульт на Arduino. С помощью его можно управлять множеством устройств со смартфона. И решил себе сделать такой же, так как надобность в таком присутствует (телевизор и DVBT2 приставка). Для реализации "проекта" я использовал:
1. Arduino Nano
2. Bluetooth модуль HC-06
3. ИК-излучатель (передатчик) 5MM 940 L-53F3C, можно любой доступный
4. Кусок кабель канала
5. Кнопочный переключатель / выключатель
6. Расходники - проводочки...

Схема соединения не замысловатая

Схема соединения универсальный пульт Arduino + Bluetooth + ИК + Android.jpg
Схема соединения универсальный пульт Arduino + Bluetooth + ИК + Android
Схема соединения универсальный пульт Arduino + Bluetooth + ИК + Android.jpg (95.02 КБ) 473 просмотра


С одной стороны контроллера впаял ИК передатчик и подложил под него кусочек антистатического пакетика. С другой стороны находится Bluetooth модуль. А с боку - выключатель RX / TX соединения, на тот случай если нужно будет перезалить скетчь в контроллер.

Универсальный пульт Arduino + Bluetooth + ИК.JPG
Универсальный пульт Arduino + Bluetooth + ИК
Универсальный пульт Arduino + Bluetooth + ИК.JPG (149.15 КБ) 475 просмотров


Всё это хозяйство вставляем в отрезок кабель канала и...

Универсальный пульт Arduino + Bluetooth + ИК 1.JPG
Универсальный пульт Arduino + Bluetooth + ИК
Универсальный пульт Arduino + Bluetooth + ИК 1.JPG (163.9 КБ) 475 просмотров


...закрываем крышкой, с заранее сделанным в ней отверстием.

Универсальный пульт Arduino + Bluetooth + ИК 2.JPG
Универсальный пульт Arduino + Bluetooth + ИК
Универсальный пульт Arduino + Bluetooth + ИК 2.JPG (156.68 КБ) 475 просмотров


Далее заливаем в контроллер нижерасположенный скетч, предварительно изменив в нём коды кнопок на свои. Как узнать коды описано в статье Определяем код кнопок ИК пульта. Используя пример IRrecvDump библиотеки IRremote не составит труда узнать коды.

Код: Выделить всё

#include <IRremote.h>
IRsend irsend;

const unsigned long codes[] = { 0, 0xFF5AA5, 0xFF728D, 0xFFCA35, 0xFF0AF5, 0xFF08F7, 0xFF12ED, 0xFFEA15, 0xFF2AD5, 0xFF28D7, 0xFF18E7, 0xFFF20D, 0xFF32CD, 0xFF30CF, 0xFF708F, 0xFF1AE5, 0xFFF00F, 0xFF8877, 0xFF9867, 0xFF629D, 0xFF609F,
                                   0xFFA05F, 0xFFDA25, 0xFF58A7, 0xFFD827, 0xFFB04F, 0xFF6897, 0xFF48B7, 0xFFD827, 0xFF609F, 0xFFDA25, 0xFF6A95, 0xFFA857, 0xFF6897, 0xFFD22D, 0xFFE21D, 0xFF22DD, 0xFF10EF, 0xFF4AB5, 0xFF20DF, 0xFFE01F,
                                   0xFFD02F, 0xFFC23D, 0xFF02FD, 0xFF00FF, 0xFFC03F}; //коды приставки
                                   
unsigned int power
[68]={4400,4450,500,1650,500,1700,450,1700,500,600,500,600,500,600,500,600,500,600,500,1650,500,1700,450,1700,500,600,500,600,500,600,500,600,500,600,500,550,550,1650,500,600,500,600,500,600,500,600,500,600,500,600,500,1700,450,600,500,1700,500,1650,500,1700,450,1700,500,1700,450,1700,500};
void S46() {irsend.sendRaw(power, 68, 32);} // код телевизора

unsigned long FindCode(int commandReceivedThroughSerial)
{
  //if (commandReceivedThroughSerial > 20 && commandReceivedThroughSerial < 47)
 // return 0xFF728D;
  if (commandReceivedThroughSerial > 0 && commandReceivedThroughSerial < 46)
  return codes[commandReceivedThroughSerial];
  return 0xFFFFFFFF;
}

void SendCode(unsigned long code, int commandReceivedThroughSerial)
{
  irsend.sendNEC(code, 32);
  delay(200); 
  Serial
.print(commandReceivedThroughSerial);
}

void setup() 
{
  Serial.begin(9600);
  Serial.setTimeout(4);
}

void loop()
{
  if (Serial.available())
  { 
    int a 
= Serial.parseInt(); 
    unsigned long code 
= FindCode(a);
    if(code != 0xFFFFFFFF)
    SendCode(code,a);
    if (a==46) {S46();}
  }


C Arduino закончили, располагаем девайс напротив ИК приемников (телевизор, приставка) и переходим к созданию приложения для Android.

Не пугайтесь, ни чего сложного в этом нет, так как мы будем использовать конструктор приложений App Inventor. Для работы с ним нужна авторизация через Google аккаунт. В конце статьи скачиваем .aia файл мною изготовленного приложения. И загружаем на сервис:

загружаем на сервис App Inventor.jpg
загружаем на сервис App Inventor
загружаем на сервис App Inventor.jpg (25.25 КБ) 475 просмотров


Далее вам нужно будет изменить адрес Bluetooth модуля на свой. Для этого выбираем проект Pult, да и выбирать не придётся, после загрузки он должен автоматически открыться. В верхней панели сервиса нажимаем "Блоки" и в блоке что указан на скриншоте делаем изминения:

изменить адрес Bluetooth модуля.jpg
изменить адрес Bluetooth модуля


Теперь скачиваем приложении к себе на компьютер и устанавливаем на смартфон:

скачиваем приложении к себе на компьютер.jpg
скачиваем приложении к себе на компьютер
скачиваем приложении к себе на компьютер.jpg (30.54 КБ) 475 просмотров


Либо сразу на смартфон - выбрав первый пункт - ...создать QR код..

Открыв приложение вы увидите такой экран:

Приложение универсальный пульт.png
Приложение универсальный пульт
Приложение универсальный пульт.png (84.27 КБ) 475 просмотров


Если Bluetooth не включен - появится сообщение с предложением сделать это. Согласившись с предложенным система включит его и через некоторое время кнопка Bluetooth в приложении, с красного измениться на зелёный. Что означает что произошла связь приложения с нашим девайсом. Для разъединения используем эту же кнопку.

При разработке приложения я использовал фотографию пульта от DVBT2 приставки:

пульта от DVBT2 приставки.png
пульта от DVBT2 приставки
пульта от DVBT2 приставки.png (56.62 КБ) 475 просмотров


Добавив на пульт ещё две кнопки - для выключения телевизора и соединения / разъединения смартфона с нашим девайсом. Вы же можете сделать что то своё.
Вложения
Pult.zip
(348.9 КБ) 29 скачиваний
i love you mxIni Mysql

! ! !


  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Программирование»

Кто сейчас на форуме

Сейчас этот раздел просматривают: 1 гость