所有分类
主题 主题
平台 平台
我的工作台
userHead
注册时间 [[userInfo.create_time]]
创造力 [[userInfo.creativity]]
[[userInfo.remark]]
[[d.project_title]]
articleThumb
[[d.material_name]]
timelineThumb
进入工作台
折叠
所有分类 我的工作台
展开
智能门锁
汤果 汤果 2020-09-30 08:51:18
2
1
简单

【项目介绍】

这是一款基于单神经元模块的智能门锁。开锁密码可以通过按钮自行设置,可以设置不同的按键次数及按键时间。如果密码输入正确,门锁会自动打开。该门锁还具有物联网功能,每次开关门锁都会上传至云端,户主可以在网页端、小程序端查看开关门锁记录。

【项目演示】

【单神经元模块】

单神经元模块是 BOSON 系列中的一种功能模块,通过运用该模块,我们可以学习和了解人工智能的基础——机器学习。该功能模块模拟的是神经网络中最基础的一个节点——神经元。 神经元(neuron,neure),是神经系统的基本结构和机能单位。神经元在人体上有接受、整合和传递信息的功能。而我们用到的单神经元模块也是人工智能神经网络中的一个基础节点,与人体神经元类似。

通过单神经元模块的处理,按键按下和松开的时间节奏以及精度都能够得到控制,从而达到机器学习中“训练”和“调整”的目的。 在单神经元模块左侧的输入接口接入传感器,如:按钮开关、光照强度传感器、声音传感器等数字和模拟传感器后,按住单神经元模块上的学习按钮,即可对输入的电信号进行学习,同时学习指示灯点亮。整个学习过程,单神经元模块会记录信号的强度和模式。学习完毕后,松开学习按钮。当单神经元模块输入接口接收到学习过程中的同样的电信号强度和模式时,输出接口的信号线会输出高电平,不同的设备可以利用此电压信号实现想要的功能。匹配的精度可以通过精度调节旋钮进行调节。

projectImage
材料清单 材料清单
1x
掌控板2.0编程入门学习主控板 含microUSB转TypeC两用线
1x
micro:bit掌控I/O扩展板
1x
数字大按钮模块 黄色
1x
Gravity: 简易继电器模块
1x
12V/1000mA开关电源适配器(Arduino兼容)
1x
12V斜口电磁锁(可长期通电带锁扣)
1x
单神经元模块
步骤1 步骤1
连接器材

输入部分:按钮-->单神经元模块输入端-->单神经元模块输出端-->扩展板 P0 引脚

输出部分:扩展板 P16 引脚-->简易继电器模块

简易继电器模块:

VIN:12V 电源适配器

VOUT:12V 斜口电磁锁

projectImage
步骤2 步骤2
引入扩展

打开 Mind+,切换到上传模式。选择左下角的【扩展】,在【主控板】分类中选择【掌控板】。

projectImage

加载【网络服务】中的【MQTT】与【Wi-Fi】模块。

projectImage
步骤3 步骤3
编写代码

程序的整体逻辑如下:

1.连接 Wi-Fi,等待直到连接成功

2.发起 MQTT 连接,等待直到成功

3.循环读取引脚 P0,如单神经元模块输出高电平则打开电磁锁,同时发送消息到物联网,告知门锁已打开。5 秒后关闭门锁,并通知物联网平台门锁已关闭。

projectImage

MQTT 初始化参数中需要正确填写信息。这里采用了 EasyIot 平台。

projectImage

在 http://iot.dfrobot.com.cn/workshop.html 中添加一个新的设备,记录设备的 Topic、左侧的 Iot_id 和 Iot_pwd,依次填入上图空格处。

projectImage
步骤4 步骤4
设置智能门锁密码

按下单神经元模块中间的学习按键,指示灯亮起,进入学习状态。在 10 秒内以不同的按键速度和按下时间作为智能门锁的密码,完成后松开学习按键,完成学习。下次再以同样的按键方式按键就可以让单神经元模块输出高电平,进而打开电磁锁。

步骤5 步骤5
设计外观

这一个尺寸合适的纸箱,用螺丝将电磁锁固定在中间,并将其他器材全都塞进盒子里。

projectImage
projectImage
projectImage
步骤6 步骤6
测试运行

给设备通电,以不同的方式按键,测试是否能将门锁打开。同时物联网平台能够查看门锁开关记录。手机端 EasyIot 小程序也可以查看。

projectImage
代码 代码
	                    					/*!
 * MindPlus
 * mpython
 *
 */
#include <DFRobot_Iot.h>
// 静态常量
const String topics[5] = {"EXQEfFFGg","","","",""};
// 创建对象
DFRobot_Iot myIot;


// 主程序开始
void setup() {
	myIot.wifiConnect("wifi_ssid", "password");
	// 连接Wifi
	while (!myIot.wifiStatus()) {yield();}
	myIot.init("iot.dfrobot.com.cn","Hy-5X7JzZE","","rkfcQmJf-V",topics,1883);
	myIot.connect();
	// 连接EasyIot
	while (!myIot.connected()) {yield();}
}
void loop() {
	if ((digitalRead(P0))) {
		myIot.publish(topic_0, "open");
		digitalWrite(P16, HIGH);
		delay(5000);
		myIot.publish(topic_0, "close");
	}
	else {
		digitalWrite(P16, LOW);
	}
}
	                    				
附件 附件
Makelog作者原创文章,未经授权禁止转载。
2
1
评论
[[c.user_name]] [[c.create_time]]
[[c.parent_comment.count]]
[[c.comment_content]]