Подключение смартфона к микроконтроллеру
Уже достаточно давно Гугл позволила связывать устройства на Адроиде через usb с различными микроконтроллерами, открыв API. Теперь могут ликовать все, кто занимается созданием разнообразных проектов на Ардуино, ведь теперь значительно проще будет провести отладку системы Аndroid Аrduino и, в принципе, отрегулировать их взаимодействие.
Мы уже начали знакомить читателей с возможностями связки микроконтроллера и смартфона - см. Управление устройствами со смартфона для чайников.
Но и до этого различные модули позволяли спокойно взаимодействовать Андроид и Ардуино. Давайте же разберёмся, каким образом можно реализовать проект, который будет управляться со смартфона, и что для этого потребуется.
Где можно применить связь Андроида с Ардуино
В первую очередь, необходимо задуматься о том, как применять возможность передачи сигнала с Андроид на Ардуино. Ведь прежде, чем изучать какие-то материалы, каждый здравый человек должен понимать, к чему это его приведёт в итоге. Даже если речь идёт про хобби. И действительно, возможность управления техникой с вашего смартфона уже давно перестала восприниматься, как нечто неординарное. Сейчас в большинстве телевизоров, холодильников и даже пылесосов, которые приобретаются средним классом, есть возможность передачи данных на смартфон.
Такое решение позволяет значительно упростить жизнь обывателя, ведь для того же телевизора нет необходимости постоянно покупать батарейки в пульт и искать его, если потеряется. Мы всё ближе к заветным умным домам, но некоторые предпочитают не покупать подобную технику, а самостоятельно её сконструировать.
В таком случае, связку Андроид Ардуино стоит расценивать в двух вариациях:
Вот вы выбрали подходящий проект и взялись за его реализацию. Модули и МК уже заказаны, а пока они идут, можно заняться и разработкой ПО. Ведь голый Андроид не взаимодействует с Ардуино при помощи магии.
Приложения на Андроид для взаимодействия с Ардуино
Разрабатывать утилиту мы будем не с нуля, ведь это не базис по программирования на java. Проще всего воспользоваться готовыми движками и средами с пользовательским интерфейсом, где вам, буквально, останется дописать 1-2 строчки кода, для расположенной кнопки, чтобы та заработала. Естественно, подобный подход значительно ограничивает функционал конечного продукта и неизбежно ущемляет творческий подход, но будет полезен для тех, кто хочет быстро реализовать простой проект без лишних проблем.
Для начала рассмотрим три базовых файла, которые вы встретите при проектировании программы:
- MainActivity.java – это весь код приложения на одноимённом языке, все функции и методы, которые вы записываете, сохраняются сюда.
- Activity_main.xml – макет, как несложно догадаться из расширения файла. Сюда сохраняется расположение кнопок, текста и прочих интерактивных компонентов, которые затем оживляются уже в коде.
- AndroidManifest.xml – этот файл также относится к макетам, но немного в другой сфере. Он определяет основные параметры для запуска приложения и разрешения, которые тому будут необходимы. В нашем случае это необходимость включить Bluetooth, ведь через него мы будем связываться с МК. Если вы делаете датчик, который должен отсылать информацию на большое расстояние, то, соответственно, необходимо включить и проверить работу беспроводного или мобильного интернета.
Основы приема-передачи данных
Чтобы понимать, как ваш будущий проект вообще будет работать, стоило бы изучить базовую физику электромагнитных полей. Но чтобы не перегружать лишней информацией, достаточно усвоить, что на сегодняшний день передача данных происходит тремя основными путями:
- Через usb-кабель, что подходит далеко не везде, но хороший вариант, дабы настроить проект.
- Через блютуз и смежные протоколы, например, в последнее время стало популярным использовать NTFS для управления умными устройствами. Но, так как мы говорим о проекте на МК Ардуино, то остановимся именно на блютуз.
- Через беспроводной интернет. Здесь ничего нового, по сути, ваш мобильный или микроконтроллер выступает сервером, принимающим и обрабатывающим полученные данные, а затем производящим вычисления или действия и отправляющим ответ.
Это основные способы передачи и приёма информации, вам остаётся выбрать подходящий. Для проектов, которые не будут использоваться на больших расстояниях, оптимальным вариантом по объемам кода и простоте настройки является блютуз.
Какие компонеты могут потребоваться для взаимодействия
Выше мы уже упоминали, что для проекта на Ардуино, который предполагает использование одного из методов передачи данных на расстоянии, необходимо приобрести дополнительные модули. Опять же, лучшим выбором будет блютуз. Данный модуль позволяет принимать и отправлять сигналы определённой частоты, которые улавливаются большей частью смартфонов, а соответственно, никаких проблем не должно возникнуть. Вы можете выбрать как одно из устройств, представленных в основной линейке Ардуино, так и китайские аналоги, что будет значительно дешевле.
Один из модулей, который можно взять - это Bluetooth Bee, который можно купить во многих магазинах, от DFRobot.
Всё зависит от конкретной системы и необходимой в ней «Пропускной способности». Ведь если это будет камера видеонаблюдения, то поток данных должен передаваться непрерывно и в большом количестве. А для простого датчика движения достаточно самого дешевого вай-фай модуля. Так же и с автоматизированными устройствами для умного дома.
Отталкивайтесь, при выборе каждого компонента, от своих потребностей и того, что вы собираетесь реализовывать в проекте, и не переплачивайте за те возможности, которые вам не потребуются.
Настройка соединения
Итак, вот вы создали и уже установили на смартфон приложение или его готовый аналог для управления вашим микроконтроллером с Ардуино, далее необходимо:
- Включить сам блютуз модуль в системе, запитав его от сети или аккумулятора.
- Запустить приложение на телефоне и найти нужное устройство.
- Подсоединиться к блютуз модулю с помощью дефоултного пароля или того, что вы задали при перепрошивке Ардуино.
- Отдать первые команды и проследить, как на них отреагирует система.
Здесь стоит сказать, что приложений под Ардуино в Google Play много, в следующем материале мы покажем 7 из них.
Простейший пример
Чтобы вы понимали, как примерно должен функционировать готовый проект, приведём пример с помощью всё той же надстройки на ваш светильник.
Самый простой урок по шагам смотрите по ссылке - см. Управление устройствами со смартфона для чайников. Логика по шагам такая:
- Вы подсоединяетесь к системе через смартфон.
- Нажимаете одну кнопку, и цепь размыкается или замыкается.
- Появляется или исчезает свет.
- Нажимаете кнопку на смартфоне ещё раз, и происходит обратный эффект.
Естественно, для этого необходимо изначально замкнуть цепь, включив лампочку с помощью настенного переключателя. Но это лишь условный пример того, что можно реализовать с помощью данной технологии.
В ближайших уроках мы более подробно остановимся на взаимодействии смартфонов и микроконтроллеров, сделаем вместе с вами несколько полезных уроков.
Платы Arduino и подобные микроконтроллеры делают творчество более доступным, чем когда либо, пишут MUD. Вне зависимости от целей использования – для автоматизации вашего дома или контроля светодиодных лент, или даже для защиты вашей собственности, эти удивительные маленькие технические устройства являются сердцевиной большинства электронных девайсов формата «сделай сам».
Если вам необходимо дать команду вашему Arduino изменить положение перемычек контакта (например, включить свет), то Arduino потребует от пользователя нажать на физическую кнопку или применить сенсор. Для многих проектов использование силы давления человеческого пальца или аналогичных методов управления устройствами вполне приемлемо, но что необходимо применить, если вам захотелось только собрать схему с возможностью дистанционного доступа?
Данная статья дает краткое описание шести способов соединения вашего устройства на платформе Android с любой совместимой платой Arduino.
1. ArduinoDroid позволяет создавать скетчи
Приложение является полнофункциональным IDE, которое предоставляет пользователю возможность написания кода на смартфоне, сделать загрузку ранее написанных скетчей, которые хранятся в Dropbox или Google drive и затем начать процесс компиляции.
Преимущества использования приложения ArduinoDroid очевидны. Наличие под рукой IDE позволяет оперативно вносить изменения в поля, а процесс прикрепления устройства Android является менее сложным и трудоемким, чем попытки сбалансировать громоздкий ноутбук на руках!
Явный недостаток приложения ArduinoDroid заключается в том, что написание кода на вашем девайсе может быть не очень комфортным занятием, особенно если вы будете использовать для этих целей смартфон. Вместе с тем, это слабое место приложения не является столь ярко выраженным, когда на одной чаше весов – удобство иметь под рукой ультра-портативный способ программирования на вашей плате без необходимости наличия интернет соединения, а на другой чаше весов – не слишком комфортный метод написания кода.
С другой стороны, наличие ArduinoDroid является недорогим способом обучения основам Arduino, поскольку клон платы Arduino и USB On The Go стоят несколько долларов. Для тех, кому редко доступен компьютер, приложение ArduinoDroid является отличной альтернативой!
2. Arduino Bluetooth Controller
Следующая программа в нашем списке – удачно названный Контроллер Arduino Bluetooth. Это приложение имеет большую значимость относительно триггеров на изменения в загруженных скетчах, и меньшую значимость для программирования Arduino. Контроллер Arduino по Bluetooth посылает данные на вашу плату по Bluetooth, что дает вам возможность послать серийные данные нажатием кнопки. Вам потребуется модуль Bluetooth для вашей платы, хотя модуль HC-06 широко используется и доступен всего лишь за $3.
Заслуживает упоминания тот факт, что программа загружается на английском языке, хотя на картинках Play Store указан итальянский язык!
3. Приложение Blynk для разработки проектов
Приложение Blynk является отличной разработкой для создания проектов. Гибкость и простота приложения обеспечивают интуитивный подход к триггеру событий на вашей плате. Работа с Blynk требует наличия соединения с интернетом, поскольку приложение использует свой собственный сервер. Вы можете использовать либо Wi-Fi, либо мобильные данные для обеспечения доступа к приложению Blynk, и эта возможность отлично подходит для смартфонов.
Одно из самых сильных мест приложения – это вариативность подключений к устройству. При наличии поддержки практически всех разработческих плат, вы можете соединиться с сервером на беспроводной основе, или используя ethernet и даже компьютер через USB. Сервис отлично документирован, а его интуитивное приложение обеспечивает простоту интеграции кастомизированного контроля над вашим проектом. Библиотека Blynk для Arduino IDE следит за всеми коммуникациями.
Если вы предпочитаете включать вашу кофемашину с использованием смартфона до того, как встали с постели рано утром, это приложение, действительно, для вас!
Blynk является не единственным сервисом в этой категории. Стоит обратить внимание и на такой исключительно кастомизированный сервис как Thinger.io и практически безлимитный, хотя и чрезвычайно трудный OpenHAB. Из этих трех сервисов Blynk является самым быстрым при запуске и работе, хотя в долгосрочной перспективе изучение OpenHAB является отличной идеей.
4. Коммуникация с нуля
Описанные выше приложения предполагают использование уже существующих сервисов, которые оказывают вам помощь в обеспечении различных вариантов соединения. Что необходимо предпринять для осуществления полного и тотального контроля над каждым аспектом ваших приложений к устройствам Android? Почему бы вам не решить этот вопрос самостоятельно и с нуля?
Проблема обеспечения контроля над пакетом приложений решается просто через открытие USB связи и взаимообратную передачу серийных данных между приложениями и платой Arduino. Этот вариант обеспечения контроля является одним из лучших для знакомства с Android Studio и созданием приложений в целом.
Следует заметить, что при наличии методов и способов создания приложений для устройств на платформе Android без кода, заслуживает внимание и изучение основ кодирования программного обеспечения на Java.
5. Превратить ваш Arduino в сервер
Альтернативным способом обеспечения коммуникации с вашей платой является превращение ее в крошечный сервер. Ключевое преимущество такой трансформации платы в сервер является появление возможности коммуникации с платами с любого устройства, которое может осуществлять навигацию по IP адресу или отправлять веб-запрос. Это потребует прикрепления Ethernet shield к вашей плате к домашней сети.
Если у вас нет Ethernet shield, то аналогичный эффект может быть достигнут через Wi-Fi shield или через плату, соединенную с Wi-Fi, подобно NodeMCU.
6. Инфракрасный контроль
Если вы в поиске универсального инструмента коммуникации с вашим Arduino или вам хотелось бы сыграть роль легендарного секретного агента Макгайвер, то снимите инфракрасный приемник (ИТ) с вашей старой стереоустановки или VHS плеера и используете его для коммуникации с вашей Arduino платой!
Этот способ коммуникации потребует наличия на вашем устройстве Android инфракрасного бластера. Эта специфичный метод коммуникации доступен для многих приложений, хотя из их числа Mi Remote controller является бесплатным и функционирует со многими другими домашними девайсами.
После загрузки приложений и начала их использования, вам необходимо создать простую схему для «обнаружения» инфракрасных сигналов.
Этот метод работает только в пределах линии видимости. Но этот способ беспроводной коммуникации с вашей платой является самым дешевым. Даже если вы не сможете использовать подержанные комплектующие, инфракрасный приемник стоит менее одного доллара. Для статичных девайсов, например потолочных светодиодных лент, использование инфракрасного контроля является отличным решением простой проблемы.
MainActivity.java Здесь находится выполняемый код на Java, который управляет тем, как будет функционировать приложение. activity_main.xml Содержит макет приложения, то есть, компоненты: кнопки, компоненты отображения текста и т.д. AndroidManifest.xml Здесь вы определяете, когда приложение должно запускаться, в какие права ему нужны, и к какому аппаратному обеспечению ему необходимо получить доступ.
Еще есть множество других файлов, но все они связаны друг с другом с помощью этих трех.
Макет
Мы будем использовать тот же макет, что и в USB App и Bluetooth App. Он прост и содержит минимум виджетов, необходимых для проверки соединения между устройствами.
Как вы можете видеть, он содержит виджет EditText для получения данных от пользователя, кнопки для запуска соединения, передачи данных, завершения соединения и очистки TextView . Полученные данные отображаются в TextView (пустое пространство под кнопками).
Вот часть XML кода. Поскольку код для кнопок похож, здесь он не приводится. Полный код можно скачать по ссылке в конце статьи.
Я использовал здесь RelativeLayout , а это означает, что каждый виджет расположен относительно виджетов вокруг него. Макет может быть легко воссоздан на вкладке Design Tab , где вы можете перетащить виджеты туда, куда хотите. Нам необходимо описать, что будет происходить при нажатии на кнопку. Для этого используется метод onClick . Укажите имя метода в XML коде для кнопки. Для этого добавьте строку:
Теперь наведите курсор мыши на эту строку, слева должно будет появиться предупреждение, похожее на это:
Предупреждение в Android Studio
Нажмите на варианте «Создать onClick. ». Это автоматически добавит код метода onClick в MainActivity.java . Вам необходимо выполнить это для каждой кнопки.
Библиотека USB Serial
Настройка последовательного соединения в Android довольно трудоемка, так как требует от вас ручной настройки множества вещей, поэтому я нашел несколько библиотек, которые делают всё это автоматически. Я протестировал несколько из них и, наконец, остановился на библиотеке UsbSerial от Github пользователя felHR85. Среди подобных библиотек, что я нашел, она единственная до сих пор обновляется. Ее довольно легко настроить и использовать. Чтобы добавить библиотеку в свой проект, скачайте последнюю версию JAR файла на Github. Поместите его в подкаталог libs в каталоге вашего проекта. Затем в файловом проводнике в Android Studio кликните правой кнопкой мыши на JAR файле и выберите « Добавить как библиотеку » ( Add as Library ). Вот и всё!
Алгоритм выполнения программы
Это краткий план того, как мы будем действовать. Каждая активность имеет метод onCreate() , который запускается при создании активности. Какой бы код вы ни хотели запустить в начале, он должен быть помещен внутрь этого метода. Обратите внимание, что чтение из устройства является асинхронным, то есть оно будет работать в фоновом режиме. Это делается для того, чтобы данные были получены как можно скорее.
Открытие соединения
Во-первых, давайте определим метод onClick для кнопки Begin . При нажатии необходимо выполнить поиск всех подключенных устройств, а затем проверить, совпадает ли VendorID подключенного устройства (ID поставщика) с VendorID Arduino. Если совпадение найдено, то у пользователя должно быть запрошено разрешение. Каждое ведомое USB устройство имеет ID поставщика (Vendor ID) и ID продукта (Product ID), которые могут быть использованы для определения того, какие драйвера должны использоваться для этого устройства. Vendor ID для любой платы Arduino равен 0x2341 или 9025.
Прием данных от устройства
Во фрагменте кода выше обратите внимание на строку, содержащую serialPort.read(mCallback) . Здесь функции read передается ссылка на объект Callback , который будет автоматически срабатывать при обнаружении входящих данных.
Полученные данные будут в форме необработанных байтов. Нам придется перекодировать их в читаемый формат, например, UTF-8. Затем они добавляются в TextView с помощью специального метода tvAppend() . Это делается так потому, что любые изменения в пользовательском интерфейсе могут выполняться только в потоке пользовательского интерфейса. Так как данный Callback будет запущен, как фоновый поток, то он не может напрямую повлиять на пользовательский интерфейс.
Передача данных на устройство
Передача данных относительно проста по сравнению с чтением данных с устройства. Это простой вызов функции с байтами данных, которые необходимо передать, в качестве аргумента. Это будет реализовано в методе onClick кнопки Send .
Закрытие соединения
Чтобы закрыть соединение, просто закройте последовательный порт.
Манифест приложения
Манифест объявляет, какие дополнительные разрешения могут потребоваться приложению. Единственное необходимое нам разрешение – это разрешение сделать телефон USB хостом. Добавьте следующую строку в манифест:
Приложение можно заставить запускаться автоматически, добавив фильтр интентов в главную активность MainActivity . Этот фильтр интентов будет срабатывать при подключении любого нового устройства. Вид устройства может быть указан явно с помощью ID поставщика (Vendor ID) и/или ID продукта (Product ID) в XML файле.
Обратите внимание на строку " android:resource="@xml/device_filter ". Она говорит компилятору, что он может найти свойства устройства в файле с именем device_filter в каталоге src/main/res/xml , поэтому создайте подкаталог " xml " в каталоге src/main/res и поместите в него файл со следующим содержанием:
Тестирование приложения
Соберите приложение и запустите его на своем смартфоне. Теперь запустите Arduino IDE и настройте Arduino для простого эхо всего, что плата будет принимать через последовательный порт. Вот очень простой код, помогающий сделать это:
Теперь подключите Arduino к microUSB порту телефона, используя OTG кабель. Приложение должно запуститься автоматически. Попробуйте послать какой-нибудь текст, и те же данные будут возвращены обратно!
Тестирование Android приложения для взаимодействия с Arduino
Заключение
Данная статья показывает, как Arduino может общаться с вашим смартфоном. И возможности использования этого бесконечны! В случае, когда необходимы данные с любого датчика, которого нет среди встроенных в смартфон, можно воспользоваться любым микроконтроллером для считывания данных с этого датчика и передачи их на смартфон. В следующей статье будет показано, как подключить смартфон к Arduino, используя популярный bluetooth модуль HC05.
Вообще то я планировал рассказать сегодня про дисплей на базе ILI9481. Однако, он настолько похож на своего собрата из предыдущей части статьи, что, если вы сравните даташиты ILI9341 и ILI9481, то обнаружите совпадение даже числовых значений всех основных команд. Кстати, то же самое можно сказать и о контроллере ILI9488.
Поэтому я решил не утомлять читателя практически полным дублированием информации и лишь выложить в архив код: с помощью упомянутой статьи вы легко запустите оба дисплея.
Освободившееся же время можно потратить с большей пользой и рассмотреть ещё один вариант визуализации для микроконтроллера – Android.
Содержание / Contents
Существует несколько способов обмена информацией между микроконтроллером (МК) и Android. Мы остановимся на одном из них – через Bluetooth.Для этого проекта нам понадобятся:
1. Микроконтроллер ATtiny85. Вы можете использовать любой другой, поскольку в коде использован программный вариант протоколов 1-Wire и UART. Единственно, придётся адаптировать под свой МК часть программы, связанную с прерываниями.
2. Термодатчик DS18B20 .
3. Bluetooth-модуль HC-05 или HC-06 . Строго говоря, между ними есть отличия, о чём мы поговорим чуть ниже, но для данного проекта подойдёт любой из них.
4. Драйвер двигателя постоянного тока L293D . Если напряжения питания моторчика не более 5 В, а величина потребляемого им тока безопасна для МК, можно подключить его напрямую к ШИМ-выводам МК, обойдясь без драйвера. Но, в реальном проекте мы использовали 9-вольтовый экземпляр, схема ваялась под него.
5. Сам DC-мотор. Для статьи подошёл 5-вольтовый, выдранный мальчишками уже не помню откуда. Если в вашем распоряжении окажется двигатель с бОльшим напряжением питания, придётся внести минимальные изменения в электрическую схему, но, об этом – позже.
6. Смартфон или планшет под ОС Android версии 4.4.2 и выше. Мы использовали Samsung SMT-230.
↑ Видео проекта в действии
↑ Микроконтроллерный блок
Кратко опишу алгоритм работы блока. Один раз в две секунды (период можно менять) ATtiny85 считывает из DS18B20 два байта со значением текущей температуры, переводит данный в привычный вид и отправляет по Bluetooth в Android. В оставшееся время МК ждёт от Samsung SMT-230 указаний об изменении скорости и направления вращения двигателя и исполняет их при поступлении.
Ниже приведена таблица соединений блока.
Поясню отдельные моменты:
1. Двигатель подключается к выводам драйвера 3(1Y) и 6(2Y).
3. Bluetooth-модуль HC-06 можно заменить на HC-05. Главное отличие между ними заключается в том, что HC-05 помимо режима Slave может работать и как Master, то есть сам инициировать связь, а HC-06 доступна лишь роль подчинённого. Поскольку в проекте инициатором связи выступает Android, подойдёт любой из указанных модулей. Следует также отметить, что заводские настройки модулей (8 бит данных, без проверки чётности, 1 стоп-бит, без контроля потока, скорость 9600 бит/с) как раз подходят для общения с Android, поэтому подключать их можно что называется «из коробки», не прибегая к AT-программированию.
4. Желающим использовать другой МК необходимо помнить следующее:
4.1. В стандарте драйвер L293D подключается иначе: на выводы 2(1A) и 7(2A) подаются постоянные сигналы противоположной полярности (0-1 или 1-0 в зависимости от выбранного направления вращения двигателя), а на 1(1,2EN) – ШИМ-сигнал, скважность которого определяет скорость вращения. Поскольку в заводском варианте у ATtiny85 всего пять доступных пинов, в целях вынужденной экономии был выбран другой вариант соединения: вывод 1(1,2EN) замкнут на питание, а 2(1A) и 7(2A) регулируют и скорость, и направление вращения мотора. Для этого на один из указанных пинов подаётся 0, а на второй – ШИМ-сигнал. Поэтому, оба пина МК, подключаемые к L293D, должны иметь альтернативную функцию – PWM.
4.2. Вывод TXD HC-06 соединяется с пином МК, поддерживающим внешнее прерывание INT0 или INT1.
4.3. Для передачи данных по UART и обслуживания термодатчика подойдут любые пины МК.
↑ Несколько слов о коде
Программа написана на Си в AVR Studio 4.
Поскольку возможности ATtiny85 ограничены и количеством пинов, и размером памяти, было принято решение использовать программный вариант протоколов связи с другими узлами модуля.
Протокол 1-Wire, который ATtiny85 использует для общения с DS18B20, написан на базе двух документов - Application note 126 от Maxim Integrated и AVR318 от Atmel.
При оформлении функций обмена данными для экономии памяти и машинного времени приняты следующие допущения:
1. В работе блока используется только один термодатчик. Это допущение позволяет считывать значение температуры, обходясь только тремя командами DS18B20 (Skip Rom, Convert T и Read Scratchpad).
2. Термодатчик подключен к МК, находится в исправном состоянии и не врёт. В этом случае можно отказаться от CRC-проверки.
Функции UART с небольшими изменениями и дополнениями позаимствованы из документа AVR304 от Atmel. В организации протокола участвуют два прерывания – INT0 для фиксации момента начала приёма данных из Android и прерывание таймера по сравнению для приёма/передачи данных, а также отсчёта периода измерения температуры.
Для управление мотором использован Timer1 микроконтроллера. В соответствии с информацией, полученной от Android, записываются значения в регистры OCR1A и OCR1B, что определяет наличие/отсутствие и скважность ШИМ-сигнала на выводах 3(PB4) и 6(PB1) микроконтроллера.
↑ Приложение под Android
Приложение под рабочим названием «Термометр» написано на языке Java в IDE «Android Studio». Сразу оговорюсь, что мой опыт работы с этим языком, особенно под Android, далёк от того, чтобы кого-то чему-либо учить. В программе есть недочёты, которые мне известны. А вероятно имеются и такие, о которых я даже не догадываюсь. Поэтому, вкратце изложу, что сделано и как этим пользоваться.
Для тех, кто не хочет возиться с «Android Studio», в архив выложен APK-файл. Просто закиньте его на ваш девайс, а затем найдите и установите через диспетчер файлов, после чего должно появиться приложение «Термометр» со значком снежинки.
Открыв приложение, вы попадёте в главное окно, содержащее кнопку для перехода в меню настроек, текстовое поле для вывода значения температуры и слайдер (или ползунок), управляющий скоростью и направлением вращения мотора.
Два последних элемента окна деактивированы, поскольку связь с микроконтроллерным блоком не установлена. Поэтому жмём на кнопку и переходим в окно настроек,
в состав которого входят тумблер включения/выключения Bluetooth-адаптера вашего девайса (в правом верхнем углу), списки авторизованных/найденных Bluetooth-устройств и кнопка поиска.
Сначала нужно включить адаптер. При первом использовании приложения это приведёт лишь к активации самого тумблера, списки же останутся пустыми. Жмём кнопку "Начать поиск" (при этом она поменяет название на «Остановить поиск»), предварительно подав питание на микроконтроллерный блок. После того, как ваш Bluetooth-модуль появится в списке найденных устройств, можно остановить поиск и выбрать устройство из списка. При следующем использовании приложения ваше устройство сразу отобразится в списке авторизованных.
После выбора устройства в первый раз будет запрошен пароль Bluetooth-модуля, который в заводских настройках обычно бывает «1234» или «1111». Проверив пароль, приложение перейдёт в главное окно, в тестовом поле которого уже отобразится текущая температура, а слайдер будет активирован.
↑ Поклонникам ARDUINO
В архивы к статье выложены два варианта устройства: для ATtiny85 и Arduino UNO/Nano. В первом случае распиновка такая же, как в таблице выше. Во втором, мотор подключается к выводам D5 и D6, DS18B20 - к D7, а Bluetooth-модуль – к RX и DX.
↑ Заключение
Сегодня мы рассмотрели устройство с ОС Android как средство визуализации для МК. Однако, этим способы его применения не исчерпываются. Вы можете использовать ваш смартфон или планшет не только как дисплей, экономя на покупке последнего, но и как пульт управления, успешно заменив механические кнопки и энкодеры на виртуальные. Есть и другие аппаратные бонусы: гироскоп, акселерометр, дополнительный контроллер с кучей памяти в придачу.
Единственно, что потребуется от новичка - упорство и терпение при изучении языка программирования. Но я не сомневаюсь в том, что и того и другого у вас с избытком!
Читайте также: