本帖最后由 迷你强 于 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);
- }
-
- }
复制代码
妥了
看看效果吧
|