====== WiFi Slot: распиновка, схема подключения и программирование ======
[[amp>product/wifi-slot?utm_source=man&utm_campaign=wifi-slot&utm_medium=wiki|WiFi Slot]] — платформа для быстрой разработки компактных устройств с Wi-Fi на борту. Мозгом платы выступает модуль ESP-12 с чипом ESP8266EX от Espressif.
{{ :wifi-slot:wifi-slot.4.jpg?nolink |}}
===== Обзор платы =====
{{youtube>D6vL-kZwS_c?large}}
===== Общие сведения =====
WiFi Slot содержит на борту всё необходимое для быстрой и комфортной работы: USB-разъём для программирования и отладки, десять цифровых входов/выходов с поддержкой ШИМ-сигнала (восемь из которых восемь могут использоваться как аналоговый вход) и две служебные кнопки.
Больше нет нужды нажимать специальные кнопки при каждой прошивке. Специальная схема вводит плату в режим программирования при прошивке через USB-разъём.
Родным напряжением чипа является 3,3 В. Мы установили на плату мощный DC-DC преобразователь, который позволяет запитать плату от 5 В при помощи USB, Power Bank или Li-Ion-аккумулятора. Понижающий преобразователь обеспечит нагрузку током до 1 А. Забудьте о глюках при нехватке питания от маломощных регуляторов напряжения — тока хватит всем.
WiFi Slot позволяет подключить до четырёх [[amp>collection/troyka?utm_source=man&utm_campaign=wifi-slot&utm_medium=wiki |Troyka-модулей]]. Используемые пины для связи сенсоров и модулей с WiFi Slot зависят от конкретного устройства, точнее: от типа его коммуникации, сигнала и протокола. Обратитесь к странице с [[:troyka-modules|обзором сенсоров]], чтобы определить как организована коммуникация с каждым устройством. После чего можно приступать к работе с модулем.
Платформа программируется двумя способами:
* [[:products:wifi-slot#программирование_на_c|На языке C++ при помощи Arduino IDE.]]
* [[:products:wifi-slot#программирование_на_javascript|На языке Javascript через Espruino IDE.]]
===== Программирование на C++ =====
{{ :wifi-slot:wifi-slot_c.png?nolink |}}
- Для начала работы с платформой WiFi Slot на языке C++ [[articles:arduino-ide-install|скачайте и установите]] на компьютер интегрированную среду разработки Arduino IDE.
- По умолчанию среда программирования настроена только на AVR-платы. Для платформы WiFi Slot добавьте в менеджере плат [[:articles:arduino-boards-manager#платформы_на_модуле_esp8266|поддержку платформ на модуле ESP8266]].
- В пункте меню
//Инструменты//
//Плата//
//Amperka WiFi Slot//.{{ :wifi-slot:wifi-slot_arduino_ide1.png?nolink |}}
После выполненных действий платформа WiFi Slot готова к программированию через Arduino IDE.
Подробности о функциях и методах работы WiFi Slot (ESP8266) на языке C++ читайте на [[https://arduino-esp8266.readthedocs.io|ESP8266 Arduino Core’s]].
==== Пример работы ====
В качестве примера повторим первый эксперимент [[:конспект-arduino:светильник-с-управляемой-яркостью|«Маячок»]] из набора [[amp>product/matryoshka-z?utm_source=man&utm_campaign=wifi-slot&utm_medium=wiki|Матрёшка]]. Для этого установите [[amp>product/troyka-5mm-led-module?utm_source=man&utm_campaign=troyka-slider&utm_medium=wiki|светодиод 5 мм (Troyka-модуль)]] в пин ''A2''. После чего прошейте платформу кодом ниже.
// пин подключения светодиода
#define LED_PIN A2
void setup() {
// настраиваем пин светодиода в режим выхода
pinMode(LED_PIN, OUTPUT);
}
void loop() {
// подаём на пин светодиода «высокий уровень»
digitalWrite(LED_PIN, HIGH);
// ждём одну секунду
delay(1000);
// подаём на пин светодиода «низкий уровень»
digitalWrite(LED_PIN, LOW);
// ждём одну секунду
delay(1000);
}
После загрузки светодиод начнёт мигать раз в полсекунды.
{{ :wifi-slot:wifi-slot_blink_red.gif?nolink |}}
Это значит всё получилось и можно смело переходить к [[мини-проекты-arduino-breadboard:оглавление|экспериментам]] на WiFi Slot.
===== Программирование на JavaScript =====
{{ :wifi-slot:wifi-slot_js.png?nolink |}}
- Для старта с платформой WiFi Slot на языке JavaScript [[:js:ide|скачайте и установите]] интегрированную среду разработки — Espruino Web IDE.
- [[:js:espruino:esp8266|Установите прошивку интерпретатор JavaScript на ESP8266]].
Подробнее о функциях и методах работы ESP8266 на языке JavaScript читайте на [[http://www.espruino.com/EspruinoESP8266|Espruino]].
При программировании платформы через Espruino IDE используйте имена пинов модуля ESP-12. Например пину ''A2'' равносильно название ''D16''. Для информации изучите [[:wifi-slot#распиновка]] платформы.
==== Пример работы ====
В качестве примера повторим второй эксперимент [[:yodo#маячок|«Маячок»]] из набора [[amp>product/yodo?utm_source=man&utm_campaign=wifi-slot&utm_medium=wiki|Йодо]]. Для этого установите [[amp>product/troyka-5mm-led-module?utm_source=man&utm_campaign=wifi-slot&utm_medium=wiki|светодиод 5 мм (Troyka-модуль)]] в пин ''D16''. После чего прошейте платформу скриптом ниже.
// создаём объект для работы со светодиодом на пине D16
var led = require('@amperka/led').connect(D16);
// мигаем светодиодом каждые полсекунды
led.blink(0.5, 0.5);
После загрузки светодиод начнёт мигать раз в полсекунды.
{{ :wifi-slot:wifi-slot_blink_green.gif?nolink |}}
===== Элементы платы =====
{{ :wifi-slot:wifi-slot_annotation.png?nolink |}}
==== Мозг платформы ====
WiFi Slot основан на модуле {{:wifi-slot:esp-12f_datasheet.pdf|ESP-12}} с чипом {{:wifi-slot:esp8266_datasheet.pdf|ESP8266EX}} от Espressif.
{{ :wifi-slot:wifi-slot_composed.png?nolink |}}
=== Чип ESP8266EX ===
Чип {{:wifi-slot:esp8266_datasheet.pdf|ESP8266}} — выполнен по технологии SoC (англ. System-on-a-Chip — система на кристалле). В основе кристалла входит процессор семейства Xtensa — 32-х битный Tensilica L106 с частой 80 МГц с ультранизким энергопотреблением, радиочастотный трансивер с физическим уровнем WiFi IEEE 802.11 b/g/ и блоки памяти SRAM. Мощности процессорного ядра хватает для работы сложных пользовательских приложений и цифровой сигнальной обработки.
Программное приложение пользователя должно храниться на внешней микросхеме Flash-памяти и загружаться в ''ESP8266EX'' через один из доступных интерфейсов (SPI, UART, SDIO и др.) каждый раз в момент включения питания системы.
Чип ESP8266 не содержит в себе Flash-память и многих других компонентов для пользовательского старта. Микросхема является основой на базе которой выпускаются модули с необходимой периферией, например ESP-12.
=== Модуль ESP-12 ===
ESP-12 — модуль с чипом ''ESP8266EX'', Flash-памятью на 2 МБ и всей необходимой обвязкой, которые спрятаны под металлическим кожухом.
Рядом с кожухом расположен индикаторный светодиод и миниатюрная антенна из дорожки на верхнем слое печатной платы в виде змейки. Металлический кожух экранирует компоненты модуля и тем самым улучшает электромагнитные свойства.
{{ :wifi-slot:esp12_without_cap_annotation.png?nolink |}}
==== Разъём micro-USB ====
Разъём micro-USB предназначен для прошивки платформы WiFi Slot с помощью компьютера.
==== Преобразователь USB-UART ====
Преобразователь USB-UART на микросхеме {{:wifi-slot:cp2102_datasheet.pdf|CP2102}} обеспечивает связь модуля ESP-12E с USB-портом компьютера. При подключении к ПК — WiFi Slot определяется как виртуальный COM-порт.
==== Понижающий DC-DC ====
Понижающий DC-DC {{:wifi-slot:ncp1529_datasheet.pdf|NCP1529}} с выходом 3,3 вольта, обеспечивает питание микроконтроллера. Максимальный выходной ток составляет 1 А.
==== Светодиодная индикация ====
^ Имя светодиода ^ Назначение ^
| PWR |Индикатор питания |
| RX и TX |Мигают при обмене данными между WiFi Slot и компьютером.|
==== Аналоговый мультиплексор ====
Модуль ESP-12 имеет только один 10-битный аналоговый вход, который способен измерять напряжение от нуля до одного вольта. Мы расположили на плате аналоговый мультиплексор {{:wifi-slot:74hc4052d_datasheet.pdf|74HC4052D}} с селектором выбора каналов на микросхеме {{:wifi-slot:sn74hc393_datasheet.pdf|SN74HC393}}. А резисторный делитель поднимает верхний порог измеряемого напряжения до 3,3 В. Всё это даёт платформе WiFi Slot восемь аналоговых портов.
==== Кнопка RESET ====
Кнопка предназначена для ручного сброса прошивки — аналог кнопки ''RESET'' обычного компьютера.
==== Кнопка PROG ====
Кнопка служит для ручного перевода модуля в режим прошивки:
- Зажмите кнопку ''PROG'';
- Нажмите и отпустите кнопку ''RESET'';
- Отпустите кнопку ''PROG''
При использовании с Arduino IDE проводить эту процедуру необязатьельно. Специальная схема на плате сделает всё за вас.
==== Разъём Slot Connector ====
Вы можете подключить к WiFi Slot одну или несколько плат расширения [[amp>product/wifi-slot-expander?utm_source=man&utm_campaign=wifi-slot&utm_medium=wiki|Slot Expander]]. Плата управляется через интерфейс I²C и предоставляет 10 дополнительных пинов ввода/вывода, 9 из которых поддерживают АЦП и ШИМ. Slot Expander физически подключается через специальный разъём с переходником [[amp>product/wifi-slot-connector?utm_source=man&utm_campaign=wifi-slot&utm_medium=wiki|Slot Connector]].
=== Распиновка разъёма ===
{{ :wifi-slot:wifi-slot_connector.png?nolink |}}
^ Имя контакта ^ Назначение ^
| 5V |питание|
| GND |земля|
| SDA |линия данных I²C|
| SCL |линия синхронизации I²C|
Подробнее о Slot Expander читайте [[:продукты:wifi-slot-expander|в соответствующей статье]]
===== Распиновка =====
{{ :wifi-slot:wifi-slot_pinout.png?nolink |}}
==== Пины питания ====
* **5V:** На вывод поступает напряжение 5 В от разъёма micro-USB.
* **3.3V:** На вывод поступает 3,3 В от понижающего DC-DC преобразователя на плате. Преобразователь обеспечивает питание модуля ''ESP-12''. Максимальный ток — 1 А.
* **GND:** Выводы земли.
==== Пины ввода/вывода ====
В отличии от большинства плат Arduino, родным напряжением платформы WiFi Slot является 3,3 В, а не 5 В. Выходы для логической единицы выдают 3,3 В, а в режиме входа ожидают принимать не более 3,3 В. Большее напряжение может повредить модуль!
Будьте внимательны при подключении периферии: убедитесь, что она может корректно функционировать в этом диапазоне напряжений.
* **Цифровые входы/выходы:** 10 пинов; ''A0''–''A7'', ''SDA(2)'' и ''SCL(0)''\\ Логический уровень единицы — 3,3 В, нуля — 0 В. Максимальный ток выхода — 12 мА. К контактам подключены подтягивающие резисторы, которые по умолчанию выключены, но могут быть включены программно.
* **ШИМ:** 10 пинов; ''A0''–''A7'', ''SDA(2)'' и ''SCL(0)''\\ Позволяет выводить аналоговые значения в виде ШИМ-сигнала. Разрядность ШИМ – 10 бит.
* **АЦП:** 8 пинов; ''A0''–''A7''\\ Позволяет представить аналоговое напряжение в виде числа. Разрядность АЦП установлена в 10 бит. Изменить разрядность АЦП нельзя. На аналоговые входы WiFi Slot можно подавать напряжение в диапазоне от 0 до 3,3 В. При подаче большего напряжения модуль может выйти из строя.
* **TWI/I²C:** пины ''SDA'' и ''SCL''\\ Для общения с периферией по интерфейсу ''I²C''. Для работы используйте библиотеки для [[https://www.arduino.cc/en/Reference/Wire|Arduino]] и [[js:i2c|Espruino]].
* **SPI:** пины ''A3(MOSI)'', ''A7(MISO)'' и ''A5(SCK)''\\ Для общения с периферией по интерфейсу ''SPI''. Для работы — используйте библиотеки для [[https://www.arduino.cc/en/Reference/SPI|Arduino]] и [[js:spi|Espruino]].
* **UART:** пины ''A0(RX)'' и ''A1(TX)''\\ Используется для коммуникации платы WiFi Slot с компьютером или другими устройствами по интерфейсу ''UART''. Для работы — используйте библиотеки [[https://www.arduino.cc/en/Reference/Serial|Arduino]] или [[js:serial|Espruino]].
Чтобы иметь возможность подключать модули с аналоговым входом к пинам ''A0'' и ''A1'' и при этом не мешать прошивке через ''UART'', разрежьте соответствующие перемычки на задней стороне WiFi Slot.
===== Принципиальная и монтажная схемы =====
{{:wifi-slot:wifi-slot_schematic.png?direct&350 |}}
{{ :wifi-slot:wifi-slot_layout.png?direct&300|}}
===== Характеристики =====
* Модуль: ESP-12 (ESP8266)
* Тактовая частота: 80 МГц, 160 МГц
* Объём Flash-памяти: 2 МБ
* Беспроводной интерфейс: Wi-Fi 802.11 b/g/n 2,4 ГГц
* Режимы работы:
* Клиент (STA)
* Точка доступа (AP)
* Клиент + Точка доступа (STA + AP)
* Портов ввода-вывода всего: 10
* Портов с АЦП: 8
* Разрядность АЦП: 10 бит
* Портов с ШИМ (Программный): 10
* Разрядность ШИМ: по умолчанию 10 бит
* Аппаратных интерфейсов SPI: 1
* Программных интерфейсов I²C / TWI: 1
* Аппаратных интерфейсов UART / Serial: 2
* Номинальное рабочее напряжение: 3,3 В
* Максимальный ток с шины 3.3V: 1 А (включая питание микроконтроллера)
* Максимальный ток с пина или на пин: 12 мА
* Габариты: 50,8×50,8 мм
===== Ресурсы =====
* [[amp>product/wifi-slot?utm_source=man&utm_campaign=wifi-slot&utm_medium=wiki|Wi-Fi Slot]] в магазине.
* [[https://arduino-esp8266.readthedocs.io|Методы и функции на языке C++ через Arduino IDE (Eng)]]
* [[http://wikihandbk.com/wiki/ESP8266|Методы и функции на языке C++ через Arduino IDE (Rus)]]
* [[http://www.espruino.com/EspruinoESP8266|Методы и функции на языке JavaScript через Espruino IDE (Eng)]]
* [[js:start|Методы и функции на языке JavaScript через Espruino IDE (Rus)]]
* [[https://github.com/amperka/hardware-drawings/blob/master/wifi-slot.svg|Векторное изображение Wi-Fi Slot]]
* {{:wifi-slot:esp-12f_datasheet.pdf|Datasheet на плату-модуль ESP-12}}
* {{:wifi-slot:esp8266_datasheet.pdf|Datasheet на чип ESP8266EX}}
* {{:wifi-slot:cp2102_datasheet.pdf|Datasheet на USB-UART преобразователь}}
* {{:wifi-slot:ncp1529_datasheet.pdf|Datasheet на понижающий DC-DC преобразователь}}
* {{:wifi-slot:74hc4052d_datasheet.pdf|Datasheet на аналоговый мультиплексор}}
* {{:wifi-slot:sn74hc393_datasheet.pdf|Datasheet на селектор выбора канала АЦП}}
* [[:продукты:esp8266:flash-download-tool|Программа для перепрошивки модуля ESP-12]]
* {{:wifi-slot:esp8266-2.4.1-amperka.zip|Архив для Arduino IDE}}
* {{ :wifi-slot:espruino_v2.01_2mb_combined.zip |Прошивка Espruino v2.01 для WiFi Slot}}