第1步:安裝Arduino IDE,ESP8266開發(fā)板和庫以及你的ThingSpeak帳戶
安裝Arduino IDE和Nodemcu
如果您從未安裝過IDE Arduino,請閱讀鏈接中的教程 - 如何安裝Arduino IDE - 您可以在其中找到完整的說明。
下一步,安裝Nodemcu板使用Magesh Jayakumar Instructables的本教程,這是非常完整的。如何安裝Nodemcu no Arduino IDE
安裝庫
創(chuàng)建ThingSpeak帳戶
要使用ThingSpeak(https://thingspeak.com/),您必須創(chuàng)建一個帳戶(對于一定數(shù)量的互動仍然是免費的),您可以在其中保存測量的數(shù)據(jù)您的風(fēng)速計和監(jiān)控家中的風(fēng)況,甚至通過手機。通過使用ThingSpeak,您可以讓公眾訪問您收集的數(shù)據(jù)給任何感興趣的人。這是ThingSpeak的一個很好的優(yōu)勢。進入主頁并按照步驟創(chuàng)建帳戶。
創(chuàng)建帳戶后,請輸入本教程 - ThingSpeak入門 - 創(chuàng)建頻道。這很好解釋。總之,您必須創(chuàng)建一個存儲數(shù)據(jù)的通道。此通道具有ID和Key API,每次要記錄數(shù)據(jù)時都應(yīng)在草圖中引用。 ThingSpeak會將所有數(shù)據(jù)存儲在銀行中,并在您每次訪問帳戶時以您配置的方式顯示這些數(shù)據(jù)。
第2步:探索草圖
流程圖
在圖表中,您可以了解草圖的通量圖。當(dāng)您喚醒(鏈接)Nodemcu時,它將連接到您已配置其參數(shù)的Wi-Fi網(wǎng)絡(luò),并開始計算1分鐘的時間來執(zhí)行測量。
首先,它將計算風(fēng)速計旋轉(zhuǎn)25秒,計算線速度并讀取風(fēng)的方向。結(jié)果顯示在OLED上。再次執(zhí)行相同的步驟,對于第二次讀取,它將傳輸?shù)絋hingSpeak。
然后Nodemcu休眠15分鐘以節(jié)省電池。當(dāng)我使用小型太陽能電池板時,我必須這樣做。如果您使用5V電源,您可以修改程序,使其無法休眠并繼續(xù)測量數(shù)據(jù)。
程序結(jié)構(gòu)
In圖表中,您可以看到草圖的結(jié)構(gòu)。
Anemometer_Instructables
這是加載庫的主程序,啟動變量,控制附加中斷,調(diào)用所有功能,計算風(fēng)速,確定其方向并使其進入休眠狀態(tài)。
連接WiFi并將數(shù)據(jù)發(fā)送到ThingSpeak。
credentials.h
您的WiFi網(wǎng)絡(luò)的密鑰以及ThingSpeak中您的帳戶的標(biāo)識符。您可以在此處更改密鑰ID和API。
definitions.h
它包含所有內(nèi)容程序的變量。您可以在此處更改閱讀時間或nodemcu應(yīng)該睡多長時間。
功能
它包含組合參數(shù)和讀取多路復(fù)用器的功能以及讀取風(fēng)速計旋轉(zhuǎn)的功能。
oledDisplay
顯示風(fēng)速和風(fēng)向的屏幕結(jié)果。
第3步:關(guān)于。..。..的解釋
附加中斷
風(fēng)速計的旋轉(zhuǎn)是通過Nodemcu的GPIO 12(引腳D6)中的 attachInterrupt()(以及 detachInterrupt())函數(shù)來測量的(它具有D0-D8引腳上的中斷功能。
中斷是導(dǎo)致微控制器停止執(zhí)行正在執(zhí)行的任務(wù)的事件或條件,暫時在另一個任務(wù)中工作回到初始任務(wù)。
您可以在Arduino教程的鏈接中閱讀該函數(shù)的詳細(xì)信息。請參閱attachInterrupt()。
語法:attachInterrupt(引腳,回調(diào)函數(shù),中斷類型/模式);
引腳 = D6
回調(diào)函數(shù) = rpm_anemometer - 計算變量上的每個脈沖。
中斷類型/模式 = RISING - 當(dāng)引腳從低電平變?yōu)楦唠娖綍r中斷。
在霍爾傳感器中的磁電機產(chǎn)生的每個脈沖處,引腳從低電平變?yōu)楦唠娖健T诮⒌?5秒期間,計數(shù)功能被激活并且在變量中求和脈沖。一旦時間到期,計數(shù)器將斷開連接( detachInterrupt())并且例程在斷開連接時計算速度。
計算風(fēng)速
一旦確定了風(fēng)速計在25秒內(nèi)給出了多少次旋轉(zhuǎn),我們就會計算速度。
RADIO是從中心軸測量的。風(fēng)速計到乒乓球的尖端。你必須非常好地測量你的 - (見圖10厘米)。
RPS(每秒旋轉(zhuǎn)數(shù))=旋轉(zhuǎn)/25秒
RPM(每分鐘旋轉(zhuǎn)數(shù))= RPS * 60
OMEGA(角速度 - 每秒弧度) )= 2 * PI * RPS
Linear_Velocity(米/秒)= OMEGA * RADIO
Linear_Velocity_kmh(每小時Km)= 3.6 * Linear_Velocity這是將要發(fā)送的內(nèi)容到ThingSpeak。
讀取風(fēng)向標(biāo)
讀取風(fēng)向標(biāo)的位置以確定程序發(fā)送的風(fēng)向具有參數(shù) A,B,C ( muxABC矩陣)的所有組合的多路復(fù)用器的低信號和高信號,并等待接收到引腳 A0 結(jié)果可以是 0 和 3.3V 之間的任何電壓。組合如圖所示。
例如,當(dāng) C = 0(低),B = 0(低),A = 0(低)時,多路復(fù)用器給出它引腳 0 的數(shù)據(jù),并將信號發(fā)送到Nodemcu讀取的 A0 ;如果 C = 0(低),B = 0(低),A = 1(高)多路復(fù)用器將向您發(fā)送引腳 1 的數(shù)據(jù),依此類推,直到完成8個通道的讀取。
當(dāng)信號為模擬信號時,程序轉(zhuǎn)換為數(shù)字(0或1),如果電壓小于或等于1.3V,則信號為0;如果它大于1.3V,則信號為1.值1.3V是任意的,對我來說,它工作得非常好。總是存在小的電流泄漏,這可以保護沒有誤報。
這些數(shù)據(jù)存儲在矢量 val [8] 中,將與地址數(shù)組進行比較作為指南針。請參見圖中的矩陣。例如,如果接收的矢量是 [0,0,1,0,0,0,0,0,0] ,則它在矩陣中指示方向 E 和對應(yīng)于 90 度的角度;如果[ 0,0,0,0,0,0,1,1] 在矩陣中指示 WNW 地址并且對應(yīng)角度 292.5 度。 N 對應(yīng) [1,0,0,0,0,0,0,0,0] 和角度 0 度。
將發(fā)送給ThingSpeak的是什么,因為它只接受數(shù)字。
步驟4:通信
如何將數(shù)據(jù)發(fā)送到ThingSpeak
函數(shù) thingspeaksenddata() 負(fù)責(zé)發(fā)送數(shù)據(jù)。
ThingSpeak.setField(1,float(linear_velocity_kmh)) - 將速度數(shù)據(jù)發(fā)送到我頻道的field1
ThingSpeak.setField(2,float(wind_Direction_Angle)) - 將地址數(shù)據(jù)發(fā)送到我頻道的field2
ThingSpeak.writeFields(myChannelNumber,myWriteAPIKey) - 使用TS指示的書面 myWriteAPIKey API發(fā)送到我的頻道 myChannelNumber 。這些數(shù)據(jù)是在創(chuàng)建帳戶和頻道時由TS生成的。
在上面的圖片中,您可以看到ThingSpeak如何顯示收到的數(shù)據(jù)。
在此鏈接中,您可以訪問數(shù)據(jù)我的項目在ThingSpeak的公共頻道中。
第5步:主要變量
風(fēng)向標(biāo)參數(shù)
MUX_A D5 - mux pi A到Nodemcu引腳D5
MUX_B D4 - mux引腳B到Nodemcu引腳D4
MUX_C D3 - mux引腳C到Nodemcu引腳D3
READPIN 0 - NodeMcu上的模擬輸入= A0
NO_PINS 8 - 多路復(fù)用引腳數(shù)
val [NO_PINS] - 端口0到7 mux
wind_Direction_Angle - 風(fēng)向角
String windRose [16] = {“N”,“NNE”,“NE”,“ENE”,“E”,“ESE “,”SE“,”SSE“,”S“,”SSW“,”SW“,”WSW“,”W“,”WNW“,”NW“,”NNW“} - cardenals,抵押品和副抵押品
windAng [16] = {0,22.5,45,67.5,90,112.5,135,157.5,180,202.5,225,247.5,270,292.5,315,337.5} - 每個方向的角度
數(shù)字[16] [ NO_PINS] - 方向墊rix
muxABC [8] [3] - ABC mux組合
風(fēng)速計參數(shù)
rpmcount - 計算在規(guī)定時間內(nèi)風(fēng)速計完全旋轉(zhuǎn)的次數(shù)
timemeasure = 25.00 - 測量延遲時間(秒)
timetoSleep = 1 - Nodemcu喚醒時間(分鐘)
sleepTime = 15 - 在幾分鐘內(nèi)保持睡眠的時間
rpm,rps - 旋轉(zhuǎn)頻率(每分鐘旋轉(zhuǎn),每秒旋轉(zhuǎn))
radius - 米 - 長度的度量風(fēng)速計翼
linear_velocity - 線速度m/seg
linear_velocity_kmh - 線速度km/h
omega - 徑向速度rad/seg
您可以在下面找到完整的草圖。在計算機的Arduino文件夾上創(chuàng)建一個與主程序同名的新文件夾( Anemometer_Instructables )并將它們放在一起。
輸入wifi網(wǎng)絡(luò)的數(shù)據(jù)和Credentials.h中的ThingSpeak ID和API Writer Key并保存。上傳到Nodemcu就是這樣。
為了測試系統(tǒng)的運行,我建議使用一個好的旋轉(zhuǎn)風(fēng)扇。
要通過手機訪問數(shù)據(jù),請下載適用于IOS或Android的應(yīng)用程序名為 ThingView ,幸運的是,它仍然是免費的。
配置您的帳戶設(shè)置,無論您身在何處,您都可以隨時查看家鄉(xiāng)的風(fēng)況。
-
風(fēng)速計
+關(guān)注
關(guān)注
0文章
12瀏覽量
7180
發(fā)布評論請先 登錄
相關(guān)推薦
評論