Este artículo presenta el uso de Arduino para conducir la distancia de medición ultrasónica y enviar datos a Python a través del puerto serie, para realizar el procesamiento de datos, los resultados del procesamiento se muestran en la figura.
Preparación
Módulo ultrasónico + placa de desarrollo arduino + número de línea DuPont + entorno de desarrollo python
Ideas
Primero use la distancia del vehículo arduino, envíe datos al código python a través del puerto serie para el procesamiento de datos y dibuje una imagen para la visualización en tiempo real.
Introducción del módulo ultrasónico
Como se muestra en la figura anterior, VCC proporciona una fuente de alimentación de 5V, GND es el cable de tierra, la entrada de señal de control de disparo TRIG, la salida de señal de eco ECHO y otras cuatro interfaces.
2. Conexión del circuito
El cableado es relativamente simple, solo conéctese en el siguiente orden:
3. Programación
El código está escrito de acuerdo con el principio del módulo. La secuencia de operación durante el rango ultrasónico es la siguiente:
El diagrama de tiempo anterior muestra que solo necesita proporcionar una señal de disparo de pulso de más de 10 uS, el módulo enviará ocho niveles de ciclo de 40 kHz y detectará el eco. Una vez detectado
La señal de eco emite una señal de eco. El ancho de pulso de la señal de eco es proporcional a la distancia medida. Por lo tanto, se puede calcular el intervalo de tiempo desde la señal de transmisión hasta la señal de eco recibida
A distancia. Fórmula: uS / 58 = cm o uS / 148 = pulgada; o: distancia = tiempo de alto nivel * velocidad del sonido (340M / S) / 2; se recomienda que el período de medición sea superior a 60 ms
Prevenir la influencia de la señal transmitida en la señal de eco.
Nota:
1. Este módulo no es adecuado para la conexión en vivo. Si se requiere una conexión en vivo, conecte primero el terminal GND del módulo, de lo contrario afectará el funcionamiento normal del módulo.
2. Durante la medición de distancia, el área del objeto medido no es inferior a 0,5 metros cuadrados y el plano debe ser lo más plano posible, de lo contrario afectará el resultado de la medición.
Escriba el código de la siguiente manera:
/**
* 文件: 超声测距.ino by 零知实验室([url=http://www.lingzhilab.com]www.lingzhilab.com[/url])
* -^^- 零知开源,让电子制作变得更简单! -^^-
**/
#define SR04_TRIG 9
#define SR04_ECHO 10
// the setup routine runs once when you press reset:
void setup() {
// put your setup code here, to run once:
pinMode(SR04_TRIG, OUTPUT);
pinMode(SR04_ECHO, INPUT);
Serial.begin(9600);
}
// the loop routine runs over and over again forever:
void loop() {
// put your main code here, to run repeatedly:
int distance = getDistance();
Serial.print("distance = ");
Serial.println(distance);
delay(300);
}
Instalación de la biblioteca en serie
Instalar pip install serial. Después de descargarlo e instalarlo durante un tiempo, y luego ejecutarlo, aún aparece el mismo error. Comprobado en Internet, debe instalar pip install pyserial.
Si el método anterior no se instala, es posible que deba descargarlo e instalarlo.
En https://pypi.org/project/pyserial/#files , hay
Descargue este archivo de formato de rueda en Windows. Acerca del archivo de rueda
Si ha instalado pip, entonces necesita actualizarlo a la última versión.
Ejecute cmd como administrador y
vaya al directorio Scripts del directorio de instalación de Python:
cd C:\Program Files\Python36\Scripts
pip install wheel
pip install 路径\文件名.whl:
pip install C:\Users\0AQZ0\Downloads\matplotlib-2.1.2-cp27-cp27m-win_amd64.whl
La experiencia anterior proviene del: blog de EmbededDriver https://blog.csdn.net/u012308586/article/details/89449004
instalación de la biblioteca matplotlib
Primero, el método general
1. Win + R ingrese cmd para ingresar a la ventana CMD, ejecute python -m pip install -U pip setuptools para actualizar.
2. Ingrese python -m pip install matplotlib para la instalación automática, el sistema descargará automáticamente el paquete de instalación
3. Ingrese python inactivo, ejecute import matplotlib, como se muestra en la siguiente figura, si no hay ningún error, demuestra los resultados de la instalación.
Ingrese el siguiente código para ejecutar los resultados y demostrar que la instalación está bien
import matplotlib.pyplot as plt
labels='frogs','hogs','dogs','logs'
sizes=15,20,45,10
colors='yellowgreen','gold','lightskyblue','lightcoral'
explode=0,0.1,0,0
plt.pie(sizes,explode=explode,labels=labels,colors=colors,autopct='%1.1f%%',shadow=True,startangle=50)
plt.axis('equal')
plt.show()
El método anterior proviene de: Piggyman le gusta el blog peek-a-boo : El tutorial de instalación de matplotlib más simple
II. Método especial
Le sugiero que instale matplotlib con archivos exe. Utilicé setuptools para instalarlo. No fue exitoso y provocó un montón de errores. Por lo tanto, recomiendo la instalación exe, escribo la lista de archivos de instalación exe de matplotlib en los siguientes materiales de referencia. Puede encontrar la descarga de la versión correspondiente. Aquí está el proceso de instalación:
1. Primero, descargamos la versión adecuada para usted
2. Ábrala, verá la interfaz de instalación, haga clic en Siguiente
3. Aquí, ingrese el directorio de instalación de Python y haga clic en Siguiente
4. Captura de pantalla del proceso de instalación
5. Ahora la instalación está completa. Presente para ver si hay un error. Si no hay error, la instalación fue exitosa.
Referencia de error:
Si obtiene un error: ImportError: matplotlib requiere dateutil, puede leer este artículo: http://jingyan.baidu.com/article/aa6a2c14d5aa7f0d4c19c4e2.html
Si obtiene un error: ImportError: matplotlib requiere
pyparsing, puede leer este artículo: http://jingyan.baidu.com/article/e4d08ffdd3b9690fd2f60de2.html
La experiencia anterior proviene de la experiencia de Baidu: tutorial de Python: [55] instalación de matplotlib y método de descarga https://jingyan.baidu.com/article/154b46315523b428ca8f41e2.html
Python lee el código de datos en serie
import serial
ser=serial.Serial("COM3",115200,timeout=0.5) #打开串口
while (1):
ch=ser.read()
str1=ch.decode("iso-8859-15") #bytes转str
if(str1): #判断数据是否为空,很重要
l=ord(str1) #str转int,方便数据计算和处理
print("%x" % l)
pass
Código de programa para dibujar imágenes de Python
import matplotlib.pyplot as plt
ax = [] # 定义一个 x 轴的空列表用来接收动态的数据
ay = [] # 定义一个 y 轴的空列表用来接收动态的数据
plt.ion() # 开启一个画图的窗口
i=1
while i<1000:
#print(b)
if b == "":
b = 0
#print(b)
else:
b = float(b)
#print(b)
ax.append(i) # 添加 i 到 x 轴的数据中
i=i+1
ay.append(b) # 添加 i 的平方到 y 轴的数据中
plt.clf() # 清除之前画的图
plt.plot(ax,ay) # 画出当前 ax 列表和 ay 列表中的值的图形
plt.pause(0.1) # 暂停一秒
plt.ioff() # 关闭画图的窗口
La imagen dibujada es la siguiente
Código general
código arduino:
int TrgPin = A0;
int EcoPin = A1;
float dist;
void setup()
{
Serial.begin(9600);
//设置TrgPin为输出状态
pinMode(TrgPin, OUTPUT);
// 设置EcoPin为输入状态
pinMode(EcoPin, INPUT);
}
void loop()
{
digitalWrite(TrgPin, LOW);
delayMicroseconds(8);
digitalWrite(TrgPin, HIGH);
// 维持10毫秒高电平用来产生一个脉冲
delayMicroseconds(10);
digitalWrite(TrgPin, LOW);
// 读取脉冲的宽度并换算成距离
dist = pulseIn(EcoPin, HIGH) / 58.00;
Serial.print("Distance:");
Serial.print(dist);
Serial.println("cm");
delay(300);
}
Código de Python:
import matplotlib.pyplot as plt
import serial
serialPort = "COM4" # 串口
baudRate = 9600 # 波特率
ser = serial.Serial(serialPort, baudRate, timeout=0.1)
#print("参数设置:串口=%s ,波特率=%d" % (serialPort, baudRate))
ax = [] # 定义一个 x 轴的空列表用来接收动态的数据
ay = [] # 定义一个 y 轴的空列表用来接收动态的数据
plt.ion() # 开启一个画图的窗口
i=1
while i<1000:
str1 = ser.readline()
str1 = str(str1)
b = str1.lstrip("b'")
b = b.lstrip("Distance:")
b = b.rstrip("'")
b = b.replace('\\n', '').replace('\\r', '')
b = b.lstrip()
b = b.replace('cm', '')
b = b.lstrip()
#print(b)
if b == "":
b = 0
#print(b)
else:
b = float(b)
#print(b)
ax.append(i) # 添加 i 到 x 轴的数据中
i=i+1
ay.append(b) # 添加 i 的平方到 y 轴的数据中
plt.clf() # 清除之前画的图
plt.plot(ax,ay) # 画出当前 ax 列表和 ay 列表中的值的图形
plt.pause(0.1) # 暂停一秒
plt.ioff() # 关闭画图的窗口
while 1:
print("处理完毕!")
Lo anterior es todo el contenido de este artículo, sígueme para obtener más información.