Макетирование и программирование платы ESP-01 с помощью Arduino IDE
ESP8266 – микроконтроллер / микросхема с модулем Wi-Fi
Новый микроконтроллер привлек внимание профессиональных разработчиков и любителей, и он может стать потенциальным лидером в интернете вещей. Микросхема под названием "ESP8266" представляет собой 32-битный RISC процессор со всеми свистелками и перделками, которые вы могли бы ожидать от полнофункционального микроконтроллера, но это еще не всё. ESP8266 также включает в себя встроенную схему Wi-Fi 802.11 b/g/n, которая готова к непосредственному подключению к антенне.
ESP8266 в настоящее время доступен только в 32-выводном корпусе QFN, в данном семействе присутствует только одна микросхема. Разработчик, Espressif, Шанхай, Китай, решил в полной мере использовать эффективность масштабного производства и предложить одну микросхему, которая подходит для использования в различных сборках печатных плат. В настоящее время существует более десятка печатных плат модулей ESP, которые отличаются в основном типом антенн и количеством доступных входов/выходов. Из-за QFN корпуса ESP8266, большинство любителей довольны этим решением, тем более, что рыночные цены начинаются с менее 5 долларов США за модель младшего класса, получившей название ESP-01 и изображенной ниже.
Для ESP8266 существует форум поддержки очень активного сообщества, который является отличным источником идей и информации. Первоначально документация была доступна только на китайском языке, а информацию по прошивкам до сих пор бывает трудно найти. В настоящее время многие DIY проекты работают в режиме «проб и ошибок», но есть много поставщиков, которые продают платформы разработки и другие аксессуары. Однако, как вы увидите ниже в этой статье, запустить ESP8266 на макетной плате совсем не трудно.
Варианты программирования
От поставщика многие (возможно, все) модули ESP8266 загружаются с прошивкой "AT" и могут программироваться через простую программу консоли. Если вы используете модуль в первую очередь для использования его Wi-Fi возможностей и управления им с помощью другого микроконтроллера, это может быть всё, что вам нужно.
Более сложный вариант доступен от NodeLua, который предлагает прошивку с открытым исходным кодом на основе языка программирования Lua. NodeLua всё еще находится в разработке, но уже содержит обширные возможности. Другие варианты включают в себя Python, BASIC и Arduino IDE, которая представлена в данной статье.
Входы и выходы ESP-01
Модуль ESP-01 содержит микроконтроллер ESP8266 и чип флэш-памяти. На нем также есть два светодиода: красный (указывает наличие питания) и синий (указывает на наличие потока данных и может также управляться программно пользователем). Wi-Fi антенна – это дорожка на печатной плате на верхней части модуля; она носит название MIFA-антенна (Meandered Inverted-F Antenna), и, на удивление, она эффективна и только слегка направлена.
В нижней части модуля находятся восемь контактов; на рисунке выше указан их функционал. Обычно на задней части модуля установлены два 4-пиновых разъема, которые припаяны сверху. Это делает входы/выходы доступными, но не очень подходящими для макетной платы, и требует перемычек между ESP-01 и макетной платой. Альтернативный способ размещения разъемов показан ниже.
Разъем на передней части печатной платы использует стандартные прямоугольные выводы без каких-либо изменений. Разъем на задней части использует удлиненные выводы, которые были согнуты под прямым углом, чтобы выдержать корректное расстояние между рядами разъемов. Этот способ позволяет вставлять ESP-01 в беспаечную макетную плату в вертикальном положении над центральным зазором платы и делает все восемь контактов независимыми.
Собираем всё вместе
На приведенной ниже схеме показаны соединения, необходимые для ESP-01, а на фотографиях показан завершенный макет на беспаечной макетной плате. Цвета проводов на схеме соответствуют цветам проводов на фотографиях.
Соберите макет, как показано на рисунке, но не подключайте кабель USB-TTL конвертера к компьютеру, пока не установите перемычку на плате конвертера в положение 3,3В, и дважды перепроверьте правильность всех соединений. Использование 5В для питания ESP-01 может вывести модуль из строя, после чего тот не будет подлежать ремонту.
Более надежная схема прошивки приведена в этой статье.
Для сборки макета вам может понадобиться дополнительная информация:
- USB-TTL конвертер, показанный на фотографиях, использует UART микросхему FTDI232 и хорошо работает с операционными системами Windows, Mac и Linux. Он также предоставляет напряжение 3,3В для питания ESP-01. Убедитесь, что перемычка на печатной плате преобразователя установлена в положение 3,3В; что обеспечит как напряжение питания 3,3В, так и правильное напряжение на линии TxD. Использование более высокого напряжения может повредить ESP-01.
- Независимо от того, какой USB-TTL конвертер вы решите использовать, он должен быть проверен перед использованием с ESP-01. Драйвера устройств на FTDI можно найти на сайте FTDI.
- Величина тока, необходимого для ESP-01 во время работы Wi-Fi, варьируется от 250 мА до 750 мА. Ток, поставляемый USB-TTL преобразователем, должен быть достаточным для программирования ESP-01, но может оказаться недостаточным для длительного использования. Лучшим выбором является стабилизированный источник постоянного напряжения 3,3В, рассчитанный на ток 1 А и выше.
- Выводы DTR и CTS USB-TTL конвертера остаются неподключенными.
- Два коммутатора на схеме – это нормально разомкнутые однополюсные кнопки.
- Одним из расхождений в доступных источниках информации об ESP-01 является то, должен ли CH_PD быть подключен к +3,3В напрямую или через подтягивающий резистор 10 кОм. Автор протестировал оба способа, и оба они работают. После того, как вы собрали и проверили схему, как показано здесь (с CH_PD, подключенным к +3,3В напрямую), попробуйте использовать подключение через резистор 10 кОм. Если схема работает с подтягивающим резистором 10 кОм, то оставьте его в схеме.
Как видите на приведенных выше фотографиях, использование свободных проводов от USB-TTL конвертера не оптимально. Лучшим вариантом является замена шести загнутых выводов разъема конвертера на шесть прямых выводов на нижней части печатной платы. Эта модификация позволит устанавливать преобразователь USB-TTL непосредственно в беспаечную макетную плату, что приведет к значительно более аккуратной и менее хрупкой сборке макета, как показано на фотографии ниже.
Включение питания
Перед подключением USB-TTL конвертера к компьютеру убедитесь, что перемычка выбора напряжения находится в положении 3,3В, и что все провода в макете установлены правильно и надежно. Затем подключите USB кабель; красный светодиод на ESP-01 должен загореться и продолжать гореть, а синий светодиод должен мигать каждый раз, когда между ESP-01 и компьютером происходит обмен данными. Затем проверьте кнопку сброса, нажав и удерживая ее. Посмотрите на ESP-01, когда вы отпустите кнопку, синий светодиод должен мигнуть два раза. Если всё прошло хорошо, отключите схему от компьютера и перейдите к следующему разделу.
Arduino IDE
Для использования совместно с ESP8266 рекомендуется использовать Arduino IDE версии 1.6.5. Если у вас более ранняя версия, то можете попробовать и её или обновить IDE до версии 1.6.5.
- Как только у вас будет установлена подходящая версия Arduino IDE, запустите программу, перейдите в меню File (Файл) → Preferences (Настройки) и найдите в диалоговом окне поле ввода Additional Board Manager URLs (Дополнительные ссылки для Менеджера плат). Введите следующий URL точно, как он написан, и нажмите OK:
- http://arduino.esp8266.com/stable/package_esp8266com_index.json
- Затем нажмите Tools (Инструменты) → Board Manager (Менеджер плат) и прокрутите список вниз, чтобы найти "esp8266 by ESP8266 Community". Выберите эту запись и нажмите кнопку Install (Установка); загрузка и установка начнутся и будут продолжаться несколько минут. Пока дополнение устанавливается, взгляните на поддерживаемые платформы. В дополнение к базовому модулю ESP826 обеспечивается поддержка NodeMCU, Huzzah и SweetPea. К тому моменту, когда вы будете читать данную статью, этот список возможно расширится.
- Когда установка закончится, нажмите кнопку Close (Закрыть).
- Теперь нажмите Tools (Инструменты), перейдите в список плат и выберите "Generic ESP8266 Module".
- Снова нажмите Tools (Инструменты) и убедитесь, что выбран Generic ESP8266 Module.
- Нажмите File (Файл), Examples (Примеры) и прокрутите список вниз, пока не дойдете до ESP8266WiFi, а затем выберите WiFiScan. После этого должно будет открыться новое окно IDE со кодом примера WiFiScan.
Снова подключите схему к компьютеру и убедитесь, что на ESP-01 горит красный светодиод. Нажмите Tools (Инструменты), Port (Порт) и выберите порт, к которому подключен ESP-01. Наконец, вы готовы запрограммировать ESP-01.
Нажмите и удерживайте кнопку Reset, а затем нажмите и удерживайте кнопку Flash. Отпустите кнопку Reset и, удерживая нажатой кнопку Flash, нажмите кнопку со стрелкой Загрузка в Arduino IDE. Скетч должен скомпилироваться и загрузиться примерно за минуту, и когда компилирование будет завершено, отпустите кнопку Flash. Скомпилированный код будет отправлен в ESP-01; когда отправка будет завершена, на ESP-01 замигает синий светодиод.
Чтобы посмотреть результаты всех этих нажатий и выбираний, нажмите Tools (Инструменты), Serial Monitor (Монитор порта) и установите скорость передачи в правом нижнем углу окна монитора порта на 115200. Если у вас более ранняя версия ESP-01 (возможно на синей печатной плате), скорость передачи данных, скорее всего, равна 9600.
ESP-01 должен сканировать Wi-Fi сети и сообщать о результатах в окне монитора порта, как показано на примере ниже.
Среди сообщений вы должны увидеть свою собственную сеть и все остальные сети, которые сумел поймать ESP-01. Числа в скобках показывают уровень сигнала сети (обратите внимание, что эти числа отрицательные; следовательно, уровень сигнала -41 выше, чем -92).
Двери открыты
Возможность программирования ESP8266 с использованием Arduino IDE значительно расширяет базу пользователей этих чипов с поддержкой Wi-Fi. ESP-01 и его более крупные собратья предоставляют чрезвычайно эффективную аппаратную платформу за низкую цену. Добавьте простоту использования Arduino IDE, и разработка приложения для интернета вещей станет доступной практически любому человеку.