本文记录了在树莓派开发时,通过串口获得Arduino开发板上采集到的温湿度,并显示在树莓派上,使用python读取Arduino串口的数据,获得温湿度采集器采集到的温湿度,然后在树莓派上做数据处理;
需要的库文件DHT.h,如果运行报错,请先添加这个库文件,下载地址:https://github.com/adafruit/DHT-sensor-library
下载的文件中只要包含 .h 和 .cpp 文件即可,多余的可以删掉,用不到

Arduino代码:

运行时如果报/x86或者ASCII码无法解析错误。可以将代码中的中文全部换成英文,就不会错了,可能是因为无法识别中文

#include <DHT.h>#define   DHTPIN    3
#define DHTTYPE    DHT11DHT dht(DHTPIN, DHTTYPE);void setup() {// put your setup code here, to run once:Serial.begin(9600);dht.begin();Serial.println("Hi Vcancy. Arduino is running...");}/**Arduino loop@param none@return none
*/
char target[] = "GET TH";void loop() {// 每次等待2秒后再输出(这里必须等大于1秒,不然不准确)delay(2000);// 从串口读数据并判断if (Serial.available() > 0) {if ( Serial.find(target)) {// 获取温度或者湿度需要250毫秒!// 传感器获取到的温度和湿度可能是2秒内的float h = dht.readHumidity();// 读取当前的湿度float t = dht.readTemperature(); // 读取当前的温度,单位Cfloat f = dht.readTemperature(true);//读取当前的温度,单位F// 如果读取失败则退出,再读取一次if (isnan(h) || isnan(t) || isnan(f)) {Serial.println("Failed to read from DHT sensor!");return;}// 读取体感温度,单位Ffloat hif = dht.computeHeatIndex(f, h);// 读取体感温度,单位Cfloat hic = dht.computeHeatIndex(t, h, false);Serial.print("湿度: ");Serial.print(h);Serial.print(" %\t");Serial.print("温度: ");Serial.print(t);Serial.print(" *C ");Serial.print(f);Serial.print(" *F\t");Serial.print("体感温度: ");Serial.print(hic);Serial.print(" *C ");Serial.print(hif);Serial.println(" *F");}}}

然后可以在串口助手中进行测试,我这里因为项目需要,将GET TH 改为了数字8,并且修改了一下输出,下面你们可以看到我做的更改,应该更符合同学们对数据处理的要求,这里你们在测试时仍然可以输入GET TH进行测试:

树莓派代码(python):

需要先安装python串口读取的库文件:pip install pyserial
(如果已经安装过了则忽略)
找到Arduino的串口地址:/dev/ttyACM0

import serial
ser = serial.Serial('/dev/ttyACM0', 9600, timeout=1)try:while 1:ser.write(b"GET TH")response = str(ser.readline().decode())if response.startswith('湿度:'):print(response.strip('\n'))
except KeyboardInterrupt:ser.close()

如果要单截取采集到的温湿度,对数据进行处理,而不需要打印所有信息,我们可以在python和Arduino做如下更改:

首先在Arduino中,我们不需要像串口打印那么多数据,只取我们需要的温湿度,像这样(效果同上面的GIF):

    Serial.print("hum: ");Serial.print(h);Serial.print("tem: ");Serial.println(t);// 打印出效果如下:hum: 33.0tem: 25.00

然后在python中,我们通过字符串截取,取到我们的温湿度,这里我们截取两位整数

    response = str(single.readline().decode())if response.startswith('hum:'):#截取整数部分hum = response[5:7] #33tem = response[-6:-3] # 25# 将处理后的数据放在templateData 中templateData = {'tem': tem,'hum': hum}print(response.strip('\n'))

到这里我们就做好了简单的数据处理,更多的操作可以自己根据需求去修改

树莓派与Arduino串口通讯获取DH11温湿度相关推荐

  1. 树莓派php minicom,用DHT11实践树莓派与Arduino串口通信 | 树莓派实验室

    Arduino具有丰富的外部接口,与树莓派的IO口最大的不同在于Arduino具有模拟输入接口,可以测量IO口上的模拟值.Arduino与Raspberry通过串口(Serial)通信的方案一般有两种 ...

  2. Arduino 串口通讯参考笔记 - Serial 类库及相关函数介绍

    @TOArduino 串口通讯参考笔记 - Serial 类库及相关函数介绍 C 声明: 本ID发布的所有文章及随笔均为原创,可随意转载,单转载文章必须注明作者 saner686 及包含原文出处地址 ...

  3. 树莓派3B+:串口通讯

    树莓派3B+:串口通讯 背景 一.树莓派串口通讯是什么? 二.使用步骤 1.树莓派串口知识 2.查看当前的串口使用及映射关系 3.释放串口ttyAMA0 3.代码控制串口,验证是否可用 三.minic ...

  4. mpu6050 arduino串口 通讯在ros下的可视化实验

    瞎忙好几天,草草做个总结,贴上混乱代码一堆 涉及内容如下 dmp iic  mpu6050的通讯 获取加速度 角速度 二者结合求出角姿势 四元数,发送到计算机. 串口协议编写解析 ros发布位姿里程数 ...

  5. Arduino串口通讯,Serial库,RGBled灯示例

    串口硬件 Arduino板通过串口(称为UART或USART串口)与其它设备进行通讯.即通用同步/异步收发器 所有Arduino板至少有一个串口,数字引脚位为 0(RX) 和1(TX)注:做通讯时0, ...

  6. Android 串口通讯 获取卡号

    首先你的andoridstudio 需要配置ndk 环境 然后在去下载谷歌的的demo 下载地址 把这些直接复制到代码中 一般  jni C语言调用java 是指定包名调用的 所有android_se ...

  7. android 查找所有的串口,Android 串口通讯 获取卡号

    首先你的andoridstudio 需要配置ndk 环境 然后在去下载谷歌的的demo 下载地址 把这些直接复制到代码中 一般  jni C语言调用java 是指定包名调用的 所有android_se ...

  8. LYL程序员小白的理解之简单易懂的Arduino的串口通讯

    简单易懂的Arduino的串口通讯 自白 启动串口通讯 判断串口接收数据的语句 实践 一个三位数整数 三个三位数整数 自白 我是一名大四应届生,第一次写这个博客,可能很多地方写的不是那么好,也有可能有 ...

  9. 串口通讯 IM1281

    例程为基于IM1281单向互感计量模块,关于 Modbus-RTU通讯规约简要理解. 1.通讯规约应注意校检码正确配置,否则所发送数据 无法被外设接收: (1) 预置一个 16 位寄存器为 0FFFF ...

最新文章

  1. 无人驾驶:车道线检测,附代码
  2. IF10+的数据库文章!生物信息数据库承建!
  3. 用计算机桁架各杆内力,运用AUTO CAD求解桁架内力?
  4. 多目标非支配排序遗传算法-NSGA-II(二)
  5. vue 文件目录结构详解
  6. python基础教程电子版-Python基础教程(第2版)PDF文档下载
  7. 大数据分析会遇到哪些误区
  8. Python实现C代码统计工具(一)
  9. 自定义控件设置宽度_自定义View开篇,必须跨过的一道坎儿
  10. c/c++中一个 类似 a[2] 的数组引发的一些思考
  11. redhat7 配置xmanager登陆
  12. Hyperchain 超块链创始人史兴国对谈杨民道:新公链赛道烽烟再起,move语言能开启下一轮牛市吗?
  13. 计算机考研数学一大纲2016,2016考研大纲:计算机专业
  14. SIEBEL代码分析
  15. Python学习笔记——入门(IDLE的使用、标准库和模块、测试和调试、虚拟编程环境)
  16. linux锁屏命令 TM,Linux基本命令的使用(上)
  17. 美的vs格力 佛山 珠海
  18. 什么是统一身份认证?
  19. 计算机与信息技术基础第一章总结,第一章信息与计算机《计算机应用基础》.ppt...
  20. FireFox下Canvas使用图像合成绘制SVG的Bug

热门文章

  1. 浪潮nf5220服务器做系统,【浪潮NF5220参数】浪潮NF5220系列服务器参数-ZOL中关村在线...
  2. 关于调节ijkPlayer的音量和静音
  3. linux修改sda3时间,Linux服务器磁盘占满问题解决(/dev/sda3 满了)
  4. 智慧公寓管理系统解决方案
  5. 视频监控发展的技术难点在哪里?
  6. PBX220评测报告
  7. mysql计算机二级电子教程_MySQL数据库程序设计(2019年版全国计算机等级考试二级教程)...
  8. float类型为什么有6位有效数字
  9. 华为面向5G的室内覆盖数字化概述
  10. 2021年,谁发现了边缘计算的赚钱生意?