Принт сервер своими руками esp8266
Приветствую всех заглянувших на эту страницу, скорее всего это произошло не случайно, а потому в этой части буду краток.
С этой статьи я начну знакомить Вас с сервисом Open Monitoring (ОМ) или просто мониторинга или системой логирования – кому как нравится. Двигаться мы будем от простого к сложному и поэтому на первом этапе предлагаю собрать простейшую метеостанцию, но сделать это на очень перспективной связке: Arduino + ESP8266 – которая в дальнейшем, я надеюсь, нам еще понадобится и мы сможем более широко раскрыть потенциал этого железа.
В итоге получится некий (гибко настраиваемый) веб интерфейс с текущими показаниями температуры и графики, доступные с любого браузера
Что для этого нужно
- Время. При наличии под руками всех компонентов, на реализацию Вы затратите от 30 минут до 1 часа своего драгоценного времени;
- Arduino, я в этом примере буду использовать Uno, но подойдет и Mega и Mini (я брал здесь);
- ESP8266, я использовал самую дешевую версию – 01 (я брал здесь), но подойдет любая с дефолтной прошивкой (поддержка AT-команд);
- Датчик температуры DS18B20 (я брал здесь), а лучше пару штук;
- Резистор 4,7кОм – 1 шт;
- Резистор 1кОм;
- Резистор 2кОм.
Если заказать детали в Китайском экспресс - это обойдется Вам порядка 500 руб., если пойти в ближайший магазин радиодеталей – то в зависимости от карманного коэффициента магазина: 800-1000 руб.
Приступим?
Подготовка WiFi модуля ESP8266
Обмен между Arduino и ESP происходит через последовательный порт (serial port) он же UART. Наша задача состоит в том, что бы скорость портов наших двух плат совпадала.
Бытует мнение, что при использовании в Arduino различных библиотек с прерываниями, работа порта на скоростях выше 19 200 бод может быть нестабильной. Предлагаю обойти стороной возможные грабли и настроить обмен на скорости 9600.
- Использование USB-TTL конвертора (сейчас я пользуюсь таким, потому что как-то он попался на Aliexpress и был куплен за 50 руб. ссылка: Aliexpress);
- Использование Arduino который у нас уже имеется.
Ориентируясь, как мне кажется на более широкую аудиторию, давайте изменим базовую скорость ESP с помощью имеющейся у нас Arduino. Идея такова: нам нужно воспользоваться штатным USB-TTL (UART) преобразователем который распаян на плате arduino, а для того, что бы сам контроллер ATmega нам не мешал – мы переводим его в режим сброса одной единственной перемычкой, в общем собираем схему:
Указываем к какому порту подключена Arduino (у меня она определилась как COM18)
Далее открываем монитор порта и выставляем скорость 115200 (как правило, ESP в базовой прошивке настроена именно на эту скорость, если в ответ на команду Вы увидите абракадабру или вообще ничего можно попробовать 57600) и отправляем команду: AT
Сборка схемы
Добавить особо нечего, схема приведена ниже. Обратите внимание, что когда мы настраивали ESP – то ТХ соединяли с ТХ, а RX с RX. В этой схеме связи крестятся.
На макетной плате это может выглядеть например так
Специально для этого пункта сделал подробную видео инструкцию. Поскольку сервис постоянно развивается и дополняется новыми возможностями, не исключено, что на момент просмотра Вами видео, интерфейс системы может изменится
Прошивка контроллера и отладка
Заключение
На этом разбор примера закончен. Освоив этот материал, не составит большого труда добавить дополнительные параметры: температуру, ток, напряжение, мощность и т.д. Для этого придется немного разобраться в коде программы. Надеюсь кому-то данный сервис поможет решить его задачу, проблему или мечту (как это было в моем случае). Делитесь своими проектами, задавайте вопросы, помогайте новичкам и подписывайтесь на мой канал в YouTube - все обновления сервиса в первую очередь будут выкладываться там: ПОДПИСАТЬСЯ!
Немного теории:
Всем известно, что наш wifi модуль, имеет МК, в честь которого и назвали этот шилд - ESP8266. И мы знаем, что в него заливается прошивка. Кто то пользуется прошивкой NudeMCU, а кто-то пользуется стандартной прошивкой по средством AT команд(как я, например). Получается наш модуль спокойно прошивается! Но почему бы нам не залить свою прошивку - под свои нужды, а именно для создания web-сервера?
И мы сегодня будем прошивать нашу ESP-шку с помощью ArduinoIDE. Подключаться к ПК мы будем через саму Ардуино.
Получается такая схема:
RX(ESP)----RX(ARDUINO)
TX(ESP)----TX(ARDUINO)
VCC(ESP)----3.3v(ARDUINO)
GND(ESP)----GND(ARDUINO)
GPIO0(ESP)----GND(ESP)//Это режим программирования.
RESET(ARDUINO)----GND(ARDUINO)//Чтобы Ардуино не влезала в процесс прошивки.
Для начала зальем в Arduino IDE библиотеки для программирования ESP8266, через наш компилятор.
Как это делать? Читаем дальше!
В интернете есть инструкция с картинками, как это сделать, поэтому я объясню, как говориться, по пальцам - тобиш устно!
Заходим в среду ArduinoIDE. С верху-слева видим кнопку "Файл" - тюкаем() на него. В выкатившемся меню нажимаем ()"Настройки". Откроется окно настроек.
Доходим до строчки "Дополнительные ссылки для Менеджера плат" и вставляем в поле эту ссылку(Я НЕ ЗНАЮ КАК ВКОНТАКТЕ ВСТАВИТЬ ССЫЛКУ ПОЛНОСТЬЮ):
http://arduino.esp8266.com/stable/package_esp8266com_.. Дальше Жмем ()"ОК".
Окно настроек само должно закрыться. Теперь нажимаем ()"Инструменты", наводим на "Плата:" и в выкатившемся меню выбираем ()"Менеджер плат".
Откроется соответственно окно Менеджера плат. Если в списке плат вы не видите строчку: "esp8266 by ESP8266 Community", то вводите в фильтре ()"ESP8266".
Теперь снова ищем строчку "esp8266 by ESP8266 Community", Нажимаем на нее(), выбираем последнюю версию и нажимаем ()"Установить"!
После установки в "Инструменты" - "Плата:" у нас появиться "Generic ESP8266 Module", нажимаем на нее().
Все. Теперь мы можем писать прошивку для ESP8266 через ArduinoIDE.
Плата готова к прошивке, ArduinoIDE настроена. Теперь приступим к написанию прошивки.
Как уже говорилось раньше мы хотим сделать веб сервер.
Давайте попробуем управлять реле через наш веб сервер. А потом что непонятно в коде - вы спрашивайте. Постараюсь ответить. Если же есть дельные советы - тоже готов выслушать!
Ну что ловите сам код:
В этом уроке по ESP8266 мы используем модуль ESP-01 для управления светодиодом через Интернет.
Как это работает
ESP8266 - дешевая, но эффективная платформа для общения через Интернет. Как использовать модуль ESP-01 для управления светодиодом через Интернет, модуль, который позволяет вам управлять любым электрическим устройством.
Он также прост в использовании с Ардуино. Пройдя этот урок, вы получите основные знания по управлению любым электрическим устройством через Интернет из любой точки мира!
Здесь мы будем использовать USB-to-TTL конвертер для программирования ESP8266 ESP-01. И мы будем использовать Arduino IDE для разработки веб-сервера для удаленного управления светодиодом.
ESP8266 можно контролировать из локальной сети Wi-Fi или из Интернета (после переадресации портов). Модуль ESP-01 имеет контакты GPIO, которые могут быть запрограммированы для включения или выключения светодиода или реле через Интернет. Модуль можно запрограммировать с помощью конвертера Arduino USB-to-TTL через последовательные контакты (RX, TX).
Подключение оборудования к вашему ESP8266
Мы можем использовать конвертер USB-to-TTL или использовать Arduino для программирования ESP8266. Вот три способа, которым вы можете следовать, чтобы загрузить код в ESP8266 - выберите тот, который вам подходит лучше всего. Обратитесь к диаграммам для каждого варианта и соответствующим образом настройте своё оборудование.
1. Конвертер USB-to-TTL с использованием разъема DTR
Если вы используете конвертер USB-to-TTL с выводом DTR, загрузка будет идти гладко. Пожалуйста, имейте в виду, что серийный монитор не будет работать при этом.
- USB TTL → ESP8266 ESP-01
- GND → GND
- TX → RX
- RX → TX
- RTS → RST
- DTR → GPIO0
2. Конвертер USB в TTL без вывода DTR
Чтобы подключить конвертер USB-TTL без вывода DTR, мы должны использовать ручную передачу. Для этого мы используем две кнопки - см. следующую диаграмму:
- USB TTL → ESP8266 ESP-01
- GND → GND
- TX → RX
- RX → TX
- Reset Button → RST
- Flash Button → GPIO0
При загрузке кода нажмите кнопку "Загрузки" (Flash). Держите кнопку нажатой, в тот момент когда вы нажимаете один раз кнопку "Перезагрузка/Сброс" (Reset).
Теперь вы можете отпустить кнопку Flash. ESP8266 теперь находится в режиме в котором вы сможете загрузить эскиз.
3. Использование Arduino Uno для загрузки кода в ESP8266
Вы можете использовать Arduino UNO для запуска кода ESP8266 ESP-01. При загрузке кода следуйте той же процедуре, что во втором пункте, - удерживайте кнопку "Загрузки" нажатой, когда вы нажимаете один раз на сброс, а после отпускаете кнопку Flash.
- ARDUINO → ESP8266 ESP-01
- GND → GND
- TX → TX
- RX → RX
- Кнопка Reset → RST
- Кнопка Flash → GPIO0
Загрузка кода ESP8266
Используйте любой из приведенных выше способов и откройте Arduino IDE, затем выберите плату ESP8266 в меню:
Tools → Board → Generic ESP8266 Module
(Инструменты → Плата → Модуль ESP8266)
Если вы не установили и не настроили плату ESP8266 для Arduino, сделайте это, выполнив шаги выше этого руководства. Затем можете идти дальше.
Теперь скопируйте приведенный ниже код в Arduino IDE и нажмите кнопку загрузки. Измените SSID на точку доступа Wi-Fi и измените пароль на свой пароль Wi-Fi и скомпилируйте.
Откройте последовательный монитор и откройте URL, показанный на вашем последовательном мониторе, через веб-браузер. Подключите GPIO 2 от ESP8266 к более длинному выводу светодиода. Теперь вы можете управлять светодиодом удаленно через Интернет!
Нажмите на соответствующие гиперссылки в браузере, чтобы включить или выключить светодиод.
Удалите все провода, которые были необходимы для загрузки кода. Модуль LM1117 используется для обеспечения регулируемого выхода 3,3 В. Это позволит вам сделать модуль ESP8266 или ESP-01 автономным.
Подключение ESP8266 к Интернету
В настоящее время модуль ESP8266 доступен только через локальную сеть Wi-Fi. Чтобы управлять устройствами из Интернета, вам необходимо выполнить переадресацию портов на маршрутизаторе.
IP-адрес тот, который вы указали ранее. Оставьте остальные настройки по умолчанию. Теперь перейдите в свой браузер и введите адрес: xxx.xxx.xx.xx: 80. Должна открыться страница для управления светодиодом.
Модуль ESP-01 с чипом ESP8266 предназначен для связи устройства с беспроводными сетями по WiFi.
Видеообзор
Общие сведения
ESP-01 — плата-модуль WiFi на базе популярного чипсета ESP8266EX . На борту платы находится микросхема Flash-памяти объёмом 2 МБ, чип ESP8266EX, кварцевый резонатор, два индикаторных светодиода и миниатюрная антенна из дорожки на верхнем слое печатной платы в виде змейки. Flash-память необходима для хранения программного обеспечения. При каждом включении питания, ПО автоматически загружается в чип ESP8266EX.
Но внутри чипа ESP8266 прячется целый микроконтроллер, который является самодостаточным устройством. Прошивать модуль можно на разных языках программирования. Но обо всё по порядку.
Работа с AT командами
Подключение и настройка
На всех платах Iskra и Arduino присутствует хотя бы один аппаратный UART — HardwareSerial. Если же по каким то причинам он занят другим устройством, можно воспользоваться программным UART — SoftwareSerial.
HardwareSerial
На управляющей плате Iskra JS и платах Arduino с микроконтроллером ATmega32U4 / ATSAMD21G18 данные по USB и общение через пины 0 и 1 осуществляется через два раздельных UART . Это даёт возможность подключить Wi-Fi модуль к аппаратному UART на пинах 0 и 1 .
Список поддерживаемых плат:
Для примера подключим модуль Wi-Fi к платформе Iskra Neo.
Прошейте управляющую платформу кодом ниже.
Код прошивки
SoftwareSerial
Некоторые платы Arduino, например Uno, прошиваются через пины 0 и 1 . Это означает невозможность использовать одновременно прошивку/отладку по USB и общение с Wi-Fi модулем. Решение проблемы — программный UART . Подключите пины TX и RX ESP-модуля к другим контактам управляющей платы и используйте библиотеку SoftwareSerial.
Для примера подключим управляющие пины Wi-Fi модуля TX и RX — на 8 и 9 контакты управляющей платы. Прошейте управляющую платформу кодом ниже.
Код прошивки
HardwareSerial Mega
На платах форм-фактора Arduino Mega 2560 аппаратный UART, который отвечает за передачу данных через пины 1 и 0 , отвечает также за передачу по USB. Это означает невозможность использовать одновременно UART для коммуникации с Wi-Fi модулем и отладки по USB.
Но на платах такого форм-фактора есть ещё дополнительно три аппаратных UART:
Список поддерживаемых плат:
Подключите Wi-Fi модуль к объекту Serial1 на пины 18 и 19 на примере платы Mega 2560 Прошейте управляющую платформу кодом ниже.
Код прошивки
Примеры работы
Настройка режима работы
Wi-Fi модуль умеет работать в трёх режимах:
Переведём чип в смешанный режим командой:
В отличии от аппаратного UART (HardwareSerial), за работу программного UART (SoftwareSerial) отвечает микроконтроллер, который назначает другие пины в режим работы RX и TX , соответственно и данные которые приходят от Wi-Fi модуля обрабатывает сам микроконтроллер во время программы. По умолчанию скорость общения Troyka Wi-Fi равна 115200 , что значительно выше чем позволяет библиотека SoftwareSerial. В итоге часть информации которая приходит с Wi-Fi модуля будет утеряна. Если вы используете плату с HardwareSerial подключением модуля можете пропустить пункт настройки скорости и сразу перейти к дальнейшей работе с модулем.
AT установка скорости общения
После проделанной операции, измените скорость программного UART в скетче программы и прошейте плату.
По итогу программный UART успеет обработать каждый пришедший байт с Wi-Fi модуля.
AT сканирование WI-FI сетей
Wi-Fi модуль как самостоятельный контроллер
ESP-01 (ESP8266) — очень умный модуль. Внутри чипа прячется целый микроконтроллер, который можно программировать на языке C++ через Arduino IDE и JavaScript через Espruino Web IDE .
Настройка железа
Ввиду отсутствия у платформы ESP-01 собственного USB-порта, понижающего преобразователя и отсутствия толерантности к 5 вольтам, подключите её к компьютеру, используя один из перечисленных способов:
Схема через Arduino Uno
Для сборки программатора понадобится:
Соберите схему, представленную ниже.
Необходимо каждый раз выполнять перед прошивкой модуля.
Схема через USB-Serial адаптер
Для сборки программатора понадобится:
Соберите схему, представленную ниже.
Необходимо каждый раз выполнять перед прошивкой модуля.
Программирование на C++
Для начала работы с платформой ESP на языке C++ скачайте и установите на компьютер интегрированную среду разработки Arduino IDE.
По умолчанию среда программирования настроена только на AVR-платы. Для платформы ESP-01 добавьте в менеджере плат поддержку платформ на модуле ESP8266.
В пункте меню Инструменты Плата выбирайте Generic ESP8266 Module .
После выполненных действий модуль ESP-01 готов к программированию через Arduino IDE.
Подробности о функциях и методах работы ESP-01 (ESP8266) на языке C++ читайте на ESP8266 Arduino Cores.
Программирование на JavaScript
Для старта с платформой ESP-01 на языке JavaScript скачайте и установите интегрированную среду разработки Espruino Web IDE.
После выполненных действий модуль ESP-01 готов к программированию через Espruino Web IDE.
Подробнее о функциях и методах работы ESP8266 на языке JavaScript читайте на Espruino.
Восстановление стандартной АТ-прошивки
После программирования платформы в режиме самостоятельного контроллера может понадобиться восстановить на модуле стандартную AT-прошивку. Для этого необходимо воспользоваться утилитой Flash Download Tool.
Элементы платы
Чип ESP8266EX
Чип ESP8266 — выполнен по технологии SoC (англ. System-on-a-Chip — система на кристалле). В основе кристалла входит процессор семейства Xtensa — 32-х битный Tensilica L106 с частой 80 МГц с ультранизким энергопотреблением, радиочастотный трансивер с физическим уровнем WiFi IEEE 802.11 b/g/ и блоки памяти SRAM. Мощности процессорного ядра хватает для работы сложных пользовательских приложений и цифровой сигнальной обработки.
Программное приложение пользователя должно храниться на внешней микросхеме Flash-памяти и загружаться в ESP8266EX через один из доступных интерфейсов (SPI, UART, SDIO и др.) каждый раз в момент включения питания системы.
Чип ESP8266 не содержит в себе Flash-память и многих других компонентов для пользовательского старта. Микросхема является основой на базе которой выпускаются модули с необходимой периферией, например ESP-01.
Светодиодная индикация
Имя светодиода | Назначение |
---|---|
LED | Индикаторный светодиод подключённый к цифровому пину 1 |
POWER | Индикатор питание на модуле |
Распиновка
Пины питания
Пины ввода/вывода
В отличии от большинства плат Arduino, родным напряжением платформы ESP-01 является 3,3 В, а не 5 В. Выходы для логической единицы выдают 3,3 В, а в режиме входа ожидают принимать не более 3,3 В. Большее напряжение может повредить модуль!
Будьте внимательны при подключении периферии: убедитесь, что она может корректно функционировать в этом диапазоне напряжений.
Цифровые входы/выходы: 4 пина; 0 – 3
Логический уровень единицы — 3,3 В, нуля — 0 В. Максимальный ток выхода — 12 мА. К контактам подключены подтягивающие резисторы, которые по умолчанию выключены, но могут быть включены программно.
ШИМ: 4 пинов; 0 – 3
Позволяет выводить аналоговые значения в виде ШИМ-сигнала. Разрядность ШИМ – 10 бит.
UART: пины 3(RX) и 3(TX)
Используется для коммуникации модуля Wi-Fi с компьютером или другими устройствами по интерфейсу UART .
В этой статье расскажу, как можно реализовать простой WEB — сервер на чипе ESP8266 (ESP-01) с отображением на нем температуры с датчика DS18B20.
WEB — Сервер на ESP-01 с DS18B20
Необходимые детали:
► Беспроводной Wi-Fi модуль ESP8266-01 (ESP01) x 1 шт.
► Датчик температуры DS18b20 x 1 шт.
► Провод DuPont 10x, 2,54 мм, 20 см, F-F (Female — Female) x 1 шт.
► Адаптер для ESP-01 (USB, CH340G, ESP8266) x 1 шт.
► Резистор 4.7 кОм x 1 шт
Читайте также: