• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

BLE HM-10 (CC2541) подключаем LCD 1602 напрямую

TRO

Member
Модуль HM-10 работает с АТ командами для настройки и управления своей переферей. + прозрачно обменивается через UART посылками по 20 байт.
Поскольку я жадный то давно хотелось подключить дисплей к BLE модулю без всяких промежуточный контроллеров.
А поскольку еще и ленивый, то не хотелось изучать всякие языки и писать прошивку под чип модуля, т.е. нету знаний что бы написать свою прогу для модуля.
Поэтому появилось вот такое кривое и медленное решение для гуманитариев, где всей работы это запаять 12 проводков, и никакого программирования.

Начиная с версии 603, прошивка модуля умеет одной АТ командой выводить 10 бит в десять своих линий PIO2 ~ PIO11
V603
====================================================
-Add AT+MPIO<P1> command used to control multi-pios in one AT command
P1: 000 ~ 3FF
000 or 3FF is HEX format, change to binary format is 0000000000 or 1111111111,

left side to right side maped PIO2 ~ PIOB

Этих 10 линий как раз в притык хватает что бы управлять экраном 1602 в восьмибитном режиме при помощи примитивного ногодрыга.
Сказано - сделано, припаиваем модуль к экрану по нижеследующей схеме.
1602_hm10.jpghm10.jpg

Кстати да, экран у меня 3 вольтовый (отличительная особенность на задней части экрана распаяна восьминогая микросхемка).
Далее подключаю терминалку Terminal 1.9b к модулю через USB_UART переходник, и даю через терминалку вот такой скрипт:
//******************************
// Terminal Script
// Created: 12.03.2020 12:24:42
//******************************
program test;
begin
comsendstr('AT+MPIO000');
Delay(20)
comsendstr('AT+MPIO03C');
Delay(20)
comsendstr('AT+MPIO13C');
Delay(20)
comsendstr('AT+MPIO03C');
Delay(20)
comsendstr('AT+MPIO13C');
Delay(20)
comsendstr('AT+MPIO03C');
Delay(20)
comsendstr('AT+MPIO13C');
Delay(20)
comsendstr('AT+MPIO03C');
Delay(20)
comsendstr('AT+MPIO101');
Delay(20)
comsendstr('AT+MPIO001');
Delay(20)
comsendstr('AT+MPIO108');
Delay(20)
comsendstr('AT+MPIO008');
Delay(20)
comsendstr('AT+MPIO101');
Delay(20)
comsendstr('AT+MPIO001');
Delay(20)
comsendstr('AT+MPIO10C');
Delay(20)
comsendstr('AT+MPIO00C');
Delay(20)
comsendstr('AT+MPIO106');
Delay(20)
comsendstr('AT+MPIO006');
Delay(20)
comsendstr('AT+MPIO331');
Delay(20)
comsendstr('AT+MPIO231');
Delay(20)
comsendstr('AT+MPIO332');
Delay(20)
comsendstr('AT+MPIO232');
Delay(20)

end.

Можно конечно было вручную набирать кучу команд AT+MPIOХХХ, но выдавать их пачкой удобнее при помощи скрипта.
Последние 4 команды в скрипте выдают 2 символа (по 2 команды на символ, ибо надо ногой дрыгнуть туда сюда), а все что перед ними - инициализация.
После инициализации подключился к модулю по воздуху терминалкой из смарта, и так же с помощью двух команд записал символ в экран.

Решение рабочее.
Плюсы в том что экономим на промежуточном контроллере (бюджетно), ничего программировать не надо, 12 проводков и можно выводить на экран АТ командами.
Минус в том что вывод на экран идет довольно медленно, для редко меняющихся значений вполне может подойти.

Сами модули я брал дешевые не оригинальные на чипе CC2541 с не подходящей китайской прошивкой, и программатором заливал прошивку HM-10, как это делать есть много информации в инете, в том числе без программатора обычной ардуиной, проще конечно купить модуль с уже с правильной прошивкой HM-10 версии 603 и выше, я шил версию 708.
 

pvvx

Активный участник сообщества
"Поэтому появилось вот такое кривое и медленное решение для гуманитариев":
  • найти и распаять модуль USB-COM к модулю HM-10
  • найти блок питания на 3.3В и припаять к модулю HM-10
  • "запаять 12 проводков, и никакого программирования"
  • найти необходимую прошивку на HM-10
  • "программатором залить прошивку HM-10"
  • изучить как оперировать 1602 и его перекодировку символов, конкретно вашего экземпляра, т.к. они разные
  • составить таблицы перекодирования
  • скачать из инет и разобраться в терминальных программах, найти ту которая имеет возможность исполнения скриптов
  • "написать скрипт"
Ага - для гуманитариев :)
 
  • Like
Реакции: TRO

pvvx

Активный участник сообщества
Для гуманитариев есть такие решения, без пайки:
Но там сложно - надо ставить Arduino :)
Поскольку я жадный то
Проще купить на али самые дешевые смарт часы (стоят примерно 350 руб) и в них есть прием сообщений с телефона :)
Это дешевле чем ваше решение.
 

TRO

Member
Модуль(на перходной плате со стабом на 3.3в) + экран куплены за 2 уе с таобао (1,35+0,65).
Ну и по весу + ~0,1уе доставка (ехало попутно в большой коробке с крупным барахлом).

Связь с телефоном для примеру, я собирался слать данные со своего устройства при помощи другого такого же BLE модуля (захотелось бюджетного беспроводного экрану).
Да и в общем все не суть, подобное извращение родилось в процессе разборок работы экранов 1602 и 2004, и я не претендую на весомую практическую ценность такого включения, из за слишком медленного вывода скорее всего сам таким включением пользоваться не буду.
________________
Замерил питание, модуль с экраном (подсветка выключена) жрут 9,8-10,5мА.
Экран жрет 1,2-1,5мА.
Модуль в слипе жрет 0,5мА, как проснулся ~8,5-9мА
 

pvvx

Активный участник сообщества
Да и в общем все не суть, подобное извращение родилось .....
А я тоже прикалываюсь по поводу "для гуманитариев" :)
Замерил питание, модуль с экраном (подсветка выключена) жрут 9,8-10,5мА.
Экран жрет 1,2-1,5мА.
Модуль в слипе жрет 0,5мА, как проснулся ~8,5-9мА
Многовато будет.
В sleep режиме и пока нет соединения надо ключ питания на такой экран. У вашего модуля есть ноги с током выхода до 20 мА - прямо на них и вешаете питание экрана и на другую - подсветку.
При постоянно включенном UART меньше пары мА у меня пока не выходило на JDY-10, т.к. не искал как оставить активной только UART (мне не особо интересен UART, т.к. есть USB). Ныне в UBIA 232 символа за раз, а не 20.
Но есть варианты - CPU в чипе активируется по фронту RX (это вроде работает в варианте прошивки "AT" в JDY-10M и вроде всё успевает снять с UART).
 
Сверху Снизу