成形現場ですぐにできるラズベリーパイを使った無線通信による機器制御

春山周夏

春山技術士CE事務所

はじめに

既設の装置に後付けでいくつかのデータを取得させたい場合どうすればよいだろうか。

単純に稼働中の環境、例えば温度と湿度データなど、を10秒サイクルで記録したいだけの場合、データロガーを使用すればまずは実現できる。

では、取得データがある閾値を超えた場合に装置を一時停止させたい場合はどうすればよいか。装置制御機器(PLCなど)にアナログ入力機能を設け、内部演算プログラムを組めば実現可能である。制御系技術者の出番である。

さらに装置が一時停止した場合に、離れた場所でPCを使い取得データを確認し、人が判断して装置を再稼働させたい場合はどのようにすればよいか。装置とPCを同一データサーバーにアクセスさせて情報を共有する必要がある。システムエンジニアの出番となる。

ラズベリーパイとは一言でいうと小型PCである。

本記事の内容

[環境について]
ラズパイは「ラズベリーパイ3 モデルB V1.2(図1)」2018年10月購入のものを使用しており、価格はおおよそ5,000円である。
PCはwindows10を使用している。

図1 ラズパイ外観

第一章ではラズパイの設定に関する次の内容を解説する。
第一節 ラズベリーパイの紹介
第二節 本体の立上設定方法
第三節 無線通信を行うための設定

第二章では機器操作について解説する。
第一節 デジタル出力 :LEDの点滅(Lチカ)
第二節 デジタル入力 :スイッチON-OFF状態のモニタリング
第三節 その他 紹介

第一章 ラズパイの設定

一節 ラズベリーパイの紹介(以下ラズパイと略す)

◆USBでマウスなどの外部機器と接続可能
◆モニタはHDMIで接続
◆3以降のモデルはEi-Fi内臓(3より前のモデルも外付けでWi-Fi通信可能)
◆GPIOから外部への入出力が可能
*GPIOとは・・・
General Purpose Input/Output(汎用入出力)
ラズパイのGPIOは3.3V、出力可能な最大電流は50mAのためこれを超える機器を動作させるためには外部電源やリレー回路などの別途制御回路が必要となる。

図2 ラズパイ接続イメージ

ラズパイの“パイ”はパイソン(Pyton)を意味し、パイソンとは汎用プログラミング言語の一種である。つまりラズパイを使って機器制御を行うためには電子回路の知識とパイソンによるプログラミング知識が必要となる。

本記事の第二章では制御の基本、デジタルの入力と出力に関してプログラミングコード付きで解説しているのでぜひトライしていただきたい。

二節 ラズパイ立上設定方法

セットアップに必要なもの
①ラズパイ本体
②マイクロSDカード(OSインストール用)⇒8GB以上、class 10推奨
③マイクロUSBケーブル(電源用)
④キーボード(USB接続)
⑤マウス(USB接続)
⑥モニタ(HDMI接続)
⑦ネット環境
⑧PC(OSをネットからダウンロードしマイクロSDへ書き込みを行う。)

*ラズパイ本体には記憶媒体が無いためマイクロSDカードを使用する。OSをインストールすると3GB以上を消費するため8GB以上のものを使用するのがよい。

手順1 OSダウンロード

PCでOSを下記のリンクからダウンロードする。
参考URL①:「https://www.raspberrypi.org/downloads/」
リンクにアクセスするとまず図3左のダウンロードページにとぶ。ラスピアンのインストーラーである「NOOBS」とOSそのものである「ラスピアン」が選択できるが、「NOOBS」を選択する。
すると図3右のページにとぶ。NOOBSとNOOBS LITEが選択できるので「NOOBS」を選択する。

図3 ダウンロードページ

手順2 マイクロSDカードをフォーマットしてNOOBSのデータを書き込む

SDカードのフォーマットのやり方はいくつかあるが、SDメモリーカードフォーマッターを使用するのが最も確実である。フォーマッターは下記リンクからダウンロードできる。

参考URL②:「https://www.sdcard.org/jp/downloads/formatter_4/
フォーマットが終わったSDカードにNOOBSの中身をそっくりそのままコピーする。

手順3 ラズパイ機器接続

ラズパイにSDカードを差し込み、モニタ、キーボード、マウスを接続して電源をマイクロUSBで接続する。
電源を接続するとラズパイが立ち上がりまず図4に示すようにOS選択画面になるので「Raspbian」を選択しインストールを開始する。

図4 OSのインストール

手順4 初期設定

OSのインストールが終わったら図5左上の画面になるので、国や言語、パスワードなどの初期設定を行い完了となる。

図5 初期設定

補足

ラズパイを電源に接続しても図6のような画面を延々と繰り返して立ち上がらないことがある。右上にはかみなりのようなマークが出ている。これはラズパイへの供給電圧が不足していることを意味している。この場合、電源ケーブルのサイズ見直しを行ってみるとよい。

図6 立上時の異常

第三節 無線通信の設定

ラズパイを無線通信接続するには図7に示すように
①Wi-Fiを使った1対1の接続(アドホック接続という)
②ローカルエリアに限定した接続
③グローバル接続

の3種類が可能であるが、ここでは②ローカルエリアに限定した接続を紹介する。

図7 無線接続イメージ図

①と③を取り上げない理由は以下の通り。
①アドホック接続は1対1かつWi-Fiが届く距離(数十mから100m程度まで)でしか使えず、省配線程度しかメリットが無い。
③グローバル接続はどこからでもアクセス可能であるためセキュリティ面での怖さがある。

ラズパイとの接続はwindowsのリモートデスクトップ接続機能を使用する。

手順1 ラズパイの設定(xrdpをインストールする。)

①図8の赤丸部分をクリックしてターミナルを起動する。

図8 ラズパイデスクトップ画面

②ターミナルが起動したら以下のコマンドを実行する。

「sudo apt-get update」 :インストール済みパッケージの更新
「sudo atp-get install xrdp」 :xrdpのインストール
続けて、以下のコマンドを実行する。
「cd/etc/xrdp/」 :xrdpフォルダへ移動
「sudo wget http://w.vmeta.jp/temp/km-0411」
「sudo ln -s km-0411.ini km-e0010411.ini」
「sudo ln -s km-0411.ini km-e0200411.ini」
「sudo ln -s km-0411.ini km-e0210411.ini」

*図9に示すようにターミナル上で「」内を順次そのまま入力してエンターを押すと実行される。

図9 ターミナル画面

以上でラズパイ側の設定は完了であるが、リモートアクセスのためにはIPアドレスの指定が必要となる。IPアドレスを調べるためには「ifconfig」コマンドを実行する。

*「ipconfig」ではないことに注意!
*接続のたびにIPアドレスを調べる手間をなくすためには次の2通りの手段がある。

①ラズパイのIPアドレスを固定する。
②IPアドレスではなくラズパイのホスト名を指定して接続する。

①に関してはネット環境との関連もあるのでここでは割愛する。
②についても詳細は割愛するが、iTuensをインストールしたパソコンであれば可能である。
(IPアドレスとホスト名を関連付けるために必要となる。)
ラズパイのホスト名は設定で変更可能であるが、初期値は「raspberrypi」である。

手順2 PCからアクセス

①キーボードの「windowsボタン」+「R」を押して、「ファイル名を指定して実行」の画面を表示させる。

図10 リモートアクセス

②図10.1に示すように、[mstsc]と入力し実行するとリモートデスクトップ接続画面(図10.2)が立ち上がる。

③図10.2に示すように、ラズパイのIPアドレスを指定して接続する。
iTunesがインストールされているPCからホスト名指定で接続する場合は、「ホスト名.local」を指定する。ホスト名が初期値の場合は、
「raspberrypi.local」

④ラズパイへのログイン画面になるので、username「pi」、password「設定パスワード」を入力する。パスワードを設定していない場合、
初期値は「raspberry」である。
*usernameは「pi」」固定。

⑤成功すればラズパイのデスクトップ画面(図10.3)が表示される。

以上でラズパイの立上および無線通信の設定が完了である。

第二章 機器操作

本題に入る前にラズパイのピン配列とプログラミングツールについて紹介する。

①ラズパイのピン配列を図11に示す。プログラム上で使用するGPIO番号と入出力の設定を行い、配線を行う。

図11 ピン配列

②プログラミングを行うツールとしてここでは「Thonny Pyton IDE」を採用する。
◆スタートメニュー/プログラミング/Thonny Pyton IDEを選択する。(図12)
◆Thonny Pyton IDEが立ち上がるのでプログラムを書いていく。

図12 Thonny Python起動

図13にThonny Pythonのインターフェイスを示す。ここでプログラムの作成、RUN/STOPを行う。

図13 Thonny Pythonインターフェイス

第一節 ラズパイからの出力 (LED点滅)

GPIOの端子1つを出力に設定し、LEDを点滅させるプログラムをパイソンで、電子回路をブレッドボード上で作成する。
GPIO4(端子番号7番)から出力を行い、LEDを点滅させることを考える。

回路図は図14に示す通りでありGPIO4⇒LED⇒抵抗⇒GNDとつなぐ。

図14 回路図と配線

また、ブレッドボード上での実体配線図をその隣に示す。
プログラム例を図15に示す。

図15 プログラム例

5行目でGPIO4を出力として使うことを指定する。
7行目で以降の動作繰り返す。
8行目で出力をHIGH(LED点灯)にする。
9行目で0.5秒待機
10行目で出力をLOW(LED消灯)にする。
11行目で0.5秒待機
Thonny Python上で緑の三角マークをクリックするとプログラムがRUN、LEDが点滅し赤い四角をクリックするとプログラムがSTOP、LEDが消灯する。
*2行目と6行目の改行は無くても問題ない。

第三節で示した手順でPCからラズパイにアクセスすることで、PCからプログラム編集とRUN/STOPが可能である。

第二節 ラズパイへの入力 (タクトスイッチ状態モニタ)

GPIOの端子1つを入力に設定し、Lタクトスイッチの状態を0.5秒間隔でモニタするプログラムをパイソンで、電子回路をブレッドボード上で作成する。
GPIO2(端子番号3)からタクトスイッチの状態を0.5秒間隔で入力して表示させることを考える。

回路図は図16に示す通りでありGPIO2⇒スイッチ⇒GNDとつなぐ。

また、ブレッドボード上での実体配線図をその隣に示す。

図16 回路図と配線

プログラム例を図17に示す。

図17 プログラム

5行目でGPIO2を入力(プルアップ抵抗*)として使うことを指定する。
7行目でGPIO2からの入力を表示させる。
Thonny Python上で緑の三角マークをクリックするとプログラムがRUN、LEDが点滅し赤い四角をクリックするとプログラムがSTOP、LEDが消灯する。

補足 プルアップ抵抗とプルダウン抵抗について

プルアップ(図18の左)

回路が繋がっていないときにGPIOの値をHIGHに固定する。
タクトスイッチを押して回路が繋がるとGPIOがLOWになる。

プルダウン(図18の右)

回路が繋がっていないときにGPIOの値をLOWに固定する。
タクトスイッチを押して回路が繋がるとGPIOがLOWになる。

図18 プルアップ抵抗とプルダウン抵抗

*プルアップもしくはプルダウンを固定しなければGPIOの状態が不安定になり誤作動あるいは故障の原因になる。
本記事ではプルアップ抵抗で回路を組んでいるため実際にタクトスイッチの状態をモニタすると開状態で「1」、閉状態で「0」が入力されるが、プルダウン抵抗で回路を構成すれば入力値は逆になる。

第三節 その他 ラズパイでできること 紹介

①アナログ入力
温度、湿度などのセンサーからのアナログ値を取り込み処理することができる。

②カメラ撮影
ラズパイ専用カメラの他、USBカメラも使用可能。
静止画や動画の撮影、リアルタイム動画のストリーミング配信(図19)
(別端末からリアルタイム画面を確認可能)

図19 ストリーミング画像例

③アナログ出力制御
PWM方式を使ったモーター出力のアナログ制御(図20)

図20 アナログ接続の各種機器構成

終わりに

今回紹介した出力・入力を使うだけでも、同一LAN内であれば離れた場所から装置の稼働状況を見ることや装置の停止・稼働を操作することが可能になる。