История это началась давно и сегодня наконец я осуществил то, что хотел.
А хотел я просто включить/выключить телевизор, используя инфракрасный диод. У меня валяется старый, выпаянный непонятно откуда диод, но что-то у меня с ним не пошли дела.
Первым делом ищу в Чип и Дип'е, там удобный поиск и картиночки есть. 40 рублей за диод 5 мм 940 нм. Смотрю на алиэксперсс, что? 48 рублей за 5 пар излучателей и приёмников. Характеристики не указаны, но похоже на то, что надо. Из-за 50 рублей тревожить продавца я не стану конечно. Беру у него в нагрузку логический анализатор и USB Blaster для прошивки ПЛИС. Про бластер пока ничего не скажу. ПЛИС сложная штука, но я обязательно попробую, когда у меня появится отладочная плата. Штука это не дешёвая, но в пределах тысячи можно найти. Сойдёт для экспериментов.
Готово, жду товар.
Теперь история с инфракрасный диодом. В пакетике 5 чёрных и пять прозрачных диодов. Не мог понять сначала кто из них кто, т.к. не работал ни чёрный ни прозрачный. Код включения/выключения для Sony простой. Не помню, где я увидел его, но использовал без изменения.
#include <IRremote.h>
IRsend irsend;
void setup()
{
}
void loop() {
for (int i = 0; i < 3; i++) {
irsend.sendSony(0xa90, 12);
delay(40);
}
}
Библиотека IRemote стандартная, если я не ошибаюсь. С её помощью я считывал как-то коды с пультов, изучал это дело. Ну как изучал, игрался. На самом деле вопрос этот не простой. Если изучать, то надо потратить немало времени. Я не задумывался раньше как работают пульты, а они передают сигналы используя специальные протоколы. У каждой крупной фирмы свой протокол. Есть протокол фирмы NEC, который многие используют. У Sony конечно свой протокол, в этом можно было не сомневаться. В коде видно, что библиотека использует метод sendSony. Можно посмотреть исходники библиотеки и убедиться, что она поддерживает много производителей.
Так вот. Рылся я в интернете, чтобы найти схему, как подключить инфракрасный диод к ардуино и наткнулся на страницу adafruit. Куда же без них? Что бы я делал? =)
Раздел на странице "Sending IR Codes". В этом разделе есть схема состоящая из транзистора 2N2222, резистора 1/4 Вт 470 Ом и инфракрасного диода. Нужно три проводка. Один провод на 3-ий пин ардуино, +5 В и GND. Отмечу, что речь идёт об ардуино UNO. Всяческие нано, мини, мега и т.п. могут отличаться в плане количества штырей и их назначения. Почему 3-ий и он не обозначен в программе? Он задан в самой библиотеке. Точно не скажу почему. Это связано с ШИМ, частотами, циклами, таймерами и т.п. Я не особо в этом разбираюсь пока.
Повезло, что транзистор у меня такой был. Можно и купить, они копейки стоят, но это заняло бы время. А тут на тебе, всё уже есть. Приятно.
В примере, кстати, используется другая библиотека - IRLib. У меня и без неё работает.
Покажу как видит сигнал включения/выключения логический анализатор. В настройках захвата указал 10 секунд, 100 КГц. На первой картинке видно, что между передачами проходит 40 микросекунд, как и задано в программе.
А хотел я просто включить/выключить телевизор, используя инфракрасный диод. У меня валяется старый, выпаянный непонятно откуда диод, но что-то у меня с ним не пошли дела.
Первым делом ищу в Чип и Дип'е, там удобный поиск и картиночки есть. 40 рублей за диод 5 мм 940 нм. Смотрю на алиэксперсс, что? 48 рублей за 5 пар излучателей и приёмников. Характеристики не указаны, но похоже на то, что надо. Из-за 50 рублей тревожить продавца я не стану конечно. Беру у него в нагрузку логический анализатор и USB Blaster для прошивки ПЛИС. Про бластер пока ничего не скажу. ПЛИС сложная штука, но я обязательно попробую, когда у меня появится отладочная плата. Штука это не дешёвая, но в пределах тысячи можно найти. Сойдёт для экспериментов.
Готово, жду товар.
Получил на почте коробочку. Первым делом проверил анализатор. Анализатор этот копия продукта от компании Saleae. Моя версия 8-и канальная 24-х мегагерцовая. Зашёл на их сайт, скачал программное обеспечение. Установил, подключил анализатор, программа его видит. Драйвера устанавливаются с приложением. Решил проанализировать что-нибудь. Есть у меня преобразователь USB TTL-UART на микросхеме CH340G. Подключил Tx и землю к анализатору, этого должно хватить чтобы проверить передачу данных модуля. Просто воткнул в usb и нажал "Start Simulation". Запустил Putty. Выбрал Serial, COM порт который создал модуль и открыл соединение. Открылось чёрное окно Putty. Я набрал "Hello", но текст не отобразился. На этом я закрыл путти и решил посмотреть, что там анализатор захватил. В приложении были сигналы на канале подключённом к Tx. Программа позволяет выбирать из пары десятков анализаторов. Я выбрал Serial и на панели "Decoded Protocols" я увидел своё Hello посимвольно. Хорошо. Работает.
Теперь история с инфракрасный диодом. В пакетике 5 чёрных и пять прозрачных диодов. Не мог понять сначала кто из них кто, т.к. не работал ни чёрный ни прозрачный. Код включения/выключения для Sony простой. Не помню, где я увидел его, но использовал без изменения.
#include <IRremote.h>
IRsend irsend;
void setup()
{
}
void loop() {
for (int i = 0; i < 3; i++) {
irsend.sendSony(0xa90, 12);
delay(40);
}
}
Библиотека IRemote стандартная, если я не ошибаюсь. С её помощью я считывал как-то коды с пультов, изучал это дело. Ну как изучал, игрался. На самом деле вопрос этот не простой. Если изучать, то надо потратить немало времени. Я не задумывался раньше как работают пульты, а они передают сигналы используя специальные протоколы. У каждой крупной фирмы свой протокол. Есть протокол фирмы NEC, который многие используют. У Sony конечно свой протокол, в этом можно было не сомневаться. В коде видно, что библиотека использует метод sendSony. Можно посмотреть исходники библиотеки и убедиться, что она поддерживает много производителей.
Так вот. Рылся я в интернете, чтобы найти схему, как подключить инфракрасный диод к ардуино и наткнулся на страницу adafruit. Куда же без них? Что бы я делал? =)
Раздел на странице "Sending IR Codes". В этом разделе есть схема состоящая из транзистора 2N2222, резистора 1/4 Вт 470 Ом и инфракрасного диода. Нужно три проводка. Один провод на 3-ий пин ардуино, +5 В и GND. Отмечу, что речь идёт об ардуино UNO. Всяческие нано, мини, мега и т.п. могут отличаться в плане количества штырей и их назначения. Почему 3-ий и он не обозначен в программе? Он задан в самой библиотеке. Точно не скажу почему. Это связано с ШИМ, частотами, циклами, таймерами и т.п. Я не особо в этом разбираюсь пока.
Повезло, что транзистор у меня такой был. Можно и купить, они копейки стоят, но это заняло бы время. А тут на тебе, всё уже есть. Приятно.
В примере, кстати, используется другая библиотека - IRLib. У меня и без неё работает.
Покажу как видит сигнал включения/выключения логический анализатор. В настройках захвата указал 10 секунд, 100 КГц. На первой картинке видно, что между передачами проходит 40 микросекунд, как и задано в программе.
Если посмотреть на сигнал, то видно, что начиная со второго идёт передача нулей и единиц данных. Единица в два раза длиннее нуля. 12 бит, 1010 1001 0000 - это 0xA90, как и задано в программе.
На этом, пожалуй, закончу. Всего доброго!
Комментариев нет:
Отправить комментарий