Беспроводная связь между электронными устройствами и модулями очень важна, чтобы они «вписались» в мир Интернета вещей. Протокол HTTP и язык HTML сделали возможным передавать данные в любую точку мира через Интернет. Мы уже рассмотрели несколько проектов, которые используют Wi-Fi с Arduino, ознакомьтесь с ними в разделе «Начало работы»:
- Отправка электронной почты с помощью модуля Wi-Fi Arduino и ESP8266
- Робот, управляемый Wi-Fi, с использованием Arduino
- Управление светодиодом RGB с помощью Arduino и Wi-Fi
Теперь в этом руководстве мы создаем программу для отправки данных в Интернет с использованием Arduino и модуля Wi-Fi. Для этого нам сначала понадобится IP-адрес глобального или локального сервера, здесь для простоты и демонстрационных целей мы используем локальный сервер.
Необходимые компоненты:
- Arduino UNO
- Модуль Wi-Fi ESP8266
- USB-кабель
- Соединительные провода
- Ноутбук
- Источник питания
Модуль Wi-Fi ESP8266:
Схема подключения:
Принципиальная схема для отправки данных из Arduino в Интернет приведена ниже. В основном нам нужен модуль Wi-Fi Arduino и ESP8266. Контакты Vcc и GND ESP8266 напрямую подключены к 3,3 В и GND Arduino, а CH_PD также подключен к 3,3 В. Контакты Tx и Rx ESP8266 напрямую подключены к контактам 2 и 3 Arduino. Программная последовательная библиотека используется для обеспечения последовательной связи на выводах 2 и 3 Arduino. Мы уже подробно рассмотрели взаимодействие модуля ESP8266 Wi-Fi с Arduino.
Используя здесь Software Serial Library, мы разрешили последовательную связь на выводах 2 и 3 и сделали их Rx и Tx соответственно. По умолчанию выводы 0 и 1 Arduino используются для последовательной связи, но с помощью библиотеки SoftwareSerial мы можем разрешить последовательную связь на других цифровых выводах Arduino.
Примечание. Чтобы посмотреть ответ ESP8266 на последовательном мониторе, откройте Serial Monitor в Arduino IDE.
Рабочее объяснение:
Прежде всего нам нужно подключить наш модуль Wi-Fi к маршрутизатору Wi-Fi для подключения к сети. Затем мы настроим локальный сервер, отправим данные в Интернет и, наконец, закроем соединение. Этот процесс и команды были объяснены в следующих шагах:
1. Сначала нам нужно протестировать модуль Wi-Fi, отправив AT- команду, он вернет ответ, содержащий ОК .
2. После этого нам нужно выбрать режим с помощью команды AT + CWMODE = mode_id , мы использовали Mode id = 3. ID режима:
1 = режим станции (клиент)
2 = режим точки доступа (хост)
3 = точка доступа + режим станции (да, ESP8266 имеет двойной режим!)
3. Теперь нам нужно отключить наш модуль Wi-Fi от ранее подключенной сети Wi-Fi, используя команду AT + CWQAP, поскольку ESP8266 по умолчанию автоматически подключается к любой ранее доступной сети Wi-Fi.
4. После этого пользователь может перезагрузить модуль с помощью команды AT + RST . Этот шаг не является обязательным.
5. Теперь нам нужно подключить ESP8266 к Wi-Fi роутеру с помощью данной команды.
6. Теперь получите IP-адрес с помощью данной команды:
Он вернет IP-адрес.
7. Теперь включите режим мультиплексирования, используя AT + CIPMUX = 1 (1 для множественного соединения и 0 для одиночного соединения).
8. Теперь настройте ESP8266 как сервер, используя AT + CIPSERVER = 1, port_no (порт может быть 80). Теперь ваш Wi-Fi готов. Здесь «1» используется для создания сервера, а «0» - для удаления сервера.
9. Теперь с помощью данной команды пользователь может отправлять данные на локальный созданный сервер:
Id = ID No. передачи соединения
Длина = Максимальная длина данных 2 КБ
10. После отправки идентификатора и длины на сервер нам необходимо отправить такие данные, как: Serial.println («[email protected]»);
11. После отправки данных нам необходимо закрыть соединение с помощью данной команды:
Теперь данные переданы на локальный сервер.
12. Теперь введите IP-адрес в адресной строке веб-браузера и нажмите Enter. Теперь пользователь может видеть переданные данные на веб-странице.
Посмотрите видео ниже, чтобы увидеть полный процесс.
Шаги по программированию:
1. Включите SoftwareSerial Library для обеспечения последовательной связи на PIN 2 и 3 и объявите некоторые переменные и строки.
#включают
2. После этого мы должны определить некоторые функции для выполнения желаемых задач.
В функции Setup () мы инициализируем встроенную последовательную связь UART для ESP8266 как client.begin (9600); со скоростью 9600 бод.
void setup () {Serial.begin (9600); client.begin (9600); wifi_init (); Serial.println («Система готова..»); }
3. В функции wifi_init () мы инициализируем модуль Wi-Fi, отправляя некоторые команды, такие как сброс, установка режима, подключение к маршрутизатору, настройка соединения и т. Д. Эти команды также были объяснены выше в части описания.
void wifi_init () {connect_wifi ("AT", 100); connect_wifi ("AT + CWMODE = 3", 100); connect_wifi ("AT + CWQAP", 100); connect_wifi ("AT + RST", 5000);…………………
4. В функции connect_wifi () мы отправляем данные команд на ESP8266, а затем читаем ответ от Wi-Fi модуля ESP8266.
void connect_wifi (String cmd, int t) {int temp = 0, я = 0; в то время как (1) {Serial.println (cmd);…………………
5. Функция sendwebdata () используется для отправки данных на локальный сервер или веб-страницу.
void sendwebdata (String webPage) {int ii = 0; в то время как (1) {unsigned int l = webPage.length (); Serial.print ("AT + CIPSEND = 0,"); client.print ("AT + CIPSEND = 0,");…………………
6. Функция void send () используется для отправки строк данных в функцию sendwebdata () . Это будет далее отправлено на веб-страницу.
void Send () {webpage = "
Добро пожаловать в Circuit Digest
"; sendwebdata (веб-страница); веб-страница = имя; веб-страница + = данные;…………………7. Функция get_ip () используется для получения IP-адреса локально созданного сервера.
8. В функции void loop () мы отправляем пользователю инструкцию для обновления страницы и проверяем, подключен ли сервер или нет. Когда пользователь обновляет или запрашивает веб-страницу, данные автоматически передаются на тот же IP-адрес.
void loop () {k = 0; Serial.println («Обновите страницу»); пока (k <1000)………………
Используя этот процесс, мы можем отображать любые данные из Arduino на веб-страницу, такие как температура и влажность в помещении, время на часах, координаты GPS, частота сердечных сокращений и т. Д.