Как часто мы слушаем прогноз погоды, и, доверяя обещаниям синоптиков о хорошей и ясной погоде, не берем с собой зонт и идем на работу или учебу в легкой одежде? Думаю такая ситуация случалась в жизни каждого из нас. Так вот теперь, благодаря устройству описанному ниже, вы сможете быть в курсе того, что творится за окном в данный момент. Итак, на этот раз мы будем собирать погодную станцию на 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.
Была составлена следующая программа (код в архиве) и получен следующий результат:
Если Вам понравился проект, то расскажите о нём своим друзьям и знакомым, сделав репост и поставьте лайк. Это послужит нам стимулом для создания новых интересных проектов.