Toggle navigation
首页
(current)
问答
文章
话题
商城
登录
注册
合宙Luat Air720SL开发板(EVB_Air720SL)初体验(3)-实现屏幕显示(上)
Air720SL
air202
串口屏
UART屏幕
本文介绍通过外挂一个Air202模组实现Air720SL的屏幕显示功能
##现有问题 合宙早期的2G物联网模块都有标准的显示库文件,支持I2C,SPI等接口的多种型号显示屏,使用起来非常的方便,但是对于4G的物联网模块,合宙的底层库并没有提供现成的显示库供用户使用,这在很多场景下不太方便。 怎么能够让4G模块也能简单方便进行显示输出,这是一个问题。 ##现有解决方案 目前使用合宙4G模块的客户们普遍有三种方式来间接实现4G模块的屏幕显示功能。 方式1:外挂STM32单片机,使用Air720系列模块作为Modem,这种方法开发灵活,显示效果好,大客户往往采用。 但是需要同时掌握C语言编程熟悉和AT编程的高阶程序员才能使用。而且因为外挂了STM32,电路板的原件数和复杂程度都有所提高。 ![](/static/editormd/php/../uploads/5_20551.jpg) 方式2:串口屏,串口屏是目前新兴的一种显示模块,Air720可以通过UART接口给串口屏发送指令显示中文和图片。这种方法虽然很方便,但是市售的串口屏幕使用并不怎么方便,还需要额外的软件配置后才能使用,价格也偏高,一般起码要30块钱,且不能满足稳定供货。 ![](/static/editormd/php/../uploads/5_98202.jpg) 方式3:使用树莓派等linux上位机,通过Air720HI,Air720GI网卡封装的模块上网,实现物联网控制功能,这个方法灵活性最高,但成本起步起码要300元。 ![](/static/editormd/php/../uploads/5_88905.jpg) ##问题分析 物联网设备的大多数应用场合是偏工业实用的,并不需要十分优美流畅的显示界面,而仅仅是显示一些输出信息,对于这样的需求,竟然没有现成的方案可以满足需求。 因此我便考虑可不可以自己动手开发一款这样的产品。 ![](/static/editormd/php/../uploads/5_67085.jpg) ##功能设计 现在合宙商城的Air202F正在搞促销,每片只要10.8元,而1.8寸的 128*160的SPI串口屏模块市场有家店铺也仅卖10块钱,两项加在一起仅20块,就能让Air720实现基本的文字显示功能真的很划算。 说做就做,于是我就用手头的东西捣鼓起来了。 ![](/static/editormd/php/../uploads/5_46706.jpg) ##硬件实现 我这里做实验用的是Air202 S6核心板和1.8寸ST7735S显示屏来实现。 驱动显示屏的连接方式参考了Air202硬件手册,需要连接7根线,其中两根电源线,5根信号线。下面是具体的连接方式。 ![](/static/editormd/php/../uploads/5_22958.jpg) ##调试及编程环境 在编写项目的lua软件的时候可以先不接Air720模块,采用PC的串口调试程序连接USB转串口线进行调试,连接方法会简单,调试也比较方便。 为了烧写程序还需要连接USB_HOST到电脑上,您可以买两根CH340串口线,或者就要稍麻烦一点调试时临时更换连接线,用哪方方法这个由您自己决定。 ![](/static/editormd/php/../uploads/5_97042.jpg) 下面是Lua代码 muart.lua 源码 初始化串口,并从串口接收要显示的字符串 require "utils" require "pm" module(..., package.seeall) -------------------------------------------- 配置串口 -------------------------------------------- -- 串口ID,串口读缓冲区 local UART_ID, sendQueue = 1, {} -- 串口超时,串口准备好后发布的消息 local uartimeout, recvReady = 500, "UART_RECV_ID" --保持系统处于唤醒状态,不会休眠 pm.wake("mcuart") uart.setup(UART_ID, 115200, 8, uart.PAR_NONE, uart.STOP_1) uart.on(1, "receive", function(uid, length) table.insert(sendQueue, uart.read(uid, length)) sys.timerStart(sys.publish, uartimeout, recvReady) end) -- 向串口发送收到的字符串 sys.subscribe(recvReady, function() local str = table.concat(sendQueue) log.info("uart read length:", #str, str) -- 串口写缓冲区最大1460 for i = 1, #str, 1460 do uart.write(UART_ID, str:sub(i, i + 1460 - 1)) --显示字符串 ui.showText(str) end -- 串口的数据读完后清空缓冲区 sendQueue = {} end) ui.lua 源码 module(...,package.seeall) require"uiWin" require"prompt" require"idle" local buff="" function clr() --清空LCD显示缓冲区 disp.clear() --刷新LCD显示缓冲区到LCD屏幕上 disp.update() end --显示字符串 function showText(text,s) --清空LCD显示缓冲区 --disp.clear() --设置页眉字体颜色 lcd.setcolor(0x001F) --设置黑色图片背景 disp.putimage("/ldata/logo_"..(lcd.BPP==1 and "mono.bmp" or "color.png"),lcd.BPP==1 and 41 or 0,lcd.BPP==1 and 18 or 0) --disp.setbkcolor(BLACK) --显示页眉文字 disp.puttext("---UART Port1---",0,0) lcd.setcolor(0xFFFF) --显示正文文字 if (line==nil) then disp.puttext(text,0,32) else disp.puttext(text,0,(line+1)*16) end disp.update() end --显示启动时的缺省文字 showText("UART DISPLAY V0.01") ##电脑测试 最终的实物连线是这样的: ![](/static/editormd/php/../uploads/5_92910.jpg) 由于Air202本身支持完整的中文字库,因此通过串口发送GB2312的汉字编码也可以被正确识别。下面我们将完整的程序烧录到S6核心板中,源文件在文末附上的地址可以下载到。 打开电源会看到 UART DISPLAY V0.01字样。然后使用LLC串口调试助手,并以115200速率连接,发送 “你好”。在屏幕上这时候就可以看到您发送的字符串了。 ![](/static/editormd/php/../uploads/5_11750.jpg) ##总结 本文实现了用Air202完成串口屏的功能,在下此文章中,我将把做好的串口屏和Air720SL开发板连接起来实现完整的屏幕显示通讯。 这个项目在Github上已经建立了目录,并上传了本文所述的Lua脚本代码和硬件连线图。 如果您有兴趣和我一起完善他,就快来关注吧。 也欢迎您加我 QQ:64034373 共同探讨 。 ##开源项目地址 UART_DISPLAY 开源项目地址:https://github.com/miuser00/202uartdisplay LLCCom 开源项目地址:https://github.com/chenxuuu/llcom
发表于 2020-01-16 03:24
阅读 ( 3163 )
分类:
默认分类
1 推荐
收藏
你可能感兴趣的文章
10、合宙Air模块Luat开发:JSON字符串的生成与解析
2300 浏览
8、合宙Air模块Luat开发:基于官方库的二次封装,使串口更加易用
2556 浏览
7、合宙Air模块Luat开发:定时器的使用方法
2138 浏览
6、合宙Air模块Luat开发:又是一种新的外设之ADC模数转换,现在我们可以采集模拟量数据了
2225 浏览
5、合宙Air模块Luat开发:GPIO输入常见的两种使用方法及其优劣性
2314 浏览
4、合宙Air模块Luat开发:用GPIO输出功能实现一个简单的LED灯闪烁
2544 浏览
相关问题
Air720SL的I2C及I2C2对应设备ID是?如何使用api读写16位地址寄存器
0 回答
AIR202有没有可以获取代码运行时间的接口?
0 回答
Air202 S5开发板连上四个焊点开启自带看门狗之后占用的到底是哪两个GPIO?
1 回答
串口持续收到0xff,但是并没有连接设备
1 回答
202 断线重连机制请教
1 回答
Air202 - ril.regUrc(prefix, handler)
1 回答
0 条评论
请先
登录
后评论
miuser
工程师
21 篇文章
作家榜
»
技术销售Delectate
43 文章
陈夏
26 文章
国梁
24 文章
miuser
21 文章
晨旭
20 文章
朱天华
19 文章
金艺
19 文章
杨奉武
18 文章
×
发送私信
发给:
内容:
×
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!