Nodemcu – быстрый старт для любителей arduino

Arduino IDE для ESP8266

Источник: http://nhpt.3dn.ru/index/esp8266_nodemcu_on_arduino/0-81

NodeMcu V3 подключение, прошивка и работа в ARDUINO IDE – Видео

2 лет назад

#BLYNK, #умныйдом, #управлениенагрузкой, #nodemcu, #esp8266, #smarthouse, #arduino Начало работы с сервером BLYNK – прошивка NodeMCU (esp8266) -Устанавливаем приложение BLYNK; -Регистрируем аккаунт на сервере BLYNK; -Установка библиотеке в ардуино (ARDUINO IDE); – NodeMCU прошиваем BLYNK -Запись скетча для управления реле из приложения BLYNK с мобильного устройства. УРОКИ BLYNK BLYNK машинка (робот) WI-FI : https://youtu.be/aFn76JRL57o BLYNK термометр, подключаем датчик DS18b20: https://youtu.be/yTcwdQ_aXdw BLYNK подключаем реле и сенсорную кнопку: https://youtu.be/RoOUFF5LSW4 BLYNK WI-FI RFID электронный замок с сенсорной кнопкой: https://youtu.be/WYa6oem9NpU BLYNK GPRS подключаемся с помощью модема SIM800l: https://youtu.be/h-E0OG_EmjA BLYNK фоторезистор датчик освещенности : https://youtu.be/8zOQxXAbptA

1 лет назад

Микроконтроллер NODE MCU достойная замена Ардуино – работаем в Flprog без написания кода. Микроконтроллер NODE MCU: http://ali.pub/1thoiv Ссылка для настроек в IDE: http://arduino.esp8266.com/stable/package_esp8266com_index.json Скетч Flprog: https://yadi.sk/d/yt8i3FCE3Mjzp3 Плата Arduino UNO №1: http://ali.pub/8sz69 Плата Arduino UNO №2: http://ali.

pub/t9ojr Arduino UNO на выбор: http://ali.pub/h6n9g Arduino NANO: http://ali.pub/1owdc3 ArduinoPro Mini+USB UART/TTL (конвертер прошивальщик): http://ali.pub/1owdy2 Arduino sensor shield v5.0: http://ali.pub/1bfevy Arduino sensor shield на выбор: http://ali.pub/1bffc3 Обзор – Arduino sensor shield v5.0: https://youtu.be/gWGo75wSl64 Описание Arduino sensor shield v5.

0 на сайте FLprog: https://goo.gl/38xul5 Платформа для Arduino: http://ali.pub/1j5r14 Платформа для Arduino на выбор: http://ali.pub/1j5qpu Двухстрочный дисплей: http://ali.pub/19iccq Четырёхстрочный дисплей: http://ali.pub/19ide2 Дисплей на выбор: http://ali.pub/19idw5 Часы реального времени Ардуино: http://ali.pub/18hybl Датчик препятствий: http://ali.

pub/1dl0rn Датчик препятствий на выбор: http://ali.pub/1dl17e Датчик газа и дыма MQ-2: http://ali.pub/1cshp2 Датчик газа и дыма на выбор: http://ali.pub/1csi8b Дальномер HC-SR04: http://ali.pub/1i9exv Дальномер HY-SRF05: http://ali.pub/1i9fd1 Люксметр: http://ali.pub/1naoed Люксметр на выбор: http://ali.pub/1naoov Датчик влажности: http://ali.pub/17qlfm Датчик индуктивности: http://ali.

pub/1kcaap Датчик индуктивности на выбор: http://ali.pub/1kcax2 Датчик BMP180 (Барометр): http://ali.pub/1la98m Четырёхканальное реле Arduino на выбор: http://ali.pub/171pgl Реле на выбор:http://ali.pub/17ql11 Сервоприводы: http://ali.pub/1f8utg Макетные платы: http://ali.pub/171qnk Макетные платы на выбор: http://ali.pub/1hnp9o Драйвер двигателей: http://ali.

pub/1a1zxx Драйвер двигателей на выбор: http://ali.pub/1a20bj Мотор с редуктором: http://ali.pub/1a211z Мотор на выбор: http://ali.pub/1a232w Колёса: http://ali.pub/1a23dz Колёса на выбор: http://ali.pub/1a23ye RGB Светодиоды модульные: http://ali.pub/1oa2nw RGB Светодиоды на выбор: http://ali.pub/1oa36y Модуль EEPROM AT24C256: http://ali.pub/1qsaa3 Модуль EEPROM на выбор: http://ali.

pub/1qsaly Стартовый набор для начинающих ардуинщиков обзор https://youtu.be/AVPVClkJYB0 Ссылки на покупку под видео

11 меc назад

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

Но проект Массимо Банци перевернул DIY И как любая революционная технология, Arduino обросла легендами и мифами. Сегодня мы разберём самые популярные из них. 00:42 Arduino — это микроконтроллер. Почему это не так и что такое Wiring и Processing. 02:41 Все платы Arduino одинаковые. Nano, Lilly Pad, Yun, Tian и Mega — кто все эти платы.

03:58 Uno — лучшая плата из линейки Arduino. Что такое Leonardo и почему они появились на свет. 05:12 Arduino делаются только в Италии. Как поссорились Массимо Банци и Джанлука Мартино. 05:51 Производить Arduino может кто угодно. Чем отличаются китайские клоны и как собрать ардуино своими руками.

_________________________________________________________________ Заведи себе Arduino — http://amperka.ru/collection/arduino?utm_source=announce&utm_campaign=arduino-myths&utm_medium=youtube Узнай как создавать гаджеты — http://amperka.

ru/product/matryoshka-z-iskra?utm_source=announce&utm_campaign=arduino-myths&utm_medium=youtube Собираем Arduino своими руками — http://wiki.amperka.ru/diy:arduino?utm_source=announce&utm_campaign=arduino-myths&utm_medium=youtube #arduino #amperka #железкиамперки

5 меc назад

Репитер (повторитель, усилитель) wi fi сигнала своими руками. Репитер сделан на базе модуля ESP8266. Получается гораздо дешевле чем многие готовые аналоги. – nodemcu Lua V3 esp8266: http://ali.ski/OsDT7 или здесь: http://ali.

ski/Do9dz – архив с программой и файлами для прошивки: https://yadi.sk/d/iWn1j-pX3US5sB – архив для печати корпуса: https://yadi.sk/d/X1v23Cau3US69D Для тех кто хочет экономить при покупках на AliExpress: – Мегабонус : https://goo.

gl/PSpqbL – ePN : http://epngo.bz/cashback_index/kg4t6n

2 лет назад

Источник: https://inlove.kz/watch/NodeMcu-V3-podklyuchenie-proshivka-i-rabota-v-ARDUINO-IDE/-lV1RZYmZV4

Настройка Arduino IDE для NodeMCU

NodeMCU — это популярная и очень удобная платформа на основе WiFi модуля ESP-8266. По сути, NodeMCU представляет собой плату, на которой размещены: сам модуль ESP-8266, стабилизатор напряжения и USB-UART мост.

Существуют разные версии ESP8266, но почти для всех используется один и тот же способ настройки среды разработки Arduino IDE. О том, как, собственно, сделать эту настройку и пойдет речь в статье.

1. Настройка ESP8266 в Arduino IDE

Для этой процедуры необходим доступ в интернет, так как Arduino IDE требуется скачать дополнительные пакеты.

Заходим в настройки Arduino IDE:

В поле Дополнительные ссылки для Менеджера плат пишем такую ссылку:

http://arduino.esp8266.com/stable/package_esp8266com_index.json

Жмем ОК и переходим в окно менеджера плат:

В строке поиска менеджера плат пишем «esp». 

В самом низу будет нужный нам пакет «esp8266 by ESP8266 Community». Выбираем его и жмем кнопку «Установка».

Спустя некоторое время пакет скопирует необходимые файлы и в Arduino IDE можно будет выбрать нужную нам плату.

2. Подключение светодиода к NodeMCU

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

Для начала посмотрим на схемы выводов NodeMCU.

Плата имеет 13 цифровых выводов, обозначенных аббревиатурой GPIO. Можем подключить светодиод к любому из них. Пусть это будет вывод D7 (он же GPIO13).

Принципиальная схема

Внешний вид макета

NodeMCU работает с напряжением 3.3 Вольта, так что для подключения красного светодиода нам потребуется использовать токозадающий резистор с сопротивлением 65 Ом. Но подойдет и распространенный резистор 200 Ом.

3. Загрузка программы на NodeMCU с помощью Arduino IDE

Теперь, когда Arduino IDE умеет работать с NodeMCU и светодиод подключен, попробуем загрузить первую программу.

В меню «Инструменты/Плата» выбираем NodeMCU 1.0.

Пишем программу:

const byte ledPin = 13; void setup() { pinMode(ledPin, OUTPUT); } void loop() { digitalWrite(ledPin, HIGH); delay(500); digitalWrite(ledPin, LOW); delay(500); }

Загружаем программу на NodeMCU, смотрим на светодиод

Источник: http://robotclass.ru/articles/node-mcu-arduino-ide-setup/

Особенности создания программ в NODEMCU ESP8266 для «интернета вещей»

К изучению возможностей микросхемы ESP8266 я приступил пару месяцев назад.

Первоначально приобрел, как и большинство, модуль ESP-01, но почти сразу нашел новое на тот момент решение на основе модуля ESD-12 в виде DEVKIT и прошивкой nodeMCU, в которую встроена VM LUA версии 5.1.4(без debug и OS*модулей).

Есть несколько способов приобщиться к миру прекрасного — «интернета вещей». Можно взять модуль ESP-01, в котором 512 Кбайт флеш, есть UART интерфейс, пара контактов ESP, добавить к нему интерфейс на USB в последствии перепаять флеш на больший объем.

Для тех, у кого нет желания, либо умения заниматься доработкой модуля, но хочется приобщиться и начать сразу программировать, есть другой способ — это указанная выше плата DEVKIT. Если учесть разность цен решения в 10 долларов — выбор за вами.

Что же хорошего в данном модуле DEVKIT?

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

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

Для подключения датчиков к контактам платы DEVKIT я использовал шлейф от старого компьютера для подключения периферии (дисков, CDROM, портов и т.д.) Как видите, я подключил к модулю все или почти все.

В проекте — частотное управление двигателем и ПИД регулирование силовыми установками (нагревателями и выключателями).

В-третьих, модуль уже имеет flash 4 Mбайт, а NODEMCU имеет встроенную файловую систему spiffs.

В-четвертых, есть возможность обновлять прошивку из облака или через USB.

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

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

json, file, timer, pwm, i2c, spi, 1-wire, net, mqtt, coap, gpio, wifi, adc, uart и system api.

Контракты платы могут быть запрограммированы для gpio, i2c, pwm.

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

Но проблема в том, что для отладки каждого изменения в своей программе необходимо собирать прошивку объемом 200 KБ и грузить в модуль примерно 1 минуту. Т.е. сколько ошибок — столько минут.

Другой путь — отладка модулей на LUA и в последствии (если есть необходимость) перенос их на СИ с помощью API CИ для LUA (я, собственно, так и делаю). Одна ошибка — это примерно 1-2КБ и загрузка 1-2 сек. Т.е. сколько ошибок — столько секунд.

Какие же недостатки есть у данного модуля

Основной недостаток в том, что VM LUA исполняет LUA скрипты лишь размещенные в оперативной памяти кристалла. А этой памяти для скриптов всего лишь 20 Кбайт. Этого объема памяти хватает на исполнение скрипта примерно в 110 строк. Поэтому создание сравнительно больших скриптов для данного модуля имеет свою специфику.

Во-первых, необходимо алгоритм разделить на линейные блоки.

Во вторых, записать эти блоки в отдельные файлы файловой системы модуля
В-третьих, исполнять эти модули с помощью оператора dofile. При написании модулей надо придерживаться следующих правил: — В конце каждого модуля явно вызвать сборщик мусора; — Для обмена данными между модулями использовать глобальные переменные, а для вычислений внутри модулей -локальные. В результате основная программа на lua выглядит примерно так (один из рабочих вариантов):

dofile('nk_start.lc') — вызов модуля начальной инициализации датчиков

function cb() — колбек функция периодического измерения показаний датчиков
collectgarbage() — вызов сборщика мусора
if ip==nil then
dofile('wifi_1.lua') — функция инициализации wifi станции либо сервера
end
if ip~=nil and is==nil then
dofile('srv_1.lua'); — в данном варианте реализуется web сервер
is=1;
end
dofile('cbAM2302.lc'); — получение данных с датчика влажности и температуры AM2302
dofile('cb18b20.lua'); — получение показаний с датчиков температуры DS18B20(у меня их три)
dofile('get_tp.lc'); dofile('norm.lc'); –получение показаний с датчика давления и температуры(BMP180)
end
tmr.alarm(3,1000,1,cb) — таймер дискретизации — вызывает колбек функцию. частота дискретизации 1 Гц Так как в этой программе каждый модуль занимает место предыдущего, то таких модулей может быть много. Все они хранятся в файловой системе.

Если реализовать алгоритм данной программы без использование разбивки на модули, то в памяти модуля сможет разместиться программа лишь для одного датчика (либо AM2302, либо 18b20, либо BMP180).

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

Персональный сайт Пьяных А.В

Ссылка на основную публикацию
Adblock
detector
",css:{backgroundColor:"#000",opacity:.6}},container:{block:void 0,tpl:"
"},wrap:void 0,body:void 0,errors:{tpl:"
",autoclose_delay:2e3,ajax_unsuccessful_load:"Error"},openEffect:{type:"fade",speed:400},closeEffect:{type:"fade",speed:400},beforeOpen:n.noop,afterOpen:n.noop,beforeClose:n.noop,afterClose:n.noop,afterLoading:n.noop,afterLoadingOnShow:n.noop,errorLoading:n.noop},o=0,p=n([]),h={isEventOut:function(a,b){var c=!0;return n(a).each(function(){n(b.target).get(0)==n(this).get(0)&&(c=!1),0==n(b.target).closest("HTML",n(this).get(0)).length&&(c=!1)}),c}},q={getParentEl:function(a){var b=n(a);return b.data("arcticmodal")?b:(b=n(a).closest(".arcticmodal-container").data("arcticmodalParentEl"),!!b&&b)},transition:function(a,b,c,d){switch(d=null==d?n.noop:d,c.type){case"fade":"show"==b?a.fadeIn(c.speed,d):a.fadeOut(c.speed,d);break;case"none":"show"==b?a.show():a.hide(),d();}},prepare_body:function(a,b){n(".arcticmodal-close",a.body).unbind("click.arcticmodal").bind("click.arcticmodal",function(){return b.arcticmodal("close"),!1})},init_el:function(d,a){var b=d.data("arcticmodal");if(!b){if(b=a,o++,b.modalID=o,b.overlay.block=n(b.overlay.tpl),b.overlay.block.css(b.overlay.css),b.container.block=n(b.container.tpl),b.body=n(".arcticmodal-container_i2",b.container.block),a.clone?b.body.html(d.clone(!0)):(d.before("
"),b.body.html(d)),q.prepare_body(b,d),b.closeOnOverlayClick&&b.overlay.block.add(b.container.block).click(function(a){h.isEventOut(n(">*",b.body),a)&&d.arcticmodal("close")}),b.container.block.data("arcticmodalParentEl",d),d.data("arcticmodal",b),p=n.merge(p,d),n.proxy(e.show,d)(),"html"==b.type)return d;if(null!=b.ajax.beforeSend){var c=b.ajax.beforeSend;delete b.ajax.beforeSend}if(null!=b.ajax.success){var f=b.ajax.success;delete b.ajax.success}if(null!=b.ajax.error){var g=b.ajax.error;delete b.ajax.error}var j=n.extend(!0,{url:b.url,beforeSend:function(){null==c?b.body.html("
"):c(b,d)},success:function(c){d.trigger("afterLoading"),b.afterLoading(b,d,c),null==f?b.body.html(c):f(b,d,c),q.prepare_body(b,d),d.trigger("afterLoadingOnShow"),b.afterLoadingOnShow(b,d,c)},error:function(){d.trigger("errorLoading"),b.errorLoading(b,d),null==g?(b.body.html(b.errors.tpl),n(".arcticmodal-error",b.body).html(b.errors.ajax_unsuccessful_load),n(".arcticmodal-close",b.body).click(function(){return d.arcticmodal("close"),!1}),b.errors.autoclose_delay&&setTimeout(function(){d.arcticmodal("close")},b.errors.autoclose_delay)):g(b,d)}},b.ajax);b.ajax_request=n.ajax(j),d.data("arcticmodal",b)}},init:function(b){if(b=n.extend(!0,{},a,b),!n.isFunction(this))return this.each(function(){q.init_el(n(this),n.extend(!0,{},b))});if(null==b)return void n.error("jquery.arcticmodal: Uncorrect parameters");if(""==b.type)return void n.error("jquery.arcticmodal: Don't set parameter \"type\"");switch(b.type){case"html":if(""==b.content)return void n.error("jquery.arcticmodal: Don't set parameter \"content\"");var e=b.content;return b.content="",q.init_el(n(e),b);case"ajax":return""==b.url?void n.error("jquery.arcticmodal: Don't set parameter \"url\""):q.init_el(n("
"),b);}}},e={show:function(){var a=q.getParentEl(this);if(!1===a)return void n.error("jquery.arcticmodal: Uncorrect call");var b=a.data("arcticmodal");if(b.overlay.block.hide(),b.container.block.hide(),n("BODY").append(b.overlay.block),n("BODY").append(b.container.block),b.beforeOpen(b,a),a.trigger("beforeOpen"),"hidden"!=b.wrap.css("overflow")){b.wrap.data("arcticmodalOverflow",b.wrap.css("overflow"));var c=b.wrap.outerWidth(!0);b.wrap.css("overflow","hidden");var d=b.wrap.outerWidth(!0);d!=c&&b.wrap.css("marginRight",d-c+"px")}return p.not(a).each(function(){var a=n(this).data("arcticmodal");a.overlay.block.hide()}),q.transition(b.overlay.block,"show",1*")),b.overlay.block.remove(),b.container.block.remove(),a.data("arcticmodal",null),n(".arcticmodal-container").length||(b.wrap.data("arcticmodalOverflow")&&b.wrap.css("overflow",b.wrap.data("arcticmodalOverflow")),b.wrap.css("marginRight",0))}),"ajax"==b.type&&b.ajax_request.abort(),p=p.not(a))})},setDefault:function(b){n.extend(!0,a,b)}};n(function(){a.wrap=n(document.all&&!document.querySelector?"html":"body")}),n(document).bind("keyup.arcticmodal",function(d){var a=p.last();if(a.length){var b=a.data("arcticmodal");b.closeOnEsc&&27===d.keyCode&&a.arcticmodal("close")}}),n.arcticmodal=n.fn.arcticmodal=function(a){return e[a]?e[a].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof a&&a?void n.error("jquery.arcticmodal: Method "+a+" does not exist"):q.init.apply(this,arguments)}}(jQuery)}var debugMode="undefined"!=typeof debugFlatPM&&debugFlatPM,duplicateMode="undefined"!=typeof duplicateFlatPM&&duplicateFlatPM,countMode="undefined"!=typeof countFlatPM&&countFlatPM;document["wri"+"te"]=function(a){let b=document.createElement("div");jQuery(document.currentScript).after(b),flatPM_setHTML(b,a),jQuery(b).contents().unwrap()};function flatPM_sticky(c,d,e=0){function f(){if(null==a){let b=getComputedStyle(g,""),c="";for(let a=0;a=b.top-h?b.top-h{const d=c.split("=");return d[0]===a?decodeURIComponent(d[1]):b},""),c=""==b?void 0:b;return c}function flatPM_testCookie(){let a="test_56445";try{return localStorage.setItem(a,a),localStorage.removeItem(a),!0}catch(a){return!1}}function flatPM_grep(a,b,c){return jQuery.grep(a,(a,d)=>c?d==b:0==(d+1)%b)}function flatPM_random(a,b){return Math.floor(Math.random()*(b-a+1))+a}
");let k=document.querySelector(".flat_pm_modal[data-id-modal=\""+a.ID+"\"]");if(-1===d.indexOf("go"+"oglesyndication")?flatPM_setHTML(k,d):jQuery(k).html(b+d),"px"==a.how.popup.px_s)e.bind(h,()=>{e.scrollTop()>a.how.popup.after&&(e.unbind(h),f.unbind(i),j())}),void 0!==a.how.popup.close_window&&"true"==a.how.popup.close_window&&f.bind(i,()=>{e.unbind(h),f.unbind(i),j()});else{let b=setTimeout(()=>{f.unbind(i),j()},1e3*a.how.popup.after);void 0!==a.how.popup.close_window&&"true"==a.how.popup.close_window&&f.bind(i,()=>{clearTimeout(b),f.unbind(i),j()})}f.on("click",".flat_pm_modal .flat_pm_crs",()=>{jQuery.arcticmodal("close")})}if(void 0!==a.how.outgoing){let b,c="0"==a.how.outgoing.indent?"":" style=\"bottom:"+a.how.outgoing.indent+"px\"",e="true"==a.how.outgoing.cross?"":"",f=jQuery(window),g="scroll.out"+a.ID,h=void 0===flatPM_getCookie("flat_out_"+a.ID+"_mb")||"false"!=flatPM_getCookie("flat_out_"+a.ID+"_mb"),i=document.createElement("div"),j=jQuery("body"),k=()=>{void 0!==a.how.outgoing.cookie&&"false"==a.how.outgoing.cookie&&h&&(jQuery(".flat_pm_out[data-id-out=\""+a.ID+"\"]").addClass("show"),j.on("click",".flat_pm_out[data-id-out=\""+a.ID+"\"] .flat_pm_crs",function(){flatPM_setCookie("flat_out_"+a.ID+"_mb",!1)})),(void 0===a.how.outgoing.cookie||"false"!=a.how.outgoing.cookie)&&jQuery(".flat_pm_out[data-id-out=\""+a.ID+"\"]").addClass("show")};switch(a.how.outgoing.whence){case"1":b="top";break;case"2":b="bottom";break;case"3":b="left";break;case"4":b="right";}jQuery("body > *").eq(0).before("
"+e+"
");let m=document.querySelector(".flat_pm_out[data-id-out=\""+a.ID+"\"]");-1===d.indexOf("go"+"oglesyndication")?flatPM_setHTML(m,d):jQuery(m).html(e+d),"px"==a.how.outgoing.px_s?f.bind(g,()=>{f.scrollTop()>a.how.outgoing.after&&(f.unbind(g),k())}):setTimeout(()=>{k()},1e3*a.how.outgoing.after),j.on("click",".flat_pm_out .flat_pm_crs",function(){jQuery(this).parent().removeClass("show").addClass("closed")})}countMode&&(flat_count["block_"+a.ID]={},flat_count["block_"+a.ID].count=1,flat_count["block_"+a.ID].click=0,flat_count["block_"+a.ID].id=a.ID)}catch(a){console.warn(a)}}function flatPM_start(){let a=flat_pm_arr.length;if(0==a)return flat_pm_arr=[],void jQuery(".flat_pm_start, .flat_pm_end").remove();flat_body=flat_body||jQuery("body"),!flat_counter&&countMode&&(flat_counter=!0,flat_body.on("click","[data-flat-id]",function(){let a=jQuery(this),b=a.attr("data-flat-id");flat_count["block_"+b].click++}),flat_body.on("mouseenter","[data-flat-id] iframe",function(){let a=jQuery(this),b=a.closest("[data-flat-id]").attr("data-flat-id");flat_iframe=b}).on("mouseleave","[data-flat-id] iframe",function(){flat_iframe=-1}),jQuery(window).on("beforeunload",()=>{jQuery.isEmptyObject(flat_count)||jQuery.ajax({async:!1,type:"POST",url:ajaxUrlFlatPM,dataType:"json",data:{action:"flat_pm_ajax",data_me:{method:"flat_pm_block_counter",arr:flat_count}}})}).on("blur",()=>{-1!=flat_iframe&&flat_count["block_"+flat_iframe].click++})),flat_userVars.init();for(let b=0;bflat_userVars.textlen||void 0!==a.chapter_sub&&a.chapter_subflat_userVars.titlelen||void 0!==a.title_sub&&a.title_subc&&cc&&c>d&&(b=flatPM_addDays(b,-1)),b>e||cd||c-1!=flat_userVars.referer.indexOf(a))||void 0!==a.referer.referer_disabled&&-1!=a.referer.referer_disabled.findIndex(a=>-1!=flat_userVars.referer.indexOf(a)))&&(c=!0),c||void 0===a.browser||(void 0===a.browser.browser_enabled||-1!=a.browser.browser_enabled.indexOf(flat_userVars.browser))&&(void 0===a.browser.browser_disabled||-1==a.browser.browser_disabled.indexOf(flat_userVars.browser)))){if(c&&void 0!==a.browser&&void 0!==a.browser.browser_enabled&&-1!=a.browser.browser_enabled.indexOf(flat_userVars.browser)&&(c=!1),!c&&(void 0!==a.geo||void 0!==a.role)&&(""==flat_userVars.ccode||""==flat_userVars.country||""==flat_userVars.city||""==flat_userVars.role)){flat_pm_then.push(a),flatPM_setWrap(a),flat_body.hasClass("flat_pm_block_geo_role")||(flat_body.addClass("flat_pm_block_geo_role"),flatPM_ajax("flat_pm_block_geo_role")),c=!0}c||(flatPM_setWrap(a),flatPM_next(a))}}}let b=jQuery(".flatPM_sticky");b.each(function(){let a=jQuery(this),b=a.data("height")||350,c=a.data("top");a.wrap("
");let d=a.parent()[0];flatPM_sticky(this,d,c)}),debugMode||countMode||jQuery("[data-flat-id]:not([data-id-out]):not([data-id-modal])").contents().unwrap(),flat_pm_arr=[],jQuery(".flat_pm_start, .flat_pm_end").remove()}

Arduino IDE для ESP8266

Arduino IDE для ESP8266 позволяет писать скетчи и загружать их одним кликом в ESP8266 в знакомой среде (я бы даже сказал «до боли знакомой») Arduino IDE. Для тех кому интерфейс Arduino IDE не очень по душе, есть поддержка плагина для Eclipse. Итак, обо всем по порядку. Самые нетерпеливые могут сразу перейти к Arduino IDE для ESP8266: быстрый старт

Arduino IDE для ESP8266 позволяет создавать прошивки и прошивать их в ESP8266 точно так же, как вы это делаете с Arduino.

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

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

Arduino IDE для ESP8266 поддерживает все существующие на сегодняшний день модули ESP8266 (потому что они особо и не отличаются), включая модули с флеш бОльшего, чем 512k объема. Поддерживаются модули NodeMCU (всех версий), Olimex-MOD-WiFi-ESP8266.

Поддерживается режим авторестарта и прошивки по RTS+DTR, как у обычной Arduino, для этого потребуется USB-TTL адаптер с разведенными пинами DTR и RTS. Если у вас только RX, TX и GND на USB-TTL, то придется по-старинке вручную притягивать к земле GPIO0 и передергивать питание модуля для прошивки.

Arduino IDE для ESP8266: краткий обзор реализованных в настоящее время функций

Базовые функции языка Wiring

Управление GPIO осуществляется точно также, как и управление pin для arduino: pinMode,digitalRead, digitalWrite,   analogWrite функционируют как обычно. GPIO нумеруются так, как мы уже привыкли: для чтения состояния GPIO2 нужно использовать командуdigitalRead(2)

GPIO0-GPIO15 могут быть INPUT, OUTPUT, INPUT_PULLUP, и INPUT_PULLDOWN. GPIO16 может быть только INPUT, OUTPUT или INPUT_PULLDOWN. Команда analogRead(A0) считывает значение ADC (АЦП) с TOUT.

Команда analogWrite(pin, value) включает программный PWM (ШИМ) на указанном GPIO. Команда analogWrite(pin, 0) отключает PWM. value может быть в диапазоне от 0 до PWMRANGE. Константа PWMRANGE в настоящее время равна 1023.

Поддержка прерываний обеспечивается функциями attachInterrupt, detachInterrupt. Прерывания могут быть назначены на любой GPIO, кроме GPIO16. Стандартные прерывания Arduino CHANGE, RISING, FALLING тоже поддерживаются.

ESP8266 — функции пинов

Тайминг и delay

Функции millis и micros возвращают миллисекунды и микросекунды соответственно, прошедшие с момента старта модуля. Любимая многими функция delay также присутствует и приостанавливает выполнение скетча на указанное время в миллисекундах и позволяет отработать операциям WiFi и TCP/IP. ФункцияdelayMicroseconds используется аналогично, только время задается в микросекундах.

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

WiFi и TCP/IP функции библиотек SDK имеют возможность обработать все события в очереди после завершения каждого цикла вашей функции loop() или во время выполнения delay(…).

Если в вашем коде есть фрагменты, которые выполняются более 50 миллисекунд, то необходимо использовать  delay(…) для сохранения нормальной работоспособности стека WiFi.

Также вы можете использовать функцию yield(), которая эквивалентна delay(0). С другой стороны, функция delayMicroseconds блокирует выполнение других задач, поэтому ее использование для временных задержек свыше 20 миллисекунд не рекомендуется.

Последовательные порты Serial и Serial1 (UART0 и UART1)

Объект Serial работает точно также, как и с Arduino. Помимо аппаратного FIFO (по 128 байт для приема и передачи) определен и программный буфер размером по 256 байт для приема и передачи данных.

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

Serial использует аппаратный UART0, работающий на GPIO1(TX) и GPIO3(RX). Эти пины могут быть переназначены на GPIO15 (TX) и GPIO13 (RX) вызовом функции Serial.swap();после Serial.begin();. Повторный вызов Serial.swap(); вернет все на свои места.

Serial1 использует аппаратный UART1, работающий только на передачу. UART1 TX это GPIO2. Для включения Serial1 используйте Serial1.begin();

По умолчанию, отладочная информация библиотек WiFi выключается, когда вы вызываете функцию Serial.begin();. Для включения отладочной информации на UART0 используйте Serial.setDebugOutput(true); Для перенаправления вывода отладочной информации на UART1 используйте команду Serial1.setDebugOutput(true);

И Serial и Serial1 поддерживают 5, 6, 7, 8 бит данных, odd (O), even (E), и no (N) режимы четности, и 1 или 2 стоп бита. Для выбора нужного режима вызывайтеSerial.begin(baudrate, SERIAL_8N1); или Serial.begin(baudrate, SERIAL_6E2); и т.д.

PROGMEM

Макрос PROGMEM работает точно также, как в Arduino, помещая read only данные и строковые константы (литералы) во флеш память, высвобождая HEAP.

Важное отличие состоит в том, что в ESP8266 одинаковые литералы не хранятся в одном месте, поэтому использование строковых констант внутри конструкций F(“”) и/или PSTR(“”) приводит к расходованию флеш памяти при каждом вызове этих функций.

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

Библиотека WiFi ESP8266 (ESP8266WiFi)

Функции библиотеки WiFi ESP8266 очень схожи с функциями библиотеки для обычного WiFi шилда.

Список отличий:

  • WiFi.mode(m): выбрать режим WIFI_AP (точка доступа), WIFI_STA (клиент), илиWIFI_AP_STA (оба режима одновременно).
  • WiFi.softAP(ssid) создает открытую точку доступа
  • WiFi.softAP(ssid, password) создает точку доступа с WPA2-PSK шифрованием, пароль должен быть не менее 8 символов
  • WiFi.macAddress(mac) позволяет получить MAC адрес в режиме клиента
  • WiFi.softAPmacAddress(mac) позволяет получить MAC адрес в режиме точки доступа
  • WiFi.localIP() позволяет получить IP адрес в режиме клиента
  • WiFi.softAPIP() позволяет получить IP адрес в режиме точки доступа
  • WiFi.RSSI() пока не реализована
  • WiFi.printDiag(Serial); выводит диагностическую информацию
  • Класс WiFiUDP поддерживает прием и передачу multicast пакетов в режиме клиента. Для передачи multicast пакета используйте вместо udp.beginPacket(addr, port)функцию udp.beginPacketMulticast(addr, port, WiFi.localIP()). Когда вы ожидаете multicast пакеты, используйте вместо udp.begin(port) функциюudp.beginMulticast(WiFi.localIP(), multicast_ip_addr, port). Вы можете использовать udp.destinationIP() для определения того, был ли пакет отправлен на multicast адрес или предназначался именно вам. Multicast функции не поддерживаются в режиме точки доступа.

WiFiServer, WiFiClient, и WiFiUDP работаю точно так же, как и с библиотекой обычного WiFi шилда. Четыре примера идет в комплекте с этой библиотекой.

Тикер

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

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

EEPROM

Эта библиотека немного отличается от стандартной Arduino EEPROM. Необходимо вызвать функцию EEPROM.begin(size) каждый раз перед началом чтения или записи, размер (указывается в байтах) соответствует размеру данных, которые вы намереваетесь использовать в EEPROM. Размер данных должен быть в диапазоне от 4 до 4096 байт.

Функция EEPROM.write не производит запись данных во флеш память немедленно, вы должны использовать функцию EEPROM.commit() каждый раз, когда вы хотите сохранить данные в память. Функция EEPROM.

end() тоже производит запись данных, а также освобождает оперативную память от данных, запись которых произведена. Библиотека EEPROM использует один сектор во флеш памяти, начиная с адреса 0x7b000 для хранения данных.

В поставку включено три примера работы с EEPROM.

I2C (Библиотека Wire)

Реализован только режим ведущего, частота ориентировочно до 450 кГц. Перед использованием шины I2C, нужно выбрать пины SDA и SCL путем вызова функцииWire.pins(int sda, int scl), например Wire.pins(0, 2) для модуля ESP-01. Для других модулей пины по умолчанию 4(SDA) и 5(SCL).

SPI

Библиотека SPI поддерживает весь Arduino SPI API, включая транзакции, в том числе фазу синхронизации (CPHA). Clock polarity (CPOL) пока не поддерживается (SPI_MODE2 и SPI_MODE3 не работают).

ESP8266 API

Поддержка функций, специфичных для ESP8266 (режим глубокого сна и сторожевой таймер), реализована в объекте ESP. Функция ESP.deepSleep(microseconds, mode)переводит модуль в режим глубокого сна. Параметр mode может принимать значения:WAKE_DEFAULT, WAKE_RFCAL, WAKE_NO_RFCAL, WAKE_RF_DISABLED. GPIO16 должен быть соединен с RESET для выхода из режима глубокого сна.

Функции ESP.wdtEnable(), ESP.wdtDisable(), и ESP.wdtFeed() управляют сторожевым таймером.

ESP.reset() перезагружает модуль

ESP.getFreeHeap() возвращает размер свободной памяти

ESP.getFreeHeap() возвращает размер свободной памяти

ESP.getChipId() возвращает ESP8266 chip IDE, int 32bit

ESP.getFlashChipId() возвращает flash chip ID, int 32bit

ESP.getFlashChipSize() возвращает размер флеш памяти в байтах, так, как его определяет SDK (может быть меньше реального размера).

ESP.getFlashChipSpeed(void) возвращает частоту флеш памяти, в Гц.

ESP.getCycleCount() возвращает количество циклов CPU с момента старта, unsigned 32-bit. Может быть полезна для точного тайминга очень коротких операций

Библиотека OneWire

Библиотека OneWire была адаптирована для ESP8266 (внесены изменения в OneWire.h) Если у вас установлена библиотека OneWire в папку Arduino/libraries, то будет использоваться именно она, а не из комплекта поставки.

mDNS библиотека ESP8266mDNS

Библиотека позволяет реализовать в вашей программе ответ на мультикастовые DNS запросы для локальной зоны, например «esp8266.local». В настоящее время поддерживается только одна зона. Позволяет обращаться к WEB серверу ESP8266 по имени, а не только по IP адресу. Дополнительную информацию вы можете найти в прилагаемом примере и в файле readme данной библиотеки.

Библиотека Servo

Библиотека позволяет управлять сервомоторами. Поддерживает до 24 сервоприводов на любых доступных GPIO. По умолчанию первые 12 сервоприводов будут использовать Timer0 и будут независимы от любых других процессов.

Следующие 12 сервоприводов будут использовать Timer1 и будут разделять ресурсы с другими функциями, использующими Timer1. Большинство сервоприводов будут работать с управляющим сигналом ESP8266 3,3в, но не смогут работать на напряжении 3,3в и потребуют отдельный источник питания.

Не забудьте соединить общий провод GND этого источника с GND ESP8266

Другие библиотеки, не включенные в поставку Arduino IDE

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

  • arduinoWebSockets — WebSocket сервер и клиент для esp8266 (RFC6455)
  • aREST REST API handler библиотека, позволяет управлять GPIO через http запросы вида http://192.168.1.101/digital/6/1
  • Blynk — легкий в освоении IoT фреймворк (страница на Kickstarter). Статья на нашем сайте об этой библиотеке и мобильном приложении ESP8266 – Управляем со смартфона через Blynk
  • DallasTemperature DS18B20, DS1820, DS18S20, DS1822
  • DHT11 — используйте для инициализации следующие параметры DHT dht(DHTPIN,DHTTYPE, 15)
  • NeoPixelBus — Arduino NeoPixel библиотека для esp8266
  • PubSubClient Библиотека MQTT by @Imroy. Статья на нашем сайте
  Сегодня я буду рассматривать возможность управления 4 реле из приложения мобильного устройства с ОС Android по сети WiFi. В статье я рассмотрю три решения.   1. С помощью готовых библиотек aRest.   2. Написанной «руками» программы для NodeMCU.   3. С помощью облачного сервиса Blynk.   Для первых двух решений будет создано приложение в сервисе MIT App Inventor 2, работающее в ОС Android. Третье решение предусматривает использование готового приложения поставляемого сервисом Blynk.

   Начнем сначала.

   Чип ESP8266

   Чип ESP8266 разработан специально для «интернета вещей». Существует два варианта использования этого чипа. Первый – в качестве моста UART-WIFI для подключения к микроконтроллеру и управления АТ-командами. Второй вариант – чип сам исполняет роль управляющего контроллера. По моим оценкам в среде любителей электроники чип чаще используется как управляющий контроллер.

   Возможности чипа:

  • Поддержка 802.11 b/g/n
  • Встроенный 32-bit MCU с низким энергопотреблением
  • Встроенный 10-bit ADC
  • Встроенный стек TCP/IP
  • Встроенный усилитель ВЧ сигнала
  • Поддержка разнесения антенн
  • WiFi 2.4 GHz, поддержка WPA/WPA2
  • Поддержка  STA/AP/STA+AP режимов
  • SDIO 2.0, (H) SPI, UART, I2C, I2S, IR Remote Control, PWM, GPIO
  • STBC, 1×1 MIMO, 2×1 MIMO
  • A-MPDU & A-MSDU aggregation & 0.4s guard interval
  • Выходная мощность +20 dBm  в 802.11b режиме

   Чип является высокоинтегрированным решением для работы с WiFi. Внутри чипа удалось разместить все, что нужно. Типовая минимально необходимая для работы обвязка микросхемы состоит всего из семи элементов.

   Фотографии для сравнения количества компонентов аналогичных решений.

   По одним данным всей этой прелестью управляет 32-разрядное процессорное ядро  Xtensa LX106, по другим данным – Tensilica’s L106 Diamond.  Под микроскопом выглядит чип как целый город из связанных элементов.

   Одной из самых важных характеристик является энергопотребление. У ESP8266 оно просто поражает:

  • 215mA в режиме непрерывной передачи.
  • 1mA в режиме поддержания связи с точкой доступа
  • 10uA в режиме глубокого сна с работающими часами реального времени
  • 0,5uA в режиме Power OFF

   Время необходимое на пробуждение и начало передачи пакета менее 2ms. Например, при измерении температуры каждые 100 секунд и подключении к точке доступа и передаче накопленных данных каждые 300 секунд (все остальное время чип спит) средний ток составит около 1mA. Это более трех месяцев работы от трех пальчиковых аккумуляторов емкостью 2600мА/ч.

   О модулях ESP

   В настоящее время наиболее популярными модулями на чипах ESP8266 являются ESP-01, ESP-02, ESP-03, ESP-04, ESP-05, ESP-06, ESP-07, ESP-08, ESP-09, ESP-10, ESP-11, ESP-12, ESP-12E. Они отличаются количеством разведенных пинов, наличием разъема для подключения внешней антенны, размерами.

   Сейчас уже можно найти в продаже старшего брата ESP8266 – это модуль ESP-32. На Aliexpress пока всего у двух продавцов есть эти модули. Цена около 250 рублей против 110 рублей за ESP-12E. В новом модуле будет еще больше плюшек.

Основные возможности ESP-32. (нажмите для просмотра)

Wi-Fi – 802.11 b/g/n/e/i  – 802.11 n (2.4 GHz), up to 150 Mbps  – 802.11 i security features: pre-authentication and TSN – 802.11 e: Multiple queue management to fully utilize QoS traffic prioritization  – Wi-Fi Protected Access (WPA)/WPA2  – Wi-Fi Protected Setup (WPS)  – UMA compliant and certified – Antenna diversity nd seection  – A-MPDU and A-MSDU aggregation  – WMM power s ve U-APSD – Fragmentation and defragmentation  – Wi-Fi Direct (P2P), P2P Discovery, P2P Group Owner mode and P2P Power Management – Infrastructure BSS Station mode/ Soft AP mode – Automatic beacon monitoring / scanning – SSL stacks with hardware accelerators Bluetooth – CMOS single-chip fully-integrated radio and baseband – Bluetooth Piconet and Scatternet – Bluetooth 4.2 (BR/EDR/BLE) – Adaptive Frequency Hopping(AFH) – SMP – Class-1, class-2 and class-3 transmitter without exter al power amplifier – +10 dBm tra smitting power – NZIF receiver with -90 dBm sensitivity – Up-to 4 Mbps high speed UART HCI – SDIO / SPI HCI – CVSD and SBC – Low power consumption – Minimum external component CPU and Memory – Xtensa® Dual-Core 32-bit LX6 micr pr cess rs, up to 400MIPS – 128 KB ROM – QSPI Flash/SRAM, up to 4 x 16 MB – Power supply: 2.5V to 3.6V – 416 KB SRAM Clocks and Timers – 2 MHz to 40 MHz crystal oscillator – Internal 8 MHz oscillator with calibration – External 32 kHz oscillator for RTC with calibration – Internal RC oscillator with calibration – Two timer groups including 3 x 64-bit timers and 1 x watchdog in each group – RTC timer with sub-second accuracy – RTC watchdog Advanced Peripheral Interfaces – 12-bit SAR ADC up to 16 channels – 2 x 10-bit D/A converters – 10 x touch sensors – Temperature sensor (-40 +125°C) – 4 x SPI – 2 x I2S – 2 x I2C – 2 x UART – 1 host (SD/eMMC/SDIO) – 1 slave (SDIO/SPI) – Ethernet MAC interface with dedicated DMA and IEEE 1588 support – CAN 2.0 – IR (TX/RX) – Motor PWM – LED PWM up to 16 channes Security – IEEE 802.11 standard security features all supported, including WFA, WPA/ WPA2 and WAPI – Secure boot – Flash encryption – 1024-bit OTP, up to 768-bit for customers – Cryptographc hardware acceleration: – AES 128/192/256 – HASH (SHA-2) library – RSA

– Radom Number Generator

   Особенно интересна заявленная поддержка CAN-шины. Скоро управлять системами автомобиля и проводить диагностику можно будет по WiFi прямо с мобильного устройства.

   Но вернемся к ESP-12E. На базе этого модуля построена платформа NodeMCU.

   О платформе NodeMCU

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

   По умолчанию в платформу загружена прошивка NodeMCU с поддержкой интерпретатора скриптового языка LUA. Скрипты задают поведение платы.

   Я пишу и заливаю программы с помощью Arduino IDE. Для работы с платформой необходимо установить библиотеки. С библиотеками идет большое количество примеров программ.

   Установка библиотек в среду Arduino IDE для работы с NodeMCU.

   Для установки библиотек необходимо зайти в настройки Arduino IDE и в поле «Additional board» ввести адрес http://arduino.esp8266.com/package_esp8266com_index.json

   Далее «Инструменты» – «Плата» – «Boards Manager».

   Пролистываете список вниз и находите ESP8266 by ESP8266 Community, и устанавливаете библиотеки.

   Закройте «Boards Manager». Идите в «Инструменты» и выберите плату NodeMCU в соответствии с вашей версией.

   Чтобы  понять какой модуль у вас установлен и какую версию выбрать, посмотрите на модуль. Если контакты на нем расположены с трех сторон – это ESP-12E, если только с двух – это ESP-12.

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

   Назначение выводов платформы NodeMCU

   Функции, поддерживаемые библиотеками для Arduino IDE.

   Полное описание можно почитать здесь https://github.com/nodemcu/nodemcu-firmware/wiki/nodemcu_api_ru причем на русском языке. Я расскажу об основных функциях.

   Управление GPIO осуществляется так же, как и у Arduino. pinMode, digitalRead, digitalWrite, analogWrite функционируют как обычно. analogRead(A0) читает значение АЦП с аналогового входа А0 соответственно. analogWrite включает программный ШИМ. Частота ШИМ порядка 1кГц.

Диапазон ШИМ от 0 до 1023, у Arduino, как мы помним, до 255. Прерывания также поддерживаются на любом GPIO, кроме GPIO16. Функции millis() и micros() возвращают миллисекунды и микросекунды, прошедшие со старта модуля. Функция delay() у NodeMCU работает по-другому нежели у Arduino.

Здесь применение delay приветствуется и в больших программах даже необходимо. Когда модуль поддерживает WiFi соединение, ему приходится выполнять множество фоновых задач, кроме вашего скетча.

WiFi и TCP/IP функции библиотек SDK имеют возможность обработать все события в очереди после завершения каждого цикла вашей функции loop() или во время выполнения delay(…). Если в вашем коде есть фрагменты, которые выполняются более 50 миллисекунд, то необходимо использовать  delay(…

) для сохранения нормальной работоспособности стека WiFi. А вот delayMicroseconds() блокирует выполнение других задач и не рекомендуется для задержек более 20 миллисекунд. Serial использует аппаратный UART0, работающий на PIO1(TX) и GPIO3(RX).

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

   После того, как библиотеки установлены, к платформе подключаем блок из 4 реле к пинам D1, D2, D3, D4, что соответствует GPIO 5, 4, 0, 2 соответственно. Затем подключаем питание к платформе и к блоку реле. У имеющегося у меня блока реле есть одна особенность. Для включения реле необходимо подтянуть пин к земле. То есть логический 0 включает реле, а 1 выключает.

   Я рассмотрю три варианта программы управления блоком реле.

   Первая программа использует популярную библиотеку aRest https://github.com/marcoschwartz/aREST

   Это API handler библиотека, позволяет управлять GPIO через http-запросы вида http://192.168.0.10/digital/6/1 ее возможности: устанавливать GPIO в Digital или Analog (ШИМ), устанавливать 0 или 1 на пин в режиме Digital, возвращать переменные и читать состояние пинов.

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

   В Setup’е устанавливается соединение с точкой доступа, о чем сообщается через COM порт. А loop выглядит вот так:

void loop() {

  WiFiClient client = server.available();

  if (!client) {

    return;

  }

  while(!client.available()){

    delay(1);

  }

  rest.handle(client);

}

   Все. Что там происходит не понятно. Работает, но фактически мы не программируем ничего. Просто запускаем программу, все остальное делает библиотека. Но интереснее научиться работать с GPIO «руками». Да, кстати, программа у меня зависала через неопределенное время.

Иногда через 40 минут, иногда через 5-6 часов. Приходя домой после 8 часового рабочего дня, я всегда обнаруживал, что программа не работает. При этом роутер показывает, что клиент WiFi подключен и ему выдан IP адрес. Интерес у меня к библиотеке быстро пропал.

На зависания aRest’а на русскоязычных форумах жалоб не встречал. Я уж грешил на NodeMCU или на нестабильное питание, но дальнейшие эксперименты доказали, что в моем случае виновата была программа. Скорее всего, у меня частный случай.

Я не утверждаю, что библиотека не рабочая.

   С aRest’ом разобрались.

   Вторая программа написана самостоятельно, использует всего одну подключаемую библиотеку #include . Программа проста и наглядно показывает, как управлять пинами через веб-запросы.

Данная программа умеет управлять только логическими состояниями на выводах D1-D4 и выводить информацию о времени работы программы в качестве тестового запроса. Если есть необходимость, можно дописать программу для остальных GPIO, «научить»  ее выдавать ШИМ и т.д.

К выводу D4 подключен синий светодиод, находящийся на модуле ESP-12E. После мучений с зависаниями aRest’а я временно отсоединил реле 4 от D4 и в своей программе дописал пару строк для мигания этим светодиодом. Пришел домой после работы смотрю – мигает, значит, работает. Проверил с мобильного – точно работает.

Программа отработала 8 дней без зависаний, отработала бы и дольше, но NodeMCU у меня один, поэтому я продолжил его изучение и выполнение программы пришлось остановить.

   Код программы.

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

   Для управления блоком реле для этих двух программ было создано приложение на мобильный с ОС Android. Приложение очень простое, создавалось в App Inventor 2. Процесс создания приложения я опишу позже. Сначала третий вариант решения управления реле.

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

   Для создания собственного проекта с управлением через Blynk нужно совсем немного: установить приложение (доступны версии для iOS и Android) или воспользоваться веб-формой. Тут потребуется регистрация в один шаг — ввод e-mail и пароля. Дело в том, что Blynk — облачное решение, и без регистрации контроль над железкой может получить любой пользователь.

   Желающие могут установить сервер локально. В таком случае доступ в интернет не нужен.

   Опишу сам процесс. Он состоит из двух частей.

   Первая часть.

Источник: http://zlitos.com/publ/ehlektronika/arduino_i_t_p/nodemcu_upravlenie_4_rele_iz_prilozhenija_android_po_wifi/12-1-0-27

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 как Arduino

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

Но у этих плат есть один большой минус – отсутствие беспроводной коммуникации в большинстве дешёвых версий. Раньше это решалось дополнительными модулями, такими как приёмники-передатчки на 433 МГц или модули NRF24.

Сейчас, с появлением дешёвого WI-FI модуля ESP8266, проблема беспроводной коммуникации  перешла в разряд задачи, с  которой можно справится, изучив несколько руководств.

Однако, ESP8266 – это не просто WI-FI транссивер – это настоящий программируемый контроллер с выходами, который может полностью заменить плату Arduino. Даже больше – во многих случаях связка Arduino + ESP8266 просто избыточна.

В этой статье будет рассмотрена настройка данного контроллера для работы со средой Arduino IDE с целью как можно более лёгкого вхождения в написание программ для этой платформы.

Железо и его подключение

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

ПРОБЛЕМА: Модули питаются от 3.3В, вместо более распространённого питания в 5В. Так же они требуют 250 мА тока для стабильной работы.

РЕШЕНИЕ: Первый вариант решения – использовать модуль, где уже есть регулятор питания. Это позволит Вам запитать его от стандартных 5В (которые живут в USB). Тока тоже должно хватить, так как USB у компьютера выдаёт 500 мА. Второй вариант решения – использование отдельного источника тока на 3.3В, к примеру через стабилизатор AMS1117 на 3.3В.

ПРОБЛЕМА: Модули используют логику 3.3В, а у большинства устройств логика 5В.

РЕШЕНИЕ: Использование преобразователей уровней логики TTL, либо универсальных преобразователей на 4 или 8 каналов.

ПРОБЛЕМА: Версия ESP8266-01 имеет разъём, который нельзя запихнуть в обычную макетную плату.

РЕШЕНИЕ: Провода папа-мама наше всё, в данном случае.

ПРОБЛЕМА: Многие модули ESP имеют шаг между контактами в 2.0мм, вместо обычных 2.54мм

РЕШЕНИЕ: Вот такой переходник для ESP позволит легко разместить модуль на любой макетной плате.

Настройка среды Arduino

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

Первым шагом, является запуск среды.

После запуска через Файл -> Настройки добавляем ссылку на данные о модулях ESP8266.

Для стабильной ветки: http://arduino.esp8266.com/stable/package_esp8266com_index.json

Для самых последних версий: http://arduino.esp8266.com/staging/package_esp8266com_index.json

Теперь заходим в Инструменты -> Плата -> Менеджер плат

Ждём, пока обновятся данные и добавляем модули ESP8266. Чтобы добавить модуль, в поиске забиваем “ESP8266”, а затем жмём на появившийся модуль:

Появится кнопка “Установка”. Устанавливаем.

После выполнения этих действий, среди доступных для работы плат, появятся модули ESP8266:

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

Прошивка модулей из среды Arduino

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

Откроем один из базовых примеров:

Исходный код этого примера приведён далее:

#include<\p>

#include<\p>

#include<\p>

#include<\p>

// Настройки точки доступа для подключения

const char* ssid = “……..”;

const char* password = “……..”;

// Создаём WEB-сервер

ESP8266WebServer server(80);

// ID пина

const int led = 13;

// Функция, которая будет обрабатывать обращение к корневому элементу сревера, т.е. “/”

void handleRoot() {

  digitalWrite(led, 1);

  server.send(200, “text/plain”, “hello from esp8266!”);

  digitalWrite(led, 0);

}

// Функция, которая будет возвращать ошибку 404

void handleNotFound(){

  digitalWrite(led, 1);

  String message = “File Not Foundnn”;

  message += “URI: “;

  message += server.uri();

  message += “nMethod: “;

  message += (server.method() == HTTP_GET)?”GET”:”POST”;

  message += “nArguments: “;

  message += server.args();

  message += “n”;

  for (uint8_t i=0; i

Источник: https://tpai.ru/blog/stati/esp8266-kak-arduino

How to setup NodeMCU drivers and Arduino IDE

The first time using a new microcontroller is what I call funstrating, especially if you don’t have clear instructions.  We’ve done the hard work of figuring out the NodeMCU drivers and NodeMCU Arduino IDE setup for you.  Read on for the two steps that have to be done only once.  More helpful info at the end, too.

Installing NodeMCU drivers for USB

This part of the instructions are written for Windows.  They’re very similar for OSX and Linux.

Mostly these days devices download and install drivers on their own, automagically.  Unfortunately as of writing this post when I plug a brand new NodeMCU into a new Windows 10 installation with a micro USB cable I get a warning message that says “USB Device Not Recognized – Device Descriptor Request Failed”.

Windows doesn’t know how to talk to the USB driver on the NodeMCU so it can’t figure out that the board is a NodeMCU and proceed normally.  You’ll need to download the official driver and install it yourself.

The official NodeMCU drivers are here.

Download and extract the files, then run the Windows 10 installer.  NodeMCU should now appear as a COM port on your Windows 10 computer.

Please post OSX-specific instructions them in the comments below.

Upgrade Arduino Boards Manager

We’re almost done!  This next bit is pretty easy.  Arduino has a list of possible microcontrollers (boards) that it can support if you ask it to add support.

  This does two useful things: it keeps the download smaller for them (less $) and it means new users are not swamped with lots of options they may never use.

  We need to add NodeMCU to the list of possible microcontrollers and then tell Arduion “Please download and install support for NodeMCU.”

Fire up Arduino IDE and go to File > Preferences.

In the field that says “Additional Boards Manager URLs” add “http://arduino.esp8266.com/stable/package_esp8266com_index.json” and hit OK.  Now your Arduino IDE knows that NodeMCU boards exist.

go to Tools > Boards > Boards Manager

There are a lot of boards here!  In the search field type “esp8266”, which is the name of the Wifi module at the heart of the NodeMCU.

You can see in my copy I’ve already installed the plugin.  Click once anywhere on the description text.  A button labelled “install” will appear nearby.

  The location is inconsistent, and IMHO the button should always be visible if the plugin has not been installed.  Click it and the installation process will begin.

  As of this writing it has to download ~150mb of data.  Once it’s done, close the Boards Manager.

To back to Tools > Boards and you will find the list is now quite a bit longer.

Choose your flavor of NodeMCU (probably 1.0 ESP-12E Module) and start coding.

NodeMCU example sketches

Examples for any given board type should appear under File > Examples.  Examples are tailored to the type of board that you have currently selected.  If you don’t see any NodeMCU or ESP examples, double check that you have Tools > Boards > [your NodeMCU flavor] selected.  One time I changed board type to UNO and all my NodeMCU examples vanished.  So confusing!

Final thoughts

  • Sketch upload time is long compared to UNO or Mega.  Still worth it!
  • When using digitalWrite(), use digitalWrite(D0) instead of digitalWrite(0) and so on.  Pin mapping on the NodeMCU is weird.

  • Wifi sketches need the SSID and password of your local Wifi network in order to connect.  In the top of most sketches you’ll find a field “….” that should be replaced with your wifi SSID and/or wifi password.

See Also

Related

Источник: https://www.marginallyclever.com/2017/02/setup-nodemcu-drivers-arduino-ide/