使用python实现win10系统和arduino usb串口通信
原文链接: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
的作用在于提供一个从串口读取信息的接口
安装
pyserial
:pip install pyserial
打开编辑器,新建
index.py
文件(可以使用pyCharm
,本文使用vsCode
)写入代码,具体描述和功能参考代码注释
# 引入串口库(注意是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串口通信相关推荐
- python做上位机读usb数据_使用python实现win10系统和arduino usb串口通信
前言 arduino有很多可以直接使用的传感器,可以很方便的获取大量的环境数据. 常见的有:温度(室温,冰箱,水箱等场景) 湿度(房间空气湿度,花盆土壤湿度等场景) 声(声控灯,噪音检测,深海测量,医 ...
- 外星人计算机桌面,Alienware Alienware桌面Win10系统和BIOS设置教程
[阅读指南]近日,有网友问外星人Alienware桌面预装Windows10家庭系统游戏体验不是很好,我想重新安装win10版,并且预装win10机型默认为UEFI开机,必须使用U盘安装,在安装过程中 ...
- win8能发挥服务器性能吗,win10系统和win8.1系统哪个更好用?windows10和windows8.1性能对比解析...
7月29日,微软发布了win10正式版系统,不少win8.1系统用户在欢喜的同时,也在考虑一些问题:win10系统和win8.1系统哪个更好用,升级win10正式版是不是更加适合我们的电脑.接下来,小 ...
- CrossOver Mac2022虚拟机如何安装win10系统和linux系统
虚拟机怎么安装win10系统 虚拟机怎么安装linux系统? Win10系统自2015年正式发布至今已有6年的时间,经历过数次更新,同时在这期间,许多开发的应用都基于该系统,兼容性.稳定性都较好.Li ...
- 树莓派串口通信 USB串口通信 常用串口命令
树莓派串口通信 USB串口通信 文章目录 树莓派串口通信 USB串口通信 准备 发送数据 接收数据 如果不知道树莓派怎么使用USB串口通信的,欢迎浏览我的另一篇博客文章: 树莓派使用USB串口通信 C ...
- Android USB 串口通信
公司要求安卓PAD对接一台Windows的设备,实现双向数据传输. 是通过Windows设备的一根数据线进行数据传输的,涉及到的技术就是USB转串口通信,网上讲原理的一大堆,我就不讲了,直接上demo ...
- Arduino 的串口通信seria.print() serial.write()
对于Arduino的串口通信serial.print()和serial.println()是经常用到的,但是用过这两个函数的朋友可能会有体会,不论单片机串口向PC机打印的是什么内容,在串口调试工具上得 ...
- 联想小新增加固态硬盘后安装不了系统_联想小新2020年第10代cpu安装win10系统和BIOS设置教程(2020年新b...
[文章指南]联想小新的2020年笔记本电脑配备了第十代Intel Core处理器. Lenovo Xiaoxin笔记本电脑预装了win10家庭版系统.由于内置的Lenovo win10家庭版系统不 ...
- 树莓派和arduino的串口通信
一. 树莓派环境安装 1. 安装GPIO模块 wget https://sourceforge.net/projects/raspberry-gpio-python/files/RPi.GPIO-0. ...
- python第三方库之学习pyserial库--串口通信
pyserial串口通信库 1.安装pyserial库 2.填写串口参数的注意事项 3.简单封装一下 4.碰到的bug 1.安装pyserial库 pip install pyserial versi ...
最新文章
- 怎么用python画个电脑_python语言还是java如何用python画爱心
- JavaBean中DAO设计模式介绍
- AVFoundation之如何从摄像头获取图像
- java发送http连接
- 互联网1分钟 | 0920
- WINFORM 多条件动态查询 通用代码的设计与实现
- 锤子科技回应天猫店商品全线下架:可去京东购买
- 语义分割之图像经镜像、翻转、裁剪后像素点的位置映射
- 将执行文件转化为bat批处理文件的工具(批处理文件方式提供)
- struts1 mysql config_详解Struts1中的struts-config.xml配置文件【一】
- Reflect Refract (以水渲染为例)
- socket.io实现多人聊天
- 【实习面经】头条后台开发岗一面凉经
- 【hadoop权威指南第四版】第三章hadoop分布式文件系统【笔记+代码】
- android手机调用系统相册(兼容小米手机)
- python开头声明中文_python开头——文件声明 详解
- taking address of temporary错误
- 需要知道关于struct的一些事情
- java 私有全局变量_java中的全局变量
- 基于JAVA成都某4S店销售管理系统计算机毕业设计源码+系统+lw文档+部署
热门文章
- 转载好用的小工具 【who-lock-me】
- 【linux内核分析与应用-陈莉君】内核同步概述
- Centos 7 配置双网卡
- 【Angular】refresher刷新器
- SU-03T语音模块的使用(小智语音控制LED灯)
- 微博相册图片获取工具
- 《涨知识啦34》-LED器件的I-V特性曲线
- win7计算机资源管理器卡住,Win7电脑资源管理器一直卡住怎么办_Win7电脑资源管理器一直卡住的解决方法 - 系统家园...
- 计算机提示资源管理器停止,电脑重复弹出“windows资源管理器已停止工作”怎么处理...
- python 同步记事本_如何使用Python同步文件夹