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