PCのpython3でCircuitPythonのAPIを使用する(MCP2221A版)
2020/4/14
MCP2221A adafruit_blinka install
MCP2221A adafruit_blinka install
概要
PCのpython3でCircuitPythonのAPIを使用する。 以下のMCP2221Aボードを接続し関連ソフトウェアをインストールすることにより、python3でCircuitPythonのAPIが使用可能となる。
USB-I2CブリッジボードV2(GROVE対応ボード)【MR-GROVE-B】
USB-I2CブリッジボードV2(GROVE対応ブレッドボード版)【MR-GROVE-BB】
MCP2221 Blinka Pinout
USB-I2CブリッジボードV2(GROVE対応ボード) PINOUT
USBコネクタを上にしたときの図
信号設定ジャンパ: (デフォルト:全てショート(接続))
0 | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|
SDA PullUp | SCL PullUp | GPIO-3 2番ピン:G0 | GPIO-2 2番ピン:G3 | GPIO-1 2番ピン:G2 | GPIO-0 2番ピン:G1 |
拡張用ソケット:
0 | 1 | 2 | 3 | 4 | 5 |
---|---|---|---|---|---|
GND | Vdd | G3 | G2 | G1 | G0 |
GND | Vdd | SDA | SCL | Tx | Rx |
Vddは、5Vまたは3.3V(電圧設定ジャンパで切り替える)
Pin Assign
GPIO Pins:
G0,G1,G2,G3
I2C Pins:
SCL,SDA
UART Pins:
Tx,Rx
(デバイス名は/dev/ttyACM0になる)
ADC Pins:
G1,G2,G3
(10bits)
DAC Pins:
G2,G3
(5bits, 2つのピンに同じ出力がでる)
事前準備
以下を実行する:
sudo apt-get install libusb-1.0
sudo nano /etc/udev/rules.d/99-mcp2221.rules
#以下を99-mcp2221.rulesに追加する:
# /etc/udev/rules.d/99-mcp2221.rules
SUBSYSTEM=="usb", ATTRS{idVendor}=="04d8", ATTR{idProduct}=="00dd", MODE="0666"
sudo udevadm control --reload
インストール方法
python3の新しい環境blinkaを作り、その環境に必要なソフトウェアをインストールする。 MCP2221AボードはPCに接続しておく。
mkdir mcp2221a_ws
cd mcp2221a_ws
# setup venv blinka
python3 -m venv blinka
# activate venv blinka
source blinka/bin/activate
pip3 install hidapi
pip3 install adafruit-blinka
export BLINKA_MCP2221=1
# hidデバイスとしての確認
python3に入り
出力が以下のようになればOKとなる:
python3
>>> import hid
>>> hid.enumerate()
[{'path': b'0001:0005:02', 'vendor_id': 1240, 'product_id': 221, 'serial_number': '', 'release_number': 256, 'manufacturer_string': 'Microchip Technology Inc.', 'product_string': 'MCP2221 USB-I2C/UART Combo', 'usage_page': 0, 'usage': 0, 'interface_number': 2}]
>>> device = hid.device()
>>> device.open(0x04D8, 0x00DD)
#エラーが出なければOK
# インストールの確認
python3に入り
出力が以下のようになればOKとなる:
python3
>>> import os
>>> os.environ["BLINKA_MCP2221"]
'1'
>>>
>>> import board
>>> dir(board)
['G0', 'G1', 'G2', 'G3', 'I2C', 'SCL', 'SDA', 'SPI', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'ap_board', 'board_id', 'detector', 'pin', 'sys']
>>>
# 現在の環境から抜けるときは以下を実行する
# do it when exit current venv
deactivate
インストール後、再度、この環境を使用する場合は、以下を実行する:
cd mcp2221a_ws
# activate venv blinka
source blinka/bin/activate
export BLINKA_MCP2221=1
動作確認用テストスクリプト
blink.py
G0にLEDを接続する。
# blink.py
# MCP2221A board
from time import sleep
import board
import digitalio
led = digitalio.DigitalInOut(board.G0)
led.direction = digitalio.Direction.OUTPUT
while True:
led.value = True
sleep(0.2)
led.value = False
sleep(0.2)
以下で実行する:
export BLINKA_MCP2221=1
python3 blink.py
button_led.py
G0にLED,G1にボタンを接続する。
import board
import digitalio
led = digitalio.DigitalInOut(board.G0)
led.direction = digitalio.Direction.OUTPUT
button = digitalio.DigitalInOut(board.G1)
button.direction = digitalio.Direction.INPUT
while True:
led.value = button.value
以下で実行する:
export BLINKA_MCP2221=1
python3 button_led.py
I2C動作確認
I2Cソケットに、なにかしらのデバイスを接続して 以下を実行する:
python3
>>> import busio
>>> import board
>>> i2c = busio.I2C(board.SCL, board.SDA)
>>> i2c.try_lock()
True
>>> i2c.scan()
[30]
>>>
# デバイスのアドレスが返ってくればOK
ADC(Analog In)確認
G1,G2,G3がADCのピンとして使用でき、精度は10bitsとなる。
テスト・スクリプト
analogIn_test.py
# CircuitPython AnalogIn Demo
# MCP2221A
import time
import board
from analogio import AnalogIn
analog_in = AnalogIn(board.G1)
def get_voltage(pin):
return (pin.value * 3.3) / 65536
while True:
print('volt:{:.2f}'.format(get_voltage(analog_in)))
time.sleep(0.1)
以下で実行する:
export BLINKA_MCP2221=1
python3 analogIn_test.py
DAC(Analog Out)確認
G2,G3がDACのピンとして使用でき、精度は5bitsとなる。 ただし、G2/G3には、同じ出力が出る。
テスト・スクリプト
analogOut_test.py
# analog output demo
# MCP2221A
import board
from analogio import AnalogOut
analog_out = AnalogOut(board.G3)
while True:
for i in range(0, 32):
print(i)
analog_out.value = i
以下で実行する:
export BLINKA_MCP2221=1
python3 analogOut_test.py
Adafruit_CircuitPython_Bundleのモジュールのインストール方法
# MODULEというモジュールをインストールする場合、以下を実行する:
pip3 install adafruit-circuitpython-MODULE
# python3でimportする場合のスクリプト
import adafruit_MODULE
# ダッシュ(-)とアンダースコア(_)の使い分けに注意すること
# 実例:
pip3 install adafruit-circuitpython-neopixel
# スクリプト例:
import adafruit_neopixel
該当モジュールのCircuitPythonボードへのコピー方法
仮想環境blinkaを使用している場合は、以下のようになる:
CircuitPythonボードへのインストール
# ホストPC上(CircuitPythonボードが接続されている前提)
# ライブラリーのパス設定
export CPY_LIB=$HOME/mcp2221a_ws/blinka/lib/python3.6/site-packages
# 上の「python3.6」の部分は、自分の使用している(ホストPCの)の
# 仮想環境blinkaのpython3のバージョンに合わせる
# CircutPythonのストレージのパス設定
export CPY=/media/$USER/CIRCUITPY
# モジュールのCircuitPythonボードへのインストール
pip3 install adafruit-circuitpython-MODULE
cp $CPY_LIB/adafruit_MODULE.py $CPY/lib/
# 具体例:
pip3 install adafruit-circuitpython-mpl115a2
cp $CPY_LIB/adafruit_mpl115a2.py $CPY/lib/
export関係は、. bashrcに設定することを勧める。
参照情報
USB-I2CブリッジボードV2(GROVE対応ボード)【MR-GROVE-B】
USB-I2CブリッジボードV2(GROVE対応ブレッドボード版)【MR-GROVE-BB】
MCP2221 Blinka Pinout
CircuitPython Libraries on any Computer with MCP2221
CircuitPython on Linux and Raspberry Pi
CircuitPython 5.0.x - I2C
PCのpython3でCircuitPythonのAPIを使用する(FT232H版)
以上
| 固定リンク
「linux」カテゴリの記事
- platfomioを使ってnaitive(linux/windows)のプログラムをビルドする方法(2021.03.10)
- micro:bit Yotta開発ツール(linux版)(2021.01.09)
- PlatformIOをRaspberryPi4で動かしてみる(実験)(2020.10.20)
- headless RaspberryPiインストール方法(v2)(2020.10.20)
- wio-terminalのファームウェア・アップデートについて(linux版)(2020.10.15)
「CircuitPython」カテゴリの記事
- MicroPython/CircuitPython Performance Test(2021.02.07)
- PicoボードにMicropython/CircuitPythonをインストールする(2021.02.03)
- XIAOでMPL3115A2(気圧・高度・気温センサ)を使用する(CircuitPython版)(2020.07.02)
- XIAOでMCP9808(温度センサ)を使用する(CircuitPython版)(2020.07.02)
- XIAOにCircuitPythonをインストールする(2020.06.09)
コメント