前言

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)

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

[dsx_def_highlightjs code=code]

# 引入串口库(注意是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)

[/dsx_def_highlightjs]

得到的结果为

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

Tips

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

端口被占用

如提示

[dsx_def_highlightjs code=code]

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

[/dsx_def_highlightjs]

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

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

也许遇到的问题不一定同我一样,你还可以尝试使用管理员权限打开终端,如cmd等

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

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

总结

本文描述了常见的几种通信方式和传感器应用场景

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

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

下期内容使用sqlite等数据库存储arduino的传感器数据

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

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

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

END.

python做上位机读usb数据_使用python实现win10系统和arduino usb串口通信相关推荐

  1. python做上位机好不_如何使用Python开发串口通讯上位机(完结)

    2021的第一份更新,比以往时候来得早一点! 前面两期讲了如何使用pyserial和做好了基本的上位机界面以及与API的联动,今天我们接着完善下代码.1 编码规范的使用 前面两期只是做基础展示用,所以 ...

  2. python 预测任意天后股票数据_在Python中使用LSTM进行股票市场预测

    本文概述 在本教程中, 你将看到如何使用称为长短期记忆的时间序列模型. LSTM模型功能强大, 特别是通过设计保留了长期记忆, 这一点将在以后看到.你将在本教程中解决以下主题: 了解为什么你需要能够预 ...

  3. python登录网站后爬取数据_用 Python 登录主流网站,我们的数据爬取少不了它

    不论是自然语言处理还是计算机视觉,做机器学习算法总会存在数据不足的情况,而这个时候就需要我们用爬虫获取一些额外数据.这个项目介绍了如何用 Python 登录各大网站,并用简单的爬虫获取一些有用数据,目 ...

  4. python做定时任务的方式及优缺点_使用Python做定时任务及时了解互联网动态

    前言 本人因为比较喜欢看漫画和动漫, 所以总会遇到一些问题, 因为订阅的漫画或者动漫太多, 总会忘记自己看到那一章节或者不知道什么时候更新. 故会有这么一个需求, 想记录自己想看的漫画或动画并在其更新 ...

  5. 利用python爬取58同城简历数据_利用python爬取58同城简历数据-Go语言中文社区

    利用python爬取58同城简历数据 最近接到一个工作,需要获取58同城上面的简历信息(http://gz.58.com/qzyewu/).最开始想到是用python里面的scrapy框架制作爬虫.但 ...

  6. python做上位机容易学吗_python做上位机

    参考文章: https://blog.csdn.net/dgut_guangdian/article/details/78391270 https://www.cnblogs.com/lanceyu/ ...

  7. python中texttable库显示实时数据_用Python串口实时显示数据并绘图pyqtgraph

    用Python串口实时显示数据并绘图 使用pyserial进行串口传输 一.安装pyserial以及基本用法 在cmd下输入命令pip install pyserial 注:升级pip后会出现 &qu ...

  8. 用python做简单的地理聚类分析案例_用Python做一个简单的翻译工具

    编程本身是跟年龄无关的一件事,不论你现在是十四五岁,还是四五十岁,如果你热爱它,并且愿意持续投入其中,必定会有所收获. 本文就来自编程教室一位"小"读者的投稿(互助学习1群里的同学 ...

  9. python 获取表格中的空数据_在python beautifulsoup中获取表格单元格值为空时的文本输出...

    我正在编写一个beauthulsoup/python代码来从html表中获取数据.该表的问题是某些列可能有空白数据(单元格为空).当我运行这段代码时,当它第一次遇到表中的空白单元格时,它会以一个&qu ...

最新文章

  1. PHP多维数组转为一维数组的方法实例
  2. w7鼠标计算机无法识别,win7电脑遇见usb鼠标无法标识的详细处理步骤
  3. L1-020. 帅到没朋友-PAT团体程序设计天梯赛GPLT
  4. 车载双目相机,老兵的二次出征
  5. android screencap 源码,android后台截屏实现(3)--编译screencap
  6. 短视频制作团队的工作流程分为5个步骤
  7. 穷建站(二):在DnsPod中为申请的tk域名进行域名解析
  8. html中svg是什么文件,svg是什么文件格式?如何打开svg文件?
  9. 如何拍摄一部优秀的广告片——表现手法,特殊创意
  10. MySql中用sql语句实现按汉字首字母排序
  11. BS4爬取电影天堂的下载地址并保存至csv文件(一)
  12. 八皇后问题python实现
  13. 笑谈ArcToolbox (3) ArcToolbox的一亩三分地
  14. “求职路”上英语口语面试问答大全
  15. 11岁车祸截肢女孩的求助
  16. ps抠图工具使用教程
  17. 中睿 计算机 职称考试成绩,2017上半年软考成绩查询时间、查询入口【已公布】...
  18. IgH详解十四、igh添加总线链路状态监测功能
  19. 自动检测技术及仪表控制系统(一)
  20. gta5汽车oracle2数据,《GTA5》全车辆数据修改图文教程攻略

热门文章

  1. 揭秘3D电影幕后技术——两个摄像机像人眼一样拍
  2. 三个快速有效的交换友情链接的方法
  3. R语言|GO富集分析
  4. go unsafe常见应用
  5. jcrop java_jcrop截图并上传服务器 + java
  6. P7113 [NOIP2020] 排水系统 (DFS)(90Point简易算法)
  7. mysql mybaits 悲观锁_乐观锁、悲观锁,这一篇就够了!
  8. three.js自定义几何体
  9. CSDN 6月付费专栏榜单公布啦!
  10. c语言中inline函数的作用