Bluetooth вольтметр на базе arduino

Привет, Хабр! Сегодня хочу продолжить тему «скрещивания» arduino и android. В предыдущей публикации я рассказал про bluetooth машинку, а сегодня речь пойдет про DIY bluetooth вольтметр. Еще такой девайс можно назвать смарт вольтметр, «умный» вольтметр или просто умный вольтметр, без кавычек. Последнее название является неправильным с точки зрения грамматики русского языка, тем не менее частенько встречается СМИ. Голосование на эту тему будет в конце статьи, а начать предлагаю с демонстрации работы устройства, чтобы понять о чем же пойдет речь в статье.[embedded content]Disclaimer: статья рассчитана на среднестатистического любителя arduino, который обычно не знаком с программированием под android, поэтому как и в прошлой статье, приложение для смартфона мы будем делать, используя среду визуальной разработки android-приложений App Inventor 2.Чтобы сделать DIY bluetooth вольтметр нам нужно написать две относительно независимых друг от друга программы: скетч для ардуино и приложение для андроид.Пожалуй начнем со скетча.Для начала следует знать, что существует три основных варианта измерения напряжения при помощи ардуино, не зависимо от того куда нужно выводить информацию: в com-порт, на подключенный к ардуино экранчик, или на смартфон.Первый случай: измерения напряжения до 5 вольт. Здесь достаточно одной-двух строк кода, а напряжение подается напрямую на пин А0: int value = analogRead (0);// читаем показания с А0voltage = (value / 1023.0) * 5; // верно только если Vcc = 5.0 вольтВторой случай: для измерения напряжения более 5 вольт используется делитель напряжения. Схема очень простая, код тоже.fd0af084008143a9a04c0b0c0d579915.jpg«Скетч int analogInput = A0; float val = 0.0; float voltage = 0.0; float R1 = 100000.0; //Battery Vin→ 100K → A0float R2 = 10000.0; //Battery Gnd → Arduino Gnd and Arduino Gnd → 10K → A0int value = 0; void setup () {Serial.begin (9600); pinMode (analogInput, INPUT);}

void loop () {value = analogRead (analogInput); val = (value * 4.7) / 1024.0; voltage = val / (R2/(R1+R2)); Serial.println (voltage); delay (500);}

Третий случай. Когда нужно получить более точные о напряжении в качестве опорного напряжения нужно использовать не напряжение питания, которое может немного меняться при питании от акб, например, а напряжение внутренного стабилизатора ардуино 1.1 вольт.Тут схема такая же, но код чуть длиннее. Подробно этот вариант разбирать не буду, так как он и так хорошо описан в тематических статьях, а мне вполне и достаточно второго способа, поскольку питание у меня стабильное, от usb-порта ноутбука.Итак с измерением напряжения мы разобрались, теперь перейдем ко второй половине проекта: созданию андроид-приложения. Приложение будем делать прямо из браузера в среде визуальной разработки android-приложений App Inventor 2. Заходим на сайт appinventor.mit.edu/explore/, авторизуемся с помощью гугл-аккаунта, нажимаем кнопку create, new project, и путем простого перетаскивания элементов создаем примерно такой дизайн: ee5d82ad0d3d400f98250b27140f0b47.jpgЯ сделал графику очень простой, если кому-то захочется более интересной графики, напомню, что для этого нужно использовать вместо .jpeg файлов, файлы формата .png с прозрачным фоном.Теперь переходим во вкладку Blocks и создаем там логику работы приложения примерно так: eba4fd8062214ee1bc209e5a32c3c9c4.jpgЕсли все получилось можно нажимать кнопку Build и save .apk to my computer, а затем уже скачиваем и устанавливаем приложение на смартфон, хотя есть и другие способы заливки приложения. тут уж кому как удобнее. В итоге у меня получилось вот такое приложение: a334215eb87a4a58bd24cfbe1e21b426.jpg667843e1a1f94b8f915d2ad270780242.jpgПонимаю, что мало кто использует среду визуальной разработки android-приложений App Inventor 2 в своих проектах, поэтому может возникнуть много вопросов по поводу работы в ней. Чтобы снять часть таких вопросов, я сделал подробное видео, описывающее те же самые действия, что и в статье. Надеюсь кому-то оно окажется полезным: [embedded content]Ну и в завершении обещанное мной в начале статьи голосование.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

© Habrahabr.ru