<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

利用Proteus仿真STM32實現DHT11溫濕度檢測

DS小龍哥-嵌入式技術 ? 2022-09-17 15:53 ? 次閱讀

1. 前言

Proteus是英國著名的EDA工具(仿真軟件),從原理圖布圖、代碼調試到單片機與外圍電路協同仿真,一 鍵切換到PCB設計,真正實現了從概念到產品的完整設計。是世界上唯一將電路仿真軟件、PCB設計軟 件和虛擬模型仿真軟件三合一的設計平臺,其處理器模型支持8051、HC11、 PIC10/12/16/18/24/30/DSPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系 列處理器,并持續增加其他系列處理器模型。在編譯方面,它也支持IAR、KeilMATLAB等多種編譯 器。 前面文章介紹了Proteus的下載,安裝,建立工程,完成LED燈仿真運行。這篇文章在這基礎上增加串口打印,DHT11溫濕度檢測。

2. 設計程序

先使用keil軟件就將程序設計設計好,然后生成HEX文件,等待設計好原理圖后進行仿真測試。

注意: 當前使用的芯片STM32F103。Proteus的版本是8.9

image-20220524143658130
#include "stm32f10x.h"
#include "led.h"
#include "delay.h"
#include "key.h"
#include "dht11.h"
?
/*
(3)溫濕度傳感器: DHT11
VCC--VCC
GND---GND
DAT---PA5 
*/
?
#include "stm32f10x.h"
#include 
#include 
#include "sys.h"
#include 
?
#define USART1_RX_LENGTH 1024
extern u8 USART1_RX_BUFFER[USART1_RX_LENGTH]; //保存接收數據的緩沖區
extern u32 USART1_RX_CNT; //當前接收到的數據長度
extern u8 USART1_RX_FLAG; //1表示數據接收完畢 0表示沒有接收完畢
?
#define USART2_RX_LENGTH 1024
extern u8 USART2_RX_BUFFER[USART2_RX_LENGTH]; //保存接收數據的緩沖區
extern u32 USART2_RX_CNT; //當前接收到的數據長度
extern u8 USART2_RX_FLAG; //1表示數據接收完畢 0表示沒有接收完畢
?
#define USART3_RX_LENGTH 1024
extern u8 USART3_RX_BUFFER[USART3_RX_LENGTH]; //保存接收數據的緩沖區
extern u32 USART3_RX_CNT; //當前接收到的數據長度
extern u8 USART3_RX_FLAG; //1表示數據接收完畢 0表示沒有接收完畢
?
void USART1_Init(u32 baud);
void USART2_Init(u32 baud);
void USART3_Init(u32 baud);
void USARTx_StringSend(USART_TypeDef *USARTx,char *str);
void USARTx_DataSend(USART_TypeDef *USARTx,u8 *data,u32 len);
?
//定義按鍵IO口
#define KEY_S3 PAin(1) 
?
//函數聲明
void KEY_Init(void);
u8 KEY_Scan(u8 mode);
?
?
//LED定義
#define LED1 PBout(6)
#define LED2 PBout(7)
#define LED3 PBout(8)
#define LED4 PBout(9)
?
//蜂鳴器IO口定義
#define BEEP PAout(6)
?
//函數聲明
void LED_Init(void);
void BEEP_Init(void);
?
?
?
//IO方向設置
#define DHT11_IO_IN()  {GPIOA->CRL&=0XFF0FFFFF;GPIOA->CRL|=0x00800000;}
#define DHT11_IO_OUT() {GPIOA->CRL&=0XFF0FFFFF;GPIOA->CRL|=0x00300000;}
////IO操作函數                                            
#define DHT11_DQ_OUT PAout(5) //數據端口    PA5 
#define DHT11_DQ_IN  PAin(5) //數據端口    PA5
?
?
u8 DHT11_Init(void);        //初始化DHT11
u8 DHT11_Read_Data(u8 *temp,u8 *humi);//讀取溫濕度
u8 DHT11_Read_Byte(void);   //讀出一個字節
u8 DHT11_Read_Bit(void);    //讀出一個位
u8 DHT11_Check(void);       //檢測是否存在DHT11
void DHT11_Rst(void);       //復位DHT11  
?
//復位DHT11
void DHT11_Rst(void)      
{         
     DHT11_IO_OUT();   //SET OUTPUT
  DHT11_DQ_OUT=0;     //拉低DQ
  DelayMs(20);       //拉低至少18ms
  DHT11_DQ_OUT=1;     //DQ=1 
     DelayUs(30);    //主機拉高20~40us
}
//等待DHT11的回應
//返回1:未檢測到DHT11的存在
//返回0:存在
u8 DHT11_Check(void)      
{  
    u8 retry=0;
    DHT11_IO_IN();//SET INPUT    
 while (DHT11_DQ_IN&&retry<100)//DHT11會拉低40~80us
?    {
?        retry++;
?        DelayUs(1);
?    };   
?    if(retry>=100)return 1;
    else retry=0;
  while (!DHT11_DQ_IN&&retry<100)//DHT11拉低后會再次拉高40~80us
?    {
?        retry++;
?        DelayUs(1);
?    };
?    if(retry>=100)return 1;   
    return 0;
}
//從DHT11讀取一個位
//返回值:1/0
u8 DHT11_Read_Bit(void)              
{
    u8 retry=0;
    while(DHT11_DQ_IN&&retry<100)//等待變為低電平
?    {
?        retry++;
?        DelayUs(1);
?    }
?    retry=0;
?    while(!DHT11_DQ_IN&&retry<100)//等待變高電平
?    {
?        retry++;
?        DelayUs(1);
?    }
?    DelayUs(40);//等待40us
?    if(DHT11_DQ_IN)return 1;
?    else return 0;       ? 
?}
??
?//從DHT11讀取一個字節
?//返回值:讀到的數據
?u8 DHT11_Read_Byte(void) ? ?
?{ ? ? ? ?
? ? ?u8 i,dat;
? ? ?dat=0;
?    for (i=0;i<8;i++) 
?    {
? ?      dat<<=1; 
?     ? ?dat|=DHT11_Read_Bit();
? ?  }                        ? ?
? ? ?return dat;
?}
??
??
?//從DHT11讀取一次數據
?//temp:溫度值(范圍:0~50°)
?//humi:濕度值(范圍:20%~90%)
?//返回值:0,正常;1,讀取失敗
?u8 DHT11_Read_Data(u8 *temp,u8 *humi) ? ?
?{ ? ? ? ?
?    u8 buf[5];
?    u8 i;
?    DHT11_Rst();
?    //printf("------------------------rn");
?    if(DHT11_Check()==0)
?    {
?        for(i=0;i<5;i++)//讀取40位數據
?        {
?            buf[i]=DHT11_Read_Byte();
?        }
?        if((buf[0]+buf[1]+buf[2]+buf[3])==buf[4])
?        {
?            *humi=buf[0];
?            *temp=buf[2];
?        }
?    }else return 1;
?    return 0;    ? ?
?}
??
??
?//初始化DHT11的IO口 DQ 同時檢測DHT11的存在
?//返回1:不存在
?//返回0:存在 ?       
?u8 DHT11_Init(void)
?{
?    RCC->APB2ENR|=1<<2; ? ?//使能PORTA口時鐘 
?    GPIOA->CRL&=0XFF0FFFFF;//PORTA.5 推挽輸出
    GPIOA->CRL|=0X00300000;
    GPIOA->ODR|=1<<5; ? ? ?//輸出1                 ? ?
?    DHT11_Rst();
?    return DHT11_Check();
?}
??
??
?/*
?函數功能:按鍵初始化
?硬件連接:PA1
?特性: 按下為低電平---沒按下高電平
?*/
?void KEY_Init(void)
?{
? ? ?//開時鐘
? ? ?RCC->APB2ENR|=1<<2;
? ? ?//配置模式
? ? ?GPIOA->CRL&=0xFFFFFF0F;
  GPIOA->CRL|=0x00000080;
  //上拉
  GPIOA->ODR|=1<<1;
?}
??
??
?/*
?函數功能:函數掃描函數
?函數參數: mode=1表示使用連續模式  mode=0使用單擊模式
?返回值:  2 3 4 5 表示具體的按鈕 ? 0表示沒有按下
?*/
?u8 KEY_Scan(u8 mode)
?{
? ? static u8 flag=1; //記錄上一次按下的狀態 
? ? if(mode)flag=1;
? ? if(flag&&(KEY_S3==0))
? ? {
? ? ? ? flag=0;
? ? ? ? delay_ms(20);
? ? ? ? if(KEY_S3==0)return 3;
? ? }
? ? else if(KEY_S3)
? ? {
? ? ? ? flag=1; 
? ? }
? ? return 0;
?}
??
??
?/*
?函數功能: LED初始化
?硬件連接: PB6 PB7 PB8 PB9
?特性: 低電平點亮
?*/
?void LED_Init(void)
?{
? ? ?//開時鐘
? ? ?RCC->APB2ENR|=1<<3;
? ? ?//配置GPIO口
? ? ?GPIOB->CRL&=0x00FFFFFF;
  GPIOB->CRL|=0x22000000;
  GPIOB->CRH&=0xFFFFFF00;
  GPIOB->CRH|=0x00000022;
  //上拉
  GPIOB->ODR|=1<<6;
? ? ?GPIOB->ODR|=1<<7;
? ? ?GPIOB->ODR|=1<<8;
? ? ?GPIOB->ODR|=1<<9;
?}
??
?/*
?函數功能: 蜂鳴器初始化
?硬件連接: PA6
?特性: 高電平響
?*/
?void BEEP_Init(void)
?{
? ? RCC->APB2ENR|=1<<2;
? ? GPIOA->CRL&=0xF0FFFFFF;
  GPIOA->CRL|=0x02000000;
}
?
?
/*
函數功能: 串口1的初始化
硬件連接: PA9(TX)  和 PA10(RX)
*/
void USART1_Init(u32 baud)
{
  /*1. 開時鐘*/
  RCC->APB2ENR|=1<<14; //USART1時鐘
? ? ?RCC->APB2ENR|=1<<2; ?//PA
? ? ?RCC->APB2RSTR|=1<<14; //開啟復位時鐘
? ? ?RCC->APB2RSTR&=~(1<<14);//停止復位
? ? ?/*2. 配置GPIO口的模式*/
? ? ?GPIOA->CRH&=0xFFFFF00F;
  GPIOA->CRH|=0x000008B0;
  /*3. 配置波特率*/
  USART1->BRR=72000000/baud;
  /*4. 配置核心寄存器*/
  USART1->CR1|=1<<5; //開啟接收中斷
? ? ?STM32_SetPriority(USART1_IRQn,1,1); //設置中斷優先級
? ? ?USART1->CR1|=1<<2; //開啟接收
? ? ?USART1->CR1|=1<<3; //開啟發送
? ? ?USART1->CR1|=1<<13;//開啟串口功能
?}
??
?/*
?函數功能: 串口2的初始化
?硬件連接: PA2(TX)  和 PA3(RX)
?*/
?void USART2_Init(u32 baud)
?{
? ? ?/*1. 開時鐘*/
? ? ?RCC->APB1ENR|=1<<17; //USART2時鐘
? ? ?RCC->APB2ENR|=1<<2; ?//PA
? ? ?RCC->APB1RSTR|=1<<17; //開啟復位時鐘
? ? ?RCC->APB1RSTR&=~(1<<17);//停止復位
? ? ?
? ? ?/*2. 配置GPIO口的模式*/
? ? ?GPIOA->CRL&=0xFFFF00FF;
  GPIOA->CRL|=0x00008B00;
  /*3. 配置波特率*/
  USART2->BRR=36000000/baud;
  /*4. 配置核心寄存器*/
  USART2->CR1|=1<<5; //開啟接收中斷
? ? ?STM32_SetPriority(USART2_IRQn,1,1); //設置中斷優先級
? ? ?USART2->CR1|=1<<2; //開啟接收
? ? ?USART2->CR1|=1<<3; //開啟發送
? ? ?USART2->CR1|=1<<13;//開啟串口功能
?}
??
?/*
?函數功能: 串口3的初始化
?硬件連接: PB10(TX)  和 PB11(RX)
?*/
?void USART3_Init(u32 baud)
?{
? ? ?/*1. 開時鐘*/
? ? ?RCC->APB1ENR|=1<<18; //USART3時鐘
? ? ?RCC->APB2ENR|=1<<3; ?//PB
? ? ?RCC->APB1RSTR|=1<<18; //開啟復位時鐘
? ? ?RCC->APB1RSTR&=~(1<<18);//停止復位
? ? ?
? ? ?/*2. 配置GPIO口的模式*/
? ? ?GPIOB->CRH&=0xFFFF00FF;
  GPIOB->CRH|=0x00008B00;
  /*3. 配置波特率*/
  USART3->BRR=36000000/baud;
  /*4. 配置核心寄存器*/
  USART3->CR1|=1<<5; //開啟接收中斷
? ? ?STM32_SetPriority(USART3_IRQn,1,1); //設置中斷優先級
? ? ?USART3->CR1|=1<<2; //開啟接收
? ? ?USART3->CR1|=1<<3; //開啟發送
? ? ?USART3->CR1|=1<<13;//開啟串口功能
?}
??
?u8 USART1_RX_BUFFER[USART1_RX_LENGTH]; //保存接收數據的緩沖區
?u32 USART1_RX_CNT=0; ?//當前接收到的數據長度
?u8 USART1_RX_FLAG=0; //1表示數據接收完畢 0表示沒有接收完畢
??
?//串口1的中斷服務函數
?void USART1_IRQHandler(void)
?{
? ? ?u8 data;
? ? ?//接收中斷
? ? ?if(USART1->SR&1<<5)
? ?  {
? ? ? ? ?TIM1->CNT=0; //清除計數器
    TIM1->CR1|=1<<0; //開啟定時器1
? ? ? ? ?data=USART1->DR; //讀取串口數據
   //  if(USART1_RX_FLAG==0) //判斷上一次的數據是否已經處理完畢
     {
      //判斷是否可以繼續接收
      if(USART1_RX_CNTSR&1<<5)
? ?  {
? ? ? ? ?TIM2->CNT=0; //清除計數器
    TIM2->CR1|=1<<0; //開啟定時器2
? ? ? ? ?data=USART2->DR; //讀取串口數據
   //  if(USART2_RX_FLAG==0) //判斷上一次的數據是否已經處理完畢
     {
      //判斷是否可以繼續接收
      if(USART2_RX_CNTSR&1<<5)
? ?  {
? ? ? ? ?TIM3->CNT=0; //清除計數器
    TIM3->CR1|=1<<0; //開啟定時器3
? ? ? ? ?data=USART3->DR; //讀取串口數據
   //  if(USART3_RX_FLAG==0) //判斷上一次的數據是否已經處理完畢
     {
      //判斷是否可以繼續接收
      if(USART3_RX_CNTDR=*str++;
    while(!(USARTx->SR&1<<7)){}
? ? }
?}
??
?/*
?函數功能: 數據發送
?*/
?void USARTx_DataSend(USART_TypeDef *USARTx,u8 *data,u32 len)
?{
? ? u32 i;
? ? for(i=0;iDR=*data++;
? ? ? ? while(!(USARTx->SR&1<<7)){}
? ? }
?}
??
?//printf函數底層函數接口
?int fputc(int c, FILE* stream)
?{
? ? ?USART1->DR=c;
  while(!(USART1->SR&1<<7)){}
? ? ?return c;
?}
??
??
?u8 dht11_temp;
?u8 dht11_humidity;
??
?int main()
?{
? ? u8 key_val;
? ? u32 time=0;
? ? LED_Init();
? ? BEEP_Init();
? ? KEY_Init();
? ? USART1_Init(115200); ? ?//串口1初始化-打印調試信息
? ? //初始化DHT11
? ? DHT11_Init();
? ? ?
? ? while(1)
? ? {
? ? ? ?key_val=KEY_Scan(0); //PA1
? ? ? ?if(key_val)
? ? ?  {
? ? ? ? ? BEEP=!BEEP;
? ? ? ? ? LED1=!LED1; ? //PB6
? ? ?  }
? ? ? ?delay_ms(5);
? ? ? ?
? ? ? ?time++;
? ? ? ?if(time>=10)
    {
    time=0;
    LED2=!LED2; //PB7
     
    //讀取溫濕度
    if(DHT11_Read_Data(&dht11_temp,&dht11_humidity))
     {
      printf("溫度讀取失敗.rn");
     }    
    printf("T:%d,H:%drn",dht11_temp,dht11_humidity);
    
    //濕度大于80以上就關閉插座
    if(dht11_humidity>80)
     {
      LED1=1;
     }
    }
  }
}
復制代碼

3. 設計電路圖

3.1 添加DHT11器件

打開Proteus,搜索DHT11元器件。

image-20220524143937845

鼠標選擇空白區域,點擊鼠標右鍵,放置電源和GND。

image-20220524144345503

設計好的效果如下:

image-20220524144418613

3.2 添加虛擬串口終端

為了方便查看程序的串口輸出,添加一個串口終端顯示框。

在虛擬儀表模式下,選擇virtual terminal工具,然后在原理圖空白區域點擊一下就可以放virtual terminal工具。

image-20220524145332372

在繪制原理圖的經常遇到連線復雜,或者布線很亂,如果元器件的引腳不方便直接與MCU單片機連接,可以采用標簽的形式或者總線方式布線。這里以串口終端演示,采用標簽方式連接IO口。

首先在坐標的菜單欄里選擇終端模式,然后鼠標點擊DEFAULT,然后在原理圖的空白區域,點擊一下鼠標左鍵,會出現一個空心的連接線條,將這個連接線條連接到元器件的IO口上就行。

image-20220524150145275image-20220524145810211

放置好之后,鼠標點擊這個接線端子--空心圓圈,彈出對話框,設置連接的IO口。

image-20220524150321956

然后MCU的PA9和PA10的端子上也設置好標簽名稱。

image-20220524151328570

設置虛擬串口顯示器的波特率為:115200

image-20220524150744558

如果在調試仿真時, Virtual Terminal無法自動彈出窗口,可以點擊菜單欄的調試,選擇恢復彈出窗口。

image-20220524151628962

設置STM32芯片的晶振為:71MHZ

image-20220524155200053

3.3 開始仿真

image-20220524155229691image-20220524155252228image-20220524155723214

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Proteus
    +關注

    關注

    76

    文章

    1688

    瀏覽量

    105784
  • STM32
    +關注

    關注

    2247

    文章

    10691

    瀏覽量

    349899
  • DHT11
    +關注

    關注

    19

    文章

    265

    瀏覽量

    57284
收藏 人收藏

    評論

    相關推薦

    DHT11數字溫濕度傳感器產品手冊

    電子發燒友網站提供《DHT11數字溫濕度傳感器產品手冊.pdf》資料免費下載
    發表于 06-12 17:09 ?2次下載

    基于51單片機的SHT11溫濕度監測系統,LCD1602顯示,上下限按鍵設置

    設計要求 1.設計一套基于51單片機的溫濕度Proteus仿真監控系統; 2.采用高精度的SHT11溫濕度傳感器模塊; 3.LCD液晶實時顯
    發表于 03-26 17:44

    【原創】DHT11傳感器溫濕度監測系統畢設,論文、代碼、原理圖和仿真介紹

    溫濕度傳感器元件,沒有DHT11傳感器元件。Proteus8版本經過升級更新后,元件庫已添加了DHT11傳感器元件。 因此,本設計采用Proteus
    發表于 03-13 00:53

    【先楫HPM5361EVK開發板試用體驗】溫濕度傳感器DHT11實踐

    開發環境: IDE:RT-Thread Studio 2.2.7 開發板:HPM5300EVK 1 理論分析 1.1 DHT11介紹 DHT11 數字溫濕度傳感器是一款含有已校準數字信號輸出的
    發表于 01-03 23:46

    【LuckFox Pico 開發板免費試用】5.內核驅動溫濕度傳感器 DHT11

    前期寫好的驅動,我這篇帖子也是基于此項目寫的。 1. DHT11 簡介 DHT11數字溫濕度傳感器是一款含有已校準數字信號輸出的溫濕度復合傳感器。它應用專用的數字模塊采集技術和
    發表于 11-06 15:43

    Arduino篇—自制溫濕度測量儀

    DHT11數字溫濕度傳感器:DHT11數字溫濕度傳感器是一款含有已校準數字信號輸出的溫濕度復合傳感器
    的頭像 發表于 11-02 10:16 ?982次閱讀
    Arduino篇—自制<b class='flag-5'>溫濕度</b>測量儀

    基于51單片機DTH11溫濕度測量儀protues仿真設計

    單片機系統選擇使用AT89C51,溫度傳感器采用DHT11,將溫濕度傳感器DHT11采集到的溫度及濕度值數據顯示在LCD顯示器上。
    的頭像 發表于 10-29 17:47 ?709次閱讀
    基于51單片機DTH<b class='flag-5'>11</b><b class='flag-5'>溫濕度</b>測量儀protues<b class='flag-5'>仿真</b>設計

    使用XR806芯片驅動一下DHT11溫濕度傳感器

    參與全志在線與極術社區聯合舉辦的開發板試用活動,收到寄來的全志XR806開發板,之前用過很多全志的SOC芯片,但是像這種無線芯片還是第一次用。這次打算使用XR806芯片驅動一下DHT11溫濕度傳感器。
    發表于 10-13 17:28 ?357次閱讀
    使用XR806芯片驅動一下<b class='flag-5'>DHT11</b><b class='flag-5'>溫濕度</b>傳感器

    DHT11數字溫濕度傳感器主要參數

    一.DHT11介紹 DHT11 數字溫濕度傳感器是一款含有已校準數字信號輸出的溫濕度復合傳感器,采用專用的數字模塊采集技術和溫濕度傳感技術,
    的頭像 發表于 09-11 11:17 ?1.1w次閱讀
    <b class='flag-5'>DHT11</b>數字<b class='flag-5'>溫濕度</b>傳感器主要參數

    基于STM32DHT11溫濕度數據采集仿真設計

    通過STM32采集DHT11溫度傳感器的數據,將溫濕度信息顯示在LCD顯示屏上及虛擬串口上。
    的頭像 發表于 09-01 09:32 ?1318次閱讀
    基于<b class='flag-5'>STM32</b>的<b class='flag-5'>DHT11</b><b class='flag-5'>溫濕度</b>數據采集<b class='flag-5'>仿真</b>設計

    基于STM32大棚DHT11溫濕度監測protues仿真設計

    基于?STM32大棚DHT11溫濕度監測protues仿真設計
    的頭像 發表于 08-31 14:51 ?1324次閱讀
    基于<b class='flag-5'>STM32</b>大棚<b class='flag-5'>DHT11</b><b class='flag-5'>溫濕度</b>監測protues<b class='flag-5'>仿真</b>設計

    立創·梁山派GD32F4】-DHT11溫濕度傳感器模塊移植過程

    詳情請跳轉:https://lceda001.feishu.cn/wiki/JNvYwEU5SiGldFkNcxncYXhZnZc DHT11數字溫濕度傳感器是一款含有已校準數字信號輸出的溫濕度復合
    發表于 08-30 15:15

    基于51單片機的DHT11溫濕度灰塵煤氣檢測1602液晶顯示設計

    本資源內容概要: 這是基于51單片機的DHT11溫濕度灰塵煤氣檢測1602液晶顯示設計包含了 C語言程序源代碼(keil軟件打開) 。 本資源適合人群: 單片機愛好者、電子類專業學生、電子diy
    發表于 07-26 18:27 ?3次下載

    STM32單片機學習筆記(2):DHT11溫濕度傳感器

    利用CubMX生成基于32單片機的HAl庫工程,然后編寫程序在proteus仿真驗證。本項目最適合沒有開發板的同學學習,零成本利用仿真軟件
    發表于 07-18 16:39 ?975次閱讀
    <b class='flag-5'>STM32</b>單片機學習筆記(2):<b class='flag-5'>DHT11</b><b class='flag-5'>溫濕度</b>傳感器

    Openwrt開發指南 第28章 DHT11 溫濕度傳感器

    下圖是我們溫度傳感器的接入引腳,3.3V 供電,io 口接 P13 的 GP0( GPIO0 的簡稱 )。DHT11數字溫濕度傳感器 是一款含有已校準數字信號輸出的溫濕度復合傳感器,它應用專用的數字
    的頭像 發表于 07-15 16:18 ?1127次閱讀
    Openwrt開發指南 第28章 <b class='flag-5'>DHT11</b> <b class='flag-5'>溫濕度</b>傳感器
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>