您現在的位置是:首頁 > 垂釣
【零基礎】一起DIY智慧家居 篇四:homeassistant接入光線感測器和二氧化碳感測器
- 由 什麼值得買 發表于 垂釣
- 2022-11-05
兩根線感應器怎麼接線
作者:sonatasss
本文用兩個模組來演示HA透過ESPHOME接入I2C,UART裝置
本文還是以WROOM為例,針腳定義如圖
知識基礎
本部分看下就行,不理解也不影響使用
I2C、SPI、UART都是常見的低速板級通訊協議,目前主流的SoC都內建了這些通訊協議的控制器,同樣,各種感測器、Touch控制器、指紋模組、藍芽模組、WIFI模組也都相容這三種通訊方式的一種或幾種。
分別說下:
1。 I2C是兩根線,SDA(資料)和SCL(時鐘),也是一種同步傳輸協議。主機在傳送開始訊號之後,先發送7個位元的地址位和1個位元的讀寫位,每個從機有自己的I2C地址,當發現該條指令是發給自己的時候,拉低SDA線(即回覆ACK訊號),然後主機發送或接收資料,完成傳輸。傳輸完成之後,主機發送停止位,完成該次傳輸。
2。 UART一般由TXD、RXD、GND三根線組成,是一種非同步傳輸協議。無論是主機還是從機,均可以自由傳送資料,但是由於UART匯流排並沒有時鐘線,所以需要提前約定對應的波特率,這是一種很簡單的傳輸協議。
3。 SPI是四根線,分別是CS(片選)、MOSI(主發從收)、MISO(從發主收)、CLK(時鐘),是一種同步傳輸協議。主機送出CLK訊號,主機到從機的資料在MOSI線上傳輸,從機到主機的資料在MISO線上傳輸。在啟動傳輸之前,需要先拉低(一般是這樣,也有各別晶片是CS高有效)對應從機的CS管腳,在傳輸完成之後,再拉高CS管腳,從機的SPI Slave模組進入休眠。
I2C感測器接
I2C用BH1750環境光感測器做示例
接線
接線示意圖
實際接線圖
之前接好的溫溼度就不撤下來了
可以看到SCL是綠線接在33 ,SDA是白線接在25
程式碼
i2c首先設定匯流排
感測器SCL——主機板SCL
感測器SDA——主機板SDA
i2c:
#指定scl引腳
scl: 33
#指定sda引腳
sda: 25
#id。如果有多條i2c會用到
id: bus_a
之後在sensor:分支新增感測器即可
之前已經有一個溫溼度感測器了
新增之後程式碼是這樣的
#型號 bh1750
- platform: bh1750
#提交給HA的名稱
name: “BH1750 Illuminance”
#id,裝置聯動會用到
id: illuminance
#地址,廠商設定好的
address: 0x23
#每60秒採集上報一次資料
update_interval: 60s
之後參考篇3,儲存安裝即可
uart感測器
uart用SenseAir S8 二氧化碳感測器做示例
接線
由於模組是反向排針
就只能用杜邦線連線
官方文件介紹說要用4-5v供電
這裡就要從5v針腳另取電了
針腳定義和接線示意圖如下
RX綠色接在GPIO27
TX橙色接在GPIO26
程式碼
uart和i2c類似也要先設定匯流排
不過這裡要注意收發關係對應
感測器RX(接收)——主機板TX(傳送)
感測器TX(接收)——主機板RX(傳送)
波特率官方文件介紹SenseAir S8只支援9600
整體程式碼如下
#新增uart匯流排
uart:
#主機板接收針腳
rx_pin: 26
#主機板傳送針腳
tx_pin: 27
#波特率官方文件介紹SenseAir S8只支援9600 。
baud_rate: 9600
# #id。如果有多條uart會用到
id: uart_a
然後在sensor下面繼續新增程式碼即可
現在已經有3個感測器了
對應程式碼很簡單,就不註釋了
- platform: senseair
co2:
name: “SenseAir CO2 Value”
update_interval: 60s
OTA更新韌體後就可以正常採集資料了
最後附上配套影片