DIY термометр для «Инстаграм» на arduino nano

в 14:46, , рубрики: arduino, DIY, diy или сделай сам, Разработка для интернета вещей, Разработка под android, смартфон, Электроника для начинающих

Продолжаем делать полезные и не очень смарт/умные/bluetooth девайсы на ардуино. В предыдущих статьях я рассказывал как сделать bluetooth машинку, bluetooth вольтметр и bluetooth пульт для телевизора, а сегодня речь пойдет о создании более модного, но менее полезного девайса. Этот давайс позволяет постить в instagram показания термометра с указанием точного времени и места производимых замеров температуры. Сначала покажу как это выглядит и работает на видео, а подробное описание будет уже под катом.


А вот так будут выглядеть результаты измерений в «Инстаграм»:
DIY термометр для «Инстаграм» на arduino nano - 1
Теперь вкраце расскажу о конструкции и схеме подключения. Мой bluetooth/instagram термометр состоит из:
Ардуино Нано
Bluetooth модуль HC06
Датчик температуры и влажности DHT11
Вообще, датчик температуры можно использовать любой из тех, которые возможно подключить к ардуино. Я, например, пробовал еще использовать DS18B20. Главное, чтобы под этот датчик существовала библиотека для ардуино. И совсем уж идеальный случай, если в библиотеке есть готовый скетч, который отправляет значения температуры в serial port. Тогда можно использовать именно этот скетч для передачи данных через bluetooth модуль. Тут все очень просто, но на всякий случай оставлю схему подключения и скетч для датчика DHT11, если кто-то захочет использовать именно его. Библиотека для dht 11

скетч
#include «DHT.h»
#define DHTPIN 2
#define DHTTYPE DHT11 // DHT 11
DHT dht(DHTPIN, DHTTYPE);
unsigned long a;
void setup() {
Serial.begin(9600);
Serial.setTimeout(4);
dht.begin();
}

void loop() {
delay(2000);
float h = dht.readHumidity();
float t = dht.readTemperature();
float f = dht.readTemperature(true);
if (isnan(h) || isnan(t) || isnan(f)) {
Serial.println(«Failed to read from DHT sensor!»);
return;
}
if (Serial.available())
{ a = Serial.parseInt();
if (a==1) {
float hi = dht.computeHeatIndex(f, h);

Serial.print(«Humidity: „);
Serial.print(h);
Serial.print(“ %t»);
Serial.print(«Temperature: „);
Serial.print(t);
Serial.print(“ *C „);
}
}
}

DIY термометр для «Инстаграм» на arduino nano - 2
С “железной» частью разобрались, теперь можно приступать к написанию android-приложения. Проще всего его сделать используя среду визуальной разработки android-приложений App Inventor 2. Работает она из браузера, устанавливать ничего не нужно. Разберется любой ардуинщик. На скриншоте список элементов, используемых в приложении, их рассположение и некоторые характеристики.
DIY термометр для «Инстаграм» на arduino nano - 3
Само приложение тоже довольно простое и выглядит так:
DIY термометр для «Инстаграм» на arduino nano - 4
Состоит приложение всего из 5 блоков, два из которых (Listpicker) отвечают за подключение к одному из сопряженных bluetooth устройств. Screen1 выполняется только при запуске программы, доставая из памяти телефона мак-адрес последнего подключенного устройства, а также запуская определение адреса местоположения смартфона. Clock1 отвечает за смену показаний секундомера и проверяет, поступилп ли новая информация о температуре. Button1 отправляет запрос на ардуино для обновления информации, если понадобится.
Ну и в заключении про внешний вид bluetooth/instagram термометра. Работает этот девайс у меня на балконе, поэтому воздейстрию природных явлений не подвержен, а следовательно и корпус ему не к чему.Возможно, если найдется какое-то простое решение для корпуса, когда-нибудь установлю его за окном, А пока выглядит bluetooth/instagram термометр так:
DIY термометр для «Инстаграм» на arduino nano - 5
Ну а андроид-приложение получилось таким:
DIY термометр для «Инстаграм» на arduino nano - 6
P.S. Для тех, кто вообще никогда не сталкивался с созданием приложений в App Inventor 2, я сделал видео с чуть более подробным описанием процесса создания этого приложения.

Автор: malyazin_2010

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js