pcDuino+yeelink实现远程监控办公室温度

酸酸苹果汁 发布于 2014/03/29 16:45
阅读 1K+
收藏 3

tmp36_pcduino_yeelinkpcDuino + TMP36可以实现全天候的温度监控,而且由于pcDuino本身的功率也不大所以即使一直开着耗电也不会很高。再配合yeelink把传感器的数据定时传送到网上。我们就可以随时随地的查看办公室的温度状态了。

准备工作

1.pcDuino v2 一块

2.面包板一块

3.TMP36传感器一块

4.3.3K色环电阻一个

5.杜邦线若干

pcDuino链接TMP36

ppt_yeelink

上图就是TMP36的俯视图,从左至右对应的引脚为VCC VOUT GND

首先我们要把TMP36的VCC VOUT GND对应连接pcDuino的+3v A5 GND脚
然后把电阻接在TMP36的VCC和GND之间起一个分流作用防止元器件损坏。连接好的效果如下

ppt_yeelink_07

编写代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <core.h>
#define aref_voltage 3
 
constinttmpPin = A2;
charbuffer[50];
inttmpReading;
 
voidsetup(){
}
voidloop(){
    tmpReading = analogRead(tmpPin);
    printf("tmpReading = %d\n",tmpReading);
    floatvoltage = tmpReading * aref_voltage;
    voltage /= 4096;
    floattmpC = (voltage - 0.5) * 100;
    sprintf(buffer,"{\"value\":%4.2f}\n", tmpC);
    FILE* fp =fopen("/home/ubuntu/datafile.txt","w+");
    fwrite(buffer,sizeof(char),strlen(buffer), fp);
    fclose(fp);
    exit(0);

}

编译代码

获取arduino风格的API:详细步骤(点击绿色字体查看详细)

然后创建一个文件把以上的代码放入到文件中,文件名为tmp36_yeelink.c(也可以改成其他的,但是后面要同步修改Makefile文件)点击下载tmp36_yeelink
然后把该文件放到下载好的c_enviroment下的sample目录下(***是你存放c_enviroment文件夹和tmp36_yeelink.c的路径)

?
1
$cp***/tmp36_yeelink.c ***/c_enviroment/sample

然后修改Makefile

?
1
$viMakefile

在一大串OBJS+= ***的后面加上一个

?
1
OBJS+=tmp36_yeelink

然后保存退出,输入make开始编译

?
1
$make

这样我们就把传感器的传出的模拟值转换成温度然后以JSON格式存放到data_file.txt文件中了

curl命令传送传感器的值到yeelink

curl是利用URL语法在命令行方式下工作的开源文件传输工具

新建一个脚本文件名叫yeelink.sh,然后写入以下代码到文件中。(对应的APIKEY和URL要根据自己的情况修改,还有tmp36_yeelink文件的存储位置)

?
1
2
sudo/home/ubuntu/c_enviroment/output/test/tmp36_yeelink
curl --request POST --data-binary @"/home/ubuntu/datafile.txt"--header"U-Apikey:537ef1cef1b8726b39347abb8c0c809a"http://api.yeelink.net/v1.0/device/8466/sensor/13387/datapoints

保存退出之后给脚本加上执行权限

?
1
$chmod+x yeelink.sh

–request <command> 指定要使用的命令
–data-binary 以二进制POST数据
@”…” 和上一条配合使用作用是POST @后面的文件的内容到服务器
–header 自定义头信息传递给服务器

周期向yeelink发送传感器的值

crontab指令之前已经有详细介绍,这里就不多赘述了。

输入crontab -e编辑计划任务

?
1
$ crontab -e

添加定时任务

* / 1 * * * * /home/ubuntu/yeelink.sh(下图中是yeelink_2.sh改成yeelink.sh,因为我之前有另外一个yeelink.sh文件防止重名)

ppt_yeelink_05

结果

先测量一下办公室温度

ppt_yeelink_08再看看yeelink上的监控情况
ppt_yeelink_09

对应的曲线就是我们监控的办公室温度了。


linksprite学习中心

加载中
0
itbj00
itbj00

我的 pcDuino crontab 总是出错?why?

0
Vek_lip
Vek_lip
谁没事干,看温度啊,没意思。
返回顶部
顶部