[迷你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 挺精美的样子 难得发新帖啦~
不过这个点阵显示的信息量也够大的,估计有1M长了吧 刚上强老师的现场了!呵呵。 对了 ,迷你老师,我在极客工坊的淘宝买了红外线LED,然后接了个110欧电阻(并了俩220的),直接通电,结果发现发光极其微弱,目视只有普通遥控器的10分之一不到。现在什么都遥控不到。请问该如何办呢? iRobot 发表于 2013-7-15 13:01 static/image/common/back.gif
对了 ,迷你老师,我在极客工坊的淘宝买了红外线LED,然后接了个110欧电阻(并了俩220的),直接通电,结果 ...
肉眼????红外光谱人眼是看不到的。。。。你只能看到微量的可见光谱部分 幻生幻灭 发表于 2013-7-15 12:15 static/image/common/back.gif
难得发新帖啦~
不过这个点阵显示的信息量也够大的,估计有1M长了吧
信息量,貌似可以无限往里扔 好吧,我的意思是信息量太大,显示面积太小不直观。 幻生幻灭 发表于 2013-7-15 14:47 static/image/common/back.gif
好吧,我的意思是信息量太大,显示面积太小不直观。
便宜啊~~~~~8*8显示器便宜。。。 迷你强 发表于 2013-7-15 13:48 static/image/common/back.gif
肉眼????红外光谱人眼是看不到的。。。。你只能看到微量的可见光谱部分
我说的肉眼是指眼睛通过摄像头看,区别于仪器检测。 这个设计非常巧妙,谢谢分享,特别一提的是他所选用i红色iic 的点阵,很好,我用过一块所谓真彩色的8*8点阵,这种彩色只能远在数米开外看,近看效果很差,所以选择单色是聪明的高手。 iRobot 发表于 2013-7-15 13:01 static/image/common/back.gif
对了 ,迷你老师,我在极客工坊的淘宝买了红外线LED,然后接了个110欧电阻(并了俩220的),直接通电,结果 ...
可以尝试的接更小的电阻看看,这款红外发射管功率比较小,一般遥控距离在1米左右。更远的就需要换更大功率的红外发光管了。 iRobot 发表于 2013-7-15 16:38 static/image/common/back.gif
我说的肉眼是指眼睛通过摄像头看,区别于仪器检测。
请注意摄像头是否是比较昂贵的手机或者较为高价值的摄像头,近些年新出的质量较好的摄像头都配有高质量的红外低通滤镜,例如IPHONE4,几乎能滤除所有的红外线,原来我们测试过,使用IPHONE4拍摄红外二极管基本看不出发光 请教版内各位朋友,红、黄、绿三色的led点阵屏卖么?
迷你强 发表于 2013-7-15 21:24 static/image/common/back.gif
请注意摄像头是否是比较昂贵的手机或者较为高价值的摄像头,近些年新出的质量较好的摄像头都配有高质量的 ...
迷你老师,我不知道我遇到的是不是你说的那个情况,不过我先前说了,目测只有遥控器的十分之一的亮度,难道这不能推断出我是拿着空调遥控器对比过嘛。。。
我是从#3口接正极,负极并联6个220欧电阻之后接gnd,直接put #3 high观察,发光十分微弱。完全起不到遥控作用。。。