精华内容
下载资源
问答
  • 主要介绍了python Arduino串口传输数据到电脑并保存至excel表格,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
  • 今天小编就为大家分享一篇Python 读取串口数据,动态绘图的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • python读取arduino串口数据

    千次阅读 2020-07-27 21:32:36
    背景:Arduino101板子可以测量姿态数据:heading(航向角)、pitch(俯仰角)、roll(侧翻角),利用Python读取串口数据并保存到电脑里。 打开串口监视器,如下图: 代码: # 读取arduino串口数据并保存 import ...

    背景:Arduino101板子可以测量姿态数据:heading(航向角)、pitch(俯仰角)、roll(侧翻角),利用Python读取串口数据并保存到电脑里。
    打开串口监视器,如下图:
    在这里插入图片描述
    代码:

    # 读取arduino串口数据并保存
    import serial
    import pandas as pd
    
    # sets up serial connection (make sure baud rate is correct - matches Arduino)
    # 设置串口号和波特率和Arduino匹配
    ser = serial.Serial('com6', 9600)
    # a为储存数据的列表
    a = []
    # count为次数,采集多少次就停止
    count = 0
    while count != 30:  # 30可以根据需要设置,while(True):代表一直读下去
        # reads until it gets a carriage return. MAKE SURE THERE IS A CARRIAGE RETURN OR IT READS FOREVER
        data = ser.readline()  # 按行读取串口数据进来
        data = data.decode()  # 读进来的数据是bytes形式,需要转化为字符串格式
        data = data[13:30]  # 数据格式是'Orientation: 180.87 2.16 -3.86\r\n',取第13到29为字符出来就是-->'180.87 2.16 -3.86'
        data = data.split(" ")  # 以空格为分隔符分隔字符串-->['180.87', '2.16', '-3.86']
        count += 1
        data = list(map(float, data))  # 把字符串转化为数字-->[180.87, 2.16, -3.86]
        print(data)
        a.append(data)  # 添加到列表里
    
    df = pd.DataFrame(a)  # 转化为df格式数据
    # print(df)
    df.to_excel('D:\桌面文件\\bp\\angle.xls', header=False, index=False)
    
    

    代码来自Github,略作修改。

    展开全文
  • Python读取arduino数据并实时绘图

    万次阅读 多人点赞 2018-10-24 19:13:47
    python编写串口代码与数据显示 绘图使用matplotlib库 Arduino代码 DallasTemperature 下载地址 https://www.arduino.cn/thread-82352-1-1.html #include <OneWire.h> #include <...

    我使用arduino uno 与 ds18b20。

    python编写串口代码与数据显示

    绘图使用matplotlib库

    Arduino代码

    DallasTemperature 下载地址  

    https://www.arduino.cn/thread-82352-1-1.html

    #include <OneWire.h>
    #include <DallasTemperature.h>
    
    // Data wire is plugged into pin 2 on the Arduino
    #define ONE_WIRE_BUS 2
    // Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs)
    OneWire oneWire(ONE_WIRE_BUS);
    // Pass our oneWire reference to Dallas Temperature. 
    DallasTemperature sensors(&oneWire);
    
    void setup(void)
    {
      Serial.begin(9600); //Begin serial communication
      Serial.println("Arduino Digital Temperature // Serial Monitor Version"); //Print a message
      sensors.begin();
    }
    
    void loop(void)
    { 
      // Send the command to get temperatures
      sensors.requestTemperatures();  
      Serial.print("Temperature is: ");
      Serial.println(sensors.getTempCByIndex(0)); // Why "byIndex"? You can have more than one IC on the same bus. 0 refers to the first IC on the wire
      //Update value every 1 sec.
      delay(1000);
    }

     

    Python代码

    import serial
    import matplotlib.pyplot as plt
    from drawnow import *
    import atexit
    import time
    
    values = []
    plt.ion()#打开交互模式
    
    
    serialArduino = serial.Serial('COM14', 9600)
    
    def plotValues():
        plt.title('Serial temperature from Arduino')
        plt.grid(True)
        plt.ylabel('temperature')
        plt.plot(values,'rx-', label='temperature')
        plt.legend(loc='upper right')
    
    def doAtExit():
        serialArduino.close()
        print("Close serial")
        print("serialArduino.isOpen() = " + str(serialArduino.isOpen()))
    
    atexit.register(doAtExit)#程序退出时,回调函数
    
    print("serialArduino.isOpen() = " + str(serialArduino.isOpen()))
    
    #预加载虚拟数据
    for i in range(0,50): 
        values.append(0)
    
        
    while True:
        while (serialArduino.inWaiting()==0):
            pass
        print("readline()")
        valueRead = serialArduino.readline(500)
    
        #检查是否可以输入有效值
        try:
            valueInInt = float(valueRead)
            print(valueInInt)
            if valueInInt <= 1024:
                if valueInInt >= 0:
                    values.append(valueInInt)
                    values.pop(0)
                    drawnow(plotValues)
                else:
                    print("Invalid! negative number")#无效  负数
            else:
                print("Invalid! too large")# 无效 超过1024
        except ValueError:
            print("Invalid! cannot cast")

     

    展开全文
  • 以下是我的代码,运行时也没有报错,但没有图形显示出来,怎么回事呢? import serial, argparse from collections import deque import matplotlib.pyplot as plt import matplotlib.animation as animation ...
  • 关于python读取Arduino发送的串口数据将bytes转换为str问题 Arduino作为一款非常好的开源软件,在控制领域十分受欢迎。最近在做一件事就是将Arduino的数据通过串口传输到电脑,然后电脑端使用python读取数据,进而...

    关于python读取Arduino发送的串口数据将bytes转换为str问题

    Arduino作为一款非常好的开源软件,在控制领域十分受欢迎。最近在做一件事就是将Arduino的数据通过串口传输到电脑,然后电脑端使用python读取数据,进而用于控制。但是python3的串口读取数据为bytes类型,因此一般都需要将bytes类型转换为字符串类型,编码格式通常使用utf-8。 不幸的是,Arduino传输开启后,python进行读取,在读取的前三个字节串是随机的,但是utf-8又不支持一部分的字节串转换。因此我想出一种解决办法是:
    读取到串口数据后,先使用strip()函数去掉数据后面的"\r\n",然后使用decode()函数将bytes转换为str,decode()函数内必须有一个‘’ignor参数。具体代码如下:

    一、Arduino端

    简单向串口发送一个数字

    void setup(){
    	Serial.begin(9600);
    }
    void loop(){
    	Serial.println(100)
    }

    二、python端

    import serial
    serialPort = "COM3"
    baudRate = 9600
    myser = serial.Serial(serialPort,baudRate,timeout = 0.5)
    print("参数设置:串口=%s ,波特率=%d" % (serialPort, baudRate))
    while(1):	
    	#从串口读取数据
        data = myser.readline()  
        print(data)    
        print(type(data))
          
        #去掉串口读取的"\r\n"    
        data = data.strip()
        #将字节串变成字符串并且忽略不合法字符串,,因为部分字符串不能转换为utf-8    
        data = data.decode('utf-8','ignore')    
        print(data)    
        print(type(data))
    ser.close()

    运行结果
    运行结果

    展开全文
  • 今天来实践将串口数据保存到本地,通过串口读取DHT11温湿度传感器所检测的值,方便之后上传数据。 1、Arduino代码 该代码已经预先装好了DHT11所需要的库文件,如果不会装库文件可以参考之前发的帖子毕设笔记04 #...

    今天来实践将串口数据保存到本地,通过串口读取DHT11温湿度传感器所检测的值,方便之后上传数据。
    1、Arduino代码
    该代码已经预先装好了DHT11所需要的库文件,如果不会装库文件可以参考之前发的帖子毕设笔记04

    #include <dht11.h>
    dht11 DHT;
    #define DHT11_PIN 4
    void setup(){
        Serial.begin(9600);
        Serial.println("DHT TEST PROGRAM ");
        Serial.print("LIBRARY VERSION: ");
        Serial.println(DHT11LIB_VERSION);
        Serial.println();
        Serial.println("Type,\tstatus,\tHumidity (%),\tTemperature (C)");
    } 
    void loop(){
        int chk;
        Serial.print("DHT11, \t");
        chk = DHT.read(DHT11_PIN); 
        switch (chk){
            case DHTLIB_OK: 
            Serial.print("OK,\t"); 
            break;
            case DHTLIB_ERROR_CHECKSUM: 
            Serial.print("Checksum error,\t"); 
            break;
            case DHTLIB_ERROR_TIMEOUT: 
            Serial.print("Time out error,\t"); 
            break;
            default: 
            Serial.print("Unknown error,\t"); 
            break;
       }
        Serial.print(DHT.humidity,1);
        Serial.print(",\t");
         Serial.println(DHT.temperature,1);
        delay(1000);
    }
    

    将代码编译并下载到Arduino开发板,DHT11温湿度传感器与Arduino接线如下表:

    DHT11Arduino
    VCC3.3V
    DATADIGITAL 4
    GNDGND

    2、安装 pyserial模块
    pyserial模块封装了对串口的访问,系统要求:python 2.3及以上版本。
    在电脑命令提示符窗口切换到python的安装路径,执行如下命令:

    pip install pyserial
    

    自动安装等待即可,如下图就表明安装成功:
    在这里插入图片描述
    3、python代码

    import time
    import serial
    ser = serial.Serial(
        port='COM4',                   #端口号
        baudrate=9600,
        parity=serial.PARITY_ODD,      # 校验位 
        stopbits=serial.STOPBITS_TWO,  # 停止位
        bytesize=serial.SEVENBITS      # 数据位
    )
    data = ''
    while True:
        data = ser.readline()
        t = time.time()
        ct = time.ctime(t)
        print(ct, ':')
        print(data)
        f = open('D:/test.txt', 'a')#数据保存的路径
        f.writelines(ct)
        f.writelines(':\n')
        f.writelines(data.decode('utf-8'))
        f.close()
    

    注:端口号在Arduino连接电脑后在设备管理器中查看,自己的是COM几就修 改为COM几
    在自己想要保存数据的文件夹新建 .txt文件,命令随意,在代码上修改数据保存的路径
    在python自身提供的IDLE集成开发环境执行如上代码,或者直接在命令提示符窗口下执行,执行结果如下(cmd中运行):
    111111
    打开保存数据的 test.txt 文件,即可看到温湿度数据已经保存到文件之中。
    在这里插入图片描述

    展开全文
  • 起因:学校运河杯报了个项目...因此我用python写了个上位机程序,用pyserial模块实现arduiho和电脑的串口通讯,再用xlwt模块写入excel表格,用time模块获取时间作为excel的文件名。 复制代码 1 import xlwt 2 impor...
  • 使用python读取arduino串口发送的旋转编码器数据,去除换行和回车符号“\n\t",并解析bytes,转化为数组。激光雷达的数据是字典类型,我们还需要将其转换成DataFrame格式的数据,运用pandas库处理数据。 1.1 串口...
  • 利用Python实现串口通信——以Arduino UNO为例实现原理基础内容Python部分Arduino部分Arduino==>PythonPython==>Arduino应用案例 实现原理 利用Python实现串口通信本质上是利用python输出一个信号(字符串、...
  • 问题是这样的,我用python代码向ARDUINO中传输数据的时候,只会在最初的第一次运行时向串口传输正确的字符串“openthelight”,当while循环运行结束的时候就会出现数据刷新的情况,从代码上没看出什么毛病,求大神...
  • 转:PC上 python 通过串口arduino 读写交互成功,哈哈,真好玩原文地址:http://blog.csdn.net/wangtaonice/article/details/50334005 纯 arduino 新手,高手勿笑,月初买的 arduino 板, 前天开始折腾, 好...
  • 基于python实现串口通讯,从串口读取数据后进行动态曲线绘制,然后将数据保存到文件中,曲线绘制可实现暂停
  • Arduino的IDE编辑器上实现检测降雨量是比较简单的操作,在下面这个网址里有详细教程:...通过pythonArduino开发板上实现blink—Arduino学习笔记1 在里面已经详细介绍了...
  • 前言因为Arduino具有丰富的外部接口,也拥有比较多可以直接使用的传感器,可以比较方便的获取大量环境数据,例如温度、湿度、声、光等。但这就有个问题,我要如何将arduino获取到的数据发送给树莓派进行进一步的处理...
  • 之前实践了使用Python读取电脑端口的数据并保存到本地毕设笔记05,该功能实现主要在于 pyserial模块封装了对串口的访问,既然serial能够访问电脑的串口,那么同理也能访问树莓派的串口。该篇尝试将Arduino连接到...
  • 经常的时候我们要实现两个代码之间的通信,比如说两个不同不同人写的代码要对接,例如将python指令控制Arduino控件的开关,此处使用串口通信是非常方便的,下面笔者将结合自己踩过的坑来讲述下自己的学习经历。...
  • arduino有很多可以直接使用的传感器,可以很方便的获取大量的环境数据. 常见的有: 温度(室温,冰箱,水箱等场景) 湿度(房间空气湿度,花盆土壤湿度等场景) 声(声控灯,噪音检测,深海测量,医疗器械等场景) ...
  • 今天小编就为大家分享一篇使用Python串口实时显示数据并绘图的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • Arduino 串口读写函数快慢/时间花费

    千次阅读 2018-05-10 09:01:00
    Arduino的读函数功能和时间花费(串口通信必知): (1) Serial.read(): 每次只读取一个字节(or 一个字母),但是单次读取时间很快;Serial.readString(): 每次读取一个字符串,程序不知道什么时候能够读取完整的...
  • 本来在树莓派的arduino ide下是没问题的但是后来想通过python serial监视的时候就报错了报错的python代码是这样的:import serial ser = serial.Serial('/dev/ttyACM0', 9600, timeout=1) ser.open() ser.write(&...
  • PythonArduino绘制超声波雷达扫描

    千次阅读 2020-09-07 23:53:45
    前段时间看到一位发烧友制作的超声波雷达...这个嘛,我首先想到了串行通信接口。没错!就是串口。只要Arduino将数据发送给COM口,然后Python能从COM口读取到这个数据就可以啦! 我先写了一个测试程序试了一下,OK!搞定
  • python DAQ在rpi上运行,通过串口Arduino读取数据,然后将数据发送到emoncms云服务器,并由运行我们应用程序的android设备读取以进行数据可视化。 闹钟设置 如果从 Arduino 读取的数据超过设置的阈值,将通过通知...
  • Python + Arduino, 自动化的好帮手

    万次阅读 2018-06-06 16:28:55
    Arduino以其简单易用,颇受创客喜爱,标准的硬件接口,丰富的外设资源,以及友好的编程接口,将单片机的应用门槛全都削掉了。Python呢,有脚本语言的易用易入门的特点,还有类C语言的强大功能,而且跨平台,最近几年...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 579
精华内容 231
关键字:

python读取arduino串口

python 订阅