Arduino esp8266 flprog



Новые возможности FLProg – ESP8266 как контроллер, а не модем

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

Если Вы не знакомы с проектом, можно посмотреть его историю в блоге.

Сейчас на сайте программы ведётся тестирование предрелизовой версии с номером 3.1.4. Начиная с версии 3.1, в программе появилась поддержка контроллеров ESP8266 как полноценного контроллера.

ESP8266 создан для использования в умных розетках, mesh-сетях, IP-камерах, беспроводных сенсорах, носимой электронике и так далее. Одним словом, ESP8266 появился на свет, чтобы стать мозгом грядущего «Интернета вещей».

Предусмотрено два варианта использования чипа:

1) в виде моста UART-WIFI, когда модуль на базе ESP8266 подключается к существующему решению на базе любого другого микроконтроллера и управляется AT-командами, обеспечивая связь решения с инфраструктурой Wi-Fi;

2) реализуя новое решение, использующее сам чип ESP8266 в качестве управляющего микроконтроллера.

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

Второй вариант сценария предусматривает написание индивидуальной прошивки для управления чипом «изнутри». (До выхода FLProg 3.1 прошивка должна быть написана для фирменного компилятора. Начиная с этой версии, появилась возможность писать прошивки на языках FBD и LAD в среде FLProg).

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

Чип ESP8266 является одним из самых высокоинтегрированных решений для работы с WiFi. Внутри чипа уместилась куча всего того, что в конкурирующих решениях часто является частью внешней обвязки:

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

Управляет всем этим интегрированным хозяйством расширенная версия 32-битного процессора Tensilica’s L106 Diamond series. Что же интересного внутри?

• 802.11 b/g/n protocol
• Wi-Fi Direct (P2P), soft-AP
• Integrated TCP/IP protocol stack
• Integrated TR switch, balun, LNA, power amplifier and matching network
• Integrated PLL, regulators, and power management units
• +20.5dBm output power in 802.11b mode
• Supports antenna diversity
• Power down leakage current of Для создания прошивки доступен практически все функциональные блоки и периферийные устройства, применимые для программирования плат ардуино.

Кроме того при выборе контроллера ESP8266 появляются новые блоки специфичные именно для него.

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

Далее идут уже более специфические настройки.

Настройка клиента WiFi и точки доступа (возможна их одновременная работа).

Настройка режима беспроводного обновления (пока только Arduino OTA, но в планах реализация и обновления через браузер и автоматическая загрузка прошивок с сервера обновлений)

Реализована возможность создания веб интерфейса настройки контроллера. Можно создать неограниченное количество страниц настроек, с необходимым количеством параметров. В качестве параметров используются как стандартные системные параметры контроллера (см. скриншоты выше), так и любое количество пользовательских, используемых для связи между прошивкой и интерфейсом настройки. Ко всем страницам (кроме главной), а так же отдельным параметрам можно задать доступ только определённым пользователям (количество создаваемых пользователей не ограниченно).

Ну и конечно, как и для ардуино реализована поддержка протоколов обмена Modbus RTU, Modbus TCP и Modbus RTU over TCP.

Так же реализован режим моста между Modbus RTU и Modbus TCP

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

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

Проект FLProg является некоммерческим проектом, и скачать программу Вы можете с сайта проекта как говорится «бесплатно и без СМС». Никаких ограничений в программе нет. Версии представлены для ОС Windows и OC Linux.

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

Но на помощь мне пришёл один из пользователей программы.

Хочу представить Вам канал “Arduino Prom” и сайт “Arduino Prom”. Они полностью посвящены проекту FLProg, и на сегодняшний день там около сотни видео уроков по программе.

Вот последнее видео, как раз о создании часов с синхронизацией через интернет.

Источник

ESP8266 + FLProg – Пользовательские системные параметры и синхронизация с сервером точного времени

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

Данный урок создан для версии 3.1.4, которая сейчас находится в предрелизовом тестировании. Скачать её можно здесь. Более подробно о проекте FLProg можно узнать из блога компании на хабре, сайта проекта и форума. Кроме того на канале ArduinoProm можно посмотреть огромное множество видео уроков.

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

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

Откроется окно диалога добавления нового системного параметра. Заполним его.

В поле “Имя” введём имя параметра. Выберем тип параметра – “String”. Значение этого параметра будет динамически изменяться в процессе работы, поэтому отключим сохранение значение параметра в EEPROM. Поэтому же не задаем значение по умолчанию. Максимальную длину строки оставим 20 (вывод будет в виде 01:01:01 01-01-2018 то есть 19 символов).

Таким же образом добавим второй параметр

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

И наконец, создадим третий параметр, значение часового пояса, для корректного отображения времени.

Тип параметра Integer, Обязательно сохранять в EEPROM, значение по умолчанию, на Ваш выбор (у меня это 4 часа).

В результате мы получили три пользовательских параметра

Переходим к схеме прошивки.

В библиотеке функциональных блоков находим блок “Получение времени с NTP сервера” и претаскиваем его на рабочую область схемы

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

Рассмотрим настройки поподробнее.
NTP сервер — адрес сервера с которого будет браться точное время. Можно задать как константу. Можно выбрать из списка стандартных. Я все проверял – работают. Для выбора нажмите кнопку “Стандартные сервера”.

Но поскольку мы хотим “по взрослому” задавать адрес сервера из web интерфейса ставим галочку в чек бокс “Вход

Период запроса до получения первого ответа – периодичность, с которой контроллер будет “стучаться” на сервер пока не получит время в первый раз. Оставляем константой значение раз в 30 секунд. Возможно так же установить вход, тогда на него необходимо будет подавать значение в миллисекундах.

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

Часовой пояс – Поскольку сервер отдаёт время по Гринвичу, этим параметром задаем смещение часового пояса в часах. Мы решили задавать этот параметр через web интерфейс, поэтому ставим галочку в чек бокс “Вход

Выход “Год”, Выход “Месяц”, Выход “День”, Выход “Час”, Выход “Минута”, Выход “Секунда” – в данном уроке они нам не нужны, поэтому галочки не устанавливаем.

Выход “Unix Time” – этот выход нам не нужен, галочку не ставим (если честно я пока не придумал User Case для него. Но на всякий случай сделал, вдруг, кому то пригодится).

Итого у нас получилась такая настройка блока

Соответственно изменился и блок на схеме прошивки

Найдем в библиотеке блок “Чтение системного параметра” и перетаскиваем его на схему.

Двойной клик по этому блоку, и начинаем настраивать его параметры.

Сначала нажимаем кнопку выбора системного параметра.

Открывается окно выбора системного параметра. Выбираем параметр “Сервер точного времени

На этом настройка блока закончена.

Располагаем удобно блоки и соединяем выход блока “Чтение системного параметра” со входом “Server” блока “Получение времени с NTP сервера

Перетаскиваем на схему ещё один блок “Чтение системного параметра” и настраиваем его на чтение параметра “Часовой пояс”.

Соединяем выход этого блока со входом “TimeZone” блока “Получение времени с NTP сервера

Добавляем на схему новую плату. Для этого нажимаем кнопку “Добавить плату

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

Вытаскиваем на схему на вторую плату блок “Получение данных с часов точного времени

Двойным кликом по нему вызываем диалог настройки блока. Нажав кнопку “New” вызываем диалог выбора часов и выбираем “Системные часы контроллера”.

Затем ставим галочку “Выход “Часы”

И заканчиваем редактирование блока.

Затем копируем этот блок ещё пять раз, переставляя в настройках каждого из них галочку выхода в последовательности Минута – Секунда – День — Месяц – Год.

Теперь вытаскиваем на схему из библиотеки блок “Конвертация строк”.

И в его настройках выбираем тип конвертации “Время

Копируем блок ещё пять раз, и собираем схему

Переносим на схему из библиотеки блок “Сложение строк

В настройках блока задаём 11 входов.

И соединяем блоки согласно схеме

На свободных входах блока задаём константы

Вход 2 — “:”
Вход 4 — “:”
Вход 6 – Пробел
Вход 8 — “-”
Вход 10 – “-”

Для задания константы производим клик правой кнопкой мыши на свободном входе и из выпавшего меню выбираем “Вставить константу

Откроется окно ввода константы, где в поле “Значение по умолчанию” вводится необходимая константа

Теперь вытаскиваем из библиотеки на схему блок “Запись системного параметра

В настройках блока снимаем галочку “Вход разрешения записи” и выбираем параметр “Дата — Время

Соединяем выход блока “Сложение строк” со входом блока “Запись системного параметра

В результате у нас должна получится такая схема (Для наглядности развернём первую плату).

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

На главную страницу Web интерфейса добавим три параметра (как это сделать смотри в предыдущем уроке).

Параметр 1 – Системный параметр “Дата — Время”, тип параметра – “Текст”, лейбла – “Время

Параметр 2 – Системный параметр “Сервер точного времени”, тип параметра – “Поле ввода”, лейбла – “Сервер

Параметр 3 – Системный параметр “Часовой пояс”, тип параметра – “Поле ввода”, лейбла – “Часовой пояс

Включаем на странице кнопку “Save

Заливаем программу в контроллер, и смотрим, что у нас получилось на главной странице (как это сделать, смотри предыдущий урок)

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

Через минуту (обновили страницу) – прошла синхронизация

Сменили часовой пояс и нажали кнопку сохранить

Проект, созданный на уроке можно скачать здесь.

Источник

Adblock
detector