0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

智能垃圾桶DIY教程

454398 ? 來源:wv ? 2019-08-30 09:37 ? 次閱讀

第1步:項目

垃圾桶設(shè)計為在超聲波距離傳感器檢測到人員時打開。當傳感器沒有檢測到任何人3秒鐘時,它會向后運行電機直到它按下按鈕。溫度和濕度傳感器(DHT)在垃圾桶中記錄條件并計算內(nèi)容物何時會腐爛。液晶顯示屏顯示時間,直到清空為止。

步驟2:零件清單

1 - Arduino MEGA 2560

1 - 面包板

1 - 10k歐姆電位器

1 - LCD屏幕(與Hitachi HD44780驅(qū)動程序兼容)

1 - DHT11

3 - 10k歐姆電阻

1 - 220歐姆電阻

1 - 電機控制L298N帶H橋

1 - 12伏直流電機

1 - 12伏電源

1 - 超聲波傳感器HC-SR04

1 - 按鈕

步驟3:機械設(shè)置

為了打開垃圾桶,我們制作了一個機械臂。它有兩個接頭,連接到電機和垃圾桶的蓋子。就像在第一張照片中一樣。

在秒圖中可以看到它安裝在電機上。

對于電機,我們鉆了一些孔并使用了拉鏈??梢钥吹皆诘谌龔堈掌邪惭b在垃圾箱內(nèi)。手臂粘在蓋子頂部

對于超聲波測距儀,我們在垃圾桶前面鉆了2個孔,直徑= 16mm,間距為1厘米(見4和5圖片)。/p》

對于其他部件,我們剛剛為拉鏈或螺釘鉆孔。在為其鉆孔之后,LCD用螺栓和結(jié)安裝在蓋子上。帶拉鏈的arduino和馬達驅(qū)動器。

臂部件采用3D打印。原理圖是在Autofusion 360中制作的,并使用了以下文件:

第4步:Fritzing

第一張圖顯示了如何系統(tǒng)已連線。

步驟5:代碼

代碼分為五個不同的功能,每個功能控制一個不同的傳感器或一個傳感器的一部分。為了利用代碼,必須為每個函數(shù)創(chuàng)建一個“新選項卡”。

arduino項目文件夾必須包含每個函數(shù)的代碼作為文件。

為了程序運行不間斷我們使用millis()和micros()而不是delay()。

該程序還需要以下庫,這些庫都可以在庫管理器中找到:

LiquidCrystal v1.0.7(內(nèi)置)

Adafruit Unified Sensor 1.0.2

DHT傳感器庫v1.3.0

主程序:

//Global variables are defined here. They‘re read through out the entire program.

//Local variables are defined within each function. They can only be changed or read within the function.

//Records whether the ultrasonic sensor has detected something.

//It’s controlled within the DistanceSensor function. It will stay on for four seconds when something is within range.

//Everytime it registers something it refreshes the timer.

boolean Distance_Close;

//Remembers if trashcan is open or closed. One is open and zero is closed.

bool TrashcanState;

//Monitors for local variables.

int ButtonMonitor;

int DistanceMonitor;

int CloseMonitor;

unsigned long TimeOpenMonitor;

unsigned long TimeUsedMonitor;

int DetectedMonitor;

int TemperatureMonitor;

int HumidityMonitor;

//Sets the pin numbers.

const int DCmotorIn1 = 5;

const int DCmotorIn2 = 6;

const int TrigPin = 8;

const int EchoPin = 7;

const int ButtonPin = 9;

const int rs = 13, en = 12, d4 = 11, d5 = 10, d6 = 22, d7 = 24; //Pin numbers for the LCD.

//Libraries, make sure to install all of them.

//All libraries can be found inside the Library Manager.

//“Adafruit Unified Sensor Library” must also be installed in order for dht to work even though it is not loaded.

#include

#include “DHT.h”

#define DHTPIN 3 //Defines which pin should be used for the temperature and humidity sensor

#define DHTTYPE DHT11 //Defines which type of DHT is used. If you have a DHT22 replace DHT11 with DHT22.

DHT dht(DHTPIN, DHTTYPE); //Loads the defined pin and type.

LiquidCrystal lcd(rs, en, d4, d5, d6, d7); //Tells the program which pins are installed.

void setup() {

// Code that needs to be run once:

Serial.begin(9600); //Starts communication with the monitor. Make sure that the monitor have the same BAUD speed.

//Determine if pins are reading or writing.

pinMode(TrigPin,OUTPUT);

pinMode(EchoPin,INPUT);

pinMode(DCmotorIn1, OUTPUT);

pinMode(DCmotorIn2, OUTPUT);

pinMode(ButtonPin,INPUT);

dht.begin();

lcd.begin(16, 2); //Sets the dimension of the LCD

}

void loop() {

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

DistanceSensor(); //Constantly checks if someone is near the trashcan

OpenTrashcan(); //Checks if the trashcan should opened.

CloseTrashcan(); //Checks if the trashcan should be closed.

LCD();

TempHumid();

//Creates a table for monitoring all the different variables.

Serial.print(“Trashcan State : ”);

Serial.print(TrashcanState);

Serial.print(“ ”);

Serial.print(“Distance_Close: ” );

Serial.print(Distance_Close);

Serial.print(“ ”);

Serial.print(“Button: ” );

Serial.print(ButtonMonitor);

Serial.print(“ ”);

Serial.print(“Temperature: ” );

Serial.print(TemperatureMonitor);

Serial.print(“ ”);

Serial.print(“Humidity: ” );

Serial.print(HumidityMonitor);

Serial.print(“ ”);

Serial.print(“Distance: ” );

Serial.println(DistanceMonitor);

控制距離傳感器的功能:

int DistanceSensor(){

//Local variables used only in this function

unsigned long TimeUsed;

unsigned long Wait;

unsigned long WaitExtra;

unsigned long TimeOpen;

bool Detected;

long Duration;

int Distance;

TimeUsed = micros(); //Reads how long the arduino have been on in microseconds.

//Writes the local variables into global variables for monitoring

DetectedMonitor = Detected;

DistanceMonitor = Distance;

//Make the ultrasonic sensor send out a sonic wave and starts two timers.

//It is activated after 12 microseconds as the timer is exceeded and the function restarts.

if (WaitExtra 《 TimeUsed){

digitalWrite(TrigPin,HIGH); //Sends out a sonic wave

Wait = TimeUsed + 10; //Takes the current time and adds 10 microseconds to create a timer

WaitExtra = TimeUsed + 12; //Takes the current time and adds 12 to create a timer

}

//Turns off the sonic wave and reads how long it took for it to return.

//Afterwards it calculates the distance it have traveled.

//The distance is calculated in cm.

if (Wait 》= TimeUsed){

digitalWrite(TrigPin,LOW); // Stops the sonic wave

Duration = pulseIn(EchoPin,HIGH); //Reads how long it took for the wave to return in microseconds.

Distance = Duration*0.034/2; //Calculates the distance

}

//Checks if anyone is within a certain distance.

//This can be changed depending on when you want it to trigger.

//Remember this can‘t be less than 2 cm (0.79 inches) unless you use a different sensor.

if ((Distance 》= 10) && (Distance 《= 30)){

Detected = 1; //Something is detected

}

else{

Detected = 0; //Nothing has been detected

}

//Allows the Distance_Close to be set if someone if within the distance set.

//Refreshes if something is detected again.

if (Detected == 1){

TimeOpen = TimeUsed + 4000000; //Refreshes or sets the time that must pass to reset Distance_Close.

}

//Sets Distance_Close to 1, if the time set in detected hasn’t been exceed.

if (TimeOpen 》 TimeUsed){

Distance_Close = 1;

}

//Sets Distance_Close to 0, if the time set in detected has been exceed.

if (TimeOpen 《= TimeUsed){

Distance_Close = 0;

}

}

控制LCD的功能:

int LCD(){

lcd.setCursor(0, 0); //Begins writing at the top row, from the beginning

lcd.print(“Temperature: ”); //Writes “temperature” on the LCD

lcd.print(TemperatureMonitor); //Writes the number measured by the DHT

lcd.setCursor(0,1); //Begins writig at the bottom row, from the beginning

lcd.print(“Humidity: ”); //Writes “humidity” on the LCD

lcd.print(HumidityMonitor); //Writes the number measured by the DHT

}

打開垃圾桶:

bool OpenTrashcan() {

//If someone is detected within a set range in DistanceSensor, the trashcan open.

if ((TrashcanState == 0) && (Distance_Close == 1)){

//Sets the motor to run at full speed in a certain direction. In our case it is CLOCKWISE???

analogWrite(DCmotorIn1, 0);

analogWrite(DCmotorIn2, 255);

//Stops the entire program to make sure it doesn‘t stop while opening.

delay(600);

//After the delay is over the motor is turned off.

analogWrite(DCmotorIn1, 0);

analogWrite(DCmotorIn2, 0);

//Tells the rest of the program that the trashcan is open.

TrashcanState = 1;

}

}

關(guān)閉垃圾桶的功能:

bool CloseTrashcan() {

//Local variable to control the button.

int button;

button = digitalRead(9); //Continually check if the button is pressed or not

//Local variable saved as a global varaible for monitoring

ButtonMonitor = button;

//If the trashcan is open and no one has been within the range of the DistanceSensor for the set time the trashcan closes.

if ((TrashcanState == 1) && (Distance_Close == 0)){

//Starts the motor at full power. It turns COUNTER CLOCKWISE???

analogWrite(DCmotorIn1, 255);

analogWrite(DCmotorIn2, 0);

}

//If the trashcan is open and the button is pressed, the trashcan will close.

if ((button == 1) && (TrashcanState == 1)){

//Stops the motor

analogWrite(DCmotorIn1, 0);

analogWrite(DCmotorIn2, 0);

TrashcanState = 0; //Sets the trashcan as open.

}

}

讀取溫度和濕度的函數(shù):

int TempHumid(){

//Local variables used only in this function

unsigned long TimeUsed;

unsigned long Wait;

TimeUsed = millis(); //Counts how long the program have been running in millis

//Reads the temperature and humidity every 2.5 seconds.

if (Wait 《 TimeUsed){

int Humidity;

int Temperature;

Humidity = dht.readHumidity(); //Reads the current humidity in percentage.

Temperature = dht.readTemperature(); //Reads the current temperature in celcius.

HumidityMonitor = Humidity; // The humidity is saved in a global variable for monitoring.

TemperatureMonitor = Temperature; // The temperature is saved in a global variable for monitoring.

Wait = TimeUsed + 2500; //Takes the current time and adds 2500 milliseconds to create a timer.

}

}

為了獲得靈感和幫助,我們使用了以下來源:

超聲波傳感器

https://howtomechatronics.com/tutorials/arduino/u.。.

DHT11

http://www.circuitbasics.com/how-to-set-up-the-dh。 。.

該代碼基于DHT庫提供的示例。它被命名為DHTtester。

L298電機驅(qū)動模塊

https://www.instructables.com/id/How-to-use-the-L 。..

LCD

https://www.arduino.cc/en/Tutorial/HelloWorld

第6步:評估

自動垃圾桶功能齊全,但還有很多不足之處。

第一個問題是它無法檢測何時打開。這可以通過安裝伺服而不是直流電機來解決,通過使用可以檢測何時打開的按鈕或類似物。

秒的問題是超聲波傳感器有角度和一些困難時間材料太吸音了。它可以通過使用PIR傳感器來解決。如果安裝了PIR傳感器,它可以成角度以便更有可能檢測到人。

代碼也缺少顯示何時應(yīng)該清空垃圾桶的部分以及可以判斷垃圾桶何時清空的部分被清空了。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 智能垃圾桶
    +關(guān)注

    關(guān)注

    2

    文章

    52

    瀏覽量

    10587
收藏 人收藏

    評論

    相關(guān)推薦

    FlexLua低代碼零基礎(chǔ)開發(fā)智能垃圾桶產(chǎn)品原型(接入機智云)

    目標功能介紹基于功能強大的ShineBlink低代碼物聯(lián)網(wǎng)核心模組和靈活輕巧的Lua腳本編程語言實現(xiàn)如下功能。1、監(jiān)測和報警監(jiān)測圾內(nèi)的煙霧并聲光報警監(jiān)測圾內(nèi)的酒精等有害氣體并聲光報警監(jiān)測垃圾桶內(nèi)
    的頭像 發(fā)表于 07-11 08:11 ?1264次閱讀
    FlexLua低代碼零基礎(chǔ)開發(fā)<b class='flag-5'>智能</b><b class='flag-5'>垃圾桶</b>產(chǎn)品原型(接入機智云)

    基于PYNQ的智能垃圾分類系統(tǒng)

    的 pynq 開發(fā)平臺設(shè)計,同時結(jié)合了機械控制和神經(jīng)網(wǎng)絡(luò)等知識,擁有可以自主識別垃圾并分類的功能,以 FPGA 作為核心處理器最大程度的實現(xiàn)了垃圾識別與分類。該智能垃圾桶將人工分類
    發(fā)表于 07-09 18:44

    智能垃圾回收箱控制系統(tǒng)硬件設(shè)計

    智能高效遠程控制智能垃圾桶回收箱控制系統(tǒng)硬件部分的選型與設(shè)計是整個產(chǎn)品的基礎(chǔ),所有功能的實現(xiàn)都要圍繞其進行開發(fā)。本章對智能垃圾回收箱控制系統(tǒng)
    的頭像 發(fā)表于 04-13 08:10 ?648次閱讀
    <b class='flag-5'>智能</b><b class='flag-5'>垃圾</b>回收箱控制系統(tǒng)硬件設(shè)計

    智能垃圾回收箱及其控制系統(tǒng)

    智能高效遠程控制智能垃圾桶回收箱本文設(shè)計了基于機械傳動、嵌入式系統(tǒng)和物聯(lián)網(wǎng)技術(shù)的智能垃圾回收箱及控制系統(tǒng),包括結(jié)構(gòu)、硬件和軟件設(shè)計,以及基于
    的頭像 發(fā)表于 04-13 08:10 ?886次閱讀
    <b class='flag-5'>智能</b><b class='flag-5'>垃圾</b>回收箱及其控制系統(tǒng)

    OpenHarmony南向開發(fā)案例:【智能垃圾桶

    智能垃圾桶可以通過數(shù)字管家應(yīng)用來監(jiān)測垃圾桶當前可用容量,提醒主人及時處理垃圾;通過日程管家可以實現(xiàn)和其他智能設(shè)備聯(lián)動。
    的頭像 發(fā)表于 04-11 16:01 ?410次閱讀
    OpenHarmony南向開發(fā)案例:【<b class='flag-5'>智能</b><b class='flag-5'>垃圾桶</b>】

    智能垃圾回收箱控制系統(tǒng)硬件設(shè)計-機智云

    將超聲波傳感器安裝在垃圾桶正上方,根據(jù)超聲波傳播時間計算得到智能垃圾回收箱頂部與垃圾的距離數(shù)據(jù),用智能
    發(fā)表于 04-09 17:37

    基于機智云物聯(lián)網(wǎng)平臺的智能垃圾回收箱與控制系統(tǒng)研究

    、安全防護和自動報警等功能,滿足了設(shè)計目標。 文章的主要內(nèi)容 物聯(lián)網(wǎng)技術(shù)可提高垃圾回收管理效率,可開發(fā)智能回收系統(tǒng),實時監(jiān)控回收過程,通過物聯(lián)網(wǎng)協(xié)作,收集分析數(shù)據(jù),及時清理滿載垃圾桶,降低人力成本
    發(fā)表于 04-09 17:25

    智能垃圾桶,讓生活更便捷——紅外測距模塊WTU201F2B004引領(lǐng)革新

    智能垃圾桶開發(fā)背景: 隨著科技的飛速發(fā)展,智能家居已經(jīng)逐漸融入我們的日常生活,帶來了前所未有的便捷與舒適。而智能垃圾桶,作為
    的頭像 發(fā)表于 03-19 13:58 ?487次閱讀

    AI垃圾溢出識別攝像機

    隨著城市化進程的加快,垃圾處理成為城市管理中的一項重要工作。然而,垃圾桶溢出現(xiàn)象經(jīng)常發(fā)生,給城市環(huán)境衛(wèi)生和市民生活帶來不便。為了解決這一問題,AI垃圾溢出識別攝像機應(yīng)運而生,利用人工智能
    的頭像 發(fā)表于 03-13 11:04 ?362次閱讀
    AI<b class='flag-5'>垃圾</b>溢出識別攝像機

    智能垃圾桶,消費類產(chǎn)品、玩具方案這幾個芯片已經(jīng)幫你搭配好!

    CS9021R+5090(5096)+CS5503+功放是智能垃圾桶的好方案,能實現(xiàn)高效穩(wěn)定的電機控制和足夠的功率,廣泛應(yīng)用于家庭、辦公室、醫(yī)院等場所。智能技術(shù)也應(yīng)用于智能門鎖、玩具、
    的頭像 發(fā)表于 12-27 17:34 ?518次閱讀
    <b class='flag-5'>智能</b><b class='flag-5'>垃圾桶</b>,消費類產(chǎn)品、玩具方案這幾個芯片已經(jīng)幫你搭配好!

    東莞鵬利全自動垃圾桶清洗機——垃圾桶清洗演示

    智能垃圾桶
    鑫金暉
    發(fā)布于 :2023年11月09日 14:04:03

    基于CW32的智能語音分類垃圾桶設(shè)計

    基于CW32的智能語音分類垃圾桶設(shè)計
    的頭像 發(fā)表于 11-06 16:51 ?898次閱讀
    基于CW32的<b class='flag-5'>智能</b>語音分類<b class='flag-5'>垃圾桶</b>設(shè)計

    STM32智能垃圾桶自動識別各類垃圾概述

    離線語音識別識別垃圾種類并且垃圾桶自動翻蓋:** 說出喚醒詞“垃圾桶”后,再說一句垃圾名稱,語音識別模塊端識別到相應(yīng)關(guān)鍵詞
    的頭像 發(fā)表于 10-25 09:58 ?1195次閱讀
    STM32<b class='flag-5'>智能</b><b class='flag-5'>垃圾桶</b>自動識別各類<b class='flag-5'>垃圾</b>概述

    基于ARM的家用智能垃圾桶電路圖設(shè)計

    電子發(fā)燒友網(wǎng)站提供《基于ARM的家用智能垃圾桶電路圖設(shè)計.pdf》資料免費下載
    發(fā)表于 10-11 09:59 ?0次下載
    基于ARM的家用<b class='flag-5'>智能</b><b class='flag-5'>垃圾桶</b>電路圖設(shè)計