Любая платформа на базе ESP8266 является достойной заменой плате Arduino, особенно с учетом того, что стоит она в 2-3 раза дешевле и имеет Wi-Fi на борту, что позволяет делать на ней не только самоделки для домашней автоматики, но и использовать её для создания устройств IoT (Интернет вещей). Единственный минус - мало портов ввода/вывода.
В этой статье речь пойдет о назначении(ограничениях) выводов самой популярной версии платформы - ESP8266 12-E NodeMCU Kit
Важная вещь, которую следует отметить в отношении ESP8266, заключается в том, что номер GPIO не соответствует этикетке на шелкографии платы. Что это означает?
Встроенный светодиод находится на GPIO2. Чтобы зажечь/погасить этот светодиод из среды Arduino IDE необходимо будет в коде будет необходимо обращаться к GPIO2:
А вот если захочется подключить вместо встроенного светодиода внешний светодиод - то подключать его нужно будет к физическому выводу с обозначением D4.
Схематическое изображение ESP8266 12-E NodeMCU смотрите на этом чертеже:
GPIO6-GPIO11 обычно подключаются к микросхеме флэш-памяти на платах ESP8266 и использовать их не рекомендуется.
Куда подключать реле и электронные ключи?
После подачи питания, и во время прошивки платы некоторые выводы меняют свое состояние. Если к ним подключены какие-нибудь исполнительные механизмы (реле, электронные ключи) то они могут сработать. GPIO4(D2) и GPIO5(D1) являются наиболее безопасными для использования GPIO, если требуется управлять реле.
Аналоговый вход:
ESP8266 поддерживает аналоговое чтение только в одном GPIO. Этот GPIO называется ADC0 и обычно обозначается на шелкографии как A0. Максимальное входное напряжение на выводе ADC0 составляет от 0 до 1 В, если вы используете чистый чип ESP8266. Если вы используете платформу ESP8266 12-E NodeMCU, диапазон входного напряжения составляет от 0 до 3,3 В, поскольку эти платы содержат внутренний делитель напряжения.
Встроенный светодиод:
Подключается к GPIO2, и работает с инвертированной логикой.
Пин RST
Когда на вывод RST подается НИЗКИЙ уровень, ESP8266 сбрасывается. Это аналогично нажатию встроенной кнопки RESET.
GPIO0
Когда GPIO0 получает НИЗКИЙ уровень, он переводит ESP8266 в режим загрузчика. Это то же самое, что и нажатие встроенной кнопки FLASH/BOOT.
GPIO16
GPIO16 можно использовать для пробуждения ESP8266 от глубокого сна. Чтобы вывести ESP8266 из глубокого сна, GPIO16 должен быть подключен к контакту RST.
Шина I2C:
У ESP8266 нет аппаратных выводов I2C, но его можно реализовать программно. Таким образом, можно использовать любые GPIO в качестве I2C. Обычно в качестве контактов I2C используются:
- GPIO5: SCL
- GPIO4: SDA
Шина SPI:
Выводы, используемые в качестве SPI в ESP8266:
- GPIO12: MISO
- GPIO13: MOSI
- GPIO14: SCLK
- GPIO15: CS
Пины с поддержкой PWM:
ESP8266 поддерживает программную ШИМ на всех контактах ввода/вывода: от GPIO0 до GPIO15. Сигналы ШИМ на ESP8266 имеют 10-битное разрешение.
Пины с прерываниями:
ESP8266 поддерживает прерывания в любом GPIO, кроме GPIO16.
Сводная таблица:
Зеленым цветом обозначены выводы которые можно использовать без ограничений. Как и в платформе Arduino выводы GPIO3 и GPIO1 используется для загрузки скетча - вешать на них что-либо крайне не желательно, так как может пропасть возможность прошивки платы пока это что-то не будет отключено физически.
Резюме: свободных ног у ESP8266 не так уж и много, некоторые из них можно использовать только учитывая ограничения. Обязательно принимайте это во внимание при задумке самоделок на базе ESP8266.
Полный список статей доступен по этой ссылке:
Всем удачи!