【PT+Arduino+OneNET基础教程1】PacketTracer中MCU芯片编程教程(零基础入门)

【PacketTracer+Arduino+OneNET(TCP透传)物联网教程1】PacketTracer中MCU芯片编程教程

教程1.PacketTracer中MCU芯片编程入门教程
教程2.全部智能设备连接MCU使用方法
教程3.读卡器与红外探测器连接MCU使用方法
教程4.常用传感器使用方法
教程5.几种按钮与开关的使用方法
教程6.执行器使用方法
教程7.上云教程
教程8.多设备上云教程
教程9.Arduino+OneNET TCP透传上云教程(发+收)

应该有不少学校的网络课程设计会使用到PacketTracer(以下简称PT)这款软件,本文将就此软件的MCU编程的基本方法进行零基础的详细的讲解。

PT内的物联网相关设备主要可以分为两类:物联网模块和智能家居设备。

物联网模块又分为两类:传感器和执行器。

此外还有服务器和MCU两种设备,可以对物联网设备进行控制。
服务器可以控制智能家居设备,MCU可以控制智能家居设备和物联网基础模块。

但这并不意味着服务器功能比MCU弱。通过服务器,我们可以实现在软件内部直接使用软件内的手机无线远程控制智能家居设备,无需编程,但也因此无法进行上云与实物化等操作。所以服务器适合做课设的同学来进行基础设计。

MCU需要我们自己进行编程,无法与软件内的手机等设备互动。只能连接传感器和执行器,利用编程实现自定义的操作。但我们软件内的上云需要使用MCU芯片实现。而且PT模拟器内的编程较为简单,可以作为Arduino实物化的先行模拟。所以MCU芯片编程适合想要参加相关竞赛的同学使用。

【PT+Arduino+OneNET基础教程1】PacketTracer中MCU芯片编程教程(零基础入门)_第1张图片
我们看到的具有完整功能的设备,比如一个台灯,一个风扇,一个温度表,都是智能家居设备。(下图可能有重复)
【PT+Arduino+OneNET基础教程1】PacketTracer中MCU芯片编程教程(零基础入门)_第2张图片
而比如一个按钮,一个LED灯此类,都是物联网基础模块。
【PT+Arduino+OneNET基础教程1】PacketTracer中MCU芯片编程教程(零基础入门)_第3张图片
我们可以使用这些东西做什么呢?比如,我们可以将MCU连接一个温度传感器,一个加热器和一个制冷器。当温度过低就打开加热器,当温度过高就打开制冷器。当然,我们需要在MCU内编程实现。

在本专栏中,不再讲解服务器的配置与使用,而将着重于MCU编程、智能家居编程与全部物联网模块的使用教程以及高级使用方法。如有需要请前往本专栏(点击这里)进行学习。

那么我们正式开始本篇的教程。

1.我们首先放置一个MCU芯片和一个按钮。
【PT+Arduino+OneNET基础教程1】PacketTracer中MCU芯片编程教程(零基础入门)_第4张图片
2.然后我们使用这根线进行连接。在这里插入图片描述
3.连接时,我们可以看到MCU具有很多接口如D0、D1、A0、A1。在本实验中,我们使用MCU的D0接口。 当然并不是说只能使用D0接口。
【PT+Arduino+OneNET基础教程1】PacketTracer中MCU芯片编程教程(零基础入门)_第5张图片
按钮只有D0接口
【PT+Arduino+OneNET基础教程1】PacketTracer中MCU芯片编程教程(零基础入门)_第6张图片
并不是说,按钮只有D0接口,那么就必须要连MCU的D0接口。物联网模块如按钮一般只有一个D0接口或一个A0接口,少数有多个接口。但MCU有许多个接口。

我们可以发现,所有的接口都是分为D接口和A接口。我们将D接口称为数字接口,A接口称为模拟接口。每个物联网模块需要连接到MCU的接口类型要求都是不同的,但大部分都可以直接把A口当作D口使用,也就是说我们并不需要特意去分类每个设备需要连接什么接口,如果遇到无法使用的情况只需要把A口换成D口就可以了。

4.连接完成后,我们将鼠标放在线上的小圆点上,可以显示如下。
【PT+Arduino+OneNET基础教程1】PacketTracer中MCU芯片编程教程(零基础入门)_第7张图片
我们可以通过此方法快捷查看接口信息。

5.单击MCU芯片→编程→new→emptypython
【PT+Arduino+OneNET基础教程1】PacketTracer中MCU芯片编程教程(零基础入门)_第8张图片
6.点击main.py进入编程界面
【PT+Arduino+OneNET基础教程1】PacketTracer中MCU芯片编程教程(零基础入门)_第9张图片
7.我们输入如下代码后点击RUN按钮 之后可以看到下方持续输出Hello字符串。
行1 与 行2 为导入必要的库。gpio库包含从传感器和执行器读取和写入信息的函数,time库包含sleep函数。如第6行sleep(1)就表示程序暂停1秒。我们在while循环中千万不要忘记sleep(1),不然会卡死。
【PT+Arduino+OneNET基础教程1】PacketTracer中MCU芯片编程教程(零基础入门)_第10张图片

8.现在我们尝试读取按钮的信息。
输入以下代码并允许,可以在在下方看到0,0," "
行5:使用analogRead,参数为0,意思为使用analog方法读取MCU接口D0收到的信息
行6:使用digitalRead,参数为0,意思为使用digital方法读取MCU接口D0收到的信息
行6:使用customRead,参数为0,意思为使用custom方法读取MCU接口D0收到的信息
行7:输出三者
可以看到,前两种方法都成功读取到了0,而第三种方法无法读取成功。
【PT+Arduino+OneNET基础教程1】PacketTracer中MCU芯片编程教程(零基础入门)_第11张图片
9.此时我们按住ALT键并左键按住按钮
【PT+Arduino+OneNET基础教程1】PacketTracer中MCU芯片编程教程(零基础入门)_第12张图片
可以看到控制台显示1023,1023,” “
【PT+Arduino+OneNET基础教程1】PacketTracer中MCU芯片编程教程(零基础入门)_第13张图片
这表示前两种方法都读取到了按钮被按下的信息。
也就是说,我们可以使用analogRead(0)或digitalRead(0)方法读取连接到接口D0的按钮的信息,而customRead(0)方法不可以。其实,这三种方法就是我们会用到的全部的读函数。

10.假如我们将按钮连接到MCU的D1接口,大家需要怎么读取按钮信息呢?
【PT+Arduino+OneNET基础教程1】PacketTracer中MCU芯片编程教程(零基础入门)_第14张图片
我们只需要将函数参数修改为1即可
【PT+Arduino+OneNET基础教程1】PacketTracer中MCU芯片编程教程(零基础入门)_第15张图片
11.那如果我们将按钮连接到MCU的A0接口呢?
【PT+Arduino+OneNET基础教程1】PacketTracer中MCU芯片编程教程(零基础入门)_第16张图片
此时我们的参数需要传A0而非0,这也就是PT模拟器区分D接口和A接口的方式
【PT+Arduino+OneNET基础教程1】PacketTracer中MCU芯片编程教程(零基础入门)_第17张图片

所以,我们具体应该使用analogRead方法还是digitalRead方法还是customRead方法,大家可以首先到设备的说明界面进行查看如下图。
我们放置一台台灯为例并单击,可以看到以下说明。
【PT+Arduino+OneNET基础教程1】PacketTracer中MCU芯片编程教程(零基础入门)_第18张图片
说明中提及customWrite方法,就说明我们需要对台灯使用custom方法。大家可能有些疑惑,为什么刚刚有digitalRead,analogRead,customRead,这里就忽然变成了Write了呢。
【PT+Arduino+OneNET基础教程1】PacketTracer中MCU芯片编程教程(零基础入门)_第19张图片
其实常用函数就分为这三种,读和写函数又都分为digital analog和custom。对于台灯此类需要被控制的设备,我们就需要对它写入信息,对于按钮这种设备或温度传感器这类设备,我们需要读取他们传来的信息。(其实万物皆可读,只是一般没有必要)

此时我们再单击按钮查看说明发现,并没有提及使用哪种方法,这也就是为什么我们在上文中分别使用了三种方法并输出查看。对于说明中没有提及使用方法的设备,我们就需要自行尝试解决。【PT+Arduino+OneNET基础教程1】PacketTracer中MCU芯片编程教程(零基础入门)_第20张图片

12.此时我们已经学会了如何读取按钮的信息,那么我们怎样利用按钮呢?
我们找来一个台灯,接在MCU的D0接口
【PT+Arduino+OneNET基础教程1】PacketTracer中MCU芯片编程教程(零基础入门)_第21张图片
13.我们输入以下代码并运行。
【PT+Arduino+OneNET基础教程1】PacketTracer中MCU芯片编程教程(零基础入门)_第22张图片
这个代码的意思是,如果按钮被按下,我们就使用customWrite方法向MCU的接口D0写入信息1,否则就向接口D0写入信息0。我们可以看到写函数具有两个参数,第一个参数是接口,第二个参数是写入的数据。
此时,我们按下按钮,则台灯打开。松开按钮,则台灯熄灭。
【PT+Arduino+OneNET基础教程1】PacketTracer中MCU芯片编程教程(零基础入门)_第23张图片
【PT+Arduino+OneNET基础教程1】PacketTracer中MCU芯片编程教程(零基础入门)_第24张图片
则我们已经学会了如何利用按钮信息控制台灯。
其实我们查看台灯的说明可以发现,向台灯写入0表示关闭,1表示dim即暗,2表示火力全开。所以我们customWrite(x,2)就可以让台灯更亮。

其实,不同的设备需要写入不同的信息,比如LED灯,我们可以写入0到1023表示亮度强弱,比如MOTOR发动机,我们输入0到1023表示旋转速度。比如加热器制冷器我们需要写入LOW或HIGH(0或1023)表示开与关,或者是风扇写入0或1表示关或开。还有更特殊的设备,我们将在以后的教程中一一讲解。

本节课主要向大家介绍了①线的选择 ②D接口和A接口的区别(一般可以把A当作D直接使用,函数参数传A0 A1 A2) ③读函数写函数和sleep函数 ④如何知道设备应使用digital analog还是custom方法

这节课是入门课,所以内容比较冗长,节奏较慢,大家如果没有看懂也没有关系,以后的教程中将带领大家在实践中获取真知。

注意:绝大部分设备都可以使用D接口,而MCU的接口数量有限,经常出现D接口不够用的情况,所以我们尽量把可以使用A接口的设备连接到A接口,为只能使用D接口的设备让出接口。

在此整理常用设备的方法与需传参数如下

执行器(智能设备)名称 控制方法
台灯 customWrite 1暗 2亮 0
加湿器 customWrite 1 0
咖啡机 custom Write 1 0
电风扇 customWrite 1低速 2高速 0
车库门 customWrite 1 0
siren报警器 customWrite 1 0
鼓风机 customWrite 1 0
草坪洒水器 customWrite 1 0
窗户 customWrite 1 0
排水孔 customWrite 1 0
customWrite [1,0]数组 [0,1]
摄像头 customWrite 1 0
LCD显示器 customWrite “xx” 字符串 ""空字符串
制冷器 digitalWrite 1023或HIGH 0或LOW
制热器 digitalWrite 1023或HIGH 0或LOW
洒水器 digitalWrite 1023或HIGH 0或LOW
舵机 analogWrite 1到1023(亮度) 0
LED analogWrite 1到1023(速度) 0

门的使用较为特殊,数组第一个数字为0的话表示不打开门,为1的话表示尝试打开门。第二个数字表示是否上锁,为1的话表示上锁,为0的话表示解锁。

传感器名称 读取方法
光照传感器 digitalRead
温度传感器 digitalRead
湿度传感器 digitalRead
运动传感器 digitalRead
烟雾传感器 digitalRead
金属传感器 digitalRead
水传感器 digitalRead
水探测器 digitalRead
风探测器 digitalRead
读卡器 digitalRead
红外线探测器 digitalRead
光照传感器 analogRead

烟雾传感器、读卡器、红外线装置需要进行一些修改,大家可以详细参考以下文章

烟雾传感器

读卡器与红外线装置

你可能感兴趣的:(物联网,mcu,思科,iot)