产品选型

51单片机实训 51单片机 ESP8266模块 APP控制继电器,物联网DIY入门新手指南

小编 2024-10-10 产品选型 23 0

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程序设计,基本就完成了。

大家如果有什么想做的,或者有什么想法,都可以评论区留言告诉超子哦~~~

想要程序的小伙伴,可以举手哦~~~

51单片机直流电机测速Proteus仿真

今天准备分享的仿真是基于51单片机的直流电机测速Proteus仿真。仿真是在Proteus7.7软件下创建的,有需要的小伙伴下载后可以使用比7.7高的版本打开仿真源文件。

接下来上仿真静态图。

仿真电路图

老规矩首先还是分析一下电路。该仿真使用L298来驱动直流电机。L298N是专用驱动集成电路,属于H桥集成电路,与L293D的差别是其输出电流增大,功率增强。其输出电流为2A,最高电流4A,最高工作电压50V,可以驱动感性负载,如大功率直流电机,步进电机,电磁阀等,特别是其输入端可以与单片机直接相联,从而很方便地受单片机控制。当驱动直流电机时,可以直接控制步进电机,并可以实现电机正转与反转,实现此功能只需改变输入端的逻辑电平。L298N芯片可以驱动两个二相电机,也可以驱动一个四相电机,输出电压最高可达50V,可以直接通过电源来调节输出电压;可以直接用单片机的IO口提供信号;而且电路简单,使用比较方便。L298N的实物图是长这个样子的。

L298N

从仿真中具有电机驱动芯片可以看出来,这个仿真不但可以测速,还可以控制电机的转速。那剩下的部分就是人机交互接口了。显示部分使用的是PG160128A,液晶显示点阵是160X128的,可以显示更加丰富的内容。仿真中的输入设备为4X4矩阵键盘。剩下的就是虚拟示波器等测量工具。仿真电路很简单,接下来运行仿真看一下动态效果。

动态仿真

上电以后显示屏上介绍了该如何操作仿真进行测量。

显示器显示内容

仿真驱动部分

仿真可以控制电机正反转及PWM调速。这一部分使用的是单片机的P1.0和P1.1引脚。其中P1.0引脚主要作用是控制直流电机的正反转。仿真中P1.0引脚与L298的一个输入端口相连,同时该引脚经过反相器后去另外一个输入引脚相连,与输入引脚相对应的输出引脚直接与电机的电源相连,这样通过改变P1.0的状态就可以实现直流电机正反转的控制。而P1.1脚L298的A通道使能端口相连,该仿真中通过对P1.1引脚进行通断控制实现直流电机的调速。

仿真中将直流电机的脉冲输出端口与单片机的P3.4引脚相连,该引脚是定时器0的外部输入引脚。显示软件部分是使用定时器0完成的计数功能。仿真测得的转速与实际转速还是比较接近的。整理来说仿真效果还是不错的,仿真运行也是比较流畅的。

最后贴一下程序截图。程序使用的是KEIL C51UV2创建的工程,可以使用高一点的版本打开。主要包括两个部分,一个是主程序部分,一个是显示驱动部分。程序比较简单,不复杂,但是注释部分较少,有需要的小伙伴可以下载参考。

部分程序

如果有需要该仿真和程序的朋友可私信。该仿真源于网络。

相关问答

51单片机 的实验步骤?

单片机实验步骤如下:1.准备工作:准备好单片机开发板、USB数据线、编程软件等工具。2.连接硬件:将单片机开发板与电脑通过USB数据线连接,确保连接稳固。3...

51单片机 ,如何快速学习使用STM32单片机?

会了一种单片机,对着数据手册查看一下寄存器的设置可以快速的入手其他型号的单片机。会51单片机,说明有单片机的基础,再去学习STM32单...单片机其实都是相通的,...

基于proteus的 51 系列 单片机 怎样运行仿真?

你好!很高兴为你解答,下面给你仔细介绍!proteus是一个仿真软件,可以在proteus里面仿真51单片机的实验,这样解决了自己制作和焊接单片机的电路,把编写好多...

multisim怎么用C语言仿真 51单片机 ?

2、在新建的设计文档的工具栏选择“PlaceMCU”,在弹出的列表中选择8051单片机,点击“OK”确定选择。3、将单片机放置在Design上后会弹出MCU向导(MCUWizard...

怎么实现 51单片机 与电脑串口之间的通信?

首先,单片机和微机通信的电气标准要一致,微机串口一般是RS232电气标准,所以要加电平转换芯片,大多用MAX232,一般单片机实验板上都提供这样的标准串口。其...

51单片机 做一个模拟I2c的实验,E2PROM用的是at24c512b,但是...

空气净化器BlueairBlueairProM讨论回答(2)延时函数有问题!24C512的地址位是16位的,不能只传送八位地址位2条回答:延时函数有问题!

51单片机 入门教程?

1、单片机概念:在一片集成电路芯片上集成微处理器(CPU)、存储器(ROM和RAM)、I/O接口电路,从而构成了单芯片微型计算机,即单片机(singlechipMicrocomput...1、....

怎样读 51单片机 内程序?

我们在读程序之前呢,首先要明白这么一点内容,对读程序和写程序会有很大的帮助,那就是在51单片机中,每条程序语句都是逐个执行的,因为51单片机是单核CPU,一...

单片机 实验中,怎么用汇编比较大小?

51单片机中,没有专门的有符号数比较指令,只能通过一些变通的方法来实现,比如:比较30H和40H中有符号数的大小,结果放在R2中,大于则为1,等于为0,小于为128...5...

我学了3个月的 51单片机 ,应该会些什么?

学了三个月,效率如何,是否都掌握相关基础了,三个月掌握单片机内部资源就可以了,定时器,中断,串口,AD转换,最后做一个综合应用,ad转换数据通过串口发送到...学...

猜你喜欢