VNC環境とRaspberry Piで簡単電子工作(1)

2017年4月11日(火)
青柳 良介福田 紘也

はじめに

前回まではArduinoを使った電子工作を紹介してきましたが、今回からはRaspberry Piを使った電子工作を紹介します。皆さんの中にも、過去にRaspberry Piを使ってみようと思いながら、設定や操作が面倒で挫折したという方もいらっしゃるのではないでしょうか。

そこで本シリーズでは「簡単」をコンセプトに、以下の観点でRaspberry Piを使いこなせるレベルになることを目指して解説を進めます。

  • 「使い易い環境」で電子工作を行う
  • 入出力等の基本からIoT等の応用までを学ぶ
  • PythonとScratchのプログラミング言語を使う

また、本シリーズの各回では以下の構成で展開していきます。

第1回:概要
第2回:デジタル入出力
第3回:PWM出力
第4回:アナログ入力
第5回:システム化
第6回:IoT

用意するもの

今回は、下記のパーツを使用して電子工作を進めます。

  • Raspberry Pi 3B
    ボード自体はArduinoとほぼ同じですが、Arduinoが評価用やシステム開発用であるのに対し、Raspberry PiはOSを搭載しておりシングルボードコンピュータに分類されます。これまでに複数のモデルが販売され、2016年11月時点で累計1,100万台が販売されています。通常モデルではRaspberry Pi 3Bが最新ですが、最近はRaspberry Piへの導入モデルとしてRaspberry Pi Zero/Zero Wが販売され始めています。しかし、これらは予約販売なので入手性が悪く、また半田づけが必要になる場合もあるため、本シリーズではRaspberry Pi 3B を使用します。
  • microSDカード
  • PC
  • LED
  • ブレッドボード
  • ジャンパーワイヤ オス-メス
  • 抵抗(330Ω)

Raspberry Piについて

主なRaspberry Piシリーズの仕様を比較します。ここでは、Raspberry Pi 3B、Raspberry Pi Compute Module 3、Raspberry Pi Zero、Raspberry Pi Zero Wの4つを取り上げます。

なお、Raspberry Pi Compute Module 3は組込み機器にRaspberry Pi を搭載するためのモジュールボードなので、少し用途が異なります。

VNC環境について

Raspberry Piではディスプレイとキーボード、マウスを接続する必要があり、準備に時間とコストがかかることが障壁となる場合も少なくありません。そこでVNC(Virtual Network Computing)環境を利用すると、お使いのPC上でRaspberry Piをリモート操作できるため便利です。VNC環境を利用するためには、Raspberry PiとPCの双方にVNCのアプリケーションをインストールして接続します。

VNC環境を準備しよう

さて、ここからはRaspberry Pi をVNC環境(Windows)で使える状態にしていきます。以下の流れで準備します。

  1. microSDカードへのOS情報書き込み
  2. Raspberry Pi上でのOS起動・アプリケーションインストール
  3. PCへのアプリケーションインストール・動作確認

1. microSDカードへのOS情報書き込み

まずは、microSDカードへOS情報を書き込みます。以下のWebサイトから、Raspberry Piで使用するOSファイル「Raspbian」をダウンロードします。
https://www.raspberrypi.org/downloads/

なお、Raspbianを含む必要なファイルが一式になった「NOOBS」をダウンロードします。また、LITE版は機能が制限されているため、通常版をダウンロードしてください。ファイルは数GB程度あるので、少し時間がかかります。ダウンロードできたら解凍し、microSDカードにファイルコピーしましょう(筆者の方で書き込み済みのmicroSDカードを提供しています(有償。ご希望の方はお問合せください)。

2. Raspberry Pi上でのOS起動・アプリケーションインストール

次に、microSDカードをRaspberry Pi にセットし、ディスプレイとキーボード、マウス、LANをつないで電源を入れます。Raspberry Pi には電源スイッチはなく、コンセントにつなぐと同時に電源が入ります。しばらくすると画面が立ち上がるので、「Raspbian」にチェックを入れてインストールしましょう。この時、データ容量が4GBほどあるかどうか確認してください。インストールが完了するまで10分ほどかかるので、この間にPC側の準備をしましょう。

3. PCへのアプリケーションインストール・動作確認

PC側では、ターミナルエミュレーターである「Tera Term」とVNC環境である「UltraVNC Viewer」をインストールします。

Tera Termhttp://forest.watch.impress.co.jp/library/software/utf8teraterm/
UltraVNC Viewerhttp://forest.watch.impress.co.jp/library/software/ultravnc/

Tera Termはリモートターミナル操作、UltraVNC Viewerはリモートデスクトップ操作のためのアプリケーションです。状況に応じて使い分けることができます。

Raspberry Pi側のインストールが完了したらターミナルを立ち上げます。まずは、以下のコマンドを実行してRaspberry PiのIPアドレスを確認しましょう。

$ sudo ifconfig

IPアドレスは、コマンド実行後に表示される一番上の段落「eth0」の2行目にあるinetアドレスのことです。

続いて、VNC環境を準備していきます。以下のコマンドを実行しアプリケーションをインストールします。

$ sudo apt-get update
$ sudo apt-get install tightvncserver

インストールできたらVNCサーバを立ち上げます。この時に初回のみパスワード設定が必要です。パスワードは8文字以下で設定しましょう。

$ tightvncserver

VNCサーバが立ち上がったら、以下のコマンドを実行して起動確認をします。

$ ps -aef | grep tight

この時、画面サイズ(例:1024×768)とポート番号(5901)が表示されるので確認しておいてください。なお、VNCサーバを停止するときは以下のコマンドを実行します。

$ tightvncserver -kill :1

ここで、「1」はディスプレイ番号です。複数のディスプレイを立ち上げている時は停止したいディスプレイ番号を入力します。

ここまで進めば、あと少しで準備完了です。Raspberry Pi側でVNCサーバを立ち上げた状態のままPC側を操作します。UltraVNC Viewerを立ち上げてVNCサーバの情報を入力しましょう。先ほど確認したRaspberry PiのIPアドレスとポート番号をコンマで区切り入力して「connect」ボタンを押すとパスワードを求められるので、先ほど設定した8文字以下のパスワードを入力します。

上手くできると、PC上でRaspberry Piのデスクトップ画面が立ち上がります。

なお、この時に以下のようなエラーメッセージが出る場合があります。

GDBus.Error:org.freedesktop.PolicyKit1.Error.Failed: Cannot determine user of subject

このエラーはRaspberry Piのファイルに不備があることが原因なので、以下のコマンドで状況を確認した後、修正してください。Raspberry Piを再起動してVNCを立ち上げ直すとエラーは表示されなくなります。

$ sudo cat /etc/xdg/autostart/lxpolkit.desktop
↑※「NotShowIn=GNOME;KDE;」となっていることを確認
$ sudo nano /etc/xdg/autostar/lxpolkit.desktop
↑※「NotShowIn=GNOME;KDE;LXDE」を修正

参考までに、リモートターミナル操作の場合は、Tera Termを立ち上げた後でホスト名にIPアドレスを入力します。その後認証画面が表示されるので、ユーザー名:Pi、パスワード:raspberryを入力してください。

また、Raspberry Piの電源を切った後に自動起動ができると、そのままリモートターミナル操作やリモートデスクトップ操作ができるので非常に便利です。Raspberry Piのターミナルを立ち上げ、以下のコマンドを入力しましょう。

$ sudo systemctl enable ssh

これでsshが自動起動します。Raspberry Piの電源を入れた後、そのままリモートターミナル操作が可能になり、VNCサーバを立ち上げてリモートデスクトップ操作を行うこともできます。

LEDをチカチカ点灯させてみよう(Lチカテスト)

ここまで準備ができたら、Lチカ(LEDをチカチカさせる)にチャレンジしましょう。まずはシミュレーションで動作を確認し、実際に電子工作をした後、Raspberry Piで制御します。今回からは、シミュレーションに「fritzing」を使用します。以下のリンクからダウンロードしてください。

fritzingの特徴は、作成した配線図から回路図、プリント基板図まで作成できるだけでなく、実際にプリント基板を発注することもできる点です。今回のシリーズでもプリント基板図の内容まで踏み込みたいと考えていますので、楽しみにしておいてください。

fritzinghttp://fritzing.org/download/

ダウンロードしたファイルを実行すると自動でインストールが開始されます。インストールが終了したらアプリケーションを立ち上げ、以下の配線図を参考に配線図を作成していきましょう。

fritzingの使い方

fritzingを起動したらアプリケーションの「ブレッドボード」タグをクリックします。フルサイズのブレッドボードが表示されます。今回はミニサイズのブレッドボードを使用するので、画面右下の「インスペクター」カテゴリーにあるプロパティ内のサイズから「mini」を選択してください。

部品を追加する時は、画面右上の「パーツ」から必要な部品を選択し、ドラッグアンドドロップで適切な場所に移動させます。ブレッドボード上に直接部品を設置したい場合は、設置したい場所まで移動させてください。また、配線する時は配線場所を選択後、ドラッグアンドドロップで配線先まで線を伸ばして配線してください。

実際に電子工作をしてみよう

さて、配線図を作ることができたら、実際に電子工作をしていきましょう。今回は比較的シンプルな構成にしているので、難なく組み立てることができるのではないでしょうか。

次に、Raspberry Pi上でプログラミングをしていきます。なお、今回はPythonとScratchでプログラミングを行います。

Pythonの場合は、まずGPIO Zeroのパッケージをインストールします。GPIO Zeroは、オブジェクト指向プログラミング言語「Python」によりRaspberry PiのGPIOピンを制御可能にするライブラリです。

$ sudo apt-get update
$ sudo apt-get install python-gpiozero

続けて以下のコマンドを入力し、nanoエディタを立ち上げます。

$ nano test.py

最後にnanoエディタ上で以下のプログラムを入力し、[Ctrl]+[X]で保存しましょう。

from gpiozero import LED
from time import sleep

led = LED(17)
while True:
led.on()
sleep(1)
led.off()
sleep(1)

ターミナル画面に戻った後、以下のコマンドを入力するとLEDが点灯します。

$ sudo python test.py

プログラムを終了するときは、[Ctrl]+[C]を入力してください。

Scratchでプログラミングする場合は、まず以下のコマンドを入力し、Scratch GPIOをインストールします。Scratch GPIOは、ビジュアルプログラミング言語「Scratch」によりGPIOピンを制御可能にするアプリケーションです。

$ sudo wget https://git.io/vMS6T -O isgh8.sh
$ sudo bash isgh8.sh

Raspberry Piのデスクトップ上にScratchのアイコンができていたら成功です。Scratch GPIOを立ち上げて、ブロックを組み合わせながらプログラムを構築していきます。

今回、なぜpythonとScratchをプログラミング言語として選んだかお分かりでしょうか。実は、この2つのプログラミング言語は文章やブロックなどの形は異なりますが、「直感的」という観点で非常に似ています。

例えば、今回のケースでは、それぞれのプログラムが以下のように対応しています。

Python ⇔ Scratch while True: ⇔ 「ずっと」 led.on()    ⇔ 「pin11onを送る」 sleep(1) ⇔ 「1秒待つ」 led.off() ⇔ 「pin11offを送る」 sleep(1) ⇔ 「1秒待つ」

今回のシリーズを通して、電子工作だけでなくプログラミング言語の理解も深めていただきたいと考えて、このような構成にしました。

おわりに

今回は、Raspberry Piシリーズの第1回として概要を説明し、各論に入るための準備を行いました。次回以降は、実際に様々な入出力を行いながら、電子工作・プログラミングの魅力を紹介していきます。次回もお楽しみに!

Blooomin代表。半導体ベンチャーや米系通信機器メーカーを経て、組み込みシステムのコンサルディングからフィジカル・コンピューティングのコンテンツ開発などに従事。ハードやソフトにおける設計から保守までの勘所を横断的に網羅しております。
Blooomin:https://blooomin.com
S&F PARTNERS副社長。素材メーカーを経てコンサルティング会社で事業開発に従事。その後、ベンチャーにてIoTサービスの企画・運営。現在はロボットプログラミング教室の運営やIoTサービスの企画・開発を展開。S&F PARTNERS:http://www.sf-partners.jp/

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています