電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>Arduino天氣預(yù)報小矮人

Arduino天氣預(yù)報小矮人

2023-02-08 | zip | 0.32 MB | 次下載 | 免費

資料介紹

描述

注意:本教程可能已過時,請到此處獲取最新版本。

靈感

你們中有些人可能知道在許多歐洲城市作為紀(jì)念品出售的變色小雕像。這些白色雕像涂有一種特定的化學(xué)物質(zhì),這種物質(zhì)會與空氣濕度發(fā)生反應(yīng),使顏色從淺藍(lán)色變?yōu)榉奂t色,并在不斷變化中經(jīng)歷其他色調(diào)。他們應(yīng)該預(yù)測當(dāng)?shù)氐亩唐谔鞖狻?/font>它們實際上顯示了當(dāng)前情況,但預(yù)測能力非常有限且不準(zhǔn)確。

?
?
?
pYYBAGPjLqqAd45sAAGst8_EdXs752.jpg
?
1 / 3 ?讓這些小雕像用它們的顏色告訴你天氣預(yù)報。
?

從那開始,我們決定基于新的 Arduino Nano Every 和 BME280 傳感器制作一個天氣預(yù)報小矮人。起初看似容易的任務(wù),結(jié)果卻是相當(dāng)具有挑戰(zhàn)性。普通氣壓計可以進(jìn)行短期預(yù)報,因為它可以告訴您氣壓是升高還是降低,并且根據(jù)海平面壓力與當(dāng)?shù)睾0胃叨认嗟窒南鄬毫?,它還可以為您提供一些“高”值和“低”閱讀。

?
?

為了獲得更準(zhǔn)確的預(yù)報,還考慮了相對濕度和風(fēng)力,并且經(jīng)典的氣壓計被更復(fù)雜的預(yù)報設(shè)備“Zambretti Forecaster”所取代。

poYBAGPjLsGAAj8IAAM8kv6wi2Y982.jpg
?

作者 Zambra end Negretti 早在 1920 年就記錄了該預(yù)報器,它已成為許多基于微控制器的項目中本地天氣預(yù)報的解決方案。您可以在此處 ( http://drkfs.net/zambretti.htm)找到有關(guān)預(yù)報器的完整詳細(xì)信息,我們還發(fā)現(xiàn)Fandonov ( https://github.com/fandonov/weatherstation)的工作對他實施Zambretti 預(yù)報員在他的電子墨水顯示屏天氣預(yù)報器中。

組件

我們正在我們的Arduino Nano Every plus 上運行這個項目,我們在其中添加了博世BME280傳感器、一個實時時鐘DS3231和一個由八個WS2812B智能 LED組成的小條帶。

BME280 能夠測量溫度、壓力、濕度,并提供一些關(guān)于絕對濕度和高度的線索,但正如我們將在下面看到的,高度和壓力是綁定在一起的,為了我們的目的,我們需要找到我們的真實高度侏儒天氣預(yù)報員。

需要 DS3231 實時時鐘模塊,因為部分 Zambretti 計算與季節(jié)有關(guān),而該設(shè)備了解季節(jié)的唯一方法是通過正確設(shè)置實時時鐘模塊。這可能看起來是一種資源浪費,但您可以改進(jìn)我們提供的代碼,包括根據(jù)一天中的時間和其他便利設(shè)施進(jìn)行亮度控制等功能,并在草圖中使用更多的 RTC。

最后一個組件,LED 燈帶相當(dāng)于改變顏色的小雕像的彩色涂料。在這里,我們利用 RGB 顏色來更詳細(xì)地表示天氣預(yù)報,即使 Zambretti 預(yù)報的全部 26 種不同條件的表示對于簡單的顏色顯示來說太多了。

pYYBAGPjLtOAFl0EAAaLZeFcBMw315.jpg
Zambretti Forecaster 提供的 26 種可能的天氣預(yù)報。
?

我們決定對其進(jìn)行簡化,這是一項正在進(jìn)行的工作,您可以輕松更改為不同的顏色編碼。

接線

兩個主要模塊都基于I2C ,因此接線非常簡單。我們使用的 RTC 模塊甚至有四個連接的通道,這使我們的接線只需 10 分鐘。VCC 和 GND 取自 Arduino Nano 排針上的每個 3V3(紅色)和 GND(黑色)引腳并焊接到 DS3231 模塊一側(cè)的相應(yīng)引腳,然后 I2C 接口與 Arduino 的 A4 和 A5 一樣. A4為SDA(圖中藍(lán)色線),A5為SCL(圖中黃色線)。我們從 RTC 模塊的另一側(cè)采用相同的四個連接,并將它們連接到 BME280 模塊,只需要注意順序即可。VCC / GND / SDL / SCA 順序沒有標(biāo)準(zhǔn),每個模塊可能有不同的順序需要注意。

?
?
?
poYBAGPjLtaAbB0SAAFNDjqjeHI426.jpg
?
1 / 3 ? BME280 I2C 接線
?

LED 燈帶通常有三個標(biāo)簽 VDC、DIN 和 GND。這次電源將來自 5V 引腳。一個原因是我們的焊盤可以自由焊接,另一個原因是我們從 USB 為電路板供電,而 5V 直接來自 USB,對 Nano 的電源調(diào)節(jié)器沒有壓力。

數(shù)據(jù)被饋送到 D7 引腳上的條帶,但可以是您認(rèn)為合適的任何其他引腳。只需使用您在靠近頂部的#define LED_PIN 7行中選擇的引腳編輯草圖。

?
?
?
pYYBAGPjLtuALkD3AAFYdZ9PRjA692.jpg
?
1 / 2 ?我們的 LED 燈帶一側(cè)為 DIN,另一側(cè)為 DOUT。白線用于數(shù)據(jù)輸入。
?

這是它的接線。我們將通過 USB 為電路供電,因為它需要持續(xù)開啟以監(jiān)測環(huán)境參數(shù)并做出預(yù)測。手機(jī)的移動電源可能會為電路供電好幾個小時,但它不可避免地會耗盡能量。

草圖

為了讓這個項目工作,我們需要幾個庫,你可以在草圖的第一行找到它們作為#INCLUDEs。

I2C 通信需要電線, Adafruit_SensorsAdafruit_BME280允許我們從壓力、濕度和溫度傳感器讀取數(shù)據(jù)。LED 燈帶由Adafruit_NeoPixel庫管理,使我們能夠快速有效地控制每個像素顏色。最后但同樣重要的是RTCLib ,它允許我們從 DS3231 實時時鐘讀取所有信息。

我們使用的常數(shù)是平均海平面壓力和 LED 燈帶的常數(shù)。我們使用的平均海平面壓力值是 1013,25 mbar,相當(dāng)于 101,325 kPa,這是國際公認(rèn)的值。

在各種設(shè)備初始化之后,我們定義了一些變量,這些變量將用于預(yù)測以及串行監(jiān)視器上的一些文本輸出。如果你想深入了解天氣情況,你可以連接電腦并讀取提供的數(shù)據(jù),否則,你可能會簡化很多草圖,只是避免所有的字符串格式化和打印。

我們決定保留這些調(diào)試信息,以在項目中保留一些教育價值。

數(shù)組一開始是空的,代碼每 10 分鐘用一個新值填充它,以便數(shù)組的最后一個單元格包含最新的壓力讀數(shù)。包含壓力的值是海壓,計算它是為了補(bǔ)償設(shè)備放置的高度。

一個非常重要的變量是設(shè)備的高度。我們知道海平面壓力,我們需要調(diào)整傳感器的讀數(shù),以便我們可以將我們從傳感器讀取的數(shù)據(jù)開始讀取的海平面壓力輸入到 Zambretti 公式中。有一個公式可以在知道一系列參數(shù)的情況下進(jìn)行此計算,如果您手頭有一個 GPS(甚至您的智能手機(jī)也可以有一個)來讀取海拔高度,您可以將該值放入海拔高度變量中。有了這些信息,公式就是

pYYBAGPjLt2AZNLVAAAVI8bm9Kk719.jpg
?

隨著以下:

P0為相對海平面壓力;

P為站壓,單位為 hPa;

h是以米為單位的高度

T是攝氏溫度。

通過這個公式的輸出,我們得到了海平面的壓力,這樣我們就可以將它輸入到我們的數(shù)組中。該數(shù)組就像一個移位寄存器,每當(dāng)添加一個新值時,所有以前的值都會向左移動一個位置(最舊的值是 0,最新的值是 9)。

有了這 10 個值的數(shù)組,時間間隔為 10 分鐘,Zambretti 公式可以找出壓力變化趨勢(下降、穩(wěn)定或上升)和在過去 100 分鐘內(nèi)收集的值的滑動窗口上的值。在公式中還考慮了月份,因為 Zambra 和 Negretti 發(fā)現(xiàn)它與獲得更準(zhǔn)確的預(yù)測有關(guān)。

然而,在最初的 100 分鐘內(nèi),設(shè)備正在收集第一套完整的壓力讀數(shù),因此預(yù)測將是完全錯誤的。完成此設(shè)置后,預(yù)測將每 10 分鐘調(diào)整一次。

以下幾行復(fù)制物理對象以使用三個窗口(下降/穩(wěn)定/上升)和壓力讀數(shù)找出與預(yù)測對應(yīng)的字母。這意味著對于相同的壓力讀數(shù),造成差異的是短期變化以及夏季/冬季。它是在函數(shù)calc_zambretti中完成的,該函數(shù)獲取最舊的三個平均壓力值、最后三個平均值以及最后確定季節(jié)的月份作為輸入。

長長的if...then...else列表最終描繪了 Zambretti 的輸出,并將 26 條消息重新排列成更簡單的組,即Sunny、Sunny Cloudy、Worsening、Cloudy、Rainy ,告訴我們壓力是在升高、穩(wěn)定還是在下降。我們保留了Fandonov的原始算法因為它可以讓您很好地理解預(yù)測的工作原理,然后我們將五種可能情況的輸出編碼簡化為五種不同的 LED 顏色。條帶的使用允許從一種顏色緩慢變化到另一種顏色,在每個新預(yù)測時向上滾動一個 LED;這也是一個給你預(yù)測趨勢的解決方案。

我們使用一個簡單的例程來實現(xiàn) LED 條的滾動,該例程從頂部開始將每個 LED 的內(nèi)容復(fù)制到下一個,以便將所有內(nèi)容向上移動,然后新值由 Zambretti 算法定義并寫入第一個 LED 位置。

把一切放在一起

我們在我們的“標(biāo)準(zhǔn)”3D 打印 Gnome 中托管電路。這次 BME280 部分位于 Gnome 的后部,從他的腳后跟處,而 USB 位于中等高度。您可以修改我們在之前的項目Gnome Traveler中共享的 STL 文件,讓傳感器和 USB 端口可以從外部訪問。

?
?
?
pYYBAGPjLuyACrYSAASBfvqmVmo679.jpg
?
1 / 2 ? USB 和壓力傳感器可以從我們的 Gnome 背面訪問
?

布線非常簡單,因此將所有東西放入 3D 打印的 Gnome 中應(yīng)該非常容易。在我們的設(shè)置中,條帶位于 Gnome 的上部,因此頭部和帽子會以預(yù)測的顏色點亮。最好將傳感器放在 Gnome 外面,因為它可以從環(huán)境中獲取空氣。最好的結(jié)果要求傳感器在戶外,而不是在濕度和溫度受到控制的公寓中。

一種解決方案是讓小矮人靠近窗戶,并通過 4 線電纜連接將傳感器保持在外面;I2C 最多可以容忍一米,這比您將傳感器放在窗外所需的要多。

加載代碼并監(jiān)控讀數(shù)

設(shè)置好所有硬件后,您可以繼續(xù)繪制草圖。從這里復(fù)制它并與 Library Manager 檢查您是否擁有所有需要的庫:

  • Adafruit_傳感器
  • Adafruit_BME280
  • Adafruit_NeoPixel
  • 實時時鐘庫

Arduino Nano Every 使用MegaAVR 核心,您也應(yīng)該正確安裝它:如果您在可用列表中有該板,則它已安裝,否則您需要使用Board Manager來安裝它。

啟動草圖驗證以確保一切正確,然后上傳。打開Serial Monitor,看看慢慢會打印出來的數(shù)據(jù)。每分鐘您都會獲得一個壓力讀數(shù),每十分鐘就會存儲一次讀數(shù)。

poYBAGPjLu6AAbzCAABVRbFZ4vs603.jpg
查看串行監(jiān)視器輸出并讀取草圖使用的值以獲得更詳細(xì)的預(yù)測
?

休息一下,讓數(shù)組填滿真實數(shù)據(jù)。幾個小時后回來,您所看到和閱讀的內(nèi)容應(yīng)該是有意義的。

黃色是晴天,天藍(lán)色是多云,然后當(dāng)天氣惡化到下雨時,它會變成紫色和紅色。

讓它成為你自己的

我們將文本保留在草圖中,以便您可以輕松更改每個受控天氣條件的顏色。語法是strip.setPixelColor(LED, R, G, B); LED 應(yīng)該始終是條帶中的第一個 (0),RGB 值從 0 到 255。有一個整體亮度設(shè)置,您可以使用它來全天獲得不同的 LED 強(qiáng)度;尋找strip.setBrightness(100); 線并將其變成與日夜閱讀 RTC 相關(guān)的內(nèi)容。


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應(yīng)用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關(guān)電源設(shè)計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅(qū)動電路設(shè)計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費