Электротехнический интернет-журнал Electrik.info

"Электрик Инфо" - онлайн журнал про электричество. Теория и практика. Обучающие статьи, примеры, технические решения, схемы, обзоры интересных электротехнических новинок. Уроки, книги, видео. Профессиональное обучение и развитие. Сайт для электриков и домашних мастеров, а также для всех, кто интересуется электротехникой, электроникой и автоматикой.
 

 

  • Как отличить хороший самозажимной клеммник от подделки
  • Почему горят ТЭНы на водонагревателях и стиральных машинах и как их заменить
  • Стрелочные и цифровые мультиметры - достоинства и недостатки
  • Что такое биодинамическое освещение
  • Устройство плавного пуска электродвигателя: назначение, устройство и принцип работы, преимущества, схема подключения
  • Как выбрать настольную лампу для работы или учёбы
  • Электрик  

    Электрик Инфо » Устройства автоматики, Схемы на микроконтроллерах » Дистанционное управление микроконтроллером: ИК-пульт, Arduino, ESP8266, 433 мГц
    Количество просмотров: 29305
    Комментарии к статье: 0


    Дистанционное управление микроконтроллером: ИК-пульт, Arduino, ESP8266, 433 мГц

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

    Дистанционное управление микроконтроллером

    Виды

    Существует два основных вида дистанционной связи:

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

    Беспроводной. В этом варианте не требуется электрического соединения управляющих и исполнительных цепей. В беспроводной схем есть два устройства: передатчик или пульт дистанционного управления (ПДУ) и приемник, который входит в состав управляемой цепи. Беспроводное управление в свою очередь распространено в двух вариантах:

    • По оптическому сигналу. Такие системы есть в каждом доме, так вы управляете работой телевизора, кондиционера и другой бытовой техники.

    • По радиосигналу. Здесь уже целый ряд вариантов: Bluetooth, ZigBee, Wi-Fi, приемники-передатчики 433 мГц и другие вариации на эту тему.

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

    ИК-пульт

    Начнем рассмотрение с самого простого и классического варианта. Управление устройством путем передачи кода из последовательности мерцаний ИК-светодиода в оптоприемник, установленный на устройстве. Стоит отметить, что ИК-спектр не видим для человеческого глаза, но его видит большинство фото-видео камер.

    Раз уж большинство камер видит ИК-излучение, так вы можете проверять исправность пультов дистанционного управления. Для этого просто направьте пульт так, чтобы излучатель смотрел в камеру и понажимайте кнопки. Обычно на экране видно белое свечение с фиолетовым отливом.

    У такого управления есть очевидный недостаток – вы должны направлять пульт в сторону приемника. А если батарейки в пульте севшие, то приходится еще и целится, так как срабатывания становятся всё реже и реже.

    Достоинства заключаются в простоте, высокой ремонтопригодности, как передатчика, так и приемника. Можно найти детали, разобрав поломанные пульты и телевизоры, для того, чтобы это применить в собственных проектах.

    Типовой датчик выглядит следующим образом. Так как происходит прием оптического сигнала, необходимо исключить срабатывания от посторонних источников света, таких как солнце, лампы освещения и прочие. Также стоит отметить то, что ИК-сигнал принимается в основном на частоте в 38 кГц.

    ИК-датчик

    Вот характеристики одного из ИК-датчиков:

    • несущая частота: 38 кГц;

    • напряжение питания: 2,7 — 5,5 В;

    • потребляемый ток: 50 мкА.

    И схема его подключения:

    Схема подключения ик-датчика

    Пульт может использоваться любой с аналогичным принципом работы, подходят пульты от:

    • телевизоров; 

    • DVD-плееров;

    • магнитол;

    • от современных осветительных приборов, типа умных люстр и светодиодных лент и прочее.

    Пульт управления

    Вот пример использования такого датчика с Arduino

    Пример использования ИК-датчика с ардуино

    Чтобы микроконтроллер, в нашем случае Ардуина, поняла сигнал с датчика нужно использовать библиотеку IRremote.h. Для примера того, как читать сигнал с датчика приведем код для их распознавания через чтение последовательного порта микроконтроллера из среды Arduino IDE:

    #include "IRremote.h" // подключаем библиотеку для работы с ИК сигналом.

    IRrecv irrecv(2); // указываем вывод, к которому подключен приемник

    decode_results results;

    void setup() {

      Serial.begin(9600); // выставляем скорость COM порта

      irrecv.enableIRIn(); // запускаем прием

    }

    void loop() {

      if ( irrecv.decode( &results )) { // если данные пришли

        Serial.println( results.value, HEX ); // печатаем данные

        irrecv.resume(); // принимаем следующую команду

      }

    }

    В результате, когда вы прошьете ардуинку, и начнете «светить» в приемник пультом, в мониторе последовательного порта мы увидим следующую картинку:

    Монитор последовательного порта

    Это коды, которые посылают кнопки в шестандцатеричном виде. Таким образом, вы можете узнать, какая кнопка на пульте какой код посылает, поэтому нет конкретных требований к используемому пульту, ведь вы можете распознать и привязать любой. Кстати это идея для проекта обучаемого универсального пульта, такие раньше продавались. Но сейчас в век интернета количество техники управляемой таким образом снижается с каждым годом.

    А с помощью такого кода можно распознавать сигналы и управлять нагрузкой:

    #include "IRremote.h"

    IRrecv irrecv(2); // указываем вывод, к которому подключен приемник

    decode_results results;

    void setup() {

      irrecv.enableIRIn(); // запускаем прием

    }

    void loop() {

      if ( irrecv.decode( &results )) { // если данные пришли

        switch ( results.value ) {

        case 0xFFA857:

            digitalWrite( 13, HIGH );

            break;

        case 0xFFE01F:

            digitalWrite( 13, LOW );

            break;

        }   

        irrecv.resume(); // принимаем следующую команду

      }

    }

    Основным в коде является распознавание через функцию Switch, иногда их называют «свитчкейс». Она является аналогом ветвлений if, но имеет более красивую форму для восприятия. Case – это варианты, «если пришёл такой код, то…» В коде управляют 13 пином при определенных сигналах. Напомню, что к 13 пину подключен встроенный светодиод на плате АРДУИНО, т.е. автор кода управлял светодиодом.

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

    Радиосигнал прием и передача

    Для использования с микроконтроллерами распространены передатчики с рабочими частотами 433 мГц или 315 мГц, могут быть и другие частоты, зависит от конкретной платы, но эти наиболее распространены. Система состоит из двух узлов – приемника и передатчика, что логично.

    Радиосигнал прием и передача

    На картинке передатчик изображен справа вверху, а слева снизу – приемник. Их название для поиска: Радиомодуль 433МГц, MX-05V/XD-RF-5V (приемник и передатчик).

    Распиновка, как это часто бывает в модулях, расписана на плате, вот как у передатчика:

    Радиопередатчик

    На приемнике не так очевидно, ведь Data на печатной плате написано над двумя пинами, по факту один из них не используется.

    Приемник радиосигнала

    Для примера приведем схему и код для включения светодиода с одной платы ардуино, подключенного к другой аналогичной плате, без проводов. Приемник и передатчик подключены одинаково в к обеим платам:

    Приемник и передатчик на платах

    Устройство

    Модуль

    Пины ардуино.

    Приемник

    VCC

    GND

    DATA

    +5V

    GND

    2

    Передатчик

    VCC

    GND

    DATA

    +5V

    GND

    2 

    Далее нужно в Arduino IDE подключить библиотеку RCswitch.h

    (скачать её можно здесь https://github.com/sui77/rc-switch/archive/v2.52.zip)

    Для начала напишем программу передатчика:

    #include <RCSwitch.h>

    RCSwitch mySwitch = RCSwitch(); // создаем объект для работы с перед-ком

    void setup() {

        mySwitch.enableTransmit(2); // говорим программе к какому пину подключен информационный канал

    }

    void loop() {

        mySwitch.send(B0100, 4);

        delay(1000);

        mySwitch.send(B1000, 4);

        delay(1000);

    } 

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

    mySwitch.send(B0100, 4);

    и

    mySwitch.send(B1000, 4);

    это команды передачи, mySwitch – это название передатчика, которое мы указали в начале кода, а send – команда передачи. Аргументами этой функции являются:

    имяПередатчика.send(значение, размер пачки импульсов отправляемых в эфир);

    B1000 – символ B – значит двоичный, это можно было написать как цифру 8, т.е. в десятеричном представлении. Еще один вариант был записать в виде строки (в кавычках) «1000».

    Далее напишем код для приемника (его прошивают в плату, к которой подключен приемник):

    #include <RCSwitch.h>

    RCSwitch mySwitch = RCSwitch();

    void setup() {

        pinMode( 3, OUTPUT );

        mySwitch.enableReceive(0);

    }

    void loop() {

        if( mySwitch.available() ){

            int value = mySwitch.getReceivedValue();

            if( value == B1000 )

                digitalWrite( 3, HIGH );

            else if( value == B0100 )

                digitalWrite( 3, LOW );

            mySwitch.resetAvailable();

        }

    }

    Здесь мы объявляем, что в переменную Value сохраняется принятое значение в строке mySwitch.getReceivedValue(). А тот факт, что приемник подключен ко 2-му пину описываем здесь mySwiitch.enableReceive(0). 

    В остальном код элементарен, если принят сигнал 0100, то переводим пин номер 3 в высокое состояние (лог. единица), а если 1000, то в низкое (лог. ноль).

    Интересно:

    В строке mySwitch.enableTransmit(0) мы говорим программе, что ко 2-му пину подключен приемник и включается режим приема. Самые внимательные заметили, что аргументом этого метода является не номер пина «2», а «0», дело в том, что метод enableTransmit(число) принимает не номер пина, а номер прерывания, а в atmega328, которую ставят на Arduino Uno, nano, promini и ряд других, на втором пине (PortD пин PD2) висит прерывание с номером ноль. Это увидеть вы можете в распиновке Атмеги применимой к плате ардуино, в розовых квадратиках написаны номера пинов.

    Распиновка Атмеги

    Этот способ передачи и приема весьма прост и дешев, пара приемника и передатчика стоит на момент написания статьи примерно 1.5 доллара.

    Wi-Fi, адруино и ESP8266

    Начнем с того, что ESP8266 – это микроконтроллер с аппаратной поддержкой Wi-Fi, он продается как в виде отдельной микросхемы, так и распаян на плате, подобно ардуино. У него 32-битное ядро, он программируется через последовательный порт (UART).

    На платах обычно расположено 2 и более свободных пина GPIO и всегда есть пины для прошивки, это нужно делать через USB to serial переходник. Управляется командами AT, полный список команд можно найти на официальном сайте ESP8266 и на github.

    ESP8266

    Есть и более интересный вариант, платы NodeMCU, в них есть возможность прошивки по USB, т.к. USB-UART преобразователь уже есть на плате, обычно выполнен на микросхеме CP2102. Node MCU – это прошивка, что-то вроде операционной системы, проект на основе скриптового языка Lua.

    Плата NodeMCU

    Прошивка может выполнять скрипты Lua, как принимая их по последовательному порту или воспроизводя алгоритмы, сохраненные во Flash-памяти.

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

    Плата работает с интерфейсами:

    • 1-Wire;

    • I2C;

    • SPI;

    • UART.

    В ней есть целая масса функций:

    • модуль шифрования;

    • планировщик задач;

    • часы реального времени;

    • протокол синхронизации часов через интернет SNTP;

    • таймеры; 

    • АЦП канал (один);

    • проигрывать аудио файлы;

    • формировать на выходах ШИМ-сигнал (до 6);

    • использовать сокеты, есть поддержка FatFS, т.е можно подключать SD-карточки и так далее.

    ESP-12E

    А вот краткий список, с чем может работать плата:

    • акселерометры ADXL345;

    • магнитометры HMC5883L;

    • гироскопы L3G4200D;

    • датчики температуры и влажности AM2320, DHT11, DHT21, DHT22, DHT33, DHT44;

    • датчики температуры, влажности, атмосферного давления BME280;

    • датчики температуры, атмосферного давления BMP085;

    • множество дисплеев работающих по шинам I2C, SPI. С возможностью работы с разными шрифтами;

    • TFT дисплеи ILI9163, ILI9341, PCF8833, SEPS225, SSD1331, SSD1351, ST7735;

    • умные светодиоды и LED контроллеры – WS2812, tm1829, WS2801, WS2812.

    Еще интересно то, что на сайте https://nodemcu-build.com/ можно самому собрать прошивку из нужных модулей, таким образом, вы сэкономите место, исключив из неё ненужные элементы, для своего полезного кода. И вы можете залить эту прошивку на любую плату ESP8266.

    Кроме использования языка Lua вы можете программировать плату и из под Arduino IDE.

    Плата ESP8266 может использоваться как самостоятельное устройство, так и модуль для беспроводной связи с Arduino.

    Модуль для беспроводной связи с Arduino

    Рассмотрение всех функций и особенностей этой платы займет целый цикл статей.

    Так вот эта плата – это отличный вариант дистанционного управления по Wi-Fi. Сфера применения колоссальная, например использовать смартфон в качестве пульта управления для самодельной радиоуправляемой машинки или квадрокоптера, дистанционное управление освещением, вплоть до обустройства сетей на весь дом и управлять каждой розеткой, светильником и т.д. лишь бы пинов хватило.

    Простейший вариант работы с микроконтроллером – это использование одной платы ESP8266. Ниже приведена схема простейшей wi-fi розетки.

    Схема простейшей wi-fi розетки

    Для сборки этой цепи потребуется модуль реле, или обычное реле подключенное к пину через транзистор. Для начала потребуется программа для смартфона RoboRemoFree, (https://www.roboremo.com/). В ней вы настроите подключение к ESP и сделаете интерфейс для управления розеткой. Чтобы описать, как ей пользоваться нужно написать отдельную статью, поэтому опустим пока этот материал.

    В ESP загружаем следующую прошивку, через программу ESPlorer (программа для работы с платой)

    --WiFi AP Settup

    wifi.setmode(wifi.STATIONAP)

    cfg={}

    cfg.ssid="ESPTEST"

    cfg.pwd="1234567890"

    wifi.ap.config(cfg)

    --Set Pin mode

    my_pin_nummber = 1

    --gpio.mode(my_pin_nummber, gpio.OUTPUT)

    gpio.mode(my_pin_nummber, gpio.OPENDRAIN)

    --Create Server

    sv=net.createServer(net.TCP)

    function receiver(sck, data)

         if string.sub (data, 0, 1) == "1" then

              --gpio.write(my_pin_nummber, gpio.HIGH)

              gpio.write(my_pin_nummber, gpio.LOW)

         else

              if string.sub (data, 0, 1) == "0" then

                   --gpio.write(my_pin_nummber, gpio.LOW)

                   gpio.write(my_pin_nummber, gpio.HIGH)

              end

         end

         print(data)

    end

    if sv then

      sv:listen(333, function(conn)

        conn:on("receive", receiver)

        conn:send("Hello!")

      end)

    end

    --Create HTTP Server

    http=net.createServer(net.TCP)

    function receive_http(sck, data)   

      print(data)

      local request = string.match(data,"([^\r,\n]*)[\r,\n]",1)

      if request == 'GET /on HTTP/1.1' then

        --gpio.write(my_pin_nummber, gpio.HIGH)

        gpio.write(my_pin_nummber, gpio.LOW)

      end

      if request == 'GET /off HTTP/1.1' then

        --gpio.write(my_pin_nummber, gpio.LOW)

        gpio.write(my_pin_nummber, gpio.HIGH)

      end 

      sck:on("sent", function(sck) sck:close() collectgarbage() end)

      local response = "HTTP/1.0 200 OK\r\nServer: NodeMCU on ESP8266\r\nContent-Type: text/html\r\n\r\n"..

         "<html><title>NodeMCU on ESP8266</title><body>"..

         "<h1>NodeMCU on ESP8266</h1>"..

         "<hr>"..

         "<a href=\"on\">On</a> <a href=\"off\">Off</a>"..

         "</body></html>"

      sck:send(response)

    end

    if http then

      http:listen(80, function(conn)

        conn:on("receive", receive_http)

      end)

    end

    print("Started.")

    Теперь вы можете управлять программой либо с программы Roboremo, либо через любой веб-браузер, для этого нужно набрать ip-адрес платы в адресной строке в режиме wi-fi точки он 192.168.4.1.

    В коде есть фрагмент:

         "<html><title>NodeMCU on ESP8266</title><body>"..

         "<h1>NodeMCU on ESP8266</h1>"..

         "<hr>"..

         "<a href=\"on\">On</a> <a href=\"off\">Off</a>"..

         "</body></html>"

    Это своеобразный ответ, который выдаётся браузеру при обращении к плате. Он содержит HTML-код, т.е. простейшую WEB-страницу, аналогичную той, на которой вы сейчас читаете эту статью.

    Страница в браузере смартфона под управлением ОС Android

    Вот эта страница, запущенная в браузере смартфона под управлением ОС Android. Описанное выше не является полноценной инструкцией, так как это заняло бы огромный объём, если вам интересна эта информация – пишите комментарии и мы обязательно проведем обзор и напишем статью о работе с ней.

    Алексей Бартош

    Любите умные гаджеты и DIY? Станьте специалистом в сфере Internet of Things и создайте сеть умных гаджетов!

    Записывайтесь в онлайн-университет от GeekBrains:

    Факультет Интернет вещей

    Обучение Интернет вещей и современные встраиваемые системы

    Вы сможете:

    • Изучить C, механизмы отладки и программирования микроконтроллеров;

    • Получить опыт работы с реальными проектами, в команде и самостоятельно;

    • Получить удостоверение и сертификат, подтверждающие полученные знания.

    Starter box для первых экспериментов в подарок!

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

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

    Подробнее здесь: Интернет вещей и современные встраиваемые системы






    Поделитесь этой статьей с друзьями:

    Другие статьи с сайта Электрик Инфо:

  • Подключение и программирование Ардуино для начинающих
  • Способы чтения и управления портами ввода-вывода Arduino
  • Что такое дисплеи Nextion и как с ними работать?
  • Микроконтроллеры программируемые на JavaScript: какой выбрать, характеристи ...
  • Виды и устройство микроконтроллеров AVR
  • Ардуино и шаговый двигатель: основы, схемы, подключение и управление
  • Управление двигателями и сервоприводами с помощью Ардуино
  • Как подключить инкрементальный энкодер к Arduino
  • Отличия одноплатных компьютеров Orange pi и Raspberry pi, что купить?
  • Самые популярные датчики для Arduino
  • Категория: Устройства автоматики, Схемы на микроконтроллерах

    Добавление комментария
    Имя:*
    Комментарий:

    Популярные статьи:

    Присоединяйтесь к нам в социальных сетях:

    ВКонтакте | Facebook | Одноклассники | Яндекс Дзен

     


    Популярные разделы сайта:

    Электрика дома  Электрообзоры  Энергосбережение
    Секреты электрика Источники света Делимся опытом
    Домашняя автоматика Электрика для начинающих
    Практическая электроника Электротехнические новинки

    Copyright © 2009-2021 Электрик Инфо - Electrik.info, Андрей Повный
    Вся информация на сайте предоставлена в ознакомительных и познавательных целях.
    За применение этой информации администрация сайта ответственности не несет.
    Перепечатка материалов сайта запрещена.

    Источник иллюстраций: авторские рисунки и фотографии, электрика на стоковых фото