В начало | Зарегистрироваться | Заказать наши киты почтой
 
 
 
 

Визуализация для микроконтроллера. Часть 4. Android

📆30 марта 2017   ✒️erbol   🔎13.746   💬0  
Вообще то я планировал рассказать сегодня про дисплей на базе ILI9481. Однако, он настолько похож на своего собрата из предыдущей части статьи, что, если вы сравните даташиты ILI9341 и ILI9481, то обнаружите совпадение даже числовых значений всех основных команд. Кстати, то же самое можно сказать и о контроллере ILI9488.

Поэтому я решил не утомлять читателя практически полным дублированием информации и лишь выложить в архив код: с помощью упомянутой статьи вы легко запустите оба дисплея.

Освободившееся же время можно потратить с большей пользой и рассмотреть ещё один вариант визуализации для микроконтроллера – Android.
Существует несколько способов обмена информацией между микроконтроллером (МК) и 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 указаний об изменении скорости и направления вращения двигателя и исполняет их при поступлении.
Ниже приведена таблица соединений блока.

Визуализация для микроконтроллера. Часть 4. Android

Поясню отдельные моменты:
1. Двигатель подключается к выводам драйвера 3(1Y) и 6(2Y).

2. Выводы 8(VCC2) и 16(VCC1) замкнуты, поскольку напряжение питания МК и мотора одинаковые: 5 В. В случае более высокого напряжения подавать его следует отдельно, на вывод 8(VCC2).

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». Проверив пароль, приложение перейдёт в главное окно, в тестовом поле которого уже отобразится текущая температура, а слайдер будет активирован.

Коротко о программе. В состав приложения кроме указанных активити (окон) входит сервис. Именно он осуществляет соединение и обмен информацией между Android и МК-блоком. Чтобы изображение на дисплее не тормозило, приём и передача данных выведены в отдельные потоки. Общение между активити и сервисом осуществляется посредством широковещательных сообщений.

Поклонникам ARDUINO

В архивы к статье выложены два варианта устройства: для ATtiny85 и Arduino UNO/Nano. В первом случае распиновка такая же, как в таблице выше. Во втором, мотор подключается к выводам D5 и D6, DS18B20 - к D7, а Bluetooth-модуль – к RX и DX.

Заключение

Сегодня мы рассмотрели устройство с ОС Android как средство визуализации для МК. Однако, этим способы его применения не исчерпываются. Вы можете использовать ваш смартфон или планшет не только как дисплей, экономя на покупке последнего, но и как пульт управления, успешно заменив механические кнопки и энкодеры на виртуальные. Есть и другие аппаратные бонусы: гироскоп, акселерометр, дополнительный контроллер с кучей памяти в придачу.

Кроме того, вы получаете возможность перевести свои проекты на иной качественный уровень, используя Wi-Fi, выход в интернет, сотовую связь, отправку/приём сообщений.
И все эти прелести обеспечены просто гигантским массивом проверенных, обкатанных и постоянно расширяемых библиотек и широким интернет-сообществом профессионалов и любителей.

Единственно, что потребуется от новичка - упорство и терпение при изучении языка программирования. Но я не сомневаюсь в том, что и того и другого у вас с избытком!

Файлы

1. 🎁Код для дисплея ILI9481, включая HEX-файл - ili9481_code.7z  2.86 Kb ⇣ 112
2. 🎁Код для ATiny85, включая HEX-файл - androidatiny85.7z  7.09 Kb ⇣ 96
3. 🎁Два варианта скетча для Ардуино - androidarduino.7z  3.46 Kb ⇣ 88
4. 🎁Проект «Android Studio» - androidstudioproject.7z  22.72 Mb ⇣ 119
5. 🎁Приложение "Термометр" для Андроида - apk_file.7z  1.03 Mb ⇣ 102

Благодарю за внимание! :bye:

Камрад, рассмотри датагорские рекомендации

🌼 Полезные и проверенные железяки, можно брать

Опробовано в лаборатории редакции или читателями.




 

Читательское голосование

Нравится

Статью одобрил 71 читатель.

Для участия в голосовании зарегистрируйтесь и войдите на сайт с вашими логином и паролем.
 

Поделись с друзьями!

 

 

Связанные материалы

 

Схема на Датагоре. Новая статья Elect_60: программа микроконтроллерного управления внешними устройствами от ПК... Многие наши коллеги желающие создать микроконтроллерное устройство, управляемое от ПК сталкиваются...
Схема на Датагоре. Новая статья Вторая жизнь лампового радиоприемника Philips 592LN (Голландия, 1947). Часть 4. Модуль BlueTooth OVC3860... Привет, датагорцы! В этой части моего повествования речь пойдёт о модуле BlueTooth OVC3860 (далее...
Схема на Датагоре. Новая статья Управление шаговым двигателем с ПК... Драйвер для шагового двигателя, который управляется с персонального компьютера. Привет всем! Решил...
Схема на Датагоре. Новая статья Беспроводной канал связи 2,4 ГГц на базе трансивера nRF24L01+ от Nordic Semiconductor. Часть 3... В отличие от предыдущих двух, эта часть посвящена самым что ни на есть начинающим, а посему...
Схема на Датагоре. Новая статья Домашний CNC. Часть 1. Драйвер шагового двигателя для мини-станка с ЧПУ... При конструировании очередного станка с ЧПУ, а попросту 3-х осевого фрезерного-сверлильного...
Схема на Датагоре. Новая статья Микроконтроллерный регулятор мощности на Atmega16... На фото представлен действующий макет регулятора мощности, схема которого (с небольшими...
Схема на Датагоре. Новая статья Машинка с пропорциональным управлением по Bluetooth из-под Android... Не будем покупать плохие игрушки у Китайцев, а купим у них дешевый конструктор-шасси, несколько...
Схема на Датагоре. Новая статья Предварительный усилитель на аудиопроцессоре TDA7318 (TDA7313) и Arduino. Часть 1... Благодарим Тимофея Носова за идею проекта на TDA7318. При построении усилителя звуковой частоты,...
Схема на Датагоре. Новая статья Программа для лабораторного блока питания с микропроцессорным управлением на ATMega16... Обещанный релиз первого варианта "правильной" программы к статье Сделай сам лабораторный...
Схема на Датагоре. Новая статья Автоматический выключатель и защита сабвуфера на микроконтроллере PIC12F675... Проект разрабатывался для сабвуфера, предполагалось его автоматическое включение при появлении...
Схема на Датагоре. Новая статья Беспроводной канал связи 2,4 ГГц на базе трансивера nRF24L01+ от Nordic Semiconductor. Часть 2... Продолжаем разговор. Как-то раз мы с пацанами решили соединить Микроконтроллер Attiny85 на Али...
Схема на Датагоре. Новая статья Робот "без мозгов" на L293D... В последнее время так и получается что собираю разные „игрушкоподобные” конструкций. Вот и пришла...
 

Комментарии, вопросы, ответы, дополнения, отзывы

 

Добавить комментарий, вопрос, отзыв 💬

Камрады, будьте дружелюбны, соблюдайте правила!

  • Смайлы и люди
    Животные и природа
    Еда и напитки
    Активность
    Путешествия и места
    Предметы
    Символы
    Флаги
 
 
В начало | Зарегистрироваться | Заказать наши киты почтой