智能密码箱

2020-10-281117
AI 快速预览详细 收起
智能密码箱是一个结合了物联网模块、舵机和显示屏等组件的项目,旨在实现安全存储。该项目适合STEM教育,能够锻炼孩子的动手能力和逻辑思维。通过编程,用户可以设置密码并控制密码箱的开关。项目所需的主要材料包括OBLOQ IoT物联网模块、舵机、显示屏等。通过详细的接线图和代码示例,用户可以轻松完成项目的组装和调试。
project-image
project-image

我有很多钱。但是,放在一个抽屉里不保险而藏起来又担心找不到,这可怎么办呢?然后我又在社区上看到了许多制作保险箱的于是我也想制作一个。接下来就开始找材料。

步骤1 准备材料

材料清单

步骤2 接线组装

接线图就不需要画了,我就给一个线的连接部分来吧。

物联网模块蓝色接线到D1绿色线接D0。

为了避免出现混接线,MP3使用软串口。绿色的线接D2,蓝色的线接D3。

液晶显示屏接CII

舵机接D3

蜂鸣器接D5

按钮A接D7

按钮B接D8

RGB彩灯带接D6

接好线。把激光切割件。拼成一个木盒子,想办法把元器件放进去,用舵机当锁就可以了。

步骤3 编辑程序,调试程序。

这时,简单的图形化代码就出来了。

project-image

这就是简单的程序,下面的就是代码。【记得用mind﹢里面的手动输入来用】如果不喜欢这样输密码的,最下面的附件里有程序奉上。下载就可以了。

代码
/*!
 * MindPlus
 * uno
 *
 */
#include <UNO_Obloq.h>
#include <SimpleList.h>
#include <DFRobot_Servo.h>
#include <SoftwareSerial.h>
#include <DFRobot_NeoPixel.h>
#include <DFRobot_SerialMp3.h>
#include <DFRobot_Libraries.h>
#include <DFRobot_LiquidCrystal_I2C.h>

// 动态变量
String             mind_s_a, mind_s_b;
volatile float     mind_n_MiMa, mind_n_ShuLiang, mind_n_my_float_variable;
SimpleList<String> mind_l_MiMa;
// 函数声明
void DF_ChuShiHua();
void DF_yes();
void DF_no();
// 静态常量
const String topics[5] = {"E_eikAtGg","","","",""};
// 创建对象
UNO_Obloq                 olq;
DFRobot_LiquidCrystal_I2C lcd1602;
Servo                     servo_4;
DFRobot_NeoPixel          neoPixel_6;
DFRobot_SerialMp3         serialMp3;
SoftwareSerial            softSerialserialMp3(2, 3);
DFRobot_Tone              DFTone;


// 主程序开始
void setup() {
	servo_4.attach(4);
	DF_ChuShiHua();
}
void loop() {
	mind_n_my_float_variable = (map(analogRead(A0), 0, 1023, 0, 9));
	mind_s_b = (String((String((String(mind_l_MiMa[1-1]).toInt())) + String((String(mind_l_MiMa[2-1]).toInt())))) + String((String(mind_l_MiMa[3-1]).toInt())));
	mind_s_a = (ceil(mind_n_my_float_variable));
	if (digitalRead(8)) {
		lcd1602.print(uint32_t(mind_n_MiMa), uint32_t(1), (String(mind_s_a).toInt()));
		mind_l_MiMa.replace((constrain(mind_n_ShuLiang, 1, 3))-1, mind_s_a);
		mind_n_ShuLiang += 1;
		mind_n_MiMa += 1;
		delay(1000);
	}
	if (digitalRead(7)) {
		if ((((String(mind_s_b).toInt())==123) && (mind_l_MiMa.size()>=3))) {
			DF_yes();
		}
		else {
			DF_no();
		}
	}
	if ((olq.getMessage(olq.topic_0)==String("打开"))) {
		olq.publish(olq.topic_0, "输入密码");
		if ((olq.getMessage(olq.topic_0)==123)) {
			olq.publish(olq.topic_0, "ok");
			DF_yes();
		}
	}
}


// 自定义函数
void DF_ChuShiHua() {
	olq.startConnect(0, 1, "HONOR 20 PRO", "lsr22619730621", "Ve1mB0DGR", "V61ifADMgz", topics, "iot.dfrobot.com.cn", 1883);
	olq.publish(olq.topic_0, "hello");
	mind_l_MiMa.clear();
	lcd1602.clear();
	servo_4.angle(abs(0));
	neoPixel_6.begin(6, 7);
	neoPixel_6.setBrightness(255);
	neoPixel_6.clear();
	neoPixel_6.begin(6, 7);
	mind_n_MiMa = 0;
	mind_n_ShuLiang = 0;
	mind_n_my_float_variable = 0;
	lcd1602.begin(0x20);
	lcd1602.printLine(uint32_t(1), "hello");
	delay(2000);
	lcd1602.clear();
	mind_s_a = "    ";
	mind_s_b = "   ";
	lcd1602.printLine(uint32_t(1), "hello");
	mind_l_MiMa.push_back("      ");
	mind_l_MiMa.push_back("      ");
	mind_l_MiMa.push_back("      ");
}
void DF_yes() {
	serialMp3.begin(&softSerialserialMp3);
	serialMp3.play();
	serialMp3.volume(100);
	serialMp3.playList(1);
	lcd1602.printLine(uint32_t(1), "YES");
	neoPixel_6.setRangeColor(0, 4, 0x00FF00);
	delay(1000);
	neoPixel_6.showRainbow(0, 4, 1, 360);
	DFTone.play(5, 988, 500);
	delay(1000);
	DFTone.play(5, 659, 500);
	delay(1000);
	DFTone.play(5, 622, 500);
	delay(1000);
	DFTone.play(5, 932, 500);
	servo_4.angle(abs(90));
	delay(4000);
	servo_4.angle(abs(0));
	mind_s_a = " ";
	mind_s_b = " ";
	mind_n_MiMa = 0;
	mind_n_ShuLiang = 0;
	lcd1602.clear();
	lcd1602.printLine(uint32_t(1), "hello");
	mind_l_MiMa.clear();
	mind_l_MiMa.push_back("      ");
	mind_l_MiMa.push_back("      ");
	mind_l_MiMa.push_back("      ");
}
void DF_no() {
	serialMp3.begin(&softSerialserialMp3);
	serialMp3.play();
	serialMp3.volume(100);
	serialMp3.playList(1);
	neoPixel_6.setRangeColor(0, 7, 0xFF0000);
	lcd1602.printLine(uint32_t(1), "NO");
	DFTone.play(5, 131, 500);
	delay(1000);
	DFTone.play(5, 131, 500);
	delay(1000);
	DFTone.play(5, 131, 500);
	delay(1000);
	DFTone.play(5, 131, 500);
	lcd1602.clear();
	lcd1602.printLine(uint32_t(1), "hello");
	mind_n_MiMa = 0;
	mind_n_ShuLiang = 0;
	mind_s_a = " ";
	mind_s_b = " ";
	mind_l_MiMa.clear();
	mind_l_MiMa.push_back("      ");
	mind_l_MiMa.push_back("      ");
	mind_l_MiMa.push_back("      ");
}
project-image

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

所需材料/产品

加载全部

    Arduino入门基础教程

    Arduino入门基础教程

    Arduino入门基础教程

    Gravity: 数字蜂鸣器模块(Arduino兼容)

    Gravity: 数字蜂鸣器模块(Arduino兼容)

    Gravity: 数字蜂鸣器模块(Arduino兼容)

    Gravity: 模拟旋转角度传感器(Arduino兼容,旋转 300°,旋钮)

    Gravity: 模拟旋转角度传感器(Arduino兼容,旋转 300°,旋钮)

    Gravity: 模拟旋转角度传感器(Arduino兼容,旋转 300°,旋钮)

相关推荐

评论(0)
- 没有更多了 -

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

相关推荐

所需材料/产品

Arduino入门基础教程

Arduino入门基础教程

Arduino入门基础教程

Gravity: 数字蜂鸣器模块(Arduino兼容)

Gravity: 数字蜂鸣器模块(Arduino兼容)

Gravity: 数字蜂鸣器模块(Arduino兼容)

Gravity: 模拟旋转角度传感器(Arduino兼容,旋转 300°,旋钮)

Gravity: 模拟旋转角度传感器(Arduino兼容,旋转 300°,旋钮)

Gravity: 模拟旋转角度传感器(Arduino兼容,旋转 300°,旋钮)

加载全部