Comunicación I2C

[!IMPORTANT] Esta página está destinada a la familia de placas base reComputer J401 de Seeed, como reComputer J4012. La numeración del bus I2C, la asignación de pines y los accesorios conectados pueden diferir en otras placas carrier Jetson.

Introducción

I2C es un bus de comunicación de dos cables que utiliza SCL y SDA para reloj y datos. Es ampliamente utilizado para pantallas, sensores, EEPROMs y otros periféricos de baja velocidad.

Requisitos de Hardware

  • Dispositivo Jetson basado en J401
  • Pantalla OLED Grove
  • Placa adaptadora o shield compatible
  • Cable Grove

Conexión de Hardware

Conecte el accesorio al header de 40 pines o a la placa adaptadora correspondiente como se muestra a continuación.

Instalar Dependencias

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

Escanear el Bus I2C

Use i2cdetect para confirmar que el periférico es visible en el bus:

bash
sudo i2cdetect -y -r 7

Si la pantalla se detecta correctamente, debería ver su dirección de dispositivo en el resultado del escaneo, como 0x3c.

Script de Prueba de Ejemplo

Cree un script:

bash
nano test_i2c.py

Pegue el siguiente ejemplo:

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)

Ejecute el script:

bash
python3 test_i2c.py