vak: (Улыбка)
[personal profile] vak
esp-12e-side-view

Плата называется ESP12E Devkit, или NodeMCU. Мне она досталась за $10 с сайта ICStation. Построена она основе модуля ESP8266 и проекта eLua. Поддерживает интерфейсы Wi-Fi, GPIO, PWM, UART, SPI, I2C, PWM, 1-wire, ADC, таймеры, имеет файловую систему. Документация и исходники прошивки находятся здесь: https://github.com/nodemcu/nodemcu-firmware

esp-12e

Принципиальная схема: https://github.com/nodemcu/nodemcu-devkit-v1.0/raw/master/NODEMCU_DEVKIT_V1.0.PDF



Плата подсоединяется к компьютеру кабелем microUSB и распознаётся как виртуальный последовательный порт. В Линуксе её видно как:
    $ lsusb
    Bus 007 Device 007: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP210x UART Bridge / myAVR mySmartUSB light

Подключаемся через эмулятор терминала на скорости 9600:
    NodeMCU 0.9.6 build 20150627  powered by Lua 5.1.4

    ESP8266 Started
    Start soft AP
    > _

По бейсиковой традиции, пробуем таблицу квадратов и кубов:
    > for i=2, 10 do
    >> print(i, i*i, i*i*i)
    >> end
    2       4       8
    3       9       27
    4       16      64
    5       25      125
    6       36      216
    7       49      343
    8       64      512
    9       81      729
    10      100     1000
    > _

На логической ножке 0 (сигнал GPIO16) находится светодиод. Пробуем помигать:
    > gpio.mode(0, gpio.OUTPUT)
    > while true do
    >> gpio.write(0, gpio.HIGH)
    >> tmr.delay(500000)
    >> gpio.write(0, gpio.LOW)
    >> tmr.delay(500000)
    >> end

Кучу других примеров смотрите на сайте проекта NodeMCU.

К сожалению, это не MIPS. Это другой 32-битный RISC процессор, называется Tensilica Xtensa LX106. Был бы MIPS, цены бы ему не было. :)

Date: 2015-07-19 15:04 (UTC)
From: [identity profile] 1801bm1.livejournal.com
Ковыряю сейчас этот ESP8266. Это печалька. Изначально микросхема разрабатывалась как WiFi MAC с интерфейсом SDIO/GSPI. Есть 96К RAM данных и 64К RAM инструкций. Также есть 64К ROM в котором прошита устаревшая версия WiFi стека (называют v5). Стек обновили (до v6), появился 802.11n, расширили список режимов шифрования и ресурсов памяти практически не осталось.

Еще у чипа есть возможность исполняться из памяти SPI, точнее часть IRAM можно "отмапить" и она начинает работать как кеш инструкций, считываемых по 4-битному SPI из внешней микросхемки флеш. Тут-то кетайцам (Espressif) и поперло! Они решили сделать такой себе SDK - WiFi стек упрятывают в объектные библиотеки, пишут свою обертку и разрешают писать сторонние прошивки.

В-общем, сказать что оно глючное - значит вообще ничего не сказать. Ресурсов по свободной памяти с каждым новым SDK (с исправлением ошибок) все меньше и меньше. Описание - кетайское (хотя и на английском) - это все что Вам о нем нужно знать.

Но, небольшую поделку с WiFi (типа выключателя или беспроводного датчика) можно сделать действительно быстро. На сайте энтузиастов про ESP8266 ходит заезженная шутка - что ни делай с ESP8266 - получается метеостанция :)

Я использую ESP8266 со своим стеком, с большим трудом вычистил из него кетайский мусор (оставил только WiFi v6 стек и заглушки, и то икается - он без кетайской кооперативной ОС не работает) и сделал из него дешевый MAC по UART.

Date: 2015-07-20 07:45 (UTC)
From: [identity profile] 1801bm1.livejournal.com
У ESP8266 нет внутренней флешпамяти. На модуле стоит собственно ESP8266 (он же перемаркированный ESP8089, возможно только ROM другой), и SPI-флешка от Winbond или аналог. Исполнение кода идет из флешки, то есть оно медленно и печально читается по SPI (40 или 80МГц на 4 бита - макс 40МБ/сек, для 160МГц проца с 24-битным словом инструкции - это пыль), ну правда может кешироваться в части IRAM - там аппаратный механизм есть. Пока можно установить размер кеша 16 или 32К. И к этой кешированной памяти, если нужен не только код (те которые const data) можно обращаться только 32-битными словами, а куча CRT-функций такого не понимает, поэтому народ там извращается с обработчиками исключений (эмулирует побайтовый и 16-битный доступ). В-общем, аппаратура своеобразная весьма и используется не по задуманному при разработке сценарию.