精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
電子發燒友網>電子資料下載>電子資料>天氣數據收集和存儲程序開源分享

天氣數據收集和存儲程序開源分享

2023-02-09 | zip | 0.03 MB | 次下載 | 免費

資料介紹

描述

該項目是一個相當簡單的天氣數據收集和存儲程序。

天氣數據由 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 的樣子:

?
pYYBAGPjQgGADkRWAACmUhfINtk350.png
表格字段設置
?

使用 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 應如下所示:

?
pYYBAGPjQgWAcWtvAAJnY3OMQGU841.png
iPhone 上顯示 weather.php
?

最后,隨附的原理圖附有 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 字節。你需要一個有足夠內存的設備來運行它。


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

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數據手冊
  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元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

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

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  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十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費