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