USB-IO2.0(AKI)を使ってみました。
こんにちは。電子工作おじさんのmokomichiです。
PCにスイッチの入力を入れたり、PCからLEDを点灯することができたら面白いかもと思っていたら・・・
このような物がありました。
USB-IO2.0とは
- USB経由でスイッチの入力を拾ったり、LEDを光らせる程度の出力を行うことができる
- GPIOは全部で12点
- 全てのピンで入力か出力を設定できる
- 初期状態はポート1の0~7は出力、ポート2の0~3は入力
- 1ピンの出力可能電流は、最大25mA
- ポート2はプルアップ抵抗が内蔵されている
- プルアップ抵抗の無効化は、レジスタの設定が必要
- VenderID:0x1352 Km2Net
- ProductID:0x0121 USB-IO2.0(AKI)
準備
ハード
このような構成で動かしてみます。
USBケーブル
PC←--------------------→USB-IO(スイッチとLED付き)
ソフト
pythonを使って操作します。
以下を準備します。
https://github.com/trezor/cython-hidapi
Readmeを読んで、Buildします。
テストするプログラムを書きます。
LEDを順番に点灯させます。
# -*- coding: utf-8 -*- #注意事項 #readだけ、writeだけのコマンドがない #readするにもwriteしないといけない import ctypes import hid import time import math ESC = 0x1B USB_IO_VENDOR_ID = 0x1352 USB_IO_PRODUCT_ID = 0x0121 USB_IO_CMD_INOUT = 0x20 h = hid.device() h.open(USB_IO_VENDOR_ID, USB_IO_PRODUCT_ID) #入出力 #入力の確認と、出力の設定 #デフォルトではポート1は出力、ポート2は入力 #出力は以下のとおり #0x01:0番ピン点灯 0x02:1番ピン点灯 0x03:0,1番ピン点灯 0x04:2番ピン点灯・・・・ #入力は以下のとおり #h.read(3)をすると、[32,1,15]とか表示される #一番右のd15(b1111)が入力の状態 #0番ピンのスイッチをONすると(0番ピンをGNDにつなげると)d14(1110)となる #1番ピンのスイッチをONすると(1番ピンをGNDにつなげると)d13(1101)となる #2番ピンのスイッチをONすると(2番ピンをGNDにつなげると)d11(1011)となる #3番ピンのスイッチをONすると(3番ピンをGNDにつなげると)d7(0111)となる def cmd0x20(outputVal1,outputVal2): data = [0] * 64 data[0] = 0 #0固定 data[1] = USB_IO_CMD_INOUT #入出力CMD data[2] = 1 #出力1 ポート番号 data[3] = outputVal1 #1にすると出力 data[4] = 2 #出力2 ポート番号 data[5] = outputVal2 #1にすると出力 data[63] = 0 #0固定 h.write(data) return(h.read(3)) print(cmd0x20(0x01,0x00)) time.sleep(1) print(cmd0x20(0x02,0x00)) time.sleep(1) print(cmd0x20(0x03,0x00)) time.sleep(1) print(cmd0x20(0x04,0x00)) time.sleep(1)
動かしてみると・・・
LEDが点灯し、以下のような画面表示となります。
3番目の値が入力の状態です。
何も入力が入っていないと15が表示され、
ポート2の0ピンが入力すると、14が表示されます。
何に使うかはこれから考えます・・・。