本溪北京网站建设,怎样给网站加外链,东莞公司网站怎么做,网站的流量检测怎么做大家好#xff0c;转发一篇正念同学的文章----大家好#xff0c;我是ZhengN。本次转载一篇保姆级的diy教程#xff1a;基于Esp8266的多功能点阵时钟 。简介很早就了解ESP8266了#xff0c;当时也用这个搞过一些小demo#xff0c;一直也没有想过要弄些实际的作品出来#… 大家好转发一篇正念同学的文章----大家好我是ZhengN。本次转载一篇保姆级的diy教程基于Esp8266的多功能点阵时钟 。简介很早就了解ESP8266了当时也用这个搞过一些小demo一直也没有想过要弄些实际的作品出来也许是因为自己比较菜吧最近刚好工作上没那么忙 想着自己重新搭建一个mqtt服务器做一些和物联网有关的功能。逛论坛的时候有一篇帖子吸引到我了就是这篇https://www.arduino.cn/thread-98790-1-1.html让我萌生了自己搞一个点阵时钟的想法所以就一点一点的开始了这个制作点阵时钟的制作旅程过程谈不上很难但是中途也遇到了很多的问题中途遇到了很多的问题有些解决了有些就只能简单粗暴的解决好在最终还是能够实现自己所想的功能。总结经验和教训想分享给有同样兴趣爱好的人文笔不太好代码也写的不好但依旧阻挡不了这颗分享的心。演示图片 视频 https://www.bilibili.com/video/BV18i4y1R7ft?spm_id_from333.999.0.0理念尽管网上有很多人都搞过或正在esp8266的点阵时钟我重复搞更像是在造轮子我作为一个开发者也很抵制重复造轮子的行为。但是作为一个初学者的我更想去体验这个造轮子的过程而且在这个过程中我希望这个轮子有更多我个人的想法在里面所以就想着自己从头开始来搞这个东西。至于我个人的理念就是做一个极简的点阵时钟出来 在拥有更多其他的功能之外要满足它最最核心的功能时钟误差低其次就是拥有更多的功能更简单的交互再者就是成本要低希望想自己diy的人用最低的成本做一个好看又好用的点阵时钟出来。简单好用功能丰富低成本硬件选材这里我就只介绍一些必要的硬件懂得都懂就不需要我这种小白列举了。在这里我也放上我一直逛的一家淘宝店欣薇电子科技 。不是打广告主要是里面东西比较全面且价格也差不多购买东西的时候不需要不同的淘宝店之间换来换去而且运费也只要3元一般的这种电子产品店运费都是5-6元的。元器件的具体作用请自行百度我就不一一赘述。NodeMcu(Esp8266) 这是我们的核心硬件功能很多可能是今年芯片涨价的缘故吧这类东西越来越贵了。NodeMcu(Esp8266)淘宝图片DS3231 买这个模块主要的作用是掉电时间不重置且时间误差小。NodeMcu(Esp8266)淘宝图片Max7219 32x8 点阵 点阵的驱动芯片好像有蛮多的Max7219有一个优点就是可以级联。NodeMcu(Esp8266)淘宝图片杜邦线若干 买杜邦线是解决焊接的麻烦可以快速简单的搞出我们需要的电路出来NodeMcu(Esp8266)淘宝图片单路触摸模块 原本是搞点动开关的但是那种成本也不低体验又不好所以就买这种触摸模块用来实现单击双击长按等功能当然这个是非必要的如果你不想要任何实体交互只用小程序进行交互的话就可以忽略此模块。NodeMcu(Esp8266)淘宝图片时钟功能硬件功能NTP校时调节亮度显示时间显示日期显示温度显示B站粉丝数显示自定义内容OTA更新微信小程序功能同步设备状态设置显示方向设置亮度设置是否显示切换显示内容切换显示模式恢复出厂wifi配网OTA更新自定义点阵内容原理图实在是没有作图的天赋也没有找到比较好的制图工具只能借助windows自带的画图工具制作一个简单易懂的原理图出来吧望见谅原理图PS: 立创的PCB原理图和PCB打板已经在制作的路上了带后续更新制作过程其实制作过程算是比简单的主要分以下几步1. 购买元器件 购买器材可参考上文中提到的一些元器件淘宝上很多淘宝店都是有卖的。2. 安装对应的软件 这里我们主要用到的软件是arduino 很多diy爱好者应该都用过用过的用户可跳过也可以接着往下看安装Arduino通过官网下载Arduino IDE解压后运行arduino.exe就表示安装完成了。下载地址如下https://downloads.arduino.cc/arduino-1.8.19-windows.zip如果链接失效请在 官网 自行下载下载选项选Windows ZIP file安装esp8266 SDK这里我也是直接从论坛搬运的但是为了方便阅读所以在下面列出来可以直接按我列出来的步骤来如果有问题请到 这里 看看有没有其他的解决方法打开Arduino IDE菜单 文件 首选项在 附加开发板管理器网址 输入框中填入以下网址https://www.arduino.cn/package_esp8266com_index.json下载社区打包的esp8266安装包直接运行并解压即可SDK下载44M蓝凑云分享地址https://wwi.lanzouo.com/ij4GEyjcz7c (推荐使用这个)阿里云盘地址https://www.aliyundrive.com/s/QhgGreFTjJb (推荐使用这个)双击运行即可解压解压完成后再打开Arduino IDE即可在 菜单栏 -- 工具 -- 开发板 中找到你使用的esp8266开发板提示如果安装过其他版本的esp8266sdk请先删除再使用本安装包删除方法文件管理器地址栏输入 %LOCALAPPDATA%/Arduino15/packages回车进入然后删除掉其中的esp8266文件夹安装串口驱动NodeMcu有好多种规格比较常见的是CP2102串口芯片和CH340串口芯片的所以都需要对应的驱动下面分享两者的驱动下载地址CP2102驱动蓝凑云分享地址https://wwi.lanzouo.com/iU5mcyjdxuj (推荐使用这个)博客文件地址CP210x_Universal_Windows_Driver.zip不推荐这个上面链接失效可以使用CH340驱动蓝凑云分享地址https://wwi.lanzouo.com/iyFTayjdxsh (推荐使用这个)博客文件地址CH34x_Install_Windows_v3_4.zip 不推荐这个上面链接失效可以使用解压对应的驱动压缩包然后双击运行对应系统的驱动即可。驱动安装成功以后需要重启电脑3. 连接对应的线材 这里就是使用杜邦线进行一个简单的连接如果有大佬愿意也可以通过我画的电路图进行焊接不过还是推荐先使用杜邦线连接调试好程序后再进行焊接处理。NodeMcu和Max7219点阵接线VCC → 3.3V (其实这里也可以接5v如果你想点阵的亮度比较亮的话)GND → GNDDIN → D7CS → D6CLK → D5NodeMcu和DS3231模块接线VCC → 3.3V (这里不用接5v低电压更安全)GND → GNDDIN → D7SDA → D2SCL → D1NodeMcu和单路触摸模块接线VCC → 3.3V (这里不用接5v低电压更安全)GND → GNDSIG → D84. 写入程序 使用Arduino写入程序其实也挺简单的大致步骤分为如下几步检查简单ESP8266SDK是否安装成功检查串口驱动是否安装成功安装所需要的依赖包由于我也是初学者很多都是使用别人的库文件自己并没有去深入原理的去重写代码所以我们需要安装一些库文件安装步骤如下工具 -- 管理库 -- 搜索我们需要安装的库 -- 点击安装即可需要安装的库文件如下DS3231 DS3231时钟现成库文件LedControl 驱动Max7219点阵的库文件OneButton 实现按键单击双击长按功能的库如果有遗漏的库请看报错提示按错误提示将其中的库安装一下即可下载源码github下载 https://github.com/Lengff/esp8266-lattice-clock-opengitee下载 https://gitee.com/lengff/esp8266-lattice-clock-open通过上面的地址下载我们的源码。将源码写入Esp8266通过Arduino IDE 打开我们上一步下载好的代码文件 -- 打开 -- 选择源码所在文件夹中.ino后缀的文件选择开发板工具 -- 开发板 -- ESP8266 -- NodeMcu 1.0选择开发板选择端口工具 -- 端口 -- 选择我们串口设备对应的端口写入程序项目 -- 上传 或 点左侧的 → 箭头 波特率选115200会快一些5. 测试检验 这里列举个人处理过程中遇到比较多的问题程序编译失败编译失败最多的可能就是库文件不存在或者esp8266的sdk安装有问题检查一下编译报错的地方即可程序上传失败上传失败基本就是串口没选对或者开发板没有选对上传成功后不无任何显示这里就需要检查自己的接线是否正确。此操作请断开电源后进行一键配网不成功配网需要手机和设备在同一个wifi且wifi是2.4G的wifi查看点阵显示内容no wifi 表示没有配置过wifi需要配置wificon wifi 则表示已经配置过wifi信息了正在连接wifi如果需要重新配置wifi的话就需要长按触摸按键6秒重置系统。配网建议先按nodeMcu上的reset按键再点击手机上的配网配网成功后显示的内容是 23:59:59这个就表示你的DS3231接线有问题需要检查接线是否正确。此操作请断开电源后进行还是不行的话请先断开电源再将DS3231上的电池拆拆下来重新安装后重试。交互硬件上我们设置了一个触摸按键用于人机交互更多的交互逻辑我是在小程序上实现的。触摸按键 单击单击为切换显示功能目前是 时间 - 日期 - 温度 - B站粉丝数 - 自定义显示 五个循环切换双击双击是切换功能的显示模式例如时间有两种显示模式 1. 时- 分 - 秒 2. 时 - 分 可以实现两种不同显示模式长按三秒长按超过三秒低于六秒会触发NTP自动校准时间长按六秒长按超过六秒则会重置系统在系统出现异常的时候或者更换了wifi的情况下需要重置系统微信小程序 这里不做过多赘述微信小程序里面的功能都比较简单明了一看便知上述按键支持的功能微信小程序全部都支持小程序为什么会选择小程序来和Esp8266交互呢小程序开发起来比较快捷支持的功能也很多很多功能直接调用api即可使用app或者是在访问esp8266里面的页面我觉得交互有点差我认为最交互应该简单到家不需要有过多的学习成本小程序支持配网UDP蓝牙等等诸多功能后续的其他小作品可能都会用到小程序页面展示 小程序页面截图代码 目前小程序不在此次开源分享当中其实小程序这块难度不大而且可以直接使用减少大家的开发工作。小程序入口 通过手机微信扫描下面的小程序码 或 微信搜索小程序 Lengff即可找到我的小程序小程序页面截图通讯方式目前esp8266和小程序的通讯是使用UDP的通讯方式使用UDP的通讯方式的好处就是无连接即开即用不需要有服务器的存在。只要保证esp8266和手机连接的是同一个局域网即可而且可以通过广播的方式发现设备不需要建立长链接缺点就是不稳定会丢包但是我认为是可以接受的因为手机更多的是发送一些指令我每次都发送两次指令丢包的概率就会下降一些。传输协议 udp是发送一些hex数据包来实现esp8266和手机之间的数据传输所以我就自己简单定义了一个自己的UDP传输协议协议如下自定义一个UPD协议用于小程序和esp8266进行UDP通信|0 1|2 3 4 5|6 7|0 1 2 3 4 5 6 7|
---------------------------------
|RT |TE |VN | LH |
---------------------------------
报文数据 (64bit)
---------------------------------自定义UDP协议说明:1. RT: (2bit)成功返回数值
2. TE: (4bit)type报文类型: 0: 重置时间 ,1: 设置亮度 ,2: 切换功能 ,3: 切换功能显示样式 ,4: 订阅BIlibiliUID ,5: 是否启用点阵屏幕 ,6: 切换显示方向 ,7: 设置用户数据 ,8: 设置动画速度 ,9: OTA 升级 (这里有个缺陷,就是最多只支持16种类型,所以后续会扩展此处)
3. VN: (2bit)version协议版本,目前固定为1
4. LH: (8bit)length数据包长度
5. 报文数据: (64)bit 版本1目前支持的最大数据包长度为64bit优化 优化空间自然是有的改动其实也不大那就是后续接入到自己的MQTT服务器上去同时兼容UPD通讯方式但是目前没有搞是因为目前没有稳定可用的服务器盲目的接入后续升级起来就会影响设备正常的功能使用。自我评价这个项目也算是一个小项目吧我做了一个多月也不能算是从0开始一开始到时候熟悉一点东西只是知识点零零散散的就像一堆凌乱的拼图这次就像在拼拼图。虽然拼的不好但是好歹也是拼出来的一个作品虽说也有很多人搞这种点阵时钟但是我个人觉得自己真的去实践就会发现没有那么简单而且别人做的你也未必会满意自己去做更能去注入自己的灵魂在里面。在此讲讲个人感悟本人不是专职搞这种硬件开发这个只是个人的业余爱好虽然平常也有积累一些相关的知识但是远不如系统性学习来的高效。所以如果真的要学习这个还是要系统性的看一些视频来学习其次就是就是实践虽然我掌握了一些零零散散的技能但是却不知道如何去使用所以需要不断的去实践来理解自己所掌握的技能。缺点:需要连接wifi且必须是2.4Gwifi才能用 -这个也会在后续程序上做出优化需要持续供电因为点阵功耗比较大所以用电池反而体验很差优点支持OTA可持续更新系统交互简单便捷支持自定义显示内容结尾这里我提供一个8x8和 32x8点阵的在线取模工具做的比较粗糙如果有需要改进的地方欢迎在评论区留言。8x8点阵的在线取模工具http://lengff.com/lengff/lattice2.html 32x8点阵的在线取模工具http://lengff.com/lengff/lattice3.html温馨提示由于微信公众号近期改变了推送规则如果您想经常看到我们的文章可以在每次阅读后在页面下方点一个「赞」或「在看」这样每次推送的文章才会第一时间出现在您的订阅列表里。