冰楓論壇

標題: STM8S103F3P6 製作紅外線水龍頭 [打印本頁]

作者: 洪嵐峰    時間: 2023-4-8 23:25
標題: STM8S103F3P6 製作紅外線水龍頭
製作紅外線水龍頭所需的主控晶片是 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 秒後關閉水流。

需要注意的是,這只是一個簡單的程式碼範例,實際的紅外線水龍頭應該要更完善和穩定,例如需要增加紅外線接收器的判斷程式碼,確保偵測到的訊號是正確的。另外,還需要增加一些保護電路,例如過壓、過流保護,防止設備損壞。




歡迎光臨 冰楓論壇 (https://bingfong.com/) Powered by 冰楓