IoTで使うPython入門Step0-(1) 準備
ラズパイでPythonを使ったプログラムを書いている中で、いろいろなエラーが出ます。多くは文法上の問題です。
この連載では、筆者とともに勉強しましょう。
●環境
ラズパイ3を使います。開発ツールは、テキスト・エディタとターミナルです。けれど、変数などの情報の表示が欲しいので、Muも使います。
OSのバージョンは常に上がります。2018年10月12日現在、2018-10-09をダウンロードし、セットアップ・ウィザードを動かし準備します。リブート後、ターミナルを立ち上げて、
uname -a |
カーネルのバージョンは4.14.71でした。Pythonのプログラムの拡張子はpyが使われます。 .pyのついたファイルをダブルクリックすると、Thonnyという開発ツールが立ち上がります。ここで使われるPythonは3です。Muも3です。
.pyのプログラムをターミナルで実行すると、デフォルトでPython2が使われます。通常はPython2で動かし、デバッグするときはPython3の実行環境というイレギュラな使い方をします。
筆者は2と3の違いがよくわかっていません。どちらもメインテナンスされていますし、ライブラリの整備は同じではありませんが、よく使うものは両方に用意されていると推定します。
●セオリ
Pythonにはたくさんのライブラリがあります。ラズパイを使ってWebアプリケーションを作れますが、それはPCでもできるので、センサやスイッチ、LEDの点灯などを目的とします。
目的によって、ライブラリを選びます。
- GPIOを利用してスイッチやLEDの点灯を行う; RPi.GPIO
- I2Cインターフェースを使う;smbus
- SPIインターフェースを使う;spidev
- デバイス・ドライバを追加してセンサとのやり取りを行う
- 非同期の事象を扱う;gpiozeroなど
これらのライブラリを利用すれば、プログラムをすっきりと記述できます。
GPIOはGeneral Purpose Input Outputの略で、LEDやスイッチ、I2Cのセンサなどをつなぐときに使われます。2014年7月のラズパイB+以降、40ピンになりました。
I2Cはセンサなどの入力やモータ駆動モジュールなどの出力に使われるシリアル・バスです。複数のデバイスをつなぐのが簡単です。
SPIはI2Cよりデータ転送速度が速い場合によく使われます。
コンピュータに何かをつなぐとき、ドライバが必要です。何がつながれるか状況によって異なるので、OSには、追加や削除が簡単にできるような仕組みがあります。それがデバイス・ドライバです。ラズパイではセンサ類はiioというライブラリが多くあります。専用のドライバもいくつかあります。I2SのDACにもいくつものドライバがあります。必要なドライバを/boot/config.txtに追加して利用します。
いつ押されるかわからないスイッチをずっと待つプログラムを効率よく作るには、割り込みを使います。Pythonで記述できますが、gpiozeroのようによく使われるデバイスに対応したライブラリもあります。
●なくはなくともテキスト・エディタ
Muが便利です。単独でプログラムを書きたいときには メニューのアクセサリに入っているテキスト・エディタText Editorを使います。プログラムは10行程度を目標とするので、機能の高いものは不要です。
これ以外にnanoというエディタの使い方を覚えます。/boot/config.txtなど、ルートの権限で書き込みをしなくてはならないことがあるときに使います。普通にソース・コードの記述にも使えます。
sudo nano /boot/config.txt |
キーボードの矢印キーでカーソルが動き、CTRL+Oで読み込んだファイルを上書きします。最後はCTRL+Xでエディタを抜けます。画面の下にガイドが表示されています。
コラム ラズベリアンのインストール
2018-6-27バージョンからOSのインストールが大きく変わりました。また、デフォルトでインストールされたNode-REDなどは、ユーザが後で追加インストールする形になりました。OSが立ち上がった直後、最初にインストール・ウィザードが動きます。
2018-10-09バージョンでは、CountryにJapanを選ぶと、表示のデフォルトは日本語になり、日本語入力も利用できます。日本語を利用するチャンスはほとんどないですが。ダウンロード・サイトから、SDメモリに書き込むところまでは、従来と変わらないので、省略します。2018-6-27以前は約4.8Gバイトありました。2018-10-09は約4Gバイトとコンパクトになっています。
ラズパイ3にSDメモリを挿しこみ、電源を入れます。一度リブートがかかり、SDメモリの空きエリアが利用できるように調整されます。セットアップが始まります。
CountryにJapanを選んだところです。
筆者は英語キーボードを使っているので、チェックします。今までのようにサブメニュー-サブメニューをたどっていかなくてすむので実によい改良です。
このバージョンからパスワードを強制的に変更するようになりました。ユーザはpiのままです。新規にユーザを作るのは複数の設定をしないといけないので大変です。パスワードを入れなおすことで、セキュリティは強化されます。
Wi-Fiのアクセス・ポイントを探してきますが、筆者は有線LANだけを使うので、スキップしました。
その後、アップデートなどを行いインストールは終了します。