Как сделать роутер из ардуино

Добавил пользователь Morpheus
Обновлено: 10.09.2024

Arduino Uno WiFi — оригинальная итальянская плата семейства Uno с модулем Wi-Fi.


[NEW] На сегодняшний день на смену ей пришла более новая версия платы: Uno WiFi Rev2 c модулем Wi-Fi и Bluetooth.

На Uno WiFi предусмотрено всё для удобной работы с микроконтроллером: 14 цифровых входов/выходов (6 из них могут использоваться в качестве ШИМ-выходов), 6 аналоговых входов, разъём USB, разъём питания, разъём для внутрисхемного программирования (ICSP) и кнопка сброса микроконтроллера.

Изюминка платы — модуль WiFi ESP8266, который позволяет ей обмениваться информацией с другими модулями по беспроводным сетям стандартов 802.11 b/g/n.

Видеообзор платы

Подключение и настройка

Для начала работы с платой Uno WiFi в операционной системе Windows скачайте и установите на компьютер интегрированную среду разработки Arduino IDE.

Что-то пошло не так?

Настройка модуля WiFi

Для первичной настройки Arduino с модулем WiFi выполните следующие действия.


Подключите питание к плате. Через несколько секунд в списке доступных сетей появится новая — с именем Arduino-Uno-WiFi-xxxxxx , где xxxxxx — уникальный номер платы.


Откроется web-интерфейс настройки платы.


Зайдите в сетевые настройки платы, нажатием на кнопку CHANGE в пункте Network SSID .


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


При успешном подключении к Wi-Fi сети появится информация о присвоенном IP-адресе. Запомните или запишите его. В нашем примере мы получили адрес 192.168.43.17 .Теперь на Arduino Uno WiFi можно зайти с любого устройства, подключенного к этой сети.


Для дальнейшей работы с платой переключите ваш ПК с Wi-Fi-сети Arduino-Uno-WiFi-xxxxxx на вашу домашнюю беспроводную сеть — Amperka Mobile .


Зайдите в браузере по выданному ранее IP-адресу. Откроется тот же web-интерфейс настройки платы.


Зайдите в сетевые настройки платы, нажав на кнопку CHANGE в пункте Network SSID .


Переключите режим сети из AP+STA в STA кнопкой SWITCH TO STA MODE .


В колонке WiFi Mode отобразится режим STA .

Это значит, вы всё сделали верно, и можно переходить к прошивке платы по Wi-Fi.

Прошивка по WiFi

Arduino Uno WiFi имеет в своём запасе ещё один приятный бонус — возможность загружать скетчи без использования USB-кабеля в режиме OTA (Firmware Over The Air). Рассмотрим подробнее, как это сделать.

Отключите плату от ПК и подключите к другому источнику питания — например, к блоку питания или Power Shield.


Запустите Arduino IDE.

Теперь необходимо сообщить среде программирования номер COM-порта, который соответствует подключённой плате.

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

Так как мы прошиваем Arduino по WiFi, плата определится как удалённое устройство с IP-адресом


Загрузка скетча

Теперь можно переходить к примерам использования.

Примеры использования

Web-сервер

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

Элементы платы


Микроконтроллер ATmega328P

Микроконтроллер ATmega16U2

Микроконтроллер ATmega16U2 обеспечивает связь микроконтроллера ATmega328P с USB-портом компьютера. При подключении к ПК плата Uno WiFi определяется как виртуальный COM-порт. Прошивка микросхемы 16U2 использует стандартные драйвера USB-COM, поэтому установка внешних драйверов не требуется.

Пины питания

VIN: Напряжение от внешнего источника питания (не связано с 5 В от USB или другим стабилизированным напряжением). Через этот вывод можно как подавать внешнее питание, так и потреблять ток, если к устройству подключён внешний адаптер.

5V: На вывод поступает напряжение 5 В от стабилизатора платы. Данный стабилизатор обеспечивает питание микроконтроллера ATmega328. Запитывать устройство через вывод 5V не рекомендуется — в этом случае не используется стабилизатор напряжения, что может привести к выходу платы из строя.

IOREF: Вывод предоставляет платам расширения информацию о рабочем напряжении микроконтроллера. В зависимости от напряжения, плата расширения может переключиться на соответствующий источник питания либо задействовать преобразователи уровней, что позволит ей работать как с 5 В, так и с 3,3 В устройствами.

Порты ввода/вывода

Цифровые входы/выходы: пины 0 – 13
Логический уровень единицы — 5 В, нуля — 0 В. Максимальный ток выхода — 40 мА. К контактам подключены подтягивающие резисторы, которые по умолчанию выключены, но могут быть включены программно.

АЦП: пины A0 – A5
6 аналоговых входов, каждый из которых может представить аналоговое напряжение в виде 10-битного числа (1024 значений). Разрядность АЦП — 10 бит.

TWI/I?C: пины SDA и SCL
Для общения с периферией по синхронному протоколу, через 2 провода. Для работы — используйте библиотеку Wire .

SPI: пины 10(SS) , 11(MOSI) , 12(MISO) , 13(SCK) .
Через эти пины осуществляется связь по интерфейсу SPI. Для работы — используйте библиотеку SPI .

UART: пины 0(RX) и 1(TX)
Эти выводы соединены с соответствующими выводами микроконтроллера ATmega16U2, выполняющей роль преобразователя USB-UART. Используется для коммуникации контроллера с компьютером или другими устройствами через класс Serial .

Светодиодная индикация

Имя светодиода Назначение
ON Индикатор питания на плате.
L Светодиод вывода 13 . При отправке значения HIGH светодиод включается, при отправке LOW – выключается.
WIFI Мигает при поиске и обмена данными с WiFi сетями
RX и TX Мигают при обмене данными между контроллером и ПК.

Разъём USB Type-B

Разъём USB Type-B предназначен для прошивки платформы Uno WiFi с помощью компьютера.

Разъём для внешнего питания

Разъём для подключения внешнего питания от 7 В до 12 В.

Регулятор напряжения 5 В

Когда плата подключена к внешнему источнику питания, напряжение проходит через стабилизатор MPM3610 . Выход стабилизатора соединён с пином 5V . Максимальный выходной ток составляет 1 А.

Регулятор напряжения 3,3 В

Стабилизатор MPM3810GQB-33 с выходом 3,3 вольта. Обеспечивает питание модуля WiFi ESP8266 и выведен на пин 3,3V . Максимальный выходной ток составляет 1 А.

ICSP-разъём для ATmega328P

ICSP-разъём предназначен для внутрисхемного программирования микроконтроллера ATmega328P. С использованием библиотеки SPI данные выводы могут осуществлять связь с платами расширения по интерфейсу SPI. Линии SPI выведены на 6-контактный разъём, а также продублированы на цифровых пинах 10(SS) , 11(MOSI) , 12(MISO) и 13(SCK) .

ICSP-разъём для ATmega16U2

ICSP-разъём предназначен для внутрисхемного программирования микроконтроллера ATmega16U2.

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

Описание ESP8266

микросхема 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 изображена на картинке.

распиновка esp8266

esp8266 описание контактов

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

распиновка esp12 esp8266

Основные отличия Ардуино от 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 представлена на рисунке.

esp8266 подключение

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

esp8266 nodemcu

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

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

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

WeMos на базе esp8266

wemos d1 esp8266

WeMos – еще один вид платформы, основанный на базе микроконтроллера esp8266. Соответственно, имеется Wi-Fi модуль, поддерживается Arduino IDE, имеется разъем для внешней антенны. Плата имеет 11 цифровых входов/выходов, которые (кроме D0) поддерживают interrupt/pwm/I2C/one-wire. Максимальное напряжение питания достигает 3,3 В. Также на платформе присутствует USB разъем. Аналоговый вход 1 с максимальным напряжением 3,2В.

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

Выводы по ESP8266

С помощью плат на основе микросхемы ESP8266 вы можете добавить в свои проекты возможности “большого интернета”, сделав их гораздо более интеллектуальными. Дистанционное управление, сбор и анализ данных на сервере, обработка голоса и работа с изображением – все это становится доступным, когда мы подключаем наш проект по WiFi к интернету. В следующих статьях мы подробно рассмотрим то, как можно программировать устройства на базе esp8266, а также уделим внимание таким популярным платам как WeMos и NodeMcu.

С помощью ESP8266 Arduino WiFi модуля можно создать полноценную сеть Wi-Fi. Микроконтроллер Arduino Uno через последовательный интерфейс, или UART, позволяет подключиться к интернету через модуль. Этот же модуль может выполнять роль обслуживающего адаптера Wi-Fi для беспроводного доступа в Сеть.

Arduino Uno

Описание модуля с его особенностями

Ардуино WiFi модуль обладает развитым интерфейсом:

  • 14 входами/выходами, 6 из которых могут работать на выход в режиме ШИМ;
  • 6 входами аналогового сигнала;
  • USB;
  • разъемом питания;
  • коннекторами для ICSP;
  • кнопкой сброса установок.

Присутствие на плате модуля Wi-Fi ESP8266 позволяет Arduino поддерживать обмен информацией по беспроводным сетям 802.11 b/g/n.

Микросхема ESP8266

Для создания беспроводной сети в пределах помещения наиболее часто используется чип ESP8266. С его помощью организуется связь по Wi-Fi, осуществляются сбор информации, дистанционное управление и выход в интернет. Платы Arduino Uno, WeMos, NodeMcu используют ESP8266. Множество самодельных проектов основано на этом чипе с использованием среды Arduino IDE.

Микросхема ESP8266

Зачем нужен выход в сеть

ESP8266 применяется также:

Схема подключения

Перед началом работ необходимо проверить контакты RX-TX — они должны соединяться перекрестием. Уровень сигналов ESP8266 — 3,3В, а Arduino — 5 В, поэтому для питания модуля используйте резистивный делитель 1:2, резисторы на 1 кОм и 2 кОм.

Схема подключения

Для подключения модуля Arduino с модулем Wi-Fi требуется выполнение следующих шагов:

Распиновка платы

Контакты под номерами от 0 до 13 требуют соединения только с цифровым сигналом, то есть они понимают только два состояния: высокий и низкий уровни сигнала. Также они работают с сигналами ШИМ и на вход, и на выход.

Цифровые пины платы Uno

Аналоговые пины Arduino Uno

Контакт Адрес в скетче Особое значение
Аналоговый A0 A0 или 14
Аналоговый A1 A1 или 15
Аналоговый A2 A2 или 16
Аналоговый A3 A3 или 17
Аналоговый A4 A4 или 18 I2C (SCA)
Аналоговый A5 A5 или 19 I2C (SCL)

На плате имеются дополнительные контакты:

  1. AREF — источник опорного напряжения для АЦП, управляемый функцией analogReference().
  2. RESET, низкий сигнал на котором перезагружает устройство.

Программирование модуля

Выводы по ESP8266

Платы на базе ESP8266 позволяют строить проекты с полным использованием возможностей интернета. В таких проектах доступны дистанционное управление, анализ информации на сервере, сбор данных, обработка звука, изображений. При этом устройство не привязано проводом к сети и остается мобильным в зоне Wi-Fi.

Описание ESP8266

ESP8266 — это контроллер, работающий со стандартом беспроводной связи Wifi и способный исполнять код программ из встроенной flash-памяти. Чип был разработан и выпущен китайской компанией Espressif и моментально стал одним из популярнейших для данных целей.

ESP8266

Сам вай фай модуль для Ардуино Wifi достаточно дешев и содержит небольшое количество внешних элементов, имея следующие технические характеристики:

  • Поддержка протоколов стандарта Wifi b/g/n с алгоритмами шифрования и защиты данных WEP, WPA, WPA2;
  • Четырнадцать портов ввода и вывода, последовательного периферийного интерфейса SPI, I2C, UART и 10-битовый аналого-цифровой преобразователь;
  • Поддержка внешней памяти до 16 Мб;
  • Достаточное для питания напряжение от 2.2 до 3.6 Вольт и потребление тока до 300 мА, которое зависит от режима работы.

Важно! Микроконтроллер не обладает пользовательской энергонезависимой памятью. Все программы выполняются из внешних постоянных запоминающих устройств и загружаются динамическим образом. Доступ к внутренним интерфейсам осуществляется через API набор библиотек, а не с помощью документации. Количество оперативной памяти приблизительно равно 50 Кб.

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

Контроллер обладает следующими особенностями:

  • Удобство подключения к ПК через интерфейс порта USB. Через него же выполняется и питание;
  • Встроенный преобразователь напряжения на 3.3 Вольта;
  • 4 Мб flash-памяти;
  • Наличие кнопок перезагрузки и перепрошивки;
  • Порты выведены на контроллер в два ряда с шагом в 2.5 мм.

Сферы применения

Модуль часто применяют в различных проектах в связке с другими устройствами для:

 Виды плат

Распиновка

Важно понять, что вариаций модуля существует немало. На рисунке в конце предыдущего подраздела представлены лишь некоторые из них. Особую популярность обрел контроллер ESP-01. Исполнение кода программы задается состоянием портов GPIO0, GPIO2 и GPIO15: включением и выключением подачи питания на них. Существует два важных режима работы:

  • Код выполняется из универсального асинхронного приёмопередатчика (UART) с комбинацией GPIO0 = 0, GPIO2 = 1 и GPIO15 = 0. Эти действия выполняются для перепрошивки flash-накопителя;
  • Код выполняется из внешнего ПЗУ с комбинацией GPIO0 = 1, GPIO2 = 1 и GPIO15 = 0 для работы в штатном режиме.

 Распиновка

Приводится официальное описание всех контактов:

  • 1 — заземление, а 8 — питание платы. Напряжение необходимо подавать до 3.6 В в отличие от Ардуино, в который подают 5В;
  • 6 — кнопка Reset, необходимая для перезагрузки чипа;
  • 4 — CP_PD — переводит чип в режим энергосбережения;
  • 7 или 0 — RXD0 и TXD0 аппаратные пины для универсального асинхронного приёмопередатчика, необходимые для перепрошивки;
  • 2 — TDX0, к которому подключают светодиод, срабатывающий в случае передачи данных по УАПП или при подключении на низком логическом уровне;
  • 5 — GPI0, позволяющий осуществлять вход и вывод, а также переводить контроллер в режим программирования;
  • 3 — GPIO2 — стандартный порт ввода/вывода.

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

От не менее популярного Arduino Wifi модуль ESP отличается следующими чертами:

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

 Пины контроллера

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

Для удобства программирования на микроконтроллере в комплекте идут:

  • Компилятор кода программы типа GNU;
  • Библиотеки для работы со стандартами Wifi и TCP/IP;
  • Программные средства для загрузки данных в память чипа;
  • Интегрированная среда разработки программ.

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

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

Функции, поддерживаемые микроконтроллером:

  • Большинство функций языка программирования Wiring;
  • Управление таймингом и delay’ем, позволяющие передать время, прошедшее со старта запуска чипа, завершить или приостановить выполнение кода;
  • Функции Serial, Serial1, которые аналогично Ардуино работают с данными и блокируют их запись или чтение по необходимости;
  • PROGMEM-макрос, позволяющий перемещать данные для чтения во flash-память;
  • I2C шина, которую нужно выбирать с помощью функции Wire.pins(int sda, int scl);
  • SPI и OneWire библиотеки.

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

С помощью ESP можно устроить подключение Arduino или реле к Wifi. Важный момент связи состоит в том, что напряжение, подаваемое для этих микроконтроллеров, разное, и их соединение должно происходить через резистивные делители. Общая схема подключения выглядит так: пин на 3.3 Вольта от Ардуино подключается к CH_PD на ESP, а заземление с Ардуино подключается к заземлению на ЕSP. 0 на ТХ, а 1 на RХ.

Дальнейшее подключение выполняется по инструкции:

  1. Подключение USB-TTL к USB порту и ESP;
  2. Запуск среды разработки Arduino;
  3. Выбор в настройках необходимых параметров для памяти, порта и платы;
  4. Переход в Файл — Примеры — ESP — WifiServer;
  5. Запись SSID и защитного кода беспроводной сети;
  6. Запуск компиляции и загрузки;
  7. Ожидание завершения прошивки и отсоединение контакта GPI0 от заземления;
  8. Установка скорости в районе 115 200;
  9. Подключение и получение нового IP-адреса;
  10. Далее нужно открыть интернет-браузер и ввести в поиске строку Номер IP/gpio/1;
  11. Промониторить порт и проверить, загорелся ли светодиод, если он подключен.

NodeMCU на базе esp8266

NodeMCU — одна из наиболее популярных платформ, основанных на чипе ESP. Она чаще всего используется, чтобы управлять схемами на расстоянии с помощью беспроводной связи Wifi. Сама плата стоит недорого, весит мало и имеет порт USB. По бокам от него расположены кнопки для перезагрузки и отладки платформы. Питание лучше всего подавать до 12 В, но не менее 10.

Важно! Наиболее преимущество платы — ее низкое энергопотребление. Именно поэтому NodeMCU часто применяют в схемах на автономном питании от батареи. Более того, NodeMCU имеет набор API для ввода и вывода в аппаратном режиме, что позволяет минимизировать количество действий при настройке и работе.

 NodeMCU

WeMos на базе ESP8266

Второе популярное решение на базе ESP — WeMos. Он также поддерживает связь по WiFi, разработку на Arduino IDE и даже содержит разъем для внешней Wifi антенны. Максимальное напряжение составляет 3.3 В. На плате расположено 11 портов для ввода и вывода, поддерживающие стандартные для ESP и Arduino технологии. Как и в NodeMCU, в WeMos есть USB-порт. Чтобы работать c платформой, необходимо установить драйвер CH340 и настроить IDE от Ардуино на работу с ESP.

 Wemos

Примеры использования и передачи данных с AArduino на AArduino или ПК по Wifi

В качестве примера можно привести создание программы для NodeMCU в среде Ардуино. Для этого на ПК устанавливается ПО для модуля Arduino Wi fi, которое настраивается на работу с ESP8266.

 Установка

Далее, например, плата NodeMCU подключается к аналоговому фоторезистору и отправляет данные на сервер по протоколу MQTT. Схема соединения представлена ниже.

Чтобы написать и запустить код, потребуется библиотека pubsubclient. Скачав ее, нужно поместить файлы из архива в папку библиотек IDE и открыть в среде скетч _2.ino. Чтобы все работало как надо, необходимо внести в код следующие изменения (SSID и пароль):

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

 Соединение с брокером по сети

После всего этого плата подключится по Wifi к MQTT и он будет отображать данные фоторезистора.

 Отправка данных датчика освещенности

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

Умный дом на Arduino

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

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


Ардуина два раза в секунду отправляет данные роутеру (по USB или UART), на роутере программа arduread получает эти данные и записывает их в файл. Клиент подключённый к роутеру, раз в секунду считывает данные из этого файла.

Когда клиент отправляет команду (например включить свет), то её принимает другая программа — arduserver, которая слушает TCP-порт и отправляет ардуине принятые от клиента команды. Ардуина выполняет команду и продолжает отправлять данные, которые опять таки считывает arduread и записывает в файл. Клиент, при следующем запросе, читает из файла уже новые данные и они отображаются на страничке.

Функционально, система может включать/отключать устройства подключённые к ардуине и считавать информацию с датчиков.

Сервер — роутер или любой другой компьютер.
Клиент — устройство (телефон, планшет или компьютер), с которого Вы подключаетесь к серверу.

Ардуина

Всё что делает ардуина — это принимает команды и два раза в секунду отсылает серверу информацию.


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

Ардуина получает команду включить/выключить пин, выполняет действие и устанавливает соответствующий флаг (d2 = 1; — вкл, d2 = 0; — откл), по этим флагам клиент определяет что включено или выключено.

Сервер

Если у Вас ещё не установлена OpenWrt, то здесь, Вы найдёте исчерпывающую информацию. (переносить систему на флешку не обязательно)


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

arduread — получает данные присланные ардуиной и записывает их в файл file.db. Клиент подключенный к роутеру, раз в секунду считывает данные из этого файла, тем самым получая актуальную информацию.

arduserver — это маленький TCP-сервер, который ожидает соединение на порту 3490 (порт можно указать любой). Когда от клиента прилетает какая-либо команда, arduserver ловит её и отправляет в ардуину.

Делаем всё по инструкции!


Засовываем его в автозагрузку и стартуем:


Если без веб-интерфейса Вам неудобно пользоваться роутером, то ставим Luci:



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


После этих операций, на роутере без флешки, останется 372Кб.



Подключите ардуину и убедитесь что она определилась.


Arduino Nano — ttyUSB0
Arduino Mega — ttyACM0
UART — ttyATH0


Переходим в каталог /tmp

Скачиваем пакеты arduread и arduserver:


Для других роутеров:

Скачайте архив с бинарниками (устанавливать не нужно), распакуйте и скопируйте файлы в корень (/), всё остальное как в статье.

Пишите в комментах для каких роутеров нужны файлы.

Открываем файл /etc/rc.local и вставляем нижеследующие строчки (до exit 0), чтоб было как в примере:

Обратите внимание на устройство ttyUSB0, у Вас может быть другое. Так же, если Вы измените название папки с сайтом, то в аргументах arduread нужно указать именно её.

Нажимаем символ "i".
Вносим изменения.
Нажимаем Esc.
Вводим последовательно символы :wq (: w-сохранить q-выйти)
Нажимаем Enter.
Файл отредактирован.

Создаём папку ymdom в корневой папке сервера /www


Переходим в неё:

И загружаем необходимые файлы:



Всё на месте :)


Проверим свободное место:


Умный дом занял 24Кб.

Теперь нужно подкорректировать файл index.html, вписав в него ip-адрес роутера (если у Вас выделенный ip и планируете заходить извне, то впишите соответствующие имя или айпишку).


ifconfig

Строка №31


Менять нужно только адрес 192.168.5.222, порт (3490) трогать не надо.
Если всё же решите поменять порт, то не забудте поменять его в аргументах для запуска программы arduserver, в файле /etc/rc.local (sleep 1 && /arduserver 3490 /dev/ttyUSB0).


Если подключаете ардуину к UARTу, то нужно в файле /etc/inittab закомментировать последнюю строчку:

Заходим в браузере по адрес/ymdom/ и видим…


Исходники

Если что-то пошло не так, то в корневой папке появятся файлы Error.log и/или ErrorServer.log:

Расшифровку логов можно подсмотреть в исходниках arduread и arduserver

Читайте также: