Привет, Geektimes!

Представляем цикл статей, в котором рассмотрим, как с нуля и без пайки реализовать управляемое из облака недорогое IoT-устройство с огромными потенциалом. За основу возьмем «чистый» микрочип ESP8266, о котором недавно уже писали. Используем свежую DeviceHive-прошивку и напишем простенькое веб-приложение для обращения к cloud-серверу. К микрочипу подключим простое устройство, управлять которым можно будет с помощью пары кликов в браузере.

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

Совсем недавно состоялся публичный релиз первой версии DeviceHive-прошивки для ESP8266. Цель наших статей — помочь каждому желающему реализовать с помощью DeviceHive собственное IoT-решение максимально дешево, быстро и без лишних сложностей.

Нам понадобится всего пять вещей:
  • плата с распаянным ESP8266;
  • USB ->UART-переходник;
  • источник питания;
  • провода;
  • сам девайс, который мы хотим подружить с облаком.


Общая стоимость первых четырех пунктов не превысит $ 5. Какое устройство выбрать для экспериментов — решайте сами.

Давайте рассмотрим каждый пункт подробнее.

Плата с ESP8266



Большинство доступных на рынке модулей с ESP8266 представляет собой просто плату, на которой расположены сам ESP8266, SPI флэш-память 25Q40 на 512 килобайт (у ESP на борту — всего 64 килобайта памяти для загрузчика) и небольшое количество дискретных элементов. Отличия зачастую оказываются исключительно визуальными, хотя встречаются еще и специализированные модули с батарейным питанием и различными модификациями. Они подороже, но смысл остается неизменным.

Отдельно отметим модуль ESP-201 (сверху на фотографии). Интересен он, в первую очередь, тем, что не требует пайки, а с внешним разъемом соединено максимальное количество выводов ESP8266, что может быть очень полезно в экспериментах. Далее для демонстрации будем использовать именно этот модуль, однако вы можете взять любые аналоги. Отличия будут только в распайке выводов.

USB -> UART-переходник



Для перепрограммирования ESP8266 использует интерфейс UART. Это обыкновенный последовательный порт с уровнем логической единицы в 3.3 вольта, т. е. простой COM-порт c другим электрическим уровнем. Такие переходники спрятаны в очень многих устройствах, наверняка вы не раз использовали их, даже не подозревая об этом. В прошлом подобные переходники использовались, например, в датакабелях телефонов.

Больше всего распространены переходники на микросхемах CP2102, PL2303, CH431, FT232 и некоторых других. Нам подойдет любой из перечисленных. С последним, однако, стоит быть аккуранее. Меньше всего проблем с драйверами под Windows и OS X у CP2102. Пользователи Linux могут вообще не беспокоиться — все чипы нативно поддерживаются ядром.

Источник питания



ESP8266 нужен источник питания с выходным напряжением от 3 до 3.6 вольт. Это может быть сетевой адаптер на 3,3 вольта, либо понижающий источник. В моменты включения и активного использования ESP8266 может потреблять в импульсах до 300 миллиампер.

У некоторых USB -> UART-переходников имеется выход на 3.3 вольта от внутреннего стабилизатора. Исходящий ток крайне слаб, поэтому дополнительный источник питания — вынужденная необходимость. При питании от USB хорошим решением может стать источник на микросхеме AMS1117-3.3.

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

Провода



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

Для прототипирования — просто мечта!

Устройство, которое мы хотим подключить


Тут уже начинается простор для фантазии. Устройств, которые можно подключить к облаку, — масса. Стоит, однако, учитывать возможности электрического подключения. На любой вывод микросхемы нельзя подавать напряжение, превышающее то, от которого питается сама микросхема. Максимально допустимый ток нагрузки на каждый GPIO-вывод — 12 миллиампер. Кажется, что показатели довольно скромные, но на самом деле это — стандартные характеристики для микроконтроллера. Для подключения с большими нагрузками можно использовать силовые MOSFET-транзисторы, тиристоры, твердотельные реле и другие схемотехнические решения, рассмотрение которых выходит за рамки этой статьи.

Мы же рассмотрим простейшее механическое реле. На большинстве торговых площадок можно найти готовые модули с распаянными реле.


Что представляет собой модуль? Это обыкновенное реле с распаянным предусилителем на оптопаре или транзисторе. Реле — это группа контактов, которые механически замыкаются и размыкаются при помощи расположенного внутри электромагнита. Иначе говоря, контакты способны разрывать или соединять электрическую цепь, когда к электромагниту извне приложено небольшое напряжение. На обмотке электромагнита ток, как правило, получается в районе 10 – 50 миллиампер, поэтому напрямую подключать его к микроконтроллеру нельзя. Специально для этого на модуле распаян небольшой предусилитель для реле, который можно напрямую подключить к микроконтроллеру.

Слева выведена колонка с клемниками, к которым уже можно подключить серьезную нагрузку. Реле, изображенное на фото, способно выдержать 250 вольт и 10 ампер.



Слева на фото можно увидеть клемник. Эти три вывода — общая группа контактов: один нормально замкнутый, один нормально разомкнутый и один общий. При появление логической единицы на входе модуля, реле перебрасывает общий вывод к другому контакту. Таким образом можно коммутировать, размыкать или соединять что-либо.

Для демонстрации работы прошивки мы используем вот такой лазерный модуль:



Модуль требует напряжение в 5 вольт и потребляет около 90 миллиампер. Чтобы подключить его, нам потребуется реле.

Не забывайте: вместо этого модуля мы можем использовать любое другое устройство, будь то лампочка в вашей комнате или мощнейший прожектор (который сам по себе — просто огромный фонарик, потребляющий киловатты электроэнергии). Стоит лишь учитывать мощность устройства при выборе реле.

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

В следующей статье мы расскажем:
  • как получить и настроить сервер DeviceHive;
  • как прошить и настроить ESP8266 с прошивкой от DeviceHive.


На самом деле, ничего сложного тут нет. Искушенный читать уже может взять нашу прошивку и попытаться запустить ее самостоятельно. Исходный код и собранный образ можно найти здесь. Пока доступна лишь ранняя публичная версия, работа над которой продолжается. Но строить DIY-устройства можно уже сейчас!

Автор: Николай Хабаров, Senior Embedded Developer

Комментарии (12)


  1. Jeditobe
    26.07.2015 21:17

    Если кому будет интересно, то пример реле на плате вот:

    image Tolako 5v Relay Module for Arduino

    И там же есть целые матрицы из таких реле.


    1. Rumlin
      26.07.2015 21:50

      твердотельное реле проще.


      1. Jeditobe
        26.07.2015 22:09

        Не знаю. Они, вроде как подороже, стабильно

        image SainSmart 5V 2-Channel Solid State Relay Board for Arduino Uno


        1. Rumlin
          27.07.2015 06:52

          Я имел ввиду такое промышленное за 3$

          фото
          image


      1. barabanus
        27.07.2015 08:35

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


        1. evtomax
          27.07.2015 11:50

          Помехоподавляющий конденсатор параллельно нагрузке, и ток утечки пойдёт через него.


          1. barabanus
            27.07.2015 12:28

            Какого типа конденсатор и какой емкости? Я могу попробовать сегодня.

            Вообще, в даташите к своему твердотельному реле (самый дешевый Fotek на eBay) я видел фразу: работает только с резистивной нагрузкой.


            1. Rumlin
              27.07.2015 20:35

              керамический 0,01 мкф с запасом по напряжению +30%.


  1. Indemsys
    26.07.2015 21:25
    +1

    Напишите пожалуйста, сколько у чипа ESP8266 памяти (Flash, RAM и т.д.)


    1. Jeditobe
      26.07.2015 22:13
      +1

      github.com/esp8266/esp8266-wiki/wiki

      It's a wireless SoC
      It has GPIO, I2C, ADC, SPI, PWM and some more
      It's running at 80MHz
      64KBytes of instruction RAM
      96KBytes of data RAM
      64KBytes boot ROM
      It has a Winbond W25Q40BVNIG SPI flash
      It's a RISC architecture
      The core is a 106micro Diamond Standard core (LX3) made by Tensilica
      The ESP8266 chip is made by Espressif
      Modules bearing this chip are made by various manufacturers


  1. Zzzuhell
    28.07.2015 14:18

    Возможен обратный вариант: устройство отдает в облако информацию о состоянии?
    Надо срочно сколхозить датчик протечки :)


    1. DataArt Автор
      28.07.2015 15:10

      Конечно! Используйте команду gpio/read, если нужно периодический читать состояние или команду gpio/int, чтобы подписаться на уведомление об изменения состояния входа. Пример использования уведомлений можете найти здесь — github.com/devicehive/esp8266-firmware/blob/master/examples/gpio-in-out.html