IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 【PT+Arduino+OneNET基础教程3】读卡器与红外探测器连接MCU使用方法 -> 正文阅读

[嵌入式]【PT+Arduino+OneNET基础教程3】读卡器与红外探测器连接MCU使用方法

PacketTracer读卡器与红外探测器连接MCU使用方法

其实在教程2中,我们已经学习了全部智能家居设备连接MCU使用的方法,其中就包含读卡器和红外探测器的使用方法,但为了方便大家搜索,我决定再开一篇文章进行单独的讲解。

读卡器可以读取卡片的ID并发送给服务器,红外检测器可以检测物体遮挡并发送给服务器,这两个设备十分好用,但连接MCU使用却存在一些问题,所以需要进行底层代码的修改,我会把修改好的优化过的代码直接给大家,大家不需要担心。
1.我们先把卡的属性修改为1001之外的数字比如2001(1001有些版本检测为0)
在这里插入图片描述
2.单击读卡器→右下角高级→I/O配置→修改数字插槽为1
在这里插入图片描述
3.点击编程,双击python代码
在这里插入图片描述
4.点击main.py
在这里插入图片描述

5.修改代码如下:

from options import Options
from time import *
from physical import *
from gpio import *
from ioeclient import IoEClient


DELAY_TIME = 1000        # var DELAY_TIME
current_time = 0        # var current_time

X_READ_DISTANCE = 50        # var X_READ_DISTANCE
Y_READ_DISTANCE = 50        # var Y_READ_DISTANCE
cardID = 0        # var cardID
lastCardID = 0        # var lastCardID
state = 2 # waiting        # var state


def setup ():

    # Registration Server Setup
    
    IoEClient.setup({
        "type": "RFID Reader",
        "states": [{
                "name": "Card ID",
                "type": "number",
                "unit": '',
                "controllable": False
            },
            {
                "name": "Status",
                "type": "options",
                "options": {
                    "0": "Valid",
                    "1": "Invalid",
                    "2": "Waiting"
                },
                "controllable": True
        }]
    })
    
    IoEClient.onInputReceive( lambda rinput: processData(rinput, True) )



def loop ():
    global cardID, lastCardID, state
    devices = devicesAt(getCenterX(), getCenterY(), X_READ_DISTANCE, Y_READ_DISTANCE)        # var devices
    found = False        # var found
    for i in xrange(0, len(devices)) :
        if devices[i] is getName():
            continue

        cardID = getDeviceProperty(devices[i], 'CardID')
        found = True
        
        digitalWrite(0,cardID)#如果发现卡片了则输出卡片ID
        
        
        break


    if not found:
        cardID = lastCardID = 0
        
        digitalWrite(0,0)#如果没有发现卡片则输出0
        
        
        setState(2)
    else:
        if lastCardID != cardID:
            lastCardID = cardID
            sendReport()


    delay(DELAY_TIME)



def setState (newState):
    global  state
    if state != newState:
        state = newState
        analogWrite(A1, state)
        sendReport()




def sendReport ():
    report  = str( int(cardID)) + "," + str(state)        # var report
    IoEClient.reportStates(report)



def processData (data, bIsRemote):
    if len(data) <= 0:
        return
    data = data.split(",")
    setState(int(data[1]))



if __name__ == "__main__":
    setup()
    while True:
        loop()
        idle()


改变主要在于中文注释的两行代码
第一行中文注释代码为向新建的数字接口D0输出卡片信息
第二行中文注释代码为未检测到卡片时输出0
如果不添加第一行,MCU将一直读到0
如果不添加第二行,移开卡片后MCU仍将一直输出之前读到的卡片ID而非0

6.一定记得点击Run,包括之后关闭重开pkt文件可能出现MCU读不到ID的情况,可能就是读卡器代码被软件系统默认停止运行了,需要我们重新手动运行一次。
在这里插入图片描述
7.进行以下连线
在这里插入图片描述
8.MCU内编写以下代码

from gpio import *
from time import *

while True:
	id=digitalRead(0)
	print(id)

	sleep(1)

在这里插入图片描述
代码很简单,就是循环读取读卡器数据并输出,我们尝试运行。
9.没有卡片时读到0 有卡片时读到卡片ID
在这里插入图片描述
在这里插入图片描述
则我们已成功掌握读卡器的使用方法。
为了方便大家搜索,我会把读卡器使用方法单独发布一篇文章,大家在此学会的就不需要再去查看另一篇文章了。

接下来我们用类似的方法对红外探测器进行一些修改。
1.单击探测器→高级→I/O配置→修改数字插槽为2 请注意与读卡器不同,此处修改为2
在这里插入图片描述
2.我们如图进行连线,请注意,检测器端口为D1接口而非D0接口,因为检测器底层代码向D1接口输出数据而非D0,而接到MCU的那一端可以接任意接口(本实验接D0)。在这里插入图片描述
3.运行红外检测器python程序同上(无需修改)
在这里插入图片描述
4.MCU内编写以下代码并运行

from gpio import *
from time import *

while True:
	thing=digitalRead(0)
	print(thing)

	sleep(1)

在这里插入图片描述
5.按住ALT将鼠标放在红线上则装置会变红,挪开鼠标则变暗
在这里插入图片描述
6.当遮挡时MCU控制台输出1023,否则输出0
在这里插入图片描述
在这里插入图片描述

全部智能设备的讲解到此结束,下一篇文章我们将进行物联网基础模块的讲解。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-05-05 11:35:52  更:2022-05-05 11:40:04 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 3:46:16-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码