2232
0,6
2014-07-19
Моя погодная станция
Не так давно я начал заниматься программированием микроконтроллеров на основе плат arduino. Вещь очень интересная и практичная. На основе arduino можно создать очень много полезных устройств для себя и не только. Например можно сделать автомат автоматического включения освещения в квартире, различные роботы или квадрокоптеры.
Я не смогу перечислить все устройства которые создают на базе этих плат, да и я сегодня буду рассказывать в основном про погодную станцию которую я создал. А если вам интересно узнать больше об arduino, — спросите у гугла или яндекса.
Погодная станция состоит из платы arduino и подключенных к ней датчиков давления, влажности и двух датчиков температуры. Вторым прибором является мобильный телефон или планшет на android.
Принцип работы простой — плата считывает показания датчиков, а при запуске приложения на телефоне отправляется команда через блютуз на плату и плата отправляет показания на телефон. После этого мы уже видим температуру, давление или влажность.
Температура на улице
Давление в мм.рт.ст
и влажность в процентах
Для начала подключим 2 датчика температуры DS18B20 к arduino как показано на картинке. Датчики подключаем к 4 цифровому пину на ардуино.
Потом подключаем датчик атмосферного давления ВМР085 как на картинке
Далее блютуз модуль НС-05, можно и НС-07… Тоже как на картинке
после того как все собрано, пишем программную часть для работы платы с датчиками
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h>
#include <BMP085.h>
#include <DHT.h>
#define ONE_WIRE_BUS 4
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress Thermometer1 = {
0x28, 0x00, 0x54, 0xB6, 0x04, 0x00, 0x00, 0x92 };
DeviceAddress Thermometer3 = {
0x28, 0x94, 0xAC, 0xDF, 0x02, 0x00, 0x00, 0xB5 };
BMP085 dps = BMP085();
long Temperature = 0, Pressure = 0, Altitude = 0;
DHT dht(8, DHT11);
char incomingByte;
int x=0;
void setup() {
sensors.begin();
sensors.setResolution(Thermometer1, 10);
sensors.setResolution(Thermometer3, 10);
Wire.begin();
dps.init(MODE_ULTRA_HIGHRES, 21000, true);
dht.begin();
Serial.begin(9600);
}
void printTemperature(DeviceAddress deviceAddress) {
float tempC = sensors.getTempC(deviceAddress);
Serial.println(tempC,1);
}
void loop(){
sensors.requestTemperatures();
dps.getPressure(&Pressure);
int h = dht.readHumidity();
float t = dht.readTemperature();
if (Serial.available() > 0) {
incomingByte = Serial.read();
if(incomingByte == '1') {
x=2;
}
if(incomingByte == '2') {
x=1;
}
if(incomingByte == '3') {
x=3;
}
if(incomingByte == '4') {
x=4;
}
}
delay(100);
switch (x) {
case 1:
printTemperature(Thermometer1);
break;
case 2:
printTemperature(Thermometer3);
break;
case 3:
Serial.println(Pressure/133.3,1);
break;
case 4:
Serial.println(h);
break;
}
} Открываем сериал порт на компе при подключенной плате и проверяем работоспособность… А если точнее то отправляем 1, потом 2, 3 и 4. В итоге мы должны получать значения температуры на улице – при отправке 1, температуры в комнате – при отправке 2, давления – при отправке 3 и влажности – при отправке 4.
Добавлено в [mergetime]1405694477[/mergetime]
Если все работает, то можно качать приложение для телефона, устанавливать и пользоватся…
arduino-project.net/download/arduino-android/WSAB.apk
Добавлено в [mergetime]1405694560[/mergetime]
На видео можно посмотреть видео работы погодной станции в работе
youtu.be/z3ldbmcO8Ck
Я не смогу перечислить все устройства которые создают на базе этих плат, да и я сегодня буду рассказывать в основном про погодную станцию которую я создал. А если вам интересно узнать больше об arduino, — спросите у гугла или яндекса.
Погодная станция состоит из платы arduino и подключенных к ней датчиков давления, влажности и двух датчиков температуры. Вторым прибором является мобильный телефон или планшет на android.
Принцип работы простой — плата считывает показания датчиков, а при запуске приложения на телефоне отправляется команда через блютуз на плату и плата отправляет показания на телефон. После этого мы уже видим температуру, давление или влажность.
Температура на улице
Давление в мм.рт.ст
и влажность в процентах
Для начала подключим 2 датчика температуры DS18B20 к arduino как показано на картинке. Датчики подключаем к 4 цифровому пину на ардуино.
Потом подключаем датчик атмосферного давления ВМР085 как на картинке
Далее блютуз модуль НС-05, можно и НС-07… Тоже как на картинке
после того как все собрано, пишем программную часть для работы платы с датчиками
#include <OneWire.h>
#include <DallasTemperature.h>
#include <Wire.h>
#include <BMP085.h>
#include <DHT.h>
#define ONE_WIRE_BUS 4
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress Thermometer1 = {
0x28, 0x00, 0x54, 0xB6, 0x04, 0x00, 0x00, 0x92 };
DeviceAddress Thermometer3 = {
0x28, 0x94, 0xAC, 0xDF, 0x02, 0x00, 0x00, 0xB5 };
BMP085 dps = BMP085();
long Temperature = 0, Pressure = 0, Altitude = 0;
DHT dht(8, DHT11);
char incomingByte;
int x=0;
void setup() {
sensors.begin();
sensors.setResolution(Thermometer1, 10);
sensors.setResolution(Thermometer3, 10);
Wire.begin();
dps.init(MODE_ULTRA_HIGHRES, 21000, true);
dht.begin();
Serial.begin(9600);
}
void printTemperature(DeviceAddress deviceAddress) {
float tempC = sensors.getTempC(deviceAddress);
Serial.println(tempC,1);
}
void loop(){
sensors.requestTemperatures();
dps.getPressure(&Pressure);
int h = dht.readHumidity();
float t = dht.readTemperature();
if (Serial.available() > 0) {
incomingByte = Serial.read();
if(incomingByte == '1') {
x=2;
}
if(incomingByte == '2') {
x=1;
}
if(incomingByte == '3') {
x=3;
}
if(incomingByte == '4') {
x=4;
}
}
delay(100);
switch (x) {
case 1:
printTemperature(Thermometer1);
break;
case 2:
printTemperature(Thermometer3);
break;
case 3:
Serial.println(Pressure/133.3,1);
break;
case 4:
Serial.println(h);
break;
}
} Открываем сериал порт на компе при подключенной плате и проверяем работоспособность… А если точнее то отправляем 1, потом 2, 3 и 4. В итоге мы должны получать значения температуры на улице – при отправке 1, температуры в комнате – при отправке 2, давления – при отправке 3 и влажности – при отправке 4.
Добавлено в [mergetime]1405694477[/mergetime]
Если все работает, то можно качать приложение для телефона, устанавливать и пользоватся…
arduino-project.net/download/arduino-android/WSAB.apk
Добавлено в [mergetime]1405694560[/mergetime]
На видео можно посмотреть видео работы погодной станции в работе
youtu.be/z3ldbmcO8Ck