logo
+7 (495) 997-37-74
Москва, ул.Международная, 15




02.08.2016

Гидрометеоцентр в каждый дом. Bluetooth погодная станция Arduino

02.08.2016

Как часто мы слушаем прогноз погоды, и, доверяя обещаниям синоптиков о хорошей и ясной погоде, не берем с собой зонт и идем на работу или учебу в легкой одежде? Думаю такая ситуация случалась в жизни каждого из нас. Так вот теперь, благодаря устройству описанному ниже, вы сможете быть в курсе того, что творится за окном в данный момент. Итак, на этот раз мы будем собирать погодную станцию на Arduino с возможностью передачи данных по Bluetooth на компьютер.

Для нашей погодной станции мы будем использовать датчик BME280. Он хорош тем, что уже имеет на борту не только термодатчик и датчик давления, но и гигрометр для измерения влажности окружающего воздуха. Диапазон измерения влажности от 0 до 100%. Большинство дешёвых гигрометров способны измерять влажность лишь в диапазоне от 20 до 80%.

В качестве Bluetooth модуля мы использовали Arduino ZigBee и Bluetooth Bee на базе Bluetooth HC-06. Итак, давайте соберем схему нашей домашней метеостанции.

 

Схема подключения BME280 к Arduino:

Arduino

VCC(3.3V)

GND

SDA(A4)

SCL(A5)

BME280

VCC

GND

SDA

SCL

Теперь скачаем библиотеку для BME280 и составим простейший скетч для считывания данных с датчика и отправки их по Bluetooth:

#include <BME280.h>

BME280 bme; bool metric = false;
void printBME280Data(Stream * client);
/* Print message to stream with the altitude and dew point */ void printBME280CalculatedData(Stream* client);
void setup() {  Serial.begin(9600);  while (!Serial) {} // wait  while (!bme.begin()) {    Serial.println("Not find BME280!");    delay(1000);  } } void loop() {  printBME280Data(&Serial);  delay(500); } void printBME280Data(Stream* client) {  float temp(NAN);
float hum(NAN);
float pres(NAN);
 uint8_t pressureUnit(3); // unit: B000 = Pa, B001 = hPa, B010 = Hg, B011 = atm, B100 = bar, B101 = torr, B110 = N/m^2, B111 = psi
 bme.ReadData(pres, temp, hum, metric, pressureUnit); // float& pressure, float& temp, float& humidity, bool hPa = true, bool celsius = false
 Serial.print(pres * 1013.25); //переводим в миллибар, норма 761 мм.рт.ст=1014мбар  Serial.print(",");  Serial.print((temp - 32) * 5 / 9, DEC); Serial.print(",");  Serial.print(hum, DEC);  Serial.print(",");  Serial.print("|");
 delay(100); }

Подключаем плату Arduino по Bluetooth к компьютеру и можем проверить вывод данных в программе Bluetooth Serial Terminal (Windows), либо в любой другой подобной.

Но вывод текстовой информации не так красив и информативен. Поэтому сделаем для нашей станции графический интерфейс. Для создания его воспользуемся языком программирования Processing. Это легкий и быстрый инструментарий для проектирования интерфейсов и анимации. Основан Processing на языке Java.

Была составлена следующая программа (код в архиве) и получен следующий результат:

 

Если Вам понравился проект, то расскажите о нём своим друзьям и знакомым, сделав репост и поставьте лайк. Это послужит нам стимулом для создания новых интересных проектов.