ESP8266:Примеры/Вывод на OLED-экран IP-адреса устройства при помощи ESP8266

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Черновик


Вывод на OLED-экран IP-адреса устройства при помощи ESP8266[1]

Эта статья рассказывает о проекте на базе ESP8266. Суть проекта в следующем: включившись, чип ESP8266 инициализирует OLED-дисплей SSD1306 (работает через интерфейс I2C), сканирует ближайшие WiFi-сети, ищет «домашнюю» WiFi-сеть и если находит, то пробует к ней подключиться. В заключение OLED-дисплей показывает IP-адрес, присвоенный DHCP-сервером. Если сомневаетесь в полученном результате, можно открыть консоль и пропинговать роутер.

Этот проект – эдакий «скелет», который можно использовать в качестве фундамента для других проектов на базе ESP8266.

Необходимые компоненты

  • Один модуль с чипом ESP8266
  • Один OLED-дисплей
  • Один конвертер USB-UART
  • Один резистор на 10 кОм (1/4 ватта)
  • Один резистор на 1,8 кОм (1/4 ватта)

Вещи, которые нужно знать о ESP8266 и IDE Arduino

Вещь #1

Для IDE Arduino модуль ESP8266 – это просто еще одна плата Arduino. В нашем случае – плата, похожая на Arduino Pro Mini: маленькая, оснащенная интерфейсом UART, но не имеющая USB-порта. Следовательно, чтобы подключиться к этой плате, у пользователя должен быть конвертер, преобразовывающий USB в UART и наоборот.

Кроме того, этот конвертер должен работать на 3,3-вольтовой логике.

НЕ ПУТАЙТЕ это с ситуацией, когда ESP8266 запускается в режиме AT-команд для коммуникации с платой Arduino, запрограммированной на «рукопожатие» с ESP8266. Это два разных случая, хотя схемы для них могут с непривычки выглядеть похожим образом.

Вещь #2

Если работа со стандартными платами Arduino (вроде UNO, Mini, Nano, Mega2560, Adafruit Pro Trinket и т.д.) осуществляется при помощи скетчей, загружаемым через IDE Arduino, то модули ESP8266 управляются, как правило, при помощи AT-команд. AT-команды – это технология, работающая по принципу «команда-ответ» и очень похожая на команды Hayes, которые использовались еще в эпоху «диалапов». Но проблема метода «команда-ответ» в том, что программист должен расписать действия для всего многообразия ответов, возвращаемых чипом

ESP8266, что может быть очень трудоемкой задачей. Кроме того, с покупкой нового модуля, имеющего другую версию прошивки, все эти действия, возможно, придется переписывать заново.

Если вы только купили модуль ESP8266, то прошивка, установленная на нем по умолчанию, может работать либо на 115200 бод, либо на 9600 бод. Сначала попробуйте более быструю скорость, а потом – более медленную. Ситуация осложняется тем, что модули с чипом ESP8266 бывают самыми разными, а в будущем наверняка появятся и новые версии этого продукта.

Официальные модули от Espressif Systems. Свою версию выпустила и Adafruit, но на этом фото его нет

Вещь #3

Для программирования ESP8266 понадобится не только программа IDE Arduino, установленная на компьютере (PC, Mac или Linux), но и аддон для ESP8266. Что касается версии IDE Arduino, то лучше использовать 1.6.4 или выше (скачать ее можно отсюда). Я проверил ее на Windows 8.1 и серьезных недостатков не обнаружил. Аддон для ESP8266 можно скачать отсюда. О том, как установить его в IDE Arduino, читайте тут.

Подключение компонентов

Вот фото, показывающее контакты и светодиоды модуля ESP8266. Если у вас не ESP-01, а другой модуль, ищите нужное фото через поиск картинок Google.

Модель ESP-01

Вот схема, показывающая, как компоненты должны быть подключены друг к другу:

В итоге проект должен выглядеть примерно так:






Более подробно о подключении компонентов:

  • OLED-дисплей – это 4-контактное устройство, работающее через интерфейс I2C. Контакт SDA на OLED-дисплее нужно подключить к контакту GPIO0 на ESP8266, а контакт SCL – к контакту GPIO2
  • Контакт CH_PD на ESP8266 нужно подключить к 3,3-вольтовому контакту VCC. В некоторых схемах на этой линии иногда ставится маленький резистор, но его подключение – опционально
  • Контакт RST на ESP8266 должен быть притянут к VCC при помощи резистора на 10 кОм
  • Контакты VCC и GND на ESP8266 должны быть подключены к контактам VCC и GND на OLED-дисплее, а затем – к стабильному источнику 3,3-вольтового напряжения (батарее, регулятору и пр.). Кроме того, рядом с ESP8266, между VCC и GND, должен стоять качественный конденсатор на 100 мкФ.

За коммуникацию по UART у чипа ESP8266 отвечают контакты UTXD и URXD. Как правило, коммуникация на них выполняется на скорости 115200 или 9600 бод (зависит от версии прошивки).

Программирование

Вот несколько замечаний, касающихся программирования модуля ESP8266:

  • Одно из главных условий– стабильный источник питания
  • Чтобы активировать у ESP8266 режим программирования, не подключайте GPIO0 напрямую к GND. Вместо этого проделайте следующее:
    • Отключите питание от ESP8266
    • Притяните контакт GPIO0 к «земле» при помощи резистора на 330 Ом
    • Подключите питание к ESP8266
    • Загрузите код на ESP8266
    • Отключите питание у ESP8266
    • Отключите контакт GPIO0 от «земли» и подключите как нужно для проекта (т.е. к OLED-дисплею)
    • Резистор на 330 Ом необходим для того, чтобы не повредить устройство, если состояние контакта случайно переключится на HIGH
    • Используйте ТОЛЬКО 3,3-вольтовый конвертер USB-Serial, и никогда – 5-вольтовый. Не используйте для питания ESP8266 выходной 3,3-вольтовый контакт конвертера USB-Serial, т.к. он не подходит для ESP8266. Лучше воспользуйтесь батареей или другим стабильным источником 3,3-вольтового напряжения
  • Поставьте на линии интерфейса I2C резисторы на 1,8 кОм – чтобы притянуть сигнал к 3,3 вольтам

Код

Скачайте код по этой ссылке, затем распакуйте его и поместите все распакованные файлы в одну папку – это многовкладочный проект. На моем компьютере путь к коду выглядит так:

\Documents\Arduino\Sketches\ESP8266\OLED\ESP_WiFiScan-Acquire_2

В завершение

Хотелось бы добавить, что этот проект – средней сложности, т.к. работа с ESP8266 временами может сильно раздражать. Так что для новичков я бы его не рекомендовал. В сети есть множество видео и статей на эту тему, но во многих из них немало неверной информации. Взявшись за этот проект, не торопитесь, и если чувствуете, что какая-то загвоздка начинает вас бесить, лучше займитесь на время чем-нибудь еще. Для того, чтобы подпалить ESP8266, достаточно одного неверного движения, и хотя цена на него невысока, видеть, как ваша маленькая 4-долларовая плата поджаривается прямо у вас на глазах, может быть неприятно. Особенно зная, что следующий ESP8266 приплывет из Китая только через несколько недель.

См.также

Внешние ссылки