物聯網-傳輸課程設計-數據採集與顯示

1.總結

1.實現方案:通過 UDP 套接字監聽硬件裝置 ESP8266 NodeMCU 指定的端口 8888,獲取採集到的 DHT11 溫溼度傳感器的溫溼度數據(沒有單片機就用網絡調試助手也可以),實現基於 UDP套接字的數據採集。另一方面,區域數據採集器軟件在Tomcat 服務器編寫web 文件將採集到的數據(溫度、溼度)及採集時間保存到指定的 SQL Server數據庫服務器中,保存數據操作週期性爲每分鐘執行一次。最後,再利用Tomcat 服務器將數據庫存儲的採集數據在網頁中以表格的分頁形式展示,每頁表格最多顯示十條數據。
2.一定要搭建好開發環境並且IP地址及端口號要配置正確,不然運行不出想要的結果。
①開發環境包括:Arduino、ESP8266 Node MCU、JDK、Eclipse、Tomcat插件、SQL Server的環境搭建;
②IP地址及端口號要與代碼中定義的一致並且在一個局域網下。
3.沒有單片機的話,就用網絡調試助手發送採集數據,配置的IP地址及端口與代碼中定義的相適應,就能正常發送接收數據了。
4.SQL Server的端口號要與代碼中定義的一致,才能訪問數據庫。
5.Tomcat的IP設置可以用localhost與端口不能被佔用,配置的jre要與自己電腦安裝的jdk版本一致,否則無法啓動。

2.效果展示

注:因爲點擊更新數據按鈕後,因爲index.jsp那設置了60秒更新一次數據,所以每隔一分鐘才能再次接收到服務的請求數據命令,才能在接到請求數據命令後,發送溫溼度數據

  • 點擊更新數據按鈕後,再點擊其它按鈕,如下一頁上一頁,更新數據會失效

在這裏插入圖片描述

3.步驟說明

一、環境準備

(1)Arduino、ESP8266 Node MCU的開發環境搭建(沒有單片機就略過)

1.Arduino的開發工具的安裝
2.Arduino中ESP8266的環境搭建
3.使用測試

步驟有點多放在另一個鏈接https://blog.csdn.net/qq_43662263/article/details/106655160

(2)JDK、Eclipse、Tomcat插件的環境搭建

1.JDK的安裝
2.Eclipse開發工具的安裝
3.Eclipse中Tomcat插件的安裝
4.使用測試

步驟有點多放在另一個鏈接https://blog.csdn.net/qq_43662263/article/details/106655181

(3)SQL Server的環境搭建

1.SQL Server的安裝
2.打開TCP/IP端口號

步驟有點多放在另一個鏈接https://blog.csdn.net/qq_43662263/article/details/106655181

二、數據採集

1.(第一種方式)在單片機採集數據

  • 在Arduin寫入以下代碼

步驟有點多放在另一個鏈接https://blog.csdn.net/qq_43662263/article/details/106655160

2.(第二種方式)利用網絡調試助手發送數據

  • 更改udpsend.java文件的ip爲自己本機的IP
  • 在終端輸入ipconfig查看ip
    在這裏插入圖片描述

三、數據保存

1.利用套接字接收數據

  • 發送及接收數據的方法(將本方法放入類中,聲明一下import,就可以在jsp中調用了)
  • 裏面的ip可以是自己開發板的ip,也可以是本機ip


public String udptest( )  throws IOException {

                     

                   /** 1、建立udp socket端點 */

                   

                  
DatagramSocket s = new DatagramSocket();

                                

                   /** 2、提供數據,封裝打包  ---DatagramPacket(byte[] buf, int length,
InetAddress address, int port)  */

                   

                   byte[] bs = "12345 ".getBytes();               

                  
DatagramPacket dp = new DatagramPacket(bs, bs.length, InetAddress.getByName("192.168.43.138"), 8888);

                

                   /** 3、使用send發送 */

                   try {

                       s.send(dp);

                       System.out.println("發送成功 ");

                       System.out.println(dp);

                   } catch (IOException e) {

                       System.out.println("發送失敗: ");

                       e.printStackTrace();

                   }

                   // 2.創建數據報,用於接收客戶端發送的數據報

                   byte[] data = new byte[1024];//創建字節數組,指定接收的數據包的大小

                  
DatagramPacket packet = new DatagramPacket(data, data.length);

                   //3.接收客戶端發送的數據

                   System.out.println("****服務器已經啓動,等待客戶端發送數據");

                   s.receive(packet);//此方法在接收到數據報之前會一直阻塞

                   //4.讀取數據

              String info = new String(data, 0, packet.getLength());         

                   System.out.println("我是服務器,客戶端:" + info);   

                   /** 4、關閉資源 */

                   s.close();

                   return info;        

               }

具體代碼:放在另一個鏈接https://blog.csdn.net/qq_43662263/article/details/106655181

2.編寫web文件保存數據並存入數據庫

  • 在eclipse新建一個web項目寫入以下代碼

有點多放在另一個鏈接https://blog.csdn.net/qq_43662263/article/details/106655181

四、數據展示

1.用單片機採集數據

串口信息

在這裏插入圖片描述

網頁效果

  • 運用index.jsp在Tomcat v9.0 Server at localhost上
  • 注:因爲點擊更新數據按鈕後,因爲index.jsp那設置了60秒更新一次數據,所以每隔一分鐘才能再次接收到服務的請求數據命令,才能在接到請求數據命令後,發送溫溼度數據
  • 點擊更新數據按鈕後,再點擊其它按鈕,如下一頁上一頁,更新數據會失效
    在這裏插入圖片描述

2.用網絡調試助手採集數據

網絡調試信息

注:因爲點擊更新數據按鈕後,因爲index.jsp那設置了60秒更新一次數據,所以每隔一分鐘才能再次接收到服務的請求數據命令,才能在接到請求數據命令後,發送溫溼度數據

  • 點擊更新數據按鈕後,再點擊其它按鈕,如下一頁上一頁,更新數據會失效

在這裏插入圖片描述

網頁效果

  • 運用index.jsp在Tomcat v9.0 Server at localhost上
    在這裏插入圖片描述

4.參考鏈接

1.ESP8266 NodeMCU介紹與開發環境搭建
2.arduino—DHT11溫溼度傳感器的使用
3.eclipse的介紹
4.tomcat的介紹
5.ajax技術
6.java_socket編程
7.通過JSP網頁連接Mysql數據庫
8.jsp數據庫操作之插入

注:遇到之前能打開,後來打不開,沒數據的情況,重新啓動試試

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章