物联网应用入门--利用虚拟硬件模拟土壤湿度传感器应用编写
本文為微軟開源課程IoT-For-Beginners翻譯,略有改動,首發(fā)于個人博客
探測土壤濕度
Sketchnote by Nitya Narasimhan. Click the image for a larger version.
閱讀前小測驗
Pre-lecture quiz
介紹
在上一課中,我們研究了測量一個環(huán)境屬性并利用它來預測植物的生長。溫度是可以控制的,但這樣做很昂貴,需要控制環(huán)境。對植物來說,最容易控制的環(huán)境屬性是水—從大規(guī)模的灌溉系統(tǒng)到拿著澆水壺澆花園的年輕孩子,每天都在控制水。
在這節(jié)課中,我們將介紹:
-
土壤濕度
-
傳感器如何與IOT設備通信
-
測量土壤濕度
-
傳感器校準
土壤濕度
植物需要水來生長。它們在整個植物中吸收水分,其中大部分由根系吸收。水被植物用來做三件事:
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳
-
光合作用—植物與水、二氧化碳和光產(chǎn)生化學反應,產(chǎn)生碳水化合物和氧氣。
-
透氣—植物利用水將空氣中的二氧化碳通過葉片中的孔隙擴散到植物體內(nèi)。這一過程也將養(yǎng)分帶到植物周圍,并冷卻植物,類似于人類出汗的方式。
-
結(jié)構(gòu)–植物也需要水來維持其結(jié)構(gòu)–它們90%是水(而人類只有60%),這些水可以保持細胞的剛性。如果植物沒有足夠的水,它就會枯萎并最終死亡。
? 做一些研究:有多少水是通過蒸騰作用流失的?
根系從植物生長的土壤中的水分提供水分。土壤中的水太少,植物無法吸收足夠的水來生長,水太多,根部無法吸收足夠的功能所需的氧氣。這導致根部死亡,植物無法獲得足夠的營養(yǎng)物質(zhì)來生存。
對于農(nóng)民來說,要想獲得最佳的植物生長,土壤需要不太濕,也不能太干。物聯(lián)網(wǎng)設備可以通過測量土壤濕度來幫助解決這個問題,讓農(nóng)民只在需要時澆水。
測量土壤濕度的方式
有一系列不同類型的傳感器,你可以用來測量土壤濕度:
-
電阻式 - 電阻式傳感器有兩個進入土壤的探頭。電流被發(fā)送到一個探頭,并被另一個探頭接收。然后,傳感器測量土壤的電阻–測量電流在第二個探頭處下降的程度。水是電的良好導體,所以土壤的含水量越高,電阻就越低。
💁 你可以用兩塊金屬,如釘子,相隔幾厘米,建立一個電阻式土壤濕度傳感器,用萬用表測量它們之間的電阻。
-
電容式 - 電容式濕度傳感器測量的是可儲存在正負電板上的電荷量,或電容。土壤的電容隨著濕度的變化而變化,這可以轉(zhuǎn)化為物聯(lián)網(wǎng)設備所能測量的電壓。土壤越濕,出來的電壓就越低。
這些都是模擬傳感器,返回一個電壓來指示土壤濕度。那么,這個電壓是如何進入你的代碼的呢?在進一步了解這些傳感器之前,讓我們看看傳感器和執(zhí)行器如何與物聯(lián)網(wǎng)設備進行通信。
傳感器如何與物聯(lián)網(wǎng)設備通信
到目前為止,在這些課程中,你已經(jīng)了解了一些傳感器和執(zhí)行器,如果你一直在做物理硬件實驗,這些傳感器和執(zhí)行器已經(jīng)與你的物聯(lián)網(wǎng)開發(fā)工具包進行了通信。但這種通信是如何進行的?來自土壤濕度傳感器的電阻測量值如何變成一個你可以從代碼中使用的數(shù)字?
要與大多數(shù)傳感器和執(zhí)行器進行通信,你需要一些硬件和通信協(xié)議–這是一種定義明確的數(shù)據(jù)發(fā)送和接收方式。以電容式土壤濕度傳感器為例。
硬件提供了發(fā)送數(shù)據(jù)的物理連接,不同的通信協(xié)議確保了數(shù)據(jù)以正確的方式發(fā)送或接收,從而使其能夠被解釋。
-
這個傳感器是如何連接到物聯(lián)網(wǎng)設備的?
-
如果它測量的電壓是一個模擬信號,它將需要一個ADC來創(chuàng)建一個數(shù)字表示的值,這個值作為一個交變的電壓來發(fā)送0和1–但每個比特的發(fā)送時間是多長?
-
如果傳感器返回一個數(shù)字值,那將是一個0和1的數(shù)據(jù)流,同樣,每個比特的發(fā)送時間是多長?
-
如果電壓在0.1s內(nèi)處于高位,那是一個1比特,還是兩個連續(xù)的1比特,還是10個?
-
數(shù)字在什么時候開始?00001101是25,還是前5位是前一個值的結(jié)束?
通用輸入輸出(GPIO)引腳
GPIO是一組引腳,你可以用它來連接硬件到你的物聯(lián)網(wǎng)設備,通常在物聯(lián)網(wǎng)開發(fā)工具包上有,如Raspberry Pi或Wio Terminal。你可以通過GPIO引腳使用本節(jié)中涉及的各種通信協(xié)議。一些GPIO引腳提供電壓,通常是3.3V或5V,一些引腳為地,其他引腳可以通過編程設置為發(fā)送電壓(輸出)或接收電壓(輸入)。
💁 一個電路需要通過你所使用的任何電路將電壓連接到地。你可以把電壓看作是電池的正極(+V),把地看作是負極(-V)。
當你只關心開或關的值時,你可以直接使用GPIO引腳與一些數(shù)字傳感器和執(zhí)行器–開指的是高,關是指低。一些例子如下:
- 按鈕。你可以在一個5V引腳和一個設置為輸入的引腳之間連接一個按鈕。當你按下按鈕時,它在5V引腳之間完成了一個電路,通過按鈕到輸入引腳。從代碼中你可以讀取輸入針腳的電壓,如果它是高電平(5V),那么按鈕就被按下了,如果它是低電平(0V),那么按鈕就沒有被按下。記住,實際的電壓本身并沒有被讀取,相反,你得到的是一個1或0的數(shù)字信號,這取決于電壓是否高于閾值。
- LED。你可以在一個輸出引腳和一個接地引腳之間連接一個LED(使用一個電阻,否則你會燒LED)。在代碼中,你可以將輸出引腳設置為高電平,它將發(fā)送3.3V,形成一個從3.3V引腳通過LED到接地引腳的電路。這將點亮LED。
對于更高級的傳感器,你可以使用GPIO引腳直接與數(shù)字傳感器和執(zhí)行器發(fā)送和接收數(shù)字數(shù)據(jù),或通過帶有ADC和DAC的控制器板與模擬傳感器和執(zhí)行器對話。
💁 如果你使用Raspberry Pi做這些實驗,Grove Base Hat有硬件可以將模擬傳感器信號轉(zhuǎn)換成數(shù)字信號,通過GPIO發(fā)送。
? 如果你有一個帶有GPIO引腳的物聯(lián)網(wǎng)設備,找到這些引腳,并找到一個圖表,說明哪些引腳是電壓、接地或可編程的。
模擬引腳
一些設備,如Arduino設備,提供模擬引腳。這些與GPIO引腳相同,但與之相反的是,它們不是只支持數(shù)字信號,而是有一個ADC將電壓范圍轉(zhuǎn)換為數(shù)值。通常ADC的分辨率為10位,這意味著它將電壓轉(zhuǎn)換為0-1023的數(shù)值。
例如,在一個3.3V的板子上,如果傳感器返回的是3.3V,返回的值將是1,023。如果返回的電壓是1.65V,返回的值將是511。
💁 回到nightlight—第3課,光照傳感器返回一個0-1,023的數(shù)值。如果你使用的是Wio終端,傳感器被連接到一個模擬引腳。如果你使用的是Raspberry Pi,那么傳感器被連接到基座上的一個模擬引腳上,該引腳有一個集成的ADC,可以通過GPIO引腳進行通信。虛擬設備被設置為發(fā)送一個0-1,023的值,以模擬一個模擬引腳。
土壤濕度傳感器依賴于電壓,因此將使用模擬引腳,并給出0-1,023的數(shù)值。
Inter Integrated Circuit (I2C)
I2C,發(fā)音為I-squared-C,是一個多控制器、多外設協(xié)議,任何連接的設備都可以作為控制器或外設通過I2C總線(傳輸數(shù)據(jù)的通信系統(tǒng)名稱)進行通信。數(shù)據(jù)以尋址數(shù)據(jù)包的形式發(fā)送,每個數(shù)據(jù)包都包含它所要連接的設備的地址。
💁 這種模式曾經(jīng)被稱為主/從模式,但由于與奴隸制有關,這個術語正在被放棄。開源硬件協(xié)會已經(jīng)采用了控制器/外設,但你可能仍然會看到對舊術語的引用。
設備有一個地址,當它們連接到I2C總線時使用,通常在設備上硬編碼。例如,Seeed公司的每種格羅夫傳感器都有相同的地址,所以所有的光傳感器都有相同的地址,所有的按鈕都有相同的地址,與光傳感器地址不同。有些設備有辦法改變地址,通過改變跳線設置或?qū)⒁_焊接在一起。
I2C有一條由2條主線組成的總線,同時還有2條電源線:
| SDA | Serial Data | 這條線用于在設備之間發(fā)送數(shù)據(jù)。 |
| SCL | Serial Clock | 這條線以控制器設定的速率發(fā)送一個時鐘信號。 |
| VCC | Voltage common collector | 器件的電源。這條線與SDA和SCL線相連,通過一個上拉電阻為它們提供電源,當沒有設備是控制器時,該信號將被關閉。 |
| GND | Ground | 這為電路提供了一個公共地線。 |
為了發(fā)送數(shù)據(jù),一個設備將發(fā)出一個啟動條件,表明它已準備好發(fā)送數(shù)據(jù)。然后,它將成為控制器。然后,控制器發(fā)送它想與之通信的設備的地址,以及它是否想讀取或?qū)懭霐?shù)據(jù)。數(shù)據(jù)傳輸完畢后,控制器發(fā)送一個停止條件,表示它已經(jīng)完成。此后,另一個設備可以成為控制器,并發(fā)送或接收數(shù)據(jù)。
I2C有速度限制,有3種不同的模式以固定速度運行。最快的是高速模式,最高速度為3.4Mbps(兆位/秒),盡管很少有設備支持這個速度。例如,Raspberry Pi被限制在400Kbps(每秒千比特)的快速模式下。標準模式以100Kbps的速度運行。
💁 如果你使用帶有Grove Base hat的Raspberry Pi作為你的物聯(lián)網(wǎng)硬件,你會看到板子上有許多I2C插座,你可以用來與I2C傳感器通信。模擬的Grove傳感器也使用I2C與ADC,將模擬值作為數(shù)字數(shù)據(jù)發(fā)送,所以你使用的光傳感器模擬了一個模擬引腳,其值通過I2C發(fā)送,因為Raspberry Pi只支持數(shù)字引腳。
通用異步接收器-發(fā)射器 (UART)
UART涉及物理電路,允許兩個設備進行通信。每個設備有2個通信引腳–發(fā)送(Tx)和接收(Rx),第一個設備的Tx引腳與第二個設備的Rx引腳相連,第二個設備的Tx引腳與第一個設備的Rx引腳相連。這使得數(shù)據(jù)可以在兩個方向上發(fā)送。
-
設備1從它的Tx引腳傳輸數(shù)據(jù),設備2從它的Rx引腳接收。
-
設備1在其Rx引腳上接收數(shù)據(jù),該數(shù)據(jù)由設備2從其Tx引腳傳輸。
🎓 數(shù)據(jù)是一個比特一個比特地發(fā)送,這就是所謂的串行通信。大多數(shù)操作系統(tǒng)和微控制器都有串行端口,也就是可以發(fā)送和接收串行數(shù)據(jù)的連接,可以供你的代碼使用。
UART設備有一個波特率(也稱為符號率),即以每秒比特為單位發(fā)送和接收數(shù)據(jù)的速度。一個常見的波特率是9600,意味著每秒發(fā)送9600比特(0和1)的數(shù)據(jù)。
UART使用起始位和停止位–也就是說,它發(fā)送一個起始位以表明它要發(fā)送一個字節(jié)(8位)的數(shù)據(jù),然后在發(fā)送完8位后發(fā)送一個停止位。
UART的速度取決于硬件,但即使是最快的實現(xiàn)也不超過6.5 Mbps(兆位/秒,或每秒發(fā)送數(shù)百萬位,0或1)。
你可以通過GPIO引腳使用UART–你可以將一個引腳設置為Tx,另一個設置為Rx,然后將這些引腳連接到另一個設備。
💁 如果你使用帶有Grove Base hat的Raspberry Pi作為你的物聯(lián)網(wǎng)硬件,你將能夠看到板子上有一個UART插座,你可以用它與使用UART協(xié)議的傳感器進行通信。
串行外設接口 (SPI)
SPI是為短距離通信而設計的,例如在微控制器上與閃存等存儲設備對話。它基于一個控制器/外設模型,由一個控制器(通常是物聯(lián)網(wǎng)設備的處理器)與多個外設互動。控制器通過選擇一個外設并發(fā)送或請求數(shù)據(jù)來控制一切。
💁 像I2C一樣,控制器和外設這兩個術語是最近才改變的,所以你可能會看到仍在使用舊的術語。
SPI控制器使用3根線,同時每個外設使用1根額外的線。外圍設備使用4根線。這些線是:
| COPI | Controller Output, Peripheral Input | 這條線用于從控制器向外圍設備發(fā)送數(shù)據(jù)。 |
| CIPO | Controller Input, peripheral Output | 這條線用于將數(shù)據(jù)從外圍設備發(fā)送到控制器。 |
| SCLK | Serial Clock | 這條線以控制器設定的速率發(fā)送一個時鐘信號。 |
| CS | Chip Select | 控制器有多條線,每個外設一條,每條線都與相應外設上的CS線相連。 |
CS線用于一次激活一個外設,通過COPI和CIPO線進行通信。當控制器需要改變外設時,它停用連接到當前活動外設的CS線,然后激活連接到下一個要通信的外設的線。
SPI是全雙工的,這意味著控制器可以使用COPI和CIPO線從同一個外設同時發(fā)送和接收數(shù)據(jù)。SPI使用SCLK線上的時鐘信號來保持設備的同步,因此與直接通過UART發(fā)送不同,它不需要啟動和停止位。
SPI沒有明確的速度限制,其實施方案通常能夠每秒傳輸多兆字節(jié)的數(shù)據(jù)。
物聯(lián)網(wǎng)開發(fā)工具包通常支持通過一些GPIO引腳進行SPI。例如,在Raspberry Pi上,你可以使用GPIO引腳19、21、23、24和26進行SPI。
無線(Wireless)
一些傳感器可以通過標準的無線協(xié)議進行通信,如藍牙(主要是藍牙低功耗,或BLE)、LoRaWAN(一種長距離低功耗網(wǎng)絡協(xié)議),或WiFi。這些都允許沒有物理連接到物聯(lián)網(wǎng)設備的遠程傳感器。
一個例子是商業(yè)土壤濕度傳感器。這些傳感器將測量田地里的土壤濕度,然后通過LoRaWan將數(shù)據(jù)發(fā)送到一個中心設備,該設備將處理數(shù)據(jù)或通過互聯(lián)網(wǎng)發(fā)送數(shù)據(jù)。這使得傳感器可以遠離管理數(shù)據(jù)的物聯(lián)網(wǎng)設備,減少功耗和對大型WiFi網(wǎng)絡或長電纜的需求。
BLE在先進的傳感器中很受歡迎,如健身追蹤器在手腕上工作。這些結(jié)合了多個傳感器,并通過BLE將傳感器數(shù)據(jù)發(fā)送到你手機形式的物聯(lián)網(wǎng)設備上。
🐝 Zigbee這個名字是指蜜蜂返回蜂巢后的搖擺舞。
?你的身上、家里或?qū)W校里有任何藍牙傳感器嗎?這些可能包括溫度傳感器、占用傳感器、設備追蹤器和健身設備。
商業(yè)設備連接的一種流行方式是Zigbee。Zigbee使用WiFi在設備之間形成網(wǎng)狀網(wǎng)絡,每個設備盡可能多地連接到附近的設備,形成像蜘蛛網(wǎng)一樣的大量連接。當一個設備想向互聯(lián)網(wǎng)發(fā)送信息時,它可以將信息發(fā)送給最近的設備,然后由這些設備轉(zhuǎn)發(fā)給附近的其他設備,以此類推,直到信息到達協(xié)調(diào)器,可以發(fā)送到互聯(lián)網(wǎng)上。
測量土壤濕度
你可以使用土壤濕度傳感器、物聯(lián)網(wǎng)設備和家庭植物或附近的一片土壤來測量土壤中的濕度水平。
任務—測量土壤濕度
通過相關指南,使用你的物聯(lián)網(wǎng)設備測量土壤濕度。
-
Arduino - Wio Terminal
-
Single-board computer - Raspberry Pi
-
Single-board computer - Virtual device
傳感器校準
傳感器主要依靠測量電阻或電容等電氣特性。
🎓 電阻,以歐姆(Ω)為單位,是指電流通過某物時有多少阻力。當電壓施加在一種材料上時,通過它的電流大小取決于該材料的電阻。你可以在維基百科的電阻頁面上內(nèi)容。
🎓 電容,以法拉(F)為單位,是指一個元件或電路收集和儲存電能的能力。你可以在維基百科的電容頁面上關于電容的信息。
這些測量值并不總是有用的–想象一下,一個溫度傳感器給你的測量值是22.5KΩ! 相反,測量的數(shù)值需要通過校準轉(zhuǎn)換成有用的單位–也就是將測量的數(shù)值與被測量的數(shù)量相匹配,以便將新的測量值轉(zhuǎn)換為正確的單位。
一些傳感器是預先校準的。例如,你在上一課中使用的溫度傳感器已經(jīng)被校準,因此它可以返回以℃為單位的溫度測量。在工廠里,創(chuàng)建的第一個傳感器將被暴露在已知的溫度范圍內(nèi),并測量其電阻。然后,這將被用來建立一個計算,可以將以Ω(電阻單位)為單位的測量值轉(zhuǎn)換為℃。
💁 根據(jù)溫度計算電阻的公式被稱為Steinhart-Hart方程。
土壤濕度傳感器校準
土壤水分是用重量或體積含水量測量的。
-
重量法是指測量單位重量的土壤中的水的重量,即每公斤干土中的水的數(shù)量。
-
體積法是指在單位體積的土壤中所測量的水的體積,即每立方米干土的水的數(shù)量。
對于美國人來說,由于單位的一致性,這些可以用磅而不是公斤,或用立方英尺而不是立方米來衡量。
土壤水分傳感器測量電阻或電容–這不僅因土壤水分而異,也因土壤類型而異,因為土壤中的成分可以改變其電氣特性。理想情況下,應該對傳感器進行校準–即從傳感器上獲取讀數(shù),并將其與使用更科學的方法發(fā)現(xiàn)的測量結(jié)果進行比較。例如,實驗室可以通過每年在特定田地中采集幾次樣本來計算土壤濕度,這些數(shù)字用于校準傳感器,將傳感器的讀數(shù)與土壤濕度的重量比對。
上圖顯示了如何校準一個傳感器。采集土壤樣品的電壓,然后在實驗室中通過比較濕重和干重(通過測量濕重,然后在烘箱中干燥并測量干重)進行測量。一旦采集了一些讀數(shù),就可以將其繪制在圖表上,并在這些點上擬合出一條線。然后,這條直線可以用來將物聯(lián)網(wǎng)設備采集的土壤水分傳感器讀數(shù)轉(zhuǎn)換成實際的土壤水分測量值。
💁 對于電阻式土壤濕度傳感器,電壓隨著土壤濕度的增加而增加。對于電容式土壤濕度傳感器,電壓隨著土壤濕度的增加而降低,所以這些圖表會向下傾斜,而不是向上傾斜。
上圖顯示的是土壤濕度傳感器的電壓讀數(shù),沿著這個讀數(shù)到圖上的線,可以計算出實際的土壤濕度。
這種方法意味著農(nóng)民只需要對一塊田地進行一些實驗室測量,然后他們就可以使用物聯(lián)網(wǎng)設備來測量土壤濕度–大大加快了測量的時間。
🚀 挑戰(zhàn)
電阻式和電容式土壤濕度傳感器有一些區(qū)別。這些差異是什么,哪種類型(如果有的話)最適合農(nóng)民使用?這個答案在發(fā)展中國家和發(fā)達國家之間是否有變化?
閱讀后小測驗
Post-lecture quiz
復習與自學
閱讀有關傳感器和執(zhí)行器所使用的硬件和協(xié)議。
-
GPIO Wikipedia page
-
UART Wikipedia page
-
SPI Wikipedia page
-
I2C Wikipedia page
-
Zigbee Wikipedia page
任務
校準你的傳感器
測量土壤濕度—使用虛擬IOT硬件
Virtual Hardware
虛擬物聯(lián)網(wǎng)設備將使用一個模擬的格羅夫電容式土壤濕度傳感器。這使本實驗室與使用Raspberry Pi與物理Grove電容式土壤濕度傳感器的情況相同。
在物理物聯(lián)網(wǎng)設備中,土壤濕度傳感器將是一個電容式傳感器,通過檢測土壤的電容來測量土壤濕度,這一特性隨著土壤濕度的變化而變化。隨著土壤濕度的增加,電壓會下降。
這是一個模擬傳感器,所以使用一個模擬的10位ADC來報告一個1-1023的數(shù)值。
將土壤濕度傳感器添加到CounterFit中
要使用虛擬土壤濕度傳感器,您需要將其添加到CounterFit應用程序中
任務—向CounterFit應用中添加土壤濕度傳感器
向CounterFit應用中添加土壤濕度傳感器
在你的電腦上創(chuàng)建一個新的Python應用程序,文件夾名為soil-moisture-sensor,有一個名為app.py的文件和一個Python虛擬環(huán)境,并添加CounterFit pip軟件包。
?? 你可以參考the instructions for creating and setting up a CounterFit Python project in lesson 1 if needed.
確保CounterFit網(wǎng)絡應用程序正在運行
創(chuàng)建一個土壤濕度傳感器:
在傳感器窗格中的創(chuàng)建傳感器框中,下拉傳感器類型框,選擇土壤濕度。
將單位設置為NoUnits
確保引腳被設置為0
選擇 "添加 "按鈕,在針腳0上創(chuàng)建土壤水分傳感器。
土壤濕度傳感器將被創(chuàng)建并出現(xiàn)在傳感器列表中。
對土壤濕度傳感器應用程序進行編程
現(xiàn)在可以使用CounterFit傳感器對土壤水分傳感器應用程序進行編程。
任務 - 編寫土壤濕度傳感器應用
編寫土壤濕度傳感器應用。
確保soil-moisture-sensor 文件在 VS Code已打開
打開app.py文件
在app.py的頂部添加以下代碼,將應用程序連接到CounterFit。
from counterfit_connection import CounterFitConnection··· CounterFitConnection.init('127.0.0.1', 5000)在這下面添加以下代碼,以創(chuàng)建ADC類的一個實例:
adc = ADC()添加一個無限循環(huán),從這個ADC的0號引腳讀取數(shù)據(jù),并將結(jié)果寫到控制臺。然后這個循環(huán)可以在兩次讀取之間休眠10秒。
while True:soil_moisture = adc.read(0)print("Soil moisture:", soil_moisture)time.sleep(10)在CounterFit應用程序中,改變將由該應用程序讀取的土壤水分傳感器的值。你可以通過以下兩種方式之一來做這件事。
-
在土壤濕度傳感器的值框中輸入一個數(shù)字,然后選擇設置按鈕。你輸入的數(shù)字將是傳感器返回的值。
-
勾選隨機復選框,并輸入一個最小和最大值,然后選擇設置按鈕。每次傳感器讀取數(shù)值時,它將讀取Min和Max之間的一個隨機數(shù)字。
運行Python應用程序。你會看到土壤濕度的測量值被寫入控制臺。改變數(shù)值或隨機設置以看到數(shù)值的變化。
(.venv) ? soil-moisture-sensor $ python app.py Soil moisture: 615 Soil moisture: 612 Soil moisture: 498 Soil moisture: 493 Soil moisture: 490 Soil Moisture: 388💁 app.py代碼如下:
from counterfit_connection import CounterFitConnection CounterFitConnection.init('127.0.0.1', 5000)import time from counterfit_shims_grove.adc import ADCadc = ADC()while True:soil_moisture = adc.read(0)print("Soil moisture:", soil_moisture)time.sleep(10)😀 你的土壤濕度傳感器項目已經(jīng)成功了
總結(jié)
以上是生活随笔為你收集整理的物联网应用入门--利用虚拟硬件模拟土壤湿度传感器应用编写的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 鼠标手势插件--smartUp
- 下一篇: 如何将图片转换成excel?