26 июля 2015 в 18:25

IoT за копейки: практическое руководство. Часть 1-я, аппаратная



Привет, 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
Автор: @DataArt
DataArt
рейтинг 60,90
Технологический консалтинг и разработка ПО

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

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

    image Tolako 5v Relay Module for Arduino

    И там же есть целые матрицы из таких реле.
    • 0
      твердотельное реле проще.
      • 0
        Не знаю. Они, вроде как подороже, стабильно

        image SainSmart 5V 2-Channel Solid State Relay Board for Arduino Uno
        • 0
          Я имел ввиду такое промышленное за 3$
          фото
          image

          Оно оказалось дешевле, чем моя попытка собрать аналог из оптосемистора и мощного семистора, купленных оффлайн.
      • 0
        Твердотельные реле плохо работают с емкостной нагрузкой. Однажды я пытался управлять светодиодными лампами со своими встроенными блоками питания через твердотельное реле, так лампы в выключенном состоянии вспыхивали в случайном порядке раз в десять секунд. Тока утечки реле хватало на зарядку внутренних конденсаторов.
        • 0
          Помехоподавляющий конденсатор параллельно нагрузке, и ток утечки пойдёт через него.
          • 0
            Какого типа конденсатор и какой емкости? Я могу попробовать сегодня.

            Вообще, в даташите к своему твердотельному реле (самый дешевый Fotek на eBay) я видел фразу: работает только с резистивной нагрузкой.
            • 0
              керамический 0,01 мкф с запасом по напряжению +30%.
      • 0
        Для «чайника» сложнее. Мне не удалось подобрать реле на нагрузку в 1-1,5кВт, чтобы работало в закрытом корпусе без радиатора и не слишком нагревалось.
        • 0
          Без радиатора никак
    • 0
      Однако, напряжение у этого реле 5V, можно ли подключать его к плате на 3.3V?
      • 0

        Уточните вопрос, к управляющей или управляемой плате?

        • 0
          К ESP8266. Насколько я понимаю, вход IN (база транзистора) прямо попадает на ногу МК.
          • 0

            Автор статьи изначально указал 5-вольтовое реле. Т.е. подключать можно, но не факт, что будет работать.


            Пишут, что можно через дополнительный транзистор.


            http://www.esp8266.com/viewtopic.php?f=13&t=8808
            http://www.esp8266.com/viewtopic.php?f=13&t=9053

            • 0
              По ссылкам немного о другом. У меня релейный модуль, который на фото в статье. Там есть транзистор и реле срабатывает при замыкании контакта IN на землю, а не при подаче на него напряжения. Ток получается около 5мА, но напряжение между IN и GND около 4,5В. Не спалит ли прямое подключение ESP8266? Вероятно, надо поставить резистор, но я не могу рассчитать требуемый номинал. Реле срабатывает даже при замыкании IN на GND через резистор в 4,7кОм, но мне кажется, что это перебор. Мне нужно гарантированное срабатывание и безопасность для контроллера.
              Можно где-нибудь в Сети почитать о расчёте подобных параметров в доступной форме?
  • +1
    Напишите пожалуйста, сколько у чипа ESP8266 памяти (Flash, RAM и т.д.)
    • +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
  • 0
    Возможен обратный вариант: устройство отдает в облако информацию о состоянии?
    Надо срочно сколхозить датчик протечки :)
    • 0
      Конечно! Используйте команду gpio/read, если нужно периодический читать состояние или команду gpio/int, чтобы подписаться на уведомление об изменения состояния входа. Пример использования уведомлений можете найти здесь — github.com/devicehive/esp8266-firmware/blob/master/examples/gpio-in-out.html

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

Самое читаемое