布雷瑟氣象站如何接入 WUNDERGROUND 和/或 APRS 系統(tǒng)
在市場中,您可以購買布雷瑟的氣象站,它們可以直接與“天氣地下地圖”連接,并將您當(dāng)?shù)氐沫h(huán)境數(shù)據(jù)發(fā)布給全世界。所以,如果您愿意的話,根本無需做任何工作。但實際上,據(jù)我所知,所有型號都可以用于我們的項目,比如我的這個(7 個接口):5 個接口、6 個接口、7 個接口和 8 個接口的型號。實際上,布雷瑟是否向“天氣地下地圖”發(fā)送數(shù)據(jù)的差異是由其室內(nèi)顯示單元決定的,因此這些型號的價格會更高。我喜歡在桌面上有一個顯示屏,所以我建議購買帶有顯示屏的布雷瑟產(chǎn)品,但如果您想節(jié)省費用,也可以只訂購室外傳感器單元,他們也以備件的形式出售。
由于我是一名業(yè)余無線電“老手”操作員,對電子學(xué)和自動化有著濃厚的興趣,所以很久以來我就一直希望能出現(xiàn)在 APRS 地圖上。您可能知道,APRS 世界不僅限于持有無線電執(zhí)照的人員,而是向所有可能加入公民氣象觀測計劃的人開放的。
自動數(shù)據(jù)報告系統(tǒng)(APRS)是一種數(shù)字通信協(xié)議,由獲得許可的業(yè)余(業(yè)余無線電)操作員使用,用于交換實時數(shù)據(jù),例如位置(通過全球定位系統(tǒng)獲取)、天氣信息、遙測數(shù)據(jù)、消息以及其他內(nèi)容。您可以在 aprs.fi 網(wǎng)站上獲取更多相關(guān)信息。
公民氣象觀測者計劃(CWOP):非無線電愛好者也可以使用 APRS 協(xié)議通過互聯(lián)網(wǎng)分享氣象數(shù)據(jù),無需持有無線電執(zhí)照。這些用戶會被分配一個特殊的非無線電愛好者標(biāo)識符(例如,“DW”后跟數(shù)字),而非呼號。有關(guān) CWOP 的更多信息請見此處。
除了上述“特別”的內(nèi)容之外,另一個自然而然的步驟就是常見的且遍布全球的大型氣象地下地圖。我也喜歡加入其中,因為它確實是必不可少的。
電路:
該項目所使用的電子元件僅有 4 種:
?布雷瑟氣象站 7合一型號,工作頻率為 868 兆赫,配備有風(fēng)向、風(fēng)速、陣風(fēng)、溫度、濕度、光照、紫外線以及降雨量等傳感器;該設(shè)備由 3 個內(nèi)部 AA 電池供電;請注意,7合一型號已適用于本項目,如果您選擇其他型號,則會配備較少(或更多)的傳感器,并且由于傳感器數(shù)量不同,軟件也需要進(jìn)行調(diào)整,而且更重要的是,數(shù)據(jù)包可能會是兩個而不是僅僅一個(就像 5合一型號使用 6合一協(xié)議……真是令人驚訝!)。您可以只購買外部傳感器單元,而不購買內(nèi)部顯示屏單元;
?LilyGO Lora32 T3 版本 1.6.1. 板子(包含 OLED 顯示屏、WiFi、藍(lán)牙、micro SD 卡、電池充電器、工作在 868MHz 的 Lora sx1276 無線電模塊、天線、在 3.3V 電壓下工作的 I/O 引腳;該板子通過 USB 供電;)
?帶有壓力、室內(nèi)溫度和濕度傳感器的 BME280 板,工作電壓為 3.3V;請注意,BMP280 版本的板需要使用不同的庫……所以一定要確認(rèn)這是 BME280 板。
?SMD 3.3V 蜂鳴器;
?2 個 13 針的轉(zhuǎn)接條形線插頭,公頭和母頭(共 52 個,分別為 2 個 13 針 x 2);請避免將元件直接焊接到 LilyGO 上,而應(yīng)使用通過轉(zhuǎn)接條形線插頭連接的 PCB 來替代。
?需要一些六邊形的塑料墊片和 M2 螺絲來固定 LilGO 使其保持在原位。實際上,LilyGO 在印刷電路板上只有兩個孔可供螺絲穿過,這兩個孔在左邊;右下角也可以使用,但您需要稍微打磨一下印刷電路板(不要打磨太多,否則會切斷電源線路!)以便讓螺絲能夠接觸到墊片;右上角則無法采用同樣的方法,所以您必須放置一個假螺絲來覆蓋前面 3D 屏幕的孔。
為了將 BME 和蜂鳴器連接到 LilyGO 上,我使用了一塊帶有幾根電線和 2 個帶狀引腳的原型電路板。所有操作都是通過 LilyGO 進(jìn)行無線控制的,它通過 868MHz 的無線電接收來自布雷瑟傳感器的數(shù)據(jù)(即使傳感器不在位置上,它也會向室內(nèi)基站顯示器發(fā)送數(shù)據(jù)),然后通過 WiFi 將信息傳輸?shù)?Wunderground 或者 APRS 服務(wù)器。
當(dāng)然,在安裝電路的區(qū)域需要配備一個無線網(wǎng)絡(luò)接入點。我的布雷塞爾氣象站安裝在房子屋頂?shù)囊桓鶙U子上,距離電路約 12 米;他們保證布雷塞爾設(shè)備的信號能覆蓋到 150 米以外的范圍……
整個電路的工作電壓為 3.3 伏輸入/輸出電平;它由 USB 供電,功耗約為 55 至 90 毫安,在停電情況下它會像您的無線接入點一樣自動關(guān)機,而氣象站則由電池供電;如果您希望在停電時保持電路開啟,您需要使用板載的 2 針連接器添加一個可充電電池,USB 將為其充電,因為微控制器板已經(jīng)配備了充電電路;型號為 102535 850/1050 毫安時的電池完全適合我 3D 打印的外殼(見下載部分),請確保連接器是 2 針 JST 1.25 毫米的,且(+)和(-)線的位置正確;
該軟件:
對于主要工作,該示例使用了 BresserWeatherSensorReceiver 庫的 0.37.0 版本,其作者是馬蒂亞斯·普林克;當(dāng)然,代碼中還存在其他庫,比如用于 OLED 顯示屏的庫、WiFi 庫、看門狗庫、偏好設(shè)置(EEPROM)庫、Wire 庫(BME280)、NTPClient 庫(時間更新)等等。
首先,該程序會通過互聯(lián)網(wǎng)更新時間(每 3 小時更新一次),然后持續(xù)監(jiān)聽 868 兆赫頻道上氣象站的傳輸信息,并每 12 秒接收傳感器的數(shù)據(jù)。如果您啟用了“Wunderground”部分,它將每 7 分鐘向 Wunderground 服務(wù)器發(fā)送氣象數(shù)據(jù);如果您啟用了 APRS 服務(wù)器,同樣的操作會每 11 分鐘進(jìn)行一次。時間安排可以稍作調(diào)整,比如改為 5 分鐘和 10 分鐘。
還設(shè)置了一個看門狗功能,如果由于某種原因程序運行超過 60 秒,它將自動重置并重新嘗試;即使其中一個“故障計數(shù)器”超過 9(即 9 以上),看門狗也會重置電路:NTP 時間、WiFi 訪問、WUNDER 服務(wù)器訪問、APRS 服務(wù)器訪問、由看門狗導(dǎo)致的重啟或其他原因、網(wǎng)絡(luò)訪問、BME 接收和 BRESSER 接收。通常電路和軟件運行良好,沒有問題,但通過這些計數(shù)器,您可以有效地控制可能出現(xiàn)的問題。計數(shù)器會顯示在顯示屏上,并以某種遙測形式出現(xiàn)在發(fā)送給 APRS 數(shù)據(jù)包的“評論”文本中,非常有用,因為您可以遠(yuǎn)程查看(參見 aprs.fi 的“原始”數(shù)據(jù)包)。評論中有一個符號(+)表示 Bresser 電池良好,或者有一個符號(-)表示電池需要更換新的電池。我的經(jīng)驗是,避免將電路放置得太靠近 WiFi 接入點(1-2 米的距離就足夠了),這樣您將減少通信錯誤。
設(shè)備通電后,顯示屏?xí)3至疗馉顟B(tài) 10 分鐘,之后會自動關(guān)閉以節(jié)省屏幕電量。
如果您將電路與 Arduino IDE 連接起來,并開啟“串口監(jiān)視器”,您就能看到詳細(xì)的日志,其中會說明軟件正在執(zhí)行的操作。
對于某些計算,會根據(jù)標(biāo)準(zhǔn)大氣壓力、平均風(fēng)向以及露點來進(jìn)行特別的考量。
個性化設(shè)置:
在進(jìn)行編譯和測試之前,您需要指定您的無線網(wǎng)絡(luò)的接入點名稱及密碼:
?char WiFi_SSID[40] = "XXXXX"; // 輸入您的 WiFi 訪問點的名稱
?char WiFi_PASS[40] = "YYYY"; // 輸入您的 Wi-Fi 訪問點密碼
還需要調(diào)整的是賽道的當(dāng)?shù)睾0?平均海平面高度)以及 mslH 常數(shù),以根據(jù)當(dāng)?shù)睾0斡嬎愠鰪漠?dāng)?shù)氐狡骄F矫娴恼;瘹鈮?同時也要設(shè)置您所在時區(qū),以便進(jìn)行每日降雨量計算;別忘了填寫您的 Wunderground 天氣站 ID 和密碼(如果常量“isWUNDERactive=true”被激活的話);當(dāng)然,如果常量“isAPRSactive=true”被激活,您還必須插入您的 APRS 數(shù)據(jù)訪問信息;如果您對 Wunderground 或 APRS 不感興趣,只需將相應(yīng)的值設(shè)為“false”,并避免設(shè)置其他相應(yīng)的值(ID、PASS、呼號、密碼等);由于我的 BME280 板的溫度和濕度數(shù)據(jù)不精確,我引入了兩個偏移值,也許您也可以根據(jù)與“可靠”儀器的比較結(jié)果進(jìn)行個性化設(shè)置。以下是您需要修改的內(nèi)容:
?const float mslH = 285; // 電路所在位置的海拔高度(米)(以當(dāng)?shù)仄骄F矫娓叨葹榛鶞?zhǔn))
?const long utcOffset = +3600; // 本地時間所處時區(qū)的偏移量(以秒為單位,+3600" = +1 小時)
?char mywunderID[40] = "IDIDID"; // 您的 Wunderground 天氣站 ID
?char mywunderPASS[40] = "PsWPswP"; // 您的 Wunderground 密碼
?const double bmeTempOffset = -3.4; // BME280 在室內(nèi)環(huán)境下的溫度偏移值(單位:攝氏度)
?const double bmeHumiOffset = +12.0; // BME280 用于室內(nèi)濕度測量的偏移量
?const char myAPRScallsign[40] = "CALLSIGN-13"; // 您的業(yè)余無線電呼號或 CWOP,用戶
?const char myAPRSpasscode[40] = "12345"; // 您的業(yè)余無線電密碼或 CWOP 密碼
?const char myAPRSlatLon[40] = "4018.23N/01435.16E"; // 您的氣象站位置(度分秒/度分秒)
?const char APRSserver[40] = "rotate.aprs2.net"; // APRS 服務(wù)器網(wǎng)址
該示例代碼源自馬蒂亞斯·普林克編寫的解碼示例代碼(請閱讀代碼開頭處的版權(quán)聲明);在編譯之前,您需要按照作者的說明自定義 WeatherSensorCfg.h 文件;我根據(jù)需要對以下行號進(jìn)行了注釋/取消注釋操作;非常重要的是第 93 行,如果您在多個布雷塞爾站點周圍都有設(shè)置,可以在此處輸入您的站點 ID;如果該行留空,您將收到任何站點 ID,但如果您輸入了它,請注意,它會隨著每次站點重置或電池更換而隨機變化(變化不定),因此您需要手動保持其更新!
?89: #define SENSOR_IDS_EXC {}
?93: #define SENSOR_IDS_INC { 0xD144 }
?101: //#define WIND_DATA_FIXEDPOINT
?105: // 定義 BRESSER_5_IN_1
?106: //#define BRESSER_6_IN_1
?107: #define BRESSER_7_IN_1
?108: // 定義 BRESSER_LIGHTNING 這個宏
?109: // #define BRESSER_LEAKAGE
?151: #define ARDUINO_TTGO_LoRa32_V21new
示意圖:
本文編譯自hackster.io





