Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Maîtriser le contrôle des capteurs et actionneurs sur Raspberry Pi : Accéléromètre, Servo et Streaming de données

Alors que la plupart des développeurs travaillent avec des fichiers statiques ou des graphiques simples, l'informatique physique ouvre la porte à l'interaction avec le monde réel. En lisant des données de capteurs et en pilotant des actionneurs, vous pouvez créer des systèmes qui perçoivent, décident et agissent dans l'environnement physique.

Objectif

Utiliser un Raspberry Pi pour lire les valeurs d'un accéléromètre et commander un moteur servo, démontrant les concepts clés de l'informatique physique.

Concepts clés

Cet article présente quatre projets Python pratiques illustrant les capacités matérielles du Pi :

Faire clignoter une LED

Une LED (diode électroluminescente) émet de la lumière quand le courant passe dans un sens. Pour protéger le Pi et la LED, utilisez une résistance entre 500 Ω et 1,5 kΩ. La valeur peut être calculée avec R = (V_s - V_d) / I, mais la plage ci-dessus convient à la plupart des kits pour amateurs.

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)

Le code configure la broche 12 en sortie et la bascule toutes les demi-secondes, faisant clignoter la LED.

Lire un potentiomètre

Un potentiomètre (pot) est une résistance variable qui convertit la position d'un bouton en tension. Comme les broches GPIO sont numériques, nous avons besoin d'un convertisseur analogique-numérique (ADC). Le MCP3008 offre huit canaux 10 bits, mappant 0–3,3 V sur des valeurs entières 0–1023.

Installez spidev pour communiquer avec le MCP3008 via SPI :

pip install spidev

Exécutez le script suivant pour lire les valeurs du 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)

Streamer des données avec ØMQ

ØMQ simplifie la mise en réseau en fournissant une bibliothèque de messagerie haute performance. En utilisant le motif REQUEST/REPLY, vous pouvez construire un serveur et un client légers en Python.

Serveur

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")

Client

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)

Avec traits et enaml, vous pouvez créer une interface utilisateur réactive qui visualise les données streamées. Voir la démo acc_plot pour un exemple complet.

Contrôler un moteur servo

Les servos se positionnent avec précision grâce à la modulation de largeur d'impulsion (PWM). Un servo de loisir typique interprète une impulsion de 0,5 ms comme angle minimum et 2,5 ms comme maximum, se répétant toutes les 20 ms.

Une temporisation précise est difficile à atteindre dans un OS généraliste. ServoBlaster est un module noyau qui délègue la génération PWM au contrôleur DMA, exposant une interface simple /dev/servoblaster.

J'ai encapsulé cette fonctionnalité dans une petite bibliothèque orientée objet : RobotBrain. L'exemple ci-dessous montre le déplacement d'un servo de 0 % à 100 % de cycle de service.

import time
import numpy as np
from robot_brain.servo import Servo
# Initialiser le servo sur la broche 4 avec largeurs d'impulsion min/max personnalisées (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)

Utilisez la démo servo_slider sur GitHub pour voir comment le servo peut être contrôlé par le réseau.

Pour une exploration plus approfondie du contrôle de capteurs et actionneurs avec le Raspberry Pi, consultez la documentation originale ou les tutoriels de la communauté.

Processus de fabrication

  1. Intégration MQTT transparente : capteurs NodeMCU DHT22 avec Raspberry Pi 3 B+ comme broker
  2. Construire un enregistreur de température Raspberry Pi avec capteur I2C à 5 $
  3. Connecter plusieurs capteurs DS18B20 1-Wire à un Raspberry Pi pour une surveillance température précise
  4. Construire un capteur de température distant avec Raspberry Pi et Python – Guide étape par étape
  5. Construire une station météo Raspberry Pi qui envoie les données météo quotidiennes par email
  6. Connexion du capteur ultrasonique HC‑SR04 au Raspberry Pi 3 : Guide complet
  7. Contrôler une LED avec un capteur de mouvement PIR sur Raspberry Pi
  8. Construire un capteur d'humidité du sol Raspberry Pi low-cost pour irrigation intelligente
  9. Lecture d'un capteur Hall linéaire avec Raspberry Pi : Guide Java et insights ADC0832