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 36,73
    Технологический консалтинг и разработка ПО
    Поделиться публикацией
    Комментарии 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

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

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