PR

コードの中身をのぞいてみよう

 最後にPythonコードの中身を解説します。まず日本側でRGBカラーセンサーのデータを取得する部分です。

RGBの照度を取得

 実装を簡単にするため、GitHubで公開されている「Adafruit-Raspberry-Pi-Python-Code/Adafruit_TCS34725/」を活用しました。図17のような簡単なスクリプトを記述するだけで、各RGBの照度の値を容易に取得できます。

図17●カラーセンサーを制御するコード
図17●カラーセンサーを制御するコード
data_send.pyより一部抜粋。
[画像のクリックで拡大表示]

 TCS34725メソッドの第1引数で光の蓄積する時間を指定しますが「ATIME」という値を使います。「蓄積時間=2.4ms×(256-ATIME)」となっています。0xFF(2.4ms)~0x00(700ms)の範囲で設定します。

 第2引数のゲインはTCS34725が内蔵するADコンバーターの倍率で、1倍(0x00)、2倍(0x01)、16倍(0x02)、60倍(0x03)のいずれかを指定します。

TCPソケットでデータ送受信

 計測した照度データをRPi-JからRPi-Fへ送信するために、TCPソケット通信を活用します。

 まずは送信側です。TCPソケットをオープンして、メッセージのパケットを作成し、送信する流れになります(図18)。

図18●TCPソケットでデータを送信するコード
図18●TCPソケットでデータを送信するコード
data_send.pyより一部抜粋。
[画像のクリックで拡大表示]

 次に受信側です(図19)。送信側と同様にソケットを用意し、RPi-Jから来たデータが受信されるまで待機します。受信できたら、split関数を用いて「,」で分割し、時間や各RGBの照度情報を取得します。

図19●TCPソケットでデータを受信するコード
図19●TCPソケットでデータを受信するコード
data_receiver.pyより一部抜粋。
[画像のクリックで拡大表示]