資料介紹
描述
注意:本教程可能已過時(shí),請(qǐng)到此處獲取最新版本。
靈感
你們中有些人可能知道在許多歐洲城市作為紀(jì)念品出售的變色小雕像。這些白色雕像涂有一種特定的化學(xué)物質(zhì),這種物質(zhì)會(huì)與空氣濕度發(fā)生反應(yīng),使顏色從淺藍(lán)色變?yōu)榉奂t色,并在不斷變化中經(jīng)歷其他色調(diào)。他們應(yīng)該預(yù)測(cè)當(dāng)?shù)氐亩唐谔鞖狻?/font>它們實(shí)際上顯示了當(dāng)前情況,但預(yù)測(cè)能力非常有限且不準(zhǔn)確。

從那開始,我們決定基于新的 Arduino Nano Every 和 BME280 傳感器制作一個(gè)天氣預(yù)報(bào)小矮人。起初看似容易的任務(wù),結(jié)果卻是相當(dāng)具有挑戰(zhàn)性。普通氣壓計(jì)可以進(jìn)行短期預(yù)報(bào),因?yàn)樗梢愿嬖V您氣壓是升高還是降低,并且根據(jù)海平面壓力與當(dāng)?shù)睾0胃叨认嗟窒南鄬?duì)壓力,它還可以為您提供一些“高”值和“低”閱讀。
為了獲得更準(zhǔn)確的預(yù)報(bào),還考慮了相對(duì)濕度和風(fēng)力,并且經(jīng)典的氣壓計(jì)被更復(fù)雜的預(yù)報(bào)設(shè)備“Zambretti Forecaster”所取代。

作者 Zambra end Negretti 早在 1920 年就記錄了該預(yù)報(bào)器,它已成為許多基于微控制器的項(xiàng)目中本地天氣預(yù)報(bào)的解決方案。您可以在此處 ( http://drkfs.net/zambretti.htm)找到有關(guān)預(yù)報(bào)器的完整詳細(xì)信息,我們還發(fā)現(xiàn)Fandonov ( https://github.com/fandonov/weatherstation)的工作對(duì)他實(shí)施Zambretti 預(yù)報(bào)員在他的電子墨水顯示屏天氣預(yù)報(bào)器中。
組件
我們正在我們的Arduino Nano Every plus 上運(yùn)行這個(gè)項(xiàng)目,我們?cè)谄渲刑砑恿?a href='http://www.asorrir.com/tags/博世/' target='_blank' class='arckwlink_none'>博世的BME280傳感器、一個(gè)實(shí)時(shí)時(shí)鐘DS3231和一個(gè)由八個(gè)WS2812B智能 LED組成的小條帶。
BME280 能夠測(cè)量溫度、壓力、濕度,并提供一些關(guān)于絕對(duì)濕度和高度的線索,但正如我們將在下面看到的,高度和壓力是綁定在一起的,為了我們的目的,我們需要找到我們的真實(shí)高度侏儒天氣預(yù)報(bào)員。
需要 DS3231 實(shí)時(shí)時(shí)鐘模塊,因?yàn)椴糠?Zambretti 計(jì)算與季節(jié)有關(guān),而該設(shè)備了解季節(jié)的唯一方法是通過正確設(shè)置實(shí)時(shí)時(shí)鐘模塊。這可能看起來是一種資源浪費(fèi),但您可以改進(jìn)我們提供的代碼,包括根據(jù)一天中的時(shí)間和其他便利設(shè)施進(jìn)行亮度控制等功能,并在草圖中使用更多的 RTC。
最后一個(gè)組件,LED 燈帶相當(dāng)于改變顏色的小雕像的彩色涂料。在這里,我們利用 RGB 顏色來更詳細(xì)地表示天氣預(yù)報(bào),即使 Zambretti 預(yù)報(bào)的全部 26 種不同條件的表示對(duì)于簡(jiǎn)單的顏色顯示來說太多了。

我們決定對(duì)其進(jìn)行簡(jiǎn)化,這是一項(xiàng)正在進(jìn)行的工作,您可以輕松更改為不同的顏色編碼。
接線
兩個(gè)主要模塊都基于I2C ,因此接線非常簡(jiǎn)單。我們使用的 RTC 模塊甚至有四個(gè)連接的通道,這使我們的接線只需 10 分鐘。VCC 和 GND 取自 Arduino Nano 排針上的每個(gè) 3V3(紅色)和 GND(黑色)引腳并焊接到 DS3231 模塊一側(cè)的相應(yīng)引腳,然后 I2C 接口與 Arduino 的 A4 和 A5 一樣. A4為SDA(圖中藍(lán)色線),A5為SCL(圖中黃色線)。我們從 RTC 模塊的另一側(cè)采用相同的四個(gè)連接,并將它們連接到 BME280 模塊,只需要注意順序即可。VCC / GND / SDL / SCA 順序沒有標(biāo)準(zhǔn),每個(gè)模塊可能有不同的順序需要注意。

LED 燈帶通常有三個(gè)標(biāo)簽 VDC、DIN 和 GND。這次電源將來自 5V 引腳。一個(gè)原因是我們的焊盤可以自由焊接,另一個(gè)原因是我們從 USB 為電路板供電,而 5V 直接來自 USB,對(duì) Nano 的電源調(diào)節(jié)器沒有壓力。
數(shù)據(jù)被饋送到 D7 引腳上的條帶,但可以是您認(rèn)為合適的任何其他引腳。只需使用您在靠近頂部的#define LED_PIN 7行中選擇的引腳編輯草圖。

這是它的接線。我們將通過 USB 為電路供電,因?yàn)樗枰掷m(xù)開啟以監(jiān)測(cè)環(huán)境參數(shù)并做出預(yù)測(cè)。手機(jī)的移動(dòng)電源可能會(huì)為電路供電好幾個(gè)小時(shí),但它不可避免地會(huì)耗盡能量。
草圖
為了讓這個(gè)項(xiàng)目工作,我們需要幾個(gè)庫(kù),你可以在草圖的第一行找到它們作為#INCLUDEs。
I2C 通信需要電線, Adafruit_Sensors和Adafruit_BME280允許我們從壓力、濕度和溫度傳感器讀取數(shù)據(jù)。LED 燈帶由Adafruit_NeoPixel庫(kù)管理,使我們能夠快速有效地控制每個(gè)像素顏色。最后但同樣重要的是RTCLib ,它允許我們從 DS3231 實(shí)時(shí)時(shí)鐘讀取所有信息。
我們使用的常數(shù)是平均海平面壓力和 LED 燈帶的常數(shù)。我們使用的平均海平面壓力值是 1013,25 mbar,相當(dāng)于 101,325 kPa,這是國(guó)際公認(rèn)的值。
在各種設(shè)備初始化之后,我們定義了一些變量,這些變量將用于預(yù)測(cè)以及串行監(jiān)視器上的一些文本輸出。如果你想深入了解天氣情況,你可以連接電腦并讀取提供的數(shù)據(jù),否則,你可能會(huì)簡(jiǎn)化很多草圖,只是避免所有的字符串格式化和打印。
我們決定保留這些調(diào)試信息,以在項(xiàng)目中保留一些教育價(jià)值。
數(shù)組一開始是空的,代碼每 10 分鐘用一個(gè)新值填充它,以便數(shù)組的最后一個(gè)單元格包含最新的壓力讀數(shù)。包含壓力的值是海壓,計(jì)算它是為了補(bǔ)償設(shè)備放置的高度。
一個(gè)非常重要的變量是設(shè)備的高度。我們知道海平面壓力,我們需要調(diào)整傳感器的讀數(shù),以便我們可以將我們從傳感器讀取的數(shù)據(jù)開始讀取的海平面壓力輸入到 Zambretti 公式中。有一個(gè)公式可以在知道一系列參數(shù)的情況下進(jìn)行此計(jì)算,如果您手頭有一個(gè) GPS(甚至您的智能手機(jī)也可以有一個(gè))來讀取海拔高度,您可以將該值放入海拔高度變量中。有了這些信息,公式就是

隨著以下:
P0為相對(duì)海平面壓力;
P為站壓,單位為 hPa;
h是以米為單位的高度
T是攝氏溫度。
通過這個(gè)公式的輸出,我們得到了海平面的壓力,這樣我們就可以將它輸入到我們的數(shù)組中。該數(shù)組就像一個(gè)移位寄存器,每當(dāng)添加一個(gè)新值時(shí),所有以前的值都會(huì)向左移動(dòng)一個(gè)位置(最舊的值是 0,最新的值是 9)。
有了這 10 個(gè)值的數(shù)組,時(shí)間間隔為 10 分鐘,Zambretti 公式可以找出壓力變化趨勢(shì)(下降、穩(wěn)定或上升)和在過去 100 分鐘內(nèi)收集的值的滑動(dòng)窗口上的值。在公式中還考慮了月份,因?yàn)?Zambra 和 Negretti 發(fā)現(xiàn)它與獲得更準(zhǔn)確的預(yù)測(cè)有關(guān)。
然而,在最初的 100 分鐘內(nèi),設(shè)備正在收集第一套完整的壓力讀數(shù),因此預(yù)測(cè)將是完全錯(cuò)誤的。完成此設(shè)置后,預(yù)測(cè)將每 10 分鐘調(diào)整一次。
以下幾行復(fù)制物理對(duì)象以使用三個(gè)窗口(下降/穩(wěn)定/上升)和壓力讀數(shù)找出與預(yù)測(cè)對(duì)應(yīng)的字母。這意味著對(duì)于相同的壓力讀數(shù),造成差異的是短期變化以及夏季/冬季。它是在函數(shù)calc_zambretti中完成的,該函數(shù)獲取最舊的三個(gè)平均壓力值、最后三個(gè)平均值以及最后確定季節(jié)的月份作為輸入。
長(zhǎng)長(zhǎng)的if...then...else列表最終描繪了 Zambretti 的輸出,并將 26 條消息重新排列成更簡(jiǎn)單的組,即Sunny、Sunny Cloudy、Worsening、Cloudy、Rainy ,告訴我們壓力是在升高、穩(wěn)定還是在下降。我們保留了Fandonov的原始算法,因?yàn)樗梢宰屇芎玫乩斫忸A(yù)測(cè)的工作原理,然后我們將五種可能情況的輸出編碼簡(jiǎn)化為五種不同的 LED 顏色。條帶的使用允許從一種顏色緩慢變化到另一種顏色,在每個(gè)新預(yù)測(cè)時(shí)向上滾動(dòng)一個(gè) LED;這也是一個(gè)給你預(yù)測(cè)趨勢(shì)的解決方案。
我們使用一個(gè)簡(jiǎn)單的例程來實(shí)現(xiàn) LED 條的滾動(dòng),該例程從頂部開始將每個(gè) LED 的內(nèi)容復(fù)制到下一個(gè),以便將所有內(nèi)容向上移動(dòng),然后新值由 Zambretti 算法定義并寫入第一個(gè) LED 位置。
把一切放在一起
我們?cè)谖覀兊摹皹?biāo)準(zhǔn)”3D 打印 Gnome 中托管電路。這次 BME280 部分位于 Gnome 的后部,從他的腳后跟處,而 USB 位于中等高度。您可以修改我們?cè)谥暗捻?xiàng)目Gnome Traveler中共享的 STL 文件,讓傳感器和 USB 端口可以從外部訪問。

布線非常簡(jiǎn)單,因此將所有東西放入 3D 打印的 Gnome 中應(yīng)該非常容易。在我們的設(shè)置中,條帶位于 Gnome 的上部,因此頭部和帽子會(huì)以預(yù)測(cè)的顏色點(diǎn)亮。最好將傳感器放在 Gnome 外面,因?yàn)樗梢詮沫h(huán)境中獲取空氣。最好的結(jié)果要求傳感器在戶外,而不是在濕度和溫度受到控制的公寓中。
一種解決方案是讓小矮人靠近窗戶,并通過 4 線電纜連接將傳感器保持在外面;I2C 最多可以容忍一米,這比您將傳感器放在窗外所需的要多。
加載代碼并監(jiān)控讀數(shù)
設(shè)置好所有硬件后,您可以繼續(xù)繪制草圖。從這里復(fù)制它并與 Library Manager 檢查您是否擁有所有需要的庫(kù):
- Adafruit_傳感器
- Adafruit_BME280
- Adafruit_NeoPixel
- 實(shí)時(shí)時(shí)鐘庫(kù)
Arduino Nano Every 使用MegaAVR 核心,您也應(yīng)該正確安裝它:如果您在可用列表中有該板,則它已安裝,否則您需要使用Board Manager來安裝它。
啟動(dòng)草圖驗(yàn)證以確保一切正確,然后上傳。打開Serial Monitor,看看慢慢會(huì)打印出來的數(shù)據(jù)。每分鐘您都會(huì)獲得一個(gè)壓力讀數(shù),每十分鐘就會(huì)存儲(chǔ)一次讀數(shù)。

休息一下,讓數(shù)組填滿真實(shí)數(shù)據(jù)。幾個(gè)小時(shí)后回來,您所看到和閱讀的內(nèi)容應(yīng)該是有意義的。
黃色是晴天,天藍(lán)色是多云,然后當(dāng)天氣惡化到下雨時(shí),它會(huì)變成紫色和紅色。
讓它成為你自己的
我們將文本保留在草圖中,以便您可以輕松更改每個(gè)受控天氣條件的顏色。語法是strip.setPixelColor(LED, R, G, B); LED 應(yīng)該始終是條帶中的第一個(gè) (0),RGB 值從 0 到 255。有一個(gè)整體亮度設(shè)置,您可以使用它來全天獲得不同的 LED 強(qiáng)度;尋找strip.setBrightness(100); 線并將其變成與日夜閱讀 RTC 相關(guān)的內(nèi)容。
- 物聯(lián)網(wǎng)迷你天氣預(yù)報(bào)開源分享
- DIY簡(jiǎn)單的天氣預(yù)報(bào)裝置
- 自動(dòng)播放器播放天氣預(yù)報(bào)
- 天氣預(yù)報(bào)顯示開源項(xiàng)目
- 制作BMP280 ESP32天氣預(yù)報(bào)器
- 基于ESP8266-01的天氣預(yù)報(bào)
- 使用ESP32進(jìn)行溫度、濕度和天氣預(yù)報(bào)
- 基于ESP32的可打印天氣預(yù)報(bào)劇院 0次下載
- WhatsApp地圖和天氣預(yù)報(bào)聊天機(jī)器人開源
- 基于ESP8266的天氣預(yù)報(bào)顯示模塊 0次下載
- Zambreti天氣預(yù)報(bào)器開源分享
- 基于天氣預(yù)報(bào)的自動(dòng)灌溉系統(tǒng)
- WeatherBot-3D打印天氣預(yù)報(bào)劇院|ESP32和OpenWeatherMap
- Android智能手機(jī)天氣預(yù)報(bào)系統(tǒng)設(shè)計(jì)及實(shí)現(xiàn) 22次下載
- 基于天氣預(yù)報(bào)的集中供熱系統(tǒng)短期熱負(fù)荷預(yù)測(cè)_李琦 0次下載
- 濕敏電阻還能應(yīng)用在哪里呢? 567次閱讀
- AWTK 開源串口屏開發(fā)(11) - 天氣預(yù)報(bào) 424次閱讀
- 服務(wù)器硬盤通用基礎(chǔ)知識(shí) 862次閱讀
- 基于SWM32單片機(jī)+LVGL的4.3寸觸摸屏設(shè)計(jì) 2062次閱讀
- 觸摸屏WIFI獲取時(shí)間和天氣預(yù)報(bào)相關(guān)的功能是怎樣實(shí)現(xiàn)的 2857次閱讀
- 基于NiobeU4開發(fā)板的簡(jiǎn)易桌面天氣預(yù)報(bào)設(shè)計(jì)&實(shí)現(xiàn) 1284次閱讀
- Python如何爬取天氣數(shù)據(jù) 1811次閱讀
- 如何從網(wǎng)頁(yè)控制arduino? 4186次閱讀
- 基于具有天氣預(yù)報(bào)功能的溫濕度壓力測(cè)試裝置系統(tǒng) 2349次閱讀
- 什么是智能內(nèi)容生成?萬字講述智能內(nèi)容生成實(shí)踐 1.2w次閱讀
- 被用來氣象預(yù)測(cè)的探空氣球中有哪些重要的傳感器 3753次閱讀
- 淺談Arduino和樹莓派的區(qū)別 2.1w次閱讀
- 天氣雷達(dá)原理介紹 6488次閱讀
- arduino是什么以及arduino能干什么 4.5w次閱讀
- arduino開發(fā)板有什么用 2.1w次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊(cè)
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論