亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

Arduino MKR IoT 套件打造智能密码盒:Blynk 远程设密、舵机开锁

元件清单(均含于 MKR IoT Bundle)

Arduino MKR1000 / MKR WiFi 1010×1内置 Wi-Fi,支持 Blynk 云连接
微型舵机(SG90 或兼容)×1充当箱盖锁扣
RGB LED(共阴)×1颜色提示解密进度
旋转电位器 10kΩ×3三位密码输入
1602 LCD(并口/ I2C 均可)×1实时显示当前密码位
有源蜂鸣器×1开箱播放《星球大战》主题曲
硬纸板 2mm / 3D 打印外壳×1盒体结构

项目逻辑

  1. 设密: 手机端 Blynk App 三个滑块(V1/V2/V3,范围 0-9)设定三位密码,实时同步到单片机
  2. 解密: 用户拨动三个电位器,LCD 显示当前值(0-9),RGB LED 指示接近度:
    • 蓝 → 青 → 黄 → 红(越接近越暖)
  3. 开箱: 三位全对 → 蜂鸣器奏乐 + 舵机旋转 90° 弹开盖盖
  4. 复位: 三电位器全归零 → 重新上锁,等待下一次挑战
Arduino MKR IoT 套件打造智能密码盒:Blynk 远程设密、舵机开锁

Blynk 快速入门

  1. 安装 Blynk App(iOS/Android),注册账号
  2. New Project → 选择 MKR1000 → 获得 Auth Token(邮件同步)
  3. 添加 3 个 Slider 控件,分别绑定 Virtual Pin V1、V2、V3,范围 0-9
  4. Arduino IDE 安装 Blynk 与 WiFi101 库

分步实现指南

1. LCD 显示电位器值

#include <LiquidCrystal.h>
const int rs=12, en=11, d4=2, d5=3, d6=4, d7=5;
LiquidCrystal lcd(rs,en,d4,d5,d6,d7);

void setup() {
  analogWrite(A3, 0); // 背光最亮(A3 控制对比度/背光)
  lcd.begin(16,2);
}

void loop() {
  int v1 = map(analogRead(A0), 0, 1023, 0, 9);
  int v2 = map(analogRead(A1), 0, 1023, 0, 9);
  int v3 = map(analogRead(A2), 0, 1023, 0, 9);
  lcd.setCursor(0,0); lcd.print(v1); lcd.print(' '); lcd.print(v2); lcd.print(' '); lcd.print(v3);
}

2. RGB LED 颜色反馈


int rPin=6, gPin=8, bPin=7;
void setColor(int r,int g,int b){ analogWrite(rPin,r); analogWrite(gPin,g); analogWrite(bPin,b); }

void giveFeedback(int p1,int p2,int p3, int t1,int t2,int t3) {
  int d1=abs(p1-t1), d2=abs(p2-t2), d3=abs(p3-t3);
  if(d1<=1 && d2<=1 && d3<=1) setColor(255,0,0);           // 红:极近
  else if(d1<=3 && d2<=3 && d3<=3) setColor(255,255,0);    // 黄:较近
  else if(d1<=4 && d2<=4 && d3<=4) setColor(0,255,255);    // 青:一般
  else setColor(0,0,255);                                   // 蓝:远
}

3. 蜂鸣器播放《星球大战》主题


#define BUZZER 1
const int NOTE_C4=262, NOTE_D4=294, NOTE_E4=330, NOTE_F4=349, NOTE_G4=392;
const int NOTE_G4S=415, NOTE_A4=440, NOTE_AS4=466, NOTE_B4=494, NOTE_C5=523;
// ... 更多音符定义 ...

void beep(int note, int dur) { tone(BUZZER, note, dur); delay(dur+50); noTone(BUZZER); }

void playStarWars() {
  beep(NOTE_A4,500); beep(NOTE_A4,500); beep(NOTE_A4,500);
  beep(NOTE_F4,350); beep(NOTE_C5,150);
  beep(NOTE_A4,500); beep(NOTE_F4,350); beep(NOTE_C5,150);
  beep(NOTE_A4,650); delay(500);
  beep(NOTE_E5,500); beep(NOTE_E5,500); beep(NOTE_E5,500);
  beep(NOTE_F5,350); beep(NOTE_C5,150);
  beep(NOTE_GS4,500); beep(NOTE_F4,350); beep(NOTE_C5,150);
  beep(NOTE_A4,650);
}

4. 舵机开锁/上锁


#include <Servo.h>
Servo lockServo;
void openLock() { for(int pos=0; pos<=90; pos++){ lockServo.write(pos); delay(15); } }
void closeLock() { for(int pos=90; pos>=0; pos--){ lockServo.write(pos); delay(15); } }

5. 完整融合代码框架


#include <SPI.h> #include <WiFi101.h> #include <BlynkSimpleWiFiShield101.h>
#include <LiquidCrystal.h> #include <Servo.h>

char auth[] = "YOUR_BLYNK_TOKEN";
char ssid[] = "YOUR_WIFI_SSID";
char pass[] = "YOUR_WIFI_PASS";

// Blynk 虚拟引脚写入回调
BLYNK_WRITE(V1){ target[0] = param.asInt(); }
BLYNK_WRITE(V2){ target[1] = param.asInt(); }
BLYNK_WRITE(V3){ target[2] = param.asInt(); }

int target[3] = {1,1,1}; // 默认密码 111
bool unlocked = false;

void setup() {
  // 初始化 LCD、RGB、舵机、蜂鸣器、Blynk WiFi
  Blynk.begin(auth, ssid, pass);
  lockServo.attach(9); lockServo.write(0); // 上锁位
}

void loop() {
  Blynk.run();
  int current[3];
  for(int i=0;i<3;i++) current[i] = map(analogRead(A0+i), 0, 1023, 0, 9);
  lcd.setCursor(0,0); lcd.print(current[0]); lcd.print(' '); lcd.print(current[1]); lcd.print(' '); lcd.print(current[2]);

  if(!unlocked) {
    giveFeedback(current[0],current[1],current[2], target[0],target[1],target[2]);
    if(current[0]==target[0] && current[1]==target[1] && current[2]==target[2]) {
      playStarWars(); openLock(); unlocked = true;
    }
  } else {
    // 已解锁:全零则复位
    if(current[0]==0 && current[1]==0 && current[2]==0) { closeLock(); unlocked = false; }
  }
}

外壳制作

下载 box.dxf 激光切割 2mm 硬纸板,或参考尺寸 3D 打印。舵机臂连接箱盖锁舌,预留 LCD、电位器、USB 编程口开孔。

原理图

完整接线图见附件 schematic.png,包含电源、LCD 对比度电路、RGB LED 限流电阻、舵机供电去耦电容等细节。

学习要点总结

制造工艺

  1. 集成电路 (IC):微观世界里的算力引擎与制造极限
  2. 树莓派 Zero 配合 Node‑RED 融合 TI SensorTag 与 Blynk 物联网平台
  3. Arduino 数字骰子:LCD 显示随机点数的电子骰子
  4. 多位置温度传感器系统,助力智能家居集成
  5. DIY Arduino USB 游戏手柄 — 自制高性能游戏手柄
  6. MotionSense:基于 Arduino 与 ESP8266 的智能入侵检测系统
  7. 3D 打印机防火卫士:智能传感器安全系统
  8. MOSMusic 套件:MOSFET + Arduino 打造音乐同步灯光控制系统
  9. 钻床核心部件解析:从底座到主轴的完整拆解
  10. 内燃机核心零部件详解
  11. 掌握 SPICE 网表语法:元件命名、无源/有源元件与源定义
  12. 微电子学详解:微型电子器件的科学与制造