- Плата микроконтроллера D1 WiFi UNO R3 на чипе ESP8266 ESP-12F
- Характеристики:
- Ошибка загрузки
- Оставьте свой отзыв об этом товаре
- Как у меня заработал WIFI для Arduino ESP8266 ESP-12E
- Платы, которые использовались при написании статьи:
- Материалы со страницы «Инструкция 1».
- Почему бы не использовать совмещенную плату UNO+ESP8266?
- UPD
- Используем Arduino UNO с WiFi на одной плате для POST запроса на сервер
- Таблица переключателей.
- Передача информации на серверы Cayenne и RemoteXY.
- Передача информации на произвольный сервер.
Плата микроконтроллера D1 WiFi UNO R3 на чипе ESP8266 ESP-12F
Платы этого формата, давно стали предпочитать те, кто делает Wi-Fi устройства. Простота и надежность, Возможность программировать платы прямо из Arduino IDE, делают их очень популярными в среде DIY. Платы изготовлены на чипе ESP8266 модификации 12F. Перейти к полному описанию
Доставка для г. Москва: Самовывоз сегодня с 10 часов: бесплатно Доставка до двери: 300 руб. Доставка в более чем 120 ПВЗ: загрузка
Платы этого формата, давно стали предпочитать те, кто делает Wi-Fi устройства. Простота и надежность, Возможность программировать платы прямо из Arduino IDE, делают их очень популярными в среде DIY. Платы изготовлены на чипе ESP8266 модификации 12F, в форм-факторе Arduino UNO, и значит могут быть использованы со многими шилдами для Arduino UNO.
Характеристики:
- Входное напряжение 3,3В
- 11 цифровых выходов
- Микро USB выход
- 4 Мб флэш-памяти
- Частота контроллера 80МГц/160МГц
- Рабочие температуры от -40С до 125С
- Размер: 67х54 мм
- Вес: 25г
Ошибка загрузки
Не было оценок по данному товару
Оставьте свой отзыв об этом товаре
Наш магазин работает в соответствии с Законом РФ «О защите прав потребителей».
В соответствие с п. 4 ст. 26.1 ФЗ «О защите прав потребителей» и п. 21 Постановления Правительства РФ «Об утверждении правил продажи товаров дистанционным способом» потребитель (покупатель) имеет право отказаться от товара (в том числе и надлежащего качества) в любое время до его передачи, а после передачи – в течение 7 дней. При этом, обмен товара надлежащего качества возможен только в случае, если:
- товар не включен в перечень товаров надлежащего качества, не подлежащих возврату утвержденный Постановлением Правительства РФ №55 от 19.01.1998 г.
- товар не был в употреблении
- сохранены фабричные ярлыки, гарантийные талоны, техническая документация, комплектующие детали
- сохранена упаковка товара
- в наличии документы, подтверждающие факт и условия покупки указанного товара (Ст. 25 Закона «О защите прав потребителей»).
В случае отказа от товара возврату подлежит уплаченная сумма, за исключением расходов на доставку товара, а также других расходов интернет-магазина, подлежащих компенсации за счет Покупателя (Ст. 26.1 Закона «О защите прав потребителей»).
Возвратом и обменом товара занимается тот филиал, в котором была совершена покупка
Как у меня заработал WIFI для Arduino ESP8266 ESP-12E
Плата ESP8266 ESP-12 ESP-12E UART Wi-Fi устанавливается сверху на плату Arduino UNO R3 и позволяет получать доступ к управлению и состоянием Arduino из интернет. И я заставил этот слоеный пирог заработать.
Компоненты Arduino для работы покупал в магазине All Electronics Trading Company.
Все быстро пришло. Почти все из того что заказал в этом магазине было отличного качества.
Исключение составляла комбинированная плата с разными датчиками, светодиодами и кнопками s.click.aliexpress.com/e/ct9JuGza. Эта плата была какой-то ручной пайки, но полностью работала.
Платы, которые использовались при написании статьи:
Закачал пустой скетч в Arduino U3.
void setup () <
// поместите здесь свой установочный код, чтобы запустить его один раз:
>
void loop () // поместите ваш основной код здесь для повторного запуска:
>
Действуя по инструкции 1 я ничего не достиг. Все комбинации перепробовал.
Раньше где-то слышал, что процедура прошивки требует намного большей мощности, чем штатная работа, и мощности питания от Arduino не всегда хватает.
На момент прошивки нужен отдельный источник питания. Заподозрил что у меня именно эта ситуация.
Esp8266 питается от 3.3V, а Uno использует 5V. В инструкции 1 написано, что 5V не трогаем. Автор инструкции 2 подключает на свой страх и риск (о чем говорит) плату Esp8266 к 5V выходу UNO R3. Я тоже так решил сделать, подключив все вот так.
Тут дело сдвинулось с мертвой точки, почти сразу же опять застопорившись.
Плата синхронизировалась, но как-то не до конца.
Содержимое окна FLASH_DOWNLOAD_TOOLS_v2.4_150924 было почти такое же, как в инструкции 1:
но у меня поле MAC adress заполнилось, а вот DETECTED IINFO оставалось пустым.
В логе содержалась фраза «error read crystal«. Подумал было что все-таки сжег плату, подав напряжение 5V на свой страх и риск.
Но нашел подобную проблему в ветке форума ERROR FLASHING FIRMWARE. Проблему решили, записав в Arduino U3 пустой скетч.
Да я же делал это в самом начале!
Снова записал пустой скетч и на этом этапе все заработало. А именно — содержимое окна FLASH_DOWNLOAD_TOOLS_v2.4_150924 стало таким же, как в инструкции 1.
И прошивка залилась в плату ESP8266 ESP-12 ESP-12E UART Wi-Fi.
Может, когда на первом этапе ничего не получалось, что-то залил в Arduino R3?
Начал дальше следовать инструкции 1, поместив плату ESP8266 на Arduino UNO R3 — и опять ничего не ладилось. Что бы не делал с переключателями Р1, Р2 — не проходили команды.
Снова обратился к инструкции 2.
Вернул подключение ESP8266 к UNO через Debug Port, но уже с использованием 3.3V — flash загрузчик уже не надо было использовать и решил не испытывать плату на прочность.
И отправил при таком подключении команду «AT+UART_DEF=9600,8,1,0,0». Вернуло ERROR.
Тут оказалось, что внимательно надо следить за регистрами и за отсутствием пробелов. Команды копировал с сайтов, а там были пробелы и поэтому возвращало ERROR.
Также нужно следить за регистрами. Команда «AT» принимается как в верхнем, так и в нижнем регистре. Остальные команды только в верхнем.
Дальше действовал по инструкции 1.
Небольшой трудностью на этом этапе было привязать статичный IP адрес — пришлось выяснять пароль от модема ZyXel Keenetic 4G II.
Теперь можно было с Web-страницы при помощи кнопки управлять светодиодом, подключенным к Arduino UNO R3, и видеть его состояние.
Материалы со страницы «Инструкция 1».
На данный момент на странице инструкции 1 www.instructables.com/id/ESP8266-ESP-12E-UART-Wireless-WIFI-Shield-TTL-Conv/ такие версии используемых файлов:
Почему бы не использовать совмещенную плату UNO+ESP8266?
Есть в природе плата, аналогичная вроде-бы двум описываемым выше.
UNO + WiFi R3 ATmega328P + ESP8266 (32 Мб памяти), USB-TTL CH340G. Совместимость Uno, NodeMCU, WeMos ESP8266.
Получается дешевле на 100р, чем описываемые выше в паре.
UPD
С ней оказалось все немного по другому.
Используем Arduino UNO с WiFi на одной плате для POST запроса на сервер
В статье «Как у меня заработал WIFI для Arduino ESP8266 ESP-12E» рассказывал как заставить работать платы Arduino UNO с ESP8266 ESP-12E UART Wi-Fi.
Но зачем такие сложности, если есть уже совмещенная плата?
Вместо слоеного пирога из двух плат:
И она заработала безо всяких прошивок и перепрошивок.
Работает только на скорости 115200
Среда Arduino уже была настроена для работы.
Осталось только переключатели перещелкивать, чтобы заливать скетч в UNO.
Таблица положений переключателей есть здесь.
Вот только не упомянуто положение переключателей (1-4 ON), когда во время работы Mega328+ESP8266 CH340 мониторит порт и выводит в консоль передаваемые команды.
Как настроить среду Arduino объясняется здесь или здесь.
Таблица переключателей.
CH340 connect to ESP8266 (upload sketch)
CH340 connect to ESP8266 (connect)
CH340 connect to ATmega328 (upload sketch)
All modules work independent
Совместная работа и мониторинг команд
Передача информации на серверы Cayenne и RemoteXY.
Протестировал плату на решении задач, скетчи которых заливал в слоеный пирог из двух плат:
Эти сервисы предоставляют свои библиотеки для работы с ESP8266.
Все заработало сразу без изменений и мучений.
Необходимо в скетчах заменить скорость на 115200.
Передача информации на произвольный сервер.
Решение предыдущей задачи «Отправка данных из ESP8266WiFi на сервер с CMS MaxSite» с этой платой повторить не удалось.
Для отправки данных на произвольный сервис использовалась универсальная библиотека WiFiESP.
И оказалось, что эта библиотека не заработала с этой платой, выдавая
[WiFiEsp] Warning: Unsupported firmware 0.9.5
Действительно, модуль при обращении с соответствующей командой AT+GMR сообщает версию SDK 0.9.5:
В файле README.md библиотеки можно прочитать:
Попытки обновить прошивку при помощи flash_download_tools не увенчались успехом (да и не старался особо):
Ведь библиотеки Cayenne и RemoteXY для этой платы заработали без проблем!
В этих статьях описывается способ обращения к 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 > 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; >