STM Урок 99. HC-05. Master. Соединяем два МК. Часть 1
В уроке 97 мы научились настроенный в обзоре модуль HC-05 в режиме ведомого устройства подключать к ведущему устройству в виде смартфона. Также мы смогли передать данные в обоих направлениях в виде строк. Данные передаются весьма уверенно, поэтому мы можем смело продолжать продвигаться вперёд по данной теме.
В рамках сегодняшнего занятия мы попробуем настроить данный модуль в качестве ведущего устройства (Master), соединить его с таким же модулем, выступающем в роли ведомого устройства, оставив его подключенным к контроллеру STM32F103. Затем мы уже модуль, настроенный в качестве ведущего устройства, подключим к аналогичному микроконтроллеру и в результате этого два контроллера у нас соединятся без проводов по беспроводному интерфейсу Bluetooth. Также к данному контроллеру мы подключим символьный дисплей разрешением 20×4 через переходник к шине I2C для того, чтобы отслеживать данные, которые будут нам приходить от ведомого устройства.
Задача на первый взгляд кажется сложной, но это вовсе не так. Мы обязательно справимся и вы поймёте. что страшного в этом нет ничего абсолютно.
Для начала давайте возьмём ещё один модуль HC-05 и также, как и в обзоре, подключим его к переходнику USB-TTL, который в свою очередь подключим к ПК и запустим терминальную программу CoolTerm также настроенную, как в том же самом обзоре. и, прежде чем подключать его к контроллеру, настроим его в режиме ведущего устройства.
Первым делом переведём наш модуль в режим работы с командами AT. Затем проверим его, отправив команду
Адрес и имя нам данного модуля нам в принципе не потребуются. Нам главное знать адрес ведомого устройства, к которому мы будем подключать ведущее.
Далее идём по пунктам:
1) Для начала произведём сброс всех настроек при помощи команды «AT+ORGL«.
2) Произведём сброс всех спаренных устройств, введя в терминал команду «AT+RMAAD«.
3) Установим в модуле режим ведущего устройства — «AT+ROLE=1«.
4) Можно установить желаемую скорость USART, например 115200 — «AT+UART=115200,0,0«. Причём не обязательно, чтобы скорость была одинаковой на модулях, они между собой договорятся.
5) Перезагрузим модуль командой «AT+RESET«. и снова переведём в режим приёма AT-команд.
6) Установим пароль ведомого устройства «AT+PSWD=1234«.
7) Вспомним адрес ведомого устройства из занятия по обзору и свяжем ведущее устройство с ведомым по команде «AT+BIND=98d3,31,4058cf«. Если не помним или не знаем адрес ведомого устройства, то его можно узнать, также подключив к USART-переходнику и терминальной программе и затем введя универсальную команду. Но если мы не можем этого сделать, например, ведомое устройство у нас куда-то впаяно и мы его не можем подключить и испытать с помощью AT-команд, то есть альтернативные способы узнавания адреса.
8) Ещё раз перезагружаемся «AT+RESET» и уже можем не переводить устройство в режим приёма команд, а только организовать поддержку, соединив на короткое время ножку KEY к ножке питания. После этого не забываем сменить скорость в терминальной программе на ту, которую мы установили в 4 шаге.
9) Добавляем пару «AT+PAIR=98d3,31,4058cf,5» (терминал в этом случае скорее всего не ответит ОК) и на всякий случай ещё раз перезагружаемся.
Теперь контроллер, к которому подключено ведомое устройство можно включить, подав на него питание. Устройства должны будут соединиться и за счёт программы, которую мы написали в уроке 97, будут приходить соответствующие данные из ведомого контроллера в терминальную программу, к которой подключен с помощью переходника ведущий контроллер. Также мы теперь можем убрать эхо из настройки порта в терминальной программе и попробовать передавать удалённо строки из неё, так как эхо у нас, как вы помните, есть своё в программе контроллера ведомого устройства. И в результате мы увидим следующую картину
Мы соединили ведущий модуль с ведомым.
Следующая задача: соединить его с контроллером, чтобы потом связать два контроллера. Для этого мы возьмём подобную маленькую отладочную плату. У меня такой же на данный момент не нашлось, есть парочка плат NUCLEO-F303K8, одну из которых мы и возьмём. У контроллера, установленного на ней всего 32 ножки, но нам много и не потребуется. Хоть данная плата стоит и недёшево, но зато она очень удобная, так как не требует наличия программатора, который в ней уже есть и также не требует переходников USART, так как данный порт виртуализирован там прямо через ST-Link. Пока мы сразу модуль HC-05 к данной плате подключать не будем, а подключим мы к ней дисплей 20х4 через переходник I2C. С данным дисплеем мы очень много занимались, поэтому он нам знаком. К каким именно ножкам подключать дисплей, мы узнаем, когда будем создавать проект в Cube MX, к чему мы, собственно, сейчас и приступим.
Вы, конечно, можете применять любые платы и любые контроллеры, которые у вас есть в наличии, не обязательно такие, как я.