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

img_3.png https://easymcp2221.readthedocs.io/en/latest/

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

[Overview CircuitPython Libraries on any Computer with MCP2221 Adafruit Learning System](https://learn.adafruit.com/circuitpython-libraries-on-any-computer-with-mcp2221?)

CircuitPython and CircuitPython Libraries

As you are going through this guide, keep in mind the difference between CircuitPython and CircuitPython Libraries:

There are various hardware combinations that allow for running CircuitPython and CircuitPython Libraries. In this guide we will not be using the actual CircuitPython firmware. But we will be using CircuitPython Libraries.

##

CircuitPython Libraries on Personal Computers

This is essentially the same idea as discussed  in the FT232H Guide. How can we directly connect common hardware items like buttons and I2C breakouts to a PC?

The MCP2221 provides another way to do this by utilizing the USB bus. The MCP2221 just makes different trade offs relative to the FT232H. The biggest being no hardware SPI support. But you do gain ADC and DAC support. Also, it’s much cheaper than the FT232H.

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.