【Realtek RTL8722DM】+学生作业显示器 002-功能实现,评测完成
上一篇介绍了开箱过程,并搞定了开发环境。这一篇介绍评测过程和我的作品开发细节。
首先介绍我的设计初衷。这个作品的创意来源是现在老师给学生留作业总是发在微信上,学生看作业就得拿到手机,自制力差的学生往往拿到手机就不务正业,玩游戏看小说,很浪费时间。结合这次开发板的网络功能,我想到做一个学生作业显示器,这个设备只有显示功能,每次留作业,家长把作业内容转发到这个显示器上,就避免学生无节制玩手机的可能。
接下来说一下整体方案。如下图。整个系统由几部分组成:RTL8722DM开发板通过串口连接一个串口屏,用来显示作业信息,上次评测手头留有一块串口屏,这次正好用来做显示。RTL8722DM开发板本身运行一个精简http服务器,连着路由器。手机APP创建一个http客户端,通过路由器连接服务器,将作业文本post到服务端,RTL8722DM程序解析文本内容,摘取出来,按照串口屏格式打包发送,就能在屏幕上显示了。

图1,系统框图
一、各个模块实现
1、串口显示屏编程和调试
串口显示屏使用上次申请的topway模块,该模块为5吋屏,具备800*480分辨率,用来显示作业内容非常合适。串口屏接口简单,操作方便,不需要大量的UI工作,适合快速开发应用。

图2,串口屏
使用该串口屏专用软件,创建一个页面,创建一个文本框,建立VP字符串变量,后续只需通过串口按照协议发送字符就能显示,非常简单快速。

图3,串口屏开发环境
2、RTL8722DM开发板硬件连接和编程
本次作品用到了RTL8722DM开发板的串口和WiFi功能。串口用来和屏幕通讯,使用UART0(IO21、IO22)连接串口屏,如图4。这个串口在ARDUINO库中映射为Serial1,在setup() 里面要记得初始化。

图4,硬件连接
程序是在SimpleServerWiFi例程基础上进行更改,实现一个超级简单基础的http服务器,单片机将客户端post过来的信息进行筛选,我把要显示的文字放在0x0D,0x0A,0x0D,0x0A字符串后面,程序只需定位“0x0A,0x0D,0x0A”即可找到字符串的起始位置,然后截取出来进行转发即可。

图5,核心代码
其中注意程序中我做了限制,只截取了125个字符,见上图箭头部分,是因为串口屏一个文本框最多只能接收127个字符,再多就会出错。此处也是用现成屏的局限性。

图6,最多127个字符
具体的代码可以参照附件程序,此处为了方便查看,我把源文件扩展名改为txt了,使用时改为ino即可被ARDUINO IDE支持。
3、手机APP实现
由于是搞硬件出身,对APP开发不太擅长,此处选用了简单易用的App Invertor作为手机软件开发工具。这个采用代码块方式编写逻辑,非常简单快捷。中学生都可以快速上手。我设计了一个简洁而且巨丑的UI(请原谅我没有美工天赋),如下图。只有4个元素,一个地址输入框,一个清空按钮,一个发送按钮,一个文本编辑框。基本要实现的功能都有了。

图7,APP界面
程序逻辑也巨简单,点击发送按钮,将文本框里的文字发送到上面的地址上。点击清空按钮,清空文字,省的一个个字删除。逻辑图如下。其中要注意的是:字符串格式要定义成GBK,否则默认是UTF-8,单片机收到会显示乱码。

图8,APP逻辑编程
具体的代码和apk安装包可以参照附件压缩包。
二、联调
程序调试遇到问题还是比较多的,我先是把开发板Serial1连接到电脑,采用串口调试工具接收程序发出的数据包,确保是正确的,再把Serial1连接到串口屏。这里需要注意的是发送的不全是字符,不能使用Serial1.println直接发送整个数组,要用Serial1.print单个字节发送。为了方便显示的字符出转移,最好把包头和包尾拆分出来。

图9,调试记录
网络通讯也是采用SSCOM自带的TCPClient功能连接开发板的服务端,进行模拟数据收发。其中要注意的是开发板和电脑必须在一个局域网内,否则没有DNS支持不能成功连接。

图10,调试记录
经过几个晚上的不懈努力,终于把预期的作品搞出来了,如下图,在手机上输入作业内容,会立即在液晶屏上显示。

图11,最终成品
三、总结
通过本次测评,又学习了一些关于网络通讯方面的知识,也了解到RTL8722DM这颗芯片虽然电路简单,设计却很全面,强大的软硬件资源基本能满足常见的物联网设备需求。在调试过程中,我还测试BLE蓝牙、自动配网、模拟输入网络显示等功能,感觉只能用两个字形容:真香!
由于本人水平所限,这次作品还比较简陋,本来还想做成BS结构,直接从浏览器输入信息,在屏幕上显示,但是怎么将网页搞到单片机里面没整明白,最终没有实现,如果有大神知道怎么做,也请指点一下。

2021-5-6 23:19 上传
点击文件名下载附件
源代码

2021-5-6 23:19 上传
点击文件名下载附件
APP打包
热门资料
热门活动
全部回复 6
- 0 主题
- 1 帖子
- 358 积分
身份:LV2 初级技术员
E币:377
发消息
深南以南
发表于2021-5-26 09:21:27
显示全部楼层
沙发
非常不错呢!
- 支持
- 反对
- 举报
回复
这真是一个原创的project 完整而且实用! !
在Github网站我们已经新增BT相关程序,IAR project近期也会上线。亦会新增至瑞昱ameba中国区官网,
后续有任何开发问题歡迎透过qq跟瑞昱技术人员交流喔!
https://github.com/ambiot/ambd_sdk
https://www.amebaiot.com.cn/en/ameba-arduino-summary/
https://www.amebaiot.com.cn/en/ameba-micropython-summary/
在Github网站我们已经新增BT相关程序,IAR project近期也会上线。亦会新增至瑞昱ameba中国区官网,
后续有任何开发问题歡迎透过qq跟瑞昱技术人员交流喔!
https://github.com/ambiot/ambd_sdk
https://www.amebaiot.com.cn/en/ameba-arduino-summary/
https://www.amebaiot.com.cn/en/ameba-micropython-summary/


评测文章
热帖
大家都在看的技术资料
举报
内容系网友发布,其中涉及到安全隐患的内容系网友个人行为,不代表面包板社区观点
关闭
站长推荐
/1


-
返回顶部
-
工具栏