Погодная станция на базе Arduino содержит несколько датчиков информация которых передается при помощи Bluetooth модуля HC-06 в приложение Android. Всего используется 3 датчика, это DS18B20 для измерения температуры на улице, BMP280 датчик давления и температуры для использования в помещении и датчик влажности DHT11.
Фактически Вы можете использовать датчик BME280 взамен BMP280 и DHT11, при этом Android приложение не будет нуждаться в доработке, так как оно просто выводит содержимое массива чисел отправляемое Arduino.
Массив чисел имеет следующий вид:
Все числа разделены друг от друга при помощи двоеточия. Первое число значение датчика DS18B20, второе DHT11, третье и четвертое это данные BMP280.
Передача информации между Arduino и Android происходит при помощи Bluetooth модуля HC-06, подробнее ознакомится с модулем в статье — Arduino HC-06 (подключение, управление реле)
Для нормальной загрузки скетча Вам понадобятся следующие библиотеки:
- DHT.h
- DallasTemperature.h
- OneWire.h
- Adafruit_Sensor
- Adafruit_BMP280 (Может потребоваться изменение адреса I2C http://rcl-radio.ru/?p=47046)
#include <Wire.h> #include <OneWire.h> #include <DallasTemperature.h> #include <EEPROM.h> #include <SPI.h> #include <Adafruit_Sensor.h> #include <Adafruit_BMP280.h> #include <DHT.h> DHT dht(7, DHT11); // выход DAT подключен к цифровому входу 2 OneWire oneWire(A0);// вход датчика 18b20 DallasTemperature temp(&oneWire); Adafruit_BMP280 bmp; // I2C int h; float k,p,t2; void setup(){ Serial.begin(9600); Serial.setTimeout(50); Wire.begin(); bmp.begin(); dht.begin(); temp.begin(); temp.setResolution(12);//12 бит } void loop() { /// измерение температуры, давления и влажности temp.requestTemperatures(); k = temp.getTempCByIndex(0); p = bmp.readPressure()/133.3224; t2 = bmp.readTemperature(); h = dht.readHumidity(); /// отправка данный в android Serial.print(k,1); Serial.print(":"); Serial.print(h); Serial.print(":"); Serial.print(p,1); Serial.print(":"); Serial.println(t2,1); }
Подключение датчиков к плате Arduino очень простое, BMP280 подключается к шине I2C, DHT11 к D7 (может быть изменено), DS18B20 к A0 (может быть изменено).
Приложение — Weather_station.apk.zip
Исходники (Android Studio) — Temp2.zip