ESP8266 — недорогая альтернатива Arduino с Wi-Fi

Всем привет!
Может кому будет интересно из новичков и кто еще не слышал. Китайская компания Expressif еще в 2014 году выпустила модули на своем чипе ESP8266. Платы (модули) на базе этого чипа стоят недорого — от $1.7 на AliExpress и eBay.

Изначально их часто использовали как «шилд» Wi-Fi для ардуино. Оно и понятно — куда дешевле оригинального шилда, библиотека есть, работа через Serial шину и AT+ команды. Однако сам по себе чип вполне себе можно использовать и без классического Arudino:
— 160 MHz 32-bit процессор Tensilica Xtensa LX106.
— IEEE 802.11 b/g/n Wi-Fi. Поддерживается WEP и WPA/WPA2. Режим точки-доступа или клиента.
— 16 портов ввода-вывода, SPI, I²C, I²S, UART, 10-bit АЦП.

Память данных (ПЗУ) — внешняя. На готовых модулях идет от 512 Кб до 4 Мб.
Описание различных модулей тут.

Конечно же такие хар-ки чипа, по сравнению с Atmega’ми на Arduino предоставляют куда больше возможностей. Тут и веб-сервер маленький можно сделать и RTOS поставить. А интегрированный WiFi позволяет избавиться от проводов. Но что самое приятное для нашего сообщества — для всего этого есть порт Arduino IDE.
Т.е. эту штуку можно программировать в привычном IDE, используя большинство тех же библиотек, что есть для Arduino. Т.е. при желании перейти очень просто.
Инструкция по подключению ESP8266 к Arduino IDE тут.
Может кто не знал и зреет идея домашнего проекта IoT, которому зачастую желателен WiFi — чтобы не крутить громоздкие и дорогие шилды к ардуино.

985 постов • 17.6K подписчика

В нашем сообществе запрещается:

• Добавлять посты не относящиеся к тематике сообщества, либо не несущие какой-либо полезной.

Источник



Передача данных от Arduino Uno на веб-страницу с помощью WiFi

Беспроводная связь между современными электронными устройствами с каждым годом становится все более актуальной с учетом все большего доминирования концепции интернета вещей (Internet of Things). Протокол HTTP и язык HTML делают возможным передачу данных в любое место на Земле где есть сеть интернет. Ранее на нашем сайте мы уже рассматривали похожие проекты:

Передача данных от Arduino Uno на веб-страницу с помощью WiFi: внешний вид конструкции

В этой же статье мы рассмотрим передачу данных от платы Arduino Uno на веб-страницу (Webpage) с помощью технологии WiFi. Для демонстрации возможностей этого проекта нам будет необходим IP адрес и сервер (локальный или глобальный). В целях упрощения демонстрации мы будем использовать локальный сервер.

Необходимые компоненты

  1. Плата Arduino Uno (купить на AliExpress).
  2. Wi-Fi модуль ESP8266 (купить на AliExpress).
  3. USB кабель.
  4. Соединительные провода.
  5. Ноутбук (или персональный компьютер).
  6. Источник питания.

Внешний вид Wi-Fi модуля ESP8266 показан на следующем рисунке.

Внешний вид Wi-Fi модуля ESP8266

Работа схемы

Схема устройства представлена на следующем рисунке.

Схема устройства для передачи данных от Arduino Uno на веб-страницу с помощью WiFi

Основными элементами схемы являются плата Arduino и Wi-Fi модуль ESP8266. Контакты Vcc и GND Wi-Fi модуля ESP8266 непосредственно подключены к контактам 3.3V и GND платы Arduino, а контакт CH_PD Wi-Fi модуля также подключен к 3.3V. Контакты Tx и Rx модуля ESP8266 подключены к контактам 2 и 3 платы Arduino. Software Serial Library (библиотека последовательной связи) используется для осуществления последовательной связи на контактах 2 и 3 платы Arduino (вместо контактов 0 и 1, которые используются для последовательной связи в плате Arduino по умолчанию). В статье про передачу Email с использованием Arduino мы достаточно подробно останавливались на подключении WiFi модуля ESP8266 к плате Arduino, поэтому здесь эти вопросы рассматривать не будем.

Примечание: чтобы видеть ответы модуля ESP8266 на поступающие команды откройте монитор последовательного порта (Serial Monitor) в программной среде Arduino IDE.

В программе первым делом нам необходимо будет соединить наш Wi-Fi модуль с Wi-Fi роутером чтобы подключить Wi-Fi модуль к сети интернет. Затем мы должны сконфигурировать локальный сервер, передать данные на веб-страницу и закрыть соединение. Для этого нам необходимо выполнить следующую последовательность действий:

1. Сначала нам необходимо произвести тест Wi-Fi модуля при помощи передачи ему AT команды, он должен ответить OK.

2. После этого мы должны выбрать необходимый режим работы с помощью команды AT+CWMODE=mode_id , мы будем использовать Mode Полный же список доступных режимов выглядит следующим образом:
1 = Station mode (client) (режим станции, клиента)
2 = AP mode (host) (режим базовой станции, хоста)
3 = AP + Station mode (Yes, ESP8266 has a dual mode!) (режим станции + хоста – модуль ESP8266 поддерживает этот двойной режим).

3. Затем мы должны отсоединить наш Wi-Fi модуль от прежней Wi-Fi сети с помощью команды AT+CWQAP поскольку модуль ESP8266 по умолчанию автоматически соединяется с предыдущей использованной сетью Wi-Fi.

4. После этого можно сбросить модуль командой AT+RST – это необязательный шаг.

5. После этого мы должны соединить модуль ESP8266 с Wi-Fi роутером с помощью команды:
AT+CWJAP=”wifi_username”,”wifi_password” .

6. После этого мы должны получить IP адрес с помощью команды AT+CIFSR , которая вернет нам IP адрес.

7. После этого нам необходимо задействовать режим мультиплексирования с помощью команды AT+CIPMUX=1 (1 для соединения с мультиплексированием и 0 для одиночного соединения).

8. Теперь сконфигурируем ESP8266 как сервер с помощью команды AT+CIPSERVER=1,port_no (port может быть 80). Теперь наш Wi-Fi готов. В представленной команде ‘1’ используется для создания сервера и ‘0’ для удаления сервера.

9. Теперь с помощью соответствующих команд можно передавать данные на созданный локальный сервер:
AT+CIPSEND =id, length of data
Id = ID no. of transmit connection (номер соединения)
Length = Max length of data is 2 kb (максимальная длина данный 2 Кбайта).

10. После передачи ID (номера, идентификатора) и Length (длины данных) на сервер мы можем передавать данные, к примеру: Serial.println(“circuitdigest@gmail.com”);

11. После передачи данных нам необходимо закрыть соединение с помощью команды:
AT+CIPCLOSE=0
После этого данные будет переданы на локальный сервер.

12. Теперь вы можете набрать IP адрес в строке адреса вашего браузера и нажать Enter. После этого вы увидите переданные данные на веб-странице.

Все описанные шаги можно более наглядно посмотреть в видео в конце статьи.

Исходный код программы

1. В программе нам сначала необходимо подключить SoftwareSerial Library чтобы задействовать последовательную связь на контактах PIN 2 и 3 и объявить некоторые переменные и строки.

#include<SoftwareSerial.h>
SoftwareSerial client(2,3); //RX, TX
String webpage=»»;
int i=0,k=0;
String readString;
int x=0;
boolean No_IP=false;
String IP=»»;
char temp1=’0′;

2. После этого мы должны определить ряд функций, необходимых для решения наших задач.
В функции Setup() мы инициализируем встроенный последовательный приемопередатчик для подключения модуля ESP8266 с помощью команды client.begin(9600) – для бодовой скорости 9600 бод/с.

void setup()
<
Serial.begin(9600);
client.begin(9600);
wifi_init();
Serial.println(«System Ready..»);
>

3. В функции wifi_init() мы инициализируем wifi модуль при помощи передачи ему ряда команд, например, reset, set mode, connect to router, configure connection и т.д. Эти команды были объяснены в предыдущей части статьи.

Похожее:  Узнаем MAC адрес через сведения о системе Windows

void wifi_init()
<
connect_wifi(«AT»,100);
connect_wifi(«AT+CWMODE=3»,100);
connect_wifi(«AT+CWQAP»,100);
connect_wifi(«AT+RST»,5000);
. .
. .

  1. В функции connect_wifi() мы передаем команды и данные модулю ESP8266 и получаем (считываем) на них ответы.

void connect_wifi(String cmd, int t)
<
int temp=0,i=0;
while(1)
<
Serial.println(cmd);
. .
. .

5. Функция sendwebdata( ) используется для передачи данных на локальный сервер или веб-страницу.

void sendwebdata(String webPage)
<
int ii=0;
while(1)
<
unsigned int l=webPage.length();
Serial.print(«AT+CIPSEND=0,»);
client.print(«AT+CIPSEND=0,»);
. .
. .

6. Функция void send() используется для передачи строк в функцию sendwebdata(), которые затем передаются на веб-страницу.

void Send()
<
webpage = «<h1>Welcome to Circuit Digest</h1><body bgcolor=f0f0f0>»;
sendwebdata(webpage);
webpage=name;
webpage+=dat;
. .
. .

7. Функция get_ip() используется для получения IP адреса от созданного локального сервера.

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

void loop()
<
k=0;
Serial.println(«Please Refresh your Page»);
while(k<1000)
. .
. .

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

Источник

Arduino WiFi: обзор модулей и ESP8266 для работы с сетью

Привет! Эта статья должна была стать законченной точкой в ознакомлении с Wi-Fi модулями для Arduino или непосредственно Arduino со встроенными модулями, но получилась какая-то пеленка от чайника. Так что от чайника для чайников про Arduino WiFi.

Есть исправления, важные дополнения или хороший анекдот? Внизу статьи люди оставляют комментарии, можно написать и туда!

Для чего это нужно?

Вся суть сводится к тому, что неплохо бы стандартные платы Arduino было бы прошивать не по проводу, а на лету по воздуху. Да и приятно изменять код удаленно, или даже просто иметь доступ к Wi-Fi сетям. И тут начинается – вначале не было ничего хорошего, пока китайцы из Espressif не показали рынку свою ESP8266 – классный модуль с широким функционалом.

Arduino WiFi: обзор модулей и ESP8266 для работы с сетью

Крутая цена и возможности сделали этот модуль по-настоящему народным. Его даже теперь встраивают в некоторые платы – например, в Arduino Uno WiFi. А как итог – подключили раз, и можно менять прошивки удаленно без использования паяльника. Старперы индустрии люто плачут на этом месте (но провод тоже никто не отменял).

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

Та же версия 07 идет в металлическим экраном-радиатором, но 01 – самая пополурная

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

Характеристики

Тут уже голимый паблик, все и так известно по этой игрушке. Что у нас имеется на борту:

  • 160 МГц, 32 бит
  • IEEE 802.11 b/g/n, WEP/WPA/WPA2
  • Флеш-память аж на 4 Мб, внешняя память до 16 Мб.
  • 14 портов ввода-вывода, SPI, I2C, UART, 10-бит АЦП
  • Питание – 2,2-3,6 В (оптимально 3,3 В, не сожгите пятивольниками), 300 мА (стандартная Ардуино не разгонит ее, лучше использовать доппитание)
  • ОЗУ – примерно 50 Кб
  • Кнопки перезагрузки и перепрошивки
  • И все это за пару баксов – шоколадка в микроэлеткронике, можно заказывать тоннами на Aliexpress

Подключение

Этот раздел будет посвящен разным схемам подключения. Проще всего в таких случаях сразу же глянуть первое попавшееся видео от зачетного автора. Вот, например, вот это:

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

Остальным же рекомендуется искать свою распиновку и документацию в официальных источниках. Схема распиновки на примере ESP8266 12E:

Arduino WiFi: обзор модулей и ESP8266 для работы с сетью

Есть несколько вариантов плат и несколько ревизий с разным расположением светодиода – копайте мануалы под свой вариант. Здесь лишь общая ознакомительная бесполезная информация.

Подключение к Arduino Nano:

Arduino WiFi: обзор модулей и ESP8266 для работы с сетью

Подключение к Arduino Uno:

Arduino WiFi: обзор модулей и ESP8266 для работы с сетью

Помните, Arduino использует 5В, а ESP8266 до 3,6 В. При соединении используйте резистивные делители, иначе есть риск спалить контроллер.

Arduino WiFi: обзор модулей и ESP8266 для работы с сетью

Не забываем, что сам «модуль» по сути является полноценным микроконтроллером со встроенной памятью. Т.е. при желании можно его запрограммировать через тот же USB-UART, а не использовать для этого подключение через отдельную плату. Тем более встроенной памяти хватит на хранение нескольких весомых библиотек.

Про программирование

Хоть модуль и является сторонним, извращаться с поиском всевозможных программ здесь не нужно. Базовая Arduino IDE все поддерживает из коробки, нужно лишь выбрать в списке нашу 8266 и уже будут доступны базовые программы, начиная от стандартного моргания диода через USB-UART (хеллоу ворлд епта, пример будет в видео ниже).

Про питание

Это прям начальная дилемма этой платы. Она требует 3,3 В и 300 мА. Та же Arduino Nano или просто USB-UART не вывозят такого тока – заранее нужно позаботиться о питании. Существующие варианты:

  • Покупка блока питания на 3,3 В – существуют такие, самый простой и скорее верный вариант.
  • Покупка модуля для понижения напряжения 5 В -> 3,3 В. Тоже доступно и удобно.
  • Самопальные сборки (на том же Хабре видел пример на базе регулятора AMS1117 и конденсатора 22 мкФ) – кто ищет, тот всегда найдет решение в любой непонятной ситуации. А для втянувшихся с головой в микроэлектронику подобные деяния просто мастхэв.

Платы со встроенным ESP8266

Вот основной список плат с уже встроенным ESP8266 и всем доступным для него функционалом:

NodeMCUWeMosArduino Uno WiFi

Последняя в списке Arduino Uni WiFi – это уже упоминаемый ТОП в платостроении. Именно на ней создают многие интересные проекты. И она как раз из коробки позволяет перепрошивать себя по воздуху (режима OTA – Firmware Over The Air). А вот и видеообзор этого чуда с характеристиками, подключением, базовым использованием:

Вот и все. Задача нашего проекта освещать все Wi-Fi события, и платы для Arduino тоже находятся в этом поле. Но специфичные задачи по созданию классных домашних проектов лучше изучать уже на специализированных ресурсах. Здесь же только общий обзор и пара занимательных на наш взгляд видеороликов. Надеемся, что с возможностями этой платы и подключением к интернету задачи ваших проектов достигнут новых высот. Всем до связи, ваш WiFiGid.

Источник

Добавляем WiFi к Arduino Uno

В этом уроке мы подключим наш микроконтроллер Arduino Uno к Интернету, используя модуль ESP8266 WiFi.

Похожее:  Ресивер wifi tp link

Шаг 1. Комплектующие

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

Добавление этого модуля в проекты где используется Arduino откроет новые интересные возможности.

Детали, используемые в проекте Arduino WiFi мы перечислим ниже. Компоненты оборудования:

    × 1
  • ESP8266 ESP-01 × 1
  • Перемычки (на выбор) × 1
  • Резистор 10 кОм × 1
  • Резистор 1 кОм × 2

Шаг 2. Суть проекта

Есть много способов использовать ESP866 для коммуникаций. Некоторые могут использовать его для отправки/получения данных онлайн или регулярной загрузки данных. В этом уроке мы покажем, как мы можем общаться с Arduino по беспроводной связи, используя ваш телефон (Android или iPhone). Всё будет сделано в автономном режиме, поэтому не нужно иметь подключение к интернету.

ESP8266 будет служить точкой доступа (режим AP), то есть он будет предоставлять доступ к сети Wi-Fi другим устройствам (станциям) и далее подключать их к проводной сети. Процесс этот довольно прост.

Распиновка ESP

Используйте свой телефон, чтобы отправить любую команду в Arduino, а с помощью ESP8266 все будет работать без проводов.

Шаг 3. Схема соединения

Мы можем соединить Ардуино и WiFi модуль двумя способами — первый с резисторами и второй вариант без резисторов. Остановимся на обеих схемах.

Вариант 1

Соединяем контакты, как описано на прилагаемой таблице контактов ниже:

Следуйте этим шагам:

  • подключите красный провод к VIN (3,3 В) к питанию + 3,3 В от микроконтроллера;
  • подключите черный провод к земле;
  • подключите зеленый провод к TX модуля Wifi и микроконтроллера;
  • подключите желтый провод к RX модуля Wi-Fi и микроконтроллера.

Подключите VIN к 3,3 В для включения питания, а также контакт ENABLE для включения модуля.

TX подключен к RX, что означает, что все, что мы хотим передать в ESP8266, получит Arduino UNO. И наоборот для RX в TX. Создав эту схему, мы теперь готовы запустить WiFi с Arduino UNO.

Вариант 2

Соедините контакты, соответственно этой таблице контактов ниже:

Следуй этим шагам:

  • подключите оба контакта ECC VCC / 3.3V / Power Pin и Enable (красные провода) к резистору 10 кОм, а затем к выводу питания Uno + 3.3V;
  • соедините контакт заземления / заземления ESP (черный провод) с выводом заземления / заземления Arduino Uno;
  • подключите TX ESP (зеленый провод) к контакту 3 Uno;
  • подключите RSP (синий провод) ESP к резистору 1 кОм, затем к контакту 2 Uno;
  • подключите RX (синий провод) ESP к резистору 1 кОм, затем к выводу GND заземления Uno.

О схеме

Вывод питания ESP на ESP11 имеет маркировку VIN, однако для некоторых версий это может быть 3,3 В или Power или VCC. Вам также нужно будет включить вывод ESP CH_EN или Enable, чтобы он работал.

Как мы уже обсуждали, — не используйте напряжение на ESP больше чем 3.3 В. ESP8266 строго использует 3,3 В. Более того, это разрушит модуль. Так как Arduino имеет 5 В, нам пришлось поставить делитель напряжения — это резисторы.

TX ESP подключен к RX Arduino Uno, что означает, что все, что мы хотим передать (TX) в ESP, получит (RX) от Uno, и наоборот. Создав эту схему, мы теперь готовы запустить WIFI с Arduino UNO.

Шаг 4. Настройка соединения

После того, как все настроено, вы заметите, что ваш ESP8266 Wifi будет доступен в радиусе действия вашего телефона.

1. Скачать TCP Client для Android

Вы можете скачать любой TCP-клиент, доступный в Play Store, но я использовал TCP-клиент от Sollae Systems

2. Со своего телефона подключитесь к вашему ESP8266 Wifi

Если ваш Wi-Fi ESP8266 не отображается в доступных сетях Wi-Fi, убедитесь, что ваш Arduino работает и все подключено правильно. Если нет, устраните неполадки вашего ESP, следуя документации модуля.

Обычно имя wifi / ssid начинается в ESP после его названия версии, у меня ESP11.

3. После подключения получите статический IP-адрес.

IP-адрес по умолчанию в режиме AP — 192.168.4.1.

Вы можете изменить статический IP-адрес, следуя этой Wifi.config() ссылке.

4. Откройте TCP Client, который вы загрузили ранее.

Создайте соединение, нажав кнопку «Подключить», добавьте IP-адрес ESP и порт 80 следующим образом:

80 — это порт, который я использовал для нашего сервера ESP, но вы можете изменить его, заменив 80 на любой номер порта из нашего кода в строке 23.

5. Подождите, пока на консоли TCP появится сообщение «Подключено».

Шаг 5. Общаемся с Arduino Uno через смартфон

После подключения отправьте запрос, введя следующий код для клиента TCP:

Или включите встроенный светодиод с помощью команды:

Или выключите встроенный светодиод с помощью команды:

Или просто скажите:

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

Важно: esp8266, LEDON, LEDOFF и HELLO — пользовательский идентификатор команды. Если вы используете что-то кроме этих, он вернет ErrRead. ErrRead означает, что из отправленного вами сообщения не найдено ни одного идентификатора команды. Сообщение ErrRead кодируется в строке 64.

Шаг 6. Код проекта

Скачать или скопировать код вы можете ниже:

Существуют разные типы ESP8266. Измените скорость передачи в коде в строке 16 в зависимости от того, что использует ваш ESP8266.

Весь наш запрос будет прочитан и разобран в функции loop():

Вы можете увидеть, что я использовал функцию find(<received message>, <message you want to find>), чтобы интерпретировать сообщение и сообщить Arduino, какой код вызывать. Если вы хотите связаться с Arduino UNO или попросить что-то сделать, просто добавьте свое условие. например:

Мы добавили некоторую функцию для связи с ESP8266:

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

Источник

Подключение Ардуино к роутеру TL-MR3020

Arduino TL-MR3020

Предполагается, что на роутере установлена OpenWrt и система перенесена на флешку. Как это сделать я подробно описал здесь.

Если OpenWrt установлена, тогда переходим к основной задаче.

Существуют два способа подключения, первый — к UART роутера, второй — через USB.

Оба варианта работают одинаково, однако первый требует разбора роутера и подпаивания контактов:

Второй вариант проще, но придётся ипользовать usb-хаб.

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

Похожее:  Sjcam 4000 wifi как пользоваться

Кто будет подключать по usb, может сразу перейти сюда.

Вариант с UART

Вскрываем роутер. Крышка у него приклеена, поэтому берём что-то типа ножа и ковыряем по всему периметру. Пластик достаточно прочный, так что можно не боятся повредить.

Достаём плату и припаиваем три контакта RX, TX и GND, четвёртый контакт — это плюс (3,3V), он нам не нужен.

Теперь зальём в ардуину простенький скетч для проверки.

Будем посылать в ардуину символы a и b, в ответ на которые будет зажигаться и гаснуть D13.

Подключаем ардуину как на рисунке:

Ардуина TXRX Роутера (синий)
Роутер TXRX Ардуина (зелёный)
CNDCND

Не смотря на то, что чип роутера питается от 3,3V, а ардуина от 5V, никаких проблем не возникает, посему нет необходимости согласовывать уровни.

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

Заходим на роутер по ssh (на всякий случай)

Ради интереса смотрим существующие устройства:

В списке будет присутствовать ttyATH0, это и есть UART.

Установим утилиту для настройки порта:

Настроим порт командой…

Должно работать, если нет, то возвращаемся и проверяем что не так.

Если у Вас не установлен редактор nano, то исправим ситуацию.

Добавим в автозагрузку настройку порта:

В конец файла (перед exit 0) добавим строчку:


Сохранить______Выйти

Перегружаем роутер и проверяем…

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

Залейте в ардуину этот скетч: Не забывайте отсоединять провода RX,TX во время прошивки.

Перед управляющим символом (a,b) будем отправлять четыре символа служащие дескриптором Y+=Z, благодоря этому всё что не нужно отфильтруется и не будет случайных срабатываний.

Открываем параллельно ещё одну ssh-сессию и вводим там команду:

Здесь будет ответ ардуины.

И последнее, надо отвязать UART от отладочной консоли. Для этого надо в файле /etc/inittab закомментировать последнюю строчку:

Если что-то не работает, то возвращаемся к началу и проверяем что сделали не так.

С первым вариантом покончено, если подключение по usb не интересно, то переходите ниже.

Вариант с USB

Зальём в ардуину проверочный скетч:

Будем посылать в ардуину символы a и b в ответ на которые будет зажигаться и гаснуть D13.

Подключаем к роутеру хаб и втыкаем в него флешку и ардуину. Включаем.

Желательно чтобы хаб был с отдельным питанием. Некоторые хабы работают некорректно.

Заходим на роутер по ssh (на всякий случай)

Установим драйвера для всех существующих ардуин и утилиту для настройки порта stty:

Можно не перегружать, по идее устройство должно появиться сразу.

Проверим… если нет, тогда перегрузите.

У Вас может быть /dev/ttyACM0, тогда его и используйте в дальнейших командах и настройках.

Настроим порт командой…

Если при посылке пакета ардуина перегружается (диоды моргают, но D13 не горит), тогда нужно поставить электролитический косденсатор 5-10мкФ между Reset и GND.
Не забудьте отключать его когда заливаете скетч.

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

Если редактор nano отсутствует, то установим.

Добавим в автозагрузку настройку порта:

В конец файла (перед exit 0) добавим строчку:


Сохранить______Выйти

Теперь выключаем роутер и прошиваем в ардуину этот скетч:

Перед управляющим символом (a,b) будем отправлять четыре символа служащие дескриптором Y+=Z, таким образом отфильтруется случайный мусор и не будет случайных срабатываний.
После обработки команды, ардуина будет отправлять ответ.

Возвращаем ардуину в хаб и включаем роутер.

Открываем две параллельные ssh-сессии, в первой водим команду:

Здесь будет ответ ардуины.

Во второй пробуем…

Всё должно работать, если нет, то возвращаемся и внимательно проверяем.

Если всё получилось, то можно переходить к следующей части.

Интерфейс

Сделаем простой веб-интерфейс для управления двумя лампочками.

Выглядеть будет вот так… Можно понажимать.

Скачайте архив и распакуйте его в рабочую папку сервера, чтоб было так сервер/primer/.

Здесь подробная инструкция по установке сервера Lighttpd на OpenWrt.

Проверьте, чтоб в файле /etc/php.ini всё было так, как написано здесь!

Если Вы пользуете Win, то отключите всякие файрволы/антивирусы!

Установим и настроим небольшой прокси-сервер ser2net, он создаёт соединение между сокетом и устройством (/dev/ttyUSB0).
Как показала практика, через ser2net, php-файл работает лучше, нежели обращаясь к устройству напрямую.

Редактируем файл конфигурации:

Закомментируйте всё строчки в конце и сохраните.

Добавим ser2net в автозагрузку:

Добавьте в конец файла вот эту строку:

Должно получится так:

В примере используется устройство /dev/ttyUSB0, у Вас может быть другое! (ttyATH0 — консоль, ttyACM0 — мега)

Внимание! Строки инициализации должны быть записаны одной строкой (без переноса).

Прошейте в ардуину этот скетч:

Добавлены функции для второй лампочки и обновления. (к D12 подключите светодиод через резистор 200-1000 Ом)

Включаем/перегружаем роутер и в браузере заходим по аресу ваш_роутер/primer/

Если надпись stD серая, это значит что связь с ардуиной установлена, если красная, то связи нет.

Работа заключается в следующем:

index.html раз в три секунды (интервал можно изменить) запрашивает данные у ардуины (отправляя ей символ о) с помощью функции ajax (ajax позволяет не перегружать страницу).

Запрос передаётся php-файлу (box2.php) находящемуся на сервере, который в свою очередь обращается к ардуине через сокет ser2net.

Ардуина получает команду, обрабатывает её и отправляет ответ, который по той же цепочке возвращается html-страничке (index.html).

Html-страничка разбирает ответ и выводит значения на экран.

Если открыть ещё одну страничку (или зайти с другого устройства) и включить лампочку, то на первой страничке (в течении 3 сек.) тоже включится лампочка.

Для этого и нужно обновление.

Нажатие на лампочку работает так же как и «обновление», в ардуину отсылается символ включения или отключения (в зависимости от состояния лампочки), ардуина выполняет действие и посылает в ответ строку с флагами состояния (единица или ноль). Ответ разбирается в html-странице и в зависимости от флагов выводит картинку включённой или отключённой лампочки.

Для лучшего понимания откройте файл index.html из архива, и посмотрите комментарии.

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

Если редактируете файлы на виндовс-машине, то пользуйтесь редактором Notepad++.

Если что-то не так, то возвращаемся и проверяем всё с удвоенным вниманием. Проверяем права на файлы, правильность путей и устройств.

Источник