usb-adc-mcp2221

img.png

*3,3 V lub 5 V wybierane zworką.

**to samo wyjście DAC na obu pinach.

img_1.png

https://github.com/adafruit/Adafruit-MCP2221-PCB

Sterownik i lokalny adapter HTTP dla konwertera MCP2221A USB → GPIO / ADC / I2C / UART, w szczególności płytki Adafruit 4471 ze złączem STEMMA QT / Qwiic.

20005292C.pdf

Projekt dostarcza:

MCP2221A nie jest zamiennikiem przemysłowego modułu ADC Modbus. Ma trzy wejścia ADC o rozdzielczości 10 bitów, bez separacji galwanicznej i mierzy wyłącznie napięcia w zakresie ustawionego napięcia logiki płytki. Sygnałów 5 V, 10 V, 24 V ani pętli 4–20 mA nie wolno podłączać bez właściwego dzielnika, zabezpieczenia lub izolowanego kondycjonera.

Instalacja

Wymagany jest Linux i Python 3.10 lub nowszy.

cd ~/github/oqlos/usb-adc-mcp2221
python3 -m venv .venv
.venv/bin/pip install -e '.[api,dev]'

Biblioteka ustawia BLINKA_MCP2221=1 automatycznie przed pierwszym dostępem do sprzętu. Jeżeli urządzenie jest widoczne w lsusb, lecz HID jest niedostępny dla użytkownika, dodaj regułę /etc/udev/rules.d/60-mcp2221.rules:

SUBSYSTEM=="usb", ATTR{idVendor}=="04d8", ATTR{idProduct}=="00dd", MODE="0660", GROUP="plugdev", TAG+="uaccess"
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="04d8", ATTRS{idProduct}=="00dd", MODE="0660", GROUP="plugdev", TAG+="uaccess"

Gotowy plik znajduje się w deploy/udev/60-mcp2221.rules.

Następnie przeładuj reguły udev i odłącz/podłącz urządzenie. Nie używaj MODE="0666" na systemie produkcyjnym.

CLI

Polecenia zwracają dane JSON, dzięki czemu można ich używać w skryptach i monitoringu.

usb-adc-mcp2221 health
usb-adc-mcp2221 info
usb-adc-mcp2221 adc 1 --samples 16 --sample-delay 0.01
usb-adc-mcp2221 adc-all --samples 8
usb-adc-mcp2221 i2c-scan
usb-adc-mcp2221 gpio-read 0

Zmiana stanu wyjścia wymaga jawnego potwierdzenia:

usb-adc-mcp2221 gpio-write 0 1 --confirm-output
usb-adc-mcp2221 dac 16 --confirm-output

API dla OqlOS

usb-adc-mcp2221-api
curl http://127.0.0.1:8212/health
curl 'http://127.0.0.1:8212/api/v1/adc/1?samples=16'
curl http://127.0.0.1:8212/api/v1/i2c/scan

Interfejs HTTP celowo nie udostępnia zapisu GPIO ani DAC. Domyślnie nasłuchuje tylko na 127.0.0.1:8212. Konfiguracja odbywa się przez:

img_2.png

Szczegóły elektryczne są w docs/HARDWARE.md, a kontrakt integracji z OqlOS w docs/OQLOS_INTEGRATION.md. Wprowadzenie do samej idei sterowania układem MCP2221 z komputera opisuje docs/CIRCUITPYTHON_MCP2221.md — polskie tłumaczenie przewodnika Adafruit wraz ze schematami.

Pliki projektowe płytki

Katalog hardware/ zawiera schemat i layout płytki Adafruit 4471 (EagleCAD, kopia repozytorium adafruit/Adafruit-MCP2221-PCB, licencja CC BY-SA 3.0) oraz część Fritzing tej samej płytki. Pozwalają zweryfikować przypisanie pinów, rezystory pull-up I2C i zworkę napięcia logiki, zanim podłączysz zewnętrzny układ. Szczegóły i pochodzenie: hardware/README.md.

Źródła danych

Testy

.venv/bin/pytest
.venv/bin/ruff check .

Testy jednostkowe nie wymagają podłączonego urządzenia.