查看: 6016|回复: 11
收起左侧

[参考教程] 用树莓派采集环境相关参数并上传到machtalk(类似于yeelink),使用C语言实现

2015-3-27 17:06:40 | 显示全部楼层 |阅读模式
本帖最后由 wdluo 于 2015-3-28 13:14 编辑

背景:树莓派的优势什么的就不多说了,这个也不一定实用,不过有时候也比较实用,看自己的应用吧,整个功能实现完全采用C语言编程,主要涉及的知识有I2C总线,网络编程,machtalk数据上传。
主要功能介绍:
1,通过调用I2C驱动程序读取BMP180传感器所测值(环境气压,环境温度,海拔高度(根据气压计算));
2,调用底层驱动读取CPU核心温度值;
3,本来打算读取光照度传感器和温湿度传感器测量环境光照度和湿度,但是发现树莓派I2C的驱动没法驱动这两个传感器,主要是树莓派I2C底层驱动设计上的问题,大家有兴趣再做探讨,这里就不多说了;
4,将所测值POST到machtalk网站(类似于yeelink)上去,当然你得提前在machtalk上建立一个设备;

主函数很简单,如下所示:
  1. int main (void)
  2. {
  3.         double Temperature[11];
  4.         double Pressure[11];
  5.         double Altitude[11];
  6.         double CPU_Temperature;
  7.         int i=0,j;
  8.         int PostNum=0;
  9.         bmp180_init();
  10.     while (1)
  11.     {
  12.         Temperature[i] = bmp180_get_temperature(bmp180_get_ut())/10.0;
  13.         Pressure[i] = bmp180_get_pressure(bmp180_get_up())/1000.0;
  14.         Altitude[i] = (44330.0 * (1.0-pow(Pressure[i]*1000 / 101325.0, 1.0/5.255)));//Altitude
  15.                 i++;
  16.                 if(i >= 10){
  17.                         i = 0;
  18.                         Temperature[10] = 0;
  19.                         Pressure[10] = 0;
  20.                         Altitude[10] = 0;
  21.                         for(j=0;j<10;j++){
  22.                                 Temperature[10] += Temperature[j];
  23.                                 Pressure[10] += Pressure[j];
  24.                                 Altitude[10] += Altitude[j];
  25.                         }
  26.                         //post data
  27.                         printf("Start Post...\n\r");
  28.                         machtalk_post("c16ba32697d84b2ebc400f825376ac92","1","1",Pressure[10]/10.0,3);
  29.                         delay(1500);
  30.                         machtalk_post("c16ba32697d84b2ebc400f825376ac92","2","1",Altitude[10]/10.0,3);
  31.                         delay(1500);
  32.                         machtalk_post("c16ba32697d84b2ebc400f825376ac92","3","1",Temperature[10]/10.0,3);
  33.                         delay(1500);
  34.                         get_cpu_temperature(&CPU_Temperature);
  35.                         machtalk_post("c16ba32697d84b2ebc400f825376ac92","6","1",CPU_Temperature,3);
  36.                         printf("Post End Num : %d\n\r",++PostNum);
  37.                 }
  38.         delay(1000);
  39.     }
  40.         return 0;
  41. }
复制代码
程序运行效果截图:
CPU温度.jpg

大气压强.jpg

程序源码下载:
BMP180.zip (14.4 KB, 下载次数: 130)
回复

使用道具 举报

 楼主| 2015-3-27 17:08:49 | 显示全部楼层
本来可以各个实时查看数据的链接的,可惜我没权限,发不了
回复 支持 反对

使用道具 举报

2015-3-27 17:15:57 | 显示全部楼层
很好的帖子,赞一个,提升为正常权限
回复 支持 反对

使用道具 举报

 楼主| 2015-3-27 17:25:27 | 显示全部楼层
给个实时数据链接:
http://machtalk.net/device/datav ... b2ebc400f825376ac92
大家都可以打开看到我测的数据
回复 支持 反对

使用道具 举报

2015-3-28 19:16:22 | 显示全部楼层
你在重庆么?我也是重庆的。高中的时候在上清寺,好像和你挺近的哈
回复 支持 反对

使用道具 举报

 楼主| 2015-3-29 21:47:08 | 显示全部楼层
一晴空 发表于 2015-3-28 19:16
你在重庆么?我也是重庆的。高中的时候在上清寺,好像和你挺近的哈

会展中心后面
现在高就?
回复 支持 反对

使用道具 举报

2015-3-29 22:53:24 | 显示全部楼层
wdluo 发表于 2015-3-29 21:47
会展中心后面
现在高就?

高中时在渝中区三年,现在在哈尔滨读大学
回复 支持 反对

使用道具 举报

 楼主| 2015-4-1 16:36:16 | 显示全部楼层
一晴空 发表于 2015-3-29 22:53
高中时在渝中区三年,现在在哈尔滨读大学

不错啊!年轻有为
回复 支持 反对

使用道具 举报

 楼主| 2015-4-1 16:39:31 | 显示全部楼层
一晴空 发表于 2015-3-29 22:53
高中时在渝中区三年,现在在哈尔滨读大学

不错啊!年轻有为
回复 支持 反对

使用道具 举报

2015-4-8 22:55:16 | 显示全部楼层
wdluo 发表于 2015-4-1 16:39
不错啊!年轻有为

还没工作。。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热点推荐

关注我们,了解更多

官方微信

服务时间:10:00-16:00

13714503811

公司地址:深圳市龙岗区南湾街道东门头路8号

Copyright © 2012-2020 Powered by 树莓派论坛 2019.4  粤ICP备15075382号-1
快速回复 返回列表 返回顶部