Вы просматриваете архивную страницу сайта. Информация на этой странице может быть устаревшей.
# Кейс 3. Начало
## 3.1. Начинаем работу с Wi-Fi
### Введение
Это полная копия введения, опубликованного в основной ветке курса на сайте [myitacademy.ru](https://myitacademy.ru/edu/mod/book/view.php?id=532).
ESP8266 - это самая популярная и недорогая плата WiFi для начинающих. Появившись в 2014 году, она взорвала рынок своей сверх-низкой ценой и её начали встраивать абсолютно везде. Мы будем ее использовать как учебный пример модуля WiFi - это не значит, что вы будете гарантированно встраивать ее в дальнейшем в свои решения. Какой конкретно чип использовать - выбирается под задачу и ограничения.
Для ESP8266 существует свой собственный SDK и ее тоже можно программировать, поскольку она представляет собой слабый микроконтроллерный модуль с небольшим количеством свободных выводов и весьма ограниченным набором периферии. Так что минимальные задачи можно выполнять и только средствами одного этого чипа. Но мы не будем погружаться в эти детали, поскольку учебная программа не предполагает изучения множества различных SDK, да это и не нужно. Ведь Wi-Fi-модуль можно использовать и как просто интерфейс связи, пользуясь его встроенными AT-командами. Сегодня мы получим необходимые начальные навыки работы с ESP8266 и посмотрим, как использовать ее в связке с внешним микроконтроллером.
План всех лабораторных на эту тему:
1. Подключаемся к ESP8266 и общаемся с ней через терминал
2. Проверяем актуальность прошивки и обновляем её при необходимости
3. Соединяем ESP8266 с STM32, проверяем соединение
4. Смотрим пример WiFi под Mbed
5. Смотрим пример Sockets под Mbed
### Необходимое оборудование
- Плата ~~STM32Nucleo~~ UNWR + UMDK-RF;
- Модуль связи WiFi ESP8266;
- ~~Переходник USB-UART;~~
- WiFi-точка доступа (роутер);
- Соединительные провода (4 штуки).
### Коммуникация с ESP8266 через последовательный порт
Модули связи ESP8266 в нашей лаборатории имеются на платах [WeMos D1 mini](https://docs.wemos.cc/en/latest/d1/).
Нам абсолютно не важно, как будет выглядеть сама плата: последней третьей версии или предыдущей
![wemos_mini_1+1](/assets/images/iot-academy/wemos_mini_1+1.png)
WeMos D1 mini построена на базе 32-разрядного микроконтроллера ESP8266 с интегрированным WiFi модулем (802.11 b/g/n 2.4 ГГц).
Он входит в сборку ESP-12F, установленную на плате (в версиях v.1, v.2) или расположен непосредственно на самой плате в версии v.3.
Так же на плате присутствуют стабилизатор напряжения на 3,3 В, разъем USB типа Micro-USB и USB-UART преобразователь на базе чипа CH340G.
Микроконтроллер ESP8266 работает на тактовой частоте 80 МГц и обладает оперативной памятью RAM данных на 80 КБ (для хранения значений переменных)
и памятью RAM инструкций на 32 КБ. Программы хранятся во flash памяти объемом 4 МБ. На плате доступно 11 цифровых GPIO и
один аналоговый вход (с максимально допустимым уровнен входного напряжения 3,3 В).
В принципе, все выводы на плате обозначены, но, тем не менее, приведём диаграмму их расположения, поясняющую их назначение.
![wemos_pinout](/assets/images/iot-academy/wemos_pinout.png)
Скорее всего, пообщаться с микроконтроллером ESP8266 напрямую сразу не удастся. Всё дело в том, что WeMos D1 mini всё же предназначена для
программирования микроконтроллера ESP8266 при помощи соответствующего SDK, и, очень вероятно, что текущая прошивка не может удовлетворить
требованиям [задания 3.1.2](https://myitacademy.ru/edu/mod/book/view.php?id=532&chapterid=520).
Более того, в составе платы WeMos D1 mini уже есть преобразователь USB-UART, так что дополнительно он нам не потребуется, как и не потребуются (пока) соединительные провода.
### Обновление прошивки ESP8266
Все нижеизложенное - адаптация [задания 3.1.2](https://myitacademy.ru/edu/mod/book/view.php?id=532&chapterid=521),
что же есть пересказ руководства: https://os.mbed.com/teams/ESP8266/wiki/Firmware-Update
Что нужно подготовить из программного обеспечения:
* Самая новая версия прошивки - перейдите на [сайт](https://www.espressif.com/en/support/download/at) и скачайте её.
На приведенной картинке самая новая прошивка - это 1.7.4, но к моменту, как вы будете это читать, возможно, уже выйдет новая версия
![esp8266fw_site](/assets/images/iot-academy/esp8266fw_site.png)
Прошивку со словом IDF в названии лучше не трогать, хотя у нее и указана более свежая версия - она не подходит для большинства отладочных плат на основе ESP,
так как в ней используются разные выводы для прошивки и для коммуникации
* Программа [esptool](https://github.com/espressif/esptool) для прошивки ESP8266.
В терминале установите эту программу
```bash
pip3 install esptool
```
Подключите плату WeMos D1 mini к компьютеру Micro-USB кабелем, и проверьте, обнаруживается ли ваша плата.
Плату WeMos D1 mini (в отличие от просто модуля ESP8266) переводить вручную в режим программирования не нужно, это произойдет автоматически.
```bash
esptool.py --port /dev/ttyUSB0 --baud 115200 flash_id
```
Порт может быть другой - проверьте в `/dev/`, как именно он называется. Если всё правильно, то результат будет примерно такой:
![term-esptool_flash_id](/assets/images/iot-academy/term-esptool_flash_id.png)
Распакуйте архив с прошивкой:
```bash
unzip Загрузки/ESP8266_NonOS_AT_Bin_V1.7.4.zip -d ~
```
и перейдите в каталог с компонентами прошивки
```bash
cd ~/ESP8266_NonOS_AT_Bin_V1.7.4/bin
```
Убедитесь, что в вашем текущем каталоге действительно расположены файлы прошивки, то есть файлы с расширением `.bin`
```bash
ls -la
```
![term-esp8266_ls_bin](/assets/images/iot-academy/term-esp8266_ls_bin.png)
Здесь немного отступление в сторону, почему мы выбираем тот или иной вариант прошивки?
Во-первых, есть 2 варианта собранной прошивки: на 1Мб (урезанная, для слабых устройств) и на 2Мб.
Мы выбираем второй, поскольку у нас как раз плата с 2Мб памяти.
Во-вторых, там есть деление на AT-версию (то, что нужно нам), и на AT+SDIO (для использования линий ввода-вывода).
Второе нам не нужно, поэтому берем вариант AT, на 2 Мб. В Readme-файле есть инструкции, какие файлы и по каким адресам загружать.
Итак, выполните (просто скопируйте и вставьте в терминал):
```bash
esptool.py --port /dev/ttyUSB0 --baud 115200 write_flash --flash_size 2MB-c1 \
0x00000 boot_v1.7.bin 0x1000 at/1024+1024/user1.2048.new.5.bin 0x1FC000 esp_init_data_default_v08.bin \
0x7E000 blank.bin 0x1FE000 blank.bin 0x1FB000 blank.bin
```
Лог будет выглядеть как-то так:
![term-esptool_flash](/assets/images/iot-academy/term-esptool_flash.png)
И завершится всё должно выдачей сообщений
```
Leaving...
Hard resetting via RTS pin...
```
После чего перезагрузите плату нажатием кнопки **Reset** и посмотрите в консоли, какая там теперь версия.
Введите вначале команду `AT` - в ответ получите `OK`. Если ошибетесь и введете несуществующую команду, плата выдаст ответ `ERROR`.
Каждую команду завершайте следующими символами: возврат каретки (**Ctrl+M**) и перенос строки (**Ctrl+J**). Это те самые, которые в ASCII имеют коды `\n` и `\r`.
Затем введите `AT+GMR` - получите информацию о плате. Для указанной в примере версии прошивки должно быть так:
![xterm_esp8266_at](/assets/images/iot-academy/xterm_esp8266_at.png)
Если всё успешно, то удалите за собой "мусор":
```bash
cd ~
rm -rf ESP8266_NonOS_AT_Bin_V1.7.4
rm -rf __MACOSX
rm -rf Загрузки/ESP8266_NonOS_AT_Bin_V1.7.4.zip
```
### Примеры AT-команд
Проделайте работу, описанную в [основной ветке курса](https://myitacademy.ru/edu/mod/book/view.php?id=532&chapterid=522).
[**^ К оглавлению**](iot/samsung/archive/2020)