Python + Arduino, 自动化的好帮手

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,完成自动化的控制。


猜你喜欢

转载自blog.csdn.net/jgw2008/article/details/80595142