迷你强 发表于 2013-7-15 10:45:26

[迷你DIY]arduino 桌面气象站

本帖最后由 迷你强 于 2013-8-30 10:05 编辑

本实验基础平台:气象站套件




wiki详情:http://wiki.ocrobot.com/doku.php?id=zh:weather_stations_kit   



   今天做了一个小小气象站,顺便做成套件了。这个气象站能测量当前的温度、湿度、大气压,已经有了基本的测量数据,使用了两款传感器BMP085气压计   DHT11温湿度传感器 ,一款低成本的8*8矩阵显示器。核心控制是由NANO做的。



BMP085 和 8*8矩阵是I2C通讯接口,所以直接接在一条串行总线上即可,DHT11使用单总线通讯接口,我们使用NANO做内上拉,所以可以省略上拉电路
设计图如下


很清晰明了吧。。。
附上原理图


然后我就飞线飞线在飞线,然后成品就诞生了



插好以后就把程序烧进去就行了


需要如下几个驱动库放到arduino里。。。
BMP085库
DHT11
i2c 8*8矩阵库
adafruit绘图库


/*======通用I2C驱动库调用======*/
#include <Wire.h>

/*========BMP085气压计库调用=====*/
#include <Adafruit_BMP085.h>
Adafruit_BMP085 bmp;

/*========8*8点阵库调用========*/
#include "Adafruit_LEDBackpack.h"
#include "Adafruit_GFX.h"
Adafruit_BicolorMatrix matrix = Adafruit_BicolorMatrix();


/*========DHT11传感器库调用=======*/
#include "DHT.h"
#define DHTPIN 3
#define DHTTYPE DHT11   
DHT dht(DHTPIN, DHTTYPE);

/*=========程序开始===========*/

void setup() {

bmp.begin();               //初始化气压计
dht.begin();                //初始化DHT11传感器
   pinMode(3,INPUT_PULLUP);    //使用IO口内上拉 将DHT11输出口上拉
matrix.begin(0x70);// 初始化I2C 8X8点阵屏幕的地址位
}



void loop() {

float temp = bmp.readTemperature();             //读取温度数据 (BMP085)
long pa = bmp.readPressure();   //读取气压数据 (BMP085)
float hpa = pa /100.0 ;         //将Pa换算成hPa
int hum = dht.readHumidity();                  //读取湿度(DHT11)


matrix.setRotation(2);         //显示方向
matrix.setTextWrap(false);// 文本不换行,所以以滚动方式显示
matrix.setTextSize(1);      //字号,推荐最小号
matrix.setTextColor(LED_GREEN);   //指定led颜色, 在双色点阵下有效。单色点阵请保持默认


/*===========显示温度==========*/
for (int8_t x=7; x>=-70; x--) {    //x>=-70 这个数值,如果内容很长,适当放长,如果短就适当缩短
    matrix.clear();
    matrix.setCursor(x,0);
    matrix.print("Temp:");
    matrix.print(temp,1);
    matrix.print("C");
    matrix.writeDisplay();
    delay(100);
}

/*=============显示气压============*/
      for (int8_t x=7; x>=-90; x--) {
    matrix.clear();
    matrix.setCursor(x,0);
    matrix.print("Atm:");
    matrix.print(hpa);
    matrix.print("hPa");
    matrix.writeDisplay();
    delay(100);

}
/*==============显示湿度==============*/
for (int8_t x=7; x>=-70; x--) {
    matrix.clear();
    matrix.setCursor(x,0);
    matrix.print("RH:");
    matrix.print(hum);
    matrix.print("%");
    matrix.writeDisplay();
    delay(100);
}

}



妥了

看看效果吧
http://player.youku.com/player.php/sid/XNTgwNzk0NTUy/v.swf

sufferpriest 发表于 2013-7-15 10:50:50

挺精美的样子

幻生幻灭 发表于 2013-7-15 12:15:59

难得发新帖啦~
不过这个点阵显示的信息量也够大的,估计有1M长了吧

iRobot 发表于 2013-7-15 12:57:10

刚上强老师的现场了!呵呵。

iRobot 发表于 2013-7-15 13:01:03

对了 ,迷你老师,我在极客工坊的淘宝买了红外线LED,然后接了个110欧电阻(并了俩220的),直接通电,结果发现发光极其微弱,目视只有普通遥控器的10分之一不到。现在什么都遥控不到。请问该如何办呢?

迷你强 发表于 2013-7-15 13:48:13

iRobot 发表于 2013-7-15 13:01 static/image/common/back.gif
对了 ,迷你老师,我在极客工坊的淘宝买了红外线LED,然后接了个110欧电阻(并了俩220的),直接通电,结果 ...

肉眼????红外光谱人眼是看不到的。。。。你只能看到微量的可见光谱部分

迷你强 发表于 2013-7-15 13:48:46

幻生幻灭 发表于 2013-7-15 12:15 static/image/common/back.gif
难得发新帖啦~
不过这个点阵显示的信息量也够大的,估计有1M长了吧

信息量,貌似可以无限往里扔

幻生幻灭 发表于 2013-7-15 14:47:33

好吧,我的意思是信息量太大,显示面积太小不直观。

迷你强 发表于 2013-7-15 16:26:58

幻生幻灭 发表于 2013-7-15 14:47 static/image/common/back.gif
好吧,我的意思是信息量太大,显示面积太小不直观。

便宜啊~~~~~8*8显示器便宜。。。

iRobot 发表于 2013-7-15 16:38:14

迷你强 发表于 2013-7-15 13:48 static/image/common/back.gif
肉眼????红外光谱人眼是看不到的。。。。你只能看到微量的可见光谱部分

我说的肉眼是指眼睛通过摄像头看,区别于仪器检测。

zzzddd9000 发表于 2013-7-15 18:31:07

这个设计非常巧妙,谢谢分享,特别一提的是他所选用i红色iic 的点阵,很好,我用过一块所谓真彩色的8*8点阵,这种彩色只能远在数米开外看,近看效果很差,所以选择单色是聪明的高手。

弘毅 发表于 2013-7-15 18:33:44

iRobot 发表于 2013-7-15 13:01 static/image/common/back.gif
对了 ,迷你老师,我在极客工坊的淘宝买了红外线LED,然后接了个110欧电阻(并了俩220的),直接通电,结果 ...

可以尝试的接更小的电阻看看,这款红外发射管功率比较小,一般遥控距离在1米左右。更远的就需要换更大功率的红外发光管了。

迷你强 发表于 2013-7-15 21:24:34

iRobot 发表于 2013-7-15 16:38 static/image/common/back.gif
我说的肉眼是指眼睛通过摄像头看,区别于仪器检测。

请注意摄像头是否是比较昂贵的手机或者较为高价值的摄像头,近些年新出的质量较好的摄像头都配有高质量的红外低通滤镜,例如IPHONE4,几乎能滤除所有的红外线,原来我们测试过,使用IPHONE4拍摄红外二极管基本看不出发光

zzzddd9000 发表于 2013-7-15 21:44:48

请教版内各位朋友,红、黄、绿三色的led点阵屏卖么?

iRobot 发表于 2013-7-15 22:50:26

迷你强 发表于 2013-7-15 21:24 static/image/common/back.gif
请注意摄像头是否是比较昂贵的手机或者较为高价值的摄像头,近些年新出的质量较好的摄像头都配有高质量的 ...

迷你老师,我不知道我遇到的是不是你说的那个情况,不过我先前说了,目测只有遥控器的十分之一的亮度,难道这不能推断出我是拿着空调遥控器对比过嘛。。。

我是从#3口接正极,负极并联6个220欧电阻之后接gnd,直接put #3 high观察,发光十分微弱。完全起不到遥控作用。。。
页: [1] 2 3
查看完整版本: [迷你DIY]arduino 桌面气象站