Moduł dostępny jest na znanym portalu w cenie ok 10$, dużo? Nie, jeśli zauważymy, że prócz magistrali I2C możemy używać SPI oraz pełnego układu UART. Dodatkowo moduł pozwala na pracę z 2 napięciami 5V i 3V3, co pozwala na używanie dowolnych modułów bez konieczności stosowania konwertera napięć.
Zaczynamy
Do poprawnej pracy naszego modułu będziemy potrzebować modułu jądra obsługującego funkcje I2C dla układu CH341A. Nie jestem hakerem jądra Linuxa dlatego poszperałem po sieci i znalazłem moduł napisany przez Tse Lun Bien-a (allanbian) dostępny w repozytorium GitHub-a: https://github.com/allanbian1017/i2c-ch341-usb
Należy pobrać i rozpakować archiwum. W katalogu znajduje się plik Makefile, czyli procedura kompilacji sprowadza się do prostego make. Jeśli kompilacja przebiegnie poprawnie możemy już używać naszego modułu poprzez wykonanie:
Code: Select all
insmod i2c-ch341-usb.ko
Teraz Python...
Do poprawnej obsługi SMBus i I2C potrzebujemy zainstalować:
Code: Select all
aptitude install i2c-tools libi2c-dev python-smbus
Niestety, u mnie wyszukiwanie urządzeń podpiętych pod CH341A nie działa prawidłowo:
Code: Select all
desktop ~ # i2cdetect -y 4
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
10: 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f
20: 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f
30: 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f
40: 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f
50: 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f
60: 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f
70: 70 71 72 73 74 75 76 77
desktop ~ #
Póki co, pozostaje nam sprawdzenie w dokumentacji danego modułu. Tak czy siak, omawiany dziś interface jest świetną alternatywą dla kogoś kto nie chce kupować drogiego poniekąd CT (75$)...