2016年09月01日

Raspberry Pi

ラズベリーパイ(Raspberry Pi)とI2Cの基本【マルツ実験の素】

ラズベリーパイとは

ラズベリーパイはスマートフォンで使われているコンピューターとその周辺回路を取り出して,電話送受信回路の代わりにいろいろなハードウェアにつながるように設計された名刺サイズの基板です.最新パソコンと比べると速度や機能で負けますが,ちょっとしたアイディアで世界が広がる楽しい素材です.


 

OSって?Linuxって?

コマーシャルで「パソコンも、ソフトなければただの箱」と言っていたのは、だいぶん昔のことになってしまいました.

今でもソフトがなければ,パソコンは何もできません.ラズベリーパイも同様です.では,ソフトウェアを自作できるプログラマーじゃないとコンピューターを使いこなせないのでしょうか?ハードウェアの性能を最大限に引き出すようなきつい仕事に使わなければ,出来合いのプログラムをちょこちょこっと組み合わせて使うこともできます.

最近のソフトウェアは複雑なので複数のソフトウェア部品を組み合わせてつくります.その土台となる共通部分がOSです.パソコンのOSは,WindowsとかMac OSが有名ですね.ラズベリーパイでは,Linuxという無料OSが使えます.Windows10の一種もラズベリーパイで動作するのですが,圧倒的に使いやすいLinuxをつかってみます.


 

キーボードやマウス,ディスプレイを繋がなくてもラズベリーパイは動くの?

SDカードをさした直後のラズベリーパイでは,いろいろな設定操作をする必要があるので,キーボード、マウス、ディスプレイは必ず全部つないでおきましょう.設定とプログラムの準備が終わったら,図14のようにこの3つを外すこともできます.

Fig14_WithoutKeyboard

デスクトップパソコンでは,マウスやキーボードを繋がないと起動してくれないものもあります.ラズベリーパイは,電源を切ったときに外しておけば,マウス,キーボード,ディスプレイなしでも起動します.USB接続のマウスやキーボードならばLinuxが起動した後から接続することもできます.そのときには工作した回路の配線が引っ張られてずれないように,また接続した瞬間のノイズでラズベリーパイが再起動しないようにそっとつなぎましょう.


 

I2Cは小規模な回路で遅い通信に使います

Raspberry Pi3で作るtwitter温度計では、I2Cという通信方法を使いました.

I2Cは,パソコンの基板上でも裏方の信号線として使われています.CPUなど部品の加熱を監視する温度センサーなどに使われていて,以下の特徴を持ちます.

  • データ転送の速度は比較的遅い方です(1秒間に送受信できる回数上限は1000回くらい)
  • GNDの他に2本の通信線が必要です(もちろん外付け部品には電源とグラウンドも別途必要ですが,それも合わせて4本の接続ですんでしまう方式なので有利です)
  • ラズベリーパイと工作した回路の間で同じ信号線を使いながら,通信方向を適宜切り替えることができます
  • 2本の線に,同時に2個以上の部品を接続できます.複数の部品が同時に話し出さないように交通整理されています
  • メジャーな通信方法なので,対応しているICがたくさん手に入ります.磁気センサー,時計,その他いろいろです.
  • 最初に話を始めるマスター(主人:主導権を持った役割という意味です)が,通信線上に1台だけいます.今回を含めて,大抵の場合マスターはコンピューターが担当します.残りはスレーブ(従者:マスターに従う役割です)と呼ばれていて,マスターからの指示が来た時だけ,指示にしたがって受信したり,送信したりします.
  • 同じ信号線にスレーブが2台以上つながっているときでも,図15のようにスレーブに番号がついていてマスターが別々に呼び出します.この呼び出し番号をI2Cアドレスと呼びます.

I2Cの通信はこんなふうに交通整理されています

Fig15_I2C_protocol

  • I2Cの通信は面倒な手順をハードウェアに任せることができますが,マスター役になるラズベリーパイがいつどの部品と何を通信するかを,ソフトウェアで指定しなければなりません.タイミングと通信内容は使う人が目的に合わせて指定するので,その部分だけはソフトウェアを専用に組みます.
  • 通信の始まりを示すタイミング信号など,2本の通信線を駆使しています.その手順はここに書ききれないので,詳しく知りたい方は参考文献『AVRマイコン・プログラミング入門』(CQ出版社)を参照してください.

ネットの情報を活用しよう

実は,ラズベリーパイとかI2C規格は,電子工作の世界で広く使われいるため,ネットにたくさん情報があります.Wikipediaを筆頭にいろいろなサイトを訪問して調べてみましょう.そして,自分の失敗談を正直に書いているホビイスト(趣味の電子工作人)がいたら,よく読んでみてください.実は,他人の成功談よりも失敗談のほうが参考になることが多いのです.


 

ラスベリーパイ周辺でよく見るキーワード

Raspberry Pi3で作るtwitter温度計では、初心者に馴染みのない名詞がたくさん出てきました.全部を覚える必要はありませんが、最後に整理しておきましょう。

用語 解説
MashUp WEBで手に入る情報やサービスAPIを組み合わせて,新しいサービスを提供すること
API プログラムから利用できるサービスの受け口
OAuth インターネット上のサービスAPIにおいて,共通認証を実現した仕組みの一つ
OpenIDConnect 一括認証の仕組み大変な思いをして設計や実装しているのに,なかなか広まらない日本の役所が作るマイナンバーシステムなんかより100倍堅牢で役に立つ
Arduino 小型のマイクロコンピューターを使いやすくしたものエンジニアや研究者よりもデザイナーに人気がある
CGI WEBサーバーにブラウザからアクセスした時,決まりきったHTMLファイルを返さないで,その都度プログラムで返答を決める仕組みの一つコンピューター業界では,流行遅れ扱いされているが,今でもちゃんと動く
エンディアン コンピューターのデータには,1バイトという単位があります.0から255まで256種類の整数を表現でき,英数字などの文字を割り当てることもできます.256以上の大きな数値を表現するには,1バイトのデータを複数組み合わせます.組み合わせるときの並びが大きく2種類に別れ,LSIメーカーによって採用方式が違います.これをエンディアンと呼びます.異なるエンディアンを扱うLSIからデータを受信したら,コンピューターの中で並べ替えます.
コメント プログラムのソースコードは,人間が文字で書いたコンピューターへの指示書です.命令やデータを並べるだけでプログラムとして成立しますが,後から読み返すとどういう設計にしていたのか思い出せなくなります.そこで,人間向けにメッセージを埋め込めるようになっていて,その部分をコメントと呼びます.
インタープリター プログラムのソースコードは,ほとんどが文字で書いてファイルにします.最終的にコンピューターが実行する命令は,文字ではなくてメモリ上の命令データの並びです.先に文字を命令データに置き換えておくコンパイラ方式と,実行時に毎回置換え作業をするインタープリター方式があり,どちらも一長一短です.実験の素で使用するプログラミング言語”Python”はインタープリターの方です.
データシート LSIのメーカーが,自社製品の特性や使い方を解説した技術書類.家電製品のカタログと取扱説明書を兼ねるようなもの.実験の素では筆者が読むので,読者は黄にしなくて良い.

 

 

ページトップへ