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