DIY个人智能家庭网关—— 前言

        我是电子DIY爱好者,也是一名程序员,平时业余生活比较枯燥,闲暇之余喜欢捣鼓一些东西玩玩,从硬件设计、驱动开发到手机客户端开发,都有做过,不过只是些皮毛,没有很深入的钻研,所以做出来的东西纯粹是玩一玩而已,我现在就是想把在做的东西整理一下放到博客里面,看看有没有志同道合的爱好者感兴趣,然后一起做点东西来玩一玩。


        我最早的想法是围绕着家庭设备的远程/自动控制来做点东西,其实就是智能家居的范畴了,最开始计划选一个合适的硬件平台做成家庭主机,按现在的叫法就是家庭网关,比如小米智能家居套件里面的网关,有了网关作为控制中心,就可以慢慢外扩一些传感器和控制设备了,然后形成一套自己的智能家居套件,早些年的时候还不知道有openwrt的开源项目,更不知道有些路由器还可以自己刷机、自己编译系统、自己定制软件功能,还以为必须得拿一个ARM板来做网关才行,既然openwrt可以定制自己的软件功能,那拿路由器来DIY自己的家庭网关就成顺理成章的事情了。


        从有这个想法开始,陆陆续续就开始着手实施,先是买了一个可以刷openwrt的路由器进行改装、刷系统和尝试自己编译一些应用,然后用单片机做了一个433M无线接收解码板,通过串口接到路由器上,可以接收门磁或遥控器信号;接着研究蓝牙BLE,相比普通蓝牙,功耗更低&#

  • 8
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
欢迎下载研华科技主题白皮书: 【AIoT】研华AIoT边缘智能网关解决方案 [摘要] 物联网、大数据、云服务与人工智能,是产业数位转型的关键科技趋势,透过创新应用,将替各产业带来巨大商机与全新 局面。研华以坚强的硬件实力为基础,开发出多元软件服务。 https://www.eefocus.com/resource/advantech/index.php?act=detail&item=1496 这篇开始,我们就真正做《网关》升级版教程了,采用arduino+zigbee哦。 arduino简单易学,zigbee自组网(如果不懂c语言,直接用就好,我们已经刷好自组网代码)! 这次我们的教程是通过以下配件实现《网关》功能,并在手机端点击按钮,使zigbee模块上的灯闪亮(实现是发送真正的命令了{ckxxxxxxxxx}的格式)! 通过不同的格式命令就可以操作开、关、接收、发送数据!之后《温湿传感器》《zigbee插座》等就可以直接连上了! 上面就是arduino开源网关的配件。 1、SMARTRF04EB(ZIGBEE下载器) 2、CP2102(arduino下载器) 3、电源供电 4、arduino板(含w5100、zigbee插槽、SD卡座) 5、zigbee开发板 (如果只想学zigbee只需要两块开发板和zigbee模块,自组网学习哦) 6、zigbee模块 实现自己的arduino开源网关吧(自己有arduino和w5100是可以代替我们的arduino板的)。第一部份:arduino板刷上代码。 一、安装CP2102驱动(USB驱动) https://pan.baidu.com/s/1o6iDLcm(下载后直接安装或发现有新硬件就更新驱动)。 二、将CP2102连上arduino板底下的插槽的一定要一一对应哦。DTR->DTR GND->GND TX->RXI RX->TXO VDD3.3->VCC 三、刷arduino代码 大家可以直接在这里下载源代码: https://pan.baidu.com/s/1i386zPV(包含arduino软件和所有的库) 下面我们就贴上代码(都有注释哦) #include #include #include #include #include //请到m.znck007.com申请登陆-》家中环境-》网关,里可以看到! #define APIKEY "xxxxxxxxxxxxxxxx" //设置apikey uint16_t sid=001;//设置sid(设备号) //NRF24l01发送接收节点 const uint16_t this_node = 0; const uint16_t other_node = 1; //NRF24l01收发数据 struct payload_t { uint32_t ms; uint32_t data; char sendchar[20]; }; //NRF24l01脚针设置 iBoardRF24 radioSend(3,8,5,6,7,2); iBoardRF24Network networkSend(radioSend); bool ispayload=false;//NRF24l01收发判断 uint16_t sendChannel=1;//NRF24l01发送频道 uint32_t sendCount=0;//NRF24l01发送次数 char incomingData[20]={0};//NRF24l01接收到的字符(其它设置发过来) //设置MAC地址,如果有二个请改为不同(随意) static byte mymac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; EthernetClient client;//声明网关类 char server[] = "api.znck007.com";//声明API网址 //char urlBuf[] = "/index.php"; static long timer;//用于规定时间间隔 unsigned long last_http;//记录http时间,用于http超时判断,目前20秒无响应则重新GET。 bool ishttpget=false;//标示http是否已经结束 bool isUpdate=false;//成功则更新服务器数据为正常 char updateData[20]={0};//更新的字符(服务器通过字符分析指定某个设备) //串口通信处理(主要用于zigbee通信

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值