?注:本文提前搭建運行環境(需要python3的環境)
試驗目標:
2.提供一個java springboot的項目,打包好以后,放到樹莓派中,運行,項目提供出restful風格的接口,對讀取數據的速率進行控制,并可提供停止讀取數據接口。
3.編寫事件處理程序,在出現設定的溫度或濕度達到閾值的時候,觸發相應事件。
4.將數據存入日志,數據庫mysql中
定義與范圍劃分:
1.控制中心:樹莓派4b
2.電子部件:dht11模塊(溫濕度傳感器)
3.軟件部分:java語言與其操作系統劃分為軟件部分
4.數據中心:Java程序讀取的溫濕度傳感器最終需要保存歷史記錄。對歷史數據記錄的地方,稱為數據中心。這里使用mysql,后面結合elasticsearch進行數據分析和展示。
5.載體:無。
========================================================================
一.準備
思路:通過java web程序,通過接口的方式,控制小車的前進,停止前進功能。由于小車的輪子比較特殊,用的是麥克納姆輪,所以可以做到直接右直行,左直行等。本文程序只有一個方向的行進,為了方便測試,提供停止運動接口。
1.控制中心
樹莓派4b(對樹莓派的使用不熟悉或者對java不熟悉的同學請關注專欄,可以提供一些指導)
代碼編寫與管理平臺(方便網頁控制)
2.電子設備
dht11模塊(溫濕度傳感器)
電源線若干
3.軟件與程序
centos7 64位
java的運行編譯環境jdk11
4.數據中心
mysql
5.載體
無
------------------------------------------------------------------------------------------------------------------------------------------------------------------
二.電路連接示意圖
1.樹莓派引腳示意圖,GPIO與物理位序的映射
?編輯
2.樹莓派與dht11模塊連接圖
?編輯
溫濕度傳感器
3.物理圖
?編輯
三.程序部分
項目地址:
項目框架:spring boot,
中 間件:maven,git,pi4j,python3.需要在樹莓派上提前安裝并配置成功,才能部署運行;
數據中心: log4j2,mysql
測試工具:jmeter
/**
* 讀取溫度濕度
* @author jiao_zg
* @param BCM_POINT
* @return
*/
public String readDTH11Result(int BCM_POINT) {
// boolean isReady = initEnv();
// if(!isReady){
// return "環境未配置,請按照說明書配置環境";
// }
String result = "";
String RUNNING_SHELL_FILE = "python3 " + adafruit_path + "examples/AdafruitDHT.py 11 " + BCM_POINT;
Process process = null;
try {
process = Runtime.getRuntime().exec(RUNNING_SHELL_FILE);
} catch (IOException e) {
logger.error("命令執行失敗,命令為 :{}", process);
e.printStackTrace();
}
int runningStatus = 0;
BufferedReader reader = null;
try {
int exitValue = process.waitFor();
if (0 != exitValue) {
logger.error("命令返回結果失敗. 錯誤碼 :{}", exitValue);
}
// 返回值
reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line = null;
while ((line = reader.readLine()) != null) {
result = result + line;
logger.info("讀取溫濕度值為: " + line);
TTemperatureHumidity tTemperatureHumidity = new TTemperatureHumidity();
tTemperatureHumidity.setCreatetime(new Date().toString());
tTemperatureHumidity.setPosition(BCM_POINT);
tTemperatureHumidity.setResult(result);
tTemperatureHumidityMapper.insert(tTemperatureHumidity);
}
return result;
} catch (Exception e) {
logger.error("讀取失敗 " + RUNNING_SHELL_FILE);
e.printStackTrace();
}
return "";
}
### 軟硬件版本
軟件和硬件的版本
* 1.樹莓派4b
* 2.樹莓派官方 64版本
* 3.溫濕度傳感器:DHT11
* 4.jdk11
* 5.python3
* 6.spring boot:2.3.3.RELEASE
### 樹莓派針腳和DTH11溫濕度傳感器接線
* 1.DTH11-VCC接樹莓派 物理引腳1(或者其他5V高電平)
* 2.DTH11-GND接樹莓派 物理引腳6(或者其他低電平)
* 3.DTH11-data接樹莓派 物理引腳7,BCM4(或者其他digigal針腳,針腳通過接口傳遞)
*
### 環境安裝
* 1.安裝jdk:jdk11
* 2.安裝maven:3.3
* 3.安裝git
* 4.安裝python3
* 5.安裝包:AdafruitDHT.py
sudo git clone https://github.com/adafruit/Adafruit_Python_DHT.git
cd Adafruit_Python_DHT
sudo python3 setup.py install
驗證:
python3 AdafruitDHT.py 11 4
四.測試結果
?編輯
或者瀏覽器:http://192.168.0.102:8101/th_sensor/readth?radio=4
-
JAVA
+關注
關注
19文章
2942瀏覽量
104081 -
樹莓派
+關注
關注
116文章
1679瀏覽量
105247 -
DTH11
+關注
關注
2文章
9瀏覽量
8962
發布評論請先 登錄
相關推薦
評論