Справочник по распиновке esp32: какие выводы gpio следует использовать?

Примеры работы с кодом

Энергонезависимая память

Это то, что применительно к Arduino Mega мы привыкли называть EEPROM. В ESP32 этой памяти нет как таковой, но у этого модуля есть её аналог и соответствующая библиотека для работы с ней. Называется эта память «NVS» (Non-volatile storage).

Но для нас нет никакой разницы — можно точно так же сохранять значения и читать их после выключения и последующего включения контроллера.

Пример использования. Подключаем библиотеку:

Создаём объект prefs

Инициализируем хранилище с идентификатором, например, «nvs»:

false относится в выбору режима чтение/запись, в данном случае и чтение и запись. Сохраняем байт под именем «addr»:

Читаем сохранённый байт:

Подобным же образом можно сохранять и читать значения любых других типов данных. Теперь удаляем хранилище.

Если разобраться, то это даже проще, чем работа со стандартной энергонезависимой памятью EEPROM на контроллерах Ардуино.

AnalogWrite()

Ещё одно нововведение, которое может поставить в тупик начинающего пользователя — в ESP32 отсутствует привычная функция AnalogWrite(). В первый момент это очень непривычно, но на самом деле эта функция всего лишь заменена своим более функциональным аналогом.

Рассмотрим пример. Начнём с подключения соответствущей библиотеки, хотя библиотекой в полном смысле слова это назвать нельзя, скорее это специализированный файл с описанием нужных функций. Дело в том, что не все функции присутствуют напрямую в Arduino IDE, часть функций доступна в файлах, находящихся в каталоге

В данном случае нас интересует файл работы с ШИМ и светодиодами, который мы подключаем следующей инструкцией:

Далее нам нужно установить номер канала (0), частоту ШИМ (например, 50 Гц) и разрешение (8 бит).

Номера каналов могут устанавливаться в диапазоне от 0 до 15, а разрешение от 1 до 16 бит. При выборе разрешения 8 бит, диапазон данных, управляющих ШИМ, будет находиться в интервале от 0 до 255.

Далее нам нужно привязать наш канал (0) к какому-либо выводу GPIO, в данном случае к выводу 22:

И нужно не забыть обычным образом настроить 22-й пин на выход.

Всё, теперь мы можем управлять, например, яркостью свечения светодиода, просто указывая номер канала и значение ШИМ (яркости) из диапазона от 0 до 255.

Прочие примеры кода на ESP32

Дистрибутив Arduino Mega Server, ссылку на который я дам в конце статьи, кроме полностью работоспособной системы являет собой обширный сборник структурированного кода, протестированный и проверенный на работоспособность на модуле ESP32. Вы можете его использовать как обучающее пособие для вхождения в тему программирования под ESP32.

ESP32 or ESP8266?

So, at this point you may be wondering: Should I get an ESP8266 or an ESP32?

It really depends on what you want to do. There is space for both boards, and both have pros and cons.

The ESP8266 is cheaper than the ESP32. Although it doesn’t have as many functionalities, it works just fine for most simple DIY IoT projects. However, it has some limitations in the GPIO mapping, and it might not have enough pins for what you intend to do. If that’s the case, you should get an ESP32.

The ESP32 is much more powerful than the ESP8266, comes with more GPIOs with multiple functions, faster Wi-Fi, and supports Bluetooth. However, many people think that the ESP32 is more difficult to deal with than the ESP8266 because it is more complex. On the contrary, in our opinion, it is as easy to program the ESP32 as the ESP8266, especially if you intend to program it using the “Arduino language” or MicroPython.

The ESP32 has some cons too. The ESP32 is more expensive than the ESP8266. So, if you’re building a simple IoT project, the ESP8266 might do the trick for a lower price. Additionally, because the ESP8266 is “older” than the ESP32, some libraries and features are better developed for the ESP8266, and you’ll find more resources (forums, people with the same issues, and how to solve them, etc.). However, as time goes by, the ESP32 is being widely adopted, and these differences in terms of development and libraries won’t be noticeable.

My personal experience: in 2021, I use almost exclusively the ESP32 for IoT projects. It is more versatile, and it comes with much more functionalities like Bluetooth, different wake-up sources, many peripherals, and much more. Additionally, the price difference is not a big deal, in my opinion. Once you move to the ESP32, you won’t want to go back to the ESP8266.

Зачем нам нужен протокол I2S?

Если мы хотим воспроизвести цифровой аудиофайл с помощью платы микроконтроллера, мы должны рассмотреть всю цепочку цифрового аудио. Следующий схематический рисунок показывает, как аудиофайл сохраняется на SD-карте и считывается с платы микроконтроллера. Затем плата подключается к динамику через цифровой контакт и землю.

В моем случае у меня есть образец аудиофайла с частотой дискретизации 44,1 кГц, стереоформатом и глубиной звука 16 бит. На нашей стороне ввода, где мы хотим прочитать музыкальный файл, у нас нет проблем, потому что соединение SPI достаточно быстрое, чтобы качество не ухудшалось во время передачи.

Но со стороны выхода мы должны преобразовать цифровой сигнал в аналоговый сигнал. Это делается с помощью цифро-аналогового преобразователя (ЦАП). В зависимости от используемого микроконтроллера возникают разные проблемы:

  • Arduino и ESP8266: платы Arduino, а также ESP8266 в целом не имеют внутреннего ЦАП, и поэтому вам придется создавать ЦАП с внешними компонентами.
  • ESP32: ESP32 имеет внутренний ЦАП для создания аналогового выходного сигнала, однако ЦАП имеет только 8-битное разрешение. Поскольку у нас есть 16-битный входной сигнал, мы немного потеряем качество.

Но как мы можем преобразовать цифровые данные из файла WAVE в динамик? Решением этой проблемы является протокол связи I2S, который поддерживает от 4 до 32 бит данных на выборку. Чтобы сделать нашу жизнь еще проще, мы используем коммутационную плату для аудио MAX98357 I2S. Но сначала мы углубимся в протокол связи I2S.

Установка ядра ESP8266 на ОС Windows

Давайте приступим к установке ядра ESP8266 Arduino.

Во-первых, на вашем компьютере должна быть установлена последняя версия Arduino IDE (Arduino 1.6.4 или выше). Если у вас ее нет, рекомендуем сейчас обновиться.

Для начала нам нужно обновить менеджер плат с помощью пользовательского URL. Откройте Arduino IDE и выберите Файл → Настройки. Затем скопируйте приведенный ниже URL в текстовое поле Дополнительные ссылки для менеджера плат, расположенное в нижней части окна:

Рисунок 7 – Установка платы ESP8266 в Arduino IDE с помощью json URL

Отлично. Затем перейдите к Менеджеру плат, выбрав Инструменты → Платы → Менеджер плат. Там, в дополнение к стандартным платам Arduino, должна быть пара новых записей. Отфильтруйте результаты поиска, введя esp8266. Нажмите на эту запись и выберите Установить.

Рисунок 8 – Установка ядра ESP8266 в менеджере плат Arduino IDE

Определения и инструменты для платы ESP8266 включают в себя полностью новый набор gcc, g++ и других достаточно больших скомпилированных двоичных файлов, поэтому загрузка и установка могут занять несколько минут (заархивированный файл весит ~110 МБ). После завершения установки рядом с записью появится надпись INSTALLED. Теперь можно закрыть менеджер плат.

ESP32 с несколькими устройствами I2C

Как мы уже упоминали ранее, каждое устройство I2C имеет свой собственный адрес, поэтому можно использовать несколько устройств I2C на одной шине. Когда у нас есть несколько устройств с разными адресами, все просто в их настройке: подключите оба периферийных устройства к линиям ESP32 SCL и SDA, в коде обращайтесь к каждому периферийному устройству по его адресу. Посмотрите на следующий пример, который получает показания датчика от датчика BME280 (через I2C) и отображает результаты на OLED-дисплее I2C.

Схема подключения для этого примера следующая.

Поскольку OLED и BME280 имеют разные адреса, мы можем без проблем использовать одни и те же линии SDA и SCL. OLED-дисплей имеет адрес 0x3C, а адрес BME280 — 0x76.

Но что, если у вас есть несколько периферийных устройств с одним и тем же адресом? Например, несколько дисплеев OLED или несколько датчиков BME280? Есть несколько решений: изменить адрес устройства I2C или использовать мультиплексор I2C.

Рассмотрим первый случай. Многие платы имеют возможность изменять адрес I2C в зависимости от его схемы. Например, если посмотреть на следующий OLED-дисплей:

Поместив резистор на одну или другую сторону, вы можете выбрать разные адреса I2C. Это также происходит с другими компонентами.

Однако в предыдущем примере это позволяет вам иметь только два дисплея I2C на одной шине: один с адресом 0x3C, а другой с адресом 0x3D. Кроме того, иногда сложно выполнить изменение адреса I2C. Таким образом, чтобы иметь несколько устройств с одинаковым адресом на одной шине I2C, вы можете использовать мультиплексор I2C, такой как TCA9548A, который позволяет обмениваться данными с 8 устройствами с одним и тем же адресом.

Интегральные схемы

Новый купон пользователя по заказам US $4.00

Гарантия возврата денег Возврат за 15 дней

Каков размер Flash памяти у модуля?

Программно проверить не удалось, но везде пишут 512 кбайт для такой модели

  • Бренд: TENSTAR ROBOT
  • Состояние: Новый
  • Тип: Регулятор напряжения
  • Напряжение электропитания: 1
  • Упаковка: SMD
  • Индивидуальное изготовление: Да
  • Мощность рассеивания: 1
  • Номер модели: ESP010712
  • Применение: Компьютер
  • Рабочая температура: 1

Этот модуль требует питания 3,3 Вольт для VCC и логики 3,3 В. Это не 5 V tolant. Подключите RX или TX на 5 V Для Arduino будет Уничтожить этот модуль. Необходимо использовать преобразователь логического уровня или 3,3 В для Arduino

Источник питания 3,3 В для Arduino Uno имеет недостаточный ток capabilit для питания этого модуля. Вы должны предоставить отдельный, Более высокое питание 3,3 в (около 300 ма или лучше)

Модель: ESP8266 ISM 2,4 ГГц PA + 25dBm 802.11b/g/n

4. Питание 3,3 В для Arduino Uno имеет недостаточный ток capabilit для питания этого Модуль.

Сертификация стандартов: FCC/CE/TELEC

Стандарты беспроводной связи: 802,11 b/g/n

Частотный диапазон: 2,4 ГГц-2,5 ГГц (2400 м-2483,5 м)

Интерфейс передачи данных: UART/HSPI/igc/igs/Ir Remote Contorl GPIO/PWM

Рабочее напряжение: 3,0

3,6 В (рекомендация 3,3 В)

Рабочий ток: Средний: 80 мА

Рабочая температура: от-40 °

Температура хранения: номинальная температура

  • 5 Звезды 95%
  • 4 Звезды 4%
  • 3 Звезды 1%
  • 2 Звезды 0%
  • 1 звезда 0%

Каков размер Flash памяти у модуля?

Программно проверить не удалось, но везде пишут 512 кбайт для такой модели

роутер нельзя а для чего вообще он нужен

он для интернет вещей. Через него можно чем-то управлять, можно подключить датчики и их считывать.

Крутая штука? Для чего можно использовать?

Лучше брать распаянную на плате, удобней пользоваться

Всем, кто это читает. Нажмите на три точки сверу справа => Сообщить => Галочку на рекламу => Отправить.

Всем, кто это читает. Нажмите посмотреть все=> на три точки сверу справа => Сообщить => Галочку на рекламу => Отправить. (Для моб. устройств)

люди это для часов как ролтор не годится

она и не позиционируется как роутер. ее можно сравнить с ардуиной, только с доступом в интернет по вай фаю

какую прошивку с AT заливать? Неделю запустить не могу. Памяти 32Mbit

с At? это не блютус. я залил нормальный терминал wifi-232 коптер сразу подхватился. правда долго геморился с режимом прошивки. слишком размытые описания процесса. но все прекрасно работает.

Что это вообще такое? один продавец прислал мне по ошибке. Можно ли сделать из этого роутер? Если да, то как?

нельзя, это контроллер. мозгов и памяти не хватит.

Характеристики

Все эти (и не только эти) платы выполнены на чипсете микроконтроллера ESP8266EX, а следовательно, характеристики у них одинаковые:

  • Протоколы: 802.11 b/g/n/e/i.
  • Диапазон частот: 2.4 ГГц – 2.5 ГГц.
  • Процессорное ядро: Tensilica L106 32 разряда.
  • Диапазон напряжений питания: 2.5 В – 3.6 В.
  • Среднее потребление тока: 80 мA.
  • Режимы WiFi: Station/SoftAP/SoftAP+Station.
  • Безопасность: WPA/WPA2.
  • Шифрование: WEP/TKIP/AES.
  • Обновление прошивки: через UART, по радиоканалу (OTA — Over The Air).
  • Сетевые протоколы: IPv4, TCP/UDP/HTTP/FTP.
  • Поддержка WiFi Direct (P2P), P2P Discovery, P2P GO (Group Owner) mode, GC (Group Client) mode, P2P Power Management.
  • Встроенные аппаратные ускорители: CCMP (CBC-MAC, режим счётчика), TKIP (MIC, RC4), WAPI (SMS4), WEP (RC4), CRC.
  • Поддержка LUA-скриптов.

Для чего нужен этот модуль Интернета вещей?

Модуль ESP8266 может читать, обрабатывать данные и управлять GPIO. Он поставляется с Wi-Fi 2,4 ГГц в варианте 802.11 BGN, а также поддерживает шифрование WPA2. У него много возможностей, некоторые из них перечислены ниже:

  • Эффективно использует свою функцию обработки данных для считывания цифровых и аналоговых сигналов с датчиков. Другое использование — чтение сложных вычислений сумматоров или множителей для любого другого алгоритма драйвера.
  • Этот модуль способен подключиться к любой сети поблизости. Его также можно использовать для простого создания собственной P2P-сети.
  • Оптимизация использования Wi-Fi помогает передавать данные по беспроводной сети на ближайший маршрутизатор.
    Даже при отсутствии P2P-сети или смартфона, соединение между двумя ESP может быть установлено напрямую.

Пины только для входа

GPIO с 34 по 39 являются GPI — только входные. Эти контакты не имеют внутренних подтягивающих или понижающих резисторов. Они не могут быть использованы как выходы, поэтому используйте эти контакты только как входы:

  • GPIO 34
  • GPIO 35
  • GPIO 36
  • GPIO 39

SPI-flash встроена в ESP-WROOM-32

От GPIO 6 до GPIO 11 представлены в некоторых платах ESP32. Однако эти пины подключены к встроенной флэш-памяти SPI на микросхеме ESP-WROOM-32 их рекомендуется использовать для других целей. Назначение этих пинов:

  • GPIO 6 (SCK / CLK)
  • GPIO 7 (SDO / SD0)
  • GPIO 8 (SDI / SD1)
  • GPIO 9 (SHD / SD2)
  • GPIO 10 (SWP / SD3)
  • GPIO 11 (CSC / CMD)

Емкостные сенсорные GPIO

ESP32 имеет 10 внутренних емкостных сенсорных датчиков. Они могут отслеживать всё, что содержит электрический заряд, например, они могут обнаруживать изменения, возникающие при касании пальцами GPIO. Эти контакты могут быть легко встроены в датчики касания и заменять механические кнопки. Емкостные сенсорные контакты также могут быть использованы для пробуждения ESP32 от глубокого сна.

Внутренние сенсорные датчики подключены к этим GPIO:

  • T0 (GPIO 4)
  • T1 (GPIO 0)
  • T2 (GPIO 2)
  • T3 (GPIO 15)
  • T4 (GPIO 13)
  • T5 (GPIO 12)
  • T6 (GPIO 14)
  • T7 (GPIO 27)
  • T8 (GPIO 33)
  • T9 (GPIO 32)

Аналого-цифровой преобразователь (АЦП)

ESP32 имеет входные каналы АЦП 18 x 12 бит. Это GPIO, которые можно использовать в качестве АЦП:

  • ADC1_CH0 (GPIO 36)
  • ADC1_CH1 (GPIO 37)
  • ADC1_CH2 (GPIO 38)
  • ADC1_CH3 (GPIO 39)
  • ADC1_CH4 (GPIO 32)
  • ADC1_CH5 (GPIO 33)
  • ADC1_CH6 (GPIO 34)
  • ADC1_CH7 (GPIO 35)
  • ADC2_12 GPO (0)
  • ADC2_CH2 (GPIO 2)
  • ADC2_CH3 (GPIO 15)
  • ADC2_CH4 (GPIO 13)
  • ADC2_CH5 (GPIO 12)
  • ADC2_CH6 (GPIO 14)
  • ADC2_CH7 (GPIO 27)
  • ADC2_CH8 (GPIO 25)
  • ADC2_CH9 (GPIO 26)

Примечание: контакты ADC2 нельзя использовать при использовании Wi-Fi. Поэтому, если вы используете Wi-Fi и у вас возникают проблемы с получением значения от GPIO ADC2, вы можете вместо этого рассмотреть возможность использования GPIO ADC1, что должно решить вашу проблему.

Входные каналы АЦП имеют разрешение 12 бит. Это означает, что вы можете получить аналоговые показания в диапазоне от 0 до 4095, в которых 0 соответствует 0 В, а 4095 — 3,3 В. У вас также есть возможность установить разрешение ваших каналов в коде, а также диапазон АЦП.

Выводы АЦП ESP32 работают не линейно. Об этом следует помнить при использовании выводов АЦП. Ниже представлен график получемых значений в зависимости от напряжения:

Wrapping Up

We hope you’ve found our analysis ESP32 vs ESP8266 useful.

Just to wrap up the main differences between the ESP32 and ESP8266:

  • The ESP32 is faster than the ESP8266;
  • The ESP32 comes with more GPIOs with multiple functions;
  • The ESP32 supports analog measurements on 18 channels (analog-enabled pins) versus just one 10-bit ADC pin on the ESP8266;
  • The ESP32 supports Bluetooth while the ESP8266 doesn’t;
  • The ESP32 is dual-core, and the ESP8266 is single core;
  • The ESP8266 is cheaper than the ESP32;
  • The ESP8266 has a wider community (although we don’t think that at this point, the difference is that big);
  • For many IoT and Wi-Fi projects, the ESP8266 can do the job for a lower price;
  • Both boards can be programmed with the Arduino core using Arduino IDE or other supported IDEs.
  • Both boards support MicroPython firmware.

You might like reading the following ESP8266 and ESP32 related articles to have an idea of the selection of the most popular ESP32 and ESP8266 development boards:

  • ESP32 Development Boards Review and Comparison
  • Best ESP8266 Wi-Fi Development Board

So, if you’re a beginner, should you get started with the ESP32 or the ESP8266? At this point, we definitely recommend getting started with the ESP32 instead of the ESP8266. However, if you already have an ESP8266 board, you can get started with that board and then make the shift to the ESP32.

We have a vast selection of projects with these boards in the Random Nerd Tutorials blog to help you get started:

  • ESP32 Projects
  • ESP8266 Projects
  • MicroPython with ESP32/ESP8266 Projects

Thanks for reading.

Learn ESP32 with Arduino IDE

Register in our brand new ESP32 course with Arduino IDE. This is our complete guide to program the ESP32 with Arduino IDE, including projects, tips, and tricks! The registrations are open, so sign up now.

Ключевые особенности

  • на базе микросхемы ESP8266
  • 4 МБ встроенной памяти flash
  • последовательный интерфейс UART: 2 вывода (Rx и Tx)
  • Интерфейс SPI
  • Готовность к FCC-сертификации (металлический экран)
  • 17 выводов GPIO, вывод Chip enable, вывод АЦП, вывод Reset
  • встроенная PCB-антенна улучшенной производительности
  • радиоблок 2.4 ГГц соответсвует 802.11 b/g/n
  • поддерживаются режимы WiFi Direct (P2P), soft-AP (точка доступа)
  • встроенный стек TCP/IP
  • встроенные радиокомпоненты, прямое подключение к антенне (TR switch, balun, LNA, усилитель мощности и согласующие цепи внутри чипа)
  • выходная мощность +19.5dBm в режиме 802.11b
  • процессорное 32-битное RISC ядро
  • шифрование WEP, TKIP, AES, and WAPI (в т.ч. поддерживается WPA2)

Как воспроизводить музыку из внутренней памяти ESP32

Во втором примере мы хотим воспроизводить музыку через динамик. Звуковые данные хранятся в виде массива во внутренней RAM ESP32. Мы используем плату аудиоразъема MAX98357 I2S для преобразования цифрового сигнала в аналоговый. Поэтому мы используем протокол I2S для вывода цифровых звуковых данных без потери качества.

На следующем рисунке показана проводка между ESP32 NodeMCU, коммутационной платой MAX98357 I2S и динамиком.

Для кода Arduino мы используем библиотеку ESP8266Audio от Earle F. Philhower. Чтобы включить эту библиотеку в ваш Arduino, выполните 4 шага:

  1. Загрузите папку github в виде zip-файла
  2. разархивируйте загруженную папку
  3. переименуйте распакованную папку в ESP8266Audio
  4. скопируйте папку в путь к вашей библиотеке IDE Arduino (в моем случае: C:\Users\chris\Documents\Arduino\libraries)

Мы используем следующий код Arduino из примеров библиотеки для воспроизведения музыки из внутренней памяти.

#include "AudioGeneratorAAC.h"
#include "AudioOutputI2S.h"
#include "AudioFileSourcePROGMEM.h"
#include "sampleaac.h"

AudioFileSourcePROGMEM *in;
AudioGeneratorAAC *aac;
AudioOutputI2S *out;

void setup() {
  Serial.begin(115200);

  in = new AudioFileSourcePROGMEM(sampleaac, sizeof(sampleaac));
  aac = new AudioGeneratorAAC();
  out = new AudioOutputI2S();
  out -> SetGain(0.125);
  out -> SetPinout(26, 25, 22);
  aac->begin(in, out);
}

void loop() {
  if (aac->isRunning()) {
    aac->loop();
  } else {
    aac -> stop();
    Serial.printf("Sound Generator\n");
    delay(1000);
  }
}

В первых строках мы добавляем следующие заголовочные файлы из библиотеки ESP8266Audio:

  • AudioGeneratorAAC: генератор аудиовыхода с использованием декодера Helix AAC.
  • AudioOutputI2S: базовый класс для интерфейсного порта I2S
  • AudioFileSourcePROGMEM: сохранить «файл» как массив PROGMEM и использовать его как данные источника звука.
  • sampleaac: заголовочный файл, в котором аудиофайл хранится в виде массива

Цифровые звуковые данные хранятся в заголовочном файле sampleaac

Чтобы загрузить код Arduino с файлом заголовка в EPS32, важно, чтобы Arduino (файл .ino) и заголовок (файл .h) находились в одной папке

После того, как мы включили файлы заголовков библиотеки ESP8266Audio, мы даем для первых трех включенных файлов переменные, содержащие ссылки на классы этих файлов.

В функции настройки мы устанавливаем скорость передачи 115200 бод и инициализируем файлы заголовков. Для AudioFileSourcePROGMEM мы определяем, что образец аудиофайла находится в файле sampleaac с размером содержащего его массива.

Объект AudioOutputI2S имеет разные функции. Мы используем функцию SetGain, чтобы уменьшить громкость динамика, и определяем распиновку с помощью функции SetPinout. В моем случае я выбираю следующую распиновку по умолчанию:

  • Последовательные часы (SCK) = 26
  • Выбор слова (WS) = 25
  • Последовательные данные (SD) = 22

Но не стесняйтесь выбирать другие цифровые выводы микроконтроллера EPS32.

Последним шагом функции настройки является подключение входных звуковых данных из внутренней памяти программы к аудиовыходу I2S с помощью AudioGeneratorAAC.

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

Сетевые компоненты I2S

Если есть несколько компонентов I2S, подключенных друг к другу, я называю это сетью I2S. Компоненты сети имеют разные имена, а также разные функции. На следующем рисунке показаны три разные сети, которые я опишу.

На первом изображении у нас есть передатчик, а также приемник. Передатчиком может быть плата ESP NodeMCU, а приемником — плата аудиоразъема I2S, которую мы описываем в следующем разделе. Также у нас есть три провода для подключения устройств I2S.

В этом первом случае передатчик является ведущим, потому что ведущий управляет последовательными линиями синхронизации (SCK) и линиями выбора слова (WS). На втором рисунке мы видим обратное, потому что получатель сообщений I2S также может быть ведущим. Следовательно, линии SCK и WS начинаются от приемника и заканчиваются на передатчике.

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

Во всех сетях I2S есть только одно ведущее устройство. Может быть несколько других компонентов, которые принимают или передают звуковые данные.

Распиновка ESP8266 NodeMCU

С внешним миром ESP8266 NodeMCU соединяют всего 30 выводов. Ниже показана распиновка отладочной платы.

Рисунок 6 – Распиновка ESP8266 NodeMCU

Для простоты мы сгруппируем выводы с аналогичными функциями.

Выводы питания – на плате расположено четыре вывода питания, а именно: один вывод VIN и три вывода 3.3V. Если у вас есть стабилизированный источник напряжения 5 В, вывод VIN можно использовать для непосредственного питания ESP8266 и его периферии. Выводы 3.3V – это выходы встроенного стабилизатора напряжения. Эти выводы могут использоваться для подачи питания на внешние компоненты.

GND – это вывод земли отладочной платы ESP8266 NodeMCU.

Выводы I2C используются для подключения всех видов датчиков и периферийных устройств на шине I2C в вашем проекте. Поддерживаются и I2C Master, и I2C Slave. Работа интерфейса I2C может быть реализована программно, а тактовая частота составляет максимум 100 кГц. Следует отметить, что тактовая частота I2C должна быть выше самой низкой тактовой частоты из ведомых устройств.

Выводы GPIO На ESP8266 NodeMCU имеется 17 выводов GPIO, которые можно назначать программно на различные функции, такие как I2C, I2S, UART, PWM, дистанционное инфракрасное управление, светодиодный индикатор и кнопка. Каждый включенный вывод GPIO может быть настроен либо на внутреннюю подтяжку к земле или к шине питания, либо установлен на высокоимпедансное состояние. При конфигурировании на вход для генерирования прерываний процессора он может быть настроен на срабатывание либо по фронту, либо по спаду.

Вывод ADC подает сигнал на имеющийся в NodeMCU, встроенный 10-разрядный прецизионный аналого-цифровой преобразователь последовательного приближения (SAR ADC). С помощью этого АЦП могут быть реализованы две функции: проверка напряжения питания на выводе VDD3P3 и проверка входного напряжения на выводе TOUT (но не одновременно).

Выводы UART ESP8266 NodeMCU имеет 2 интерфейса UART, то есть UART0 и UART1, которые обеспечивают асинхронную связь (RS232 и RS485) и могут обмениваться данными со скоростью до 4,5 Мбит/с. Для связи можно использовать UART0 (выводы TXD0, RXD0, RST0 и CTS0), который поддерживает управление потоком. UART1 (вывод TXD1) поддерживает только сигнал передачи данных, поэтому он обычно используется для печати журнала событий.

Выводы SPI ESP8266 имеет два интерфейса SPI (SPI и HSPI), поддерживающих и ведомый (slave), и ведущий (master) режимы. Эти интерфейсы SPI также поддерживают следующие функции SPI:

  • 4 режима синхронизации передачи SPI;
  • до 80 МГц и тактовые частоты, полученные делением 80 МГц;
  • до 64 байт FIFO.

Выводы SDIO ESP8266 имеет защищенный цифровой интерфейс ввода/вывода (SDIO, Secure Digital Input/Output Interface), который используется для прямого подключения карт SD. Поддерживаются 4-битный 25 МГц SDIO v1.1 и 4-битный 50 МГц SDIO v2.0.

Выводы PWM На плате имеется 4 канала широтно-импульсной модуляции (PWM). Выход ШИМ может быть реализован программно и использован для управления двигателями и светодиодами. Частотный диапазон ШИМ регулируется от 1000 мкс до 10000 мкс, то есть от 100 Гц до 1 кГц.

Выводы управления используются, как ни странно, для управления ESP8266. Эти выводы включают в себя вывод включения микросхемы EN, вывод сброса RST и вывод пробуждения WAKE.

  • Вывод EN – микросхема ESP8266 включена, когда на вывод EN подается высокий логический уровень. При низком логическом уровне микросхема работает на минимальной мощности.
  • Вывод RST используется для сброса микросхемы ESP8266.
  • Вывод WAKE используется для вывода чипа из глубокого сна.

ESP-Now ESP8266 example code

In this paragraph, we are going to discuss how to exchange data between two ESP8266 devices in a One-to-one configuration where one of the devices is a master while the other is the slave.

This is very simple scenario, where there is a device that sends data and the other one that receives it. We will have two different codes: one for the sender and the another one for the receiver.

ESP-Now ESP8266 Sender source code

The sender source code is shown below:

A brief code description:

  • Line 10: This is the MAC address of the slave. We use this address to send data
  • Line 11-15: The message structure. This is the message we want to send to the ESP-Now peer (or slave). The message can hold several fields (i.e. char, int, float and so on).
  • Line 17-20: The callback function invoked when the message is sent
  • Line 29: The ESP-Now is initialized before using it
  • Line 33: The ESP8266 defines its role. This is the master role
  • Line 36: The code adds the peer to the peer list. In this case, the device, which acts as master, add the other ESP8266 (the slave) using the Mac address. In this way, the two ESP devices can exchange data through the ESP-Now protocol
  • Line 38: We register the callback function that is triggered as soon as the message is sent
  • Line 45: The master sends the message to the other ESP8266 through the ESP-Now

ESP8266 Receiver source code

The receiver code is much more simpler:

  • Line 10-21: This is the callback function triggered when a new message arrives through the ESP-Now protocol
  • Line 35: As in the ESP8266 sender, we have to initialize the ESP-Now protocol
  • Line 42: We register the ESP-Now callback function that will be invoked as soon as a new message arrives to the ESP8266

Платформы разработки для ESP8266

Теперь перейдем к интересным вещам!

Существует множество платформ разработки, которые могут быть оснащены для программирования ESP8266. Вы можете использовать Espruino – JavaScript SDK и прошивка, эмулирующая Node.js, или использовать Mongoose OS – операционную систему для устройств IoT (рекомендуемая платформа от Espressif Systems и Google Cloud IoT), или использовать комплект разработки программного обеспечения (SDK), предоставляемый Espressif. или любую из платформ, перечисленных на .

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

Это дополнение ESP8266 для Arduino IDE основано на работе Ивана Грохоткова и остальной части сообщества ESP8266. Для получения дополнительной информации смотрите репозиторий GitHub ESP8266 Arduino.

Характеристики

  • Wi-Fi
    • Готовность к сертификации: FCC/CE/TELEC/SRRC
    • Протоколы: 802.11 b/g/n/e/i
    • Диапазон частот: 2.4ГГц ~ 2.5ГГц (2400MГц ~2483.5МГц)
  • Мощность передатчика
    • 802.11 b: +20 дБм
    • 802.11 g: +17 дБм
    • 802.11 n: +14 дБм
  • Чувствительность приемника
    • 802.11 b: -91 дБм (11 Мбит/с)
    • 802.11 g: -75 дБм (54 Мбит/с)
    • 802.11 n: -72 дБм (MCS7)
  • Варианты антенны: PCB-антенна (дорожка на плате)
  • Корпус модуля выполнен в соответствии с требования стандарта FCC ( FCC — сертификация модуля не проводилась)
  • Аппаратное обеспечение
    • Процессорное ядро: Tensilica L106 32 разряда
    • Периферийные интерфейсы:
      • UART
      • SPI
    • Диапазон напряжений питания: 2.5В

      3.6В

    • Потребление тока
    • Рабочий диапазон температур: -40°C

      125°C
      Диапазон температур при хранении: -40°C

      125°C

    • Корпус: 16x24x3 мм с 22 краевыми контактами и сквозными монтажными отверстиями у основных контактов
    • Внешние интерфейсы
      • 17 GPIO
      • Chip enable (CH_PD)
      • Reset
      • ADC
Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Семинар по технике
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: