简介
(资料图)
简单实现一个基于Android和ESP32的公网UDP通信的“心跳灯”。能实现任意地点任意人员远程用手机软件控制灯光跳动,并且尽实现灯光跳动与动画同步。后期理论上可实现手机接入心率传感器实现灯光与心跳同步。这里只进行简单demo实现及技术路线记录。
控制软件下载地址:https://wwks.lanzouy.com/igtHa0nlnpbe
只要手机联网正常,安装后即可随意控制实验板上的灯。
Demo效果
此时手机在5G网络下,并非局域网,能看到反应还是很快的,延迟很低,局域网模式下延迟会更低。LED灯为临时用实验板搭建的,因为是临时起意,并未进行PCB产品化设计和打样。
硬件程序设计
主控开发板使用的比较火的ESP32,身边有一块刚好就用了。当然这个程序不需要这么高性能的开发板。
原本设计是使用阿里云物联网平台来当服务器,这也是目前DIY玩家的主流做法,但是我尝试之后发现Android发送指令后,到硬件有相应,延迟有1秒左右,很明显达不到我的需求。
于是考虑到家里和办公室都有公网IP,采用了把ESP32当作UDP服务器的方案,这样Android端发送的数据就能点对点的传输到硬件设备上。UDP的最大好处就是延迟低,无需经过TCP的三次握手协议,一般网络游戏就是通过UDP协议传输数据的,但是这种协议只负责发送数据,不管最后到底收没收到,所以可靠性较低。考虑到本程序和游戏一样即使丢包也不会造成严重后果,所以选择了该方案。
ESP32程序设计:
整个程序使用PWM对LED进行亮度控制,PIN5引脚作为输出引脚,从程序里能看到PWM频率是5000Hz。没用DC调光主要是因为LED的亮度变化和电压变化并不是线性相关的,可能渐变达不到理想效果。
程序搭建了一个UDP的服务器,监听1234端口,接收到“1”就会对输出引脚进行操作。当然这里的识别信号可以换成随意的Key,会更加安全一点。再将该ESP32的1234端口映射到路由器的任意端口即可,即可实现从公网传输UDP数据。
Android端软件设计
Android端使用Lotties框架加载了一个心跳的动画,这个之前有写操作步骤,然后设置点击及播放一次就行,当然,整体速度需要和LED渐变的速度相同步,会比较好看。
点击事件核心代码:
就是点击播放,然后加入了一个短暂的震动,提升点击手感,最后是发送UDP数据的方法。方法具体实现:
UDPClient是封装好的UDP请求客户端:
这里要记得网络请求需要再非主线程进行,否则程序会闪退。比较推荐的方案是AsyncTask异步任务类,也可以自己新建线程运行。
上一篇:丙肝的传播途径是什么的_全球热文
下一篇:最后一页
-
妇炎洁广告被指侮辱女性上热搜 官方致歉来了!5月17日,妇炎洁广告被指侮辱女性登上热搜。据了解,近日,妇炎洁电商官方旗舰店一款女性私处用品广告被指侮辱女性,广告写道:中日韩三国
-
花8000多元买的商品,白等两个月却没收到货?亚马逊回应“花8000多元买的商品,白等了两个月却没收到货。”近日,消费者赵先生向《中国消费者报》投诉,称他通过亚马逊购物APP下了两笔订单,在等待两个月后订单均被强制取消。
-
广东省消委会发布二手车买卖合同示范文本为配合广东省推进“阳光二手车”工作,促进二手车流通行业健康发展,推动经营主体树立诚信经营理念,规范二手车交易行为,切实保护消费者的合法权益。
-
国家卫健委:家庭医生签约服务“最后一公里”有望打通3月15日,国家卫生健康委、财政部等六部门共同提出的《关于推进家庭医生签约服务高质量发展的指导意见》(以下简称《意见》)发布。
-
2022年1~2月房企拿地榜出炉:冠军碧桂园近日,中指研究院公布了2022年1~2月房企拿地(金额)TOP100榜单。令业内惊讶的是,除了品牌房企名次“乾坤大挪移”,榜单内还冒出了许多“名不见经传”的新面孔。
X 关闭
X 关闭