г. Москва, ул.Новороссийская, дом 21, к.64. м.Люблино,ПН-ПТ с 10.00 до 19.30 и СБ с 12.00 до 16.00
+7(985) 997-37-74
02.08.2016

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

02.08.2016

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

 

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

В качестве Bluetoothмодуля испльзуем Arduino ZigBee и Bluetooth Bee на базе BluetoothHC-06.

 Итак, давайте соберем схему нашей домашней метеостанции:

 


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

Arduino

VCC(3.3V)

GND

SDA(A4)

SCL(A5)

BME280

VCC

GND

SDA

SCL

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

#include <BME280.h>
BME280 bme;
bool metric = false;
void printBME280Data(Stream * client);
/* === Print a 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("Could not find BME280 sensor!");
    delay(1000);
  }
}

void loop() {
  printBME280Data(&Serial);
  delay(500);
}

void printBME280Data(Stream* client) {
  float temp(NAN), hum(NAN), 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);                // Parameters: (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 компьютера и можем проверить вывод данных в программе BluetoothSerialTerminal (Windows) либо любой другой.

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

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

 

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