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

Établir une Communication UART entre Raspberry Pi 4 et Cartes HiFive1

Dans ce labo, vous mettrez en place des liaisons UART fiables entre un Raspberry Pi 4 et un HiFive1, programmerez le HiFive1 pour écho des données reçues, et créerez un script Python sur le Pi pour transmettre des angles de direction à la carte.

Partie 0 : Activer l'UART sur le Raspberry Pi 4

Le Pi 4 est livré avec quatre contrôleurs UART. Pour cet exercice, nous utiliserons uart2 et uart3. Ajoutez la ligne suivante à /boot/config.txt et redémarrez :

dtoverlay=uart2,115200
dtoverlay=uart3,115200

Après redémarrage, les nœuds de périphérique /dev/ttyAMA1 (uart2) et /dev/ttyAMA2 (uart3) seront disponibles.

Connectez les cartes comme suit :

Depuis le Pi, vous pouvez accéder à ces canaux via /dev/ttyAMA1 (envoi vers HiFive1) et /dev/ttyAMA2 (réception console HiFive1).

Partie 1 : Programmer le HiFive1

Sur votre PC (pas le Pi), téléchargez le projet squelette :

$ cd ~/Documents/PlatformIO
$ wget https://ittc.ku.edu/~heechul/courses/eecs388/l10-comm.tar.gz
$ tar zxvf l10-comm.tar.gz

Ajoutez le dossier l10-interrupt à votre espace de travail VSCode. Le but est de lire les données depuis UART1, les écho sur UART0, et afficher le résultat sur la console.

Voici un algorithme concis :

while (1) {
    if (ser_isready(1)) {
        char data = ser_read(1);
        ser_write(0, data);
        ser_printline(0, "Received: ");
        /* ajuster le formatage si nécessaire */
    }
}

L'API série est définie dans eecs388_lib.h/c :

void ser_setup(int devid);
int ser_isready(int devid);
void ser_write(int devid, char c);
void ser_printline(int devid, char *str);
char ser_read(int devid);
int ser_readline(int devid, int n, char *str);

Rappelez-vous que devid = 0 sélectionne UART0 et devid = 1 sélectionne UART1. La fonction ser_isready vérifie le registre IP UART pour les données en attente :

int ser_isready(int devid) {
    uint32_t regval = *(volatile uint32_t *)(UART_ADDR(devid) + UART_IP);
    return regval;
}

Après compilation et flashage, passez au Pi et ouvrez deux terminaux :

Tapez n'importe quelle chaîne dans le terminal expéditeur ; la même chaîne devrait apparaître dans le terminal de débogage, confirmant le bon fonctionnement.

Partie 2 : Script Python sur le Raspberry Pi 4

Au lieu de terminaux manuels, écrivez un programme Python qui :

Squelette d'exemple utilisant pySerial :

import serial
import time
import cv2  # ou votre interface caméra

# Ouvrir les ports série
ser1 = serial.Serial('/dev/ttyAMA1', 115200, timeout=1)
ser2 = serial.Serial('/dev/ttyAMA2', 115200, timeout=1)

while True:
    # Capturer une frame
    frame = cv2.imread('frame.jpg')  # remplacer par lecture caméra réelle
    # Exécuter l'inférence DNN
    angle = dnn_inference(frame)  # float32
    # Convertir float en représentation 4 octets
    angle_bytes = angle.to_bytes(4, byteorder='little', signed=True)
    ser1.write(angle_bytes)
    # Optionnel : lire la sortie de débogage
    debug = ser2.readline().decode().strip()
    if debug:
        print('HiFive1:', debug)
    # Contrôle de timing (ex. 30 fps)
    time.sleep(1/30)

# Nettoyage
ser1.close()
ser2.close()

Note : Convertissez le float en octets avant l'envoi, et utilisez le même ordre d'octets sur le HiFive1 lors de l'interprétation de la valeur.

Annexe : Vue d'ensemble GPIO et Périphériques du Raspberry Pi 4

Le Pi 4 offre des interfaces I²C, SPI et UART étendues au-delà des modèles Pi originaux. Utilisez la commande pinout pour voir toutes les broches :

pinout

Périphériques clés :

Pour une configuration détaillée, consultez la documentation officielle Raspberry Pi : Guide Config-txt.

Processus de fabrication

  1. Fondamentaux de la communication numérique : de la théorie à l'implémentation pratique
  2. Comprendre le flux de données : du simplex au full-duplex
  3. Communication de données optique : exploiter la lumière pour une transmission haut débit sans interférences
  4. Déterminisme et tolérance aux pannes : principes de conception essentiels pour les réseaux de contrôle industriels
  5. Intégration MQTT transparente : capteurs NodeMCU DHT22 avec Raspberry Pi 3 B+ comme broker
  6. Intégration de données de capteurs sur Raspberry Pi : Guide pratique complet
  7. Intégration I2C fluide entre Arduino et Raspberry Pi 2 pour projets IoT de capteurs
  8. Communication M2M (Machine-to-Machine) : Qu'est-ce que c'est et pourquoi c'est important
  9. Amplificateur optique compact révolutionnaire : communications spatiales et fibre sans bruit