Паяльник

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Паяльник » Микроконтроллеры » Метеостанция, часы на TM1637 и 7-сегментных LED индикаторах


Метеостанция, часы на TM1637 и 7-сегментных LED индикаторах

Сообщений 1 страница 4 из 4

1

Добрый день.

Вашему вниманию представляю метеостанцию состоящую из датчиков температуры и влажности DHT-11, давления BMP085, часов реального времени RTC1307, и работающая от USB зарядника мобильного телефона.
Вывод данных осуществляется на переделанный модуль TM1637, был заменен штатный маленький индикатор 0,36" красного свечения, на 0,56" Green
штатный индикатор имел только разделительное : , на новом же имеется 4 разделительные точки
Все подключения понятны из текста скетча, библиотеки можно легко найти в сети.

Фото

http://s5.uploads.ru/t/N3yLQ.jpg   http://sg.uploads.ru/t/UY9bz.jpg
http://s3.uploads.ru/t/Z3IsQ.jpg     http://s8.uploads.ru/t/Fs8uU.jpg
http://s8.uploads.ru/t/Kl4Uh.jpg

Скетч

Код:

#include "TM1637.h"
// знак градус B01100011 = 0x63 hex
// буква H. B11110110 = 0xF6 hex
// точка 0b10000000 = 0x80 hex
// dp-G-F-E-D-C-B-A BIN
//     A
//   F   B
//     G 
//   E   C
//     D

#define CLK 11 // Пины подключения TM1637       
#define DIO 12
TM1637 tm1637(CLK,DIO);
int8_t DigTime[] = {8, 8, 8, 8}; // проверка сегментов LED индикатора

#include <DHT.h>
#define DHTTYPE DHT11   // тип датчика влажности DHT22 (AM2302)/DHT11
#define DHTPIN A2       // пин подключения датчика влажности DHT22
DHT dht(DHTPIN, DHTTYPE);

#include <DS1307.h>
DS1307  rtc(SDA, SCL);  // пины RTC для UNO A4, A5
Time  t;

#include <Wire.h>
#include <BMP085.h>
BMP085 bmp = BMP085();
long Temperature = 0, Pressure = 0;
// Подключение Датчика давления
// Arduino Uno - BMP180
// Any Arduino pins labeled:  SDA  SCL
// Uno, Redboard, Pro:        A4   A5

#define Pause 10000  // 10 сек

void setup(){
  
  // Инициализация датчика BMP180
  Wire.begin(); 
  delay(1000);
  bmp.init();
  
  tm1637.init();
  tm1637.set(BRIGHTEST); 
  //BRIGHT_TYPICAL = 2, BRIGHT_DARKEST = 0, BRIGHTEST = 7
  tm1637.clearDisplay(); 
  tm1637.display(DigTime);
  delay(1500);
  
  dht.begin(); // Подключаем сенсор DHT
  delay(1000);
  
  // Initialize the rtc object
  rtc.begin();  
  // Set the clock to run-mode
  rtc.halt(false);
 
}
void loop(){
  
    t = rtc.getTime(); // зависает без команды rtc.begin();
    int hour = t.hour;
    int minute = t.min;
    DigTime[3] = minute %10 ;
    tm1637.display(3,DigTime[3]);
    DigTime[2] = (minute % 100) / 10 ;
    tm1637.display(2,DigTime[2]);
    DigTime[1] = hour % 10 ;
    tm1637.point(POINT_ON); // включаем точку
    tm1637.display(1,DigTime[1]);
    DigTime[0] = (hour % 100) / 10 ;
    tm1637.point(POINT_OFF); // выключаем точку
    tm1637.display(0,DigTime[0]);
   // tm1637.display(DigTime);
    delay(Pause);
    
  int humidity = dht.readHumidity();
  int temp = dht.readTemperature();
  int digitT1 = temp / 10;
  int digitT2 = temp % 10;
  int digitH1 = humidity / 10;
  int digitH2 = humidity % 10;
    tm1637.display(0,17); // " "
    tm1637.display(1,digitT1); 
    tm1637.display(2,digitT2);
    tm1637.display(3,12); // 12 код буквы C, меняем на знак градуса 0x63 в файле TM1637.cpp см. выше шапку
    delay (Pause);
    
    tm1637.display(0,17); // " "
    tm1637.display(1,digitH1); 
    tm1637.display(2,digitH2); 
    tm1637.display(3,15); // 15 код буквы F, меняем на H.
    delay(Pause);
    
    bmp.getPressure(&Pressure);
    tm1637.display(Pressure/133.3); //Выводим давление в мм.рт ст
    tm1637.display(3,17); // " "
    delay(Pause);
    
     bmp.getTemperature(&Temperature);
    tm1637.display(Temperature*0.1); // Температуру в градусах Цельсия
    tm1637.display(2,12); // значок градус
    tm1637.display(3,17); // " "
    delay(Pause);
        
}

Отредактировано Technik (2018-10-12 13:00:51)

0

2

Напишите пожалуйста марку и распиновку данных индикаторов. И еще может ли данная метеостанция измерять отрицательные температуры ?

0

3

DHT-11 измеряет только положительную температуру, поэтому можно использовать в качестве комнатного термометра. Индикатор подойдет любой, на али не нашел отдельно зеленый 0,56" поэтому пришлось колхозить из того что было. Однако данный индикатор уступает современным по яркости например Часы на RTC1302 и TM1637.

Распиновка индикатора VQE24
http://sd.uploads.ru/t/OmyDZ.png

Отредактировано Technik (2018-11-13 06:02:24)

0

4

Переключение экранов можно сделать не используя функцию delay, например при помощи функции millis()

0


Вы здесь » Паяльник » Микроконтроллеры » Метеостанция, часы на TM1637 и 7-сегментных LED индикаторах


создать форум