5.8 综合案例2.0-智能刷卡门禁系统(仅支持2.2以上版本)

本文介绍如何使用HaaS506开发板配合MFRC522 RFID传感器,通过阿里云物联网平台实现门禁系统的智能控制。涉及硬件连接、代码流程、物联网平台配置及场景联动规则设定,适合小区门禁管理需求。

最新案例教程点击下方链接跳转,优快云已停止更新

点击跳转HaaS506官方最新案例







简介

使用MFRC522 RFID传感器与舵机制作的刷卡门禁系统。使用阿里云平台场景联动功能,只识别设定的卡号,简单实现多卡识别。满足小区使用场景。

准备

本案例需要的硬件

器材 数量
HaaS506开发板 1
MFRC522 RFID传感器 1
SG90舵机 1
喇叭 1
SIM卡 1
RFID卡片 若干
杜邦线 若干

硬件连接图

在这里插入图片描述

代码流程

1、连接阿里云平台
2、上报门禁状态
3、读RFID卡号,上传阿里云平台
4、云平台判断卡号,控制门禁
5,开门后等待时间,关闭门禁,上传门禁状态

功能实现

1、物联网平台开发

第一次使用物联网平台的读者,需要开通实例后使用物联网平台功能。也可以使用免费的公共实例进行开发,在阿里云物联网平台中,左上角选择‘华东2-上海’,点击‘公共实例’,即可开通。

1、平台产品创建可参考haas506 2.0开发教程-aliyunIoT
2、创建产品属性(添加物模型)
选择产品功能定义编辑草稿
在这里插入图片描述
1、添加自定义功能
2、按照图2显示添加标识符数据类型(标识符要与代码一致)
3、点击发布上线
在这里插入图片描述

  • 点击确定
    在这里插入图片描述

2、设备端开发

# 获取设备的IMEI 作为deviceName 进行动态注册
deviceName = modem.getDevImei()
...

改为

# 获取设备的IMEI 作为deviceName 进行动态注册
deviceName = modem.info.getDevImei()
...

注意:代码中mp3文件需要自行添加

main.py

# coding=utf-8
from driver import PWM
import network
import ujson
import utime as time
import modem
from  aliyunIoT import Device
import kv
import mfrc522
import audio 

 
#当iot设备连接到物联网平台的时候触发'connect' 事件
def on_connect(data):
    global module_name,default_ver,productKey,deviceName,deviceSecret,on_trigger,on_download,on_verify,on_upgrade
    print('***** connect lp succeed****')
    data_handle = {
   
   }
    data_handle['device_handle'] = device.getDeviceHandle()


#当连接断开时,触发'disconnect'事件
def on_disconnect():
    print('linkkit is disconnected')

#当iot云端下发属性设置时,触发'props'事件
def on_props(request):
    global servo_data
    params=request['params']
    params=eval(params)
    servo=params["open_door"]
    servo_data={
   
   }
    if servo ==1:
        param2 = {
   
   'freq':50, 'duty': 12 }
        pwm_lpg.setOption(param2) 
        print('open zhe door')    
        servo_data["open_door"]= 1
        servo_data_str=ujson.dumps(servo_data)
        data={
   
   
            'params':servo_data_str
            }       
        device.postProps(data)
        aud.play('/data/pyamp/welcome.mp3')   
        time.sleep(3)  
        param2 = {
   
   'freq':50, 'duty': 5 }
        pwm_lpg.setOption(param2) 
        time.sleep(1)
        servo_data["open_door"]= 0
        servo_data_str=ujson.dumps(servo_data)
        data={
   
   
            'params':servo_data_str
            }       
        device.postProps(data)
    else:
        pass

#当iot云端调用设备service时,触发'service'事件
def on_service(id,request):
    print('clound req id  is {} , req is {}'.format(id,request))
#当设备跟iot平台通信过程中遇到错误时,触发'error'事件
def on_error(err):
    print('err msg is {} '.format(err))

#网络连接的回调函数
def on_4g_cb(args):
     global g_connect_status
     pdp = args[0]
     netwk_sta = args[1]
     if netwk_sta == 1:
         g_connect_status = True
     else:
         g_connect_status = False

#网络连接
def connect_network():
     global net,on_4g_cb,g_connect_status
     #NetWorkClient该类是一个单例类,实现网络管理相关的功能,包括初始化,联网,状态信息等.
     net = network.NetWorkClient()
     g_register_network = False
     if net._stagecode is not None and net._stagecode == 3 and net._subcode == 1:
         g_register_network = True
     else:
         g_register_network = False
     if g_register_network:
    #注册网络连接的回调函数on(self,id,func);  1代表连接,func 回调函数  ;return 0 成功
         net.on(1,on_4g_cb)    
         net.connect(None)
     else:
         print('网络注册失败')
     while True:
         if g_connect_status:
             print('网络连接成功')
             break
         time.sleep_ms(20)

#动态注册回调函数
def on_dynreg_cb(data):
     global deviceSecret,device_dyn_resigter_succed
     deviceSecret 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值