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

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

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

基于XIAO ESP32S3的可以檢測困倦的海綿寶寶

柴火創(chuàng)客空間 ? 來源:柴火創(chuàng)客空間 ? 2024-10-28 09:33 ? 次閱讀

今天為大家?guī)淼氖莵碜訦ackster創(chuàng)作者M(jìn)ondal3011的作品:可以檢測困倦的海綿寶寶.這個裝置主要是使用二氧化碳傳感器去進(jìn)行二氧化碳濃度測試,通過識別二氧化碳來判斷環(huán)境是否會造成人體困倦。通常,房間里的高 CO2 會導(dǎo)致嗜睡。當(dāng)房間里的 CO2 水平上升時,這個海綿寶寶會變得困倦,這樣你就可以打開窗戶了!

材料清單

硬件

Seeed Studio XIAO ESP32S3 Sense

Mq135

跳線

絲桿電機(jī)

M4螺栓

軟件

Arduino IDE

JLCPCB易達(dá)

故事背景

最近,你可能注意到自己在課堂上感到很困。也許你并不覺得課程無聊,而且晚上睡得很好,所以這不是原因。經(jīng)過一些在線研究(主要是通過 Google 和 ChatGPT),你發(fā)現(xiàn)這種困倦可能是由于教室里積累了過多的二氧化碳。這讓人覺得有道理,因?yàn)樽罱鞖夂芾?,教室的門窗大部分時間都關(guān)著。

同樣的問題也可能出現(xiàn)在你的宿舍。當(dāng)你學(xué)習(xí)時,可能會感到昏昏欲睡,因?yàn)橐恢标P(guān)著窗戶,導(dǎo)致房間內(nèi)二氧化碳濃度過高。于是,你想出了一個創(chuàng)意,制作一個看起來很酷且直觀易懂的 CO2 監(jiān)測器!這個監(jiān)測器的設(shè)計靈感來源于海綿寶寶,眼瞼會根據(jù)二氧化碳水平的變化而上下移動,顯示他有多困。當(dāng) CO2 水平較低時,海綿寶寶的眼睛會睜得大大的,眼瞼高高翹起;隨著二氧化碳濃度的升高,眼瞼會逐漸降低。如果眼睛完全閉上,意味著房間里的二氧化碳濃度過高,你最好讓一些新鮮空氣進(jìn)來!

加工流程

該項(xiàng)目的主要組件是 MQ135 空氣質(zhì)量傳感器和小 esp32 微控制器。該裝置還包含 5 個霍爾效應(yīng)傳感器,每個傳感器都映射到特定的 CO2 ppm 水平。電機(jī)通過 L293D 電機(jī)驅(qū)動器 IC 連接到微控制器。該電機(jī)是一種 DIY 絲桿電機(jī),可根據(jù)旋轉(zhuǎn)方向上下移動眼瞼。眼瞼的長端包含一個磁鐵,霍爾傳感器可以檢測到該磁鐵。微控制器讀取 MQ135 傳感器的模擬輸出,并通過一些數(shù)學(xué)運(yùn)算將其轉(zhuǎn)換為 CO2 ppm 水平。這是在特定的持續(xù)時間內(nèi)完成的(在我的代碼中為 5 分鐘),并且 ppm 值是該持續(xù)時間的平均值。然后,微控制器打開絲桿電機(jī),直到磁體位于霍爾傳感器前面,該傳感器對應(yīng)于相同的 ppm(在容差范圍內(nèi))。這樣眼瞼就會移動以匹配 ppm 水平。

4f95ff2c-9275-11ef-a511-92fbcf53809c.png

4fa1ffca-9275-11ef-a511-92fbcf53809c.png

電路設(shè)計

對于這個項(xiàng)目,決定設(shè)計一個 PCB 并組裝起來是個很好的選擇。盡管之前沒有過這樣的經(jīng)驗(yàn),但這正是一個探索新領(lǐng)域的機(jī)會。許多創(chuàng)作者在 Instructables 和 YouTube 上展示了他們自己的 PCB 制作過程,這為這個項(xiàng)目提供了很好的靈感和指導(dǎo)。

使用 EasyEDA 設(shè)計電路和 PCB 是一個不錯的選擇。雖然可能還有其他更優(yōu)秀的工具,但 EasyEDA 因其易于學(xué)習(xí)和使用而受到許多 YouTuber 的青睞。通過這個平臺,可以有效地設(shè)計出所需的電路圖和印刷電路板,從而使整個項(xiàng)目更加順利地進(jìn)行。

4fc7575c-9275-11ef-a511-92fbcf53809c.png

設(shè)計PCB

PCB 由 Seeed Fusion 制造,因此在設(shè)計之前,確保仔細(xì)閱讀了他們的所有指南。

首先,用戶在設(shè)計菜單中選擇了“將原理圖轉(zhuǎn)換為 PCB”選項(xiàng),立創(chuàng)EDA 隨即生成了一個新的 PCB 文件,其中包含了原理圖中的所有元器件。接下來,用戶開始設(shè)計 PCB,并生成了 Gerber 文件。目前的設(shè)計以海綿寶寶為特色,雖然沒有他的 SquarePants,但歡迎其他人添加褲子,完全沒有規(guī)定禁止這樣做!

在材料選擇上,決定使用 Sunboard,這是一種低密度 PVC 板。Sunboard 非常易于使用,同時仍然具備較好的耐用性,十分適合這種手工藝項(xiàng)目。

制作海綿寶寶

這個項(xiàng)目中使用 Sunboard,一種低密度 PVC 板。它非常易于使用,同時仍然非常耐用,非常適合這種工藝。

組裝

組裝好 PCB 后,把它全部組裝在一起。并將 CO2 傳感器放在后面以將其隱藏起來。如果您也這樣做,請確保框架不要放置在沒有空氣流通的房間角落。否則你的海綿寶寶可能總是昏昏欲睡!移動時眼瞼確實(shí)會有點(diǎn)晃動,但這根本不是問題。由于它們僅在 CO2 水平存在顯著差異時才會移動,因此您幾乎不會看到它們移動。但是,它在移動時確實(shí)會發(fā)出一些噪音。主要是因?yàn)榕f減速電機(jī)磨削。所以認(rèn)為微型 N20 電機(jī)會是更好的選擇。

代碼

//  為霍爾傳感器、電機(jī)驅(qū)動器和 MQ135 傳感器定義引腳
const int hallSensors[] = {D1, D2, D3, D4, D5};
const int motorEnable = D8;
const int motorInput1 = D6;
const int motorInput2 = D7;
const int mq135Pin = A0;


MQ135 gasSensor = MQ135(mq135Pin);


// 為每個霍爾傳感器定義 CO2 ppm 范圍
const int ppmRanges[][2] = {
  {800, 1000},
  {1001, 1200},
  {1201, 1400},
  {1401, 1600},
  {1601, 1800}
};


//存儲 CO2 ppm 讀數(shù)
const int maxReadings = 30; // 5 minutes / 10 seconds
float ppmReadings[maxReadings];
int readingIndex = 0;


void setup() {
  Serial.begin(115200);


  // 將霍爾傳感器初始化為輸入端
  for (int i = 0; i < 5; i++) {
    pinMode(hallSensors[i], INPUT);
  }


  // 將電機(jī)驅(qū)動器引腳初始化為輸出端
  pinMode(motorEnable, OUTPUT);
  pinMode(motorInput1, OUTPUT);
  pinMode(motorInput2, OUTPUT);


  // 初始化電機(jī),使其停止
  digitalWrite(motorEnable, LOW);
}


void loop() {
  // 從 MQ135 傳感器讀取二氧化碳ppm 含量
  float ppm = gasSensor.getPPM();


  //  存儲 CO2 ppm 讀數(shù)
  ppmReadings[readingIndex] = ppm;
  readingIndex = readingIndex + 1;
  
  if(readingIndex >= 30)
  {
    //計算二氧化碳的平均ppm含量
    int avgPPM = calculateAveragePPM();


// 根據(jù) CO2 ppm 平均水平確定目標(biāo)大廳傳感器
    int targetSensor = determineTargetSensor(avgPPM);


    // 將電機(jī)移至目標(biāo)霍爾傳感器處
    moveMotorToTargetSensor(targetSensor);


    readingIndex = 0;
  }


  delay(10000); // 等待 10 秒
}


// 根據(jù)存儲的讀數(shù)計算二氧化碳的平均ppm含量
int calculateAveragePPM() {
  int sum = 0;
  for (int i = 0; i < maxReadings; i++) {
    sum += ppmReadings[i];
  }
  return sum / maxReadings;
}


// 根據(jù) CO2 ppm 平均水平確定目標(biāo)大廳傳感器
int determineTargetSensor(int avgPPM) {
  for (int i = 0; i < 5; i++) {
    if (avgPPM >= ppmRanges[i][0] && avgPPM <= ppmRanges[i][1]) {
      return i;
    }
  }
  return 0; //如果 avgPPM 超出范圍,則默認(rèn)為第一個傳感器
}


// 將電機(jī)移至目標(biāo)霍爾傳感器處
void moveMotorToTargetSensor(int targetSensor) {
  int currentSensor = getCurrentSensor();
  if (currentSensor != targetSensor) {
    int direction = (targetSensor > currentSensor) ? 1 : -1;
    while (currentSensor != targetSensor) {
      moveMotor(direction);
      currentSensor = getCurrentSensor();
    }
    stopMotor();
  }
}


// 獲取當(dāng)前霍爾傳感器
int getCurrentSensor() {
  for (int i = 0; i < 5; i++) {
    if (digitalRead(hallSensors[i]) == LOW) {
      return i;
    }
  }
  return 0; // 如果沒有傳感器處于活動狀態(tài),則默認(rèn)為第一個傳感器
}


// 按指定方向移動電機(jī)
void moveMotor(int direction) {
  digitalWrite(motorEnable, HIGH);
  if (direction == 1) {
    digitalWrite(motorInput1, HIGH);
    digitalWrite(motorInput2, LOW);
  } else {
    digitalWrite(motorInput1, LOW);
    digitalWrite(motorInput2, HIGH);
  }
}


// 停止電機(jī)
void stopMotor() {
  digitalWrite(motorEnable, LOW);
}

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

    關(guān)注

    48

    文章

    7400

    瀏覽量

    150692
  • 傳感器
    +關(guān)注

    關(guān)注

    2542

    文章

    50320

    瀏覽量

    750389
  • 電機(jī)
    +關(guān)注

    關(guān)注

    142

    文章

    8845

    瀏覽量

    144669
  • esp32s3
    +關(guān)注

    關(guān)注

    0

    文章

    6

    瀏覽量

    453

原文標(biāo)題:創(chuàng)客項(xiàng)目秀|基于XIAO ESP32S3 的可以檢測困倦的海綿寶寶!

文章出處:【微信號:ChaiHuoMakerSpace,微信公眾號:柴火創(chuàng)客空間】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    基于XIAO的圖像分類處理項(xiàng)目

    XIAOXIAO今天小編給大家?guī)淼氖鞘サ貋喐绲腗aker Marcelo Rovai 使用 XIAO ESP32S3 Sensor 搭配Edge Impulse 實(shí)現(xiàn)的圖像分類的項(xiàng)目。
    的頭像 發(fā)表于 10-28 09:50 ?1231次閱讀
    基于<b class='flag-5'>XIAO</b>的圖像分類處理項(xiàng)目

    ESP32S3外置Jtag連接失敗的原因?

    首先介紹一下情況: 芯片:ESP32S3 ESPIDF版本:V5.04 OpenOCD:ESPIDF自帶的版本 JlinkV9:已經(jīng)通過zadig-2.8切換成WinUSB 現(xiàn)狀:已經(jīng)燒毀efuse
    發(fā)表于 06-07 08:30

    使用esp-idf-tools2.12不能搭建esp32s3開發(fā)環(huán)境是什么原因?

    。 我選擇V4.3.1版本后,系統(tǒng)不支持esp32s3的開發(fā),可以支持esp32s2編譯和調(diào)試。但我們使用的芯片是esp32s3,還請各位幫忙查看下什么原因。謝謝。
    發(fā)表于 06-27 08:20

    請問ESP32S3的PCLK的上限為多少?

    參考貴司的鏈接 https://docs.espressif.com/projects/esp ... .html#pclk ESP32 的 PCLK 上限為 8 MHz 。 ESP32S2 的 PCLK 上限為 32 MHz。
    發(fā)表于 06-28 11:55

    ESP32S3 通過USB燒錄,燒錄失敗

    ESP32S3板通過usb插入電腦,電腦端COM設(shè)備能檢測到串口,現(xiàn)象為反復(fù)連接、斷開?,F(xiàn)手動強(qiáng)制讓ESP32S3進(jìn)入燒錄狀態(tài),按照官網(wǎng)說明,先按下boot鍵(GPIO0腳拉低),再按en
    發(fā)表于 09-30 10:28

    esp32s3 lcd接口有api可以調(diào)用了嗎?

    我在esp32s3的datasheet看見寫提供了一個lcd接口,請問這個接口現(xiàn)在有api可以調(diào)用了嗎,我想驅(qū)動并口的lcd,esp32似乎使用的是i2s
    發(fā)表于 02-17 08:37

    esp32S3無法燒寫的原因是什么?

    使用的是esp32S3,IDF v4.3,環(huán)境windows 10前面的構(gòu)建都可以成功,但是一進(jìn)入燒寫就會報錯:A fatal error occurred: This chip
    發(fā)表于 02-20 08:11

    是否有任何外部組件可以使ESP32S3與CAN-FD兼容?

    控制器與 ISO11898-1 FD 格式幀不兼容,并將此類幀解釋為錯誤。我想知道是否有任何外部組件可以使 ESP32S3 與 CAN-FD 兼容。
    發(fā)表于 03-02 08:35

    ESP32S3內(nèi)部外設(shè)包括DMA之類的可以直接用ESP32的配置來啟用嗎?

    ESP32S3的選項(xiàng),DMA是auto選擇嗎?在SPI LCD的例程里面也沒有S3的管腳配置,LVGL的例程里面,也是卡在DMA初始化的配置。新手問下,ESP32S3內(nèi)部外設(shè)包括DMA之類的
    發(fā)表于 03-06 07:10

    使用esp-idf-tools2.12不能搭建esp32s3開發(fā)環(huán)境的原因?

    V4.3.1版本后,系統(tǒng)不支持esp32s3的開發(fā),可以支持esp32s2編譯和調(diào)試。但我們使用的芯片是esp32s3,還請各位幫忙查看下什么原因。謝謝。
    發(fā)表于 03-09 06:47

    使用Arduino通過USB串行對ESP32S3進(jìn)行編程和調(diào)試

    電子發(fā)燒友網(wǎng)站提供《使用Arduino通過USB串行對ESP32S3進(jìn)行編程和調(diào)試.zip》資料免費(fèi)下載
    發(fā)表于 10-19 14:50 ?2次下載
    使用Arduino通過USB串行對<b class='flag-5'>ESP32S3</b>進(jìn)行編程和調(diào)試

    基于ESP32S3系列模組的開發(fā)板

    基于ESP32S3系列模組的開發(fā)板
    的頭像 發(fā)表于 04-10 11:25 ?3665次閱讀
    基于<b class='flag-5'>ESP32S3</b>系列模組的開發(fā)板

    esp32s3使用多串口

    esp32s3使用多串口 我按照別人博客中設(shè)置串口2,串口打印有問題,因?yàn)闆]有看到esp32s3 多串口,就總結(jié)了一下自己的經(jīng)驗(yàn) 下圖為esp32的引腳圖 下圖為esp32s3的引腳圖
    的頭像 發(fā)表于 11-06 11:29 ?3933次閱讀
    <b class='flag-5'>esp32s3</b>使用多串口

    UIFlow 2.0 新增支持 XIAO ESP32S3

    SupportSeeedStudioXIAOESP32S3UIFlow2.0現(xiàn)已支持SeeedStudioXIAOESP32S-S3開發(fā)板。這款基于ESP32-S3芯片的小型開發(fā)板以其低功耗、高性能
    的頭像 發(fā)表于 05-25 08:29 ?585次閱讀
    UIFlow 2.0 新增支持 <b class='flag-5'>XIAO</b> <b class='flag-5'>ESP32S3</b>

    基于XIAO ESP32S3 sense開發(fā)板的小型相機(jī)設(shè)計

    在這個科技飛速發(fā)展的時代,DIY(Do It Yourself)文化正成為連接創(chuàng)新與日常生活的橋梁,今天小編給大家?guī)砹藖碜月槭±砉W(xué)院的Arnov Sharma 的基于XIAO ESP32S3 sense的小型相機(jī)項(xiàng)目,該相機(jī)擁有一個圓形的觸摸屏幕
    的頭像 發(fā)表于 09-06 10:17 ?324次閱讀
    基于<b class='flag-5'>XIAO</b> <b class='flag-5'>ESP32S3</b> sense開發(fā)板的小型相機(jī)設(shè)計