Проверка/Оформление/Редактирование: Мякишев Е.А.
|
|
|
Черновик
|
Вывод на 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 приплывет из Китая только через несколько недель.
См.также
Партнерские ресурсы |
---|
Криптовалюты |
|
---|
Магазины |
|
---|
Хостинг |
|
---|
Разное |
- Викиум - Онлайн-тренажер для мозга
- Like Центр - Центр поддержки и развития предпринимательства.
- Gamersbay - лучший магазин по бустингу для World of Warcraft.
- Ноотропы OmniMind N°1 - Усиливает мозговую активность. Повышает мотивацию. Улучшает память.
- Санкт-Петербургская школа телевидения - это федеральная сеть образовательных центров, которая имеет филиалы в 37 городах России.
- Lingualeo.com — интерактивный онлайн-сервис для изучения и практики английского языка в увлекательной игровой форме.
- Junyschool (Джунискул) – международная школа программирования и дизайна для детей и подростков от 5 до 17 лет, где ученики осваивают компьютерную грамотность, развивают алгоритмическое и креативное мышление, изучают основы программирования и компьютерной графики, создают собственные проекты: игры, сайты, программы, приложения, анимации, 3D-модели, монтируют видео.
- Умназия - Интерактивные онлайн-курсы и тренажеры для развития мышления детей 6-13 лет
- SkillBox - это один из лидеров российского рынка онлайн-образования. Среди партнеров Skillbox ведущий разработчик сервисного дизайна AIC, медиа-компания Yoola, первое и самое крупное русскоязычное аналитическое агентство Tagline, онлайн-школа дизайна и иллюстрации Bang! Bang! Education, оператор PR-рынка PACO, студия рисования Draw&Go, агентство performance-маркетинга Ingate, scrum-студия Sibirix, имидж-лаборатория Персона.
- «Нетология» — это университет по подготовке и дополнительному обучению специалистов в области интернет-маркетинга, управления проектами и продуктами, дизайна, Data Science и разработки. В рамках Нетологии студенты получают ценные теоретические знания от лучших экспертов Рунета, выполняют практические задания на отработку полученных навыков, общаются с экспертами и единомышленниками. Познакомиться со всеми продуктами подробнее можно на сайте https://netology.ru, линейка курсов и профессий постоянно обновляется.
- StudyBay Brazil – это онлайн биржа для португалоговорящих студентов и авторов! Студент получает уникальную работу любого уровня сложности и больше свободного времени, в то время как у автора появляется дополнительный заработок и бесценный опыт.
- Автор24 — самая большая в России площадка по написанию учебных работ: контрольные и курсовые работы, дипломы, рефераты, решение задач, отчеты по практике, а так же любой другой вид работы. Сервис сотрудничает с более 70 000 авторов. Более 1 000 000 работ уже выполнено.
- StudyBay – это онлайн биржа для англоязычных студентов и авторов! Студент получает уникальную работу любого уровня сложности и больше свободного времени, в то время как у автора появляется дополнительный заработок и бесценный опыт.
|
---|
Внешние ссылки
ESP8266 AT-команды |
---|
Список AT-команд |
---|
Базовые команды |
- AT - Проверка запуска
- AT+RST - Рестарт
- AT+GMR - Просмотр информации о версиях
- AT+GSLP - Активация режима глубокого сна
- ATE - Активация/деактивация эха
- AT+RESTORE - Сброс к заводским настройкам
- AT+UART Настройка UART [Устарела]
- AT+UART_CUR - Настройка UART в текущей сессии
- AT+UART_DEF - Дефолтная настройка UART (записывается на FLASH)
- AT+SLEEP - Режим сна
|
---|
Команды для WiFi |
- AT+CWMODE - WiFi-режим (клиент / точка доступа / клиент + точка доступа).
- AT+CWMODE_CUR - WiFi-режим (клиент / точка доступа / клиент + точка доступа). Запись на FLASH не идет.
- AT_CWMODE_DEF - WiFi-режим (клиент / точка доступа / клиент + точка доступа). Запись идет на FLASH.
- AT+CWJAP - Подключение к точке доступа.
- AT+CWJAP_CUR - Подключение к точке доступа. Запись на FLASH не идет.
- AT+CWJAP_DEF - Подключение к точке доступа. Запись идет на FLASH.
- AT+CWLAP - Вывод списка доступных точек доступа.
- AT+CWQAP - Отключение от точки доступа
- AT+CWSAP - Настройка параметров для режима точки доступа
- AT+CWSAP_CUR - Настройка параметров для режима точки доступа. На FLASH запись не идет.
- AT+CWSAP_DEF - Настройка параметров для режима точки доступа. Запись идет на FLASH.
- AT+CWLIF - Получение IP-адресов клиентов, подключенных к точке доступа ESP8266.
- AT+CWDHCP - Включение/выключение DHCP. [Эта команда устарела].
- AT+CWDHCP_CUR - Включение/выключение DHCP. На FLASH не записывается.
- AT+CWDHCP_DEF - Включение/выключение DHCP. Сохранение идет на FLASH.
- AT+CWAUTOCONN - Автоматическое подключение к точке доступа при включении ESP8266.
- AT+CIPSTAMAC - Задает MAC-адрес для клиента ESP8266
- AT+CIPSTAMAC_CUR - Задает MAC-адрес для клиента ESP8266. На FLASH запись не идет.
- AT+CIPSTAMAC_DEF - Задает MAC-адрес для клиента ESP8266. Запись идет на FLASH.
- AT+CIPAPMAC - Задает MAC-адрес для точки доступа ESP8266.
- AT+CIPAPMAC_CUR - Задает MAC-адрес для точки доступа ESP8266. Запись на FLASH не идет.
- AT+CIPAPMAC_DEF - Задает MAC-адрес для точки доступа ESP8266. Запись идет на FLASH.
- AT+CIPSTA - Задает IP-адрес клиента ESP8266.
- AT+CIPSTA_CUR - Задает IP-адрес клиента ESP8266. Запись на FLASH не идет.
- AT+CIPSTA_DEF - Задает IP-адрес клиента ESP8266. Запись идет на FLASH.
- AT+CIPAP - Задает IP-адрес точки доступа ESP8266
- AT+CIPAP_CUR - Задает IP-адрес точки доступа ESP8266. На FLASH запись не идет.
- AT+CIPAP_DEF - Задает IP-адрес точки доступа ESP8266. Запись идет на FLASH.
- AT+CWSTARTSMART - Запуск SmartConfig
- AT+CWSTOPSMART - Остановка SmartConfig
|
---|
Команды для TCP/IP |
|
---|
Телепорт |
---|
Arduino |
Примеры Arduino |
---|
Стандартные функции |
---|
Основы |
|
---|
Цифровой сигнал |
|
---|
Аналоговый сигнал |
|
---|
Связь |
- ReadASCIIString - Анализ строки, состоящей из разделенных запятыми int-значений, и их последующее использование для управления RGB-светодиодом.
- ASCII Table - Демонстрирует продвинутые способы вывода данных на Serial Monitor.
- Dimmer - Изменение яркости светодиода при помощи движения мышкой.
- Graph - Отправка данных на компьютер и их графическое отображение в скетче Processing.
- Physical Pixel - Включение/выключение светодиода путем отправки данных со скетча Processing (или Max/MSP) на Arduino.
- Virtual Color Mixer - Отправка с Arduino на компьютер сразу нескольких значений, а затем их считывание при помощи скетча для Processing или Max/MSP.
- Serial Call Response - Многобайтная передача данных при помощи метода вызова и ответа (метода «рукопожатия»).
- Serial Call Response ASCII - Многобайтная передача данных при помощи метода вызова и ответа (метода «рукопожатия»). До передачи данные зашифровываются в ASCII.
- SerialEvent - Демонстрирует использование SerialEvent().
- Serial input (Switch (case) Statement) - Как совершать различные действия, беря за основу символы, присланные через последовательный порт.
- MIDI - Передача через последовательный порт сообщений с MIDI-нотами.
- MultiSerialMega - Использование двух последовательных портов на Arduino Mega.
|
---|
Управляющие структуры |
- If Statement - Как использовать оператор «if» для создания условий, опирающихся на входные аналоговые данные, при которых светодиод будет либо включаться, либо оставаться выключенным.
- For Loop - Управление несколькими светодиодами, чтобы они мигали, как LED-полоска у автомобиля Китт из сериала «Рыцарь дорог».
- Array - Вариация примера «For Loop», но с использованием массива.
- While Loop - Использование цикла while() для калибровки датчика. Калибровка включается при нажатии на кнопку.
- Switch Case - Как совершать какие-либо действия в зависимости от значений, полученных от датчика. Эквивалент примера «If Statement», но если бы условий было не два, а четыре. Этот пример демонстрирует, как дробить диапазон данных от датчика на четыре «суб-диапазона», а затем в зависимости от полученных результатов совершать одно из четырех действий.
- Switch Case 2 - Второй пример, демонстрирующий использование оператора switch. Показывает, как совершать различные действия в зависимости от определенных символов, полученных через последовательный порт.
|
---|
Датчики |
- ADXL3xx - Считывание данных с акселерометра ADXL3xx.
- Knock - Определение стука при помощи пьезоэлемента.
- Memsic2125 - Считывание данных с 2-осевого акселерометра Memsic2125.
- Ping - Определение объектов при помощи ультразвукового дальномера.
|
---|
Дисплей |
Примеры, объясняющие основы управления дисплеем:
|
---|
Строки |
|
---|
USB (для Leonardo, Micro и Due плат) |
В этой секции имеют место примеры, которые демонстрируют использование библиотек, уникальных для плат Leonardo, Micro и Due.
|
---|
Клавиатура |
- KeyboardMessage - Отправка текстовой строки при нажатии на кнопку.
- KeyboardLogout - Выход из текущей пользовательской сессии при помощи клавиатурных комманд.
- KeyboardSerial - Считывает байт, присланный через последовательный порт, а в ответ отсылает другой байт.
- KeyboardReprogram - Открывает новое окно в среде разработки Arduino, а затем перешивает Leonardo скетчем «Моргание».
|
---|
Мышь |
|
---|
Разное |
---|
|
---|
Espruino |
|
---|
ESP8266 |
ESP8266 AT-команды |
---|
Список AT-команд |
---|
Базовые команды |
- AT - Проверка запуска
- AT+RST - Рестарт
- AT+GMR - Просмотр информации о версиях
- AT+GSLP - Активация режима глубокого сна
- ATE - Активация/деактивация эха
- AT+RESTORE - Сброс к заводским настройкам
- AT+UART Настройка UART [Устарела]
- AT+UART_CUR - Настройка UART в текущей сессии
- AT+UART_DEF - Дефолтная настройка UART (записывается на FLASH)
- AT+SLEEP - Режим сна
|
---|
Команды для WiFi |
- AT+CWMODE - WiFi-режим (клиент / точка доступа / клиент + точка доступа).
- AT+CWMODE_CUR - WiFi-режим (клиент / точка доступа / клиент + точка доступа). Запись на FLASH не идет.
- AT_CWMODE_DEF - WiFi-режим (клиент / точка доступа / клиент + точка доступа). Запись идет на FLASH.
- AT+CWJAP - Подключение к точке доступа.
- AT+CWJAP_CUR - Подключение к точке доступа. Запись на FLASH не идет.
- AT+CWJAP_DEF - Подключение к точке доступа. Запись идет на FLASH.
- AT+CWLAP - Вывод списка доступных точек доступа.
- AT+CWQAP - Отключение от точки доступа
- AT+CWSAP - Настройка параметров для режима точки доступа
- AT+CWSAP_CUR - Настройка параметров для режима точки доступа. На FLASH запись не идет.
- AT+CWSAP_DEF - Настройка параметров для режима точки доступа. Запись идет на FLASH.
- AT+CWLIF - Получение IP-адресов клиентов, подключенных к точке доступа ESP8266.
- AT+CWDHCP - Включение/выключение DHCP. [Эта команда устарела].
- AT+CWDHCP_CUR - Включение/выключение DHCP. На FLASH не записывается.
- AT+CWDHCP_DEF - Включение/выключение DHCP. Сохранение идет на FLASH.
- AT+CWAUTOCONN - Автоматическое подключение к точке доступа при включении ESP8266.
- AT+CIPSTAMAC - Задает MAC-адрес для клиента ESP8266
- AT+CIPSTAMAC_CUR - Задает MAC-адрес для клиента ESP8266. На FLASH запись не идет.
- AT+CIPSTAMAC_DEF - Задает MAC-адрес для клиента ESP8266. Запись идет на FLASH.
- AT+CIPAPMAC - Задает MAC-адрес для точки доступа ESP8266.
- AT+CIPAPMAC_CUR - Задает MAC-адрес для точки доступа ESP8266. Запись на FLASH не идет.
- AT+CIPAPMAC_DEF - Задает MAC-адрес для точки доступа ESP8266. Запись идет на FLASH.
- AT+CIPSTA - Задает IP-адрес клиента ESP8266.
- AT+CIPSTA_CUR - Задает IP-адрес клиента ESP8266. Запись на FLASH не идет.
- AT+CIPSTA_DEF - Задает IP-адрес клиента ESP8266. Запись идет на FLASH.
- AT+CIPAP - Задает IP-адрес точки доступа ESP8266
- AT+CIPAP_CUR - Задает IP-адрес точки доступа ESP8266. На FLASH запись не идет.
- AT+CIPAP_DEF - Задает IP-адрес точки доступа ESP8266. Запись идет на FLASH.
- AT+CWSTARTSMART - Запуск SmartConfig
- AT+CWSTOPSMART - Остановка SmartConfig
|
---|
Команды для TCP/IP |
|
---|
|
---|
Node-RED |
|
---|
Processing |
Справочник языка Processing |
---|
Конструкции языка |
|
---|
Окружение |
|
---|
Данные |
|
---|
Управление |
|
---|
Форма |
|
---|
Ввод |
|
---|
Вывод |
|
---|
Преобразование |
|
---|
Свет, камера |
|
---|
Цвет |
|
---|
Изображение |
|
---|
Рендер |
|
---|
Типография |
|
---|
Математика |
|
---|
Константы |
|
---|
Примеры на Processing |
---|
Основы |
- Структуры и конструкции:
- Фигуры:
- Данные:
- Массивы:
- Управляющие конструкции:
- Работа с изображением:
- Работа с цветом:
- Применение математических функций:
|
---|
Продвинутые графические эффекты |
- Рисование:
- Анимация:
- Графический интерфейс пользователя:
- Движение:
- Взаимодействие:
- Обработка изображения:
- Advanced Data:
- File IO:
- Simulate:
- Vectors:
- Fractals and L-Systems:
- Cellular Automata:
|
---|
Примеры из сторонних библиотек |
|
---|
|
---|
Электроника |
|
---|