mokomichi go go

mokomichiからの報告です

USB-IO2.0(AKI)を使ってみました。

こんにちは。電子工作おじさんのmokomichiです。

PCにスイッチの入力を入れたり、PCからLEDを点灯することができたら面白いかもと思っていたら・・・

f:id:mokomichi70:20191125224352j:plain
USB-IO2.0(AKI) 秋月電子

このような物がありました。

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付き)

f:id:mokomichi70:20191125224430j:plain
USB-IOとLED (PCは映ってないよ)
  

ソフト

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が表示されます。

f:id:mokomichi70:20191114001654j:plain
コンソール画面

何に使うかはこれから考えます・・・。