原文链接:https://dsx2016.com/?p=1436

公众号:大师兄2016

前言

arduino有很多可以直接使用的传感器,可以很方便的获取大量的环境数据.

常见的有:

  • 温度(室温,冰箱,水箱等场景)

  • 湿度(房间空气湿度,花盆土壤湿度等场景)

  • 声(声控灯,噪音检测,深海测量,医疗器械等场景)

  • 光(灯光调节,距离检测等场景)

  • 气压,磁力,位置,角度等传感器数据

现在有个问题,如何把通过arduino获取的温湿度等数据,发送给pc电脑或者树莓派等设备,以达到数据存储,数据展示的目的.

提到通信方法,众所周知的有

  • 蓝牙(BLE):即蓝牙低能耗技术,是一种低成本、短距离、可互操作的无线技术

  • wifi:一种是无线局域网技术,功耗高,但是场景通用,现在几乎每家每户都有一台路由器.

其次是

  • 串口通信

  • ZigBee:基于IEEE802.15.4标准的低功耗局域网协议,是一种短距离、低功耗的、便宜的无线组网通讯技术

按照从简原则,先从最直接的方式入手,也就是使用usb串口通信

  • 当前的arduino就是使用usb连接到pc电脑,无需其他操作(如果使用蓝牙,wifi,还需要对应的模块和较多的程序开发)

  • pc电脑通信完成后,再用arduino通信树莓派,无缝对接,本质都是系统,都是usb连接,都可以使用python(当前环境为居家场景)

  • 测试上位机操作arduino更加方便,如控制arduino灯的开关,直接用电脑的键盘,或者简单的web界面,甚至只是简单python代码片段就可以(如果使用蓝牙,wifi,通过手机或者其他硬件来控制,中间就多了一层,如写APP,对接开关硬件等,而通过usb到电脑,可以更快的实时调试和修改,这样能更方便的尝试之后的其他项目)

通信场景

arduino串口通信可以划分为

  • 下位机通信:arduino向其他设备传输数据(数据发送到云端或者本地服务器储存等)

  • 上位机通信:其他设备向arduino传输数据(通过手机,电脑等一些交互页面或者服务向arduino发送指令,动态控制等)

usb连接()

  • 左侧为usb扩展器

  • 中间为arduino开发板

  • 右侧为面包板和温湿度传感器

获取数据

一.获取设备端口和波特率

端口查看

打开arduino ide->工具->端口

可以查看到当前勾选的端口为 COM3

波特率查看

Serial.begin(9600);

可以看到设置的波特率为9600

二.设置python串口通信

本文用到的Python库为pyserial,pyserial的作用在于提供一个从串口读取信息的接口

  1. 安装pyserialpip install pyserial

  2. 打开编辑器,新建index.py文件(可以使用pyCharm,本文使用vsCode)

  3. 写入代码,具体描述和功能参考代码注释

# 引入串口库(注意是serial,不是pyserial)
import serial
​
# 设置端口变量和值
serialPosrt = "COM3"
# 设置波特率变量和值
baudRate = 9600
# 设置超时时间,单位为s
timeout = 0.5
# 接受串口数据
ser = serial.Serial(serialPosrt, baudRate, timeout=timeout)
​
# 循环获取数据(条件始终为真)
while 1:# 读取接收到的数据的第一行str = ser.readline()# 把数据打印到终端显示print(str)

得到的结果为

至此,pc端就拿到arduino传送的温湿度等传感器数据了.

Tips

运行python代码时,可能会遇到以下错误:

  • 没有权限

  • 端口被占用

如提示

serial.serialutil.SerialException: could not open port 'COM3': PermissionError(13, '拒绝访问。', None, 5)

经过排查,是因为arduino ide的串口显示器占用了端口,导致pc上的python无法访问端口

解决这个问题的方式就是关闭arduino的串口显示器后,再执行python脚本

也许遇到的问题不一定同我一样,你还可以尝试

  • 使用管理员权限打开终端,如cmd

  • 确认端口和波特率值正确以及代码的大小写,单词等格式或者拼写正确

  • 按照错误提示修复问题或者参考搜索引擎检索答案

总结

本文描述了

  • 常见的几种通信方式和传感器应用场景

  • arduino usb串口通信python获取数据的实现方法

  • 开发调试过程中遇到了一个难排查的错误问题

下期内容

  • 使用sqlite等数据库存储arduino的传感器数据

  • 构建web ~~大 ~~数据面板,实时查看温湿度变化,动态折线图表,仪表盘效果等

  • 根据温湿度值来设置舒适度提示反馈,高低温预警,自动温湿度控制等

  • 上位机反向控制arduino led灯开关,通过web界面或者代码等

END.

使用python实现win10系统和arduino usb串口通信相关推荐

  1. python做上位机读usb数据_使用python实现win10系统和arduino usb串口通信

    前言 arduino有很多可以直接使用的传感器,可以很方便的获取大量的环境数据. 常见的有:温度(室温,冰箱,水箱等场景) 湿度(房间空气湿度,花盆土壤湿度等场景) 声(声控灯,噪音检测,深海测量,医 ...

  2. 外星人计算机桌面,Alienware Alienware桌面Win10系统和BIOS设置教程

    [阅读指南]近日,有网友问外星人Alienware桌面预装Windows10家庭系统游戏体验不是很好,我想重新安装win10版,并且预装win10机型默认为UEFI开机,必须使用U盘安装,在安装过程中 ...

  3. win8能发挥服务器性能吗,win10系统和win8.1系统哪个更好用?windows10和windows8.1性能对比解析...

    7月29日,微软发布了win10正式版系统,不少win8.1系统用户在欢喜的同时,也在考虑一些问题:win10系统和win8.1系统哪个更好用,升级win10正式版是不是更加适合我们的电脑.接下来,小 ...

  4. CrossOver Mac2022虚拟机如何安装win10系统和linux系统

    虚拟机怎么安装win10系统 虚拟机怎么安装linux系统? Win10系统自2015年正式发布至今已有6年的时间,经历过数次更新,同时在这期间,许多开发的应用都基于该系统,兼容性.稳定性都较好.Li ...

  5. 树莓派串口通信 USB串口通信 常用串口命令

    树莓派串口通信 USB串口通信 文章目录 树莓派串口通信 USB串口通信 准备 发送数据 接收数据 如果不知道树莓派怎么使用USB串口通信的,欢迎浏览我的另一篇博客文章: 树莓派使用USB串口通信 C ...

  6. Android USB 串口通信

    公司要求安卓PAD对接一台Windows的设备,实现双向数据传输. 是通过Windows设备的一根数据线进行数据传输的,涉及到的技术就是USB转串口通信,网上讲原理的一大堆,我就不讲了,直接上demo ...

  7. Arduino 的串口通信seria.print() serial.write()

    对于Arduino的串口通信serial.print()和serial.println()是经常用到的,但是用过这两个函数的朋友可能会有体会,不论单片机串口向PC机打印的是什么内容,在串口调试工具上得 ...

  8. 联想小新增加固态硬盘后安装不了系统_联想小新2020年第10代cpu安装win10系统和BIOS设置教程(2020年新b...

    [文章指南]联想小新的2020年笔记本电脑配备了第十代Intel Core处理器. Lenovo Xiaoxin笔记本电脑预装了win10家庭版系统.由于内置的​​Lenovo win10家庭版系统不 ...

  9. 树莓派和arduino的串口通信

    一. 树莓派环境安装 1. 安装GPIO模块 wget https://sourceforge.net/projects/raspberry-gpio-python/files/RPi.GPIO-0. ...

  10. python第三方库之学习pyserial库--串口通信

    pyserial串口通信库 1.安装pyserial库 2.填写串口参数的注意事项 3.简单封装一下 4.碰到的bug 1.安装pyserial库 pip install pyserial versi ...

最新文章

  1. 怎么用python画个电脑_python语言还是java如何用python画爱心
  2. JavaBean中DAO设计模式介绍
  3. AVFoundation之如何从摄像头获取图像
  4. java发送http连接
  5. 互联网1分钟 | 0920
  6. WINFORM 多条件动态查询 通用代码的设计与实现
  7. 锤子科技回应天猫店商品全线下架:可去京东购买
  8. 语义分割之图像经镜像、翻转、裁剪后像素点的位置映射
  9. 将执行文件转化为bat批处理文件的工具(批处理文件方式提供)
  10. struts1 mysql config_详解Struts1中的struts-config.xml配置文件【一】
  11. Reflect Refract (以水渲染为例)
  12. socket.io实现多人聊天
  13. 【实习面经】头条后台开发岗一面凉经
  14. 【hadoop权威指南第四版】第三章hadoop分布式文件系统【笔记+代码】
  15. android手机调用系统相册(兼容小米手机)
  16. python开头声明中文_python开头——文件声明 详解
  17. taking address of temporary错误
  18. 需要知道关于struct的一些事情
  19. java 私有全局变量_java中的全局变量
  20. 基于JAVA成都某4S店销售管理系统计算机毕业设计源码+系统+lw文档+部署

热门文章

  1. 转载好用的小工具 【who-lock-me】
  2. 【linux内核分析与应用-陈莉君】内核同步概述
  3. Centos 7 配置双网卡
  4. 【Angular】refresher刷新器
  5. SU-03T语音模块的使用(小智语音控制LED灯)
  6. 微博相册图片获取工具
  7. 《涨知识啦34》-LED器件的I-V特性曲线
  8. win7计算机资源管理器卡住,Win7电脑资源管理器一直卡住怎么办_Win7电脑资源管理器一直卡住的解决方法 - 系统家园...
  9. 计算机提示资源管理器停止,电脑重复弹出“windows资源管理器已停止工作”怎么处理...
  10. python 同步记事本_如何使用Python同步文件夹