• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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).
 
Сверху Снизу