P.S. Обязательно дочитайте до конца, прежде чем прошивать.
Продолжаю попытки сделать модуль bluetooth как в развивающем детском конструкторе Znatok Arduino Mobile с помощью которого можно управлять своей самоделкой с мобильного телефона. Если верить инструкции стр 86, то используется модуль MLT-BT05. Собрал, заработало, через arduino модуль видится, но соединяться с Android смартфоном отказывается. В интернете много говорится о наличии проблемы соединения с android у MLT-BT05, а у его собрата HM10 таких проблем нет. Вид и схемотехника обоих модулей одинаковая. Поэтому пробуем перепрошить и посмотрим что получится!!!
Все что рассказывается в статье может быть применено не только не только для конструктора Знаток, но и для любого конструктора на базе arduino и bluetooth модулей на базе микросхем cc254X.
Ядром Bluetooth модуля является контроллер CC2541 c 256Кб flash памяти.
Начинаем....
Аппаратная часть
Нам необходимы:
- Bluetooth модуль MLT-BT05 на базе микросхемы cc2541
- Модуль Arduino или модуль 111 Arduino из детского конструктора Знаток. Последний у меня имеется.
- Блок питания на от 3.6 до 5 вольт (необязательно). При использовании любой arduino можно запитать с её вывода 5V. Но в конструкторе Знаток по питанию впаян диод, поэтому потребуется дополнительный источник питания
- (Желательно) Конвертер логических уровней 3.3-5 вольт. Но как показывает практика, контроллер до 5 воль выдерживает. Я на свой страх и риск буду делать без такого конвертера
- Пучек проводов, паяльник и стремление к прекрасному
Общая схема подключения:
Для прошивания будем использовать open source проект - CCLoader, который в некоторой части заменяет CCDebugger от TI (Texas Instruments).
В Arduino будет закружен скетч, который принимает питание и команды от CCLoader по USB (в arduino встроен контроллер USB -> COM port).
Arduino подключен к портам отладки (debugg) котроллера bluetooth сс2541.
Если используется модуль arduino из конструктора знаток, то подключаем из набора Li-ion блок на 3.7В, блок батареек на 3 или 4 батарейки.
В соответствии с datasheet на чип от TI cc2541 для программирования используются порты (контакты на микросхеме) P2_2, P2_1, Reset.
P2_2 - DC - Debug Clock
P2_1 - DD - Debug Data
В режим отладки контроллер переводится двумя фронтами на DC при низком уровне на Reset, а потом поднятием уровня на Reset. Далее по двунаправленной линии DD передаются биты команд отладки, а DC используется для синхронизации. Всем этим будет заниматься модуль arduino.
Доработка модуля MLT-BT05:
Аккуратно канцелярским ножом прорезаем защитную оболочку, что бы не перерезать резисторы
Припаиваем 3 провода для отладки. питания 5 вольт и землю подключим через штатный разъем (контакты у меня подогнуты в другую сторону, что бы уместить в стандартные размеры модуля конструктора Знаток).
Аккуратно все сцепляем, что бы не отвалилось. На моем самодельном модуле для знатока получилось так
Собираем схему
Использовал Arduino модуль 111 конструктора Знаток (Arduino nano) и дополнительный аккумулятор для питания. Если использовать обычный arduino, то аккумулятор можно просто отключить, так как питание будет браться с компьютера через USB и arduino.
к D9 подключен черный красный провод - reset (cc2541)
к D6 подключен черный провод - DD (cc2541)
к D5 подключен синий провод - DC (cc2541)
Делаем из Arduino программатор
Скетч для arduino брал тут
Ставим Arduino IDE. У меня с далеких времен стоит версия 1.8.16. Можно использовать более новую, но для конструктора знаток все адаптировано под 1.8, поэтому она и стоит.
Скачиваем весь проект или только файл CCloader.ino
Открываем в arduino IDE и корректируем номера портов, что бы были как у нас по схеме. И заливаем в arduino
Обращаем внимание на порт к которому подключена arduino. Этот порт потом будем указывать для CCloader.
Прошиваем Bluetooth модуль MLT-BT05
Все тут же берем CCLoader. В папке CCLoader-master\Windows\CCLoader.exe
У меня 64 разрядная версия не могла прошить, поэтому использовал CCLoader.exe. Копируем в эту папку файл с прошивкой из CCLoader-master\bin\
В поиске Windows вводим cmd.ece и у нас откроется командная строка (как в старом MS_DOS 6.22). Что бы перейти в нежную папку используем команду CD и имя папки:
>cd c:\...\...\...CCLoader-master\bin\ (полный путь папки можно получить вверхней строки Проводника)
Иногда программа не сразу видит arduino по com порту. Просто делам Сtrl+C и перезапускаем команду
> CCLoader.exe 4 CC2541hm10v540.bin 0
где 4 - это номер com порта, видели при загрузке в arduino ide.
Вот так выглядит если нет контакта с MLT-BT05 или как в моем случае я не подключил на него аккумулятор с питанием:
После включения питания , все получилось:
Внимание
После перепрошивки модуль перестал мигать светодиодом, определяться bluetooth.
Я перепробовал много других прошивок, результат немного отличается, но модуль нормально не работает.
Чип при это работает принимает новые прошивки.
Вывод
1. Получили программатор для bluetooth модуля на базе CC2541/СС2540
2. Существующие прошивки в свободном доступе для HM10 не подходят для китайского клона в лице MLT-BT05, несмотря на якобы одинаковый чип. А кроме чипа cc2541 там фактически больше ничего другого и нет. Значит надо разбираться с прошивками. Сам котроллер жив
3. Прежде чем заливать новую прошивку, надо научиться считывать старую
Доковырял тему со считыванием прошивки тут
Есть следующие варианты дальнейшего развития:
1. Сделать считыватель прошивок и считать прошивку из точно такого-же модуля. Тут придется купить еще один модуль MLT-BT05 или попросить кого-то из подписчиков прочитать прошивку
2. Поднять из примеров программ от TI SDK BLE для этого чипа и расширить AT командами для достаточности работы с Arduino (здесь получилось в среде разработки IAR написать и запустить программу на котроллере. IAR используется официально TI для SDK BLE, так что первый шаг уже сделан)
3. использовать CC2541 как контроллер для обучения сына и для этого вывести наружу несколько портов P1_x и P0_X на внешний разъем. Пример программы на этом контроллере тут.