Re: Модуль ESP8266 wi-fi управление ректификационной колонной
Papazol, ESP-32 вышла, сразу уж на неё... там двухядерный процессор.
Регистрация на форуме отключает почти всю рекламу!
|
Форум самогонщиков, винокуров, виноделов, пивоваров, бондарей и очень хороших людей |
Alco Distillers → Электронное оборудование → Модуль ESP8266 wi-fi управление ректификационной колонной
с 141 по 160 из 201
Papazol, ESP-32 вышла, сразу уж на неё... там двухядерный процессор.
Освоить хотя бы один, слишком много новой инфы.
Пробовал подключить к модулю внешний рабочий преобразователь интерфейса.
UART, используемый для программирования контроллера, подключен как к CH340G, так и к выводам RX/TX модуля. Только к CH340G он подключен через резисторы 470 Ом, а к выводам - напрямую. Теоретически внешний преобразователь мог бы работать, но не работает. Потому что "настоящий" преобразователь использует, точнее, даёт контроллеру использовать не только RX и TX, но и DTR/RTS.
Это и тот факт, что в более ранних моделях ESP8266 встроенного преобразователя интерфейса не было, и, тем не менее, его можно было программировать через внешний преобразователь, наводит на мысль, что заставить это работать можно.
Я уже заказал новый модуль, ждать теперь долго, конечно. По мере появления тоски по колебательному контуру буду мучить и старый.
Теоретически внешний преобразователь мог бы работать, но не работает.
На ESP-шку питание нормально подаётся? У моего коллеги UNO c битым 340-м интерфейсом определился с внешним преобразователем и заступил на боевую вахту
Разводка там должна быть похожей.
З.Ы. Схемы во вложении вообще нечитаемы...
Схемы во вложении вообще нечитаемы...
Кликните на схеме правой кнопкой мыши и выберите "Открыть изображение", а потом ещё "+" нажмите и будет видно всё. 
Papazol, модуль напаян на плату? Используй стандартные выводы для подключения uart. На плате максимум обвес по питанию на 3.3 и для включения... а может и 3.3 от uart взято. Плату включи для начала, увидишь её в списках доступных сетей - работает.
Кликните на схеме правой кнопкой мыши и выберите "Открыть изображение", а потом ещё "+" нажмите и будет видно всё.
Ха, а я то левым тапом общёлкался
.
Теоретически внешний преобразователь мог бы работать, но не работает.
Посмотрел схему (всё-таки посмотрел
и плату - должно работать через внешний преобразователь, если сама ESP-шка рабочая.
Сегодня с утра принялся мучить этот модуль. Разложил вокруг себя (виртуально, конечно) схемы и цоколёвки всего, что там есть. Поставил монитор COM портов. Схема, что я привёл, в принципе соответствует железу. Немного не соответствуют наименования ног ESP-шки в разных источниках. Но номера-то у них одни, так что разобрался. Попробовал мониторить данные, что льются через порт. Естественно, накинул внешний преобразователь.
Если ничего не делать, а просто подать питание на модуль, через порт ничего не проходит, по крайней мере монитор ничего не показывает.
Если нажать и отпустить кнопку RST, появляется некоторое сообщение, бинарное, конечно. Если нажатие повторить, появляется другое сообщение, иногда первые пару-тройку байт у них совпадают, но длина разная. Только я не могу понять, это данные от ESP или от компьютера.
При попытке загрузить простейший скетч Blink из Arduino никакого обмена через COM порт не идёт, а в Arduino появляется сообщение об ошибке заливки скетча. Это очень непонятно, хотя кто знает, как там всё устроено?
UPD Оказалось, что нельзя мониторить порт, когда другая программа хочет его использовать. Если монитор отключить, что-то через порт идёт (судя по морганию синего светодиода на преобразователе интерфейса). Но всё равно ошибка.
Стал изучать, как заливается скетч в модуль без встроенного преобразователя интерфейса. Там используется кнопка, подключенная к GPIO0, которая при нажатии подключает вывод к GND, а при отпускании на выводе висит подтяжка. Кроме того, некоторые другие GPIO требуют определённых логических уровней. По идее, то же самое должно происходить и в случае встроенного преобразователя интерфейса, но только автоматически. Однако, на модуле есть кнопка FLASH, подключенная к тому же GPIO0. Назначение этой кнопки я нигде так и не нашёл. Причём, параллельно этой кнопке подключен транзистор VT2, управляемый от CH340G. У меня нет осциллографа, посмотреть бы, что там на этих ногах происходит...
И да, сама ESP8266 работает, сеть под названием AI-THINKER **** появляется.
сеть под названием AI-THINKER
У тебя прошивка nodemcu, это готовый к работе модуль, в который нужно только LUA скрипты залить.
https://github.com/4refr0nt/luatool
Не понимаю, что значит "готовый". Простую программу Blink в него можно залить или нет?
Сейчас вот посмотрел несколько видео про всё вот это. В одном подсмотрел способ не знаю чего, но работает. Если в Arduino IDE включить Монитор порта и нажать и отпустить кнопку RST, то в порт отправляется некоторая информация (скорость должна быть 74880!). Вот она:
ets Jan 8 2013,rst cause:2, boot mode:(3,7)
load 0x40100000, len 1396, room 16
tail 4
chksum 0x89
load 0x3ffe8000, len 776, room 4
tail 4
chksum 0xe8
load 0x3ffe8308, len 540, room 4
tail 8
chksum 0xc0
csum 0xc0
2nd boot version : 1.4(b1)
SPI Speed : 40MHz
SPI Mode : DIO
SPI Flash Size & Map: 8Mbit(512KB+512KB)
jump to run user1 @ 1000
doЛ13і
Значит, микропроцессор работает, и порт работает, и преобразователь интерфейса (внешний) тоже работает.
В другом видео подсмотрел такой способ перевода микропроцессора в режим программирования: нажать кнопку FLASH (при этом GPIO0 на GND), нажать кнопку RST, отпустить кнопку RST, отпустить кнопку FLASH.
Если сделать так, то в порт выдаётся следующее:
ets Jan 8 2013,rst cause:2, boot mode:(1,6)
Видно, что в данном случае bootmode другой, не такой, как при простом ресете. Какой он должен быть, чтобы заливать скетчи, я не знаю. Но с таким не работает. Продолжаю наблюдение.
Papazol, зайди на сайт nodemcu там должна быть инструкция. Зачем ты с портами мучаешься, если у тебя готовый девайс? Тебе просто загрузчик lua нужен, а скрипты пиши под себя как хочешь.
Вот глянь пример, только судя по твоим словам, у тебя уже прошитый вариант... тебе только lua надо.
https://www.youtube.com/watch?v=_MEWkviEMKY
очень возможно что у тебя стоит контроллер USB cp210. попробуй установить такой драйвер http://www.silabs.com/products/mcu/page … ivers.aspx
очень возможно что у тебя стоит контроллер USB cp210
Нет, контроллер у меня CH340G.
Papazol, зайди на сайт nodemcu там должна быть инструкция. Зачем ты с портами мучаешься, если у тебя готовый девайс? Тебе просто загрузчик lua нужен, а скрипты пиши под себя как хочешь.
Чтобы залить в устройство любой скрипт, нужно, чтобы устройство могло общаться с компьютером. Что у меня и не выходило. Но не зря я просидел весь день и даже ночь. Результат достигнут!
Итак, я определил, что связь с компьютером есть, но она односторонняя: с модуля ESP8266 инфа на компьютер идёт, а в обратную сторону - нет. Именно поэтому и не заливается никакая программа. Измеряя напряжения на разных ногах CH340G, я обнаружил, что выводы D+ и D- ведут себя очень подозрительно: на одном из них прослеживалась явная активность (напряжение менялось), а на втором - просто 0. Хотя по всем правилам эти ноги должны работать в противофазе практически всегда.
Логика подсказывает, нет, уже тычет носом, что вышла из строя микросхема CH340G. Как вышла - это история отдельная, но факт тот, что горелая микросхема может давать как КЗ, так и ХХ, что в конечном итоге и приводит к отсутствию работоспособности всего устройства. Её отпаять бы, но...
Ближе к ночи я принял решение отрезать нахрен вывод RX микропроцессора от CH340G. Оставить только соединение с гребёнкой, куда я подключаю внешний преобразователь. Сделать это было не очень легко, так как вижу я плохо, нужна лупа, свет яркий, а другой рукой надо резать. Но всё получилось.
После этого модуль начал отлично программироваться. Я попробовал как программу Blink (правда, без светодиода), так и WiFiScan. Всё заработало!
Вход в режим программирования: при поданном питании нажать кнопку FLASH, нажать кнопку RST. Затем отпустить кнопку RST, отпустить кнопку FLASH.
Вот теперь можно заморачиваться всякими скриптами и прочим 
Вот теперь можно заморачиваться всякими скриптами и прочим
Поздравляю! Процесс пошёл 
Как и ожидалось, началось всё с ошибок. Ошибка такая:
error: #error "Please define I/O register types here"
Кто-то уже с таким сталкивался, но как решить, не написали. И ещё один момент. Где-то я встретил упоминание, что библиотеки (в частности, OneWire.h) периодически обновляются, отсюда вопрос: откуда скачать рабочую библиотеку?
PS Кстати, файл DallasTemperature.h уже содержит строку #include <OneWire.h>, так что второй раз её прописывать вроде как не нужно?
так что второй раз её прописывать вроде как не нужно
Обычно .h файлы содержат проверку на включение контента только единожды, то есть включить второй раз не такая уж и проблема. Я бы включил, если код в этом модуле конкретно использует функции из OneWire.h
Результат достигнут. Пришлось сделать ряд доработок/исправлений.
1. Библиотеки OneWire и DallasTemperature необходимо устанавливать с помощью управления библиотеками: Скетч -> Подключить библиотеку -> Управлять библиотеками. Появится менеджер библиотек, похожий на менеджер плат. В поле поиска ввести OneWire, появится соответствующий бокс, там нажать Установить.
Затем в поле поиска набрать DallasTemperature и установить эту библиотеку.
Простое копирование скачанных папок с библиотеками в папку libraries не даёт нужного результата. Ошибка error: #error "Please define I/O register types here" появляется как раз из-за неправильно установленных библиотек.
2. В текст скетча необходимо добавить слово static в строке 21 перед словом unsigned. Без этого при компиляции появляется ошибка про "time".
Нумерация строк включается в настройках Arduino IDE.
3. У меня в настройках роутера была включена фильтрация по MAC адресу. Поэтому модуль никак не мог подключиться к сети. Пришлось отключить фильтрацию, тогда всё прошло нормально. Однако, в целях безопасности следовало бы включить в список разрешённых MAC адрес модуля ESP8266 и включить-таки фильтрацию. Но как узнать MAC адрес модуля, я пока не узнал.
Но как узнать MAC адрес модуля, я пока не узнал.
Так роутер должен в беспроводных коннектах показывать маки. Или в списке клиентов - смотря какой роутер.
Узнать MAC адрес можно, послав AT-команду, сейчас не вспомню какую. Правда, в примерах это делается на модуле без залитой программы.
Обнаружил очередной косяк. Захотелось мне подключить к модулю LCD дисплей по I2C. Нашёл статью про это, правда, на иноземном. И выявилась проблема. Дисплей должен питаться от 5 В. Автор статьи брал эти 5 В с вывода VIN модуля. По логике, на этот вывод должно приходить напряжение прямо с контакта USB разъёма. Однако, оказалось, что на моей плате на контакт VIN напряжение с USB приходит аж через два последовательно включенных диода. Так-то вроде всего 1,4 В должны на них падать, стало быть, останется 5-1,4=3,6 В. Это уже мало, но реально там всего 2,1 В. Либо диоды "не такие", либо вообще не знаю.
Откусил ногу питания CH340G, чтобы она не жрала ток. Всё равно не работает. Напряжение на VIN увеличилось немного. Но подсветка дисплея не горит.
UPD Я маленько ошибся. Эти два диода включены не последовательно, а встречно. Это позволяет запитывать модуль как от разъёма USB, так и через вывод VIN. То есть, вывод VIN - это не выход питания, а вход. На схеме, которую я прикладывал, это не отражено, там есть только один диод и нет вывода VIN.
Так что никакого питания на дисплей вообще не идёт, а то, что я намерил, было без дисплея, это утечки и проч.
Какой выход из положения? Замкнуть один из диодов перемычкой.
Узнать MAC адрес можно, послав AT-команду, сейчас не вспомню какую.
Хех
:
AT+CIFSR через терминал (например CoolTerm). Но это если мы не ищем лёгких путей
.
AT+CIFSR
Да, такую. Можно её послать и через встроенный в Arduino IDE терминал.
Я немного разочарован.
В сущности мы имеем только заготовку для инструмента. Например, графики температуры мы рисовать не можем, а это ой как удобно и нужно. Для получения актуальных данных приходится постоянно обновлять страницу в браузере. Не знаю, во всех ли браузерах можно это делать автоматически. Требует развития проект.
с 141 по 160 из 201