?注:本文提前搭建運(yùn)行環(huán)境(需要python3的環(huán)境)
試驗?zāi)繕?biāo):
1.使用樹莓派4b對溫度濕度傳感器的溫濕度參數(shù)進(jìn)行讀取
2.提供一個java springboot的項目,打包好以后,放到樹莓派中,運(yùn)行,項目提供出restful風(fēng)格的接口,對讀取數(shù)據(jù)的速率進(jìn)行控制,并可提供停止讀取數(shù)據(jù)接口。
3.編寫事件處理程序,在出現(xiàn)設(shè)定的溫度或濕度達(dá)到閾值的時候,觸發(fā)相應(yīng)事件。
4.將數(shù)據(jù)存入日志,數(shù)據(jù)庫mysql中
定義與范圍劃分:
1.控制中心:樹莓派4b
2.電子部件:dht11模塊(溫濕度傳感器)
3.軟件部分:java語言與其操作系統(tǒng)劃分為軟件部分
4.數(shù)據(jù)中心:Java程序讀取的溫濕度傳感器最終需要保存歷史記錄。對歷史數(shù)據(jù)記錄的地方,稱為數(shù)據(jù)中心。這里使用mysql,后面結(jié)合elasticsearch進(jìn)行數(shù)據(jù)分析和展示。
5.載體:無。
========================================================================
一.準(zhǔn)備
思路:通過java web程序,通過接口的方式,控制小車的前進(jìn),停止前進(jìn)功能。由于小車的輪子比較特殊,用的是麥克納姆輪,所以可以做到直接右直行,左直行等。本文程序只有一個方向的行進(jìn),為了方便測試,提供停止運(yùn)動接口。
1.控制中心
樹莓派4b(對樹莓派的使用不熟悉或者對java不熟悉的同學(xué)請關(guān)注專欄,可以提供一些指導(dǎo))
代碼編寫與管理平臺(方便網(wǎng)頁控制)
2.電子設(shè)備
dht11模塊(溫濕度傳感器)
電源線若干
3.軟件與程序
centos7 64位
java的運(yùn)行編譯環(huán)境jdk11
4.數(shù)據(jù)中心
mysql
5.載體
無
------------------------------------------------------------------------------------------------------------------------------------------------------------------
二.電路連接示意圖
1.樹莓派引腳示意圖,GPIO與物理位序的映射
?編輯
2.樹莓派與dht11模塊連接圖
?編輯
溫濕度傳感器
3.物理圖
?編輯
三.程序部分
項目地址:
項目框架:spring boot,
中 間件:maven,git,pi4j,python3.需要在樹莓派上提前安裝并配置成功,才能部署運(yùn)行;
數(shù)據(jù)中心: log4j2,mysql
測試工具:jmeter
/**
* 讀取溫度濕度
* @author jiao_zg
* @param BCM_POINT
* @return
*/
public String readDTH11Result(int BCM_POINT) {
// boolean isReady = initEnv();
// if(!isReady){
// return "環(huán)境未配置,請按照說明書配置環(huán)境";
// }
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("命令執(zhí)行失敗,命令為 :{}", process);
e.printStackTrace();
}
int runningStatus = 0;
BufferedReader reader = null;
try {
int exitValue = process.waitFor();
if (0 != exitValue) {
logger.error("命令返回結(jié)果失敗. 錯誤碼 :{}", 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針腳,針腳通過接口傳遞)
*
### 環(huán)境安裝
* 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
四.測試結(jié)果
?編輯
或者瀏覽器:http://192.168.0.102:8101/th_sensor/readth?radio=4
-
JAVA
+關(guān)注
關(guān)注
19文章
2952瀏覽量
104482 -
樹莓派
+關(guān)注
關(guān)注
116文章
1688瀏覽量
105456 -
DTH11
+關(guān)注
關(guān)注
2文章
9瀏覽量
8968
發(fā)布評論請先 登錄
相關(guān)推薦
評論