网易首页 > 网易号 > 正文 申请入驻

来看看单片机学生有多卷,基于esp32的简易宿舍开门神器

0
分享至

来看看单片机学生有多卷,基于esp32的简易宿舍开门神器

相信很多人都有忘带钥匙的经历,我也经常看到有同学因为忘带钥匙而不得不在宿舍门口当门神。在入门了esp32后,自然而然地就想利用这款集成了wifi和蓝牙还便宜的芯片解决这个生活中的痛点~

这个应该很多人都做过,我看过有用arduino开发板结合射频模块做的,有用stm32做指纹的,甚至还有做人脸识别的。可以说八仙过海,各显神通了。

我的方案就没啥技术了(太菜了~)

开门具体方案是用esp32控制一个12V减速电机拉动扶手(试过舵机,拉不动~)

一.所需材料:

1.esp32-Wroom开发板(20元左右)

2.12v双路继电器(6块钱)

3.升压模块(3块钱)

4.面包板(3元)

5.12v直流减速电机(13元)

6.充电宝(容量越大越好)

(杜邦线若干,电烙铁等常见工具)

二.原理

一开始我是想用esp32跑个web局域网页开门和RC522刷卡开门,但是功耗和稳定性感人~

于是把wifi改用蓝牙了,发现传统蓝牙功耗感人~

改用BLE低功耗蓝牙,发现功耗依旧感人,于是把刷卡开门功能阉了~

esp32作为主控,通讯方式为BLE低功耗蓝牙,手机端连接至服务端并向服务端发送信息,服务端接收到信息后执行开门代码,控制电机开门。

完整的原理图

需要注意的是我这里是用充电宝供电,所以尽可能降低功耗来增加续航。

关于电机控制,我试过用L298n来控制,失败了(理论上是可以的,不知为什么),后来用双路继电器来控制正反转原理如下图

关于电机我采用的是25GA370直流减速电机(12v60转每分钟),淘宝上一搜就能看到。实测下来扭力说是够了但缺点是转的太慢了~电机长这个样子~

三.代码:开发环境是arduino

[code]

int Buzzer = 5; //GPIO5蜂鸣器,提示音

long int ww = 0;

/**********************舵机***************************************************/

void servo(){

digitalWrite(2,HIGH);

delay(12500);

digitalWrite(2,LOW);

digitalWrite(Buzzer, 1);

delay(1000);

digitalWrite(Buzzer, 0);

delay(2000);

digitalWrite(4,HIGH);

delay(8000);

digitalWrite(4,LOW);

/***********************蓝牙配置********************/

#include

#include

#include

#include

#include

#define SERVICE_UUID "6e400001-b5a3-f393-e0a9-e50e24dcca9e"

#define CHARACTERISTIC_UUID_RX "6e400002-b5a3-f393-e0a9-e50e24dcca9e"

#define CHARACTERISTIC_UUID_TX "6e400003-b5a3-f393-e0a9-e50e24dcca9e"

bool deviceConnected = false;

BLECharacteristic *pCharact_TX;

class ServerCallbacks: public BLEServerCallbacks {

void onConnect(BLEServer* pServer) {

deviceConnected = true;

void onDisconnect(BLEServer* pServer) {

deviceConnected = false;

Serial.println("連線中斷");

BLEDevice::startAdvertising(); //重新發出廣告

class RXCallbacks: public BLECharacteristicCallbacks {

void onWrite(BLECharacteristic *pCharact) {

std::string rxVal = pCharact->getValue();

Serial.printf("收到輸入值:%s\n", rxVal.c_str());

if (rxVal == "on") {

Serial.println("开门");

servo();

} else if (rxVal == "off") {

Serial.println("重启");

ESP.restart();

class TXCallbacks: public BLECharacteristicCallbacks {

void onStatus(BLECharacteristic *pCharact, Status s, uint32_t code) {

Serial.printf("狀態碼:%d\n", s);

Serial.printf("code:%d\n", code);

void printDeviceAddress() {

const uint8_t* point = esp_bt_dev_get_address();

for (int i = 0; i < 6; i++) {

char str[3];

sprintf(str, "%02X", (int)point[i]);

Serial.print(str);

if (i < 5){

Serial.print(":");

void setup() {

// put your setup code here, to run once:

/******************串口初始化*******************/

Serial.begin(9600);

/*********************蓝牙初始化************************/

BLEDevice::init("ESP32藍牙LED開關");

BLEServer *pServer = BLEDevice::createServer();

pServer->setCallbacks(new ServerCallbacks());

//建立服務

BLEService *pService = pServer->createService(SERVICE_UUID);

//建立特徵

pCharact_TX = pService->createCharacteristic(

CHARACTERISTIC_UUID_TX,

BLECharacteristic::PROPERTY_NOTIFY |

BLECharacteristic::PROPERTY_READ

pCharact_TX->addDescriptor(new BLE2902());

pCharact_TX->setCallbacks(new TXCallbacks());

BLECharacteristic *pCharact_RX = pService->createCharacteristic(

CHARACTERISTIC_UUID_RX,

BLECharacteristic::PROPERTY_WRITE

pCharact_RX->setCallbacks(new RXCallbacks());

BLEDescriptor *pDesc = new BLEDescriptor((uint16_t)0x2901);

pDesc->setValue("控制板內建LED的開關");

pCharact_RX->addDescriptor(pDesc);

//啟動服務

pService->start();

//開始廣播

pServer->getAdvertising()->start();

Serial.println("等待用戶端連線…");

printDeviceAddress();

/*****************引脚初始化***********************************************/

pinMode(Buzzer, OUTPUT);

pinMode(2,OUTPUT);//此引脚高电平正转

pinMode(4,OUTPUT);//此引脚高电平反转S

/********************************蜂鸣器音效***********************************/

void Di(int a)

for (int i = 0; i < a; i++)

digitalWrite(Buzzer, 1);

delay(250);

digitalWrite(Buzzer, 0);

delay(50);

void loop() {

// put your main code here, to run repeatedly:

/*******************************定时重启********************************/

ww = millis(); //给开机时间赋值

if (ww >= 240*1000)//定时重启函数

ESP.restart();

return;

/*******************蓝牙开门**************************/

if (deviceConnected) {

int hallVal = hallRead();

char buffer[5];

itoa(hallVal, buffer, 10);

pCharact_TX->setValue(buffer);

pCharact_TX->notify();

Serial.printf("送出: %d\n", hallVal);

delay(500);

[/code]

BLE低功耗蓝牙代码比传统蓝牙要复杂太多了~

我的室友再也不用担心我没带钥匙了~

///插播一条:我自己在今年年初录制了一套还比较系统的入门单片机教程,想要的同学找我拿就行了免費的,私信我就可以哦~点我头像黑色字体加我也能领取哦。最近比较闲,带做毕设,带学生参加省级或以上比赛///

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
“印钞机都赶不上它!”14天花掉234万,ICU是在救命还是捞财?

“印钞机都赶不上它!”14天花掉234万,ICU是在救命还是捞财?

39健康网
2024-06-02 09:04:01
美媒预测总决赛夺冠概率!凯尔特人高达91.3%,独行侠仅为8.7%!

美媒预测总决赛夺冠概率!凯尔特人高达91.3%,独行侠仅为8.7%!

篮球扫地僧
2024-06-03 08:03:15
文明社会的六大特征

文明社会的六大特征

尚曦读史
2024-06-01 21:12:18
笑喷!郭艾伦:韩德君豪宅太远我不爱去 关系一般再不去他家烤串了

笑喷!郭艾伦:韩德君豪宅太远我不爱去 关系一般再不去他家烤串了

818体育
2024-06-02 20:37:30
世界名画复刻!安切洛蒂再次戴墨镜抽雪茄与弟子同框

世界名画复刻!安切洛蒂再次戴墨镜抽雪茄与弟子同框

懂球帝
2024-06-03 03:34:11
收手吧,谢天华!收手吧,古惑仔!“港星养老院”,也是该关张了

收手吧,谢天华!收手吧,古惑仔!“港星养老院”,也是该关张了

圈里的甜橙子
2024-06-01 22:51:30
为什么我感受不到1500元的手机比四五千的差?看网友评论终于懂了

为什么我感受不到1500元的手机比四五千的差?看网友评论终于懂了

白浅娱乐聊
2024-06-02 20:07:54
我不是穷学生!江苏一员工拒绝加班被光速开除,看谁还敢造次

我不是穷学生!江苏一员工拒绝加班被光速开除,看谁还敢造次

时尚的弄潮
2024-06-02 23:20:03
重磅爆料!贾玲代言Prada背后的惊天大瓜

重磅爆料!贾玲代言Prada背后的惊天大瓜

华人星光
2024-06-02 17:15:48
妻子向丈夫坦白,龙凤胎是前男友的,亲子鉴定的结果却让她崩溃了

妻子向丈夫坦白,龙凤胎是前男友的,亲子鉴定的结果却让她崩溃了

星辰故事屋
2024-05-30 11:45:24
庆余年2收官!6位演员被赞,2位演员被嘲,佟梦实成最大赢家

庆余年2收官!6位演员被赞,2位演员被嘲,佟梦实成最大赢家

糊咖娱乐
2024-05-31 16:07:00
中国女排VS意大利,赛后蔡斌再遭打击,世联赛收三个坏消息

中国女排VS意大利,赛后蔡斌再遭打击,世联赛收三个坏消息

极度说球
2024-06-02 20:54:12
首次!泽连斯基公开批评中国

首次!泽连斯基公开批评中国

半棵枣树
2024-06-03 01:00:52
专家:农村打井必须申请,水表要安装!网友:建议专家不要建议

专家:农村打井必须申请,水表要安装!网友:建议专家不要建议

三月柳
2024-06-02 15:34:06
发生关系,多久一次最舒服?

发生关系,多久一次最舒服?

匡北北
2023-12-15 23:56:59
4-2!世界第1爆发,孙颖莎进决赛,淘汰陈梦,一度浪费4个赛点

4-2!世界第1爆发,孙颖莎进决赛,淘汰陈梦,一度浪费4个赛点

足球慢镜头
2024-06-02 21:16:53
终于来了!字母哥正式确认加盟!人家又要对抗整个NBA……

终于来了!字母哥正式确认加盟!人家又要对抗整个NBA……

篮球实战宝典
2024-06-02 15:33:24
东契奇社媒请求克罗斯不要退役,克罗斯回复:

东契奇社媒请求克罗斯不要退役,克罗斯回复:

直播吧
2024-06-02 18:10:10
杭州90后姑娘从跨国公司辞职回家种玉米,火了!她又去北京读数学博士了

杭州90后姑娘从跨国公司辞职回家种玉米,火了!她又去北京读数学博士了

都市快报橙柿互动
2024-05-31 10:47:18
“夹大腿,要亲亲”:青春期女儿与老爸的举动曝光,评论区炸了……

“夹大腿,要亲亲”:青春期女儿与老爸的举动曝光,评论区炸了……

大爱三湘
2024-06-02 20:49:16
2024-06-03 09:28:49
大方老师单片机
大方老师单片机
领单片机速学资料,点我头像~
259文章数 1144关注度
往期回顾 全部

科技要闻

2万字演讲|黄仁勋剧透 未来3年新品有这些

头条要闻

牛弹琴:莫迪又大获全胜 他的手腕令对手叹为观止

头条要闻

牛弹琴:莫迪又大获全胜 他的手腕令对手叹为观止

体育要闻

万人空巷!皇马举行欧冠夺冠庆典

娱乐要闻

白玉兰提名:胡歌、范伟争视帝

财经要闻

马斯克凭借xAI再次成为世界首富

汽车要闻

吉利银河E5 Flyme Auto智能座舱首发

态度原创

艺术
数码
本地
教育
公开课

艺术要闻

穿越时空的艺术:《马可·波罗》AI沉浸影片探索人类文明

数码要闻

见证梦想腾飞,技嘉AORUS电脑硬件助阵高校电竞挑战赛巅峰对决

本地新闻

食味印象|歙县限定!枇杷味儿的清甜初夏

教育要闻

最难高考季来了

公开课

近视只是视力差?小心并发症

无障碍浏览 进入关怀版