冰楓論壇

 找回密碼
 立即註冊
ads_sugarbook
搜索
查看: 483|回覆: 0
打印 上一主題 下一主題

[討論] STM8S103F3P6 製作紅外線水龍頭

[複製鏈接]

2609

主題

0

好友

949

積分

高級會員

Rank: 4

UID
373967
帖子
7589
主題
2609
精華
0
積分
949
楓幣
1905
威望
928
存款
26000
贊助金額
0
推廣
0
GP
1205
閱讀權限
50
在線時間
413 小時
註冊時間
2023-1-12
最後登入
2024-5-22

2023端午節紀念勳章 2023中秋節紀念勳章 2023聖誕節紀念勳章

跳轉到指定樓層
1
發表於 2023-4-8 23:25:29 |只看該作者 |倒序瀏覽
製作紅外線水龍頭所需的主控晶片是 STM8S103F3P6,其他所需的零件包括紅外線發射器、紅外線接收器、繼電器、電容、電阻、LED、電源等。下面是一些常見的連結腳位和相關的說明:

STM8S103F3P6:

這款主控晶片具有 20 個腳位,其中包括了 I/O 腳、電源腳、時鐘腳等。常見的腳位有:

PB4:繼電器控制腳,需要接上一個 NPN 型晶體或是 MOSFET 來控制繼電器的開關。

PD2:紅外線發射器的輸出腳,需要接上一個 NPN 型晶體或是 MOSFET 來控制發射器的開關。

PD3:紅外線接收器的輸入腳,需要接上一個高通濾波器和一個 NPN 型晶體或是 MOSFET 來接收紅外線訊號。

PC3:LED 燈的輸出腳,用來顯示設備的狀態。

紅外線發射器:

紅外線發射器通常具有三個腳位,分別是正極、負極和輸出腳。輸出腳需要接在 STM8S103F3P6 的 PD2 腳上,負極需要接在 GND 上,正極需要接在電源上。

紅外線接收器:

紅外線接收器通常具有三個腳位,分別是正極、負極和輸出腳。輸出腳需要接在 STM8S103F3P6 的 PD3 腳上,負極需要接在 GND 上,正極需要接在電源上。

繼電器:

繼電器通常具有兩個控制腳和兩個輸出腳。控制腳需要接在 STM8S103F3P6 的 PB4 腳上,輸出腳需要接在水龍頭的電源和水管上,用來控制水流的開關。

電容和電阻:

電容和電阻通常用來穩定電源和信號。

電容和電阻:

電容和電阻通常用來穩定電源和信號。例如可以在紅外線接收器的輸入腳和 GND 之間串聯一個 10uF 的電容來穩定訊號。另外也可以使用一些電阻來做分壓器,降低輸入電壓的大小。

LED:

LED 可以用來顯示設備的狀態,例如顯示是否開啟水流。LED 的正極需要接在 STM8S103F3P6 的 PC3 腳上,負極需要接在 GND 上。

接下來是一份簡單的 STM8S103F3P6 程式碼範例,用來控制紅外線水龍頭的開關。此程式碼需要使用 ST Visual Develop 開發環境來編譯和燒錄到 STM8S103F3P6 上:

#include <stm8s.h>

void delay_ms(uint16_t ms)
{
  while (ms--)
  {
    for (uint16_t i = 0; i < 1000; i++)
    {
      __asm__("nop");
    }
  }
}

int main(void)
{
  CLK_CKDIVR = 0x00; // 設定主時鐘為 16MHz

  // 設定 PB4 為推挽輸出模式,用來控制繼電器
  GPIOB->CR1 |= (1 << 4);
  GPIOB->CR2 &= ~(1 << 4);

  // 設定 PD2 為推挽輸出模式,用來控制紅外線發射器
  GPIOD->CR1 |= (1 << 2);
  GPIOD->CR2 &= ~(1 << 2);

  // 設定 PD3 為上拉輸入模式,用來接收紅外線訊號
  GPIOD->CR1 &= ~(1 << 3);
  GPIOD->CR2 &= ~(1 << 3);
  GPIOD->ODR |= (1 << 3);

  // 設定 PC3 為推挽輸出模式,用來控制 LED 燈
  GPIOC->CR1 |= (1 << 3);
  GPIOC->CR2 &= ~(1 << 3);

  while (1)
  {
    // 偵測紅外線訊號
    if ((GPIOD->IDR & (1 << 3)) == 0)
    {
      // 如果偵測到紅外線訊號,開啟水流
      GPIOB->ODR |= (1 << 4);
      GPIOC->ODR |= (1 << 3);
      delay_ms(5000); // 水流持續

  // 關閉水流
  GPIOB->ODR &= ~(1 << 4);
  GPIOC->ODR &= ~(1 << 3);
}
}
}



在上面的程式碼中,首先設定了 STM8S103F3P6 的一些 GPIO 腳的模式,例如 PB4 和 PD2 腳用來控制繼電器和紅外線發射器,PD3 用來接收紅外線訊號,PC3 用來控制 LED 燈。接著進入主迴圈,偵測 PD3 腳是否有紅外線訊號,如果有就開啟水流,並持續 5 秒後關閉水流。

需要注意的是,這只是一個簡單的程式碼範例,實際的紅外線水龍頭應該要更完善和穩定,例如需要增加紅外線接收器的判斷程式碼,確保偵測到的訊號是正確的。另外,還需要增加一些保護電路,例如過壓、過流保護,防止設備損壞。
[發帖際遇]: 洪嵐峰 身為「IT高手」,協助「嫦蓉」公司揪出「紙菸」加料事件,獲得獎勵 1 楓幣 幸運榜 / 衰神榜
收藏收藏0 推0 噓0


把本文推薦給朋友或其他網站上,每次被點擊增加您在本站積分: 1骰子
複製連結並發給好友,以賺取推廣點數
簡單兩步驟,註冊、分享網址,即可獲得獎勵! 一起推廣文章換商品、賺$$
高級模式
B Color Image Link Quote Code Smilies |上傳

廣告刊登意見回饋關於我們管群招募本站規範DMCA隱私權政策

Copyright © 2011-2024 冰楓論壇, All rights reserved

免責聲明:本網站是以即時上載留言的方式運作,本站對所有留言的真實性、完整性及立場等,不負任何法律責任。

而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。

小黑屋|手機版|冰楓論壇

GMT+8, 2024-5-22 18:08

回頂部