99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

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

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

基于XIAO ESP32S3的可以檢測(cè)困倦的海綿寶寶

柴火創(chuàng)客空間 ? 來(lái)源:柴火創(chuàng)客空間 ? 2024-10-28 09:33 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

材料清單

硬件

Seeed Studio XIAO ESP32S3 Sense

Mq135

跳線

絲桿電機(jī)

M4螺栓

軟件

Arduino IDE

JLCPCB易達(dá)

故事背景

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

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

加工流程

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

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

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

電路設(shè)計(jì)

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

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

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

設(shè)計(jì)PCB

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

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

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

制作海綿寶寶

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

組裝

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

代碼

//  為霍爾傳感器、電機(jī)驅(qū)動(dòng)器和 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);


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


//存儲(chǔ) 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ū)動(dòng)器引腳初始化為輸出端
  pinMode(motorEnable, OUTPUT);
  pinMode(motorInput1, OUTPUT);
  pinMode(motorInput2, OUTPUT);


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


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


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


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


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


    readingIndex = 0;
  }


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


// 根據(jù)存儲(chǔ)的讀數(shù)計(jì)算二氧化碳的平均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)為第一個(gè)傳感器
}


// 將電機(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; // 如果沒(méi)有傳感器處于活動(dòng)狀態(tài),則默認(rèn)為第一個(gè)傳感器
}


// 按指定方向移動(dòng)電機(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)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 微控制器
    +關(guān)注

    關(guān)注

    48

    文章

    7951

    瀏覽量

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

    關(guān)注

    2565

    文章

    52983

    瀏覽量

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

    關(guān)注

    143

    文章

    9298

    瀏覽量

    149421
  • esp32s3
    +關(guān)注

    關(guān)注

    0

    文章

    8

    瀏覽量

    1865

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

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

    XIAOXIAO今天小編給大家?guī)?lái)的是圣地亞哥的Maker Marcelo Rovai 使用 XIAO ESP32S3 Sensor 搭配Edge Impulse 實(shí)現(xiàn)的圖像分類的項(xiàng)目。
    的頭像 發(fā)表于 10-28 09:50 ?1887次閱讀
    基于<b class='flag-5'>XIAO</b>的圖像分類處理項(xiàng)目

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

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

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

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

    請(qǐng)問(wèn)ESP32S3的PCLK的上限為多少?

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

    ESP32S3 通過(guò)USB燒錄,燒錄失敗

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

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

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

    esp32S3無(wú)法燒寫(xiě)的原因是什么?

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

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

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

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

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

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

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

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

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

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

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

    esp32s3使用多串口

    的頭像 發(fā)表于 11-06 11:29 ?8053次閱讀
    <b class='flag-5'>esp32s3</b>使用多串口

    UIFlow 2.0 新增支持 XIAO ESP32S3

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

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

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