倒産記念 特別企画! 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個です。
さて何に使えるでしょうか?

夏休みの宿題にしておきます。