这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 树莓派通过java语言通过DHT11读取环境温湿度

共6条 1/1 1 跳转至

树莓派通过java语言通过DHT11读取环境温湿度

高工
2022-06-20 22:27:21     打赏

注:本文提前搭建运行环境(需要python3的环境)

试验目标:


1.使用树莓派4b对温度湿度传感器的温湿度参数进行读取

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

python3

4.数据中心

mysql

5.载体


------------------------------------------------------------------------------------------------------------------------------------------------------------------

二.电路连接示意图 1.树莓派引脚示意图,GPIO与物理位序的映射

æ èæ´¾å¼èpoYBAGDYdXCAWkKMAAAAK8RNs4s030.png

编辑

2.树莓派与dht11模块连接图

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

编辑

温湿度传感器

3.物理图

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

编辑

三.程序部分


项目地址:

项目框架: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 "";
   }

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

### 软硬件版本
软件和硬件的版本
*  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

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

四.测试结果

poYBAGDYdXCAWkKMAAAAK8RNs4s030.png

编辑




专家
2022-06-21 06:05:14     打赏
2楼

多谢分享!


专家
2022-06-21 06:29:08     打赏
3楼

学习学习


高工
2022-06-21 06:50:27     打赏
4楼

多谢分享!


专家
2022-06-21 06:49:42     打赏
5楼

学习


专家
2022-06-21 08:55:14     打赏
6楼

学习了 ,谢谢分享


共6条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]