【21ic第二届设计大赛】+互联网信息展示器-LED点阵屏-源码....
本帖最后由 chongdongchen 于 2018-8-19 16:39 编辑源码在27楼。。
1、项目方案的构想和实施计划:
看到这么个活动,怎么说也得抽点时间来参加一下。
先确定显示器模块:
刚好这几天在DIY一个16*64的红绿双色LED点阵串口屏(已完成基本功能),此时不就刚好派上用场了吗。
将它作为本项目的显示器真是再好不过了,30cm*7.5cm的大小,放到客厅或者办公室,都是显得相当霸气!
有了显示器后,再确定核心部分——网络模块:
方案一:用树莓派或者香橙派。网络上例程很多,搞定这个项目相对比较简单。
方案二:用ESP8266模块,结合lua语言开发(nodemcu),但由于刚了解到lua,这个方案必定要走不少弯路。
两个方案比较:
1、成本。方案一的成本是方案二的很多倍,明显方案二胜出。
2、成品外观。虽然树莓派或者香橙派号称卡片电脑,但是明显比ESP8266模块大很多。ESP8266模块可以隐藏到LED点阵屏内部,看上去只有一个LED屏。所以方案二胜出。
3、开发难度。由于方案一玩的人很多,反而方案二由于玩的人相对很少,所以在技术资源上,方案一胜出。
4、个人愚见。很看好nodemcu和lua。
综上,选择方案二,配合正在DIY的LED点阵串口屏,做一个WiFi时钟(不用调时,没有累计误差)+天气预报显示。如果时间充裕,再增加其他功能(毕竟还要搬砖的哈)。
拿来比赛还是不错的。 你也玩香橙派?你加的是香橙派的几群? 不错不错 加油,期待继续更新 ~ 本帖最后由 chongdongchen 于 2018-6-26 10:30 编辑
2)硬件设计过程分享:
一、显示部分-LED点阵屏:
1-1、材料的准备:
LED点阵屏买的是成品板,某宝上很多,最终买了一款价格比较便宜的红绿半板,它的前面显示部分由16*64个双色LED组成,后面部分是由列驱动芯片+行驱动芯片+电平转换芯片构成。接口是标准接口HUB08,此接口最多可以控制2*16*64个双色LED,也就是一个单元板,由于我买的是半板,所以只需要驱动上半屏即可。
一般这种LED点阵屏都要搭配相应的控制卡、电源才可以运行,当时也看了几款不同厂家的多种控制卡,打算买来作为开发板,程序自己重新写过(主要的乐趣所在)。
但是想起之前逛某宝的时候买过几个STM8S003的最小系统板,虽然性能比不过专业的控制卡(控制卡好像没见过用8位机做的),但是做为自用不商用,不要搞动画特效,我想应该是没有问题的。电源手上也有一个,是5V/3A的,也够用了,那么就都利用起来吧(省钱,{:titter:})。
1-2、要完成那些指标:
a、自制的控制卡要求留出一个接口,供主机通讯。不用说,首选自然是串口。
b、通讯内容。主机只需要将待显示的字符串(要包括中文在内,毕竟我是中国人{:victory:}),发送给LED屏,就能显示出来。
由于是双色屏,所以还要能通过串口设置字体颜色;又因为屏支持汉字,肯定要用到字库芯片(003单片机资源限制,必须外挂字库芯片),
所以增加设置ASCII字体(汉字只有一种字体可选);另外还可以控制亮度和开关,暂时就这么多吧。
c、通讯协议。第一个想到的就是modbus,可以通用市面上很多产品。
再一个就是自由协议,由于modbus待crc校验,如果要减轻低端主机的计算量,那么就不合适。
最终决定先做好modbus(仅支持16命令,因为已经够用了),最后比较空闲的时候再增加自由协议,让两者兼容。
d、屏幕的刷新率。一般认为,LED动态显示时,刷新率只要大于30帧/秒就够了,人眼就感觉显示内容是静止不动的。
不过我认为是远远不够的,虽然看上去“静止”了,实际很晃眼,会有点晕的感觉,做LED灯具的应该懂这个,叫频闪,对眼睛很不好。
所以决定最起码做到100帧/秒以上。上限是003单片机的极限(目前已经实现稳定的250帧/秒)
附上原理图,手工搭棚,无PCB:
二、网络模块
材料:WiFi模块——ESP-12F
由于STM8S003最小系统板上面已经有1117-3.3稳压芯片,所以只需要把3.3V电源和串口接到ESP-12F模块即可。
不过这里要注意ESP-12F模块发射瞬间电流较大,所以电源这里要加电解电容提高稳定性。
下一步就是先把LED屏程序完善好,再去开发ESP-12F程序。
理科生文笔不好,将就看看吧。。
期待期待 期待期待,牛人是一波一波的呀! 8266在无线控制这块运用较多,性能怎么样? 本帖最后由 chongdongchen 于 2018-7-9 11:17 编辑
3)搭建平台;
4)程序设计;
5)调试过程;
由于工作任务重,进展比较慢。
这段时间主要完成了LED点阵屏的程序补充,以及ESP8266的联网测试。
LED点阵屏基本功能:
1、字符串显示。可以显示两行ASCII码字符,或者一行汉字+ASCII码字符,并且可以设置左右移动和上下移动,左右移动对长字符串的显示很有帮助。
2、通讯功能。外部主机可以通过串口和LED点阵屏通讯,主要的特点如下:
串口硬件参数:TTL3.3V,115200,N,8,1
通讯协议,完成了两种,自动识别:
1、modbus:支持命令:16(0x10),具备标准的正常应答和异常应答。modbus测试软件测试通过不丢帧,有时间再用PLC或组态屏测试下。
2、自由协议:通过串口助手测试同步时间成功。
3、RTC功能。由于频率源使用的是STM8S003的内部IRC,所以对于RTC来说精度是完全不够的,需要8266在每分钟的第0秒主动同步一次,而8266的频率源是晶振,精度相对好很多,所以只需要每隔十几分钟,通过WiFi和NTP时间服务器同步一次即可。
ESP8266使用NodeMCU开发,它是一个开源的物联网平台, 使用Lua脚本语言编程。
硬件使用的是某宝的开发板(自带虚拟串口比较方便),完成后在连接到LED点阵屏。
ESP8266已经实现的功能:
1、NTP时间服务器时间同步。同步成功后通过串口把时间发送出来,用串口调试助手观察。
2、天气预报。找了好多有相应接口的网站,最后选择了免费的,相对收费的信息量会少点,访问次数有限制(400次/小时),不过日常用足够了。现在已经通过ESP8266获取到了想要的数据。
目前LED点阵屏和ESP8266都是分开独立调试,还没有进行通讯测试。
你好,看到你提及DIY做出来的LED点阵串口屏,其实还可以做成WiFi时钟(不用调时,没有累计误差)+天气预报显示,从卖产品的层面来看,这个有望是一个爆款
1. 这个应用可以重叠於入门级智能音箱应用之上,分走一部分的市场份额。
青年人中,拖延症这麽流行,这应用该好切中大家的日常习惯痛点。
2. 因为已经有wifi,所以,其实加上扩音机後,便可实现播放音乐。软件用DuerOS就可以,当中有海量的音乐资源。
3. 音箱功能之上,另一个可以考虑的是,通过和协作类app做联动(都有ap开放接口),这就可以深挖时钟的功能。
例如, 团队之间的工作,时钟可以做到一对一或者一对多的提醒。
4. 如果在无印良品,网易严选,名创优品上出货,那就是最合适的to C渠道了。对应to B的话,得力及晨光,应该也是很合适的渠道。
因为我也有关注这类的应用,所以想和你交流一些意见。
本帖最后由 chongdongchen 于 2018-7-19 10:30 编辑
经过努力,已经实现了时间同步、天气预报、热点新闻。。
全家福和组装好的样子:
开机效果图:
视频效果(终于改成直接显示视频了,第一次只发了个播放地址{:funk:}):
http://player.youku.com/player.php/sid/XMzcyODkxOTk2MA==/v.swf
通过网页配置WiFi的功能也已经实现,到时候也拍起来看看 不错,点阵屏玩的 666的 ESP12F模块应用原理图,焊接的时候没画,现在补上一张。
本帖最后由 chongdongchen 于 2018-7-18 14:04 编辑
为了能够方便的切换到不同环境的WiFi,需要通过网页配置WiFi-ssid。
原理:手机或电脑等设备连接到ESP8266的热点,进入到配置主页192.168.1.1,配置成功后,ESP8266会记住自动连接此ssid。
开机后,按住按钮5秒以上,就可以开始配置WiFi了:
屏幕显示:
配置主页画面,看到两个输入框,可以手动输入ssid和密码,或者按下灰色按钮进行周边无线网扫描:
懒得输,扫描了一下,再点击第一个输入框,就可以选择自己需要连接的WiFi了,这时又想手动输入的话,点击灰色按钮有回到上个画面:
好了后点击绿色按钮进行保存操作:
现在这个网页可以关掉了,等一会就可以使用新配置的WiFi了。
一直开着,时不时地看看,这样就能发现一些细节问题并优化,比如这里,原来格式是:xx"热点新闻标题",现在:TOPxx"热点新闻标题":
好了,先运行个几天看看有没有bug
本帖最后由 chongdongchen 于 2018-7-20 22:35 编辑
修复了一个热点新闻显示的瑕疵:原先是ESP8266定时间轮流给LED点阵屏发送热点新闻,这是因为STM8S003的RAM不够用,所以每次发一条,每条在STM8S003中预留100字节,对于热点的标题足够了。因为LED点阵屏这边显示周期不固定,所以会导致显示内容“假随机”,比如上一次显示TOP01,下一次可能就是TOP03。
现在这样解决:LED屏每当把收到的热点新闻转存到缓冲区的时候,向ESP8266回应一个消息,ESP8266收到此消息后才会发送下一条。现在已经实现顺序循环播放了。
另外,热点新闻每2分钟从服务器更新一次,存在ESP8266中。天气预报也是2分钟一次。 再更新一个功能,人体感应。
原来是指定每天的时间段开启显示,但是加班或者放假的问题不好解决,那干脆加一个人体感应功能吧,有人显示,否则延时关闭。
模块隐藏到屏后面,不影响美观。
http://player.youku.com/player.php/sid/XMzczNDMzNjgyMA==/v.swf
就是这个感应模块:
至此,这个设计算是完成了 ,接下来先运行并观察一段时间。工作如果不忙一些的话会再丰富一些功能(最近实在太忙)。
抽空再写一份总结。感谢大家的支持!
页:
[1]
2