发 帖  
原厂入驻New
发烧友10周年庆典,全网超值优惠来袭!千元现金券,下单抽奖赶紧参与》》
[资料] 【LinkIt 7687试用体验】11.居家小助手[结项]
2016-12-19 21:45:39  3070 联发科 无线路由器 服务器 局域网
分享
结项
项目概述
    作为家里的主人,无论什么时候,我们都有可能需要对家里的设备进行控制,比如调整空调的温度,查看室内的湿度等操作。
    在家里,我们可以通过电子传感器来进行查看,普通的智能家居只是基于路由器的局域网数据交互。
当我们身处户外时,因为没办法链接到家里的无线路由器,所以与家里的数据进行了隔离,虽然目前有各种各样的公司推出了智能路由器等产品,加上自己的服务器能够完成这一系列工作,但是对于我们个人来说,隐私得不到保障,而且路由器的价格相对较高。
联发科的Linkit模块功耗低,并且能够满足简单的数据交互,是路由器解决方案优秀的替代品。
作为居家小助手,自动调节亮度等操作无法体现其友好的人控交互,故小助手的1.0版本仅提供远程控制LED灯亮度功能。
硬件设计
使用的模块:
1、linkit开发板
2、grove套件 Arduino扩展板
3、grove套件 led灯
1.png
软件调试
软件分两部分,分别是服务器led亮度的设置与显示,开发板上led亮度的查询与pwm的输出。
使用自建的腾讯云服务器进行led亮度的存储
设置链接:
2.png
查询链接:
3.png
实现原理:
利用php对服务器数据库的访问,将数据库中name=pwm条的值进行更新,访问的时候对该条进行检索。
4.png
开发板上连接了arduino扩展板,故可使用的IO口如下:
5.png
便直接选择了GPIO6进行操作,对应PWM通道4:
6.png
对应扩展板的D4,故D4接led。
PWM的配置参考:
【LinkIt 7687试用体验】9.使用pwm制作呼吸灯
数据的获取参考:
【LinkIt 7687试用体验】10.wIFi的连接与http的get
实际效果
当设置PWM的占空比为0时:
7.png
8.png
当设置PWM的占空比为10时:
9.png
10.png
当设置PWM的占空比为90时:
11.png
12.png
项目总结
设计的时候由于考虑到数据更新的实时性,便在数据处理完之后立即进行数据的获取,大大增加了服务器的压力、带宽的负载和单片机的功耗,后期可通过定时获取减小查询频率来改善。
心得体会
感谢论坛提供本次试用机会,Linkit是我接触到的第一款联发科嵌入式产品,开发环境使用熟悉的Keil,免去了安装各种软件的烦恼,学习的过程中有Demo进行参考,参考学习大大的增加了学习的进度,linkit的wifi物联网功能,使我对单片机的学习不仅局限在单设备上,更加明白了物联网万物相联的真谛。
附部分代码:
  1. char *get_url = HTTP_GET_URL;   
  2.     httpclient_t client = {0};
  3.     httpclient_data_t client_data = {0};
  4.     char *buf, *header;
  5.                 uint32_t total_count = 0;
  6.     uint32_t duty_cycle = 0;
  7.     HTTPCLIENT_RESULT ret;
  8.                 int time = 0;
  9.     LOG_I(http_client_get_example, "httpclient_test_get()");

  10.     buf = pvPortMalloc(BUF_SIZE);   
  11.     header = pvPortMalloc(BUF_SIZE);
  12.     if (buf == NULL || header == NULL) {        
  13.         LOG_I(http_client_get_example, "memory malloc failed.");
  14.         return;
  15.     }
  16.   
  17.                
  18.           hal_gpio_init(HAL_GPIO_6);
  19.                 hal_pinmux_set_function(HAL_GPIO_6, HAL_GPIO_6_PWM4);
  20.                 hal_pwm_init(HAL_PWM_CLOCK_32KHZ);
  21.                 hal_pwm_set_frequency(HAL_PWM_4, 200, &total_count);
  22.                 duty_cycle = (total_count * 10) / 100;
  23.                 hal_pwm_set_duty_cycle(HAL_PWM_4, duty_cycle);
  24.                 hal_pwm_start(HAL_PWM_4);
  25.                 while(++time)
  26.                 {
  27.                         LOG_I(http_client_get_example, "time:%d\r\n",time);
  28.                         // Http "get"
  29.                         client_data.header_buf = header;   
  30.                         client_data.header_buf_len = BUF_SIZE;
  31.                         client_data.response_buf = buf;
  32.                         client_data.response_buf_len = BUF_SIZE;   
  33.                         client_data.response_buf[0] = '\0';
  34.                         ret = httpclient_get(&client, get_url, &client_data);
  35.                         LOG_I(http_client_get_example, "data received: %s", client_data.response_buf);
  36.                         hal_pwm_set_duty_cycle(HAL_PWM_4, (total_count * 10*(client_data.response_buf[0]-48)) / 100);
  37.                 }
复制代码


1

评分

参与人数 1积分 +10 收起 理由
Elecfans管家 + 10 您的帖子很精彩,期待您分享的下一个帖子!.

查看全部评分

分享淘帖 显示全部楼层
· 2016-12-21 14:38:28
看试用达人的报告都能学到很多   多谢分享
· 2016-12-25 00:00:50
彪悍!学习了
· 2016-12-28 21:59:50
楼主你是自己新创建了一个工程还是在iot_sdk_demo里面做的
· 2016-12-29 17:18:27
长安少年 发表于 2016-12-28 21:59
楼主你是自己新创建了一个工程还是在iot_sdk_demo里面做的

即使自己创建工程也是仿照着demo来建立的,所以没必要自己新建工程呀。
· 2017-1-5 17:15:25
那些年儿ing 发表于 2016-12-21 14:38
看试用达人的报告都能学到很多   多谢分享

大家一起努力嘛

只有小组成员才能发言,加入小组>>

1307个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /10 下一条

快速回复 返回顶部 返回列表