В этом руководстве мы собираемся создать простой телефонный термометр с подключением USB OTG на основе миниатюрной платы Digispark ATtiny85 из экосистемы Arduino, которая может подключаться к нашему мобильному телефону через адаптер OTG и считывать температуру чего угодно в реальном времени и отображать ее с помощью последовательного монитора.
Digispark ATtiny85 будет подключаться к телефону с помощью библиотеки DigiCDC, которая позволяет Digispark отображаться на мобильном телефоне или компьютере как виртуальный последовательный порт при подключении через USB. Это делает ее похожим на стандартный Arduino и позволяет использовать последовательный монитор. Затем мы считываем температуру с помощью прецизионного термистора и используем функцию последовательного вывода данных, чтобы вывести их в последовательный монитор.
Итак, для начала загрузите и установите приложение Serial USB Terminal из Google Play Store (play.google.com/store/apps/details?id=de.kai_morich.serial_usb_terminal).
Подключение компонентов очень просто. Подключите один вывод термистора к контакту P2 платы Digispark ATtiny85. Подключите другой вывод термистора к GND. Затем подключите резистор 10 кОм между контактом P2 и 5V.
Загрузите следующий код в Digispark Attiny85 с помощью Arduino IDE.
#include <DigiCDC.h>
#define SERIESRESISTOR 10000
#define THERMISTORPIN A1
#define THERMISTORNOMINAL 10000
#define TEMPERATURENOMINAL 25
#define NUMSAMPLES 5
#define BCOEFFICIENT 3950
void setup() {
SerialUSB.begin();
}
void loop()
{
if (SerialUSB.available())
{
uint8_t i;
float average;
average = analogRead(THERMISTORPIN);
average = 1023 / average - 1;
average = SERIESRESISTOR / average;
//SerialUSB.print("Thermistor resistance ");
//SerialUSB.println(average);
float steinhart;
float presteinhart;
steinhart = average / THERMISTORNOMINAL; // (R/Ro)
steinhart = log(steinhart); // ln(R/Ro)
steinhart /= BCOEFFICIENT; // 1/B * ln(R/Ro)
steinhart += 1.0 / (TEMPERATURENOMINAL + 273.15); // + (1/To)
steinhart = 1.0 / steinhart; // Инвертирование
steinhart -= 273.15; // Преобразование абсолютной температуры в температуту по Цельсию
if (int(presteinhart) != int(steinhart))
{
SerialUSB.print("Temperature ");
SerialUSB.print(steinhart);
SerialUSB.println(" *C");
presteinhart = steinhart;
}
SerialUSB.delay(1000);
}
}
Подключите плату к телефону через разъем USB. Откройте приложение последовательного USB-терминала. Щелкните значок подключения, когда будет предложено предоставить доступ, нажмите кнопку ОК.
Чтобы начать получать значения температуры, нам нужно отправить некоторую строку, поэтому просто введите что-нибудь и нажмите «Send». Вот и все, теперь мы можем считывать температуру любых объектов в реальном времени с нашего телефона.
© digitrode.ru