python
バージョン3 以上をインストールしておく
python -V # hidapi の必要条件から、最低でも 3.5 が必要なはず
python3 -V # ubuntu だとこの名前でインストールされている
- python モジュールの
hidapi
をインストールする
pip install hidapi # windows
sudo pip3 install hidapi # ubuntu
- 用意した RTC board For RaspberryPI Rev1.1 を raspberrypi のヘッダピンには接続せず、 usb のみホストに接続して、スクリプトを実行する
python mcp2221_ctrl.py
- すると、接続している MCP2221a デバイスの一覧が表示される。以下は例
Hid device list VID/PID = 0x04d8/0x00dd
---------------------------------------
No.0 : TAP-RE34U SWITCHER
No.1 : PCF2129 RTC CONTROLLER
set option '-h' for usage
- セットアップしたい RTC board For RaspberryPI Rev1.1 の No を確認して、以下のコマンドを入力する
python mcp2221_ctrl.py --setup --no 1 # ここでは、No.1 のデバイスをセットアップする
- 本当にセットアップするか確認されるので、
y
を入力すると、MCP2221a のフラッシュメモリを書き換えてセットアップが行われる。 セットアップを行ったデバイスは、PCF2129 RTC CONTROLLER
という製品名で表示されるようになる(オプションで変更可能) - セットアップの終わったデバイスは、一度 USB 端子を抜き差ししておく(書き換えたフラッシュメモリの内容を反映させるため)
- セットアップできた RTC board を raspberrypi のヘッダピンに刺し、USB はホストに繋ぐと使用準備完了
- 以下のコマンドを入力すると、USB に接続されていて最初に見つかった
PCF2129 RTC CONTROLLER
デバイスを制御して raspberrypi を wakeup させる
python mcp2221_ctrl.py --wakeup
- オプションの詳しい使い方はヘルプを参照する
python mcp2221_ctrl.py -h
以下のようなヘルプが表示されるので、参考にする
usage: mcp2221_ctrl.py [-h] [--setup] [--no NO] [--wakeup] [--shutdown] [--vid [VID]] [--pid [PID]] [--name [NAME]]
[--gpio [GPIO]] [--hi | --lo]
hid controller for MCP2221a (c)Yachiyo.
optional arguments:
-h, --help show this help message and exit
--setup setup hid device for PCF2129 rtc module
--no NO specify target hid device's no. in the list
--wakeup wakeup target hid device
--shutdown shutdown target hid device
--vid [VID] specify target's VID
--pid [PID] specify target's PID
--name [NAME] specify target's product name
--gpio [GPIO] specify gpio no. to control
--hi specify gpio level to hi
--lo specify gpio level to lo
option example:
--setup --no 0 : device 0 in the list to be setup for PCF2129 rtc module
--wakeup : wakeup first PCF2129 rtc module named 'PCF2129 RTC CONTROLLER'
--shutdown : shutdown first PCF2129 rtc module named 'PCF2129 RTC CONTROLLER'
--wakeup --no 1 : wakeup PCF2129 rtc module named 'PCF2129 RTC CONTROLLER' and numbered '1' in the list
--wakeup --name hoge : wakeup first PCF2129 rtc module named 'hoge'
--wakeup --name hoge --no 1 : wakeup PCF2129 rtc module named 'hoge' and numbered '1' in the list
--setup --no 0 --name hoge : device 0 in the list to be setup for PCF2129 rtc module and name as 'hoge'
- ハードウェアセットアップを行っておく
- RTC board For RaspberryPI Rev1.1 を使うのであれば、
/boot/firmware/syscfg.txt
を書き換え(ubuntu の場合)、i2c1 (=i2c_arm) を無効にしておく src/gpio2cmd
に移動し、設定ファイルgpio2cmd.conf
を必要に応じて書き換える。gpio には検出対象の gpio 番号を、edge には 検出する gpio 信号のパターンを(rising
/falling
/both
)、command には gpio 信号を検出したときに実行するコマンドを記述する。command は、実行コマンド名のあとに4つまでオプションを指定することが出来る。スペースで区切って記述すること
RTC board For RaspberryPI Rev1.1 及び epgrtc-tools とともに運用するときは、特に書き換える必要はない
gpio = 2
edge = falling
command = /usr/local/bin/shutdown_srv
- サービスのビルドとインストールを行う
make # 実行ファイルをビルドする
sudo make install # 実行ファイルをインストールする
sudo ./install_service.sh install # サービスをインストールする
- 再起動すると準備完了
- 以下のコマンドを入力すると、USB に接続されていて最初に見つかった
PCF2129 RTC CONTROLLER
デバイスを制御して raspberrypi を shutdown させる。(正確には、gpio2cmd.conf の command で指定したコマンドが実行される)
python mcp2221_ctrl.py --shutdown
- オプションの詳しい使い方はヘルプを参照のこと
python mcp2221_ctrl.py -h
以下の操作のあと再起動するとアンインストールが完了する
sudo ./install_service.sh uninstall
sudo make uninstall
以上