• Обратная связь
  • Карта сайта
  • Отзыв
  • Комментарии
  • Форум
discord
Технические заметки
  • Главная
  • Лекции
  • Практикум
  • Обзоры
  • Сравнение
  • Нормы
  • События
  • Вход
ГлавнаяArduinoМониторингГаджеты
Проект общежития на 5 этажей в Visio.
Wi-Fi терморегулятор за 1630р в ближайшую Черную Пятницу

Используем Arduino UNO с WiFi на одной плате для POST запроса на сервер

24 ноября 2019 г.Просмотров: 15621Комментарии: 5
ArduinoМониторингГаджетыAliExpressArduinoESP8266WiFiИнтернет Вещей

В статье "Как у меня заработал WIFI для Arduino ESP8266 ESP-12E" рассказывал как заставить работать платы Arduino UNO с ESP8266 ESP-12E UART Wi-Fi.

Но зачем такие сложности, если есть уже совмещенная плата?

Вместо слоеного пирога из двух плат:

Заказал вот эту плату:

UNO R3 + WiFi ATmega328P+ESP8266 (32Mb memory) USB-TTL CH340G For Arduino Uno NodeMCU WeMos ESP8266 One New Arrival

И она заработала безо всяких прошивок и перепрошивок.

Работает только на скорости 115200

Среда Arduino уже была настроена для работы.

Осталось только переключатели перещелкивать, чтобы заливать скетч в UNO.

Таблица положений переключателей есть здесь.

Вот только не упомянуто положение переключателей (1-4 ON), когда во время работы Mega328+ESP8266 CH340 мониторит порт и выводит в консоль передаваемые команды.

Как настроить среду Arduino объясняется здесь или здесь.

Таблица переключателей.

 

1

2

3

4

5

6

7

8

CH340 connect to ESP8266 (upload sketch)

OFF

OFF

OFF

OFF

ON

ON

ON

NoUSE

CH340 connect to ESP8266 (connect)

OFF

OFF

OFF

OFF

ON

ON

OFF

NoUSE

CH340 connect to ATmega328 (upload sketch)

OFF

OFF

ON

ON

OFF

OFF

OFF

NoUSE

Mega328+ESP8266

ON

ON

OFF

OFF

OFF

OFF

OFF

NoUSE

All modules work independent

OFF

OFF

OFF

OFF

OFF

OFF

OFF

NoUSE

Совместная работа и мониторинг команд

ON

ON

ON

ON

OFF

OFF

OFF

NoUSE

Передача информации на серверы Cayenne и RemoteXY.

Протестировал плату на решении задач, скетчи которых заливал в слоеный пирог из двух плат:

Подключаем Arduino UNO при помощи ESP8266-12E к облаку Cayenne.

Мониторинг Arduino UNO + ESP8266 через облачный сервер RemoteXY.

Эти сервисы предоставляют свои библиотеки для работы с ESP8266.

Все заработало сразу без изменений и мучений.

Необходимо в скетчах заменить скорость на 115200.

Передача информации на произвольный сервер.

Решение предыдущей задачи "Отправка данных из ESP8266WiFi на сервер с CMS MaxSite" с этой платой повторить не удалось.

Для отправки данных на произвольный сервис использовалась универсальная библиотека WiFiESP.

И оказалось, что эта библиотека не заработала с этой платой, выдавая

[WiFiEsp] Warning: Unsupported firmware 0.9.5

Действительно, модуль при обращении с соответствующей командой AT+GMR сообщает версию SDK 0.9.5:

AT+GMR
AT version:0.21.0.0
SDK version:0.9.5

В файле README.md библиотеки можно прочитать:

Supports ESP SDK version 1.1.1 and above (AT version 0.25 and above).

Попытки обновить прошивку при помощи flash_download_tools не увенчались успехом (да и не старался особо):

Ведь библиотеки Cayenne и RemoteXY для этой платы заработали без проблем!

Помогли статьи:

instructables.com/id/Arduino-Esp8266-Post-Data-to-Website и developer.alexanderklimov.ru/arduino/playground/uno_esp8266wifi

В этих статьях описывается способ обращения к ESP8266 обычными командами без библиотек.

Будем обрабатывать POST запрос к серверу при помощи плагина my_esp8266 для MaxSiteCMS, который принимает данные.

Заработал вот такой скетч.

// отсылает данные в плагин http://fil-tec.ru/tag/My_ESP8266 для MaxSite CMS
String ssid ="Router name";
String password="**********";
String server = "my.site.ru"; // сайт, на котором установлен пагин My_esp8266
String uri = "/ajax/**************************"; // скопировать со страницы "Тест" админки плагина My_esp8266 адрес для обращения с запросами
String PORT = "80";
int countTrueCommand;
int countTimeCommand;
boolean found = false;
int valSensor = 1;
String jsonString; // данные
String PostHeader; // заголовок
String data;
int DHpin = 4; //sensor pin
byte dat [5];
String temp ,hum;
#define PIN_SWITCH_1 12
#define PIN_SWITCH_2 13
void setup() 
{
  pinMode (DHpin, OUTPUT);
  pinMode (PIN_SWITCH_1, OUTPUT);  
  pinMode (PIN_SWITCH_2, OUTPUT); 
  Serial.begin(115200);
  reset();
  connectWifi();
}
void reset() 
{
  Serial.println("AT+RST");
  delay(1000);
}
//connect to your wifi network
void connectWifi() 
{
  Serial.begin(115200);
  sendCommand("AT", 5, "OK");
  sendCommand("AT+CWMODE=1", 5, "OK");
  sendCommand("AT+CWJAP=\"" + ssid + "\",\"" + password + "\"", 20, "OK");
  digitalWrite(PIN_SWITCH_2, (found == true)?LOW:HIGH);
}
byte read_data () 
{
  byte data;
  for (int i = 0; i < 8; i ++) 
  {
    if (digitalRead (DHpin) == LOW) 
    {
       while (digitalRead (DHpin) == LOW); // wait for 50us
       delayMicroseconds (30); // determine the duration of the high level to determine the data is '0 'or '1'
       if (digitalRead (DHpin) == HIGH)
          data |= (1 << (7-i)); // high front and low in the post
      while (digitalRead (DHpin) == HIGH); // data '1', wait for the next one receiver
    }
  } 
  return data;
}
void start_test () 
{
   digitalWrite (DHpin, LOW); // bus down, send start signal
   delay (30); // delay greater than 18ms, so DHT11 start signal can be detected
   digitalWrite (DHpin, HIGH);
   delayMicroseconds (40); // Wait for DHT11 response
   pinMode (DHpin, INPUT);
   while (digitalRead (DHpin) == HIGH);
   delayMicroseconds (80);  // DHT11 response, pulled the bus 80us
   if (digitalRead (DHpin) == LOW);
   delayMicroseconds (80);  // DHT11 80us after the bus pulled to start sending data
   for (int i = 0; i < 4; i ++) // receive temperature and humidity data, the parity bit is not considered
   {
     Serial.println(i);
     dat[i] = read_data ();
   }  
   pinMode (DHpin, OUTPUT);
   digitalWrite (DHpin, HIGH);
  // send data once after releasing the bus, wait for the host to open the next Start signal
}
void loop ()
{
  start_test ();  // convert the bit data to string form
  hum = String(dat[0]);
  temp= String(dat[2]);
  jsonString = "secret=0000&name=ESP_8266WiFi&temp=" + temp + "&hum=" + hum;
  httppost();
  delay(1000);
}
void httppost () 
{
  String postRequest =
  "POST " + uri + " HTTP/1.1\r\n" +
  "Host: " + server + "\r\n" +
  "User-Agent: ESP8266WiFi\r\n" +
  "Accept: application/xml\r\n" +
  "X-Requested-With: XMLHttpRequest\r\n" +
  "Referer: http://my.site.ru\r\n" +
  "Connection: close\r\n" +
  "Content-Length: " + jsonString.length() + "\r\n" +
  "Content-Type: application/x-www-form-urlencoded\r\n" +
  "\r\n" + jsonString;
  
  sendCommand("AT+CIPMUX=1", 5, "OK");
  sendCommand("AT+CIPSTART=0,\"TCP\",\"" + server + "\"," + PORT, 15, "OK");
  sendCommand("AT+CIPSEND=0," + String(postRequest.length() + 2), 4, ">");
  sendCommand(postRequest, 5, "OK");
  delay(1500); 
  countTrueCommand++;
  sendCommand("AT+CIPCLOSE=0", 5, "OK");
}
void sendCommand(String command, int maxTime, char readReplay[]) 
{
  while (countTimeCommand < (maxTime * 1))
  {
    Serial.println(command);//at+cipsend
    delay(1500);
    if (Serial.find(readReplay)) //ok
    {
      found = true;
      break;
    }
    countTimeCommand++;
  }
  if (found == true)
  {
    // успешно 
    digitalWrite(PIN_SWITCH_1, LOW);
    countTrueCommand++;
    countTimeCommand = 0;
  }
  if (found == false)
  {
    // неудачно
    digitalWrite(PIN_SWITCH_1, HIGH);
    countTrueCommand = 0;
    countTimeCommand = 0;
  }
  found = false;
}

Еще записи по теме

Подключаем Arduino UNO при помощи ESP8266-12E  к облаку Cayenne
Подключаем Arduino UNO при помощи ESP8266-12E к облаку Cayenne
Мониторинг Arduino UNO + ESP8266 через облачный сервер RemoteXY
Мониторинг Arduino UNO + ESP8266 через облачный сервер RemoteXY
Отправка данных из ESP8266WiFi на сервер с CMS MaxSite
Отправка данных из ESP8266WiFi на сервер с CMS MaxSite
Отправляем состояния теплых полов из Arduino UNO ESP8266 WiFi на сервер ThingSpeak
Отправляем состояния теплых полов из Arduino UNO ESP8266 WiFi на сервер ThingSpeak
Как у меня заработал WIFI для Arduino ESP8266 ESP-12E
Как у меня заработал WIFI для Arduino ESP8266 ESP-12E
Версия 02 плагина My_ESP8266 для MaxSiteCMS.
Версия 02 плагина My_ESP8266 для MaxSiteCMS.

Комментариев: 5 RSS

1 Аноним 15-01-2022 09:58

Спасибо за статью!

При каком положении переключателей заливать этот скетч на плату?

2 Андрей 15-01-2022 13:01

Скеч в Arduino при положении, которое в таблице вот в этой строке:

CH340 connect to ATmega328 (upload sketch)

Но дело было давно, хотя проблем помню вообще не было. Значит в таблице верно было указано.

3 Аноним 15-01-2022 15:11

Спасибо! Немного разобрался. В режиме off-off-ON-ON-off-off-off-off скетч заливается, в режиме ON-ON-ON-ON-off-off-off-off работает. Но нестабильно. Делает пару отправок, потом зависает.

4 Дмитрий 29-08-2022 23:46

Я не совсем понял можно ли использовать wifi для подключения допустим к планшету?

5 Андрей 03-09-2022 23:05

Я не совсем понял можно ли использовать wifi для подключения допустим к планшету?

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

Оставьте комментарий.

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question


Выберите для анонимного комментирования (комментарий будет опубликован после проверки).

     

  

Выберите если нужно войти или зарегистрироваться и оставить комментарий от своего аккаунта.

Войти, используя

(обязательно)

Подписка на новости
discord

Email:

Регистрация

Вход через
Разделы
  • Пожарная сигнализация123
    • Инструкции13
    • Проекты2
  • Автоматика55
  • Отопление33
  • Мониторинг30
  • Электрика16
  • Пожаротушение32
  • Умный дом32
  • Arduino12
  • Гаджеты32
  • MaxSite CMS26
Актуальное
  • СП 484
  • Автоматизация теплого пола
  • Болид vs Рубеж
  • С2000-АСПТ
  • ПЦН в кармане
  • Системы противопожарной зашиты
  • Cloud IoT
  • Проектирование
  • Программирование
  • Ссылки
Последние комментарии
Какие бывают табло "Выход" и как их правильно подключить
  • Александр » Добрый день. В пансионате табличка выход горит настолько ярко, как светильник, что ночью не возможно спать. Есть ли какой либо стандарт...
  • Андрей » табличка выход горит настолько ярко, как светильник, что ночью не возможно спать Хорошие видимо таблички. Обычно они еле светятся...
  • Андрей » В пансионате думаю можно и переделать алгоритм работы - чтобы загоралась только во время тревоги.
Достаточно ли на объекте установить один пожарный прибор?
  • Ant » С интересом изучаю Ваши статьи. Кое-что использую в работе. Вы сталкивались с блоками реле "Арсенала Безопасности"? Это для приборов Гранит-3,5........
  • Андрей » с блоками для Гранит Видел такой пару раз в старинных Гранитах. Работали.
Последние загрузки
Все загрузки
Дискуссии на форуме
  • КПБ
  • Выбор ОПС для коттеджа
  • Отключение питания раздвижных дверей при пожарном сценарии.
Реклама

Coffee machine Nivona CafeRomatica NICR 520 capuchinator maker automatic kitchen appliances goods Kapuchinator for kitchen

Wire Connector 50 / 100PCS Orange Mini Quick Connector Universal Compact Wire Connector Plug-in Wire Terminal Home Connector

DIY Smart WiFi Light LED Dimmer Switch Smart Life/Tuya APP Remote Control 1/2 Way Switch,Works with Alexa Echo Google Home

Пожарка 125 Проектирование 97 Болид 64 Лекции 58 Социальное 53 Рубеж 49 Обзор 46 Автоматика 45 Инженерные системы 38 Курьез 35 Адресные системы 35 Практикум 34 Пожаротушение 34 Отопление 33 Интернет Вещей 29 MaxSite 28 ГОСТ 25 Облачный Сервис 24 Терморегуляторы 24 Мониторинг 22 Теплый пол 21 Плагин 21 Сравнение 20 AliExpress 20 ППУ 20 Техобслуживание 19 СП 484 19 Законы Ома 19 Вентиляция 18 Эксплуатация 18 Астра 17 ППК 17 Клапана 15 С2000-АСПТ 14 Электрика 14 Рубикон 13 Оповещение 13 Arduino 13 WiFi 12 С2000М 12 Ritm 11 Гранд Магистр 11 Датчики 11 Насосная Станция 11 Юнитест 10 ESP8266 10 ПЦН 9 ВЭРС 9 Сценарии 8 Авария 8 Жилой дом 8 Программирование 7 Отзыв 7 Taggallery 7 Сообщества 7 Диспетчеризация 7 Освещение 6 Плазма-Т 6 Спрут-2 5 С2000-СП4 5 ПО 5 Гаджеты 5 Радиоканал 4 МПТ 4 GeoRITM 4 МПН 4 Учет ресурсов 3 Баня 3 Версет 3 Гранит 3 Рубеж-2ОП 3 My_ESP8266 3 Visio 3 ИПДЛ 3 Navigard 3 РИП 3 Firesec3 3 Zigbee 2 Security Hub 2 Гидравлика 2 ТО 2
  • Обратная связь
  • Карта сайта
  • Отзыв
  • События
  • Комментарии
  • Форум
© Технические заметки 2026. Работает на MaxSite CMS. ( Вход )
Автор не несет ответственность за последствия применения материалов сайта на практике.