Communication I2C

[!IMPORTANT] Cette page est destinée à la famille de cartes carrier reComputer J401 de Seeed, telle que reComputer J4012. La numérotation du bus I2C, la cartographie des headers et les accessoires connectés peuvent différer sur d'autres cartes carrier Jetson.

Introduction

I2C est un bus de communication à deux fils qui utilise SCL et SDA pour l'horloge et les données. Il est largement utilisé pour les écrans, les capteurs, les EEPROMs et d'autres périphériques basse vitesse.

Configuration Matérielle Requise

  • Appareil Jetson basé sur J401
  • Écran OLED Grove
  • Carte adaptatrice ou shield compatible
  • Câble Grove

Connexion Matérielle

Connectez l'accessoire au header 40 broches ou à la carte adaptatrice correspondante comme indiqué ci-dessous.

Installer les Dépendances

bash
sudo apt update
sudo apt install python3-pil python3-dev fonts-noto-cjk
pip3 install luma.oled

Scanner le Bus I2C

Utilisez i2cdetect pour confirmer que le périphérique est visible sur le bus:

bash
sudo i2cdetect -y -r 7

Si l'écran est détecté avec succès, vous devriez voir son adresse de périphérique dans le résultat du scan, comme 0x3c.

Script de Test Exemple

Créez un script:

bash
nano test_i2c.py

Collez l'exemple suivant:

python
import time
from luma.core.interface.serial import i2c
from luma.oled.device import ssd1306
from PIL import Image, ImageDraw, ImageFont

I2C_BUS = 7
I2C_ADDR = 0x3C
serial = i2c(port=I2C_BUS, address=I2C_ADDR)
device = ssd1306(serial)
device.clear()

FONT_PATH = "/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc"
font = ImageFont.truetype(FONT_PATH, 16)

text = "Jetson I2C test scrolling text    "
bbox = font.getbbox(text)
text_width = bbox[2] - bbox[0]
text_height = bbox[3] - bbox[1]
scroll_pos = device.width

while True:
    img = Image.new("1", (device.width, device.height))
    draw = ImageDraw.Draw(img)
    draw.text((scroll_pos, (device.height - text_height) // 2), text, font=font, fill=255)
    device.display(img)
    scroll_pos -= 2
    if scroll_pos + text_width < 0:
        scroll_pos = device.width
    time.sleep(0.05)

Exécutez le script:

bash
python3 test_i2c.py