【微信小程序与智能硬件】Arduino系列之点亮LED【蓝牙篇】

Gamila ·
更新时间:2024-09-21
· 549 次阅读

一、概述

在前几天我们发布了一款名叫“我的硬件”的微信小程序,该小程序可通过拖拽控件的方式编辑界面,并支持蓝牙、MQTT等通信方式。用这块小程序可实现零基础制作属于自己的小程序去控制多个硬件。

思来想去觉得应该写几篇教程,我负责Arduino系列的制作分享,下面我们从点亮LED开始我们的智能硬件之旅。

二、准备工作 准备arduino开发板、蓝牙4.0模组、led灯若干。 微信搜索小程序——“我的硬件”或扫码下方二维码,打开备用。

使用微信扫码二维码即可使用小程序

三、编辑小程序界面

由于篇幅限制,这里只展示编辑过程动态,具体制作教程请关注公众号“Hi iot”,里面有大量该小程序使用教程。

在这里插入图片描述
下图为界面制作完成的样子

在这里插入图片描述

由于我们使用的是蓝牙通信,所以在通信设置上选择蓝牙即可(蓝牙对接教程具体情况公众号“Hi-iot”蓝牙对接教程)。

小程序发送到硬件端的数据表格(具体可查小程序数据设置页面)

控件 控件ID 打开输出 关闭输出
switch0(红灯) 020200 {#020200:true} {#020200:false}
switch1(蓝灯) 020201 {#020201:true} {#020201:false}
switch1(绿灯) 020202 {#020202:true} {#020202:false}
switch1(黄灯) 020203 {#020203:true} {#020203:false}
switch1(白灯) 020204 {#020204:true} {#020204:false}
button0(获取电量值) 020204 “get”(用户自定义数据)
四、编写Arduino代码

我们的设计目标时,当以上五个switch开关打开或关闭时,Arduino控制的5个不同颜色的灯点亮或熄灭,按照小程序发送到硬件端的数据表格可以看出,我们只需要在接收到来自小程序发出的数据后,按照控件ID去解析数据的内容,通过判断“true”或“false”来控制LED点亮或熄灭。

//“我的硬件”数据解析函数 void wxxcx_analysis(String str) { String address = ""; String content = ""; int frist_index = 0; int last_index = 0; int end_index = 0; //协议数据 while((frist_index = str.indexOf('#',frist_index+1))>0) { last_index = str.indexOf(':',last_index+1); end_index = str.indexOf('}',end_index+1); if(end_index<last_index) { continue; } if((last_index-frist_index)==7)//地址长度是否正确 { address = str.substring(frist_index+1,last_index);//获取控件ID content = str.substring(last_index+1,end_index);//获取控件内容 wxxcx_protocol_deal(address,content); //Serial.println(content); //对比控件ID } } if(end_index==0){ //如果是按键的自定义数据则会到这,自行解析 wxxcx_general_deal(str); } }

通过调用 void wxxcx_analysis(String str) 函数将收到的数据分割为控件ID和控件内容,然后我们按照不同的控件ID去控制不同LED,示例如下:

//协议数据处理 void wxxcx_protocol_deal(String addr,String ctent) { if(addr == red) { if(ctent=="true") { digitalWrite(red_ledPin, HIGH); //点亮小灯 } else { digitalWrite(red_ledPin, LOW); //熄灭小灯 } } else if(addr == blue) { if(ctent=="true") { digitalWrite(blue_ledPin, HIGH); //点亮小灯 } else { digitalWrite(blue_ledPin, LOW); //熄灭小灯 } } else if(addr == green) { if(ctent=="true") { digitalWrite(green_ledPin, HIGH); //点亮小灯 } else { digitalWrite(green_ledPin, LOW); //熄灭小灯 } } else if(addr == yellow) { if(ctent=="true") { digitalWrite(yellow_ledPin, HIGH); //点亮小灯 } else { digitalWrite(yellow_ledPin, LOW); //熄灭小灯 } } else if(addr == white) { if(ctent=="true") { digitalWrite(write_ledPin, HIGH); //点亮小灯 } else { digitalWrite(write_ledPin, LOW); //熄灭小灯 } } else if(addr == slider0) { //滑条的数据是十进制数,将 ctent 转为十进制即可 } } //非协议数据处理 void wxxcx_general_deal(String data) { int val = 0; if(data=="get")//按键发送过来的自定义数据 { val=analogRead(potpin);//读取模拟接口5 的值,并将其赋给val wxxcx_send(vol,String(val)); } }

当收到按键发送过来的“get”字符串后,返回一个ADC值

按照先前的{#控件ID:数据内容}格式发送回小程序即可

void wxxcx_send(String addr,String data) { String sendbuff = "{#"+addr+":"+data+"}";//格式:{#控件ID:内容} Serial.print(sendbuff); } 五、实验结果

微信小程序控制Arduino

到这里,我们通过Arduino控制LED灯就已经完成了,整个过程无需编写小程序端的代码,极大方便了电子DIY爱好者的开发周期。欢迎感兴趣的同学可添加我们的qq讨论交流群:635404055。 关注公众号“Hi iot”,回复“例程”即可获得本例程源码。

后面我们会持续更新更多微信小程序控制硬件系列教程,敬请关注!


作者:baidu_15176453



小程序 智能硬件 程序 微信小程序 蓝牙 arduino

需要 登录 后方可回复, 如果你还没有账号请 注册新账号
相关文章