資料介紹
描述
該項目是一個相當簡單的天氣數據收集和存儲程序。
天氣數據由 Arduino 記錄,并通過向網絡服務器發送特制的 GET 請求每 10 分鐘發送到數據庫。
或者,您也可以將輸出發送到 20x4 LCD。
先決條件:
您必須已經配置了 Web 服務器、數據庫和服務器端腳本語言,它們可以處理 HTTP GET 請求的查詢字符串中的名稱/值對。如果您使用的是 Windows,在典型的 LAMP/WAMP/WIMP 堆棧上啟動和運行非常容易,但讓所有這些一起工作超出了本文的范圍。
在我的例子中,我已經配置了一臺 Windows 7 機器來運行一個標準的 WIMP 堆棧——
- Windows 7 上的 Microsoft IIS 7.5
- PHP 7.1.24 - windows.php.net/download/
- MySQL 社區 8.0.13 - dev.mysql.com/downloads
- 我還使用 PHPMyAdmin 的副本來幫助進行數據庫配置 - phpmyadmin.net/
- 必須啟用 mysqli PHP 擴展
重要的提示:
這個項目完全忽略了任何表面上的安全(不要按原樣將它放在 Internet 上,但它對您的 LAN 沒問題)并且我的數據庫優化可能需要一些工作。
概述:
本文的重點是將數據從傳感器中獲取到我們的數據庫中,然后提取該數據并以某種方式顯示它,讓我們知道接下來會發生什么。
從現在開始,本文假設您有一個可用的 Web 服務器、PHP 和 MySQL。
數據庫配置:
對于這個項目,我創建了一個名為 weatherdata 的數據庫,并在該數據庫中創建了一個名為 master 的表。
除了每個數據庫條目的唯一標識符之外,我們還想記錄 4 件事:
- 時間;
- 溫度
- 氣壓
- 濕度
所以我們需要 5 個我命名如下的字段:
- 流體;
- 時間戳
- 溫度
- 壓力
- 濕度
這是 phpMyAdmin 的樣子:
使用 phpMyAdmin 創建數據庫 weatherdata。跳過從界面創建表并在 MySQL 命令行客戶端中使用下面的腳本來創建表和字段:
CREATE TABLE master
(
uid INT(11) NOT NULL AUTO_INCREMENT,
timestamp DATETIME NOT NULL,
temperature DOUBLE(8,4) NOT NULL,
pressure DOUBLE(8,4) NOT NULL,
humidity DOUBLE(8,4) NOT NULL,
PRIMARY KEY (uid)
);
測試注意事項:
您可以通過在瀏覽器的地址欄中手動輸入 WEBSERVER_IP_ADDRESS/processincoming.php?t=9.30&p=98.80&h=75.70 并按回車鍵來測試設置(如果需要,可以更改值)。如果服務器正確處理它,您將看到這些值記錄在數據庫中并且它工作正常。如果它不起作用,則某處存在配置或設置錯誤。
服務器端處理
數據庫輸入是通過 Arduino 每 10 分鐘向 Web 服務器發送一次 GET 請求來完成的,請求的查詢字符串中包含溫度、壓力和濕度值。
在 Arduino 代碼中,構建并發送 URL 字符串:
urlString = "GET /processincoming.php?t=" + temperatureToDB + "&p=" +
pressureToDB + "&h=" + humidityToDB + " HTTP/1.1";
sendDataToServer(urlString);
sendDataToServer() 函數接受完整的字符串并將其發送到局域網中位于 192.168.1.35 的 Web 服務器:
void sendDataToServer(String stringToSend) {
//make sure i'm sending what I think I'm sending
Serial.println(stringToSend);
if (client.connect(server, 80))
{
client.println(stringToSend);
client.println("Host: 192.168.1.35");
client.println("Connection: close");
client.println();
}
else
{
Serial.println("connection failed");
}
}
我們發送的完整請求如下所示:
GET /processincoming.php?t=9.30&p=98.80&h=75.70 HTTP/1.1
應該很明顯,但 t = 溫度值,p = 壓力值和 h = 濕度值
我在這里要注意的一件事是,此頁面請求不會產生通常會發送到瀏覽器的任何輸出(除了默認響應標頭之外)。一旦 Arduino 發送數據,它就完成了直到下一個周期并且不需要解析響應,甚至不需要等待響應。
提示:為您的網絡服務器提供 LAN 上的靜態 IP 地址。如果您依賴 DHCP,您可能會發現自己在修改 Arduino 代碼以說明每次服務器重新啟動時主機 IP 都會發生變化。
此處包含的代碼 (WeatherStation_v1_webclient_no_lcd.ino) 編譯為 1304 字節,因此適用于較小的設備。
顯示數據:
文件 weather.php 負責顯示我們的天氣數據。顯示頁面是由腳本生成的簡單 HTML 表格,不需要除 mysqli 之外的任何其他 PHP 擴展。
默認情況下,此頁面顯示長達 3 小時的數據,因此我們的 Arduino 應該至少運行了那么長時間才能記錄足夠的數據量。如果您嘗試在沒有足夠數據點的情況下運行它,您將收到數組錯誤。
收集數據至少 3 小時后,輸出 HTML 應如下所示:
最后,隨附的原理圖附有 LCD 輸出 - 可以忽略。
備選方案
在這種情況下,不要忽視 LCD,您將需要它。我還包括第二個 Arduino 程序,它結合了上述內容并輸出到 20x4 LCD。
可以在此處找到 LCD 組件的完整描述:https ://create.arduino.cc/projecthub/ragingradish/improved-weatherstation-20x4-18dd89
程序的 LCD 部分已更新,以確認以太網已啟動并正在運行,但其他方面沒有變化。
為了將數據發送到服務器,添加并初始化了適當的庫,然后將條件插入到循環中:
//send data to server every 10 minutes
if ((mainLoop == 0) || (mainLoop % 10 == 0))
{
temperatureToDB = currentTemp;
pressureToDB = currentPressure;
humidityToDB = currentHumid;
urlString = "GET /processincoming.php?t=" + temperatureToDB + "&p=" +
pressureToDB + "&h=" + humidityToDB + " HTTP/1.1";
sendDataToServer(urlString);
}
運行 LCD 版本的代碼是 WeatherStation_20x4_v1_webclient.ino 并編譯為 2090 字節。你需要一個有足夠內存的設備來運行它。
- 物聯網迷你天氣預報開源分享
- Farmaid數據收集器開源分享
- 通過HTTP請求調用API從Open Weather下載天氣數據
- 航空天氣按鈕開源分享
- 天氣預報顯示開源項目
- 電子紙潮汐和天氣追蹤器開源分享
- 使用Blues Wireless和Qubitro的物聯網天氣數據記錄器
- 基于Arduino MKR ZERO的天氣數據記錄器 0次下載
- 使用TTGO ESP32和Visuino從互聯網上獲取天氣數據
- Zambreti天氣預報器開源分享
- BME680天氣監測裝置開源分享
- 基于STM32的ESP8266天氣時鐘(2)--------MCU獲取天氣數據
- USB數據抓包軟件程序下載 7次下載
- PIC24H系列參考手冊之程序存儲器
- 一種智能大氣數據測量系統的設計與實現
- AWTK 開源串口屏開發(11) - 天氣預報 270次閱讀
- 燃氣數字壓力記錄儀的設計及應用 593次閱讀
- 用小安派開源硬件制作一個桌面天氣站 809次閱讀
- GaussDB數據庫存儲過程介紹 1054次閱讀
- 前沿開源技術領域的開源大數據一一解讀 1005次閱讀
- S7-200 CPU擴展程序存儲區 975次閱讀
- Python如何爬取天氣數據 1669次閱讀
- 如何為MSP430設計固件以收集和處理IC的數據 1881次閱讀
- C語言編程程序的存儲類別 3685次閱讀
- 關于騰訊的開源分布式存儲系統DCache 1970次閱讀
- 淺談 Linux 程序 Orbital Apps 開源程序集合 845次閱讀
- 開源存儲的六大優勢 3975次閱讀
- 淺談外部程序存儲器數據存儲器操作命令 5260次閱讀
- 剖析混合存儲陣列的優勢,以及最適合混合存儲的各種數據類型 6854次閱讀
- 51單片機存儲程序和數據 9600次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多