首页 > 分享 > 智能宿舍

智能宿舍

前言

最近太忙了,好久没更博客了,主要是想想做做弄了个智能宿舍项目,电控、物联网层面我都做好了,可能还缺少一个工程的大佬帮我部署到寝室里hhhhhhh鄙人能力有限
来,先上方案的构想。

emmm,这是一开始的构想,后面有稍微一点点的改动,且听我慢慢道来。

项目拆分实现

其实不管多大多复杂的项目,我们都应该把它拆分成一个个的小块去实现。
另外这里感谢酷基的方案,连接的是点灯平台,云服务用的应该是阿里云家的。

一、开灯

原来想着,用esp01(比8266廉价方便),再加个继电器,然后做成这个样子(理想型)。

这个用灯控制的比较简单,然后实现的效果是这样的。本人第一次投稿b站视频:物联网灯
UI做的也挺干净整洁的

这个源码比较简单,我就不上传了。上传一个后续的方案,当我看到这个设计:用舵机实现开关灯。

那么我们就来解析一下这个舵机开灯的源代码吧(esp01)

#define BLINKER_WIFI #include <Blinker.h> #include<Servo.h> Servo myservo; char auth[] = "你的物联网密钥"; char ssid[] = "WIFI账号"; char pswd[] = "WIFI密码"; BlinkerButton Button1("btn-on"); //定义按钮数据 BlinkerButton Button2("btn-off"); BlinkerButton Button3("btn-aaa"); bool oState = false; int counter = 0; void dataRead(const String & data) // 如果未绑定的组件被触发,则会执行其中内容 { BLINKER_LOG("Blinker readString: ", data); Blinker.vibrate(); uint32_t BlinkerTime = millis(); Blinker.print("millis", BlinkerTime); } // 按下按键即会执行该函数 void button1_callback(const String & state) { BLINKER_LOG("get button state: ", state); delay(500); myservo.write(60); delay(2000); myservo.write(90); delay(500); } void button2_callback(const String & state) //点灯app内控制按键触发 { BLINKER_LOG("get button state: ", state); delay(500); myservo.write(-60); delay(2000); myservo.write(90); delay(500); } void button3_callback(const String & state) //点灯app内控制按键触发 { BLINKER_LOG("get button state:on", state); Blinker.print(state); if(state=="on"){ digitalWrite(0,LOW); // Button3.print("on"); }else if(state =="off"){ digitalWrite(0,HIGH); // Button3.print("off"); } } void setup() { Serial.begin(115200); BLINKER_DEBUG.stream(Serial); // 初始化舵机 myservo.attach(0); // 90为停 myservo.write(90); digitalWrite(0,HIGH); Blinker.begin(auth, ssid, pswd); Blinker.attachData(dataRead); Button1.attach(button1_callback); Button2.attach(button2_callback); Button3.attach(button3_callback); } void loop() { Blinker.run(); }

注释基本都打好了,要注意的是,要自己写按键在点灯科技里,舵机的库函数myservo.write()中参数,90代表停止,0180分别表示往一边一直转。
还有一个功能定时器触发的,其实在点灯APP上稍微设置一下就行了,没什么难点。

然后剩下的就是部署在寝室了,工程大佬帮帮我

二、开门

esp8266 + 舵机(淘宝驯龙者MG995拉动门够了)

还赠送温湿度+OLED显示功能,这里的功能可以去参考这篇博客:传送门

APP的UI设计

功能实物图(原谅我忘记拍视频了,只有一些杂乱的接线)其实就是手机上按下开门,然后舵机响应转起来,就这么简单

源码(DHT11+OLED+舵机):

#define BLINKER_WIFI #include <Blinker.h> #include<Servo.h> Servo myservo; char auth[] = "你的点灯KEY"; char ssid[] = "WIFI_NAME"; char pswd[] = "WIFI_PSWD"; // dht_oled BlinkerNumber HUMI("humi"); BlinkerNumber TEMP("temp"); BlinkerText TEXT1("tex-s"); // door BlinkerButton Button1("btn-abc"); BlinkerNumber Number1("num-abc"); int counter = 0; #include <Wire.h> #include <Adafruit_GFX.h> #include <Adafruit_SSD1306.h> #include <Adafruit_Sensor.h> #include <DHT.h> #define DHTPIN 14 #define SCREEN_WIDTH 128 // OLED display width, in pixels #define SCREEN_HEIGHT 64 // OLED display height, in pixels Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1); #define DHTTYPE DHT11 // DHT 11 DHT dht(DHTPIN, DHTTYPE); uint32_t read_time = 0; float humi_read, temp_read; //dht_oled void dataRead(const String & data) { BLINKER_LOG("Blinker readString: ", data); Blinker.vibrate(); uint32_t BlinkerTime = millis(); Blinker.print("millis", BlinkerTime); BLINKER_LOG("Blinker readString: ", data); counter++; Number1.print(counter); } void dataStorage() { Blinker.dataStorage("cha-temp", temp_read); Blinker.dataStorage("cha-humi", humi_read); } String rts()//计算运行时间 { int rt =Blinker.runTime(); int r,e,f,s; String fh; Blinker.delay(100); if(rt >= 86400)//天数 {r = rt / 86400; e = rt / 3600 - r*24; f = rt / 60 - r*1440 - e*60; s = rt - r*86400 - e*3600 - f*60;} else if(rt >= 3600) {r = 0; e = rt / 3600; f = rt / 60 - e*60; s = rt - e*3600 - f*60;} else {r = 0; e = 0; f = rt / 60; s = rt - f*60;} //BLINKER_LOG(r," ",e," ",f," ",s);//输出数据测试 if(f==0 & e==0 & r==0) {fh = String("")+ s +"秒";} else if(r == 0 & e == 0 ) {fh = String("")+ f + "分" + s +"秒";} else if(r == 0) {fh = String("")+ e + "时" + f + "分" + s +"秒"; } else {fh = String("")+ r + "天" + e + "时" + f + "分" + s +"秒";} return(fh); } void heartbeat()//心跳 { HUMI.print(humi_read); TEMP.print(temp_read); TEXT1.print(rts()); } // door // 按下按键即会执行该函数 void button1_callback(const String & state) { BLINKER_LOG("get button state: ", state); delay(500); myservo.write(172); delay(2000); myservo.write(90); delay(500); } void setup() { // 初始化串口 Serial.begin(115200); BLINKER_DEBUG.stream(Serial); // door // 初始化舵机 myservo.attach(12); // 90为停 myservo.write(90); // dht_oled Blinker.begin(auth, ssid, pswd); Blinker.attachData(dataRead); Blinker.attachHeartbeat(heartbeat);//附加心跳 Blinker.attachDataStorage(dataStorage);//附加数据存储 Button1.attach(button1_callback); dht.begin(); if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { Serial.println(F("SSD1306 allocation failed")); for(;;); } Blinker.delay(2000); display.clearDisplay(); display.setTextColor(WHITE); } void loop() { Blinker.run(); float h = dht.readHumidity(); float t = dht.readTemperature(); if (isnan(h) || isnan(t)) { BLINKER_LOG("Failed to read from DHT sensor!"); } else { // BLINKER_LOG("Humidity: ", h, " %"); //BLINKER_LOG("Temperature: ", t, " *C"); humi_read = h; temp_read = t; float hic = dht.computeHeatIndex(t, h, false); // 显示 display.clearDisplay(); // 显示温度 display.setTextSize(1); display.setCursor(0,0); display.print("Temp: "); display.setTextSize(2); display.setCursor(0,10); display.print(t); display.print(" "); display.setTextSize(1); display.cp437(true); display.write(167); display.setTextSize(2); display.print("C"); // 显示湿度 display.setTextSize(1); display.setCursor(0, 35); display.print("Humi: "); display.setTextSize(2); display.setCursor(0, 45); display.print(h); display.print(" %"); //刷新显示 display.display(); } Blinker.delay(60000); }

还是那句话,在点灯APP里设置好按键。

引脚图

元件 脚 8266脚 舵机 DATA D6 OLED SCL D1 OLED SDA D2 DHT11 DATA D5

舵机那块儿记得去共地。

前面这两个项目,还可以接入小爱同学,打算等我的小米手环5NFC到了再去调戏这个功能hhhhhhh】

三、门禁系统

RFID/NFC,整一个NFC读取设备,然后自己做一张卡,写一下,就好了。

说起来简单,做起来难咯哈哈哈哈哈哈
这个本人暂时还没做,以后有机会再更咯~

然后呢,最近学会了画PCB,对网上一些奇奇怪怪的东西也颇有兴趣。
这里推荐一个立创EDA开源名片,真的挺不错的。
不过被我的导师说成:没有去实现一个真正的功能hhhhhh
没事没事,先玩玩嘛。

我是打算做个焊盘,然后把白卡中间那个芯片焊到名片上去,去实现一个门禁。

结尾

其实最近还学习去写了些py脚本,还挺有意思的。挺推荐有点py基础的人玩的,因为做出来一个,就有点成就感,然后就能正向激励学习了嘛hhhhh。

明天考六级的我,表示....去体验一波先吧,好久没学英语了,下次一定好好学下次一定

还打算去报名飞思卡尔智能车比赛,我是写算法那个。萌新,可能要肝一段时间了,而且还有实验室的项目做做咯。

相关知识

智能制造学院开展拉网式宿舍安全卫生大检查
长春省医药宿舍花店
武汉湖北教育出版社宿舍花店
大学生宿舍文化标语大全
宿舍短篇鬼故事7篇
宿舍好养的花有哪些?(为宿舍生活增添绿色气息的5种植物)
桂花糕(宿舍也可以做)
抖音衣柜收纳架分层收纳篮多功能宿舍衣物整理神器多层置物架子 经典白 一小层 9.2元
植物保护学院2021年宿舍文化节成功举办
适合宿舍养的花

网址: 智能宿舍 https://m.huajiangbk.com/newsview842645.html

所属分类:花卉
上一篇: 怎么装饰宿舍
下一篇: 基于STM32的智能宿舍安全管理