App Inventor 2 — автоподключение к Bluetooth-устройству
В предыдущем руководстве я показал, как подключить Android-приложение на App Inventor к Bluetooth-модулю, подключённому к Arduino, для управления светодиодом. Смотрите Включение и выключение светодиода с Arduino, HC-06 и Android.
Несколько человек спрашивали, как сделать так, чтобы приложение автоматически подключалось к Arduino при запуске, и я решил предложить своё решение. Этот пример расширяет предыдущее руководство.
Самый простой способ добавить автоподключение — использовать фиксированный адрес и поместить вызов функции подключения в блок Screen1.Initialize. Поскольку блок Screen1.Initialize запускается автоматически при старте приложения, приложение будет пытаться установить соединение при каждом запуске.
Это быстро и просто, но MAC-адрес Bluetooth-модуля жёстко задан в приложении, и для его изменения нужно менять приложение и перекомпилировать. Это делает очень сложным использование другого Bluetooth-модуля.
Лучший способ — позволить пользователю подключиться к любому BT-модулю и затем сохранить адрес для следующего раза. При повторном запуске приложение может использовать сохранённый адрес для автоподключения к Bluetooth-модулю. Сохраняя адрес при каждом новом подключении, пользователь может легко менять Bluetooth-модули.
Приложение
При первом запуске приложения нет сохранённого адреса, и приложение ожидает, пока пользователь установит соединение.
При следующем запуске приложение попытается автоматически подключиться к сохранённому устройству.
Экран дизайнера
Необходимые элементы экрана:
Необходимые невидимые компоненты:
Блоки
Основные детали
Когда приложение запускается, вызывается функция Screen1.Initialize. Она извлекает сохранённый адрес Bluetooth из TinyDB и копирует его в глобальную переменную savedDeviceAddress, затем запускает таймер. Если сохранённого адреса нет, переменная устанавливается в "" и таймер не запускается.
Я использую таймер, чтобы обойти небольшую неприятность, вызванную особенностями работы App Inventor. Если блоки подключения размещены непосредственно в функции Screen1.Initialize, процесс подключения работает, но экран не обновляется корректно и текст кнопки «Connecting» не отображается.
Когда таймер срабатывает, вызывается функция Clock1.Timer. Именно здесь приложение пытается подключиться к сохранённому адресу Bluetooth. Если подключение успешно, текст кнопки BT_BUTTON меняется на «Connected». Если подключение не удалось, отображается сообщение об ошибке. Функция также проверяет, включён ли Bluetooth, перед попыткой подключения.
Кнопка BT_BUTTON позволяет устанавливать новые подключения — при нажатии она активирует список и позволяет пользователю выбрать другое устройство. При новом подключении MAC-адрес подключённого BT-модуля сохраняется в TinyDB.
Остальной код аналогичен предыдущему примеру. Для подробностей смотрите Включение и выключение светодиода с Arduino, HC-06 и Android.
Скачать
Скачать файл App Inventor aia — arduinoBTcontrol_Basic_Saved_Connection (92.78 KB)