Python + Arduino, 自动化的好帮手

本文介绍了一个Arduino与Python进行串口通信的实际案例。通过简单的自动化操作演示,展示了如何利用Arduino读取串口数据并反馈给PC端,同时提供了Python端发送与接收数据的示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Arduino以其简单易用,颇受创客喜爱,标准的硬件接口,丰富的外设资源,以及友好的编程接口,将单片机的应用门槛全都削掉了。

Python呢,有脚本语言的易用易入门的特点,还有类C语言的强大功能,而且跨平台,最近几年的兴起,就说明了Python的魔力。

但,如果有一天,Arduino和Python撞到一起,会擦出什么火花呢?真是好期待,下面就以自己要做的小项目和大家共享一些应用实例。

今天要分析的实例,是一个自动化操作的例子。这种类型的自动化可以用于工厂,也可以用于其他产品的研发过程中。设计要求,PC通过USB或者Bluetooth给自动化设备下指令,完成对治具的控制。我们先探探串口通信是否行的通,

在Arduino端,我们读取UART端的信息,读取之后再把读到的信息回传回去,代码如下

/*
 * File Name: uart_test.c
 * Description: Test uart to do read and write
 * Author: Guangwei Jiang
 * Create Date: 2018-06-05
 */
char buffer[18];

void setup() {
  // initialize  serial ports:
  Serial.begin(9600);
  Serial.flush();

}

void loop() {
  // Try to get the data from serial port
  if (Serial.available() > 0) {    
    int index = 0;
    delay(100);
    int numChar = Serial.available();
    if (numChar>15) {
      numChar=15;
    }
    memset(buffer, 0, sizeof(buffer));
    while (numChar--) {
      buffer[index++] = Serial.read();
    }
    
    Serial.println(buffer);
    Serial.flush();
  }

}

PC host端,同样做个十分简单的小程序,来向串口写入数据之后再回读,代码如下,

# This file is to test the serial port in the host side

import serial
import time

ser = serial.Serial('/dev/ttyACM0', 9600, timeout=1)
time.sleep(2)
ser.write("Hello world, shake with arduino")
time.sleep(2)
s = ser.read(40)
print(s)
ser.close()

测试结果如下,

$ python serial_test_host.py 
Hello world, sh
ake with arduin
o

说明串口传输数据是完全可行的,如果采用Bluetooth Serial,代码也类似。

后面的事情,就是建立command list,完成自动化的控制。


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值