国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

手把手教你做一個物聯(lián)網垃圾桶(ARDUINO ESP8266)

這篇具有很好參考價值的文章主要介紹了手把手教你做一個物聯(lián)網垃圾桶(ARDUINO ESP8266)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

最近自創(chuàng)的項目結題了,就順手將相關的技術細節(jié)記錄一下,也給需要做自創(chuàng)的同學提供一個簡單的可復制的小項目

智能垃圾桶的選型智能垃圾桶diy,物聯(lián)網,嵌入式硬件,單片機

通過充分考慮實際生活場景,加入了IP65級別防水設計,可以滿足大多數需要場景,此外采用升壓和可充電電池,踐行環(huán)保理念,實現(xiàn)長續(xù)航和低碳設計,采用金屬齒輪舵機充分考慮長期使用,可以實現(xiàn)一年以上的使用,加入物聯(lián)網模塊,實現(xiàn)智能交互

防水紫外線燈帶?

智能垃圾桶diy,物聯(lián)網,嵌入式硬件,單片機

UNO主板

智能垃圾桶diy,物聯(lián)網,嵌入式硬件,單片機

ESP8266

智能垃圾桶diy,物聯(lián)網,嵌入式硬件,單片機

可充電電池(12500)

智能垃圾桶diy,物聯(lián)網,嵌入式硬件,單片機

升壓模塊(自己選就行)

智能垃圾桶diy,物聯(lián)網,嵌入式硬件,單片機

超聲波模塊(SR04)

智能垃圾桶diy,物聯(lián)網,嵌入式硬件,單片機

金屬齒輪舵機(MGS90)

智能垃圾桶diy,物聯(lián)網,嵌入式硬件,單片機

12V繼電器

研究現(xiàn)狀:

?? 市面上現(xiàn)階段智能垃圾桶成本相對較為高昂,此外智能化程度不高,難以作為將來物聯(lián)網的智能家居的一部分此外市場上沒有智能開蓋的桌面垃圾桶,開蓋多半是按壓式,非常不便捷

?? 隨著生活水平的提高,人們更加追求干凈、健康、綠色的生活方式。

研究趨勢:

???????????? 智能化

?提高人們生活舒適精致度

? 以低成本實現(xiàn)需求

???? 實用耐用好用

研究意義:

增強大學生的創(chuàng)新意識和創(chuàng)新能力

增強我們的機械設計制造的動手能力

實現(xiàn)對生活廢棄物的病菌消殺

為生活中的衛(wèi)生健康提供保障。

項目簡介:本裝置通過紫外線等消毒方式對攜帶病毒的生活廢棄物進行一定程度的消殺,從而大大降低清潔人員和拾荒者的感染概率,省財省力省時,減輕人們除了防疫以外的其它生活負擔,對當前社會現(xiàn)狀具有一定的實用性及創(chuàng)新性。同時充分考慮紫外線對人眼的刺激,做了開蓋前自動關燈處理,考慮到紫外線燈長時間工作會產生較大熱量,設計了照明和休息時長。

實施方案:

通過超聲傳感器實現(xiàn)位置距離的準確獲取,從而實現(xiàn)對用戶狀態(tài)的信息精確判別

通過設計的電路實現(xiàn)對于紫外線燈和舵機的精確控制,并留存狀態(tài)標志位,使得可以無線智能控制

智能垃圾桶diy,物聯(lián)網,嵌入式硬件,單片機

?智能垃圾桶diy,物聯(lián)網,嵌入式硬件,單片機

網絡安全方面,使用加密網絡控制MQTT協(xié)議,只有知道特定密鑰才可以訪問,并且適配了圖形化控制界面,接入專門軟件點燈blinker”,任何用戶只要獲得分享權限就可以使用

充分的可拓展性和共享性,專門的密鑰可以通過手機號共享,且可以接入小愛同學等AI助手

運行邏輯:本次設計采用了雙機通信技術,實現(xiàn)了較好的WIFI通信效果,其中UNO作為主機,ESP8266作為從機

智能垃圾桶diy,物聯(lián)網,嵌入式硬件,單片機

?本裝置做到在實現(xiàn)感應開蓋,殺毒滅菌的智能邏輯和靈敏基礎上,實現(xiàn)wifi互聯(lián),從而實現(xiàn)遠程開蓋,通過利用紫外線等裝置,定時自動消殺廢棄物,對生活垃圾進行預消毒工作。實現(xiàn)物聯(lián)網,互聯(lián)網與垃圾桶的融合創(chuàng)新

智能垃圾桶diy,物聯(lián)網,嵌入式硬件,單片機

?智能垃圾桶diy,物聯(lián)網,嵌入式硬件,單片機

具體代碼

ESP8266(上)和UNOR3(下)

#define BLINKER_WIFI
#define BLINKER_MIOT_LIGHT//支持小愛同學
#define BLINKER_WITHOUT_SSL      //非SSL加密通信接入,省堆棧  
#include <Blinker.h>

#define LED  LED_BUILTIN  // 板子上的燈 
#define PASSIO  2  // 板子上的io2
char auth[] = "4a633cdd91eb"; // blinker app提供的秘鑰
char ssid[] = "小琮的Xiaomi 13 Pro";// wifi 名字
char pswd[] = "23456789";// wifi 密碼

bool wsState;
uint8_t wsMode = BLINKER_CMD_MIOT_DAY;
// 新建組件對象
BlinkerButton Button1("btn-abc");//注意:要和APP組件’數據鍵名’一致
BlinkerButton Button2("btn-open");//注意:要和APP組件’數據鍵名’一致
// 按下BlinkerAPP按鍵即會執(zhí)行該函數
void button1_callback(const String & state) {
 BLINKER_LOG("get button state: ", state);
 digitalWrite(LED, !digitalRead(LED));
 Blinker.vibrate();
}
 void button2_callback(const String & state)
{
    digitalWrite(PASSIO, !digitalRead(PASSIO));
    BLINKER_LOG("get button state: ", state);
    Button1.icon("icon_2");
    Button1.color("#FFFFFF");
    Button1.text("一直開蓋");
    Button1.print("on");
}

//小愛電源類回調
void miotPowerState(const String & state)
{
    BLINKER_LOG("need set power state: ", state);

    if (state == BLINKER_CMD_ON) {
        digitalWrite(LED_BUILTIN, LOW);       
        BlinkerMIOT.powerState("on");
        BlinkerMIOT.print();
    }
    else if (state == BLINKER_CMD_OFF) {
        digitalWrite(LED_BUILTIN, HIGH);
        BlinkerMIOT.powerState("off");
        BlinkerMIOT.print();
    }
}

void setup() {
 // 初始化串口,并開啟調試信息,調試用可以刪除
 Serial.begin(115200); 
 BLINKER_DEBUG.stream(Serial);
 // 初始化IO
 pinMode(LED_BUILTIN, OUTPUT); 
 digitalWrite(LED_BUILTIN, HIGH); // 初始化 led 高電平 ,則燈熄滅狀態(tài)
 pinMode(PASSIO, OUTPUT); 
 digitalWrite(PASSIO, LOW); // 初始化 2 低電平 ,則燈熄滅狀態(tài)
 // 初始化blinker
 Blinker.begin(auth, ssid, pswd);
 Button1.attach(button1_callback);
 Button2.attach(button2_callback);

 //小愛同學務必在回調函數中反饋該控制狀態(tài) 
 BlinkerMIOT.attachPowerState(miotPowerState);//注冊回調函數
// BlinkerMIOT.attachQuery(miotQuery);
} 
void loop()
{
  Blinker.run();

}
/*程序說明:基于UNO 本程序通過超聲波判斷距離實現(xiàn)舵機角度變化 并且通過定時器實現(xiàn)掃描超聲波 實現(xiàn)閉蓋時進行紫外線消殺(每工作10分鐘休息10分鐘) 單位cm*/
//當您使用Servo庫時,開發(fā)板的9號和10號引腳的PWM功能是無法使用的。
/*注意事項:
(1)如果你使用了 MsTimer2 庫, 則 pin11 和 pin3 就不能再用做 PWM 輸出了! 因為該 pin3 和 pin11 的 PWM 是靠 timer2 幫忙的! (tone()也是)
(2)注意 Servo.h 庫與 TimerOne 都是使用內部定時器 timer1 會影響pin 9, pin 10 的 PWM
(3)tone() 使用 timer2 定時器; 若使用 Tone 庫的 Tone 對象(Tone 變量)也是優(yōu)先使用 timer2 定時器,若用兩個 Tone 變量則 timer1 也會被用掉, 用三個 Tone 則連控制 millis( )的 timer0 也會被用掉。
(4)別忘了, timer0 負責幫忙控制 pin 5 和 pin 6 的 PWM 輸出。只要不去改變 timer 的 Prescaler 就不會影響其控制的 PWM pin, 但MsTimer2 庫與 tone( )都會改變 Prescaler ! !*/
#include <Servo.h>            //加載文件庫
#include <MsTimer2.h>  //沒安裝的自己安裝

#define limit_distance 15     //宏定義感應距離單位cm
#define uvcpin  10 //紫外線燈控制引腳(正)
#define worktime 600 //工作時間 單位10ms
#define resttime 600 //休息時間 單位10ms
#define pospin 9 //舵機引腳
#define posclose 120
int pos = 0; //舵機角度
Servo myservo; //設置伺服對象
const int trigpin = 2;  //超聲波輸出
const int echopin = 3;  //超聲波輸入
int posflag = 0; //判斷蓋子是否開啟
int uvcflag = 0; //判斷uvc是否開啟
int uvctimeflag = 0; //判斷uvc休息時間
volatile int pastflag = 0;//用于掃描后傳遞超聲波距離比較信息
long int uvctime = 0; 
long int uvcnotime = 0;
volatile float distance; 

void scanTimer()//中斷函數
{
  distance = 0;
  digitalWrite(trigpin,LOW);
  delayMicroseconds(2);
  digitalWrite(trigpin,HIGH);
  delayMicroseconds(10);
  digitalWrite(trigpin,LOW);
  distance = pulseIn(echopin,HIGH)/59.70;
  delay(10);  // 前面為超聲波檢測程序
  if(distance < limit_distance)
  {
     pastflag = 1;
  }
  else pastflag = 0;
}

void poscontrol()
{
  while(pastflag == 1) //判斷距離確定是否開關
  {
    digitalWrite(uvcpin,LOW);
    myservo.write(posclose);
    delay(1000);	
    posflag = 1;
  } 
  if(posflag == 1)
  {
    for (pos = posclose; pos >= 0; pos -= 1)
    {
        myservo.write(pos);
        delay(15); 					
    }
    delay(100);
    posflag = 0;
  }
} 

void setup() {
  pinMode(trigpin,OUTPUT);
  pinMode(uvcpin,OUTPUT);
  pinMode(echopin,INPUT);
  myservo.attach(pospin, 500, 2500); //修正脈沖寬度
  myservo.write(0);//每次開啟自動關閉蓋子
  delay(500);
  scanTimer(); //每次啟動先掃描一下
  MsTimer2::set(300, scanTimer); //設置中斷,每1000ms進入一次中斷服務程序 scanTimer()
  MsTimer2::start(); //開始計時_開啟定時器中
}

void loop() {
  if(pastflag == 1)
  {
    poscontrol();  //調用舵機函數
   pastflag = 0;  //清除標志位
 }
  if(posflag == 0 && pastflag == 0)
  {
      digitalWrite(uvcpin,HIGH);
      uvcflag = 1;
  }
  else
  {
    uvcflag = 0;
    digitalWrite(uvcpin,LOW);
  }
  //每工作10分鐘休息10分鐘
  if(uvcflag == 1 && uvctimeflag == 0)
  {
    uvctime++;
    delay(10);
    if(uvctime >= worktime)
    {
      uvctime = 0;
      uvctimeflag = 1;
      digitalWrite(uvcpin,LOW);
      //break;
    }
    
  }
  if(uvctimeflag = 1 && pastflag == 0)
  {
    uvcnotime++;
    delay(10);
    if(uvcnotime >= resttime)
    {
      uvcnotime = 0;
      uvctimeflag = 0;
      digitalWrite(uvcpin,HIGH);
      //break;
    }
  }
} 

如果對于接線有疑問可以留言咨詢。文章來源地址http://www.zghlxwxcb.cn/news/detail-773713.html

到了這里,關于手把手教你做一個物聯(lián)網垃圾桶(ARDUINO ESP8266)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • UE4 手把手教你做插件(1) 從代碼引用插件

    UE4 手把手教你做插件(1) 從代碼引用插件

    我看的是?技術宅阿棍兒 的視頻,B站有。 系列視頻:從代碼引用插件_嗶哩嗶哩_bilibili 看不懂,只能邊查資料邊看,講的順序有點亂 注意:如果只有空白插件的情況,需要你創(chuàng)建一個C++類,就能夠看到很多插件類型了 具體看著:Creating New Plugins - non-content only - missing templat

    2024年01月16日
    瀏覽(89)
  • FPGA之手把手教你做多路信號發(fā)生器(STM32與FPGA數據互傳控制波形生成)

    FPGA之手把手教你做多路信號發(fā)生器(STM32與FPGA數據互傳控制波形生成)

    最近趁熱打鐵做了一個關于STM32與FPGA通信并且控制高速DA模塊產生不同頻率信號的正弦波、方波、三角波和鋸齒波的項目,從中收獲到了很多東西,也踩了一些雷和坑,將分為幾篇文章將整個過程分享出來。 這一次準備分享的是將串口解析的出來的波形頻率數據以及波形類型

    2024年02月15日
    瀏覽(100)
  • 手把手教你玩物聯(lián)網(二)---onenet云平臺產品創(chuàng)建

    手把手教你玩物聯(lián)網(二)---onenet云平臺產品創(chuàng)建

    《手把手教你玩物聯(lián)網》系列推文將介紹使用RT-Thread----小而美的物聯(lián)網操作系統(tǒng),制作一個室內溫濕度數據采集,并實現(xiàn)終端采集數據上傳物聯(lián)網云平臺onenet,實現(xiàn)云端遠程數據監(jiān)控功能。 ? ? ? 上期介紹了ESP8266的使用(手把手教你玩物聯(lián)網(一)---ESP8266軟件包的使用),今

    2024年02月07日
    瀏覽(26)
  • 手把手教你用MindSpore訓練一個AI模型!

    手把手教你用MindSpore訓練一個AI模型!

    首先我們要先了解深度學習的概念和AI計算框架的角色( https://zhuanlan.zhihu.com/p/463019160 ),本篇文章將演示怎么利用MindSpore來訓練一個AI模型。和上一章的場景一致,我們要訓練的模型是用來對手寫數字圖片進行分類的LeNet5模型 請參考( http://yann.lecun.com/exdb/lenet/ )。 圖1 M

    2024年02月04日
    瀏覽(34)
  • 【手把手教你制作一個簡易版的shell】

    【手把手教你制作一個簡易版的shell】

    為了簡便,命令行中的提示符我們可以直接用printf打印,而具體執(zhí)行命令可以交給子進程去做,現(xiàn)在的關鍵是如何將獲得的命令行中的命令切割。我們在學習C語言時提到了strtok函數,正好這個函數可以用來作為切割。 基本框架: 不知道大家注意到了沒有,我們從鍵盤中讀取

    2023年04月16日
    瀏覽(39)
  • 手把手教你搭建一個Minecraft 服務器

    手把手教你搭建一個Minecraft 服務器

    這次,我們教大家如何搭建一個我的世界服務器 首先,我們來到這個網站 MCVersions.net - Minecraft Versions Download List MCVersions.net offers an archive of Minecraft Client and Server jars to download, for both current and old releases! https://mcversions.net/ ? 在這里,我們點擊對應的版本,從左到右依次是穩(wěn)定版

    2024年02月09日
    瀏覽(33)
  • 手把手教你實現(xiàn)一個循環(huán)隊列(C語言)

    手把手教你實現(xiàn)一個循環(huán)隊列(C語言)

    這是一道leetcode關于隊列的經典題: 622.?設計循環(huán)隊列 https://leetcode.cn/problems/design-circular-queue/ ?大家注意這個題目要求,這個隊列是定長的,如果滿了則不能再添加數據。那么我們設計一個隊頭front和隊尾rear,每次添加數據rear向后走,這時就有一個問題, 怎么區(qū)分空和滿呢

    2024年02月04日
    瀏覽(24)
  • 手把手教你寫出第一個C語言程序

    手把手教你寫出第一個C語言程序

    大家好,我是努力學習游泳的魚。這篇文章將手把手帶你寫出人生中第一個C語言程序, Hello, World 。在閱讀本文之前,建議先百度 visual studio ,在微軟官網下載并安裝VS的最新版本,安裝時記得勾選“C++桌面開發(fā)”選項。 2.1 環(huán)境 工欲善其事必先利其器,我們需要寫C語言代碼

    2024年02月10日
    瀏覽(23)
  • 手把手教你開發(fā)第一個HarmonyOS (鴻蒙)移動應用

    手把手教你開發(fā)第一個HarmonyOS (鴻蒙)移動應用

    移動應?開發(fā): Android IOS HarmonyOS (鴻蒙) 文檔概覽-HarmonyOS應用開發(fā)官網 2.1 系統(tǒng)的定義 2.1.1 系統(tǒng)的定位 HarmonyOS有三?特征: 搭載該操作系統(tǒng)的設備在系統(tǒng)層?融為?體、形成超級終端,讓設備的硬件能?可以彈性 擴展,實現(xiàn)設備之間 硬件互助,資源共享。 對消費者??,

    2024年02月02日
    瀏覽(101)
  • 手把手教你新建一個winform項目(史上最全)

    手把手教你新建一個winform項目(史上最全)

    最近有粉絲訂閱了我的博客專欄《winform控件從入門到精通》,但是卻來問我平時使用什么軟件來開發(fā)winform程序,我本以為訂閱我專欄的粉絲至少應該是掌握Microsoft Visual Studio的基本用法,也能夠創(chuàng)建winform項目,看來是我大意了,我的錯,粉絲們!對于不會創(chuàng)建winform項目但是

    2024年02月04日
    瀏覽(72)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包