教程1.PacketTracer中MCU芯片编程入门教程
教程2.全部智能设备连接MCU使用方法
教程3.读卡器与红外探测器连接MCU使用方法
教程4.常用传感器使用方法
教程5.几种按钮与开关的使用方法
教程6.执行器使用方法
教程7.上云教程
教程8.多设备上云教程
教程9.Arduino+OneNET TCP透传上云教程(发+收)
本文将向大家介绍PacketTracer软件中常用传感器的使用方法
包含烟雾传感器、光照传感器、温度传感器、湿度传感器、风探测器、运动传感器、水探测器、水传感器、金属探测器的使用方法。
其中,烟雾探测器需要进行源码的修改。
由于接口限制,我们先对以下传感器进行讲解。
连接MCU的接口已加在模块名字后
我们打开MCU进行编程(不知道什么意思的朋友可以先阅读本文(点击这里))
输入以下简单的代码
from gpio import *
from time import *
while True:
light=digitalRead(0)
move=digitalRead(1)
hum=digitalRead(2)
smoke=digitalRead(3)
tem=digitalRead(4)
wind=analogRead(A3)
metal=digitalRead(A0)
water1=digitalRead(A1)
water2=digitalRead(A2)
print("light:",light)
print("move:",move)
print("hum:",hum)
print("smoke:",smoke)
print("tem:",tem)
print("wind:",wind)
print("metal:",metal)
print("water1:",water1)
print("water2:",water2)
print("__________________________________")
sleep(1)
之后运行代码显示如下
1.光照传感器
我们首先看light光照,此时示数为0,可以看界面右上角,现在已经是夜晚,所以没有光
我们可以点击时间进入环境界面如下
点击Edit并修改时间为白天,点击ok
回到MCU发现光照变为1023,即检测到光照了
2.运动传感器
接下来我们看运动传感器的使用方法
只需要按住alt键,并将鼠标在传感器上方移动,即可发现读数变为1023
3.湿度传感器和温度传感器
我们可以看到读到的示数并非摄氏度或百分比湿度
所以我们需要对读数进行处理
我们对原本读到的温湿度进行如下处理
(温度由0到1023表示-100℃到+100℃,所以我们先减去511再除以5.12即可得到摄氏度。湿度经过测试,除以10.19就可以得到最相近的读数。round函数的第二个参数为保留小数的位数。)
hum=digitalRead(2)
hum=round(hum/10.19,2)
tem=digitalRead(4)
tem=round((tem-511)/5.12,2)
如图可以看到,温度与湿度已经变为了摄氏度与百分比
4.风探测器
当环境有风时可以检测到1023,无风时检测到0
在模拟器中,白天往往无风,晚上与凌晨往往有风。
我们打开环境可以看到当前风速
但是风探测器无法检测风速,只能检测是否有风。我们看到MCU读到风为1023表示有风。
5.金属探测器
金属探测器可以检测金属,我们可以使用motor来模拟金属
当把金属放到探测器上方,显示80
6.水传感器与水探测器
这两位是不同的,左边的可以检测水位,右边的只能检测有没有水
我们打开洒水器,看二者的读数
发现water1会随着时间增加,water2永远是1023
关闭洒水器 water1逐渐下降,water2依旧为1023,直到水位water1为0,water2也变为0。
7.烟雾传感器
烟雾传感器的官方源码有些问题,无法使用MCU直接读取,所以我们需要进行一些简单的修改。
单击传感器→高级→编程→双击python代码→双击main函数
修改代码如下:
from gpio import *
from time import *
from environment import *
from physical import *
from pyjs import *
import math
ENVIRONMENT_NAME = "Smoke"
MIN = 0
MAX = 100
def main():
while True:
loop()
def loop():
value = float(Environment.get(ENVIRONMENT_NAME))
print(value)
if value < MIN:
value = MIN
elif value > MAX:
value = MAX
setDeviceProperty(getName(), "level", value)
digitalWrite(A0,value*10000)
sleep(1)
if __name__ == "__main__":
main()
修改完成后一定要点击Run运行,包括以后重新打开模拟器文件时,传感器代码可能会被系统关闭,需要我们重新在这里点一下运行才可以正常使用
打开小车(按住ALT点击小车)之后可以发现传感器正常读数
当然读数具体含义我们也没必要去深究,只要是有就可以了,具体的读数甚至每个软件版本都不一样。
至此,常用传感器的使用方法已经讲解完毕。
在此整理常用设备的方法与需传参数如下
执行器(智能设备)名称 | 控制方法 | 开 | 关 |
---|---|---|---|
台灯 | 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 |
烟雾传感器、读卡器、红外线装置需要进行一些修改,大家可以详细参考以下文章
烟雾传感器
读卡器与红外线装置