经过大量尝试Java直接操作底层存在一些问题,读取温度经常读取不到。本人也不会Python(想学,又不想花时间,听说很容易没有试过)如果使用Shell读取底层速度快效率高。直接上代码。
直接上代码:
SHELL部分(文件名dht11_info.sh)
#!/bin/bash # Get information from DHT11 Temperature and Humidity Sensor # /sys/bus/iio/devices/iio:device0 ok=true while ok==true do echo 'run it:' TEMP=`cat /sys/bus/iio/devices/iio\:device0/in_temp_input` # point='expr index "$TEMP" s' echo $TEMP' ->length-> '${#TEMP} if [ ${#TEMP} -gt 0 -a ${#TEMP} -le 5 ] then let TEMP=$TEMP/1000 HUMIDITY=`cat /sys/bus/iio/devices/iio\:device0/in_humidityrelative_input` let sd=$HUMIDITY/1000 rm wd.json echo '{"WD":"'$TEMP'","sd":"'$sd'"}' echo '{"wd":"'$TEMP'","sd":"'$sd'"}'&>>wd.json exit else echo ${#TEMP} > 0 fi # sleep 1 # clear done
JAVA部分(DHT11.java)
import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.io.InputStreamReader; import java.text.SimpleDateFormat; import java.util.Date; public class DHT11 { public static final String WD="./dht11_info.sh"; public static final String WDJSONFILE="wd.json"; public static String getShell(String command) { InputStreamReader stdISR = null; InputStreamReader errISR = null; Process process = null; try { System.out.println(command); process = Runtime.getRuntime().exec(command); int exitValue = process.waitFor(); String line = null; stdISR = new InputStreamReader(process.getInputStream()); BufferedReader stdBR = new BufferedReader(stdISR); while ((line = stdBR.readLine()) != null) { System.out.println(line); return line; } errISR = new InputStreamReader(process.getErrorStream()); BufferedReader errBR = new BufferedReader(errISR); while ((line = errBR.readLine()) != null) { System.err.println("err:"+line); continue; } } catch (IOException | InterruptedException e) { } finally { try { if (stdISR != null) { stdISR.close(); } if (errISR != null) { errISR.close(); } if (process != null) { process.destroy(); } } catch (IOException e) { } } return getShell(command); } public static String txt2String(File file){ StringBuilder result = new StringBuilder(); try{ BufferedReader br = new BufferedReader(new FileReader(file));//读取文件 String s = null; while((s = br.readLine())!=null){ result.append(System.lineSeparator()+s); } br.close(); }catch(Exception e){ e.printStackTrace(); } return result.toString(); } public static void main(String[] args) { File file=new File(WDJSONFILE); if(file.exists()) { file.delete(); } while(!file.exists()) { System.err.println("weng du:"+getShell(WD)); System.err.println("###################################"+new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())+"##############################"); } System.out.println(txt2String(file)); } }
运行效果
root@pai:/home/pi/dht11# javac DHT11.java root@pai:/home/pi/dht11# java DHT11 ./dht11_info.sh run it: weng du:run it: ###################################2017-11-19 10:34:43############################## {"wd":"14","sd":"55"} root@pai:/home/pi/dht11#
相关推荐
DHT11是一款常见的数字温湿度传感器,能够提供精确的环境温度和湿度数据;而BH1750则是一款光强传感器,用于测量环境光照强度。 1. **DHT11传感器**: DHT11是单总线数字温湿度传感器,它能同时测量环境温度和相对...
基于树莓派+DHT11传感器的气象站(温度+湿度)源码+详细文档+全部资料齐全 高分项目.zip基于树莓派+DHT11传感器的气象站(温度+湿度)源码+详细文档+全部资料齐全 高分项目.zip 【备注】 1、该项目是个人高分项目源码,...
【标题】:“基于树莓派+DHT11传感器的气象站(温度+湿度)” 在本文中,我们将深入探讨如何构建一个简单的气象站,利用树莓派(Raspberry Pi)作为核心处理器,以及DHT11温湿度传感器来收集环境数据。这个项目非常适合...
基于STM32单片机+DHT11传感器的温湿度检测报警器数码管显示程序源码+Proteus仿真,主控制器是STM32F103单片机,DHT11传感器测量温度和湿度数据,数码管显示温度、湿度,精度1℃,三个按键可设置温度、湿度上限报警值...
在本文中,我们将深入探讨如何在树莓派上使用DHT11温湿度传感器进行数据采集和处理。DHT11是一款经济实惠、易于使用的数字传感器,能够提供相对湿度和温度的读数,广泛应用于智能家居、环境监测等领域。在树莓派这样...
stm32f103+dht11温湿度传感器读写例程 stm32f103+dht11温湿度传感器读写例程 stm32f103+dht11温湿度传感器读写例程 stm32f103+dht11温湿度传感器读写例程
DHT11是一款低成本、易于使用的数字温湿度传感器,它能同时测量温度和湿度,并通过单线接口向Arduino提供数据。该传感器具有良好的稳定性和精度,适合家庭或小型环境监测应用。在项目中,DHT11的数据被读取并发送到...
STC15W4K56+DS18B20+DHT11+电机控制温度传感器温湿度监控系统软件源码+说明文档 int main() { uint16_t loop = 0; ///////////////////////////////////////////////// //注意: STC15W4K32S4系列的芯片,上...
设备和环境: 1、树莓派3b; 2、ubuntu mate系统 linux内核是4.4.38; 3、DHT11传感器; 4、Qt 5.5.1。 实现的功能: 1、读取DHT11传感器的数据,并将温湿度显示在窗口中。
基于CC2530+DHT11温湿度传感器实现物联网多传感器火灾报警系统源码+全部资料基于CC2530+DHT11温湿度传感器实现物联网多传感器火灾报警系统源码+全部资料基于CC2530+DHT11温湿度传感器实现物联网多传感器火灾报警系统...
温度 - 来自 2 个传感器 BMP 和 DHT。 土壤温度 土壤湿度 光 - 通过光敏电阻。数字越大越暗。 压力 湿度 2个空气传感器 - 一个做更多的灰尘和烟雾,空气质量。另一个寻找丙烷和丁烷等气体。 风速 风向 雨量计 闪电...
DHT11传感器:集成了DHT11温湿度传感器,能够精准地监测环境的温度和湿度变化,并将数据传输给主控制器进行处理。 蓝牙连接:通过蓝牙模块与智能手机或其他蓝牙设备连接,实现了无线数据传输,用户无需另外的接线或...
DHT11是一种常见的数字温湿度传感器,它能同时检测环境的温度和湿度,并通过单线接口向树莓派发送数据。本项目是关于如何利用树莓派读取DHT11传感器的数据,并将这些数据保存到本地文件。 首先,你需要在树莓派上...
《STM32单片机+DHT11温湿度传感器+OLED屏幕+蜂鸣器报警+温湿度数据发送到串口调试助手》源代码
本文将深入探讨DHT11驱动程序的开发,重点讲解如何在香橙派Orange Pi Zero H2+、树莓派3B+以及STM32F407微控制器上实现DHT11的驱动,以实现对温湿度数据的准确读取。 首先,我们要了解DHT11的基本工作原理。DHT11...
51单片机&DHT11传感器&ESP8266模块实现无线测控温湿度原理图+BOM+软件源码,void main() { unsigned char Tx_Buf[12]; unsigned char LEDstatus;//灯的状态 delayms(500); delayms(1000); //延时一段时间,让WIFI...
在这个项目中,我们看到"51+lcd1602+dht11.zip"的组合,这意味着我们将使用51单片机来驱动LCD1602显示器,并通过DHT11传感器读取环境的温度和湿度数据。 首先,我们要了解51单片机。51系列是Intel公司早期开发的一...
标题中的"stm32_esp8266.rar_DHT11 STM32F103_STM32 8266_STM32+ESP8266+DHT11"揭示了这个项目的核心组成部分:STM32微控制器(具体型号为STM32F103)、DHT11温湿度传感器以及ESP8266 WiFi模块。这个压缩包可能包含...
本文档主要讲解了如何使用树莓派连接DHT11温湿度传感器,读取温度和湿度数据,并对DHT11模块的结构和特性进行了详细介绍。 一、DHT11模块结构和特性 DHT11模块是一种温湿度传感器,由三根引脚组成:“+”对应VCC ...
【作品名称】:基于CC2530+DHT11温湿度传感器实现物联网多传感器火灾报警系统 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目...