[经验] 【TI首届低功耗设计大赛】金刚狼和云MySQL的交互

ljj3166   2014-10-20 22:59 楼主
周末又折腾了一下金刚狼 整出个模型,没能详细记载过程,来个玩次一贴流吧 ----------------------------------金刚狼和云数据库的交互-------------------------------- 这里的云数据库采用sinaapp的免费MySQL平台 为了方便,建了4个表,每个表存储1个传感器的数据 1.jpg 18B20、Humdity、Pressure分别代表传感器18B20、DTH11和BMP085 switch则代表LED 每个表三个字段:ID、timestamp和data(state),data(state)则是传感器的实质数据 贴点代码,看看从金刚狼向sinaapp MySQL的发出GET请求的过程 Serial1.print("GET /upload.php?token=liaojingjing&18b20data="); Serial1.print(tempdata); Serial1.print("&Pressuredata="); Serial1.print(Pressuredata); Serial1.print("&Humditydata="); Serial1.print(Humditydata); Serial1.println(" HTTP/1.1"); Serial1.println("Host: 1.iothing.sinaapp.com"); Serial1.println("User-Agent: Energia-MXCHIPWIFI"); Serial1.println("Connection: close"); Serial1.println(); 这里为什么用GET而不用POST,据说会更安全些,当然只是针对云端数据 然后在云服务器上编辑uoload.php,摘录部分语句 $con = mysql_connect(SAE_MYSQL_HOST_M.':'.SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS); $data = $_GET['data']; mysql_select_db("app_iothing", $con);//要改成相应的数据库名 $result = mysql_query("SELECT * FROM switch"); while($arr = mysql_fetch_array($result)){//找到需要的数据的记录,并读出状态值 // echo $arr; if ($arr['ID'] == 1) { $state = $arr['state']; } } echo "{".$state."}"; $con = mysql_connect(SAE_MYSQL_HOST_M.':'.SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS); //MySQL连接语句 $data1 = $_GET['18b20data']; //从GET语句中获取相关数据 $data2 = $_GET['Humditydata']; $data3 = $_GET['Pressuredata']; mysql_select_db("app_iothing", $con);//选择数据库进行连接,我的是app_iothing $result = mysql_query("SELECT * FROM 18B20"); $dati = date("h:i:sa");//获取时间 $sql ="UPDATE 18B20 SET timestamp='$dati',data = '$data1' WHERE ID = '1'";//用于更新传感器18B20数值的PHP语句 if(!mysql_query($sql,$con)){ die('Error: ' . mysql_error());//如果出错,显示错误 } 如果一切顺利的话,应该会发生更新 1.jpg 上面就是金刚狼和MySQL交互的简单过程了 临时学习的,还请高手现身说法 -------------------------------微信和MySQL的交互---------------------------------- 目前3个传感器的数值主要是进行读取 LED的状态才需要微信进行控制 摘部分代码吧 微信从MySQL读取传感器数据 $con = mysql_connect(SAE_MYSQL_HOST_M.':'.SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS); mysql_select_db("app_iothing", $con); //连接app_iothing的数据库 $result = mysql_query("SELECT * FROM 18B20"); //查找18B20的表 while($arr = mysql_fetch_array($result)){ if ($arr['ID'] == 1) { $tempr = $arr['data']; //如果数据库连接正常,读取data值 } } mysql_close($con); //关闭数据库连接 微信修改MySQL数据库的数据 $con = mysql_connect(SAE_MYSQL_HOST_M.':'.SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS); $dati = date("h:i:sa");//获取时间戳 mysql_select_db("app_iothing", $con);// $sql ="UPDATE switch SET timestamp='$dati',state = '0' WHERE ID = '1'";//修改开关状态值 if(!mysql_query($sql,$con)){ die('Error: ' . mysql_error());//报错 }else{ mysql_close($con); } $content = "关闭命令已发送!";//返回给微信的信息 突然发现面向对象的语言真是方便,聊聊数句就能够搞定复杂的应用 不过想想反人类的正则表达式,譬如说这种:2[0-4]\d(?[url=]#200-249)|25[0-5](?#[/url]250-255)|[01]?\d\d?(?#0-199) 改变世界的程序猿们真是不容易,相比起来,我还是选择看机器码吧。。。。。。。 ---------------------------------------show个视频和残留问题------------------------------------- 这次没有使用CCS了,而是采用Energia 很简单,很快速,不过坑也很多 最大的问题就是RAM 因为金刚狼在与MySQL交互的时候,每次GET请求串口都会返回大量的数据 测试了一下,至少有300字节 这对金刚狼的硬串口的缓存是极大的考验啊 开始一直通信不成功,后来调试才发现这个问题,把hardware\msp430\cores\msp430\HardwareSerial.cpp中 SERIAL_BUFFER_SIZE增加到284才能勉强接收完云数据库回复的报文 (其实可以通过对MXCHIP的wifi模块进行处理,偷个懒,到庆科的活动中去做吧 加上18B20的二叉树算法 金刚狼的RAM已经基本上用完了,不能再添加其他功能了 据说金刚狼的RAM大小可以自由调整,求大神科普啊 撸个视频: 为了向低功耗看齐,本地显示采用了OLED,控制器是SSD1306 小小的0.9inch屏,居然是128x32分辨率 还有就是太能电池板 视频中显示单节充电宝完全可以做到边充电边放电,充电器是5V500mA 但是实际使用太阳能板给充电宝充电时,无法进入放电状态 怀疑是太阳能板提供的电流太小 电源这部分极少接触,还得多多学习才行。 对于板供电这块,还请大神门指点一二啊。 先到这...... 本帖最后由 ljj3166 于 2014-10-21 12:12 编辑
So TM what......?

回复评论 (13)

自己看自己的帖子,顶一下,哈哈
发现一个花边:居然把status写成了state,这下可好,云端、采集端,一下要改好几个地方
算了,将就看吧,懒得改了,明白state就是status意思就好了
So TM what......?
点赞  2014-10-23 14:54
发现我又有得折腾这个新东西了。。
点赞  2014-10-23 17:47
能否将你的oled程序共享下,我调试了好久都没有点亮
点赞  2014-11-11 20:31
引用: 转身0105 发表于 2014-11-11 20:31
能否将你的oled程序共享下,我调试了好久都没有点亮

SSD1306的驱动IC
不过不是as和iar工程哟
So TM what......?
点赞  2014-11-12 12:01
引用: ljj3166 发表于 2014-11-12 12:01
SSD1306的驱动IC
不过不是as和iar工程哟

恩,看你是在energia下搞得。我昨天晚上在ccs下把oled调试出来了
感觉你做的很屌,能详细写个教程吗?我想学习下

点赞  2014-11-12 13:29
引用: 转身0105 发表于 2014-11-12 13:29
恩,看你是在energia下搞得。我昨天晚上在ccs下把oled调试出来了
感觉你做的很屌,能详细写个教程吗? ...

看看论坛有没有这个需求吧
So TM what......?
点赞  2014-11-14 22:40
引用: ljj3166 发表于 2014-11-14 22:40
看看论坛有没有这个需求吧

嘿嘿,我有需求呀,单独发给我呀,就当福利了
点赞  2014-11-17 15:16
是开发板从数据库读取数据开控制灯的开关吗
点赞  2015-3-28 17:06
引用: xiaomacdut 发表于 2015-3-28 17:06
是开发板从数据库读取数据开控制灯的开关吗

嗯,和云端的数据库交互
So TM what......?
点赞  2015-3-28 19:57
楼主,可以看看你的aruidno端代码吗?我在和你差不多的事,使用的是sht11土壤温湿度传感器,但是无法将数据上传到数据。跪求指点,本人学生
点赞  2015-4-3 15:44
引用: 何伟浩何伟浩 发表于 2015-4-3 15:44
楼主,可以看看你的aruidno端代码吗?我在和你差不多的事,使用的是sht11土壤温湿度传感器,但是无法将数据上传到数据。跪求指点,本人学生

同学我用的Energia+FR5969

有些底层和Arduino+MEGA会出现不兼容的情况
So TM what......?
点赞  2015-4-3 17:19
我用w5100的板子连到路由器   就这部分代码    我的代码一直连接失败  可以帮我看看吗   方便加qq?  273885487
点赞  2015-4-3 21:11

请问一下楼主,SAE与开发板交互数据的具体过程是什么样子的呢?之前看过楼主的帖子,如果是网页抓取的话,那开关的状态又是怎么反应到开发板中的呢,刚开始接触这些,感觉好多都不会呀

点赞  2015-9-23 01:08
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复