Arduino и управление светом. Пишем код.

Итак заключительная статья, в которой заканчиваем реализацию основного функционала по управлению светом. В первой статье были описаны мои требования к управлению светом и перечислены все необходимые комплектующие. Во второй публикации описана схема подключения всех элементов. Настало время «подружить» эти компоненты.
Статью будет состоять из двух частей.

  1. Надо определить какие сигналы, какой код передаёт пульт дистанционного управления на ИК-приёмник в момент нажатия на кнопку.
  2. Код кнопки пульта будет известен из первой части. Будем считать, что дома (или не дома) у вас уже развёрнута локальная сеть и вы определились с тем, какой IP-адрес назначите Arduino. Пишем финальный код с комментариями.

Для ленивых уже готово видео по этой статье:

Первая часть.

Скачиваем среду разработки Arduino IDE для вашей версии операционной системы с оффициального сайта Arduino и устанавливаем (на этом я останавливаться не буду).
Все элементы, кроме блока питания, соединили и только после этого подключаем Arduino к usb-разъёму ПК или ноутбука.
Скачиваем библиотеку «IRremote» и кладём распакованное в C:\Users\ИМЯ_ПОЛЬЗОВАТЕЛЯ\Documents\Arduino\libraries. Так как эта библиотека конфликтовала со стандартной библиотекой расположенной в «C:\Program Files (x86)\Arduino\libraries\RobotIRremote», поэтому я удалил из директории «C:\Program Files (x86)\Arduino\libraries\RobotIRremote» папки Robot_Control, Robot_Motor и RobotIRremote, хотя по идее достаточно было бы удалить только папку «RobotIRremote». После того как конфликтующие библиотеки удалены, можно залить скетч для проверки, иными словами загрузить нашу программу в микроконтроллер. Для этого запускаем Arduino IDE, удаляем всё, что там уже написано и вставляем код (скетч №1 ) отсюда, или скачиваем скетч. Если надо лишь знать коды нажатия кнопок(а нам этого достаточно), то будет достаточно кода отсюда или отсюда.

После этого, надо указать порт, к которому подключена наша плата Arduino и модель самой платы. В моём случае это Arduino UNO. Для этого в Arduino IDE жмём «Инструменты» -> «Плата Arduino/Genuino UNO» -> «Arduino/Genuino UNO»:

команды, freebsd, убунту, настройка, установка, сервер, server, ubuntu, сервер, arduino, умный дом

А номер COM-порта указываем через «Инструменты» -> «Порт» -> Выбираем порт с платой:

команды, freebsd, убунту, настройка, установка, сервер, server, ubuntu, сервер, arduino, умный дом

И вот теперь можно нажать кнопку «Загрузка» в Arduino IDE. Немного ждём, когда успешно закончится загрузка скетча в микроконтроллер (несколько секунд), в это время на плате Arduino будут моргать светодиоды. После чего открываем в Arduino IDE «Инструменты» -> «Монитор порта». Сначала там будет пусто, но возьмём пульт, направим на ИК-приёмник и нажмём на кнопку пульта и увидим появляющиеся символы — это коды кнопок пульта.

команды, freebsd, убунту, настройка, установка, сервер, server, ubuntu, сервер, arduino, умный дом

Здесь на изображении видно, что я нажал всего 2-е кнопки на пульте. символы FFFFFFFF обозначают, что после нажатия кнопки, я продолжаю её держать. Таким образом, нажав на все кнопки пульта, можно узнать все их коды. Для наглядности я вывел их в таблицу, но Вам она будет бесполезна, так как значения кнопок будут другие. Эти значения нам будут нужны во второй части, запишите их, потому что совсем рядом

вторая часть.

Во второй части мы загрузим уже конечный скетч. В нём будут пояснения, по которым будет понятно, что вам надо будет изменить. Вот здесь скачиваем тот самый скетч, или здесь.

Поступаем с ним так же, как со скетчем из первой части этой статьи, то есть заливаем в Arduino UNO. После этого можно пробовать переключать реле кнопкой или пультом или через веб-интерфейс. В скетче я указал, что IP адрес у Arduino будет 10.36.1.52. Весь новый функционал для управления освещением в квартире я буду считать дополнительным и выносить в отдельные статьи, если будет время. А придумать можно много чего, например, управление звуком-хлопками, с помощью датчика движения или расстояния, использовать сенсорный в качестве кнопок и т.д.
Если есть полезная информация по модернизации схемы или кода, то добро пожаловать.
Интересует, реализовывал ли кто-то подобную схему на ESP8266 c GET-запросами?

Arduino и управление светом. Пишем код.: 2 комментария

  1. Nicolaich

    Будь добр, помоги с кодом…
    Задумка такая…
    Люстра два включения…
    Два реле, по одному на каждое управление люстрой…
    Две кнопки, по одной на каждое управление люстрой…
    ИК-приемник, управление с пульта двумя кнопками, по одной на каждое управление люстрой…
    Есть код включение с кнопки, есть код включение с пульта, по отдельности работаю, а вот соединить их не получается…
    Будь добр… Ардуинка про мини…

    1. vyslaf Автор записи

      Посмотри пример моего кода, там наверняка большой кусок можно взять, тем более желаемый функционал очень похож и код с комментариями.
      Но если кнопка у тебя с фиксацией положения, как обычные выключатели в квартире (НЕ как у меня в примере), то я от такой схемы отказался.

Добавить комментарий