ESP-01. Использование Arduino IDE

Как было отмечено в предыдущей статье, одним из методов работы с ESP8266 является использование «самодельной» прошивки.
Наиболее «ленивым» способом реализовать этот метод можно используя «готовые dll-ки» для Arduino IDE. Такое решение позволяет использовать стандартные ардуиновские подходы для реализации различных технически-программных решений. Знакомая «обстановка» существенно упрощает и ускоряет разработку любительских конструкций.
«Arduino IDE для ESP8266 позволяет писать скетчи и загружать их одним кликом в ESP8266 в знакомой среде Arduino IDE».

ardIDE8266

Установка Arduino IDE для ESP8266 подробно описана тут.

Как ставил я и что получилось:

  • Скачиваем архив arduino-1.6.1-windows.zip, который можно найти на указанной страничке. В архиве все что надо для работы, в том числе и сама система Arduino IDE.
  • Распаковываем архив в отдельную папку, например: C:\arduino-1.6.1. Сокращаем вложения папок, если уж так вышло…
  • Далее, чтоб поменьше было проблем, руками копируем dll-ку в корень проекта: «Для успешной компиляции перед началом работы необходимо скопировать файл libiconv-2.dll из папки ..\arduino-1.6.1\hardware\tools\avr\libexec\gcc\avr\4.8.1 в папку ..\arduino-1.6.1«
Методика «прошивки»Методика работы c ESP8266 в Arduino IDE хорошо описана на той же страничке, повторю:
1. Подключаем USB-TTL к USB (в Диспетчере устройств отмечаем появившийся СОМ порт, пусть это вышел СОМ10).
2. Подключаем ESP8266 к USB-TTL: как это сделать — было разобрано в предыдущей статье.
3. Подключаем GPIO0 на землю, отключаем (если было включено) и вновь подаем питание на модуль ESP. Теперь все готово к прошивке: модуль ждет
загрузки программы через UART.
4. Запускаем Arduino IDE из папки C:\arduino-1.6.1 (см выше)
5. В меню Инструменты – Плата выбираем модуль ESP – Generic ESP8266 board (располагается в самом низу выпадающего списка — см скриншот выше)
6. В меню Инструменты выбираем порт, к которому подключен наш USB-TTL — это как раз наш новый порт СОМ10 (см.п.1)
7. В меню Инструменты – Программатор – esptool (тоже в самом низу)
8. Теперь можно создать новый скетч.
9. Жмем кнопку компиляции и загрузки скетча. На экране будет что-то типа (имена и размеры зависят от скетча):
Sketch uses 195 208 bytes (37%) of program storage space. Maximum is 524 288 bytes.
Uploading 34944 bytes from C:\WINDOWS\Temp\build1804685654077075156.tmp/WiFiWebServer.cpp_00000.bin to flash at 0x00000000
……………………………..
Uploading 160312 bytes from C:\WINDOWS\Temp\build1804685654077075156.tmp/WiFiWebServer.cpp_40000.bin to flash at 0x00040000
………………………………………………………………………………………………………….
10. По окончании процесса отключаем питание от ESP8266 отключая или не отключая USB-TTL от URXD и UTXD в зависимости от решаемой задачи. Отключаем GPIO0 от земли.
11. Подаем питание на модуль и смотрим как работает «наше творение».

Если требуется «мониторить UART», тогда (лучше до подачи питания на модуль):
10. По окончании процесса отключаем питание от ESP8266 не отключая USB-TTL от URXD и UTXD, отключаем GPIO0 от земли.
11. В меню Инструменты – Монитор последовательного порта, запускаем терминальную программу.
12. Выбираем скорость 115200.
13. Подаем питание на модуль и смотрим что происходит в терминале.

Первый проект — Blink светодиодом на UTXD

Естественно, первым делом, я запустил тестовый пример WiFiWebServer. Но правильно было бы «начать с малого» — с обычного Blink.
В вышеописанной инструкции на этапе п.8 открываем базовый пример Arduin-ы  Blink. Слегка меняем текст скетча: вместо pin13, указываем 1 (вспомним, что к UTXD на плате модуля ESP-01 подключен светодиод, а UTXD это и есть GPIO1).

// текст скетча *Blink*
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin 13 as an output.   тут меняем пин на номер 1
pinMode(1, OUTPUT);
digitalWrite(1, LOW);   // turn the LED TxD on
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(1, HIGH);   // turn the LED off (HIGH is the voltage level)
delay(1000);                // wait for a second
digitalWrite(1, LOW);    // turn the LED on by making the voltage LOW
delay(1000);                // wait for a second
}

Запускаем компиляцию — наблюдаем мигание светодиода…

Интересно проверить скорость работы функций DigitalWrite(). Для этого меняем в скетче pin1 на GPIO2, подключаем к этому выводу осциллограф.
Уменьшаем задержку в функции Delay() с 1000 до 1 мс. Картинка с осциллограммой сигнала на выводе GPIO2 показана на фото.

8266_osc1
Продолжаем эксперимент: комментируем в скетче строки с вызовом функции Delay().
Сигнал на GPIO2 для этого случая показан на фото. 8266_osc2
Тут уже сказывается быстродействие «китайского DSO201«, но по периоду «как бы прямоугольников» можно оценить быстродействие модуля при использовании стандартных функций Arduino (период сигнала около 6 мкс).

Добавить комментарий

Ваш e-mail не будет опубликован.

Нажимая кнопку "Отправить" Вы даёте свое согласие на обработку введенной персональной информации в соответствии с Федеральным Законом №152-ФЗ от 27.07.2006 "О персональных данных".