Моя погодная станция

Не так давно я начал заниматься программированием микроконтроллеров на основе плат 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] Если все работает , то можно качать приложение для телефона, устанавливать и пользоватся... http://arduino-project.net/download/arduino-android/WSAB.apk Добавлено в [mergetime]1405694560[/mergetime] На видео можно посмотреть видео работы погодной станции в работе http://youtu.be/z3ldbmcO8Ck Моя погодная станция