ESP8266 Witty

Купил для экспериментов плату ESP8266 Witty от китайской компании GizWits - интересная штука из двух независимых плат, прошивается и питается через microUSB.
Вот несколько описаний - https://gregwareblog.wordpress.com/2016/01/10/esp-witty/ , https://blog.the-jedi.co.uk/2016/01/02/wifi-witty-esp12f-board/

Интересное в плате хотя бы то, что просто включив питание через любую телефонную зарядку с microUSB можно телефонным приложением (скачиваем с http://site.gizwits.com/en/developer/resource/demo_app?protoc=WIFI ) настроить подключения модуля к сети Wi-Fi и получить доступ к модулю, например, для управления цветным светодиодом - т.е. прошита она уже для возможности экспериментов.

По разъёмам верхняя плата с модулем esp8266 совпадает с продающимися в Китае 2*8pin платками для ESP-07,12E. Эти платы-переходники, стоит заметить, рассчитаны на питание 3.3В но имеют разводку под стабилизатор в корпусе SOT-89 (GND-IN-OUT, предполагаю что подойдёт XC6214P332PR. Я заказал HT7333-A HT7333 3.3V SOT-89 Low Power Consumption LDO Voltage Regulator), и после запайки стабилизатора нужно удалить перемычку 0 Ом, ведь плата-переходник рассчитана на питание от 3.3В.

Поскольку интересной и важной возможностью для любого будущего устройства является возможность взаимодействия с пользователем, которая обеспечивается лёгкой и удобной настройкой, для начала попробуем реализовать её и сделать основой для будущих проектов (первый будущий проект - http://whatimade.today/esp8266-and-the-water-heater/ , далее интересно было бы сделать клиентскую часть для мониторинга zabbix)

 

Сборка ESP8266 SmartConfig (ESP-TOUCH)

Пример конфигурации есть по ссылке https://tzapu.com/esp8266-smart-config-esp-touch-arduino-ide/ , но он рассчитан на Arduino IDE. Это не наш метод - только полное понимание работы всех частей и компонентов, только хардкор! :)

Всю сборку производим в новом контейнере LXC, для работы устанавливаем необходимые пакеты (на помощь приходит статья https://geektimes.ru/post/241842/ ):

1. Собираем компилятор.


apt-get install wget unrar-free make git autoconf build-essential gperf bison flex texinfo libtool libncurses5-dev gawk \
libc6-dev-i386 python-serial libexpat-dev libtool-bin
sudo mkdir /opt/Espressif sudo chown andrew:root /opt/Espressif cd /opt/Espressif git clone -b lx106 git://github.com/jcmvbkbc/crosstool-NG.git cd crosstool-NG ./bootstrap && ./configure --prefix=`pwd` && make && make install ./ct-ng xtensa-lx106-elf ./ct-ng build PATH=$PWD/builds/xtensa-lx106-elf/bin:$PATH

Скачиваем SDK

mkdir /opt/Espressif/ESP8266_SDK
cd /opt/Espressif/ESP8266_SDK
wget https://github.com/esp8266/esp8266-wiki/raw/master/sdk/esp_iot_sdk_v1.2.0_15_07_03.zip
unzip esp_iot_sdk_v1.2.0_15_07_03.zip && esp_iot_sdk_v1.2.0_15_07_03.zip
mv esp_iot_sdk_v1.2.0/* . && rm -r esp_iot_sdk_v1.2.0

 

Добавляем библиотеки libc, libhal и заголовочные файлы в SDK

cd /opt/Espressif/ESP8266_SDK
wget -O lib/libc.a https://github.com/esp8266/esp8266-wiki/raw/master/libs/libc.a
wget -O lib/libhal.a https://github.com/esp8266/esp8266-wiki/raw/master/libs/libhal.a
wget -O include.tgz https://github.com/esp8266/esp8266-wiki/raw/master/include.tgz
tar -xvzf include.tgz && rm include.tgz

 

Установка ESP image tool

ESP tool можно собрать из исходников, для Linux можно скачать здесь
для Debian/Ubuntu здесь
Готовый пакет для Ubuntu качаем отсюда

cd /opt/Espressif/
wget https://github.com/esp8266/esp8266-wiki/raw/master/deb/esptool_0.0.2-1_i386.deb
sudo dpkg -i esptool_0.0.2-1_i386.deb && rm esptool_0.0.2-1_i386.deb

Установка ESP upload tool

cd /opt/Espressif
git clone https://github.com/themadinventor/esptool esptool-py
sudo ln -s $PWD/esptool-py/esptool.py crosstool-NG/builds/xtensa-lx106-elf/bin/
sudo ln -s $PWD/esptool-py/esptool.py /usr/sbin/

Теперь можно что-то собирать, например тестовые прошивки.

Для начала откроем файл /opt/Espressif/ESP8266_SDK/include/osapi.h и закомментируем строку #include «user_config.h»

Скачиваем и собираем примеры blinky и basic_example:

cd /opt/Espressif/ESP8266_SDK/examples/
wget https://github.com/esp8266/source-code-examples/archive/master.zip && unzip master.zip && rm -r master.zip
mv source-code-examples-master/* . && rm -r source-code-examples-master
cd blinky
make


Сборка с последними версиями SDK будет с ошибкой

undefined reference to `user_rf_pre_init'

Т.е. нам необходима эта функция для корректной линковки, и поэтому её реализацию нужно добавить в исходный код, т.е. в файл usr/user_main.c:

void user_rf_pre_init(void)
{
}

Если все шаги были сделаны правильно, то сборка пройдет без ошибок и в каталоге firmware появятся 2 файла прошивки 0x00000.bin и 0x40000.bin

Для работы с UART он должен быть предварительно инициализирован:

// Initialize UART0
uart_div_modify(0, UART_CLK_FREQ / 115200);

 

Строка компиляции исходников нового проекта
PATH=/opt/Espressif/crosstool-NG/builds/xtensa-lx106-elf/bin:$PATH ESPTOOL=/opt/Espressif/esptool-py/esptool.py make

а залить простой командой

PATH=/opt/Espressif/crosstool-NG/builds/xtensa-lx106-elf/bin:$PATH ESPTOOL=/opt/Espressif/esptool-py/esptool.py make flash

 

Теперь работать с подключенным модулем можно используя esptool.py:

sudo ./esptool.py --port /dev/ttyUSB0 read_flash 0x0 0x80000 Witty.0x0

 

 

 

 

Вот эти ссылки не знаю к чему, но оставил:

Далее скачиваем SDK https://github.com/esp8266/Arduino

https://github.com/EspressifApp

 

 

 

Интересное предложение с автоматическим сбором прошивок - http://wifi-iot.com/ , нужно будет присмотреться

 

================

А это неверный путь:

Далее по по ресурсам с сайта производителя - http://espressif.com/products/software/esp-touch/resources

wget -S -c -O flash_download_tools_v2.4_150924.rar "http://espressif.com/en/file/598/download?token=HJo5hC2N"

wget -S -c -O esptouchandroid-apk_v0.3.4.3_0.rar "http://espressif.com/en/file/593/download?token=OGfiT646"

wget -S -c -O esptouchandroid_v0.3.4.3_0.rar "http://espressif.com/en/file/594/download?token=ir3STJ44"

 

 

wifi, esp8266, witty, sdk