Arduino esp8266 wifi скетч

Uno + ESP8266 WiFi

Несколько лет назад я купил отдельный модуль ESP8266 WiFi, но так и не воспользовался им. За прошедшее время ситуация изменилась. Появились новые платы с встроенным WiFi и Bluetooth как из семейства Arduino, так и платформе ESP32. Но я решил спустя столько времени всё-таки завести этот модуль и посмотреть, как он работает.

Платы на ESP8266 – это не просто модули для связи по Wi-Fi. Чип является микроконтроллером со своими интерфейсами SPI, UART, а также портами GPIO, а это значит, что модуль можно использовать без Arduino. Существует около 11 официальных модификаций платы. Самая простая плата – ESP01, с которой и будем знакомиться.

Для начала его надо правильно соединить с Uno. Главная особенность — модуль работает на 3.3В, поэтому будьте аккуратны.

Начнём с платы Arduino Uno.

1. Соединяем вывод 3.3V с красной дорожкой на макетной плате (питание). Если вы будете подключать другие датчики, которые потребляют 5 Вольт, то соединяйте их с красной дорожкой питания на другой стороне макетной платы.

2. Соединяем GND с синей дорожкой макетной платы (заземление).

3. Соединяем вывод RESET с синей дорожкой макетной платы. В этом случае Arduino работает последовательно как USB и мы можем общаться с ESP8266.

4. Соединяем вывод RX с аналогичным выводом RX на ESP8266 (жёлтый провод на рисунке).

5. Соединяем вывод TX с аналогичным выводом TX на ESP8266 (зелёный провод на рисунке).

Обычно для общения двух устройств мы должны соединять вывод TX первого устройства с выводом RX второго устройства. Но в нашем случае общается компьютер.

Осталось соединить провода у ESP8266 WiFi.

6. Соединяем вывод GND с синей дорожкой и VCC с красной дорожкой.

7. Соединяем CH_PD с красной дорожкой.

Uno ESP8266

При соединении на ESP8266 загорится светодиод. Скетч загружать не нужно. Достаточно открыть Serial Monitor, выбрать скорость 115200 и выбрать режим Both NL & CR. Далее вводим AT-команду.

Должен появиться ответ OK. При отправке команд загорается маленький синий светодиод. Если всё получилось, то самое сложное позади.

В примере мы использовали вывод CH_PD. Если нам нужно перепрошить ESP8266, то соедините вывод GPIO0 с синей дорожкой (заземление), тем самым мы включим режим FLASH.

Uno ESP8266

 Esp8266 | Arduino ----------------- RX | RX TX | TX GND | GND VCC | 5v CH_PD | 5v GPIO 0 | None GPIO 2 | None Reset | None Arduino | Arduino ----------------- Reset | GND 

AT-команды

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

Uno ESP8266

AT+CWJAP=»WiFi»,»pass» — указываем доступ к своей WiFi-точке (укажите свой логин и пароль к точке). В успешном случае появится ответ: WIFI CONNECTED, WIFI GOT IP.

Читайте также:  Узнать модель wifi адаптера windows

AT+CWLAP — список доступных WiFi-сетей.

AT+CIFSR — получает локальный IP-адрес.

AT+CWMODE=3 — включает режим, когда виден в сети. У меня появился под именем AI-THINKER-XXX, но могут быть и другие варианты.

При настройке параметры запоминаются. Например, не нужно заново вводить свой пароль к WiFi-сети. Естественно, вы можете сбросить свои настройки.

После того, как мне удалось поработать с AT-командами, я даже сумел отправить данные в интернет на сервер ThingSpeak. Вкратце это выглядит следующим образом: бесплатная регистрация, заводим новый канал (channel) с одним полем (field), получаем ключ API, запоминаем адрес Update a Channel Feed, посылаем команду на сервер таким образом.

 AT+CIPMUX=0 AT+CIPSTART="TCP","api.thingspeak.com",80 AT+CIPSEND=47 GET /update?api_key=KL8PZR4EHMQWL5YL&field1=5 

Последняя команда содержит 45 символов, нужно послать на два символа больше, т.е. 47.

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

Скетчи для связки Uno+ESP8266

До этого мы использовали плату Uno как посредника для передачи данных по последовательному порту между компьютером и ESP8266. Чтобы использовать плату и модуль как одно целое и общаться уже между ними без участия компьютера, нужно изменить соединение. Небольшая сложность заключается в том, что при работе с Arduino IDE мы не можем использовать на плате выводы RX и TX, так как через них загружается скетч. Но мы можем использовать виртуальные выводы через библиотеку SoftwareSerial. Переключаем два провода на плате с RX и TX на выводы 11 и 10. А также убираем провод с вывода RESET.

 Esp8266 | Arduino — — — — — — — — - RX | 11 TX | 10 GND | GND (без изменений) VCC | 5v (без изменений) CH_PD | 5v (без изменений) GPIO 0 | None (без изменений) GPIO 2 | None (без изменений) Arduino | Arduino ----------------- Удалить провод между Reset и GND 

Скетч для загрузки данных на сайт ThingSpeak. Установите свои ключи, пароли.

 #include #define RX 10 #define TX 11 String AP = "WIFI_NAME"; // CHANGE ME String PASS = "WIFI_PASSWORD"; // CHANGE ME String API = "YOUR_API_KEY"; // CHANGE ME String HOST = "api.thingspeak.com"; String PORT = "80"; String field = "field1"; int countTrueCommand; int countTimeCommand; boolean found = false; int valSensor = 1; SoftwareSerial esp8266(RX, TX); void setup() < Serial.begin(9600); esp8266.begin(115200); sendCommand("AT", 5, "OK"); sendCommand("AT+CWMODE=1", 5, "OK"); sendCommand("AT+CWJAP=\"" + AP + "\",\"" + PASS + "\"", 20, "OK"); >void loop() < valSensor = getSensorData(); String getData = "GET /update?api_key=" + API + "&" + field + "=" + String(valSensor); sendCommand("AT+CIPMUX=1", 5, "OK"); sendCommand("AT+CIPSTART=0,\"TCP\",\"" + HOST + "\"," + PORT, 15, "OK"); sendCommand("AT+CIPSEND=0," + String(getData.length() + 4), 4, ">"); sendCommand(getData, 5, "OK"); //esp8266.println(getData); delay(1500); countTrueCommand++; sendCommand("AT+CIPCLOSE=0", 5, "OK"); > int getSensorData() < return random(1000); // Replace with >void sendCommand(String command, int maxTime, char readReplay[]) < Serial.print(countTrueCommand); Serial.print(". at command =>"); Serial.print(command); Serial.print(" "); while (countTimeCommand < (maxTime * 1)) < esp8266.println(command);//at+cipsend if (esp8266.find(readReplay)) //ok < found = true; break; >countTimeCommand++; > if (found == true) < Serial.println("OYI"); countTrueCommand++; countTimeCommand = 0; >if (found == false) < Serial.println("Fail"); countTrueCommand = 0; countTimeCommand = 0; >found = false; > 

Источник

Читайте также:  Ползунок включения wi fi

ESP8266 уроки. Подключение к сети Wi-Fi.

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

как подключить ESP8266 к сети Wi-Fi с помощью Arduino IDE.

Это делает ESP8266 очень хорошим микроконтроллером для реализации Интернета вещей. Другой важный фактор — это относительно дешевая стоимость устройства реализованных на ESP8266.

В предыдущем уроке рассказал, как можно подключиться к сети Wi-Fi с помощью ESP32.

Прежде чем приступить к уроку, нужно настроить Arduino IDE для работы с ESP8266.

Описание скетча подключение к сети Wi-Fi ESP8266.

Прежде всего, подключаем библиотеку ESP8266WiFi.h, которая сделает доступной глобальную переменную с именем WiFi, она является объектом класса ESP8266WiFiClass. В этом классе есть методы, необходимые для подключения к сети Wi-Fi.

Чтобы сделать код более читабельным, создадим две глобальные переменные для хранения учетных данных, необходимых для регистрации в сети. Первый соответствует SSID (Service Set IDentifier), который является именем беспроводной сети, к которой мы хотим подключиться. Естественно, чтобы иметь возможность подключиться, нам также необходимо указать пароль от сети.

const char* ssid = "NetworkName"; const char* password = "NetworkPass";

Внимание , используйте учетные данные вашей сети.

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

Затем вызываем метод begin для объекта WiFi, передавая в качестве аргументов SSID (имя сети) и переменную пароля, указанные ранее. Это инициализирует подключение к сети.

После этого выполним цикл while, пока соединение не будет установлено. Для этого можем вызвать метод status для объекта WiFi и дождаться, пока результат не совпадет с перечислением WL_CONNECTED. Между каждой итерацией мы вводим небольшую задержку, чтобы избежать постоянного опроса.

while (WiFi.status() != WL_CONNECTED)

После успешного установления соединения можем проверить IP-адрес, назначенный ESP8266, вызвав метод localIP . Это полезно, если мы хотим отправлять данные на ESP8266 из этой сети. Имейте в виду, что это локальный IP-адрес, и поэтому мы не можем связаться с устройством из-за пределов этой сети.

Полная функция настройки setup() показана ниже.

void setup () < Serial.begin(115200); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) < delay(1000); Serial.println("Connecting.."); >Serial.println(WiFi.localIP()); >

Данный скетч не выводит информацию, если ESP8266 не подключилась к сети. Это может произойти, если у нас отключено сетевое оборудование или указаны неверные данные для подключения. Давайте дополним код и ограничим попытки подключения до 10, и вывод сообщения, если подключиться не удалось.

#include const char* ssid = "NetworkName"; const char* password = "NetworkPass"; byte tries = 10; // Попыткок подключения к точке доступа void setup() < Serial.begin(115200); WiFi.begin(ssid, password); while (--tries && WiFi.status() != WL_CONNECTED) < delay(500); Serial.println("."); >if (WiFi.status() != WL_CONNECTED) < Serial.println("Non Connecting to WiFi.."); >else < // Иначе удалось подключиться отправляем сообщение // о подключении и выводим адрес IP Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); >> void loop() <>

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

Читайте также:  Deauth wifi mac os

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

И вот такое уведомление, если ESP8266 не удалось подключиться к Wi-Fi сети.

И вот такое уведомление, если ESP8266 не удалось подключиться к Wi-Fi сети.

Этот пример показывает только основы подключения к сети Wi-Fi. В следующем уроке рассмотрим, как выполнять более сложные процедуры, такие как отправка HTTP-запросов.

Описание скетча подключение к сети Wi-Fi ESP8266.

Понравился ESP8266 уроки. Подключение к сети Wi-Fi ? Не забудь поделиться с друзьями в соц. сетях.

А также подписаться на наш канал на YouTube, вступить в группу Вконтакте, в группу на Facebook.

Спасибо за внимание!

Технологии начинаются с простого!

Источник

Введение. Подключение к WiFi

ESP8266 – мощный китайский микроконтроллер с WiFi на борту. Это позволяет делать на его основе проекты с доступом в Интернет!

  • Если вы уже работали с Arduino и первый раз держите в руках плату на базе esp8266 (в наборе GyverKIT это плата Wemos Mini) – обязательно изучите урок по особенностям данного микроконтроллера и отличиям от обычных плат Arduino.
  • Для работы с Wemos нужно установить поддержку данных плат в Arduino IDE: на сайте набора в блоке Начало работы есть отдельная инструкция по настройке.

Работать с платой через WiFi есть два способа:

  • Подключить плату к домашнему WiFi роутеру (режим STA) – для работы в локальной сети или через Интернет
  • Настроить плату как точку доступа (режим AP) и подключиться к ней со смартфона

Подключение к роутеру

  • Подключаем в скетч встроенную библиотеку ESP8266WiFi.h
  • Переводим режим работы в STA через WiFi.mode(WIFI_STA) – необязательно, если до этого режим работы не изменялся
  • Инициируем подключение к WiFi роутеру:
    • Вызываем WiFi.begin(WIFI_SSID) – с указанием названия незащищённой сети (без пароля)
    • Вызываем WiFi.begin(WIFI_SSID, WIFI_PASS) – с указанием названия сети и пароля
    • Для удобства настройки можно вынести логин и пароль в начало программы через #define

    После успешного подключения можно вывести IP адрес платы в локальной сети роутера при помощи WiFi.localIP() .

    #include #define WIFI_SSID «Alex» #define WIFI_PASS «pass» void setup() < Serial.begin(115200); WiFi.begin(WIFI_SSID, WIFI_PASS); while (WiFi.status() != WL_CONNECTED) < delay(500); Serial.print("."); >Serial.println(«Connected»); Serial.println(WiFi.localIP()); > void loop()

    Скриншот со страницы конфигурации роутера. Плата есть в списке подключенных устройств:

    Создание точки доступа

    • Подключаем в скетч встроенную библиотеку ESP8266WiFi.h
    • Переводим режим работы в AP через WiFi.mode(WIFI_AP)
    • Создаём точку доступа:
      • WiFi.softAP(AP_SSID) – сеть без пароля. Указываем только имя
      • WiFi.softAP(AP_SSID, AP_PASS) – сеть с паролем

      #include #define AP_SSID «ESP» void setup() < Serial.begin(115200); WiFi.mode(WIFI_AP); WiFi.softAP(AP_SSID); >void loop()

      Теперь можно подключиться к плате со смартфона как к точке доступа WiFi. Примечание: по умолчанию в своей сети плата имеет IP адрес 192.168.4.1

      Источник

Оцените статью
Adblock
detector