Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

Control de sensores y actuadores con Raspberry Pi: acelerómetro, servo y streaming de datos

Mientras la mayoría de los desarrolladores trabajan con archivos estáticos o gráficos simples, la computación física abre la puerta a la interacción con el mundo real. Leyendo datos de sensores y controlando actuadores, puedes crear sistemas que perciben, deciden y actúan en el entorno físico.

Objetivo

Utilizar una Raspberry Pi para leer valores de un acelerómetro y comandar un motor servo, demostrando conceptos clave de la computación física.

Conceptos clave

Este artículo recorre cuatro proyectos prácticos en Python que ilustran las capacidades de hardware de la Pi:

Parpadear un LED

Un LED (diodo emisor de luz) emite luz cuando circula corriente en una dirección. Para proteger la Pi y el LED, usa una resistencia entre 500 Ω y 1,5 kΩ. El valor puede calcularse con R = (V_s - V_d) / I, pero el rango mencionado funciona para la mayoría de kits de aficionados.

import time
from itertools import cycle
import RPi.GPIO as io
io.setmode(io.BCM)
io.setup(12, io.OUT)
for state in cycle([1, 0]):
    io.output(12, state)
    time.sleep(0.5)

El código configura el pin 12 como salida y lo conmuta cada medio segundo, haciendo parpadear el LED.

Leer un potenciómetro

Un potenciómetro es una resistencia variable que convierte la posición de una perilla en voltaje. Como los pines GPIO son digitales, necesitamos un Conversor Analógico-Digital (ADC). El MCP3008 ofrece ocho canales de 10 bits, mapeando 0–3,3 V a valores enteros 0–1023.

Instala spidev para comunicarte con el MCP3008 vía SPI:

pip install spidev

Ejecuta el siguiente script para leer valores del canal 0:

import spidev
import time
spi = spidev.SpiDev()
spi.open(0, 0)
def readadc(adcnum):
    if not 0 <= adcnum <= 7:
        return -1
    r = spi.xfer2([1, (8 + adcnum) << 4, 0])
    adcout = ((r[1] & 3) << 8) + r[2]
    return adcout
while True:
    val = readadc(0)
    print(val)
    time.sleep(0.5)

Transmitir datos con ØMQ

ØMQ simplifica las redes proporcionando una librería de mensajería de alto rendimiento. Usando el patrón REQUEST/REPLY, puedes construir un servidor y cliente ligeros en Python.

Servidor

import zmq
context = zmq.Context()
socket = context.socket(zmq.REP)
socket.bind('tcp://*:1980')
while True:
    message = socket.recv()
    print(message)
    socket.send(b"I'm here")

Cliente

import zmq
context = zmq.Context()
socket = context.socket(zmq.REQ)
socket.connect('tcp://192.168.1.6:1980')
for _ in range(10):
    socket.send(b'You home?')
    message = socket.recv()
    print(message)

Con traits y enaml, puedes crear una UI responsiva que visualice los datos transmitidos. Consulta el demo acc_plot para un ejemplo completo.

Controlar un motor servo

Los servos se mueven a posiciones precisas usando Modulación por Ancho de Pulso (PWM). Un servo típico interpreta un pulso de 0,5 ms como ángulo mínimo y 2,5 ms como máximo, repitiéndose cada 20 ms.

Lograr temporización precisa en un SO de propósito general es difícil. ServoBlaster es un módulo de kernel que descarga la generación PWM al controlador DMA, exponiendo una interfaz simple /dev/servoblaster.

He encapsulado esta funcionalidad en una pequeña librería orientada a objetos: RobotBrain. El ejemplo siguiente mueve un servo del 0 % al 100 % de ciclo de trabajo.

import time
import numpy as np
from robot_brain.servo import Servo
# Inicializa servo en pin 4 con anchos de pulso min/max personalizados (en µs)
servo = Servo(0, min=60, max=200)
for val in np.arange(0, 1, 0.05):
    servo.set(val)
    time.sleep(0.1)

Usa el demo servo_slider en GitHub para ver cómo controlar el servo por red.

Para profundizar en el control de sensores y actuadores con Raspberry Pi, consulta la documentación original o tutoriales de la comunidad.

Proceso de manufactura

  1. Integración MQTT fluida: sensores NodeMCU DHT22 con Raspberry Pi 3 B+ como broker
  2. Construya un registrador de temperatura con Raspberry Pi y sensor I2C de 5 $
  3. Conectar múltiples sensores DS18B20 1‑Wire a Raspberry Pi para monitorización precisa de temperatura
  4. Construya un sensor de temperatura remoto con Raspberry Pi y Python – Guía paso a paso
  5. Construya una estación meteorológica con Raspberry Pi que envíe datos diarios por email
  6. Conexión del sensor ultrasónico HC‑SR04 a Raspberry Pi 3 – Guía completa
  7. Controle un LED con Sensor PIR de Movimiento en Raspberry Pi
  8. Construya un Sensor de Humedad de Suelo de Bajo Coste para Riego Inteligente con Raspberry Pi
  9. Lectura de Sensor Hall Lineal con Raspberry Pi: Guía Java y Análisis del ADC0832
  10. Construya un Sistema de Monitorización de Temperatura y Luz Multi‑Sensor con Raspberry Pi y DS18B20
  11. Sensor de ocupación para baño con Raspberry Pi: alertas por voz y SMS mediante Twilio