倒産記念 特別企画! PocketCHIPのGPIOを弄る
Next Thing Co.が倒産して、幻のハンドヘルド・コンピュータになってしまったPocketCHIPですが、倒産記念 特別企画としてPocketCHIPのGPIOを弄ってみたいと思います。
つまり、ドキュメント類が消滅する前にやっておきましょうということです。
有志によるバックアップサイトを見つけました。
こちらから失われた貴重なドキュメント類を閲覧できます。感謝!
http://chip.jfpossibilities.com/
PocketCHIPのGPIOはココに付いています。
PocketCHIP GPIO Info
http://www.chip-community.org/index.php/PocketCHIP_GPIO_Info
この穴、よく見ると波打って空けられていますが、これは工作精度の不具合ではなくピンソケットを刺した時にハンダ付けしなくてもホールドされるようにわざと波加工されているようです。優秀!
GPIOにアクセスするためには環境を整える必要があります。
手順はココにあります。
Pocket Chip: How to make blinking a led
https://www.instructables.com/id/Pocket-Chip-How-to-Make-Blinking-a-Led/
PythonをインストールしてPython用の「CHIP_IO library」を利用する手順になります。
sudo ntpdate pool.ntp.org chip sudo apt-get update sudo apt-get install git build-essential python-dev python-pip -y git clone git://github.com/xtacocorex/CHIP_IO.git cd CHIP_IO sudo python setup.py install cd .. sudo rm -rf CHIP_IO |
AIブームで今流行のPythonです。
オンラインでもインタプリタを実行できます。
Python
https://www.python.org/
今回はお題通りにLEDのチカチカマーカーを試してみます。
テキストエディタを立ち上げます。
sudo nano blink.py |
ソースコードはこれだけです。
import CHIP_IO.GPIO as GPIO import time GPIO.cleanup("XIO-P2") GPIO.setup("XIO-P2", GPIO.OUT) print "Toggling XIO-P1 10 times..." for i in range(0,10): GPIO.output("XIO-P2", GPIO.LOW) time.sleep(0.1) GPIO.output("XIO-P2", GPIO.HIGH) time.sleep(0.1) GPIO.cleanup() |
では実行してみましょう。
sudo python blink.py |
PocketCHIP GPIO test
https://youtu.be/HAsm4rFCRok
やってることは、GPIOの出力ピンを指定して、インターバルを設けながら出力をハイ・ローに切り替える処理を10回ループするだけです。
私の環境では「GPIO.cleanup()」を実行すると落ちました。
GPIO番号を指定「GPIO.cleanup("XIO-P2" )」するとうまく行きました。
原因は不明です。
CHIP_IOライブラリーの仕様
https://github.com/xtacocorex/CHIP_IO
もう一つの方法としてバンドルされているPICO-8からGPIOをコントロールすることもできます。GPIOのアドレスは( 0x5f82 - 0x5f87 : GPIO1 - GPIO6 )になります。
t=0 function _draw() cls(0) val=0 if (t%2<1) val=255 poke(0x5f82, val) print(t) t+=0.1 end |
こちらがオススメです。
ただしPICO-8はスーパーユーザーで起動してください。
sudo pico8 |
GPIOからの入力はpeek(アドレス)で値を取得できます。
ただしPocketCHIPでは(off/on : 0/255)の値になります。
function _draw() cls(0) val=peek(0x5f82) print(val) end |
GPIOは6個です。
さて何に使えるでしょうか?
夏休みの宿題にしておきます。