51单片机 ESP8266模块 APP控制继电器,物联网DIY入门新手指南
题目
大家好,超子能力有限,技术不高,有什么错误的地方,欢迎批评指正。超子之前写过一篇STM32单片机配合ESP8266的WiFi模块接入阿里云生活物联网平台的DIY实验,有小伙伴问我51单片机能不能实现,答案是能。那么今天超子就给大家介绍下51单片机的实现方法。
程序设计中,我们使用的软件是Keil集成开发环境,C语言编写。如果大家想要程序源码的话,可以私信我,超子不是专业的程序员,水平不高,大家不嫌弃就行。
一说到51单片机的型号那就太多了,因为我们要使用MQTT协议对接阿里云生活物联网平台,所以对RAM空间要求比较多,一些常见的型号比如89C51,89C52,因为RAM空间太少不能用,所以我们本次DIY程序设计使用的单片机型号是STC12LE5A60S2。
ESP8266模块是通过串口AT指令控制的那种,网上有很多,价格也比较便宜,非常适合我们做DIY。
虽然我们前面使用STM32单片机做了第一个DIY设计,但是考虑到有些小伙伴,没有看过,所以超子还是说的详细一点,把每一个步骤再重新走一遍。
图1
首先进入我们自己的阿里云生活物联网平台,然后创建项目,我们就创建一个51单片机DIY项目吧,以后所有51单片机相关的DIY设计,我们都加入到这个项目内。
图2
项目建立完毕后,可以在项目列表中,看到51单片机DIY项目,旁边的第一个DIY设计项目,是上次STM32单片机DIY设计时建立的。然后我们点击51单片机DIY项目,进入项目管理界面。
图3
接下来,我们需要创建新产品。
图4
产品名称就叫51单片机插座,大家也可以起自己喜欢的名字。然后所属品类选择电工照明下的插座。节点类型选择设备,不接入网关,因为ESP8266可以连接WiFi路由器,直接具备接云的能力,所以是直连设备,不需要网关。连网方式一定要注意,虽然ESP8266是WiFi模块,但是不能选择WiFi连网,因为我们使用的是通用的,AT指令控制的ESP8266,没有在阿里云生活物联网平台认证,不兼容阿里云生活物联网平台APP的配网协议,如果我们选择WiFi方式的话,配网过不去,程序设计就无法进行了。所以我们取个巧,使用蜂窝连接方式,跳过阿里云生活物联网平台APP的配网,我们可以用ESP8266模块自己的APP配网或是直接把WiFi的SSID以及密码写在程序里。然后数据格式选择JSON,不适用ID2认证,最后点击完成就行了。
图5
产品建立完成后,我们要先进行第1步的功能定义的设置,我们选择的是电工照明分类下的插座,所以阿里云生活物联网平台自动帮我们添加了电源开关的功能属性。所以这一步我们不需要做什么额外的设置,直接点击下一步:设备调试。
图6
我们新建设备的时候,为了跳过配网协议,所以故意选择了蜂窝的连接方式,所以我们随便选一个通过认证的模组就行,选哪个型号都不会影响我们的DIY设计。
图7
选好模组后,我们点击新增测试设备,每个产品下可以添加最多50个免费的测试设备,我们做DIY程序设计,50个足够我们用了。
图8
新增测试设备时,我们要输入设备名称,就叫D001吧,超子喜欢用这种编号命名设备,大家可以根据喜好自己设置设备名称,然后点击确定就行。
图9
然后会弹出激活凭证,也就是三元组信息,这个是登录阿里云生活物联网平台的认证信息,稍后我们修改51单片机C语言程序时要用到这些重要信息。然后我们点击下一步:人机交互。
图10
和使用STM32单片机做DIY设计时一样,我们使用阿里云生活物联网平台的公版APP,也就是云智能APP。我们打开上图中红圈所示的开关。
图11
然后我们点击未设置,选择一个界面。
图12
自己喜欢哪个,选一个就行,然后点击确认。
图13
然后页面下方,我们要配置APP功能,同STM32单片机DIY时一样,我们主要设置多语言管理,填写品牌名称,设备名称,产品编号等等,大家根据喜好自己填一个就。最下方我们看到了天猫精灵,插座是天猫精灵支持的品类,所以可以直接绑定天猫精灵的账号,用天猫精灵控制开关,非常方便。然后我们点击下一步:批量投产。
图14
我们勾选上充分了解的对勾,然后点击开发完成,到此我们整个项目的配置就算完成了,就下来我们要修改51单片机的程序了。
图15
首先看esp8266.c源文件,wifi_mode变量用于设置使用哪种方式进行配网,大家根据注释自行选择就行,如果选择0的话,SSID和密码要在esp8266.h头文件中设置。
图16
然后我们需要修改mqtt.h头文件中的6个字符串,最麻烦的就是第3个,也就是MQTT协议中CONNECT报文中的包含的密码信息。我们一个一个来,讲一下怎么修改。
我们先看第6个需要修改的字符串,服务器的域名,格式如下所示:
*.iot-as-mqtt.cn-shanghai.aliyuncs.com
我们把*号替换成我们自己设备的ProductKey,这个ProductKey就是我们新建设备时弹出的3元组信息,图9所示,以我新建的设备作为例子,我们修改一下,最终结果如下:
a1jWDQfzbVB.iot-as-mqtt.cn-shanghai.aliyuncs.com
然后看第4和第5个字符串, 都是Topic主题,第4个set是用来接收控制开关命令推送的Topic,我们需要订阅它,第5个post是用来往服务器上传数据的,这次的实验post不是关键点。那么这两个Topic再那找呢?看下图。
图17
测试设备点击红圈圈中的查看。
图18
然后在Topic列表下,可以看到post和set,根据自己设备的实际内容,修改程序中第4和第5个字符串即可。
接下来看第1个字符串,也就是MQTT协议中CONNECT报文中包含的客户端ID信息,格式如下:
*|securemode=3,signmethod=hmacsha1|
其中*号是设备名称,以我的设备为例,修改一下,结果如下:
D001|securemode=3,signmethod=hmacsha1|
然后再看第2个字符串,也就是MQTT协议中CONNECT报文中包含的用户名信息,格式如下:
*
其中*号是设备名称 ,#号是ProductKey,都是图9中的三元组信息,就以我的设备为例,修改一下,结果如下:
D001&a1jWDQfzbVB
最后再看最麻烦的第3个字符串,也就是MQTT协议中CONNECT报文中包含的密码信息,需要经过一步加密,我们先要构建待加密的明文字符串,格式如下:
clientId*deviceName*productKey#
其中*号是设备名称 ,#号是ProductKey,以我的设备为例,修改一下,结果如下:
clientIdD001deviceNameD001productKey a1jWDQfzbVB
加密用的秘钥是图9中,三元组信息里的DeviceSecret,我们网上找一个加密算法的网站。
图19
我们复制待加密的字符串和密钥的时候,一定要多检查,不要多空格,不要多回车,错一点加密后的结果都不会正确的,所以大家一定要小心。加密后的结果就是第3个字符串的内容,到此6个需要修改的字符串我们都修改完毕了,重新编译程序,下载到开发板就行了。然后我们再回到阿里云生活物联网平台。
图20
我们进入第3步,人机交互设置页面,我们点击红圈所示的内容,然后弹出页面,需要我们填写设备名称,以我的为例,填上D001,然后就可以生成我们需要的,添加设备的二维码,因为文章中不能出现二维码,所以超子就不展示了。到此我们本次51单片机的DIY程序设计,基本就完成了。
大家如果有什么想做的,或者有什么想法,都可以评论区留言告诉超子哦~~~ 想要程序的小伙伴,可以举手哦~~~大泡泡的DIY:咸鱼廉价电子价签拆解,DIY 墨水屏 8266 显示驱动
本内容来源于@什么值得买APP,观点仅代表作者本人 |作者:BigBubbleGum
逛闲鱼的时候发现了这样一种墨水屏——电子价签 ,大家在盒马、7Fresh、小米之家等互联网线下店里面应该见到过,用电子价签替代传统的纸质价签,可以统一管理显示价签内容,并给消费者营造出一种科技感、高端感。
常见的价签尺寸有 2.13 寸、2.9 寸和 4.2 寸,海鲜市场上价格分别为几块钱、十几块钱和二三十块钱。电子价签个人是没法直接更改其显示内容的,需要有专门的基站才能改写。电子价签的内部就是单片机驱动板+电子墨水屏,于是我研究了下如何让这块墨水屏显示自定义图案。
内容比较多,我将分为上下两篇,本文将介绍下电子墨水屏的工作原理、价签拆解、各种硬件驱动方案。下一篇将介绍墨水屏驱动板故障排除、通讯协议和驱动程序相关的内容。
我也是从零开始接触的电子墨水屏,各种 QQ 群潜水、论坛找资料,学习途中遇到了不少坑,相信这将是你能找到最详细的电子价签 DIY 攻略。
一、电子墨水屏简介
电子墨水屏也叫电子纸,常见的电子纸采用“微胶囊电泳显示”技术(EPD)。其基本原理是悬浮在液体中的带电纳米粒子受到电场作用而产生迁移。电子墨水涂布在一层塑料薄膜上,再贴覆上薄膜晶体管(TFT)电路,经由驱动 IC 控制,形成像素图形。
电子墨水由数百万个微胶囊所构成,微胶囊的大小约等同于人类头发的直径。每个微胶囊里含有电泳粒子──带负电荷的白色以及带正电荷的黑色粒子,悬浮于透明液体中。
利用正负相吸的原理,当电场接通时,该区块对应的黑或白粒子会移动至微胶囊的顶端,使用者在该区块上,就能看见白色或黑色。
常见的电子纸是黑白色的,电子价签还有一种三色电子墨水屏,系统运作原理与双色系统类似,施加不同的电压,使不同颜色的粒子移动至上层,看见不同的颜色。
电子墨水屏易于阅读 :电子纸显示屏是靠反射环境光来显示图案的,它具有纸张印刷般的效果;
轻薄灵活 : 因为结构上比较简单外,加上电子纸本身是基于柔软的塑料薄膜的材料,造就了它天生柔韧、可弯曲的特点,可以根据需要任意裁切成各种形状。
省电节能 :当显示静态图像的时候,电子纸可以完全不耗电,就是即使断开所有电源,电子纸显示器依然能够保留最后一幅画面。
比如下面这款应用了电子纸技术的智能卡,就具备了显示余额的功能。
还有这种 NFC 无源智能吊牌,可以通过手机 NFC 刷新显示内容,可以用作电子「狗牌」、电子行李牌,放在店里展示收款二维码,放在车上显示挪车电话啥的。
二、价签拆解
言归正传,首先来拆解这块 2.13 寸的电子价签,2.9 寸和 4.2 寸方法一样。
价签背面是电池仓,可以用拆机撬棒撬开,里面是两枚 CR2450 锂电池并联。(不拆电池仓不影响下面的步骤)
2.13 寸价签的型号为 Stellar-M;2.9 寸型号为 Stellar-L;4.2 寸型号为 Stellar-XL。
价签正面的塑料面板是胶水固定,无法无损拆解。
用刀片以四周边缘为突破口,刀片插入部分后就能轻松撬开整个面板。
过程一定要注意安全,千万小心别割到手指,血与泪的教训!
取下盖板,就能掀开墨水屏,主板是卡在塑料外壳中的,轻轻一撬就能取下。
2.9 寸/4.2 寸墨水屏与主板是插座连接,可以轻松取下;
2.13 寸墨水屏跟主板是粘在一起的,首先刮除表面白色软胶,用 180 度热风枪(吹风机应该也可以的)边吹边撕,别用力,就能取下屏幕。
2.9 寸/4.2 寸屏幕是 24P 的,2.13 寸屏幕是 34P,都是 2015 年产的。
最后看一下主板,左侧为墨水屏驱动电路,中间是一颗德州仪器的单片机 MSP4302553,顶上有一颗兆易 SOP8 存储器芯片 25VQ21BT,右侧是 2.4G 射频收发芯片 A7106,负责与基站通讯。
三、墨水屏驱动基础
1. 墨水屏驱动原理
墨水屏内置驱动器 IC,采用 COG 封装, IC 厚度 300um,根据 FPC(柔性电路板)宽度的不同,分为 24P 和 34P。墨水屏正面朝向自己,排线朝左边,从上往下分别是引脚 1-24。
24P 墨水屏比较常见,一些驱动板的排座也是 24P 的。
2.13 寸电子墨水屏的排线宽度是 34P 的,实际引脚数量是 26 个,裁剪时需要将上下两个没有连接的引脚一并减掉,就变成 24P 了。
电子价签里面墨水屏丝印 HINK-E0213A04,跟大连佳显公司(Good Display)的“ GDEH0213B73”屏幕型号一样,可以在他们的网站上查询到详细的信息,或者去资料更齐全的微雪(Waveshare)家查看更多内容。电子墨水屏通用驱动电路如下。(24P 引脚定义和驱动电路原理详解放在下一篇)
单片机的话推荐使用 ESP8266 模块,比较常用的是 12E 和 12F。网络上有丰富的例程,使用 Arduino 的开发环境,简单易上手。
ESP8266 模块加上串口通讯电路和电源电路就是 NodeMCU 开发板,直接用杜邦线连接墨水屏驱动板就行。
墨水屏与单片机采用 SPI 协议通讯(原理见下一篇),墨水屏的 9-14 号引脚与单片机连接,加上 3V3 和 GND,需要使用 8p 的排线将墨水屏驱动板和 NodeMCU 开发板连接。
其中引脚 10 和引脚 12、13、14 这四个墨水屏引脚 ESP8266 的连接一般是固定的,不同人写的程序里面 BUSY 和 DC 引脚与 ESP8266 的连接会有不同,在烧录程序的时候需要注意在源程序里面修改相关定义。
微雪家的墨水屏产品功能引脚定义如下表。
2. 24P、34P、上接、下接
刚接触墨水屏时,被上接还是下接搞得比较迷糊,这里对这些概念做一个详细的解释。
24P 和 34P 是指墨水屏 FPC 排线的宽度,比如 2.9 寸和 4.2 寸以及微雪自家的墨水屏是 24P 的,排线引脚数量也是 24P;而 2.13 的价签墨水屏排线宽度是 34P 的,排线引脚数量是 26 个,修剪掉两旁空白部分和上下两个引脚就是 24P 了。24P 和 34P 墨水屏引脚定义是一样的,驱动电路通用。
对应插排线的座子叫做 FPC 母座,因为 FPC 排线只有一面有引脚,如果 FPC 座子的上面跟排线接触就是 FPC 上接,FPC 座与排线的接触面在下面的话就是 FPC 下接。
通常上接的 FPC 座子是抽拉式的,下接的座子是翻盖式的,24P 还有上下面都有触点的 FPC 座。
一般 DIY 的话屏幕跟主板平放在桌面上,排线朝上与 FPC 座子相连,用抽拉上接的座子。
2.9 寸价签里的屏幕是翻折到 PCB 顶部,用的是 24P 翻盖下接母座。
24P 的墨水屏的排线比较厚,跟 FPC 母座连接较紧。2.13 寸电子价签里的 34P 墨水屏是粘贴在 PCB 上的,排线很薄,在 FPC 座子里压不紧,可以用胶带增加厚度。
四、墨水屏驱动方案
1. 破解通讯协议,直接驱动
真正的大佬可以不用管上面的驱动电路,自己 DIY 一个基站,连价签外壳都不用拆,直接给墨水屏传图。
比如 CSDN博主 @myfish3 使用一块伊拉克成色的 STM32 开发板和 A7105 射频芯片在廉价的电木洞洞板上搭建了一个简单电路,在 PC 机运行上位机,使用串口和 STM32 通信,STM32 使用 A7105 和价签的 A7106 通信,MSP430 从 A7106 获取并执行命令。
技术大牛往往就是这么朴实无华。
2. 下载器直接写入程序
如果你懂 MSP430 单片机开发的话,可以用 430 launchpad 直接往电子价签主板上的单片机烧录程序,这个相对来说会简单一点,网上也有很多的例程。
3. 原生墨水屏驱动电路板
对于普通的 DIYer,使用墨水屏驱动板+ESP8266 更加简单易学。
第一种方案可以利用电子价签 PCB 板上的原有驱动电路,首先将 msp430 和 A7106 拆下,防止干扰,节约电能。
虽然板子上留有测试点,但是与墨水屏没有关系,不能直接利用。
经过测试,驱动电路的 9-14 号通讯引脚如下图所示,分别接在了 430 单片机的左上部分 6 个引脚,BS 引脚要接地,方框里面有一个 MOS 管,原用于控制墨水屏的电源通断,拆除后把红点处的两个引脚相连即可。
用细导线将焊盘引出,与 ESP8266 开发板相连。
3V3 和 GND 可以从背面的电池正负极上引线,这样无需拆下电子墨水屏,也不用单独购买驱动板,利用价签原来的驱动电路,直接就能刷入程序改写显示画面。
4. 墨水屏驱动板
上面的飞线操作过于繁琐,建议买一个墨水屏驱动板,也就几块钱,用排线跟 ESP8266 相连也更加稳定。
5. ESP8266 墨水屏驱动开发板
微雪有款墨水屏开发板,将 ESP8266 和墨水屏驱动电路集成到一起,省去了排线的连接,开发更方便。
但是这种成品开发板的墨水屏跟 8266 的引脚是固定的,比如微雪开发板的引脚定义如下,网上一些墨水屏应用程序只提供固件,没有源代码,如果引脚定义跟微雪不一样的话就不能使用了。
而且微雪开发板的 FPC 座是 24P 的,34P 的 2.13 寸墨水屏使用时需要裁减排线,开发板的价格也比较贵,要六七十元。
五、DIY 墨水屏驱动板
于是我自己画了一个 ESP8266 墨水屏驱动板,毕竟嘉立创的羊毛不薅白不薅,成本只要十几块钱,墨水屏引脚与 8266 的连接根据自己需求修改(图中是微雪定义),此外还有以下优点:
采用 Type-C 接口;24p/34p FPC 座均可使用体积小巧,仅跟 2.13 寸墨水屏一样大;贴片元件采用 0805 封装,串口通讯芯片采用 CH340C,Type-C 和 FPC 焊盘加长,所有元件均在正面,方便手工焊接;电路中有两个地方可供选择,一是 BS 接地(0)为默认的 4 线 SPI,接 3V3(1)为 3 线 SPI;二是 RESE 电阻通过拨动开关选择,1.54/2.13/2.9 寸墨水屏选择 3R,2.7/4.2 以及三色墨水屏选择 0.47R。
PCB 已打样验证能用,电路里面用到的电阻电容电感、三极管 MOS 管都可以从价签 PCB 上获取。16P 的 Type-C 和 0.5mm 间距的 FPC 插座引脚密集,对于新手来说可能有些难焊,建议大量使用助焊剂。
PCB 四周留有螺丝孔,可以加上锂电池。3D 打印个外壳,做一个墨水屏时钟。
PCB 留有 8 个墨水屏通讯排针接口,可以只焊接墨水屏驱动电路部分,当做独立的驱动板使用。
原理图和 PCB 都是基于立创 EDA 设计,已开源,可以自行打样。
国产的立创 EDA 和嘉立创免费打印真是太好用了,让我来继续安利一下。
PCB打样全免费!手把手教你在嘉立创0元下单 创作立场声明:种草免费PCB打印网站-嘉立创我最早接触电子电路设计是刚上大学那会,加入了一个叫做「电信科协」的学校社团学习51单片机,部长手把手教我们焊接最小系统板,后来焊接技术有了长进,陆续将数码管、点阵、按键、各种传感器全都焊接了上去,把一块15x10cm的洞洞板焊的满满当当。几年下来单片机编程BigBubbleGum|赞15评论7收藏71查看详情
六、上传自定义图片
ESP8266 墨水屏驱动的硬件部分搞定后,就可以往里面上传程序,显示自定义图案,这里以 2.13 电子价签墨水屏为例,使用的是上面我自己做的 ESP8266 墨水屏驱动板。
软件部分使用的是 Arduino IDE 环境,下载和安装可以看我之前的教程。
1. 微雪本地例程
在微雪官网下载示例程序。
进入 example 文件夹中,把 esp8266-waveshare-epd 文件夹整个复制到 %LOCALAPPDATA%Arduino15packagesesp8266hardwareesp82662.7.1libraries,其中“2.7.1”需要根据安装的 ESP8266 支持包版本进行相应更改。
打开 IDE,选择正确的开发板和端口号。
打开”文件-示例-NodeMCU 1.0-waveshare-e-Paper“,找到 2.13 屏幕驱动程序。
如果你是按照微雪的引脚定义设计的驱动板的话,直接编译下载,墨水屏就能显示图案了。
如果你是其他的引脚定义,需要修改下 DEV_Config.h 里的引脚定义。
新手估计很难一次性成功点亮墨水屏,我也翻车了好多次。下一篇中将介绍下硬件电路常见问题以及故障排除思路。
2. 自定义图片上传程序
微雪的示例程序作为出厂测试用的,我精简了下,只保留了自定义图片上传功能。
2.13 寸墨水屏的分辨率为 250x122,先用 PS 或者画图软件制作一张 250x122 像素的.bmp 格式的图像。打开取模软件,扫描模式设置为垂直扫描,宽度和高度设置为 250x122,取消勾选包含图像头数据,勾选颜色反转,设置为上下颠倒,点击保存为 .c 文件。 图传程序由很多文件组成,引脚定义在 epdif.h 文件里修改。 将取模软件生产的 .c 文件里面{}里面的内容复制到图传程序 imagedata.cpp 文件里 gImage 数组的大括号里。 编译下载,此时屏幕就能显示这张图片了。墨水屏断电后能保持最后显示的画面,可以当做电子相册或者挪车电话牌。
拆解电子价签,获得墨水屏并成功点亮,相信没有比这更全面的新手教程了。
ESP8266 电子墨水屏驱动电路原理图与 PCB、取模软件与示例程序,已发布到立创开源广场。
下一篇将进一步介绍电子墨水屏驱动电路原理、DIY 注意事项、故障排除,SPI 通讯,驱动程序讲解等内容,敬请期待。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
相关问答
8266 芯片能干什么?随着物联网的出现,很多与物联网相关的技术和芯片出现在我们眼前。如果你是电子电路、自动化、物联网和单片机相关行业的从业者,大部分人都应该听说过ESP8266...
如何用 ESP8266 控制 单片机 ?ESP8266_wifi模块,单片机串口与模块串口连接,可以利用网络用电脑或者手机与单片机进行数据交换和控制。ESP8266_wifi模块,单片机串口与模块串口连接...
手机通过 esp8266 远程控制stm32 单片机 怎么实现?手机可以编制一个远程控制APP,可以发送控制指令和接收返回的数据,单片机可以通过串口与ESP模块连接,编制单片机程序,1.上电对模块进行初始化,2...
51单片机esp8266 可以遥控拍照吗?可以,ESP8266单片机可以通过连接WiFi网络实现远程控制拍照的功能。通过编程控制ESP8266与相机模块进行通信,可以实现远程拍照的功能。用户可以通过手机或电脑...
esp8266 wifi模块连接 单片机 的哪个接口?ESP8266WiFi模块可以通过串口(UART)连接到单片机。在使用ESP8266时,通常需要交替运行AT指令和数据传输两种模式。其中,用于发送AT指令和调试信息的串口为串...
esp8266 闪存有多大?通常ESP8266的闪存文件系统大小是4Mb,其中有1Mb的空间是程序存储大小,剩下的3Mb是文件存储,但是其中有一部分是存储系统文件的,所以用户可用的文件存储空间是...
esp8266 发出的端口和ip是什么?ESP8266WiFi模块,在使用中其IP地址是根据网络分配得到的,端口号是使用者根据自己需要而定的,如果单独连接模块wifi其IP是192.168.4.1,端口号也是根据需要定...
esp8266 还在生产吗?2015年ESP8266芯片是乐鑫公司于2015年推出的一款集成MCU的WIFI芯片。所谓的MCU,既微控制单元(MCU),可称单片微型计算机,是把中央处理器(CPU)的频率与规格做...
esp 32是什么 单片机 ?ESP32是由乐鑫发布的新一代WiFi芯片,是ESP8266的升级版,准确来说是ESP8266的完整版,双核,wifi,蓝牙,低功耗,更多管脚外设。ESP32特性ESP32双核低功耗...ES...
汽车维修书上提到的MCU和 ESP 是什么?esp8266是一个自带高速MCU的无线wifi模块,可以与其它外设连接,用串口与单片机连接实现网络通讯,可以通过物联网进行远程控制和通讯。esp8266是一个自带高速MC...