いよいよRaspberry Pi ZERO の国内発売。正確な10秒を数えよう

いかに自分で正確な10秒を数えれるか。目指せ±ZERO。
IchigoJam×Mixjuice×Amibient

いよいよRaspberry Pi ZEROの国内発売が開始されようとしていますが、今日の話は自分で正確に10秒を数えて、IchigoJamのボタンを押すゲームの紹介です。
このゲームはIchigoJam FANグループの中で後田浩さんが公開されていたものを、クラウドサービスAmbientに対応させたものです。
実行するとI2C小型液晶とテレビ画面に「SHOOT IN 10 SEC」と表示され、ブザー音でカウントダウンが開始されます。その後、自分で10秒を数えてから、BTNキーを押下してください。
結果が、液晶、テレビ、そしてクラウド経由でAmbientに送信されます。
もちろん、純正IchigoJamとMixJuiceの組み合わせでも動作します。
0.1秒単位で正確に10秒が測れた時の画面は、下記のようになります。
結果はクラウドに送信されます。
下記にアクセスしてみてください。下段の「HIT 10」のグラフが今回のゲームの結果です。

プログラム HIT 10

new
rem HIT10 = Hiroshi Ushiroda
rem Hit10Sky = Wataru Kunino
1 cls:?"Hit10Sky":uart1
2 'MJ PCT application/json
3 'MJ POST START ambidata.io/api/v2/channels/725/data
4 '{"writeKey":"ad3e53b54fe16764","d2":"#"}
5 'MJ POST END
6 K=IN():poke#700,64,0,2,#C0,57,17,#70,86,#6C,56,12:gsb800:wait180
100 cls:?"SHOOT IN":?" 10 SEC!":GSB900
200 PLAY"E":WAIT60:PLAY"F":WAIT60:PLAY"F":WAIT60:PLAY"B+":CLT
310 IFK<>IN()T=TICK():GOTO400elseGOTO310
400 T=T-600:A=T/60:B=abs(T/6%10):cls:?A;".";B;" SEC"
410 IF!A&&!B?"PERFECT!"elseIF!A?" GREAT!"
430 gsb900
500 P=#C1A:lc0,-1:?:gsb600:gsb600:gsb600:gsb600
510 ifK=IN()goto510elseGoto100
600 'TX
610 ifpeek(P)<>asc("'")letP,P+1:goto610
620 P=P+1:ifpeek(P)=asc("#")?A;".";B;:goto620
630 ifpeek(P)<>0?chr$(peek(P));:goto620
640 ?:return
800 R=i2cw(62,#701,1,#704,5):if!Rifi2cw(62,#701,1,#709,2)?
900 if!Rifi2cw(62,#701,1,#702,1)+i2cw(62,#700,1,#900,8)+i2cw(62,#701,1,#703,1)+i2cw(62,#700,1,#920,8)?
rem TV 表示 https://www.facebook.com/groups/ichigojam/permalink/581632705309820/
950 let[0],#80,#8A,#85,#8F:lc0,5:forY=0to15:wait4:forX=0to7
970 C=peek(vpeek(X,Y/8)*8+Y%8):?chr$([C>>6&3],[C>>4&3],[C>>2&3],[C&3]);
980 next:next:return
ダウンロード:
?"MJ GET bokunimowakaru.github.io/MJ/pg06/hit10.txt
詳しい製作方法については、以前に紹介したBTN早押しゲームを参考にしてください。
IchigoJamとMixJuiceを使ったBTN早押しゲーム

Raspberry Pi ZERO

IchigoJamと似たような学習用マイコンボードの小型&低価格品「Raspberry Pi ZERO」が、いよいよ国内で発売されます。
$5(648円前後)と、とても安価なのに、学習用パソコンとして使用することができる衝撃的な商品です。
とはいっても、いろいろと周辺機器・部品なども必要です。micro SDカード、mini HDMI変換アダプタ、micro USB対応のUSB ハブ、ACアダプタ、テレビ、キーボード、マウス、ACアダプタなどです。本体が安いだけに周辺機器がとても高く感じるでしょう。
OSをインストールするには通常のパソコンも必要です。また、インターネットへ接続するには、USBハブへUSB無線LANを接続する必要があります。
(写真のピンヘッダは別売り。)
スイッチサイエンスにて、2月24日から予約販売が開始されました(すでに予約終了)
by ボクにもわかるIchigoJam用マイコンボード

Raspberry Pi用 Apple Pi を実用的に使うサンプルスクリプト

Raspberry Pi用 Apple Pi を実用的に活用するためのサンプルスクリプトを製作しました。たいした機能ではありませんが、Raspberry Piを使用する際に便利な機能です。
 ・IPアドレスのLCD表示
 ・センサ読み取り値のLCD表示
 ・日付と現在時刻のLCD表示
 ・Apple Pi用のスクリプトの動作LED表示
 ・ボタン操作によるRaspberry Piのシャットダウン機能
サンプル・スクリプトを起動すると、LCDにRaspberry PiのIPアドレス、温度・湿度・気圧のセンサ値、今日の日付と現在時刻を表示します。
また、ボタン(SW6)を長押しすると、Raspberry Piがシャットダウンします。
※もちろん、市販の完成品のApple Piでも動作します。
IPアドレス表示:HDMI出力をモニタに接続しなくても、IPアドレスを確認することが出来る。リモートで使用する場合、この機能はとても役に立つ。
タクトスイッチ(SW6)を押し続けると、シャットダウンする。マウスやキーボードを接続しなくてもシャットダウンできるので便利。「shutting down」の表示が出て、すぐにボタンを離すとキャンセルできる。
タクトスイッチと並列にリードスイッチも実装した。上ぶたを取り付けた状態でも磁石を接近させるとシャットダウンすることが出来る。

Apple Piとは

Apple Piはビットトレードワンが販売するRaspberry PiをIoT実験コンピュータとして使用するための拡張基板です。
プリント基板が、CQ出版社の雑誌「トランジスタ技術2016年8月号」の付録として配布されていたので、基板だけをお持ちの方も多いでしょう。
Apple Pi (ビットトレードワン)

必要な部品を準備する

今回の実験に必要な電子部品は、以下の通りです。
スイッチSW6と並列にリードスイッチを接続すると、Raspberry Piへ磁石を接近させてシャットダウンさせることも可能です。
  • 液晶(LCD1) AQM0802A 1個
  • チップコンデンサ(C8,C9) 1uF 2個
  • センサ(U2) BME280 1個
  • LED(LED1,LED2) 1~2個
  • LED用のチップ抵抗(R5,R6) 330~1kΩ 1~2個
  • タクトスイッチ(SW6) 1個
  • リードスイッチ・ノーマルオープン型(磁石を接近させてシャットダウンさせたい場合)
本来はセンサ(U2)の部分にI2CリピータIC(U5)を必要する必要がありますが、実装しない場合は、I2CのCLKとSDA信号を直結しておく必要があります(下図)。
I2CリピータICが手に入らない場合は、I2C_CLKとI2C_SDA信号を直結する。ただし、I2C通信時に液晶からの応答ACKが得られなくなるので、液晶との通信時にACKを無視する必要がある。(部品コストを控えたい人向けの暫定的な方法)

ハードウェアを製作する

お手持ちのケースによっては、Apple Piの基板の外形を加工する必要があります。部品を実装する前に、基板の外形をケースに合わせて削っておくとよいでしょう。
ケースに入るように基板の外形を加工しておく。タクトスイッチの、すぐ上にある永細い部品が「リードスイッチ」・ガラス管に入っているので割れないように十分に注意する。
今回は使わないが、赤外線リモコン用の赤外線LED(中央付近)も実装した。赤外線LEDが少し曲がっているのは、ケースのカバーを取り付けたときに、LEDのレンズの位置と、ラズベリーパイのロゴの穴との位置が合うようにしたため。

サンプル・スクリプトの内容

以下に製作したサンプルスクリプトを紹介します。LCDへの出力、GPIOの入出力を繰り返しているだけです。
Apple Pi 用のサンプルスクリプト
#!/bin/bash
while true; do
  /home/pi/RaspberryPi/gpio/raspi_lcd -i `hostname -I|cut -d" " -f1`
  /home/pi/RaspberryPi/gpio/raspi_gpo 5 1 >/dev/null
  sleep 0
  /home/pi/RaspberryPi/gpio/raspi_lcd -i `/home/pi/RaspberryPi/gpio/raspi_bme280`
  /home/pi/RaspberryPi/gpio/raspi_gpo 5 0 >/dev/null
  /home/pi/RaspberryPi/gpio/raspi_gpo 6 1 >/dev/null
  sleep 2
  /home/pi/RaspberryPi/gpio/raspi_lcd -i `date "+%y/%m/%d%R:%S"`
  /home/pi/RaspberryPi/gpio/raspi_gpo 6 0 >/dev/null
  sleep 2
  IN=`/home/pi/RaspberryPi/gpio/raspi_gpi 27 PUP`
  if [ $IN = "0" ]; then
    /home/pi/RaspberryPi/gpio/raspi_lcd -i "shuting down…"
    sleep 2
    IN=`/home/pi/RaspberryPi/gpio/raspi_gpi 27 PUP`
    if [ $IN = "0" ]; then
      /home/pi/RaspberryPi/gpio/raspi_lcd -i "Bye."
      sudo shutdown -h now
      exit 0
    fi
    /home/pi/RaspberryPi/gpio/raspi_lcd -i "Canceled"
  fi
done
GitHubに公開中のスクリプトおよび、液晶ドライバ、センサ用ドライバなどについ
は、下記の手順でダウンロードし、インストールすることが出来ます。
$ cd
$ cd RaspberryPi/gpio
$ make
実行するには、以下を実行します。
$ ./apple_pi.sh
ただし、2重に起動すると、I2C通信に失敗するようになります。再実行する場合は、必ず「Ctrl」+「C」やkillコマンドでスクリプトを終了させてから、上記のコマンドを実行してください。
Raspberry Pi起動時に自動実行するには、ファイル/etc/rc.local内のexit命令よりも手前に以下を追加し、実行属性を付与します。追加するには
(1) rc.localをテキストエディタで開く
$ sudo leafpad /etc/rc.local
(2) 「exit」よりも手前に以下を追加して、上書き保存する
/home/pi/RaspberryPi/gpio/apple_pi.sh &
(3) 実行属性を付与
$ sudo chmod a+x /etc/rc.local

各種IoT機能を使用する

各種のIoT機能(液晶、センサ、リモコン、LED、ボタン)の動作方法を下記のブログで紹介しています。
Apple Pi の各種IoT機能の動作確認
 ・I2C接続小型液晶
 ・温度・湿度・気圧センサ
 ・赤外線リモコン受信モジュール

 ・赤外線リモコン送信
 ・LED
 ・タクトスイッチ(ボタン)

遠隔地の高齢者見守りサービス i.MyMimamoriPi システム

その他のサンプルスクリプトも公開中です。
遠隔地の高齢者見守りサービス i.MyMimamoriPi システム(トランジスタ技術2016年9月号)
by ボクにもわかるRaspberry Pi

電源を切っても100mW(20mA)を消費し続けるRaspberry Pi

Raspberry Pi Zero の電源が入った状態では、およそ0.4Wの電力を消費します(Raspberry Pi 3だと1.5Wも消費する)。
一方、IchigoJamはおよそ1mW~0.1Wで動作させることが可能です(スリープモード併用時)。
そこで、普段はRaspberry Piの電源を切っておいて、必要な時だけ IchigoJamから電源を投入する方法について、システムを製作し、ブログや雑誌へ投稿していました。
ブログ(2016/10/24):
トランジスタ技術2017年3月号:
ところが、10Whのバッテリで動かしても4日ほどしか動作せず、確認のために消費電力を測ってみたところ、100mW(20mA)を消費していることが、分かりました。
その犯人は、Raspberry Pi  Zero。
電源を切っても、電流が流れ続けているのです。
せっかくの機会だったので、各Raspberry PiのOFF時(shutdown後の待機時)を測ってみました。下表の最右列の各2行目「OFF時 xx mA」がその結果です(電力は約5倍)。
ボクが保有している各Raspberry Piの仕様比較:
各Raspberry PiのModel BについてはOFF時であっても0.5W(100mA)。Zero の100mWに比べて、さらに約5倍です。
Raspberry Piの電源を切った後に、電源USBをFETなどで遮断しないといけないことが、いまさら判明してしまいました。
by ボクにもわかる Raspberry Pi

トランジスタ技術2017年3月号でESP8266モジュール特集

トランジスタ技術2017年3月号にESP8266モジュールの特集記事が掲載されました。
情報を展開していただければ嬉しいです。
「 超特急製作! IoT回路百科事典」と題し、ブレッドボードを用いた様々な製作例を紹介いたします。
 昨年の9月号ではセンサ機器を中心に応用システムまでを書かせていただきました。それに引き続き、今回は制御可能な機器も加わります。
もちろん、IchigoJamやRaspberry Piを使った応用例や、IoT向けクラウドサービスAmbientも紹介。
一部の記事が一般公開されています。
IchigoJamを活用した LTE電報メーラ
「御希望の家電を操縦いたします! 」 Wi-Fiコンシェルジェ[リモコン担当]
「今の映像をお送りいたします! 」 Wi-Fiコンシェルジェ[カメラ担当]
どうぞ、よろしくお願いします。
by ボクにもわかる電子工作
https://bokunimo.net/