Танчик с ESP или Arduino внутри

Содержание

Arduino танк с bluetooth управлением

Танчик с ESP или Arduino внутри

Arduino танк с bluetooth управлением — прекрасный пример того, как легко и без особых знаний можно превратить обычный радиоуправляемый танчик в крутую игрушку управляемую с android устройства.

Причем при этом даже код редактировать не придется, все сделает специализированный софт. Возможно вы читали мою предыдущую статью Машинка на arduino и Bluetooth Android, посвященную переделке радиоуправляемой модели автомобиля на управление.

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

Для начала представляю краткий обзор возможностей моей поделки:

Теперь давайте разберем все по порядку.

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

Донор для нашего проекта.

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

Габариты: 330х145х105 миллиметров без учета ствола. Корпус оснащен четырьмя двигателями: два для движения, один для башни и один для ствола. Изначально танк умел стрелять резиновыми пулями, но механизм был сломан, поэтому я его попросту срезал со ствола. После этого места для размещения начинки стало достаточно.

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

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

Еще нам понадобится Bbluetooth модуль HC-06. Он так же прост в подключении и обладает низкой стоимостью.

HC-06 Bluetooth for arduino

Рассматривать его подробно нет необходимости. Этот bluetooth модуль для arduino очень популярен и широко применяется уже довольно давно.

Ну и конечно всем этим «хозяйством» будет управлять плата ардуино. В моем случае это arduino nano V3 ATmega328/ch340g, можно приобрести по ссылке. Тут даже фото выкладывать нет смысла. Подойдет любая плата ардуино, не принципиально.

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

Arduino танк с bluetooth управлением — прошивка для ардуино

.Как я уже писал в начале, мы не будем копаться в коде. Для составления скетча воспользуемся специализированным софтом, а именно программой FLProg. Это целый комбайн для работы с контроллерами ATmega. Поддерживает практически все платы ардуино и датчики к ним. В программу интегрирована Scada для управления микроконтроллерами с персонального компьютера, написанная автором программы.

Вот мой проект для Arduino танка с bluetooth управлением, созданный в программе FLProg: скачать с ЯндексДиска

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

Интерфейс FLProg

Откроется ArduinoIDE, ну а в ней вы работать умеете  

Источник: https://rightnotes.ru/instruktsii/arduino-tank.html

ESP32 и Ардуино

Танчик с ESP или Arduino внутри

Случилось то, чего все так долго ждали и о чём так много говорили — новые модули ESP32 стали широко продаваться и пошли в народ. Сегодня мы поговорим об этих модулях с точки зрения непрофессионального пользователя, привыкшего работать с Ардуино и создавать небольшие проекты для домашней автоматизации или просто для удовольствия и самообучения.

Работает ли это вообще? Что там с поддержкой этих модулей в Arduino IDE? Стоит ли платить больше или лучше ограничиться ставшим уже привычным ESP8266? Мы постараемся вместе ответить на все эти вопросы, а в конце статьи я дам ссылку на реальное воплощение работы ESP32 с Ардуино — дистрибутив бесплатной версии Arduino Mega Server для платформы ESP32.

Спецификации

Я не буду здесь подробно останавливаться на спецификациях ESP32, вы без труда найдёте их в Интернет: каждый обзорщик считает своим долгом привести простыню спецификаций в начале обзора ESP32.

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

Оставим это профессионалам (или тем, кто считает себя таковым) и сосредоточимся на практической стороне вопроса, понятной и доступной простому смертному.

Цена вопроса

Начнём с цены. На данный момент модуль ESP32 в китайских интернет-магазинах стоит 350 рублей и 500 в варианте платы с обвязкой и USB интерфейсом. Это против 100 и 160 рублей для модуля ESP8266, соответственно.

Как видим, разница в три с лишним раза, хотя абсолютные значения невелики, каждый, при желании, может позволить себе потратить 350 — 500 рублей на микроконтроллер. Для сравнения, Arduino Mega 2560 в том же Китае стоит 600 рублей, а в России около 1000 (плюс ещё стоимость Ethernet Shield).

Осталось только выяснить, стоит ли платить в три раза больше, чем за ESP8266 и что мы за это получим. (Забегая вперёд скажу, что на мой взгляд, безусловно стоит.)

Поддержка в Arduino IDE

Для того, чтобы что-то сделать с модулем, нужно сначала иметь его поддержку в Arduino IDE. На данный момент поддержка ESP32 в Arduino IDE находится хоть и на начальном, но вполне приличном и работоспособном уровне.

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

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

Добавление поддержки ESP32 в Arduino IDE

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

Замечу только, что все инструкции делятся на «старые», там, где упоминается Python и «новые», где упоминается GIT. Вам, естественно, нужно руководствоваться новыми.

Из множества инструкций лучшей можно назвать (как это ни странно) официальную инструкцию от производителя модуля.

github.com/espressif/arduino-esp32

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

Примечание. Все нижеизложенное касается инсталляции под Windows 7 64-bit, поскольку все эксперименты я производил именно на ней, в других операционных системах пути могут отличаться от указанных.

Файлы дистрибутива должны находиться в папке C:\Users\User\Documents\Arduino\hardware\espressif\esp32 где C: — это имя вашего диска с Windows, а User — это имя пользователя в операционной системе (и то и другое у вас может отличаться от указанных).

Неочевидные моменты инсталляции ESP32

Многие пользователи жалуются, что у них ничего не работает и не появляется поддержка ESP32 в Arduino IDE. Тут дело вот в чём: поскольку драйвера ESP32 только разрабатываются, то несколько изменён порядок расположения системных директорий.

В качестве папки для расположения скетчей в настройках Arduino IDE должна быть указана папка C:\Users\User\Documents\Arduino (с теми же поправками на диск и имя пользователя), а файлы дистрибутива должны располагаться внутри этой папки так, как рекомендует производитель.

Если не будет учтён этот момент, то поддержка ESP32 в Arduino IDE не появится и ничего работать не будет.

Версии Arduino IDE

Часто приходится слышать, что поддержка ESP32 есть только в последних версиях Arduino IDE, это не так — ESP32 прекрасно работает в более ранних версиях, например, дистрибутив Arduino Mega Server для ESP32 разрабатывался в версии 1.6.5 r2.

Преимущества ESP32

Теперь поговорим о преимуществах ESP32 перед его предшественником, ESP8266. На таких очевидных вещах как мощность процессора и объём оперативной памяти я останавливаться не буду, скажу только, что нужно сильно постараться, чтобы загрузить ESP32 полностью на задачах DIY и домашней автоматизации.

Пины

Ахиллесовой пятой его предшественника, модуля ESP8266, было (и есть) экстремально малое количество выводов.

После работы с такими контроллерами как Arduino Mega и Arduino Due с их десятками цифровых и аналоговых пинов, работа с ESP8266 вызывает недоумение: счёт GPIO идёт буквально на единицы и это сильно ограничивает применение этого модуля в реальных проектах. ESP32 если не полностью, то в значительной степени лишён этого недостатка.

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

Полностью свободными и доступными для использования можно назвать 13 выводов GPIO 2, 4, 12, 14, 13, 15, 16, 17, 25, 25, 27, 32, 33 В случае необходимости к ним можно добавить ограниченно функциональные и работающие только на вход GPIO 34, 35, 36, 39 Если пожертвовать некоторыми возможностями и не использовать в конкретных проектах Serial, SPI или I2C, то к этому числу можно добавить ещё 8 пинов GPIO 1, 3, 5, 18, 19, 21, 22, 23 Ну и возможно удастся использовать ещё 6 выводов, которые предназначены для работы с внутренней флеш-памятью (например, если подключить внешнюю SD карту) GPIO 6, 7, 8, 9, 10, 11 Как видим, с ESP8266 нет никакого сравнения — новый модуль выглядит просто отлично по количеству возможных подключений и это очень ценно в реальных проектах, в которых дорог каждый пин.

Скорость работы

Я уже упоминал мощный процессор, теперь несколько слов нужно сказать о скорости сетевой работы. Я затрудняюсь сказать с чем это связано, возможно с мощным процессором, возможно с оптимизацией сетевого стека, но модуль ESP32 под управлением Arduino Mega Server показал рекордную сетевую производительность.

Загрузка страницы с объёмным кодом CSS и JavaScript и обилием графики занимает всего одну с небольшим секунды — быстрее, чем на любом другом протестированном контроллере, включая проводные контроллеры с W5100 и W5500 Ethernet интерфейсом.

Применительно к Arduino Mega Server это снимает все ограничения на использование графики и любых JavaScript библиотек как по размеру, так и их количеству.

ESP32: обзор и характеристики платы под софт arduino ide и nodemcu

Танчик с ESP или Arduino внутри

Друзья всем привет наконец-то китайцы из Espressif Systems перестали нас с вами мурыжить и наконец-то выпустили в свободную продажу свои новейшие wi-fi микро контролеры ESP 32, в начале лета они анонсировали скорый их выход, но несколько раз откладывали выпуск и сегодня наконец-то я получил несколько штук и сейчас вам их покажу.

Приобретались они не на интернет площадках каких то зарубежных, а у Российского дистрибьютера Espressif Systems.

И так вот что я заказал, вот это содержимое пакета обошлось мне где то в две тысячи четыреста с чем то там рублей, это 36,9$, восемь из которых это доставка.

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

Вот так он выглядит он стоит 12,4$, вот и вот эта плата и вот эти модули производства и разработки Espressif Systems, то есть ещё куча аналогов на самом деле они примерно так же выглядят, но официальные дистрибьюторы продают официальные платы. Вот так они выглядят, так что ещё, давайте откроем один из врумов, врум 32 и давайте сравним например с ESP 14 размером, ну где на пару мм он выше и шире на пару мм, давайте попробуем поднять экран.

Итак, давайте более внимательно просмотрим плату, обратите внимание что микросхема промаркирована как ESP 32 — DOWVDQ6 392016, видимо 39 неделя 2016 года P6W255, вот так промаркирована микросхема, так… где-то у меня были ESP-14, вот как выглядит ESP-8266 в сравнии с ESP-32, как видите, она стала чуть крупнее.

Дальше, флешка у нас 25Q32, т.е 32 мегабайта, 4 мегабайта — объём этой флешки, так же здесь стоит кварцевый резонатор на 40 мегагерц, вот… ну и в общем-то всё. Давайте посмотрим с задней стороны как выглядит плата, как видим, ножек выведено гораздо больше чем у ESP-8266. Кроме того, здесь должен присутствовать JTAG-интерефейс поэтому очень интересно будет попробовать внутрисхемную отладку.

Кроме того, процессор заявляется как 2-х ядерный это для меня один из самых интересных моментов в ESP-32. Теперь  давайте рассмотрим отладочную плату DeItC. Так… ну здесь у нас SiLabs’овский CP2102 USB-UART мостик, линейный стабилизатор.. в общем-то.. диод.. Кнопка BOOT и кнопка обозначенная как EN.

Посмотреть параметры и купить плату можно тут

Пока не знаю за что это всё отвечает, надо пользоваться чтобы понять. С обратной стороны есть маркировка ESP32_Core_board_V2, в остальном ничего интересного нет.. microUSB-разъём. Эту плату я заказал потому что очень удобно в таком виде отлаживаться, а вот эти платы уже можно будет встраивать в какие-то конечные устройства.

Да, кстати отладочная плата в сравнении с nodeMCU, как видите, она чуть компактнее, а по количеству выводов — больше, так же она уже. Вот… я думаю здесь больше ничего интересного мы не увидим, давайте попробуем подключить, посмотрим, что-нибудь она высылает вообще в UART при включении или нет.

Итак, прежде чем начнём, хочу показать вам перечень плат которые на данный момент существуют, я его нашёл на сайте esp32.net.

Вот смотри … есть модульные платы, так называемые, это платы примерно вот такого форм-фактора ,как мой WROOM-32 их производят как минимум 2 производителя, это официальные платы Espressif ESP-WROOM-32, как у меня и также Ai-Thinker производит платы ESP32S они называются, они пришли на смену их же платам ESP-3212, вот эти ESP-3212 летом на али экспрессе китайцы активно пытались в парить, но у них их видимо то ли не было в наличии в итоге, то ли им не разрешили продавать… короче такую плату мне не выслали.

Читать также  Git2 от GitUp: обзор экшен-камеры с Wi-Fi

И также есть отладочные платы типа вот как вот эта их вообще производит куча производителей, вот тут такой список, и у меня плата от Espressif, она называется ESP32-DeItC. Как видите, на adafruit она 15 долларов стоит, в магазине olimex — 17 евро. Получается, что я у дистрибьютора за 12,5 долларов купил.

Посмотреть параметры и купить плату можно тут

После подключения платы к USB, определяется она, конечно же, как COM-порт, вот он появился, SiliconLabs SP210x и давайте откроем COM-порт, например, с помощью putty. Я уже поэкспериментировал, 115200 здесь скорость и, по-моему, COM8, вот… куча сразу отладочного вывода.

Теперь давайте посмотрим, что она пишет, сброс по включению питания, т.е. причина сброса, какие-то секции в памяти, во флешке видимо. Дальше… приветствие, Second boot is running версия 0.1, интересно что это значит всё.

Время компиляции некое, флешка подключена по SPI на 40 МГц, 4Мбайт — объём флешки, но это мы с вами уже знаем. Это у нас ещё какие-то области, как я понимаю, разметка флешки здесь перечисляется, так… ещё какая-то разметка. Инициализация менеджера кучи, менеджера динамической памяти, 2 региона.

Дальше стартуют задачи в операционке реального времени, какой-то таймер, tcp task, видимо версия сетевых дров, инициализация UART’а, версия библиотеки WiFi, SSC версия какая-то, redy. Так… ну и точкой доступа они видимо, выключается и стартует DHCP-сервер.

Вот… всё что происходит после запуска, после старта ESP-32, дальше тут можно вводить какие-то AT-команды, я пока не занимался чтением документации пока не знаю какие можно отправлять, но я уверен, что тут всё, что перечислено в документации — должно работать.

Мне же интересна больше не AT-прошивка, не прошивка для AT-команд, а сборка своей прошивки и также существующие на данный момент кастомные прошивки типа nodeMCU, ещё каких-то вариантов, ну ладно в общем я буду изучать, сегодня такое вводное видео было, я надеюсь вам понравилось то, что сегодня показал. Как модуль выглядит внутри, какие платы, где можно их приобрести. Вот… на этом у меня сегодня всё, я благодарю вас за просмотр ролика до конца, желаю.

Я не буду здесь подробно останавливаться на спецификациях ESP32, вы без труда найдёте их в Интернет: каждый обзорщик считает своим долгом привести простыню спецификаций в начале обзора ESP32. Скажу только, что они впечатляют и если подходить к делу серьёзно и вдумчиво, то можно потратить не один год на изучение всех возможностей модуля и эксперименты с ним.

Оставим это профессионалам (или тем, кто считает себя таковым) и сосредоточимся на практической стороне вопроса, понятной и доступной простому смертному.

Посмотреть параметры и купить плату можно тут

Цена 

Начнём с цены. На данный момент модуль ESP32 в китайских интернет-магазинах стоит 350 рублей и 500 в варианте платы с обвязкой и USB интерфейсом. Это против 100 и 160 рублей для модуля ESP8266, соответственно.

Как видим, разница в три с лишним раза, хотя абсолютные значения невелики, каждый, при желании, может позволить себе потратить 350 — 500 рублей на микроконтроллер.

Для сравнения, Arduino Mega 2560 в том же Китае стоит 600 рублей, а в России около 1000 (плюс ещё стоимость Ethernet Shield).

Осталось только выяснить, стоит ли платить в три раза больше, чем за ESP8266 и что мы за это получим. (Забегая вперёд скажу, что на мой взгляд, безусловно стоит.)

Беспроводной адаптер для программирования Arduino или AVR с загрузчиком на базе ESP8266

Танчик с ESP или Arduino внутри

Небольшая заметка о самодельном адаптере на базе ESP8266, позволяющем загрузить прошивку в микроконтроллер с установленным UART загрузчиком или Arduino. Последнее время при проектировании устройств на микроконтроллерах AVR, для программирования вывожу только один 6-пиновый разъем (не ISP) для FTDI адаптера.

Он позволяет и загрузить прошивку, и отладиться по UART после прошивки. Именно так сделано в Arduino, идея позаимствована оттуда. Это удобно.

 Тем временем, не раз приходилось сталкиваться с ситуацией, когда нужно загрузить прошивку в микроконтроллер, но он уже в корпусе который не помещается на рабочем месте/лежит на антресоли/в другом городе/замурован в стену. В таких случаях адаптер FTDI не применим из-за короткого USB шнурка и приходилось изворачиваться с ноутбуком.

Задумался о беспроводном программаторе. Тут как нельзя лучше подойдет ESP8266, ведь он обладает UART и в любом исполнении имеет хотя бы один GPIO, пригодный для перезагрузки контроллера и входа в режим программирования

В сети был найден следующий материал по теме:

  1. Programming an Arduino via WiFi with the ESP8266 — модуль типа ESP-01 подключается на проводках к Arduino pro mini, затем для загрузки прошивки используется python скрипт
  2. Programando un Arduino remotamente con el módulo ESP8266 — тут, как я понял, не вдаваясь в подробности, один из GPIO Arduino соединен с RESET. Сначала микроконтроллеру передается команда перезагрузить себя самого, а потом уже начинается загрузка прошивки
  3. ESP8266-transparent-bridge — прошивка для ESP8266 делающая из модуля прозрачный Wi-Fi — UART мост с поддержкой AT команд для управления GPIO2. Автор предлагает нажимать кнопку reset на Arduino, а затем запускать avrdude c параметрами -c avrisp и -P net:x.x.x.x:23, но это позволяют автоматизировать AT. Именно эту прошивку я и взял за основу

Характеристики адаптера следующие:

  • Шести-пиновый разъем c распиновкой как у адаптера FTDIСкрытый текст
  • Работа в схемах с напряжением питания микроконтроллера 3.3В или 5В, выбирается джамперами
  • Стабильная работа на скорости до 57600 включительно
  • Перезагрузка микроконтроллера при помощи AT команд для входа в режим программирования

Работоспособность проверялась на китайской Arduino pro mini со стоковым загрузчиком и на ATmega8 c установленным optiboot и скоростях 9600, 19200 и 57600. На скорости по умолчанию (115200) прошиваться контроллер отказался.

Для тех, кто не хочет паять и делать плату

В случае применения в схемах с питанием 3.3В достаточно просто присоединить модуль в исполнение esp-01 к Arduino проводками (VCC–>VCC, GND—>GND, RX—>TX, TX—>RX, GPIO2—>DTR). Плата сделана для удобства подключения и возможности работы в схемах с напряжением питания микроконтроллера 5В.

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

Применяется модули типа esp-02, но подойдет и распространенный esp-01, только плату перетрассировать нужно будет слегка. Джамперами выбирается режим работы 3.3/5В. U1 — стабилизатор преобразующий 5В в 3.3В в случае необходимости.

R2 и R3 — делитель, тоже для 5В режима. После сборки нужно установить джампер RPOG и при помощи того же FTDI или любого другого UART адаптера загрузить ESP8266-transparent-bridge.

Шаблон односторонней печатной платы (SVG вектор):

Если нужен негатив достаточно открыть текстовым редактором и заменить #000000 на #FFFFFF и наоборот.
В формате KiCad на github

Прошивка микроконтроллера

Обычно, чтобы загрузить прошивку следует перезагрузить микроконтроллер. FTDI адаптер делает это импульсом на ноге DTR (первая в разъеме), она через емкость соединена с ногой RESET микроконтроллера. В нашем случае на место DTR выведена GPIO2 (см. UPD).

Для перезагрузки микроконтроллера используются AT команды “+++AT GPIO2 1” и затем “+++AT GPIO2 0”, которые меняют уровень на GPIO2 ESP8266. Одного перепада достаточно, чтобы перезагрузить контроллер.

Сразу после перезагрузки некоторое время работает загрузчик и ждет образ прошивки по UART, его можно передать с помощью утилиты avrdude. Ниже приведен скрипт выполнение которого прошивает контроллер:

HEXILE=”firmware.hex” ADDRESS=x.x.x.x BAUD=57600 echo “+++AT BAUD $BAUD” | nc $(ADDRESS) 23 echo “+++AT GPIO2 1” | nc $(ADDRESS) 23 echo “+++AT GPIO2 0” | nc $(ADDRESS) 23 avrdude -P net:$(ADDRESS):23 -F -U flash:w:$(HEXILE):i

Данные команды можно включить в Makefile.
Беспроводную прошивку можно провернуть и в Windows, установив утилиты nc и avrdude.

, демонстрирующее работу на примере китайской Arduino pro mini

UPD: sav13 предложил в качестве прошивки для ESP8266 использовать esp-link, она совместима с текущей схемой адаптера. Данная прошивка имеет ряд преимуществ по сравнению с ESP8266-transparent-bridge, в т.ч. WEB интерфейс для конфигурации, нет необходимости использовать AT команды.

Источник: http://robot-russia.ru/2016/07/30/besprovodnoj-adapter-dlya-programmirovaniya-arduino-ili-avr-s-zagruzchikom-na-baze-esp8266/

WiFi ESP8266 в проектах Arduino

Танчик с ESP или Arduino внутри

Микросхема ESP8266 – один из самых популярных инструментов для организации беспроводной связи в проектах умного дома.

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

На основе ESP8266 созданы такие популярные платы как WeMos и NodeMcu, а также огромное количество самодельных проектов. В этой статье, мы узнаем, что из себя представляет ESP82266, какие бывают ее разновидности, как работать с ESP8266 в среде Arduino IDE.

Описание ESP8266

ESP8266 – микроконтроллер с интерфейсом WiFi, который имеет возможность исполнять программы из флеш-памяти.  Устройство было выпущено в 2014 году китайской фирмой Espressif и практически сразу же стало популярным.

Контроллер недорогой, обладает небольшим количеством внешних элементов и имеет следующие технические параметры:

  • Поддерживает Wi-Fi протоколы 802.11 b/g/n с WEP, WPA, WPA2;
  • Обладает 14 портами ввода и вывода, SPI, I2C, UART, 10-бит АЦП;
  • Поддерживает внешнюю память до 16 МБ;
  • Необходимое питание от 2,2 до 3,6 В, потребляемый ток до 300 мА в зависимости от выбранного режима.

Важной особенностью является отсутствие пользовательской энергонезависимой памяти на кристалле. Программа выполняется от внешней SPI ПЗУ при помощи динамической загрузки необходимых элементов программы. Доступ к внутренней периферии можно получить не из документации, а из API набора библиотек. Производителем указывается приблизительное количество ОЗУ – 50 кБ.

Особенности платы ESP8266:

  • Удобное подключение к компьютеру – через USB кабель, питание от него же;
  • Наличие встроенного преобразователя напряжения 3,3В;
  • Наличие 4 Мб флеш-памяти;
  • Встроенные кнопки для перезагрузки и перепрошивки;
  • Все порты выведены на плату на две гребенки с шагом 2,5 мм.

Сферы применения модуля ESP8266

  • Автоматизация;
  • Различные системы для умного дома: Беспроводное управление, беспроводные розетки, управление температурой, дополнение к сигнализационным системам;
  • Мобильная электроника;
  • ID метки;
  • Детские игрушки;
  • Mesh-сети.

Распиновка esp8266

Существует огромное количество разновидностей модуля ESP8266. На рисунке представлены некоторые из них. Наиболее популярным вариантом является ESP 01.

Исполнение программы требуется задавать состоянием портов GPIO0, GPIO2 и GPIO15, когда заканчивается подача питания. Можно выделить 2 важных режима – когда код исполняется из UART (GPIO0 = 0, GPIO2 = 1 и GPIO15 = 0) для перепрошивки флеш-карты и когда исполняется из внешней ПЗУ (GPIO0 = 1, GPIO2 = 1 и GPIO15 = 0) в штатном режиме.

Распиновка для ESP01 изображена на картинке.

Описание контактов:

  • 1 – земля, 8 – питание. По документации напряжение подается до 3,6 В – это важно учесть при работе с Ардуино, на которую обычно подают 5 В.
  • 6 – RST, нужна для перезагрузки микроконтроллера при подаче на него низкого логического уровня.
  • 4 – CP_PD, также используется для перевода устройства в энергосберегающий режим.
  • 7 и 0 – RXD0 и TXD0, это аппаратный UART, необходимый для перепрошивки модуля.
  • 2 – TXD0, к этому контакту подключается светодиод, который загорается при низком логическом уровне на GPIO1 и при передаче данных по UART.
  • 5 – GPIO0, порт ввода и вывода, также позволяет перевести устройство в режим программирования (при подключении порта к низкому логическому уровню и подачи напряжения) .
  • 3 – GPIO2, порт ввода и вывода.

Распиновка ESP-12

Основные отличия Ардуино от ESP8266

  • ESP8266 имеет больший объем флеш-памяти, при этом у ESP8266 отсутствует энергонезависимая память;
  • Процессор ESP8266 быстрее, чем у Ардуино;
  • Наличие Wi-Fi у ESP8266;
  • ESP8266 потребляеn больше тока, чем для Ардуино;

Программирование ESP8266 в Arduino IDE

Программный комплект разработчика esp8266 включает в себя:

  • Компилятор из пакета GNU Compiler Collection.
  • Библиотеки, стеки протоколов WiFi, TCP/IP.
  • Средство загрузки информации в программу контроллера.
  • Операционная IDE.

Изначально модули ESP8266 поставляются с прошивкой от фирмы-изготовителя. С ее помощью можно управлять модулем с внешнего микроконтроллера, реализовывать работу с Wi-Fi как с модемом. Также существует множество других готовых прошивок. Некоторые из них позволяют настраивать работу модуля при помощи WEB-интерфейса.

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

В настоящий момент для ESP8266 можно реализовать следующие функции:

  • Основные функции языка Wiring. Управлять портами GPIO можно точно так же, как и пинами на плате Ардуино: pinMode, digitalRead, digitalWrite, analogWrite. Команда analogRead(А0) позволяет считать значения АЦП. При помощи команды analogWrite (pin, value) можно подключить ШИМ на нужном выходе GPIO. При value=0 ШИМ отключается, максимальное значение достигает константы, равной 1023.С помощью функций attachInterrupt, detachInterrupt можно выполнять прерывание на любом порте GPIO, кроме 16.
  • Тайминг и delay. Используя команды millis и micros можно вернуть мс и мкс, которые прошли с момента старта. Delay позволяет приостановить исполнение программы на нужное время. Также функция delay(…) позволяет поддерживать нормальную работу Wi-Fi, если в скетче присутствуют большие элементы, которые выполняются более 50 мс. Yield() – аналог функции delay(0).
  • Serial и Serial1 (UART0 и UART1). Работа Serial на ESP8266 аналогична работе на ардуино. Запись и чтение данных блокируют исполнение кода, если FIFO на 128 байт и программный буфер на 256 байт заполнены. Объект Serial пользуется аппаратным UART0, для него можно задать пины GPIO15 (TX) и GPIO13 (RX) вместо GPIO1(TX) и GPIO3(RX). Для этого после функции Serial.begin(); нужно вызвать Serial.swap();. Аналогично Serial1 использует UART1, который работает на передачу. Необходимый пин для этого GPIO2.
  • Макрос PROGMEM. Его работа аналогична работе в Ардуино. Позволяет перемещать данные read only и строковые постоянные во flash-память. При этом в ESP8266 не сохраняются одинаковые константы, что приводит к дополнительной трате флеш-памяти.
  • I2C. Перед началом работы с шиной I2C выбираются шины с помощью функции Wire.pins(int sda, int scl).
  • SPI, OneWire – поддерживаются полностью.

Использование esp8266 для связи Ардуино по WiFi

Перед подключением к Ардуино важно помнить, что у ESP8266 напряжение питания не может быть выше 3,6, в то время как на пате Ардуино напряжение равно 5 В. Соединять 2 микроконтроллера нужно с помощью резистивных делителей. Перед подключением модуля нужно ознакомиться с распиновкой выбранного ESP8266.  Схема подключения для ESP8266-01 представлена на рисунке.

3,3 В с Ардуино – на Vcc&CH_PD на модуле ESP8266, Земля с Ардуино – к земле с ESP8266, 0 – TX, 1 – RX.

Для поддержки стабильной работы ESP8266 необходим источник постоянного напряжения на 3,3 В и максимальный ток 250 мА. Если питание происходит от конвертера USB-TTL, могут происходить неполадки и сбои в работе.

Работа с библиотекой Wi-Fi для ESP8266 схожа с библиотекой для обыкновенного шилда. Имеется несколько особенностей:

  • mode(m) – для выбора одного из трех режимов: клиент, точка доступа или оба режима единовременно.
  • softAP(ssid) – нужен для создания открытой точки доступа.
  • softAP(ssid, password) – создает точку доступа с паролем, который должен состоять не менее чем из 8 знаков.
  • WiFi.macAddress(mac) и WiFi.softAPmacAddress(mac)– определяет МАС адрес.
  • WiFi.localIP() и WiFi.softAPIP() – определение IP адреса.
  • printDiag(Serial); – позволят узнать данные о диагностике.
  • WiFiUDP – поддержка передачи и приема multicast пакета в режиме клиента.

Работа выполняется по следующему алгоритму:

  • Подключение USB-TTL к USB и к ESP.
  • Запуск Arduino IDE.
  • Выбрать в меню инструменты нужный порт, плату, частоту и размер flash-памяти.
  • Файл — Примеры — ESP8266WiFi — WiFiWebServer.
  • Записать в скетче SSID и пароль сети Wi-Fi.
  • Начать компиляцию и загрузку кода.
  • Дождаться окончания процесса прошивки, отсоединить GPIO0 от земли.
  • Поставить скорость 115200.
  • Произойдет подключение, будет записан адрес IP.
  • Открыть браузер, ввести в адресной строке номер IP/gpio/1
  • Посмотреть монитор порта, если к выходу GPIO2 подключен светодиод, он должен загореться.

NodeMCU на базе esp8266

NodeMCU – это платформа, основанная на базе модуля esp8266. Используется для управления схемой на расстоянии при помощи интернета через Wi-Fi. Плата малогабаритная, компактная, стоит дешево, на лицевой стороне имеется разъем для USB. Рядом кнопки для отладки и перезагрузки микроконтроллера. Также установлен чип ESP8266. Напряжение питания – от 5 до 12 В, желательно подавать более 10 В.

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

  • D1 и D2 – для интерфейса I2C/ TWI;
  • D5-D8- для интерфейса SPI;
  • D9, D10 – для UART;
  • D1-D10 – могут работать как ШИМ.

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

WeMos на базе esp8266

WeMos  – еще один вид платформы, основанный на базе микроконтроллера esp8266. Соответственно, имеется Wi-Fi модуль, поддерживается Arduino IDE, имеется разъем для внешней антенны.

Плата имеет 11 цифровых входов/выходов, которые (кроме D0) поддерживают interrupt/pwm/I2C/one-wire. Максимальное напряжение питания достигает 3,3 В. Также на платформе присутствует USB разъем.

 Аналоговый вход 1 с максимальным напряжением 3,2В.

Для работы с модулем нужно установить драйвер CH340 и настроить Ардуино IDE под ESP8266. Для этого нужно в меню настройки в строке «дополнительная ссылка для менеджера плат» добавить адрес http://arduino.esp8266.com/stable/package_esp8266com_index.json.

После этого требуется найти пакет esp8266 by ESP8266 и установить его.  Затем нужно выбрать в меню инструменты микроконтроллер Wemos D1 R2 и записать нужный скетч.

Выводы по ESP8266

С помощью плат на основе микросхемы ESP8266 вы можете добавить в свои проекты возможности “большого интернета”, сделав их гораздо более интеллектуальными.

Дистанционное управление, сбор и анализ данных на сервере, обработка голоса и работа с изображением – все это становится доступным, когда мы подключаем наш проект по WiFi к интернету.

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

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

Поделиться:
Нет комментариев

    Добавить комментарий

    Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.