Авторизация
Зарегистрироваться

WT32-ETH01, маленькая плата c ESP32 + Ethernet

  • Цена: 13$ (брал за 10.5)

Небольшая плата на контроллере ESP32, с интегрированным WiFi и поддержкой Ethernet (на платах с ESP32 нечасто встречается).
Может работать управляющим устройством для чего нибудь, контролируемым дистанционно, через локальную сеть или интернет.
Хотелось оценить, что могут дать готовые прошивки, без программирования, и можно ли такой платой заменить одноплатник на Linux.
Тем не менее, плата не является законченным изделием и руками поработать придется — датчики и исполнительные механизмы надо подключить.
Много текста и мало картинок.

Про покупку

Продавец по ссылке, на момент покупки был самым дешевым вариантом, и был без рейтинга, За месяц продавец успел поднять цену и показать низкий рейтинг. Тем не менее у меня к нему претензии нет, и он даже адекватно отвечает на вопросы.

Длинное теоретическое вступление


Про микроконтроллер ESP32 фирмы Espressif Systems уже очень много написано, и уже создано очень много проектов.
Небольшая микросхема, а внутри напихано много всего, включая WiFi и Bluetooth, то есть, радиочастотная часть, раз и навсегда спроектированная специалистами, и испортить ее работу довольно трудно — хотя, антенну еще, надо как-то подключить.
Даже встроенный стабилизатор питания есть. И еще нужно внешнюю flash-память подключить, и, опционально, внешнюю оперативную память, но и встроенной оперативки тоже немало — суммарно 320 КБ.
Можно просто взять готовый модуль, которых разработано много, напаять его на плату и развести перефeриию. Получаем компактное, довольно таки малопотребляющее устройство, с доступом в локальную сеть и Интернет.При этом поддержаны самые распространённые стандарты, и не надо никаких особых шлюзов: все работает с большинством смартфонов, планшетов, ноутбуков, ПК.
Всяких периферийных блоков у ESP32 так же в изобилии: UART, SPI, I2C, I2C, ADC, DAC, IR, PWM.
Все выводы именуются в виде GPIO00-GPIO39 и, в общем, назначение функций каждого вывода происходит программно.

Менее известные факты:

— В микросхему встроен простой, но полноценный сопроцессор ULP (Ultra-Low-Power — сверхнизкого потребления) который работает, когда основной процессор ESP32 выключен. Этот сопроцессор имеет свою систему команд, и свой набор утилит для программирования.
— Для отладки может применятся интерфейс JTAG. На рассматриваемой плате «наружу» не выведен один из сигналов для JTAG, поэтому этот интерфейс не трогаем.
— В микросхему встроен интерфейс CAN, который традиционно требует дополнительной микросхемы преобразования уровней.
— В микросхему частично встроен интерфейс Ethernet (т.н. MAC). для реализации интерфейса, помимо разъема, требуется дополнительная микросхема (т.н. PHY) и их сущеcтвует несколько разных, от разных производителей.
— В микросхеме находится довольно большой объем постоянной памяти, в которой находится загрузчик.После «сброса» микросхемы этот загрузчик стартует и опрашивает состояние пяти GPIO. В зависимости от их состояния, загрузчик начинает либо грузить прошивку из flash памяти (а она состоит из нескольких частей), либо входит в режим прошивки через интерфейс UART, для этого к плате подключается преобразователь USB -> UART (на других платах он встроенный).
Принимаем за должное, что у любого самодельщика есть такой преобразователь, и не один, и он уже знает как им пользоваться и какому COM порту он подключен.

Плата сама по себе, и как к ней подключатся.


Сама плата, именуемая WT32-ETH01 от производителя с условным названием Wireless-tag. Если верить сайту производителя, то он выпускает модули на ESP32. В том числе — с лейблом Espressif :) И много чего еще. Рассматриваемая плата основана на модуле WT32-S1. Сайт вообще довольно мутный, но там можно скачать базовую документацию на эти модуль и плату. В документации есть кое-какая полезная информация: характеристики, распиновки. Из них становится понятно, что на плате размещены 4MB flash-памяти и микросхема PHY для Ethernet — LAN8720A.
Все сигналы с ESP32, которые выведены наружу сокращенно именуются как IO00-IO39.
Остальные — жестко завязаны на функционированиe Ethernet. Большинство сигналов подключено по типовой схеме.

Подключение для прошивки делается так:
RXD0: TXD UART
TXD0: RXD UART


Для того чтобы прошить плату нужно замкнуть джампером нужные выводы (IO0 на GND) и передернуть питание либо «сбросить» ESP32 через вывод EN (коротко замкнуть EN на GND), и после этого взаимодействовать по UART. Каждый раз при прошивке.
Если сперва необходимо стереть всю flash-память, то после этой операции ESP32 нужно еще раз «сбросить», а потом уже прошивать.
На большинстве других плат этот процесс автоматизирован: GPIO00 и EN управляются сигналами соответственно DTR UART и RTS UART.
Конкретно для WT32-ETH01 нельзя все время подавать на IO0 «0» или «1». Для прошивки IO0 нужно «освободить», так как на этот же вход еще и подается тактовая частота 50Мгц с расположенного на плате генератора. Так же на плате реализовано управление работой этого генератора посредством GPIO16. Если там логическая «1» то по тактовая частота подается как на IO0, так и на LAN8720A. В режиме прошивки там «0» — частота не генерируется, ничего не «коротит», и нет риска что режим прошивки «сам по себе» запустится. На других платах с Ethernet тактовую частоту ESP32 может генерировать самостоятельно, причем это могут быть как GPIO00 в режиме выхода, но так же GPIO16 или GPIO17. Управление питанием может быть, например на GPIO12. Либо вообще не реализовано.
Сигнал RTS подавать на EN, в принципе ничего не мешает, но иногда придется все таки вручную «сбрасывать».
И еще, особая тонкость: микросхема PHY может иметь свой логический адрес, от 0 до 31. Конкретно у LAN8720A этот адрес либо 0, либо 1, (этот адрес задается «железно» одним из выводов LAN8720A). Конкретно на WT32-ETH01 — это адрес 1. А у большинcтва других плат — 0.

Такие вот тонкости реализации приводят к тому, что прошивки надо программно конфигурировать под каждое схемотехническое решение отдельно.
Поэтому запомним магические слова:
PHY type: 0 — LAN8720A (LAN8710)
PHY addr: 1
PHY power (pin): 16
PHY clock: 0 — CLOCK_GPIO0_IN


Так же на плате есть выводы:
RXD — GPIO5
TXD — GPIO17

К ним, в принципе, так же можно подключать UART, но они более интересны тем что к ним подключены два светодиода (инверсно) и этими светодиодами можно помигать.
Выход LNK подключен к соовт. выводу LAN8720A для индикации состояния подключения Ethernet, т.е. программно им управлять не получится.

Софт для ПК


Официальных прошивальщиков два:
1) esptool который работает из командной строки «откуда угодно», так как написан на Python (esptool.py), но ее можно найти и в виде исполняемого файла Windows (esptool.exe).
2) Flash dowload tool, с графическим интерфейсом, который работает под Windows.
Как уже говорилось выше, прошивка может состоять из нескольких файлов, каждый из которых прошивается по определенному адресу в памяти. И эти адреса — нужно знать, у каждой прошивки есть свои тонкости в этом вопросе.
У сложных прошивок есть свой прошивальщик, который эти адреса знает, но «внутри» них обычно содержится тот же esptool, в целом они малополезны.
Так же создатели прошивки могут привести свои рекомендации по прошивке, обычно это esptool с параметрами.

Еще пригодится программа-терминал.
Для оригинальной прошивки, а также некоторых других лучше будет воспользоваться программой Putty — c последовательным портом она тоже работает, при этом Putty «знает» коды переключения цветов в текстовом режиме и протокол работы ESP32 будет разноцветным. Но у Putty есть такая тонкость — по нажатию «Enter» передается код [CR], а некоторые прошивки требуют в конце команды исключительно код [LF].
В этом случае более удобна будет программа Termite, которая хорошо заточена на работу именно с COM портом, либо Terminal by Br@y++, но они только под Windows.
Для Linux есть gtkterm.

Оригинальная прошивка


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

В документации написано, что плата по умолчанию прошита якобы типовой прошивкой ESP-AT, исполняющей т.н. AT-команды, которые на плату передаются по интерфейсу UART. При этом общение с ESP32 в форме текстового диалога с командами и ответами, якобы они стандартные.
Для работы с оригинальной прошивкой, USB->UART необходимо подключится к другим контактам:
RXD: TXD UART
TXD: RXD UART


Попытки взаимодействия с предустановленной прошивкой вызывают большую печаль. Перечень команд конкретно для данной прошивки находится не сайте производителя, а у Seed studio. И этот файл — просто перевод гуглом с китайского на английский. Собственно команд в этом файле (и прошивке) очень мало: никакого управления Bluetooth, периферией, можно только байты по Wifi и Ethernet попередавать. Фактически, даже команды из этого файла не всегда работают, все очень малоинформативно.
На самом деле, подробный протокол работы модуля выводится все на тот же TXD0, если подключить туда usb-uart, то можно увидеть много интересного.

Оригинальная прошивка поддерживает режим «обновления по воздуху» — OTA. Для обновления сперва нужно AT-командами заставить запомнить IP адрес роутера с интернетом. После чего, нужно замкнуть джемпером IO2 на GND и сделать «сброс» платы. Плата помигает светодиодами, но признаков обновления не выскажет.
А вот в протоколе будет что видно, что плата лезет на сервер обновлений к некой софтверный фирме, и более свежей прошивки там не находит. Надо что-то делать своими силами.

Собрать свежую официальную прошивку ESP-AT получилось только под Linux, процедура сборки прошивки немного нестандартная. Но прошивку эту мало просто собрать, ее еще нужно «допилить» для работы с рассматриваемой платой! Интересно, конечно, протестировать возможности ESP32, но практического смысла в этом мало.

Специализированные прошивки


Собственно говоря, за границами обзора остались большое число прошивок ESP32, которые работу с Ethernet не поддерживают вообще, ну или надо ее «прикручивать», к тому же для масштабного проекта на рассматриваемой плате маловато GPIO. А так, есть и системы управления станками, 3D принтерами, и всякие языки программирования.

Хорошо работать с WT32-ETH01 «научились» в первую очередь системы управления «умным» домом, или еще чем нибудь «умным». Они позволяют через сеть (Интернет) опрашивать разнообразные датчики и управлять различными нагрузками — как через браузер, так и, при помощи стандартных протоколов mqtt и modbus, из систем управления более высокого уровня. И их несколько:

1)ESPeasy Mega
Прошивка, кажется, больше ориентированная чтобы подключать разнообразные датчики и передавать их по большому количеству протоколов, не только mqtt. Я не заметил возможности просто «поморгать светодиодом» ни с WEB-интерфейса, ни при помощи протоколов.
Прошивка предлагается откомпилированной в нескольких версиях: test, custom, normal, которые отличаются количеством поддерживаемых датчиков.
Естественно, для платы с Ethernet нас интересуют версии прошивки с -ETH в названии.Прошивки "-factory" в конце названия предназначены для прошивки в «чистую» систему, с адреса в 0x0000, без "-factory" — для обновления, либо по OTA, либо для прошивки по адресу 0x1000.
По умолчанию Ethernet в прошивке отключен, нужно ее настроить на подключение к WiFi (роутеру или точке доступа), зайти в WEB-интерефейс, и там настроить Ethernet.
После перезагрузки, прошивка либо «увидит» Ethernet, либо подключит WiFi — это меняется в настройках.
Одна проблема — надо задать SSID и пароль для WiFi. Официально для этого предназначена утилита ESP easy flasher. Но утилитка уж больно чуднАя. Для начала она попросит вручную установить в систему пару шрифтов (из ее папки). После чего она попробует стереть память ESP32, прошить прошивку и сделать первоначальные настройки, в автоматическом режиме. А если автоматического режима на плате нет, поэтому придется мудрить с настройками и сбросом.
espeasy flasher
Но есть способ проще — нужно использовать Termite, не уверен что это получится с другими программами.
Прошивка, хотя и будет постоянно требовать подключения WiFi (постоянно писать в лог WiFi connecting...), но команды воспринимает.
Команды:
WifiSSID test
WifiKey 12345678
wificonnect

настроят работу WiFi, девайс получит адрес по DHCP и по этому адресу будет доступен WEB-интерфейс с настройками, в т.ч. Ethernet.
Так же ESPeasy умеет запустить свою точку доступа для настройки.
Но главное, чтобы стал доступен WEB-интерфейс, в котором можно задать настройки Ethernet, после чего этот интерфейс станет приоритетным.
espeasy Ethernet settings

2)Tasmota
Прошивка так же позволяет подключить всякие датчики, но главное — исполнительные устройства, и управлять ими не только через mqtt, но и через браузер. Можно, например, «ползунком» управлять яркостью светодиодов на WT32-ETH01.
В «базовой комплектации» Tasmota c Ethernet не работает — опция отключена. Нужно ее включить и скомпилировать прошивку. К счастью, один добрый человек периодически делает это за нас. Нужно только скачать файлы:
https://github.com/Jason2866/Tasmota-specials/raw/firmware/firmware/tasmota32/other/tasmota32-Ethernet.bin
https://github.com/Jason2866/Tasmota-specials/raw/firmware/firmware/tasmota32/ESP32_needed_files/boot_app0.bin
https://github.com/Jason2866/Tasmota-specials/raw/firmware/firmware/tasmota32/ESP32_needed_files/bootloader_dout_40m.bin
https://github.com/Jason2866/Tasmota-specials/raw/firmware/firmware/tasmota32/ESP32_needed_files/partitions.bin

И прошить их, как указано на картинке:
tasmota flasher
По умолчанию Tasmota ничего не знает о той плате на которой она запущена, да и настроек WiFi у нее нет. Поэтому она запустит свою точку доступа (без пароля), к ней надо подключится, зайти в WEB-интерейс, там установить имя и пароль для точки доступа к которой будет подключатся Tasmota, подключится к этой точке, и уже там вбить настройки. На самом деле, у Tasmota есть пять вариантов для поведения когда нет WiFi, но суть примерно одинакова.
Для описания платы применяется специальный перечень (template) в котором указано назначение выводов для конкретно WT32-ETH01. Его можно задать в виде текстовой строки, и, при желании, донастроить «кнопками».

Но есть способ сделать все это гораздо быстрее: при помощи Termite (Tasmota требует кода [LF] в конце команды) ввести одну большую (составную) команду.
backlog template {"NAME":"WT32-ETH01","GPIO":[0,3200,1,3232,1,1,0,0,1,0,1,1,5536,1,5600,0,0,0,0,5568,0,0,0,0,0,0,0,0,1,1,0,1,1,0,0,1],"FLAG":0,"BASE":1}; EthAddress 1; EthType 0; EthClockMode 0; module 0;

после чего в протоколе должно появится
00:01:37.475 CMD: backlog template {"NAME":"WT32-ETH01","GPIO":[0,3200,1,3232,1,1,0,0,1,0,1,1,5536,1,5600,0,0,0,0,5568,0,0,0,0,0,0,0,0,1,1,0,1,1,0,0,1],"FLAG":0,"BASE":1}; EthAddress 1; EthType 0; EthClockMode 0; module 0;
00:01:37.506 RSL: RESULT = {"NAME":"WT32-ETH01","GPIO":[0,3200,1,3232,1,1,0,0,1,0,1,1,5536,1,5600,0,0,0,0,5568,0,0,0,0,0,0,0,0,1,1,0,1,1,0,0,1],"FLAG":0,"BASE":1}
00:01:37.706 RSL: RESULT = {"EthAddress":1}
00:01:37.916 RSL: RESULT = {"EthType":0}
00:01:38.126 RSL: RESULT = {"EthClockMode":0}
00:01:38.336 RSL: RESULT = {"Module":{"0":"WT32-ETH01"}}
23:28: 00:01:39.633 APP: Restarting
ets Jun  8 2016 00:22:57
rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:1044
load:0x40078000,len:8896
load:0x40080400,len:5828
entry 0x400806ac
00:00:00.033 UFS: FlashFS mounted with 48 kB free
00:00:00.082 CFG: Loaded from File, Count 58
00:00:00.096 QPC: Count 1
00:00:00.104 Project tasmota Tasmota Version 9.2.0.4(Ethernet)-1_0_5_RC6(2021-01-27T08:04:01)
23:33: 00:00:04.013 ETH: Connected at 100Mbps Full Duplex
00:00:04.327 HTP: WEB server active on tasmota_xxxx_eth with IP address yyy.yyy.yyyy.yyy
00:00:04.331 RSL: INFO1 = {"Module":"WT32-ETH01","Version":"9.2.0.4(Ethernet)","FallbackTopic":"cmnd/DVES_625664_fb/","GroupTopic":"cmnd/tasmotas/"}
00:00:04.339 RSL: INFO2 = {"WEBServerMode":"Admin","Hostname":"tasmota_xxxxxx_eth","IPAddress":"yyy.yyy.yyyy.yyy"}
00:00:04.349 RSL: INFO3 = {"RestartReason":"Software reset CPU"}

то есть TAsmota запустила Ethernet и готова работать через него.
Можно даже настройки WiFi не задавать, и вообще отключить его командой
wifi 0

а можно и настроить. А главное, поуправлять светодиодами.


3)Esphome
В этой прошивке улучшен WEB-интерфейс, и она предлагается как последователь tasmota.
Основная тонкость заключается в том что Esphome берет свою конфигурацию из файла, и на его основе компилирует прошивку.
А это уже по сути программирование, и оно будет рассмотрено далее.
Пример конфига для платы:

esphome:
  name: test
  platform: ESP32
  board: esp-wrover-kit
Ethernet:
  type: LAN8720
  mdc_pin: GPIO23
  mdio_pin: GPIO18
  clk_mode: GPIO0_IN
  phy_addr: 1
  power_pin: GPIO16
switch:
  - platform: gpio
    name: "Pin GPIO5"
    pin: GPIO5
  - platform: gpio
    name: "Pin GPIO17"
    pin: GPIO17
# Enable logging
logger:
# Enable Home Assistant API
api:
  reboot_timeout: 0s
ota:
WEB_server:
  port: 80

В результате чего, без дополнительных настроек, запуститься Ethernet с WEB-интерфейсом, и там будут две кнопочки для управления светодиодами. Есть опции для настройки внешнего вида этого интерфейса.
esphome

4)MicroPyton
Нужна версия with ESP-IDF v3.x, без spiram.
Прошивка «монолитная», прошивается как единый кусок по адресу 0x1000.
Работа с Python осуществляется через последовательный интерфейс, можно использовать Putty.
MicroPyton знает про Ethernet, нужно только его запустить скриптом:
import machine
import network
lan = network.LAN(mdc = machine.Pin(23), mdio = machine.Pin(18), power= machine.Pin(16), phy_type = network.PHY_LAN8720, phy_addr=1, clock_mode=network.ETH_CLOCK_GPIO0_IN)
lan.active(1)

MicroPyton
можно поуправлять светодиодами на плате:
pin17 = machine.Pin(17, machine.Pin.OUT)
pin17.value(1)

Для MicroPython есть такая штука uPyCraft IDE
которая позволяет общаться с платой не просто через консоль, а пользоваться вcтроенным редактором и доступом к памяти платы.
Она же и прошивку может залить, только не надо пользоваться «встроенной» — она 2017 года, а скачать свежую по ссылке выше.
uPyCraft IDE

5)Lua — есть как минимум 3 прошивки, поддерживающие Lua и две из них точно поддерживают Ethernet: NodeMCU и Lua-RTOS. Отличаются они, в частности, принципами конфигурирования этого самого Ethernet.
Lua-RTOS имеет прошивку под каждую плату индивидуально, и WT32-ETH01 в этом перечне нет, и ничего похожего нет, в связи с вышеупомянутыми особенностями. Можно взять исходники, создать файл конфигурации нужной платы и откомпилировать. Вроде как, к этой прошивке можно «прикрутить» возможность визуального (графического) программирования, но мне стало влом компилировать эти прошивки.
NodeMCU Lua так же распространяется в исходниках, но можно воспользоваться сервисом, который «соберет» прошивку под индивидуальные нужды. Шить ее нужно с адреса 0x0.

Для того, чтобы запустить Ethernet на данной прошивке нужно запустить скрипт:
eth.init({phy = eth.PHY_LAN8720, addr = 1, clock_mode = eth.CLOCK_GPIO0_IN, mdc = 23, mdio  = 18, power = 16})

ну и далее, согласно инструкции.

6) WifI IOT — еще один сервис для автоматизированной сборки прошивки. С очень большим числом опций. Многие из которых активируются платно (т.е. за деньги). Так же поддерживает свой прошивальщик для ESP32, ориентированный на работу со «своей» прошивкой. Ethernet поддерживается, но настроек мало — на текущий момент Ethernet WT32-ETH01 с данной прошивкой не запускается.


Возможности для программирования


Arduino
В первую очередь это типовая программная «обертка» над периферией очень разных микропроцессорных контроллеров, которая позволяет написать программу, которую, в конечном итоге, можно запустить на любом из этих контроллеров. В теории.
В настройках arduino необходимо добавить файл конфигурации
https://raw.githubusercontent.com/espressif/arduino-ESP32/gh-pages/package_ESP32_index.json

После чего базовый набор для ESP32 — компилятор, некоторые библиотеки и утилиты загрузятся из Интернета сами.
Для рассматриваемой платы есть, в том числе, примеры для работы с Ethernet — нужно только их отконфигурировать.
Другие библиотеки необходимо искать и устанавливать самостоятельно, многие из них заточены именно под ESP32.

Официальный путь Espressif IoT Development Framework (esp-idf)
Espressif предлагает несколько путей создания прошивки, хотя, по сути, все они — вариации одного и того же.
В любом случае необходимо скачать непосредственно esp-idf, официально это предлагается сделать с Github либо через git.
И это будут только библиотеки, они будут привязаны к конкретной версии компилятора. Т.е. для работы самого свежего esp-idf требуется свежий компилятор.
Arduino для ESP32, кстати, тоже использует старую и обрезанную версию esp-idf.
Настройки проекта часто (но не всегда) хранятся в файле sdkconfig, который можно редактировать как в текстовом редакторе, но и при помощи стандартной (для Linux) псевдографической утилиты menuconfig.
Как оказалось, много крупных проектов для сборки «хотят» очень конкретную версию esp-idf и утилит для сборки, и не самую новую. Зачастую, они автоматически подгружают более полугигабайта файлов «себе» в папку. И в этом есть резон — esp-idf иногда переделывают довольно сильно, в esp-idf v4.x были сильно изменены функции Ethernet, и «старые» исходники просто не компилируются.
Среда для сборки ESP-AT — постоянно проверяет обновления esp-idf, и не c официального github. Причем там настолько хитрые скрипты, что под Windows они не работают, опять же из-за ограничений командной строки, и доработать их не вот непросто.
Lua-RTOS так же привязана к не самой новой версии esp-idf и компиляторов, но ее можно собрать как под Linux, так и под Windows, в среде MSYS2
В целом, вопрос очень обширный. Для простой сборки готового проекта неплохо иметь быстрый процессор, быстрый интернет, и желательно Linux. На сайте espressif стоит автоматический ограничитель скорости скачивания, а файлы там большие — так что, нужно еще и терпение.

Platformio
Комбинированный вариант среды для сборки программных проектов, сам по себе написанный на языке Python.
В принципе в Platformio возможно собрать проект как для Arduino, так и для esp-idf.
При этом «магическим» образом будут скачены все недостающие файлы: библиотеки, компиляторы, прошивальщики — все что сыщется нужного на сайте Platformio само по себе «закачается в папку .platformio
Находятся там файлы не первой свежести, хотя, с другой стороны — работает и работает, причем „само“. Нужно только произвести настройки в файлах platformio.ini, а так же в конфигурационных .h файлах.
Так же можно „прикрутить“ редактор исходников и отладчик „профессионального“ уровня.
Как оказалось немало сложных проектов используют библиотеки arduino и Platformio в качестве среды для сборки.

В рассматриваемом случае это и Tasmota и ESPeasy и отдельно — Esphome.
Отдельно потому что в основе Esphome — еще один скрипт на Python.
На основе создаваемого пользователем .yaml скрипта и исходных файлов (сам скачает!) Esphome сгенерирует готовый, настроенный проект для Platformio, сам „заставит“ Platformio скомпилировать этот проект, и „залить“ прошивку в плату.

Краткое руководство выглядит так:
  • скачать и установить python
  • установить python-pip
  • установить esphome при помощи pip
pip3 install esphome


Далее все компилируется и прошивается буквально одной командой:
esphome script.yaml upload

Хороший такой способ программировать не программируя.

Выводы

Плата годная, брать можно :) В том случае, если нужно „поморгать лампочкой“ и при этом непременно по интерфейсу Ethernet — неплохой вариант, и уж точно дешевле любой „малинки“, поэтому эта плата и была куплена. Решение интересное, как с точки использования готового софта, так и для самостоятельного программирования — не надо сильно заморачиваться на то, как „прикрутить“ TCP и запустить простейший WEB-сервер. Хотя в целом альтернатив много.

Аналоги и альтернативы - размышления вслух.
Мысль о создании данного обзора появилась при обсуждении обзора одноплатного компьютера.
Небольшие платы на базе Linux обладают широкими программными возможностями: на них можно запустить самое разнообразное ПО, при этом запускать несколько задач одновременно — насколько хватит оперативной памяти.
Даже если какое то ПО не откомпилировано под конкретную плату — можно попробовать откомпилировать его из исходных текстов, прямо на этой же плате.
Так же (в теории) нет проблем с сетями: интерфейс Ethernet зачастую встроен прямо в главную микросхему одноплатника, да и какой-никакой модуль WiFi на одноплатник разместить — обычное дело. Linux работать с сетями умеет работать очень давно, и практически под любой сетевой интерфейс есть готовый драйвер в виде модуля ядра ОС.
Кроме того, драйвера понаписаны под большое количество устройств с интерфейсом USB.

Однако, особый интерес у „самодельщиков“ вызывают более простые порты ввода-вывода, с общим названием GPIO, для которых на одноплатниках часто предусмотрен многоконтактный разъем.
На такие разъемы выводят „наружу“ не только простейшие сигналы 1/0, но так же простые цифровые интерфейсы SPI, I2C, UART.
Создается впечатление, что мы имеет очень быструю arduino, однако это не совсем так.
Linux ведет довольно строгий контроль обращений к портам вывода, а также по своему усмотрению распределяет память и процессорное время.
Каждый производитель разрабатывает свои модули для ядра Linux для работы с переферией, каждый со своими особенностями.
Для работы с нестандартным устройством можно даже написать свой модуль ядра, это ведет к большим приключениям в жанре „скачать и скомпилировать“, при этом нужно хорошо изучить работу „железа“.
Типовые модули для GPIO, SPI, I2C, UART обычно уже есть, и к ним есть доступ, реализованный в виде стандартных обращений к файлам в стандартной папке /dev.
Делать это несколько неудобно, поэтому были созданы библиотеки-обертки типа WiringPi, WiringOP, WiringBP, MRAA, pigio.
Чтобы работать с этими портами, скажем, на Python к этой библиотеке-обертке идет еще одна обертка — на Python, и все эти обертки время исполнения изменения состояния отдельных GPIO никак не гарантируют.
Cвой модуль ядра писать — долго и сложно, и все равно не даст полного контроля над процессорным временем.
Хотя, скажем, создатели проектов PyCNC и pigio используют не самые простые способы контролировать задержки выдачи синалов на GPIO. Но при этом проект „железно“ привязан к Raspberry PI — это проект под конкретную платформу.

То есть, создать какую-либо систему, управляющую „железом“ через сеть под Linux, в принципе, можно. Но зачастую это будет „из пушки — по воробьям“, измудряться с железом и при этом тянуть кучу фоновых процессов, потреблять электричество, в конце концов.
Для „метеодатчика“ и „дверного звонка“ с WiFi это все не обязательно, можно найти вариант более подходящий.

Других микросхем и модулей со встроенной поддержкой WiFi не так уж много, но они есть.

Например микросхемы W600 и W601 от WinnerMicroelectronics. Еще проще, еще дешевле ESP32, ближе к ESP2866, но на ядре ARM. Так же есть и документация, и исходники. Arduino не сделали, но есть Micropython и Lua.

Cерия Ameba от Realtek. У них модули и на WiFi 5ГГц есть. Есть кое какие исходники, документация, компиляторы, Arduino, Micropython.

Все есть, но как-то скуднее, и не видно толпы разработок, новых проектов каждый день.

Существует довольно много производителей, разработавших контроллеры и модули с другими протоколами беспроводной связи: Bluetooth (BLE), Theread, Zigbee, Z-Wave, LORA(WAN) и другие. Все эти протоколы менее скоростные чем WiFI, но для их работы требуется меньше энергии — поэтому они хорошо подходят для компактных устройств с автономным питанием. У каждого протокола есть свои особенности и своя сфера применения, где они подходят больше чем WiFi.

Другие платы с Ethernet. Получить недорогую готовую систему с портом Ethernet — задача несложная.
Разнообразных Arduino с подключаемыми контроллерами Microchip ENC28J60 и Wiznet — множество. Пусть это и отдельные контроллеры, прошивка которого хорошо скрыта от посторонних глаз, но протоколы общения с этими контроллерами хорошо задокументированные. Самой простой ATMega достаточно чтобы управлять ими, но, скажем, для реализации протокола SSH очень желателен контроллер помощнее.
Есть относительно редкие Wiznet 7500 и 7500P со слабеньким ARM ядром и (похоже что) с интегрированным WIZ5500. Wiznet спроектировал несколько разновидностей плат на этих микросхемах, с готовым ПО для настройки и прошивки, которые распроространяются в исходниках. Прошивать можно через последовательный интерфейс, все задокументировано. Так же готовые модули на основе этих микросхем продаются с маркировокой FS100. По цене получается несколько дешевле WT32-ETH01.
Eсть несколько моделей контроллеров STM32 c реализацией Ethernet. Реализуется он так же при помощи дополнительной микросхемы PHY. А готовые платы по стоимости сопоставимы с одноплатными компьютерами под Linux. Правда, за свои деньги на этой плате будет не только RJ45, но и всякие реле, RS485 и CAN интерфейсы
Планирую купить +80 Добавить в избранное +103 +161
свернуть развернуть
Комментарии (101)
RSS
+
avatar
  • emdskar
  • 05 февраля 2021, 11:16
+2
I2C, I2C
+
avatar
  • KohINoor
  • 05 февраля 2021, 11:20
+6
Пока ещё не знаю зачем, но точно пригодится (сама статья). Добавил в закладки)
+
avatar
+11
Вот бы ему еще POE, было бы интереснее. А то и eth, и питание тянуть…
+
avatar
  • archer
  • 05 февраля 2021, 11:41
+10
Passive poe нормально. Тут же всего 100 мбит. Одна платка понижайки и усе…
+
avatar
  • bahek29
  • 05 февраля 2021, 11:49
+5
пассивный РоЕ не, не слышали? пара минут и максимально удобно и не надо переплачивать за дорогущие РоЕ устройства
+
avatar
+8
Конечно, я слышал я про пассивный PoE. Но во первых для него нужен инжектор (т.е. еще конструкция возле свитча, что увеличивает энтропию ). Ни и сам DC-DC приколхозить тоже вместе с парой коннекторов возле ESP.
С учетом стоимости коммутаторов с 802.3af с Aliexpress я бы не сказал что поддержка true poe будет разорительна, а с точки зрения компактности так вообще…
+
avatar
+1
Так рядом модуль с PoE настоящим и esp32. Стоит правда дороже, и по размерам раза в 2 больше.
https://www.aliexpress.com/item/4001122992446.html
+
avatar
  • Siroc-co
  • 06 февраля 2021, 11:42
0
Или тупо за 250р купить PoE плату. Есть даже которые выдают 5V, хотя на самой еспихе уже понижайка есть.
+
avatar
0
Где есть платы PoE (802.3af) за $3 — ?
О понижайке говорили выше, где предлагали пассивный PoE.
Большинство недорогих DC-DC максимум до 24В на входе работают. 802.3af — свыше 50-ти переваривает, плюс умеет договариваться со свитчами, умеющими питание по проводу передавать.
На короткие расстояния (по квартире, для себя) — часто можно и пассивный PoE организовать. Для протяжки в подвал — лучше все-же 802.3af решения использовать.
Плюс не забываем о кабеле, омедненный не катит уже, нужна медь.
+
avatar
  • Siroc-co
  • 06 февраля 2021, 17:22
+1
Где есть платы PoE (802.3af) за $3 — ?
Да всё там же, на Али. Не уж то вас Али забанил?
Дополнительная информация

P.S. Если чё..., то да, покупал. Да, реально 802.3af. Да, 57 вольт на вход, на выходе честные 12в и изернет.

Плюс не забываем о кабеле, омедненный не катит уже, нужна медь.
Ээмм… Не, лучше не «не забывать», а всё же думать перед использованием. Если у вас точка доступа на скорости 1000Мбит работает и кушает 2 ампера, то конечно медь и длина меньше 100метров. А если у вас нагрузочка берёт не больше 0.05 А и ей надо 10-100 мегабит, то реально ли вам именно медь нужна? Я думаю у меня есть опыт, что нет.
+
avatar
+1
Зачем оно вообще когда есть православный at/af?
+
avatar
  • Nuts_
  • 05 февраля 2021, 12:25
+4
есть и с POE, но дороже и редкостнее
olimex esp32 poe
wesp32
+
avatar
  • miklsh
  • 05 февраля 2021, 13:37
+2
Но ведь запаять две перемычки на плате и этот модуль поймет что такое «5V PoE». Копеечный «колхозинг».
(Gnd и 5V на синюю/коричневую пару RJ45 c обратной стороны платы)
+
avatar
  • Fakel63
  • 05 февраля 2021, 23:58
+1
с POE есть вот такая платка
www.olimex.com/Products/IoT/ESP32/ESP32-POE/open-source-hardware
там еще и блютуз в придачу
+
avatar
  • Nuts_
  • 06 февраля 2021, 00:29
+2
блютус как бы и на этой есть
+
avatar
+2
Ну не за 17 же евро!
+
avatar
+1
Форм-фактор хороший, но цена — для европейцев.
Да и " IEEE 802.3-compliant, including pre-standard (legacy) PoE support" — так себе решение.
+
avatar
  • volkser
  • 05 февраля 2021, 11:31
+2
Понемногу обо всём и… руками ничего пока не сделано :)
+
avatar
  • Nuts_
  • 05 февраля 2021, 13:38
+13
Ну а в какой раздел поместить? Администрация смотрела — никуда не переместила.
Эта плата предназначена для тех кто хочет сделать что то своими руками.
В моем случае своими руками: это будет пару кнопок подключить и две строчки написать — обзор с этим будет скучный и потенциал платы не раскроет.
Чтобы собрать это «понемногу обо всем» и понять как это работет, ушло порядка месяца. И все перекоммутации по 300 раз я делал, между прочим, своими руками :)
Так что если кто то сделает на основе этой платы, и напишет тут обзор — это будет и моя работа тоже.
+
avatar
0
насколько хорошо работает по ethernet? какой минимальный/средний/максимальный пинг, если потери пакетов?
+
avatar
  • Nuts_
  • 05 февраля 2021, 11:59
+1
потестирую
+
avatar
  • drv
  • 05 февраля 2021, 12:29
+3
Стабильней чем по WiFi. Пинг не более 10 мс, по крайней мере у меня. Потери пакетов не замечено.
+
avatar
  • val123
  • 05 февраля 2021, 16:05
+1
само собой по проводу будет стабильнее.
+
avatar
  • Nuts_
  • 05 февраля 2021, 21:20
+4
сделал ping 100 раз
0 потерь, время всегда менее 1мс
+
avatar
  • Siroc-co
  • 06 февраля 2021, 11:48
+1
Х.з. У меня две недели работает ZigBee стик v4 через неё. Просто задолбало мучиться с usb, то прав каких-то не хватает, то просто отваливается, а если ещё в докере, а докер под Synology то надо бубен и потанцевать чтоб дровишки поставить в хост систему а потом это всё в докер пробросить. Да и сервак в подвале стоит, а все ZigBee девайсы уровнями выше… Короче сделал через Ethernet с PoE платой. Прекрасно работает и от сервера можно утянуть по проводу хоть на 250 метров.
+
avatar
+1
Интересно, потянет ли оно интернет радио?
Давно хочу сделать без WiFi на простом ethernet + энкодер + i2c дисплей.
+
avatar
+1
конечно потянет. проектов даже на esp8266 хватает.
+
avatar
  • Nuts_
  • 05 февраля 2021, 12:07
+1
однозначно да, т.к. есть проект KaRadio32, но поддержку Ethernet туда придётся прикручивать
+
avatar
  • drv
  • 05 февраля 2021, 12:09
+1
Тянет нормально. Еще хватает ресурсов и на экранчике рисовать и пару энкодеров отрабатывать :)
+
avatar
0
Софтварно поток может декодировать?
+
avatar
  • drv
  • 05 февраля 2021, 12:27
+3
Платка хороша именно малым потреблением и широким температурным диапазонам работы. У меня, например, используется в качестве мультиплексора серии датчиков на дальней дистанции (на участке загородного дома). Эксплуатируется на улице без доп подогрева.
А так, если нет ограничений по питанию то смело можно использовать Orange Pi Zero (кому-то Малинка, но нынче ягоды дороже чем фрукты), примерно с тем же ценником. Точка входа в проекты ниже. Отладка и сопровождение проще. Я про ресурсы и не говорю. Пинами можно дрыгать достаточно точно (есть готовый драйвер), полноценный набор остальной переферии и т.д. Если нужно как-то хитро дрыгнуть пином и не мучить прерывания ядра, то берем копеечные тиньку, stm-ку (кому в нативе тяжело, то берем Arduino) и по I2C/SPI цепляем сколько душе угодно :)
+
avatar
  • Nuts_
  • 05 февраля 2021, 12:38
+2
вот специально написал эпилог про это ;)
ну не дешевле это выходит любая sbc в два дороже 800/1500 руб
для ногодрыга библиотек 5шт разных но постоянно комментарии что он медленный.
если же доп. контроллер подсоединять: это точно не проще.
а на esp32 уже всего понаделали — можно просто копипастить.
+
avatar
+1
Много текста и мало картинок.
Статья годная, а за это отдельный респект!
+
avatar
+1
Если только поморгать светиком по ethernet, то есть Arduino + ethernet shield w5100 ) Надо было на скорую руку далеко прокинуть uart, так очень выручила связочка.
+
avatar
  • Nuts_
  • 05 февраля 2021, 14:52
0
Это да, но я по деньгам прикинул — выходит чуть ли не дороже, скажем, adruino nano + enc28j60
и это — 10 мегабит и 16 мегагерц, если к светодиодику добавить слова SSL, SSH, HTTPS то этого маловато
+
avatar
+1
С чего это? По деньгам 3 бакса «ваша» enc28j60, ну и сама nano 3 бакса. Итого 6.

Задача у вас ставилась так:
В том случае, если нужно „поморгать лампочкой“ и при этом непременно по интерфейсу Ethernet — неплохой вариант
А уже и https, ssh, ssl ) Совать вещи вот так напрямую в интернеты я бы не стал, vpn и все проблемы. А в нем зачем нам все эти сложности?
+
avatar
  • Nuts_
  • 05 февраля 2021, 15:42
0
там еще и доставка, да еще за каждую плату своя, я вот не нашел чтобы просто комплект был — и выходит плюс минус уже близко
для более сложных сервисов эта плата работает как клиент то есть она сама подключаеьтся к разным серверам у которых https, ssh, ssl
+
avatar
+1
Цены с доставкой в мой регион. Я спецом посмотрел перед тем как написать.
Ну… это же уже не поморгать светиком даже в кавычках ) Не будем спорить, тем более и не о чем )
+
avatar
  • Nuts_
  • 05 февраля 2021, 15:54
+2
ну вот я этот обзор написал исключительно с целью чтобы поспорить в коментах :)
У меня у самого задача очень специфическая, так что нужно именно так.
Конкретно для поморгать лампочкой в целом дейтвительно не обязательно, но есть очень хороший запас для роста…
можно сказать «поморгать лампочкой на python», в общем — легко подойти к грани когда atmega уже не хватит… и кстати еще есть такой момент как объем флеш-памяти
+
avatar
+1
Все ресурсы на SD карту w5100 и памяти уже поболя становится )))
Я рисовал красивую страничку с css и прочим, совал все на SD карту, а отображаемые параметры получал динамически get запросом. Но все равно медленно. Да и… Потом на сервере поднял web с php и блэкджеком. А ардуина стала просто слать в БД данные. И интерфейс отзывчивым стал, и развернуться можно было более чем с графиками, кучей данных, архивацией и прочим.
А так arduino + w5100 в свое время очень выручили. Маршрутизатор (pfsense + обычный комп) вдруг стал виснуть. Через 5 лет непрерывной работы оказалось что у freebsd есть проблемы с реалтековскими сетевками дешевыми. arduino+w5100+модуль реле. пара десятков строк и внешний ватчдог готов. Сервер виснет, перестает отвечать на пинги, разрываем реле питание сервера, ждем 5 секунд и включаем, ждем минуту и снова пингуем маршрутизатор ))) И почти тоже самое было дома. Роутер (dsl какой-то от ростелекома) временами просто ронял ethernet интерфейсы. Там было еще проще, проверял если ли линк (в библиотеке w5100 есть такой функционал), и если нет, то так же реле ребутал )))
Второе устройство месяца 3 поддерживало интернет в дома )
Именно в таком контексте отдавать лишние 4 бакса я не вижу.
+
avatar
  • Nuts_
  • 05 февраля 2021, 23:27
0
карта памяти как раз еще четыре бакса :) :) :)
как раз дело в том что медленно, а тут 4 бакса дают пропуск в чудесный новый мир, почти как Линукс, но не линукс.
В плане изготовления вотчдога может быть даже получилось бы без ethernet, как нить через UART…
причем, как раз ESP32 дал бы новые возможности для контроля, через ssl заходить, только если бы не висло.
и еще у нас тут «жабы» очень разные — я бы и 40 баксов не пожалел чтобы заменить виснущий роутер ;)
+
avatar
0
1. Есп тоже не быстро.
2. Как как-нибудь когда там и в работу глухо? А тут 100% результат)
3.Я бы тоже не пожалел и не пожалел (только абонентский терминал 4500 + mikrotik hap ac2 5000 с хвостом), но dsl оставалось всего ни чего, опоры под оптику уже стояли перед двором. А на работе надо было большую передвижку сделать чтобы в стойку 6 юнитовый корпус засунуть, там на день перетрубаций) делал в обде по чуть-чуть.
+
avatar
  • Siroc-co
  • 06 февраля 2021, 12:46
0
если к светодиодику добавить слова SSL, SSH, HTTPS
И как, добавляли ssh? Очень уж интересно, неделю мучился, так и не удалось завести единственную для ESP32 библиотеку.
+
avatar
  • Nuts_
  • 06 февраля 2021, 12:58
0
ок помучаюсь — расскажу
я нашёл две библиотеки
+
avatar
  • Shara
  • 05 февраля 2021, 14:15
0
Так, а подскажите плиз как дешевле всего соединить между собой два esp проводом на расстоянии 50 метров и иметь хотя бы 2-3 мегабита?
+
avatar
  • Nuts_
  • 05 февраля 2021, 14:39
0
Эммм, по ethernet?? Там условно до 100 метров. Только не могу сказать сколько мегабит, но вообще так iperf для этой штуки есть, и даже есть результаты villeklar.com/post/2019/02/12/iperf-on-esp32/
Ethernet 47.78 Mbits/sec и чуть меньше по wifi
всякие CAN и RS485 выше 1 mbit не дают, да еще с учетом расстояния
+
avatar
  • Shara
  • 05 февраля 2021, 14:55
-2
По Ethernet. Я думаю так
+
avatar
0
Что так?
+
avatar
  • Nuts_
  • 05 февраля 2021, 15:43
0
если про POE то это выше по коментариям
+
avatar
  • Shara
  • 05 февраля 2021, 16:11
0
Passive POE с инжектированием 12-24v и dc-dc на конце.
+
avatar
  • Nuts_
  • 05 февраля 2021, 16:56
0
в смысле потянет ли это на 50м?
+
avatar
  • Shara
  • 05 февраля 2021, 17:00
0
Да, напряжение можно подать любое, а вот сигнал?
+
avatar
  • Nuts_
  • 05 февраля 2021, 17:17
0
сигнал по стандарту ethernet — 100 метров
+
avatar
  • Siroc-co
  • 06 февраля 2021, 14:25
0
Для 100/10 мегабит и 200м не проблема.
+
avatar
  • val123
  • 05 февраля 2021, 16:04
0
для обучения нейронных сетей есть подобная платка?
+
avatar
  • Nuts_
  • 05 февраля 2021, 16:33
0
ну это уже надо копать в сторону kendryte K210
платок полно но без ethernet
но есть с wifi например LILYGO® TTGO T-Watch-K210
+
avatar
  • Z2K
  • 05 февраля 2021, 23:10
0
А сколько LAN8720A стоит?
+
avatar
0
+
avatar
+1
Если верно помню, то WT32-S1 означает, что используется esp32 single core. Т.е. это одноядерное решение, в отличии от привычного esp32. Эти же soic-и используются в сяомишном IR-контроллере. Т.е. при программировании там есть нюансы.
Железка, в принципе, имеет право на жизнь. Но есть большое НО. Ее производит мелкая контора, которая в любой момент может сказать «ой, плохо продаются, снимаем по-тихому с производства» и все. Повторяемость своих самоделок закончилась :(
+
avatar
  • Nuts_
  • 05 февраля 2021, 19:17
0
ну не знаю откуда можно такое помнить
смотреть надо по маркировке чипа
стоять должен ESP32-D0WDQ6
в любом случае — железка совместима с другими, в том числе и по Ethernet — иногда для ethernet нужна перекомпиляции, но в рассматриваемых примерах — только перенастройка 3-4 параметров.
можно считать этот ньюансами :) как раз из описания этих ньюансов и состоит обзор
+
avatar
  • jam_yps
  • 06 февраля 2021, 01:22
+1
ESP32-D0WDQ6 — D0 — DualCore, в одноядерных SoC S0.
+
avatar
  • clericJ
  • 05 февраля 2021, 20:34
+2
Напугали вы меня с single core, решил поискать спецификацию, там сказано:
CPU and Internal MemoryESP32-D0WDQ6 contains two low-power Xtensa® 32-bit LX6 microprocessors
ссылка: www.wireless-tag.com/wp-content/uploads/2020/08/WT32-S1-DataSheet-V1.1.pdf
+
avatar
  • Nuts_
  • 05 февраля 2021, 21:19
+1
я в понедельник сброшу скриншот чего esptool выдаёт — она определяет и пишет это
+
avatar
  • Nuts_
  • 08 февраля 2021, 14:47
+1
так ну в общем на моей плате сделал идентификацию
esptool.py -p /dev/ttyUSB0 flash_id
esptool.py v3.0
Serial port /dev/ttyUSB0
Connecting........_
Detecting chip type... ESP32
Chip is ESP32-D0WD (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: a8:03:2a....
Uploading stub...
Running stub...
Stub running...
Manufacturer: 5e
Device: 4016
Detected flash size: 4MB
Hard resetting via RTS pin...
+
avatar
  • clericJ
  • 08 февраля 2021, 14:55
0
Спасибо, теперь отпали все сомнения, заказал
+
avatar
+2
Вариант с ПОЕ просто находка, для DIY разработок.
Как раз то, что надо, чтобы в ТСЖ 120 метрового дома по подвалу сделать мониторинг температуры, влажности, давления в трубопроводах, температуры ГВС, расходов. Надо брать.
+
avatar
  • shmv
  • 05 февраля 2021, 23:55
0
не успел — кончились
+
avatar
  • Nuts_
  • 06 февраля 2021, 00:36
0
там еще кучка других магазиннов
но там дороже.
+
avatar
  • Nuts_
  • 06 февраля 2021, 01:25
0
да и сегодня заказывать толку мало — у них там НГ на носу, все разъежаются
+
avatar
  • myskuter
  • 06 февраля 2021, 08:20
-2
Ждём статью с подробным разбором программирования связки ESP32 + LAN8720A в среде Ардуино. Например, «Создание веб-сервера ESP32 + LAN8720A» или «Шлюз Wi-Fi – Ethernet на ESP32 + LAN8720A»

А то, что описано в статье (готовые прошивки, отсылки к Raspberry Pi и т. п.) совсем не интересно.

У меня лежит плата OLIMEX ESP32-EVB на LAN8710A — вообще непонятно как её программировать под Ардуино.

(Кстати, вопрос к знатокам: эти мастера в плате OLIMEX ESP32-EVB умудрились посадить SD картридер не на тот SPI, который используется для этого в Ардуино — можно ли его как-то переназначить?)
+
avatar
  • Nuts_
  • 06 февраля 2021, 11:10
+1
ну тут все таки не хабр и не все программисты, а готового — много. пока что первый вопрос про программирование.
я думаю, в рамках этой статьи добавлю ардуино детальнее, там в принципе несколько готовых примеров есть, надо только отконфигурировать. но это будет чуток отличаться от olimex. и вообще так для olimex обычно есть детальные инструкции.
github.com/OLIMEX/ESP32-POE/tree/master/SOFTWARE/ARDUINO
для шлюза есть готовая программа но шлюз странно делать при наличии микророутеров — они и побыстрее будут.
+
avatar
  • llams
  • 06 февраля 2021, 12:12
+2
Есть плата LilyGO T-ETH-POE ESP32+LAN8720A, даже накидал обзор коротенький, будет время доделаю и опубликую, отклонили модераторы, подозревают выгоду. :-)
Бинарник на гите. Если правда интересно допилю, а то как то для первого раза могли бы быть поснисходительнее, большинство обзоров публикуется гораздо худшего качества.
+
avatar
  • Nuts_
  • 06 февраля 2021, 23:31
0
Если начать придиратся, то и за мою обзор мне производитель отбашлять должен — я не я ему,
хотя я пока что только проанализировал и проверил найденное в интернете.
Что уж говрить, когда тутошние мастера такие детали анализируют что мне бы в голову не пришло.
Спасибо хоть -в коментариях идей подбросили.
Так что не знаю уж какую они выгоду могут увидеть в обзоре в комплекте с результатами работы
но меня всегда смущает что на гитхаб вылождены только бинарники
исходники я бы мог под свою плату компильнуть — уж больно эта шутка в тему остальных, перечисленных здесь.
+
avatar
  • llams
  • 12 февраля 2021, 08:41
+1
Сделал сборку под Вашу плату. Там же на гите, проверьте. Должно работать. В папке src есть исходник который можно переделать под вашу плату и с его помощью залить бинарник.
+
avatar
  • Nuts_
  • 13 февраля 2021, 01:35
0
посмотрю, только зачем так сложно… аплоадер
прошить будооадер и пр от ардуино, да этот бинарник…
+
avatar
  • llams
  • 15 февраля 2021, 07:35
0
Получилось залить? Работает? Интересно, попал ли с конфигом портов. :-)
+
avatar
  • Nuts_
  • 15 февраля 2021, 15:59
0
нет, у меня прошла пора привольного порхания и настала пора «когда руки дойдут»
+
avatar
  • Nuts_
  • 15 февраля 2021, 17:45
0
да, рабоатет
аплоадер тоже запустил
но нужно еще номера gpio менять
+
avatar
  • llams
  • 15 февраля 2021, 18:14
0
Докинуть больше? Опишите какие нужны, докину.
Еще сейчас доделываю модуль работы с шиной 1Ware, можно будет на один пин кидать до 10-и датчиков.
А, да. Потом можно прошивку просто обновлять, в соответствующем разделе меню, но вы наверное уже видели.
+
avatar
  • Nuts_
  • 15 февраля 2021, 22:46
0
этов все понятно
там сейчас каждый из p0-p5 зафиксирован на какой то конкретный gpio
а они на каждой плате свои
сейчас можно повесить датчкик на gpio16 а на wt32 он занят ethernet и под датчик выбирать его нельзя

и я так и не понял зачем nrst и поставил его в -1 и аплоадер работает

у tasmota внутри аж три таблички настраиваемые — какой пин за что отвечает, и какие нельзя трогать, но датчики можно повесить на любой свободный пин
+
avatar
  • llams
  • 16 февраля 2021, 12:59
0
Я делал сборку как для LilyGO, там часть пинов уведено на карт-ридер+ какая то обвязка, честно, не вникал в схему. Нужно детально разобраться.
Пришлите мне список пинов которые можно использовать для IO на WT32, сделаю сборку с учетом этого.
Вот так выглядит вкладка IO на ESP32 без Ethernet.
+
avatar
  • cyrax85
  • 06 февраля 2021, 12:54
+3
Спасибо автору, очень интересная железка и полезная статья. Вопрос — а не сравнивали ли энергопотребление при работе по wifi и ethernet (с выключенным wifi)? Нигде таких данных не видел, очень интересно
+
avatar
  • Nuts_
  • 06 февраля 2021, 14:31
+1
не пробовал
но попробую сыскать на это время
+
avatar
  • dimats
  • 08 февраля 2021, 21:08
+2
Спасибо, заказал пару.

Но заодно обнаружил что на GLiNET GL-MT300N-V2 (более современный аналог незабвенного NEXX WT3020, но на борту 16MB FLASH + 128M RAM) цену скинули до $16.79

Да и свистки тут или тут ценой около $8 не проблема купить под тот же OpenWrt (RT5350 / 32Gb /4Mb FLASH), подробнее про них например тут Реверс-инжениринг микро-роутеров на SoC RT5350F

Лично мне иногда надо лепить автономные устройства с езернетом и линухом внутри. Управляющее 1-2-4 реле через USB вроде ICSE013A/ICSE014A. Под OpenWRT достаточно удобно.
+
avatar
  • Nuts_
  • 08 февраля 2021, 23:34
0
уммм, при такой то цене на свистки я бы лучьше его взял чем эту плату, если бы с нее возможно хоть один gpio выести
еще я нашел хорошие платки на stm32 с ethernet и реле как раз, с заклнченной прошивкой, но они дороже
+
avatar
  • Fakel63
  • 12 февраля 2021, 21:27
0
нашел хорошие платки на stm32 с ethernet
можно ссылку для «посмотреть» )?
+
avatar
  • Nuts_
  • 13 февраля 2021, 03:03
+1
вот их магазин
dtwonder.aliexpress.ru/store/1228401
тут три модели 2 4 8 реле, wifi отдельным модулем, can и rs485 за отдельные деньги
причем типа магазин производителя, програмист на связи — оказывает поддержку
плюс еще вот такая https://aliexpress.ru/item/item/1005001620616382.html — она подороже но проц мощнее и вобще так для разработки
ну и за такие цены можно купить целый одноплатник
+
avatar
  • Fakel63
  • 13 февраля 2021, 09:30
0
спасибо
+
avatar
  • dimats
  • 22 февраля 2021, 12:27
+1
Так до сих пор и не отправили, а когда написал, получил ответ
I have bad news for you.
The project is currently out of stock due to the reduction of factory capacity due to the new coronavirus and Chinese New Year
It needs to be released in mid-March! Can you extend the delivery time (you can extend the delivery time on the order page)
Or cancel the order?
+
avatar
  • Nuts_
  • 22 февраля 2021, 17:33
0
это магазин который по ссылке здесь сверху?
у них похоже особых запсов и не было, 20 шт проданых и 3 типа осталось
а в КИтае щас действительно нвогодняя тусня, если кто и работает, то вполсилы
но вообще так в других магазинах и продали якобы сотне по две, а в наличии еще больше
+
avatar
  • dimats
  • 22 февраля 2021, 18:15
+1
спросил в чате в другом магазине, где более 600 остаток — тоже нет, обещают с конца месяца

PS:
https://aliexpress.ru/item/item/1005001739834076.html
и
https://aliexpress.ru/item/item/1005001930750808.html
+
avatar
  • Nuts_
  • 23 февраля 2021, 14:50
0
Ну чтож, наши китайские друзья в своем (новогоднем) репертуаре.
+
avatar
  • Igor3691
  • 26 февраля 2021, 08:49
0
Поморгать лампочкой за 1т рублей?! Ну не знаю… Безусловно, это значительно дешевле любой Малинки, но кроме Малинки есть, к примеру, Апельсинки (скажем P PC или Zero) за 1,5т рублей, которые с этим даже сравнивать не корректно. Я не против esp32 и иже..., даже наоборот, обеими руками за. Но по нормальной цене. Кроме того, там же есть wifi. Зачем еще Ethernet? Хорошо, пусть будет для тех, кому прям надо. Но не по такой же цене!..
+
avatar
  • Nuts_
  • 27 февраля 2021, 14:10
0
поморгать лампочкой можно и за условно за 1руб: выключатель батарейка и длинный провод.
кому нужен и зачем ethernet тут уже многие отписались: кому надо — тому надо, и так уж выходит что за него приходиться немного доплатить.
что до цены, то мною плата была куплена за 800 руб с доставкой. любой одноплатник _с доставкой_ будет стоить почти в два раза дороже: советую посмотреть цены на доставку этих апельсинок, там рублей 300-500. Даже на авито БУ дешевле не так просто «выцепить». плюс к ним ещё карточку памяти надо в общем то.
чисто по ценовой категории эта плата находиться посередине между arduino+enc28j60 и минимальным одноплатником на линуксах. чуть дороже 800 и действительно одноплатник становится интересен.
но помимо этого есть ещё неоднозначные различия в вопросах подключения и управления внешнего железа, ну или например в скорости «холодного старта».
ну а если Ethernet не нужен то есть масса более дешёвых альтернатив с WiFi, дёшево и довольно сердито.
и вообще про все это в эпилоге расписано.
+
avatar
  • friday
  • 07 апреля 2021, 16:00
0
Добрый день. Пришла долгожданная посылка — начал эксперименты.
Подключил к Arduino IDE, залил пример WifiScan — работает — показывает сети.
А как можно активировать LAN в прошивке?
Попробовал DhcpAddressPrinter в надежде, что покажет свой IP — прошивка грузится но не работает

#include <SPI.h>
#include <Ethernet.h>

void setup()
{
  Ethernet.init(33);  // ESP32 with Adafruit Featherwing Ethernet
/*  // start the Ethernet connection:
  Serial.println("Initialize Ethernet with DHCP:");
  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    if (Ethernet.hardwareStatus() == EthernetNoHardware) {
      Serial.println("Ethernet shield was not found.  Sorry, can't run without hardware. :(");
    } else if (Ethernet.linkStatus() == LinkOFF) {
      Serial.println("Ethernet cable is not connected.");
    }
    // no point in carrying on, so do nothing forevermore:
    while (true) {
      delay(1);
    }
  }
  // print your local IP address:
  Serial.print("My IP address: ");
  Serial.println(Ethernet.localIP());*/
}


Подскажите, пожалуйста, как правильно инициализировать сеть.
+
avatar
  • Nuts_
  • 09 апреля 2021, 21:32
0
я до андройда так и не дошёл
но тут явно не тот код а от какого то шилда
в комплект поставки arduino для esp32 есть пример там там для инициализации всякие gpio устанавливаются
+
avatar
  • Nuts_
  • 09 апреля 2021, 23:16
0

#include <ETH.h>
#include <WebServer.h>
#include <Update.h>

/*
   * ETH_CLOCK_GPIO0_IN   - default: external clock from crystal oscillator
   * ETH_CLOCK_GPIO0_OUT  - 50MHz clock from internal APLL output on GPIO0 - possibly an inverter is needed for LAN8720
   * ETH_CLOCK_GPIO16_OUT - 50MHz clock from internal APLL output on GPIO16 - possibly an inverter is needed for LAN8720
   * ETH_CLOCK_GPIO17_OUT - 50MHz clock from internal APLL inverted output on GPIO17 - tested with LAN8720
*/
#define ETH_CLK_MODE    ETH_CLOCK_GPIO0_OUT         

// Pin# of the enable signal for the external crystal oscillator (-1 to disable for internal APLL source)
#define ETH_POWER_PIN   16

// Type of the Ethernet PHY (LAN8720 or TLK110)
#define ETH_TYPE        ETH_PHY_LAN8720

// I²C-address of Ethernet PHY (0 or 1 for LAN8720, 31 for TLK110)
#define ETH_ADDR        1

// Pin# of the I²C clock signal for the Ethernet PHY
#define ETH_MDC_PIN     23

// Pin# of the I²C IO signal for the Ethernet PHY
#define ETH_MDIO_PIN    18

#define NRST            5

WebServer server(80);
+
avatar
  • dimats
  • 12 апреля 2021, 20:52
0
По поводу переводов строки, насколько я вижу конфигурацию putty — там настраивается


Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.