Повторяем Китай (своя прошивка для релейного модуля STC15F104W + ESP8266)

Купил себе на поигратся релейный модулек на базе STC15F104W и ESP8266. Вот такой www.banggood.com/ESP8266-5V-WiFi-Relay-Module-Internet-Of-Things-Smart-Home-Phone-APP-Remote-Control-Switch-p-1126605.html? (это не реклама, я вообще его у себя в городе брал, а не в Китае)
Вау-эффектом, толкнувшим на покупку, стало то, что на борту находится МК с архитектурой MCS-51.
Все никак не было времени, но вот руки дошли взяться за него поближе.
Нарыв документацию, сперва был обескуражен, зачем в нем вообще нужен отдельный МК? ESP8266 вроде как умеет напрямую управлять GPIO.
Уже потом пришло понимание, что такова концепция платы — ESP8266 здесь просто как модуль связи, управление самой Релюхой, и инициализацию модуля по включению осуществляет этот самый МК.
Действовал согласно интрукции отсюда www.hackster.io/makerrelay/esp8266-wifi-5v-1-channel-relay-delay-module-iot-smart-home-e8a437
но у меня МК почему-то не выполнял команды, которые приходили у нему от ESP8266. То есть, соединение устанавливалось, но входящий пакет STC15F104W тупо игнорил.
Плюнул, решил писать свое. Бегло прочитал даташит, очень удивился тому факту, что аппаратного UART в этом МК нет.
Никогда не думал, что придется писать программный UART для MCS-51, он ведь даже у самых динозавров есть.
Прежде чем ваять свое, погуглил, и понравилась реализация отсюда www.8051projects.net/wiki/8051_Software_UART_Tutorial
, ее и взял за основу.
Запустил IDE, и за вечер накидал свою прошивку (благо были пригодившиеся наработки) и залил в устройство. Заводская прошивка была потеряна безвозвратно (программа-программатор для этих МК принципиально не позволяет прозводить чтение, только запись), но я все равно хотел мудрить на этой плате что-то свое, даже если бы заводская прошивка была рабочей, так что ни капли не сожалею.
Я реализовал work mode 1 (Cell phones carry on the WiFi module directly) — телефон подключается к модулю напрямую.
Входящий пакет вкл/выкл Реле сделал просто 1 байт (31h — вкл, 30h — выкл), хотя ничто не мешает Вам передалать его хоть в строчку из стихотворения.
Все исходники на асме, без использования прерываний (еще на разобрался в них для этого МК).
На стороне телефона пользовался программой EasyTCP.
Видео результата youtu.be/oJB_cJ8Te5U
  • +2
  • 11 октября 2018, 15:48
  • Gnusmas
  • 2

Комментарии (3)

RSS свернуть / развернуть
Нарыв документацию, сперва был обескуражен, зачем в нем вообще нужен отдельный МК? ESP8266 вроде как умеет напрямую управлять GPIO.
Ну а сам-то ты почему в таком случае не спихнул всю работу на ESP?
Бегло прочитал даташит, очень удивился тому факту, что аппаратного UART в этом МК нет.
Это действительно странно, учитывая, что UART — стандартная периферия для 8051. И еще более странно в свете того, что программируется он через UART-бутлоадер. В GS110A похожий МК, только ног больше, и несколько расстраивает, что нельзя с него прошивку стащить, прежде чем свою заливать.
Схему платы тоже положи в аттачи.
0
  • avatar
  • Vga
  • 12 октября 2018, 08:08
Ну а сам-то ты почему в таком случае не спихнул всю работу на ESP?
Там вроде LUA надо знать, а я не знаю. А асм 8051 знаю. Хотя китайцы свою прошивку ддля STC15 писали скорее всего на Си (в китайских интернетах везде примеры на Си).
И еще более странно в свете того, что программируется он через UART-бутлоадер
Да, я сам без понятия, как (из зачем) они так сделали. Может позиционирование такое, чтобы не мешал старшим моделям. А загрузка по UART осталась, она сделана на каких-то других ресурсах, нежели стандартный UART.
Схему платы тоже положи в аттачи
Приложил LC wifi relay.zip, в нем все что нарыл по этому модулю.
0
Изучить луа несложно, это простой язык, разрабатывавшийся не в последнюю очередь именно для тех, кто программировать не умеет. Хотя при этом оно на удивление глубокое. Просто, но не примитивно.
Другое дело, что на луа на ESP много не напишешь. Надо вооружаться SDK и С.
А загрузка по UART осталась, она сделана на каких-то других ресурсах, нежели стандартный UART.
Там бутлодырь банальный. Вернее, на этот чип я досконально не изучал, а в том, что в паяле — именно он. При подаче питания он с полсекунды тупит, ожидая команды программатора. Конечно, они могли сделать бутлодырь на софт-уарте…
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.