Nodemcu: контроль устройств голосом или со смартфона

Прокачиваем домофон протоколом MQTT для управления с телефона

Всем привет. Расскажу немного про свою последнюю междуделку — доработку домофона WiFi-модулем NodeMCU. Заранее прошу прощения за выбор модуля — всех уже, наверное, достала эта ESP’шка…

Конечно, работу ClusterM с его автоответчиком никому не переплюнуть, но такой функционал я считаю излишним.

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

Проект получился небольшой, так что в статье тоже не так много букв, зато есть фотографии.

Железо В наличии у меня было несколько модулей NodeMCU, так что, прикинув его к трубке домофона, решил, что влезет он туда без проблем, надо лишь сделать плату расширения. Развожу я всегда в EagleCad, платы заказываю либо у китайцев, либо в американском OSH Park. На OSH Park выходит дешевле, если площадь платы маленькая, но вы получаете только 3 платы вместо 10 китайских, но для штучного проекта это не важно. На плату отлично встали релюшки PE014005, прям аккурат между выводов NodeMCU.Не самый дешевый вариант, но у меня они были в наличии. А так можно поставить самые дешевые китайские, HUI KE например (это не ругательство, это фирма такая — у них есть серия релюшек HK4100F). Еще использовал две оптопары 4N35S, одну на вход — отлавливать входящий звонок, вторую на замыкание кнопки открытия домофона. Получившиеся схема и топология платы вот (всё есть в репозитории, ссылка в конце статьи):Платы с производства.

Несколько фотографий

Описание работы трубки

Сначала немного по принципу работы самой трубки — у меня Цифрал КЛ-2. Вот схема с официального сайта.

На схеме: 1,2 — контакты подключения линии домофона (имеет полярность, если кто не знал); SW2 — переключатель звука трубки (внизу — звук выключен, вверху — звук включен); SW1 — рычаг разговорной трубки (внизу — трубка висит, вверху — трубку сняли для разговора); SB1 — кнопка открытия двери; BA1 — динамик трубки; BM1 — микрофон трубки, HL1 — светодиод.

Когда подъездная панель дает вызов, в линию поступает меандр амплитудой 12В. Сопротивление в линии должно быть 50 Ом, в любом другом случае на панели высветится ошибка.

Если переключатель SW2 находится в нижнем положении (звук на трубке выключен), то в линию подключен резистор 50 Ом — светодиод поморгает, но звука мы не услышим.

Если переключатель SW2 в верхнем положении (звук включен), а переключатель SW1 в нижнем (трубка висит), то в линии будет сопротивление динамика BA1 всё те же 50 Ом, как раз на него попадает меандр и мы слышим звук.

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

Теперь о доработках

Relay1 — берем управление звуком на себя (считаем, что родной переключатель трубки SW2 в верхнем положении, иначе будет каша); Input — оптопара, дергается во время звонка (подключена перед Relay1, чтобы видеть звонок в бесшумном режиме); Relay2 — имитирует снятие трубки; Open — замыкает кнопку открытия двери. Обращаю ваше внимание на то, что релюшки подпаяны нормально замкнутыми контактами в разрыв. Это означает, что в любой момент можно отключить домофон от сети (а вдруг свет вырубился или интернет пропал) и он сохранит свою работоспособность, это важно.

Прошивка

Прошивку писал в PlatformIO (плагин для редактора Atom) на ардуиновских библиотеках. Ссылка на репозиторий в конце статьи. Эта, с вашего позволения, IDE будет поудобнее родной ардуиновской — кто не пробовал, обязательно попробуйте. В качестве MQTT клиента на телефон использовал IoTmanager (далее — просто клиент).

По программе много рассказывать не буду (желающие посмотрят код), лишь опишу, что она умеет:

  • подключаться к MQTT брокеру
  • публиковать топики с настройками для клиента
  • подписываться на топики для реакциина переключения в клиенте
  • отправлять push уведомление на телефон при входящем звонке
  • публиковать измененные настройки при звонке (чтобы видеть статус в клиенте)
  • отключать звук на домофоне по команде клиента
  • открывать дверь разово,
  • открывать бесконечное число раз
  • просто сбрасывать трубку

Экранные формы приложения (кликабельно)Фишка программы IoTmanager в том, что все настройки хранятся в топиках, а она лишь отображает то, что опубликовано. Немного теряется смысл легковесного протокола MQTT, но мне такая реализация нравится. При желании можно переделать под другой MQTT клиент. Конечно всё это (да еще с двумя электромеханическими реле) требует внешнего питания и я бы задумался над целесообразностью поделки, если бы мне понадобилось заводить питание 5В от розетки… Но у меня счетчик находится внутри квартиры, а домофон висит совсем рядом. Я просто заказал на Ali модуль 220AC/5VDC на din-рейку и запитал домофон от него. На фото он перевернут для удобства внутреннего монтажа.Всем спасибо за внимание. Приглашаю в комментарии.

Разработана вторая версия устройства, про которую я рассказываю тут

Доработка домофона протоколом MQTT для управления с телефона (версия 2.0).

Полезные ссылки:

1. Репозиторий этого проекта на GitHub — там есть схема, разводка, исходный код.

2. Создание умного домофона с автоответчиком и Интернет-соединением — статья товарища ClusterM, упомянутая в начале.
3. Как я домофон Vizit к mqtt подключал — домофон с Arduino и Ethernet shield.
4. Esp8266 управление через интернет по протоколу MQTT — статья про MQTT и ESP8266.
5. Дистанционное управление домофоном — еще одна статья по теме.

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

Источник: https://habr.com/post/406491/

NodeMCU (ESP8266) для начинающих: что такое, как подключить

Рассматриваем плату NodeMCU, знакомимся с ее характеристиками и способом подключения.

Плата NodeMCU

Для чего нужна NodeMCU?

NodeMCU — это платформа на основе модуля ESP8266. Плата предназначена для удобного управления различными схемами на расстоянии посредством передачи сигнала в локальную сеть или интернет через Wi-Fi.

Возможности применения этой платы ограничивается лишь вашей фантазией.

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

Характеристики NodeMCU

Размер платы NodeMCU — 6 * 3 см. Плата довольно компактная, это позволяет использовать ее в большем количестве проектов. «Ноги» NodeMCU расположены так, что ее без проблем можно установить в макетную плату (breadboard).

На лицевой части платы разъем Micro USB, с помощью которого в контроллер заливают скетчи или подают питание от powerbank-а или компьютера.

Рядом с разъемом располагаются две кнопки: «Flash» и «Reset». Кнопка «Flash» используется для отладки, а кнопка «Reset» для перезагрузки платы.

Больше всего места на плате занимает чип ESP8266,на котором уставлен микропроцессор с тактовой частотой 80 МГц (можно разогнать до 160 МГц). Плата имеет 4 мегабайта Flash-памяти.

Для питания на плату можно подавать напряжение от 5 до 12 В, но рекомендуется от 10 В. Можно питать как от Micro USB, так и от контакта Vin (от 5В.). Также существуют дополнительные платы расширения для удобного питания модулей.

Плата для питания NodeMCU

Плата потребляет небольшое количество энергии. Это позволяет использовать ее с автономным питанием.

NodeMCU имеет 11 портов ввода-вывода общего назначения.

Некоторые из портов имеют дополнительные функции:

  • D9, D10 — UART
  • D1, D2 — I²C/TWI
  • D5–D8 — SPI
  • D1–D10 — выходы с ШИМ (PWM)
  • A0 — аналоговый вход с АЦП.

Подключение NodeMCU

Подключаем плату NodeMCU к компьютеру с помощью USB кабеля:

  • заходим в раздел «инструменты» -> «плата» -> «менеджер плат», где выбираем «esp8266» и скачиваем последнюю версию,
  • заходим в раздел «инструменты» -> «плата» и находим Node MCU,
  • необходимо в том же разделе зайти в раздел «порт» и выбрать тот, в который подключена плата,
  • установить в разделе инструменты: Upload speed (115200 bouad).

NodeMCU: мигающий светодиод

Рассмотрим простейшую схему — мигание светодиодом. В скетче можно задать частоту мигания светодиода.
#define ledpin 1 // GPIO1/TXD01 void setup() { pinMode(ledpin, OUTPUT); } void loop() { digitalWrite(ledpin, HIGH); delay(1000); digitalWrite(ledpin, LOW); delay(1000); }

Видео NodeMCU: введение в интернет вещей:

Пины NodeMCU располагаются так:

Источник: http://edurobots.ru/2017/04/nodemcu-esp8266/

Начало работы с ESP8266 NodeMcu v3 Lua с WiFi

NodeMcu – платформа на основе ESP8266 для создания различных устройств интернета вещей (IoT). Модуль умеет отправлять и получать информацию в локальную сеть либо в интернет при помощи Wi-Fi.

Недорогой модуль часто используется для создания систем умного дома или роботов Arduino, управляемых на расстоянии. В этой статье мы рассмотрим описание платы, отличие версий и распиновку последней версии модуля Esp8266 NodeMcu v3.

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

Описание ESP8266 NodeMcu v3

Технические характеристики модуля:

  • Поддерживает Wi-Fi протокол 802.11 b/g/n;
  • Поддерживаемые режимы Wi-Fi – точка доступа, клиент;
  • Входное напряжение 3,7В – 20 В;
  • Рабочее напряжение 3В-3,6В;
  • Максимальный ток 220мА;
  • Встроенный стек TCP/IP;
  • Диапазон рабочих температур от -40С до 125С;
  • 80 МГц, 32-битный процессор;
  • Время пробуждения и отправки пакетов 22мс;
  • Встроенные TR переключатель и PLL;
  • Наличие усилителей мощности, регуляторов, систем управления питанием.
Читайте также:  Esp8266 lib h: скачать и установить библиотеку для проектов

Существует несколько поколений плат NodeMcu – V1(версия 0.9), V2(версия 1.0) и V3 (версия 1.0). Обозначения V1, V2, V3 используются при продаже в интернет-магазинах.

Нередко происходит путаница в платах – например, V3 внешне идентична V2. Также все платы работают по принципу open-source, поэтому их могут производить любые фирмы.

Но в настоящее время производством плат NodeMcu занимаются Amica, DOIT и LoLin/Wemos.

Отличия от других модификаций

Платы поколения V1 и V2 легко отличить – они обладают различным размером. Также второе поколение оснащено улучшенной модификацией чипа ESP-12 и 4 Мб флэш-памяти. Первая версия, устаревшая, выполнена в виде яркой желтой платформы. Использовать ее неудобно, так как она покрывает собой 10 выходов макетной платы.

Плата второго поколения сделана с исправлением этого недостатка – она стала более узкой, выходы хорошо подходят к контактам платы. Платы V3 внешне ничем не отличаются от V2, они обладают более надежным USB-выходом.

Выпускает плату V3 фирма LoLin, из отличий от предыдущей платы можно отметить то, что один из двух зарезервированных выходов используется для дополнительной земли, а второй – для подачи USB питания. Также плата отличается большим размером, чем предыдущие виды.

Где купить модули NodeMCU и ESP8266

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

Питание модуля NodeMcu

Подавать питание на модуль можно несколькими способами:

  • Подавать 5-18 В через контакт Vin;
  • 5В через USB-разъем или контакт VUSB;
  • 3,3В через вывод 3V.

Преимущества NodeMcu v3

  • Наличие интерфейса UART-USB с разъемом micro USB позволяет легко подключить плату к компьютеру.
  • Наличие флэш-памяти на 4 Мбайт.
  • Возможность обновлять прошивку через USB.
  • Возможность создавать скрипты на LUA и сохранять их в файловой системе.

Недостатки модуля NodeMcu

Основным недостатком является возможность исполнять только LUA скрипты, расположенные в оперативной памяти.

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

Эти блоки необходимо записать в отдельные файлы системы. Все эти модули исполняются при помощи оператора dofile.

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

Распиновка NodeMcu v3

Модуль V3 имеет 11 контактов ввода-вывода общего назначения. Помимо этого некоторые из выводов обладают дополнительными функциями:

  • D1-D10 – выводы с широтно-импульсной модуляцией;
  • D1, D2– выводы для интерфейса I²C/TWI;
  • D5–D8 – выводы для интерфейса SPI;
  • D9, D10 – UART;
  • A0 – вход с АЦП.

Подключение NodeMCU к компьютеру

Для начала работы с NodeMcu нужно подключить плату к компьютеру. Первым шагом будет установка драйвера CP2102 и открытие Arduino IDE. Затем нужно найти в «Файл» — «Настройки» и в окно «дополнительные ссылки для менеджера плат» вставить ссылку http://arduino.esp8266.com/versions/2.3.0/package_esp8266com_index.json.

После этого в меню «документы» — «плата» «менеджер плат» выбрать «esp8266» и установить последнюю версию. После проделанных действий в меню «инструменты» — «плата» нужно найти NodeMCU.

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

Пример подключения светодиода к NodeMCU

Принципиальная схема подключения представлена на рисунке.

Итоговый макет макет выглядит следующим образом:

Сама плата работает от напряжения 3.3 В, поэтому для подключения светодиода нужно использовать резистор. В данном примере для красного светодиода берется резистор номиналом 65 Ом.

Похожим способом к плате подключается и фотодиод:

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

Прошивки для esp8266 NodeMcu

В основу платформы загружена стандартная прошивка Node MCU, в которую встроен интерпретатор языка Lua. При помощи Lua-команд можно выполнять следующие действия:

  • Подключение к Wi-Fi точке доступа;
  • Работа в роли Wi-Fi точки доступа;
  • Переход в режим глубокого сна для уменьшения потребления энергии;
  • Включение или выключения светодиода на выходе GPIO16;
  • Выполнение различные операции с файлами во флэш-памяти;
  • Поиск открытой Wi-Fi сети, подключение к ней;
  • Вывод MAC адреса;
  • Управление пользовательскими таймерами.

Для программирования NodeMCU можно использовать Arduino IDE или комплекс средств разработки SDK — ESPlorer. Этот комплекс обладает рядом отличий:

  • Он может работать на множестве различных платформ;
  • Обладает поддержкой нескольких открытых файлов;
  • Позволяет подсвечивать код языка Lua;
  • Возможность умной отправки файлов;
  • Возможность поддержки нескольких видов прошивки одновременно.

Для обеспечения корректной и стабильной работы нужно обновить прошивку до последней версии. Существует несколько способов обновления – облачный сервис, Docker Image и компилирование в Linux. Каждый из этих способов обладает своими плюсами и минусами. Наиболее простым и понятным является первый способ.

Сбор прошивки в облачном сервисе

Облачный сервис обладает простым и удобным интерфейсом. Работа начинается с ввода email. Далее будет предложено выбрать тип прошивки – стабильная прошивка или тестируемая.

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

Затем выбираются дополнительные опции. Среди них есть поддержка FatFS для чтения sd-карты или включение режима отладки.

После начала сборки придет письмо на почту, сигнализирующее о начале запуска процесса. Через некоторое время придет и второе письмо – будет предложено выбрать версию float (дробные числа) или integer (целые числа).

После перехода по полученной ссылке нужно будет скачать файл bin и поместить его в Resources – Binaries. Там будет расположен файл nodemcu_integer_0.9.5_20150318.bin, который нужно удалить. В итоге содержимое папки будет выглядеть следующим образом.

Обновление прошивки Node Mcu

Для правильной и стабильной работы платы требуется перезаписать esp_init_data_default.bin. Скачать его можно на официальном сайте. Нужный файл нужно поместить снова в систему для прошивки NodeMCU Flasher по пути Resources – Binaries, предварительно удалив из него старый файл.

Затем можно подключать  NodeMCU и приступить к обновлению. Для начала нужно поменять настройки – в NodeMCU Flasher во вкладке Config нужно выбрать файл собранной прошивки вместо INTERNAL://NODEMCU.

Остальное оставить без изменений, перейти на Operations и нажать Flash. Как только окончится прошивка, нужно снова перейти на Config и в первой строке указать путь esp_init_data_default.bin. Также дополнительно указывается адрес, куда нужно переместить этот файл. Для модуля NodeMCU следует выбрать адрес 0x3FC000. После этого нужно снова вернуться на Operations и нажать Flash.

После этого нужно переформатировать всю файловую систему млаты. Для этого нужно запустить ESPlorer, обязательно поставить скорость обмена 115200 и перезагрузить NodeMCU. После всех вышеописанных действий будет новая версия прошивки. Отладочная плата полностью перепрошита и готова к работе.

Краткое описание языка Lua

Язык Lua обладает простым синтаксисом и мощными конструкциями описания данных, которые основаны на массивах и расширяемой семантике.  Этот мощный язык программирования используется для создания программного обеспечения, расширения различных игр. В отличие от остальных языков Lua обладает более гибкими и более мощными конструкциями.

Мигание светодиодами на Lua

Можно рассмотреть простейшую схему – мигание светодиодом. Этот пример поможет изучить работы с контактами GPIO. Светодиод нужно подключить как показано на схеме.

Затем нужно записать следующий скетч в левое окно ESPlorer:

pin_number = 1

gpio.mode (pin_number, gpio.OUTPUT) // установка рабочего режима на выход

gpio.write (pin_number, gpio.HIGH)// установка высокого уровня

gpio.write (pin_number, gpio.LOW)// установка низкого уровня

gpio.serout (1, gpio.HIGH, {+990000,990000}, 10, 1) // установка мигания светодиодом 10 раз

После нужно сохранить скрипт с названием init.lua. Сразу после этого начнется автоматическая загрузка написанного кода в отладочную плату и его выполнение. Если операция выполнена успешно, отладочная плата начнет мигать светодиодом.

Важно отметить, что плата самостоятельно выполняет скрипт, подключение к компьютеру нужно только для подачи питания.

Источник: https://ArduinoMaster.ru/platy-arduino/esp8266-nodemcu-v3-lua/

Управление светодиодом по Wi-Fi на платформе NodeMCU

2016-11-12 в 20:00

В этот раз расскажем Вам что такое платформа NodeMCU. Она полностью совместима со средой разработки Arduino IDE. Превосходит Arduino по скорости в 10 раз. Тактовая частота составляет 80 MHz. Имеет встроенный Wi-Fi модуль ESP8266.

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

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

Код

// Сюда название вашей Wi-FI сети и пароль!!! const char* ssid = «ssid»;

const char* password = «password»;

Выбрали pin к которому будет подключена нагрузка.

Код

  // подготавливаем пин для реле GPIO2   pinMode(2, OUTPUT);

  digitalWrite(2, 0);

Читайте также:  Дроны - перспективная технология для современного кино - arduino+

После того как ввели эти данные загружаем весь код в плату.

Код

/*  *    http://server_ip/gpio/0 выключаем пин GPIO2  *    http://server_ip/gpio/1 включаем пин GPIO2

 */

#include<\p>

// Сюда название вашей Wi-FI сети и пароль!!! const char* ssid = «ssid»;

const char* password = «password»;

// Поднимаем веб сервер
WiFiServer server(80);

void setup() {   Serial.begin(115200);

  delay(10);

  // подготавливаем пин для реле GPIO2   pinMode(2, OUTPUT);   digitalWrite(2, 0);     // подклюсаемя к сети WI-FI   Serial.println();   Serial.println();   Serial.print(«Connecting to «);   Serial.

println(ssid);     WiFi.begin(ssid, password);     while (WiFi.status() != WL_CONNECTED) {     delay(500);     Serial.print(«.»);   }   Serial.println(«»);   Serial.

println(«WiFi connected»);     // Start the server   server.begin();

  Serial.println(«Server started»);

  // печатаем в монитор порта полученный IP адрес   Serial.println(WiFi.localIP());

}

void loop() {   // Смотрим, подключен ли к нам клиент   WiFiClient client = server.available();   if (!client) {     return;   }     // если клиент подключился печатаем   Serial.println(«new client»);   while(!client.available()){     delay(1);   }     // читаем строку ссылки   String req = client.

readStringUntil('
');   Serial.println(req);   client.flush();     // присваиваем значение переменной val в зависимости от ссылки по которой перешли   int val;   if (req.indexOf(«/gpio/0») != -1)     val = 0;   else if (req.indexOf(«/gpio/1») != -1)     val = 1;   else {     Serial.

println(«invalid request»);     client.stop();     return;

  }

  // работаем с GPIO2 и переменной val   digitalWrite(2, val);  

  client.flush();

  // выводим html код   String s = «HTTP/1.1 200 OK
Content-Type: text/html

GPIO is now «;   s += (val)?»high»:»low»;

  s += »
«;

  // что там с клиентом..   client.print(s);   delay(1);

  Serial.println(«Client disonnected»);

}

В мониторе порта плата нам напишет какой IP адрес был присвоен ей. И теперь, чтобы включить светодиод необходимо пройти по ссылке ip_адресс/gpio/1. А для того чтобы отключить светодиод переходим уже по другой ссылке ip_адресс/gpio/0.

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

Источник: http://TehnoPage.ru/upravlenie-svetodiodom-po-wi-fi-na-platforme-nodemcu

Прыжок в облако. Строим бюджетное решение для интернета вещей на NodeMCU + Azure IoT Hub — «Хакер»

Содержание статьи

Самое популярное назначение IoT-устройств — это сбор телеметрии. На сегодняшний день цены на облачные IoT-сервисы снизились буквально до одного доллара в месяц, который, согласись, не жалко отдать даже просто ради эксперимента.

Источник: https://xakep.ru/2018/03/01/nodemcu-iot/

NodeMCU — быстрый старт для любителей Arduino

Аппаратная платформа Arduino отличная возможность начать программирование микроконтроллеров, не смотря на все её недостатки в виде упрощенного IDE и раздутого скомпилированного кода. Но рано или поздно возможностей ардуино перестает хватать для реализации своих идей и настает момент, когда надо двигаться дальше.

Если вам не хватает поддержки беспроводных сетей, то у вас два выхода: подключить к ардуино модуль ESP-01 (на Али) и остаться со всеми остальными параметрами ардуино, либо использовать платы на основе ESP-12(E), например NodeMCU, WeMos (на Ali) и многие другие китайские поделки, и получить при этом все преимущества и недостатки контроллера esp8266 (да-да, по сравнению с ардуино у esp8266 все же есть некоторые недостатки, но о них ниже). 

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

Но в самом начале несколько слов о параметрах и возможностях NodeMCU. Но перед этим стоит уточнить, что сравнивать NodeMCU и Arduino довольно сложно, так как у них разная «весовая категория».

При этом у каждой из плат есть свои преимущества и недостатки.

Так NodeMCU имеет бОльшие вычислительные способности и частоту процессора, бОльший объем памяти и самое главное имеет встроенную поддержку Wi-Fi, но при этом уступает Arduino в количестве как цифровых, так и аналоговых выводов. 

Файлы печатной платы приведены на гитхабе https://github.com/nodemcu/nodemcu-devkit-v1.0 , там же и распиновка печатной платы

А так же подробная принципиальная схема https://github.com/nodemcu/nodemcu-devkit-v1.0/blob/master/NODEMCU_DEVKIT_V1.0.PDF

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

Модуль можно питать тремя различными способами с различным напряжением:

  • 5-18 вольт через вывод Vin (согласно параметрам стабилизатора AMS1117-3.3)
  • 5 вольт через вывод VUSB или USB-гнездо
  • 3.3 вольта непосредственно через вывозы 3V

На плате установлен ESP-12E, который имеет следующие параметры (взяты из даташита на ESP-12E):

  • протокол Wi-Fi 802.11 b/n/g
  • частота 2.4 — 2.5 GHz (2400-2483.5 MHz)
  • режим Wi-Fi: точка доступа, клиент
  • защита Wi-Fi: WPA, WPA2
  • шифрование Wi-Fi: WEP, TKIP, AES
  • сетевые протоколы: IPv4, TCP, UDP, HTTP, FTP
  • 80 MHz 32-bit процессор
  • 11 доступных портов ввода/вывода UART, HSPI, I2C, I2S, GPIO, PWM
  • рабочее напряжение 3.0 … 3.6 вольт
  • максимальная нагрузка на вывод не более 12 mA
  • максимальное потребление модуля 200 mA, среднее 80 mA (подробнее в 11 таблице даташита ESP-12E)   
  • рабочая температура -40 … 125 С

В том же даташите приведены назначения выводов. Выводы нумеруются против часовой стрелки начиная слева сверху, при этом антенна ESP-12E должна находиться вверху, а сам модуль должен быть повернут лицевой стороной.

NO.  Pin Name  Function  1  RST  Reset the module  2  ADC  АЦП 10 бит, диапазон входящего напряжения 0-1 вольт  3  EN  Chip enable pin.Active high  4  IO16  GPIO16; может использоваться для вывода модуля из сна 5  IO14  GPIO14; HSPI_CLK  6  IO12  GPIO12; HSPI_MISO  7  IO13  GPIO13; HSPI_MOSI; UART0_CTS  8  VCC  3.

3V power supply (VDD)  9  CS0  Chip selection  10  MISO  Salve output master input  11  IO9  GPIO9  12  IO10  GBIO10  13  MOSI  Master output slave input  14  SCLK  Clock  15  GND  GND  16  IO15  GPIO15; MTDO; HSPICS; UART0_RTS  17  IO2  GPIO2; UART1_TXD  18  IO0  GPIO0  19  IO4  GPIO4  20  IO5  GPIO5  21  RXD  UART0_RXD; GPIO3 

22  TXD  UART0_TXD; GPIO1 

И еще одна наглядная картинка с распиновкой ESP-12

Так же даташит содержит таблицу описания интерфейсов. 

В качестве преобразователя USB-UART используется микросхема CH340G.

NodeMCU и ArduinoIDE

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

  • запустить ArduinoIDE;
  • перейти в пункт «Файл – Настройки»;
  • в поле «Дополнительные ссылки для Менеджера плат» ввести адрес http://arduino.esp8266.com/stable/package_esp8266com_index.json и нажать кнопку «ОК» (на скриншоте устаревшая и уже не рабочая ссылка);
  • перейти в пункт меню «Инструменты – Плата:… — Менеджер плат», откроется окно Менеджера плат;
  • в самом низу списка появится новый пункт «esp8266…», нажать на него и затем на кнопку «Установка»;
  • дождаться завершения загрузки и установки необходимых файлов (будут загружены несколько пакетов объемом не менее 160 мегабайт) и перезапустить ArduinoIDE.

В итоге в пункте меню «Инструменты – Плата:…» появляется 21 новый пункт. Для работы с NodeMCU я выбираю из списка плату «NodeMCU 1.0 (ESP-12E Моdule)». На этом настройка ArduinoIDE завершена.

Обратите внимание на ссылки в менеджере плат. Ссылка More info приведет нас на страницу проекта на github, там в первую очередь стоит взглянуть на файл https://github.com/esp8266/Arduino/blob/master/variants/nodemcu/pins_arduino.h в котором описано, как обращаться к выводам из среды ArduinoIDE и их соответствие выводам GPIO. 

#ifndef Pins_Arduino_h
#define Pins_Arduino_h #include «../generic/common.h» #define PIN_WIRE_SDA (4)
#define PIN_WIRE_SCL (5) static const uint8_t SDA = PIN_WIRE_SDA;
static const uint8_t SCL = PIN_WIRE_SCL; static const uint8_t LED_BUILTIN = 16;
static const uint8_t BUILTIN_LED = 16; static const uint8_t D0 = 16;
static const uint8_t D1 = 5;
static const uint8_t D2 = 4;
static const uint8_t D3 = 0;
static const uint8_t D4 = 2;
static const uint8_t D5 = 14;
static const uint8_t D6 = 12;
static const uint8_t D7 = 13;
static const uint8_t D8 = 15;
static const uint8_t D9 = 3;
static const uint8_t D10 = 1; #endif /* Pins_Arduino_h */

Так же назначения выводов описаны в файле https://github.com/esp8266/Arduino/blob/master/variants/generic/common.h

#define PIN_SPI_SS (15)
#define PIN_SPI_MOSI (13)
#define PIN_SPI_MISO (12)
#define PIN_SPI_SCK (14) static const uint8_t SS = PIN_SPI_SS;
static const uint8_t MOSI = PIN_SPI_MOSI;
static const uint8_t MISO = PIN_SPI_MISO;
static const uint8_t SCK = PIN_SPI_SCK; #define PIN_A0 (17)
static const uint8_t A0 = PIN_A0;

Здесь видно, что SPI соответствует выводам D5-8. 

Если нажать на ссылку Online help, то откроется страница http://esp8266.github.io/Arduino/versions/2.2.0/ что несколько странно, потому что установлена последняя версия 2.3.0 и страница http://esp8266.

github.io/Arduino/versions/2.3.0/ так же существует и доступна. На этой странице можно найти много полезной информации на английском языке. Разберемся же что из того что там представлено будет полезно для нас.

Первым делом рассмотрим описание стандартных функций (приведены на странице http://esp8266.github.io/Arduino/versions/2.3.0/doc/reference.html). Здесь сказано что номера выводов в среде ArduinoIDE совпадают с нумерацией GPIO. То есть что бы установить единицу на выводе GPIO16 нужно использовать команду digitalWrite(16, HIGH) или digitalWrite(D0, HIGH).

Читайте также:  Arduino gopro: как контролировать камеру через wifi

Все выводы (описанные в https://github.com/esp8266/Arduino/blob/master/variants/nodemcu/pins_arduino.h) могут работать с функциями pinMode, digitalRead, digitalWrite и analodWrite. Так же выводы, сконфигурированные на вход можно подтянуть к положительному выводу питания командой INPUT_PULLUP , вывод 16 можно притянуть к земле командой INPUT_PULLDOWN_16.

Прерывания доступны на всех GPIO, кроме GPIO16. Работа с прерываниями в NodeMCU ничем не отличается от работы с прерываниям в ардуино. 

Аналоговый вход работает так же, как и на ардуино, analogRead(A0) считывает аналоговое значение с вывода GPIO17 (A0). Этот же АЦП может считывать напряжение VCC командой ESP.getVcc(), но перед этим в самом начале скетча (до функции setup) необходимо добавить строку ADC_MODE(ADC_VCC), а так же вывод А0 не должен быть никуда подключен.

Программный ШИМ работает на всех доступных GPIO, включается стандартной командой analogWrite(pin, value). Значение value лежит в диапазоне 0-1023 и может быть изменено функцией analogWriteRange(new_range). Стандартная частота ШИМ 1кГц, так же может быть изменена при помощи analogWriteFreq(new_frequency).

Порицаемая многими функция delay здесь играет особую роль. Дело в том, что кроме выполнения скетча, так же необходимо поддерживать связь по Wi-Fi. Это делается автоматически, после каждого выполнения loop или при вызове delay.

Таким образом, если в функции loop есть фрагменты кода, которые выполняются более 50 микросекунд (например, выполняется какой-то большой цикл), то рекомендуют вызвать delay для нормальной работы Wi-Fi.

Так же есть функция yield(), которая аналогична delay(0).

Последовательный порт Serial работает на GPIO1(TX) и GPIO3(RX). Последовательный порт Serial можно переназначить на GPIO15 (TX) и GPIO13 (RX) , для этого после вызова функции Serial.begin необходимо вызвать Serial.swap(). Для отмены переназначения выводов необходимо снова вызвать Serial.swap(). В Serial1 доступен только TX (GPIO2).

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

EEPROM — перед началом работы с eeprom необходимо вызвать функцию EEPROM.begin(size), где необходимо указать, какой объем памяти eeprom необходимо использовать (от 4 до 4096 байт), функция  EEPROM.write не записывает данные сразу,для записи данных надо использовать функцию EEPROM.commit, функция EEPROM.end так же записывает данные и завершает работу с eeprom.

I2C — перед началом работы с  I2C необходимо вызвать функцию Wire.begin(int sda, int scl) , по умолчанию 4 (SDA) и 5 (SCL).

ESP8266 API :

  • функция ESP.deepSleep(microseconds, mode) переводит модуль в сон (mode — WAKE_RF_DEFAULT, WAKE_RFCAL, WAKE_NO_RFCAL, WAKE_RF_DISABLED). Чтобы вывести модуль из режима сна необходимо соединить GPIO16 и RST
  • ESP.restart() перезапускает процессор
  • сторожевой таймер (watchdog) реализован функциями ESP.wdtEnable(), ESP.wdtDisable(), и ESP.wdtFeed()

 ESP8266 WiFi очень похожа на библиотеку WiFi Shield (https://www.arduino.cc/en/Reference/WiFi), и на странице http://esp8266.github.io/Arduino/versions/2.3.0/doc/libraries.

html#wifi-esp8266wifi-library указаны только различия между этими библиотеками.

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

Перейдем к практике.

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

Источник: http://cxem.net/arduino/arduino220.php

Как это работает

— это система разработки и использования мобильных графических интерфейсов для управления контроллерами со смартфона или планшета. В состав системы входят:

  • Редактор мобильных графических интерфейсов для контроллеров, размещенный на сайте remotexy.com
  • Мобильное приложение RemoteXY, позволяющее подключаться к контроллеру и отображать графические интерфейсы. Загрузить приложение.

Отличительные особенности:

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

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

  • Bluetooth;
  • WiFi в режиме клиента и точки доступа;
  • Ethernet по IP адресу или URL;
  • Интернет из любого места через облачный сервер.

Генератор исходного кода интерфейса поддерживает следующие контроллеры:

  • Arduino UNO, Arduino MEGA, Arduino Leonardo, Arduino Pro Mini, Arduino Nano, Arduino MICRO;
  • WeMos D1, WeMos D1 R2, WeMos D1 mini;
  • NodeMCU V2, NodeMCU V3;
  • The AirBoard;
  • ChipKIT UNO32, ChipKIT uC32, ChipKIT Max32;

Поддерживаются следующие модули связи:

  • Bluetooth HC-05, HC-06 и совместимые;
  • WiFi ESP8266;
  • Ethernet Shield W5100;

Поддерживаемые IDE:

  • Arduino IDE;
  • FLProg IDE;
  • MPIDE;

Поддерживаемые мобильные операционные системы:

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

Сервис RemoteXY позволяет:

  • Разработать любой графический интерфейс управления, используя элементы управления, индикации и оформления в любой их комбинации. Размещая элементы на экране при помощи онлайн-редактора можно разработать интерфейс под любую задачу. Онлайн редактор размещен на сайте remotexy.com.
  • Разработав графический интерфейс, вы получаете исходный код программы для микроконтроллера, реализующей ваш интерфейс. Исходный код предоставляет структуру для взаимодействия вашей программы с элементами управления и индикации. Таким образом вы легко интегрируете систему управления в вашу задачу, для которой разрабатывается устройство.
  • Управлять микроконтроллерным устройством со смартфона или планшета, используя разработанный графический интерфейс. Для управления используется мобильное приложение RemoteXY.
  • При помощи одного мобильного приложения можно управлять большой гаммой устройств с разными графическими интерфейсами управления. Так как описание интерфейса хранится на борту микроконтроллерного устройства.

Источник: http://remotexy.com/ru/help

Как настроить удаленное управление компьютером через смартфон на Android или iOS

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

Удаленный доступ – это функция, которой можно найти массу применений. Многие пользователи компьютеров знают, что удаленно соединиться с другим PC можно, например, через программу TeamViewer.

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

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

Зачем нужен удаленный доступ к компьютеру

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

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

Можно привести «бытовые» примеры удобства использования удаленного управления компьютером в рамках одной Wi-fi сети.

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

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

Как настроить удаленное управление компьютером со смартфона

Существует множество программ, которые позволяют удаленно подключиться к компьютеру с мобильного устройства. В рамках данной статьи мы рассмотрим, как это сделать с помощью двух программ — Splashtop и TeamViewer. У каждой из них имеются свои преимущества.

Настройка Splashtop

Программа Splashtop имеет массу преимуществ перед конкурентами:

  • Простая и понятная настройка подключения;
  • Возможность переключения между способами управления: эмуляция работы мыши или жесты;
  • Практически нулевая задержка отклика действия;
  • Удаленная передача звука с возможностью вывода его одновременно на двух устройствах;
  • Мультиплатформенность – клиенты для удаленного подключения доступны на всех популярных операционных системах.

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

Рассмотрим настройку удаленного управления через Splashtop подробнее:

  1. Первым делом необходимо загрузить с сайта разработчиков бесплатный клиент программы Splashtop Personal. После загрузки программы ее требуется установить и запустить;
  2. Запустив приложение, вы увидите его стартовый экран. Чтобы начать трансляцию, нужно зарегистрироваться в программе, выбрав пункт «Create a Splashtop Account»;
  3. Регистрация довольно простая: почта, пароль. После нажатия «Создать учетную запись», в нее нужно будет авторизоваться через приложение. На этом настройка клиента для компьютера может считаться завершенной, если не требуется изменять дополнительные параметры;
  4. Далее необходимо загрузить приложение Splashtop на мобильное устройство. Сделать это можно на Android, iOS, Windows Phone. Обратите внимание: При необходимости, можно также подключаться с Splashtop с других компьютеров под управлением различных операционных систем;
  5. Скачав приложение, его потребуется запустить и авторизоваться в аккаунте. Во время авторизации к вам на почту будет отправлено письмо, в котором нужно активировать возможность работы с данным аккаунтом Splashtop с конкретного устройства;
  6. Авторизовавшись, вы увидите список компьютеров, к которым можно подключиться. Нажав на необходимый PC, появится возможность выбрать способ подключения: удаленный рабочий стол или удаленная камера. Для удаленного управления устройством нужно выбрать вариант подключения к рабочему столу;
  7. После этого можно пользоваться всеми инструментами компьютера с мобильного устройства. Для удобства работы, интерфейс приложения подразумевает наличие «горячих клавиш» и различных способов управления.

Стоит отметить, что приложение Splashtop удобно использовать, когда требуется взаимодействовать с компьютером в одной Wi-fi сети. При этом функциональность удаленного подключения с мобильного устройства к PC через Splashtop вне сети Wi-fi является платной, и в таких ситуациях можно использовать бесплатно программу TeamViewer.

Настройка TeamViewer

Источник: https://okeygeek.ru/udalennoe-upravlenie-kompyuterom-cherez-smartfon-ili-planshet/

Ссылка на основную публикацию