前两天做那个
自动门灯 的时候,需要在实际工作环境(门上)调试。
主要是查看环境亮度反馈、PWM输出等信息。门灯本身没有显示设备,只能从串口输出信息。
而灯的位置很高,串口线又不够长。当时就左手捧着电脑,右手调整光敏电阻位置、开关门等操作。
不一会的功夫,胳膊那叫一个酸爽。
=========================以上为背景=========================
于是就想做一个手持的终端,代替电脑+串口助手。
首先,必须有屏幕(废话),这就想到了去年在老王家买的几个彩屏充电宝的板子,吃灰到现在。
再去老王家一看,居然还没下架,而且液晶资料和示例程序都出来了,完美!就它了!
做的过程忘拍照了,其实硬件上没啥大动作。
板子原本这样子,大家应该还有印象
背面
这是我改造之后,多了个小尾巴
主要的动作就是增加32MHz外部晶振,因为单片机RC时钟频率太低了
晶振引脚焊出两根线,用AB胶固定一下。然后串口已经预留焊盘,焊上线就OK。
接上晶振后发现晶振没地方放,于是把引脚折弯,用热熔胶固定在板子上了事
弯到背面了
然后就是配一块电池和开关,继续热熔胶固定。
因为本身就是充电宝板子,所以充电电路和插口都有了。
用纸板简单做个后盖
完工
拿在手里的效果
然后门灯那边串口输出语句稍作修改:
- printf("%u:\nPV = %d\nPWM = %u\nVbatt = %.2fV\r\n",PrintCount++,LuminancePV,PWM_SP,BattVolt);
以上语句每隔200ms执行一次,其中:PrintCount是个计数器,作用是使输出始终有变化,便于观察。
LuminancePV是环境亮度的度量值,PWM_SP是灯的输出亮度(0~65535),BattVolt是灯的电池电压。
接上去测试一下,这效果:
环境暗一点
再暗一点,灯亮起了
至此,制作完毕。因为主要是自己用,功能上就没做多全面,
比如只能接收不能发送,数据格式固定为8-N-1,板上唯一一个按键用于切换波特率。
如果以后有其他需要了再改程序吧。
下面是版本日志:
//============================================================
MobileTerminal_13x8 20180513_2345
设计说明,功能描述:
以彩屏充电宝板为硬件,单片机为STC12LE5620AD。添加32Mhz晶振并将单片机时钟源设为外部晶振。
屏幕分辨率160x128,采用5x7点阵字体(扩展成6x8以产生间距),纵横向各放大一倍显示(每个字符占12x16),
于是整个屏幕可以显示13x8个ASCII字符。
第1行以青色显示终端电池电压和串口波特率,第2到第8行以黄色显示收到的内容,背景均为黑色。
发送方每帧消息应当以\r或\r\n结束。终端收到\r之后才会更新显示。
按键用于切换波特率,支持4800、9600、14400、19200、28800、38400、57600。
数据格式8-N-1。