物聯網-傳輸課程設計-數據採集與顯示
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數據庫操作之插入
注:遇到之前能打開,後來打不開,沒數據的情況,重新啓動試試