精华内容
下载资源
问答
  • pc端通过python与arduino实现通信

    千次阅读 2020-03-31 19:55:52
    最近想做个项目,利用python抓取网页信息数据,然后根据数据分析来控制arduino实现相应的动作操作,那么首先需要实现的是电脑端与arduino通信。 一、软件安装 首先我们需要在电脑上安装python以及pycharm,相应的...

    最近想做个项目,利用python抓取网页信息数据,然后根据数据分析来控制arduino实现相应的动作操作,首先需要实现的是电脑端与arduino的通信。
    那么我们还是从最简单的点灯,实现电脑端与arduino的通信,控制LED灯一亮一灭。

    一、软件安装

    首先我们需要在电脑上安装python以及pycharm,相应的教程可以网上查找。
    pycharm安装可参考:https://www.51zxw.net/show.aspx?id=78219&cid=711
    在这里插入图片描述
    安装完成后,最重要的一步是需要在pycharm上配置python运行环境。
    在这里插入图片描述
    在这里插入图片描述
    找到python.exe文件。
    在这里插入图片描述

    二、模块安装

    我们运行主要是通信,需要安装serial,但是python对应的模块是pyserial。在pycharm软件File-settings中找到Project Interpreter,然后双击pip,在弹出栏里面搜索pyserial,找到后选中,点击Install package即可
    在这里插入图片描述

    三、通信测试

    相应的软件环境已经准备完成,接下来我们来写一段程序,测试下串口通信功能。
    新建一个文件,输入下面代码:如果没有相应python基础可上网自学
    主要功能:
    1、检测是否有可用端口
    2、如果有可用端口,循环发送字符o和c,间隔1秒

    # coding:utf-8
    
    import serial.tools.list_ports
    import time
    plist = list(serial.tools.list_ports.comports())
    
    if len(plist) <= 0:
            print("没有发现端口!")
    else:
            plist_0 = list(plist[0])
            serialName = plist_0[0]
            serialFd = serial.Serial(serialName, 9600, timeout=60)
            print("可用端口名>>>", serialFd.name)
    		while 1:
    		        serialFd.write("o".encode())
    		        time.sleep(1)
    		        serialFd.write("c.encode())
    		        time.sleep(1)
    

    用arduionIDE给arduino控制板上传接收程序:当收到字符o(open的缩写)LED灯亮,收到字符c(close的缩写)LED灯灭

    const int pinNumber = 11; //因为电路连接中用的是11好管脚作为输出
    
    //这里就是定义 开和关
    void setup(){  //arduino程序必须有的函数,用作初始化,设置管脚,调用库等等
        Serial.begin(9600); //这里要和树莓派中串口波特率一致
        pinMode(pinNumber,OUTPUT); //将10号管脚状态设置为输出状态
    }
    void loop() {
      char val = Serial.read();
      if(val == 'o')
      {
        digitalWrite(pinNumber,HIGH); 
        }
      if(val == 'c')
      {
        digitalWrite(pinNumber,LOW); 
        }
    }
    

    上传成功后,运行代码
    在这里插入图片描述
    然后就可以看到LED灯,一闪一闪了,现在通信部分原理跑通了,接下来就是爬取网络相应信息,做完处理后,给arduino发送控制信号即可

    更多交流可加微信
    在这里插入图片描述

    展开全文
  • 利用Python实现串口通信——以Arduino UNO为例实现原理基础内容Python部分Arduino部分Arduino==>PythonPython==>Arduino应用案例 实现原理 利用Python实现串口通信本质上是利用python输出一个信号(字符串、...

    本博客为作者自我学习所整理,若对读者有帮助,不胜荣幸

    实现原理

    • 利用Python实现串口通信本质上是利用python给出一个信号(只能是ASCII码),通过串口(COM)传送给硬件设备,例如:Arduino、STM32等。硬件设备接收到该信号,通过已经烧录好的程序自行处理。
    • 因此,在实现过程中,主要关注点便是:①Arduino如何发出信号到串口、python如何从串口读取信息;②python如何发送信号到串口、Arduino如何从串口读取信号。

    基础内容

    Python部分

    • 第三方库Serial
    • 安装:pip install pyserial
    • 主要函数介绍:
    import serial
    
    port_list = list(serial.tools.list_ports.comports())	# 获取当前可用的串口列表
    
    serialPort = "COM4"		# 定义/设置串口名称(在‘我的电脑’设备管理器中可以查到)
    baudRate = 9600			# 定义/设置串口波特率(要确保和设备的波特率相同)
    timeout = 1				# 定义/设置超时时间(单位:s)
    
    ser = serial.Serial(serialPort, baudRate, timeout)
    # 当然,这样也可以:ser=serial.Serial("COM4", 9600, 1)
    
    string = ser.readline().decode('utf-8')	# 读取一列数据
    str_lines = ser.readlines()				# 读取所有数据
    

    Arduino部分

    Arduino==>Python

    Python==>Arduino

    应用案例

    参考文章:

    1. 基于Arduino和python的串口通信和上位机控制
    2. Python 之 Serial串口通信-实时获取最新数据(好像没有找到其他的方案?)
    3. Python的串口通信(pyserial)
    展开全文
  • 1. def ser_write(num1,num2): try: ... bps = 9600 ... # 打开串口,并得到串口对象 ser = serial.Serial(portx, bps, bytesize=8, parity='N', stopbits=1, timeout=timex) # 写数据 ser.write(num1.en

    1.

    import serial
    
    def ser_write(num1,num2):
        try:
    
            portx = "COM3"
            bps = 9600
            timex = 5
    
            # 打开串口,并得到串口对象
            ser = serial.Serial(portx, bps, bytesize=8, parity='N', stopbits=1, timeout=timex)
    
            # 写数据
            ser.write(num1.encode("utf-8"),num2.encode("utf-8"))
    
            ser.close()  # 关闭串口
    
        except Exception as e:
            print("error!", e)

    2. 把数字1转换成‘01’

     str(1).zfill(0)
     

    展开全文
  • 因此我用python写了个上位机程序,用pyserial模块实现arduiho和电脑的串口通讯,再用xlwt模块写入excel表格,用time模块获取时间作为excel的文件名。 import xlwt import time import serial #设置表格样式 def set...
  • 问题是这样的,我用python代码向ARDUINO中传输数据的时候,只会在最初的第一次运行时向串口传输正确的字符串“openthelight”,当while循环运行结束的时候就会出现数据刷新的情况,从代码上没看出什么毛病,求大神...
  • python与arduino结合控制舵机

    千次阅读 多人点赞 2019-10-01 14:51:47
    python与arduino结合控制舵机 文章目录python与arduino结合控制舵机一.任务说明:二.环境说明:三实现说明:四代码说明:1. arduino代码2.python代码 一.任务说明: 我们要实现的是使用一个图像软件来控制舵机的...

    python与arduino结合控制舵机

    一.任务说明:

    我们要实现的是使用一个图像软件来控制舵机的角度,例如下图,直接使用鼠标来拖到滚动条,来实现舵机不同角度的控制。

    在这里插入图片描述

    二.环境说明:

    1. 本机系统:Ubuntu19.4

    2. python版本:3.71

    3. arduino版本:2:1.0.5

    4. 需要到的Python第三方库:

    ​ (1)tkinter:用于GUI图形界面的搭建

    ​ (2)pyserial::用于arduino与Python的串口通信

    1. 舵机:MG995

    三实现说明:

    python的tkinter库实现图形界面的搭建,用户拖动鼠标来改变转动的角度数据,通过serial库从串口通信把数据传送给arduino,然后arduino根据传过来的数据去控制舵机转动不同的角度。

    四代码说明:

    1. arduino代码

    (特别注意:舵机的控制需要的是模拟信号,所以舵机信号线所接的引脚应该是模拟输出端口)

    /*
      舵机的控制
    */
    
    //导入舵机的库
    #include <Servo.h>
    
    Servo servo_pin_1;
    
    int state=0; //初始状态
    int t=10; //延时毫秒
    void setup()
    {
      Serial.begin(9600);
      servo_pin_1.attach(1);//使用第1号引脚为信号输出
    }
    
    void loop()
    {
      while(!Serial)//检测是否有串口接通
      {} 
      if(Serial.available()>0) //判断是否具有输入
      {
        state=Serial.parseInt(); //接收数据
        servo_pin_1.write( state ); //定义舵机的转动角度
    //    delay( t );//延时1000毫秒
      }
    }
    
    

    2.python代码

    """
        python:tkinter控制舵机的角度
    
    """
    # 导入模块
    import serial
    import tkinter as tk
    import time
    
    # 建立串口连接
    ser = serial.Serial('/dev/ttyUSB0', 9600, timeout=0.5)
    
    
    # 创建一个按钮的窗体
    class ButtonsApp(tk.Tk):
        def __init__(self):
            super().__init__()
            # 开灯按钮 resolution=50 表示步长为50
            self.scale = tk.Scale(self, from_=0,
                                  tickinterval=30,
                                  resolution=30,
                                  to=180, length=800,
                                  width=50,  orien=tk.HORIZONTAL,
                                  cursor="hand2",
                                  command=self.on)
            self.scale.pack(padx=40, pady=10)
    
        # 控制函数,特别注意event参数的使用
        def on(self, event):
            val = str(self.scale.get())
            ser.write(val.encode('utf-8'))
            print(val)
    
    
    if __name__ == '__main__':
        app = ButtonsApp()
        app.title('滚动条控制舵机')
        app.mainloop()
    
    
    

    接好各电源线之后,应该先运行arduino程序,再运行Python程序。

    展开全文
  • I am attempting to start a motor from the computer by code in Python 3.4, using pySerial to communicate to an Arduino Uno. I have packed the value I am sending to hexidecimal, so I only have one byte ...
  • 经常的时候我们要实现两个代码之间的通信,比如说两个不同不同人写的代码要对接,例如将python指令控制Arduino控件的开关,此处使用串口通信是非常方便的,下面笔者将结合自己踩过的坑来讲述下自己的学习经历。...
  • Python-Arduino-Command-API, 用于与Arduino微控制器板通信pythonpython Arduino命令 APIpython 命令API是一个轻量级的python 库,用于 Arduino微控制器板通信通过标准的串行IO或者无线方式,通过标准串行IO...
  • 2018-05-0118:53:50 先上图: 再来视频: http://v.youku.com/v_show/id_XMzU3NzAwNzMyNA==.html?spm=a2hzp.8244740.0.0 ...from pyfirmata import Arduino, util import time import cv2 import num...
  • 前言因为Arduino具有丰富的外部接口,也拥有比较多可以直接使用的传感器,可以比较方便的获取大量环境数据,例如温度、湿度、声、光等。但这就有个问题,我要如何将arduino获取到的数据发送给树莓派进行进一步的处理...
  • 起因:学校运河杯报了个项目...因此我用python写了个上位机程序,用pyserial模块实现arduiho和电脑的串口通讯,再用xlwt模块写入excel表格,用time模块获取时间作为excel的文件名。 复制代码 1 import xlwt 2 impor...
  • 树莓派(python)与arduino串口通信

    千次阅读 2021-11-10 20:26:22
    树莓派与arduino串口通信 第一步:先设置硬件串口分配给GPIO串口 输入sudo raspi-config命令进入树莓派系统配置界面,选择第三个Interfacing Options 进去选择Serial Port 然后选择关闭串口登录功能,打开硬件串口...
  • arduino有很多可以直接使用的传感器,可以很方便的获取大量的环境数据. 常见的有: 温度(室温,冰箱,水箱等场景) 湿度(房间空气湿度,花盆土壤湿度等场景) 声(声控灯,噪音检测,深海测量,医疗器械等场景) ...
  • 树莓派与arduino串行通信

    万次阅读 2015-07-26 16:20:00
    树莓派与arduino都有一个串行口,都是TTL电平,可以直接连接。不同的是树莓派是5V供电,而arduino是3.3V供电。 1、连接方式:  树莓派的RX ----- arduino的TX  树莓派的TX ----- arduino的RX ...
  • 可以用户实现命令行交互,但是效率过慢,不清楚如何优化,使用python测试运行速度很快  PHP版本 <?php # 只允许输入字符 # 已成功运行 // fwrite(STDOUT,'请输入您的博客名:'); ...
  • 使用arduino一般都是用它自带的开发环境IDE,好处当然是方便快捷,但是,但我在使用传感器时,如果我需要接收传感器的数据,就不那么容易了,打开串口监视器: 可以通过串口监视器查看传回的数据,但无法便捷地把数据收集...
  • Python与Arduino绘制超声波雷达扫描

    千次阅读 2020-09-07 23:53:45
    前段时间看到一位发烧友制作的超声波雷达...这个嘛,我首先想到了串行通信接口。没错!就是串口。只要Arduino将数据发送给COM口,然后Python能从COM口读取到这个数据就可以啦! 我先写了一个测试程序试了一下,OK!搞定
  • 咳,时隔多月又回到了熟悉的博客园。 从现在开始重新去培养写博客的习惯。...回归正题,如何实现树莓派与Arduino串口通信 首先是接线方式 一、树莓派arduino通过USB进行通信 1、将树莓派...
  • python以及Arduino硬件编程笔记

    千次阅读 2019-06-11 21:35:31
    参照菜鸟教程http://www.runoob.com/python/python-tutorial.html Python官网https://www.python.org/ Python文档https://www.python.org/doc/ 廖雪峰的学习网站https://www.liaoxuefeng.com/wi...
  • 前言:今天早上想学一下在ubuntu ROS系统下安装Arduino实现串口通讯,在网上看了一些博客后着手开始操作。发现按他们的步骤来大体上没有什么问题(为csdn大佬们点赞),但中间过程中还是出现了一些小错误。在这里我...
  • 树莓派在和Arduino通信的过程中发现Arduino的程序一直被复位,从Arduino的开发板上也可以看出rst的灯会亮。 问题分析 这里使用python3编程,看了网上其他语言这种情况,思路应该是一样的,而且下面的并没有官方说法...
  • 用电脑Python控制Arduino

    千次阅读 2019-05-29 09:24:00
    import serial #导入串口通讯库 import time ser=serial.Serial("com4",9600,timeout=1) demo1=b"0" demo2=b"1" while 1: c = input('请输入指令:') if (c == '0'): ser.write(...
  • 本文参考并结合两篇相关...1、搭建树莓派串口通信开发环境 树莓派中安装python的GPIO模块(库文件),在树莓派中总链接不上,所以建议直接登录网址手动下载,并且可以选择最新版本(博主此时用的是RPi.GPIO-0.6.3) ...
  • arduino与Python数据交互

    2021-04-17 22:09:53
    Arduino代码 在串口中循环发送 1,2,3 然后一次累加 int a = 1; int b = 2; int c = 3; void setup() { // put your setup code here, to run once: Serial.begin(9600); } void loop() { Serial.print(a); ...
  • 1.树莓派上Python: import tkinter import serial ser = serial.Serial('/dev/ttyACM0', 9600, timeout=1)... ser.write(val.encode('utf-8')) # python3中write()串口写字符需加encode()转码,否则报错 win = tk

空空如也

空空如也

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

python与arduino串口通信

python 订阅