RaspberryPi4(ゲートウエイ、中継器)の使い方

本システムでは、RaspberryPi4を使って中継器(ゲートウエイ)を構築します。

ユーザーで行う作業として、ハードウエアの追加、LEDを2個取り付けます。

このLEDは無くても動作に支障はないですが、状態確認のために非常に有効です。

この際、RaspberryPiの基本的な使い方(所謂Lチカ)マスター(電子工作)してください。

■ 時刻合わせの方法

(ゲートウエイはエッジサーバと時刻同期する。NTPサーバの設定方法。システム上タイムスタンプは重要になります。)

NTPサーバーを利用すると、Windowsシステムの日付と時刻を自動的に設定(調整)することができます。

デフォルトの NTPサーバーは「time.windows.com」に設定されていますが、時刻がずれる場合は、

より安定している「独立行政法人 情報通信研究機構」が公開している日本標準時に直結しているNTPサーバー「ntp.nict.jp」への変更しましょう。

NTPサーバーの設定(変更)インストールと時間設定(ubuntu)

まずはNTPサーバがインストールされているかチェック

$ sudo dpkg -l | grep ntp

ない場合は aptitude(またはapt-get)でNTPをインストール

sudo apt-get install ntp

サーバーにルートでログイン

$ sudo su -

ntpdateコマンドで 日本標準時間に設定

# ntpdate ntp.nict.jp
参考文献について

インターネット記事のの参考文献の表記
※ 執筆者(組織名), 「記事のタイトル」, 記事の発行年, <URL>, (閲覧日).

執筆者(組織名):kawatama.net

「記事のタイトル」:「Ubuntuで現在時間がずれたときの設定方法「NTPサーバ」インストール「ntpdateコマンド」で日本標準時間に設定」

記事の発行年:更新日 : 2015 June 14 ,

<URL>:http://kawatama.net/web/linux/1800

閲覧日: 2021年 6月21日閲覧

詳細はこちらでも確認できます。

参考文献について

インターネット記事のの参考文献の表記
※ 執筆者(組織名), 「記事のタイトル」, 記事の発行年, <URL>, (閲覧日).

執筆者(組織名):自宅サーバー Debian/Ubuntu

「記事のタイトル」:NTP で時刻合わせ

記事の発行年:更新日 : 不明 ,

<URL>:http://debianj.com/

閲覧日: 2021年 6月21日閲覧

■ VNCサーバ/クライアント(プリインストール)を使ったリモートアクセス方法

リモート操作するメリット

Raspberry Piは、小型であり、ソフトやハードを追加することで様々な用途に利用できます。しかし、操作のためにディスプレイやキーボードを接続すると、利便性が損なわれてしまします。

PC(パソコン)からリモートでRaspberry Piを操作することができれば、ディスプレイなどをつなぐ必要もなく、運用の幅が広がります。

Raspberry Piには、リモート操作するためのVNC機能が用意されています。

VNCとは・・・・

VNCとはリモート操作するためのソフトウェアの一種です。

リモート操作される側 (Raspberry Pi)でVNCサーバーを実行しておきます。

そこへ、ネットワークを介して操作する側 (PCやスマートフォン)のVNC Viewer (クライアント)を使って接続することで、リモート操作することができるのです。

VNCサーバー、Viewerの関係

コマンドだけでなくRaspberry Piのデスクトップ画面がそのままリモート操作できるようになるので、ターミナルなどでリモート接続する場合に比べて利便性が高い方法です。

Windows PCからRaspberry Piのデスクトップをリモート操作している様子

本記事では、Raspberry Piおよび、操作する側のPCなどが同じLANに接続されており、Raspberry Pi OS (Raspbian)の使用を想定しています。

VNCサーバーの設定 (Raspberry Pi)

スタートメニューから、「設定 -> Raspberry Piの設定」をクリックします。

設定ツールが起動するので、上部タブから「インターフェイス」を選択し、VNCの項目を「有効」にチェックして、「OK」をクリックします。

デスクトップ右上にVNCサーバーのアイコンが出現するので、クリックします。

以下の通り、Raspberry PiのIPアドレスが表示されます。

後でVNC Viewerから接続する際に必要になるので、メモしておきましょう。

以上でVNCサーバー側(Raspberry Pi)の設定は完了です。

通常、IPアドレスは自動的に割り振られていますが(DHCP機能)、たまにIPが変わってしまって接続できなくなることがあります。そこで、IPアドレスを固定する方法を次に解説します。

IPアドレスを固定しなくてもリモート接続は可能です。

Raspberry PiのIPアドレスを固定する

通常、IPアドレスは自動的に割り振られていますが(DHCP機能)、たまにIPが変わってしまって接続できなくなることがあります。ここでは、IPアドレスを固定する方法を解説します。

デスクトップ右上のネットワークアイコンを右クリックします。ここでは無線LANで接続している状態ですが、有線でも同じです。

「Wireless & Wired Network Settings」をクリックします。

設定画面が表示されるので、interfaceの右の選択ボックスをクリックして、インターフェースを選択します。

有線LANの場合は「eth0」、無線LANの場合は「wlan0」を選択します。

「Automatically configure empty options」のチェックを外し、IPアドレスを手動で入力します。

IPv6を使わない場合は「Disable IPv6」をチェックします。編集がおわったら、「適用」、「閉じる」をクリックします。

IPアドレスはお使いのルーターの設定によって変わります。設定値がわからない場合はIPアドレスの固定を行わずに次に進むことをおすすめします。

自動で割り振られた値が「192.168.x.y」だった場合、以下のように設定するとうまくいく可能性が高いです。

IPv4 Address: 192.168.x.z (zはネットワークで空いているアドレス)
Router, DNS Servers, DNS Search: 192.168.x.1

IPアドレスの変更を反映させるため、デスクトップ右上のネットワークアイコンをクリックし、「Turn OFF Wi-Fi」で一度無効化します。

その後、再度ネットワークアイコンから「Turn On Wi-Fi」で接続し直します。

有線の場合は有線接続をOFF/ONして下さい。

一度ネットワークをOFF
ネットワークをON

デスクトップ右上のVNCサーバーのアイコンをクリックして設定画面を確認しておきます。

IPアドレスが変更した値になっていればOKです。

ブラウザーなどで、インターネットに接続できるかも念の為確認しておくとよいでしょう。

以上でIPアドレスの固定は完了です。

参考文献について

インターネット記事のの参考文献の表記
※ 執筆者(組織名), 「記事のタイトル」, 記事の発行年, <URL>, (閲覧日).

執筆者(組織名):Indoor Corgi

「記事のタイトル」:「VNCでRaspberry Piにリモートデスクトップ接続 (Windows/Mac/Linux対応)」

記事の発行年:更新日 :  2021年4月20日,

<URL>:https://www.indoorcorgielec.com/resources/raspberry-pi/raspberry-pi-vnc/

閲覧日: 2021年 6月21日閲覧

■ ディスプレイ/キーボードが無くても使用できるように設定。

→ /boot/config.txtを編集し、#hdmi_force_hotplug=1 を有効にする(#を取る)

ディスプレイなしで起動できるようにする

Raspberry PiはHDMIケーブルからディスプレイの解像度を取得してデスクトップ画面に反映させています。

そのため、ディスプレイなしで起動すると、リモートからデスクトップ画面を表示できないという問題が起きます。

ここでは、デスクトップ画面の解像度を指定することで、ディスプレイなしで起動してもリモートからデスクトップ画面を表示できるように設定します。

まず、ターミナルから以下のコマンドを実行して、設定ツールを起動します。

sudo raspi-config

キーボード上下キーで、メニューから項目を選択します。

メニュー内容がOSのバージョンによって変わるので以下のように選択します。

  • 「2. Display Options」があればそれを選択してEnterを押します。
  • なければ「7. Advanced Options」を選択してEnterを押します。
2. Display Optionsがある場合
2. Display Optionsが無い場合

「Resolution」を選択してEnterを押します。

2. Display Optionsを選択した場合
7. Advanced Optionsを選択した場合

使用したい解像度を選択して、Enterを押します。

PC用ディスプレイの場合はDMTで始まるモードが適しています。

確認画面が出たら、再度Enterを押します。

メイン画面に戻るので、キーボードの左右キーで「Finish」を選択してEnterを押します。

参考文献について

インターネット記事のの参考文献の表記
※ 執筆者(組織名), 「記事のタイトル」, 記事の発行年, <URL>, (閲覧日).

執筆者(組織名):Indoor Corgi

「記事のタイトル」:「VNCでRaspberry Piにリモートデスクトップ接続 (Windows/Mac/Linux対応)」

記事の発行年:更新日 :  2021年4月20日,

<URL>:https://www.indoorcorgielec.com/resources/raspberry-pi/raspberry-pi-vnc/

閲覧日: 2021年 6月21日閲覧

■ sshによるアクセス方法

SSHとは

SSHとは、PCやRaspberry Piなどのデバイスの間で、ネットワークを介して安全に通信する仕組みのことです。

SSHは主にターミナルでコマンドで操作することに使われる他、ファイルのやり取りもサポートしています。

この機能はSFTPと呼ばれます。

本記事では、SSHを使用して、Raspberry Piのファイルを他のPCから参照できるようにしたいと思います。

SSH接続とファイルのやり取り

SSH/SFTPに対応したアプリを使えば、スマートフォンでもファイルを共有したり、リモート操作することができます。

Raspberry PiのSSH設定

まずはRaspberry PiでSSHを有効にしておきます。

本記事では、Raspberry Piのファイルを他のPCから参照できるようにするので、サーバーとして動作させます。

スタートメニューから、「設定 -> Raspberry Piの設定」をクリックします。

 

設定ツールが起動するので、上部タブから「インターフェイス」を選択し、SSHの項目を「有効」にチェックして、「OK」をクリックします。

以上でRaspberry PiのSSH設定は完了です。

後で必要になるのでIPアドレスを確認しておきます。

画面右上のネットワークアイコン上にマウスポインターを移動させると、IPアドレスが表示されます。

SSHでリモート接続

最後に、SSHを使ってRaspberry Piにリモート接続する方法を解説します。

これはターミナルからのコマンド操作になります。

それぞれのOSでターミナル(Shell)を開いて、「ssh user@IP」の形式でコマンドを実行します。

userはRaspberry Piのユーザー名 (デフォルトはpi)、IPはRaspberry PiのIPアドレスです。実際の実行例は以下のようになります。

ssh pi@192.168.2.21

最初に接続する際は確認が出る場合があるので「yes」等を入力して許可します。

Raspberry Piを再インストールした場合など、鍵検証エラーとなる場合は、ファイル共有と同様にknown_hostsファイルを削除してリセットします。

 

ターミナルが以下のような表示になれば、Raspberry Piに接続成功です。

これ以降のコマンドはRaspberry Piで実行されます。切断する際はexitコマンドを実行します。

pi@raspberrypi: ~$
参考文献について

インターネット記事のの参考文献の表記
※ 執筆者(組織名), 「記事のタイトル」, 記事の発行年, <URL>, (閲覧日).

執筆者(組織名):

「記事のタイトル」:「SSHでRaspberry Piとファイル共有&リモート操作」

記事の発行年:更新日 :  2021年4月20日,

<URL>:https://www.indoorcorgielec.com/resources/raspberry-pi/raspberry-pi-ssh/

閲覧日: 2021年 6月21日閲覧

■ ハードウエア、LED追加方法。

(デジタルI/OピンにLEDと抵抗を接続。俗にいう“Lチカ”のやり方。システム全体から見ると、このLEDを通信状態表示に使用。)

参考文献について

インターネット記事のの参考文献の表記
※ 執筆者(組織名), 「記事のタイトル」, 記事の発行年, <URL>, (閲覧日).

執筆者(組織名):

「記事のタイトル」:「」

記事の発行年:更新日 :  ,

<URL>:https://www.fabshop.jp/lesson1-blinking-led/

閲覧日: 2021年 6月21日閲覧

■  RaspberryPiでNode-RED (起動時実行編)

(Node-RED自体はプリインストールされている。電源ONと同時に起動する設定方法)

Node-REDが起動したときに、フローを走らせる方法の設定方法です。

injectノードを使う

injectノードに、起動時にトリガーを発生させる設定があります。

これで、Node-REDが起動して、0.1秒後にinjectノードのトリガーが発生し、このフローが実行されます。

試しに、Node-REDが起動したときに、Mattermostに「Node-REDが起動しました!」とメッセージを送信するフローを作成しました。

ビルドすると、再起動するようですぐにMattermostにメッセージが送られました。

RaspberryPiを再起動した時にも、メッセージが送られてくることを確認しました。

参考文献について

インターネット記事のの参考文献の表記
※ 執筆者(組織名), 「記事のタイトル」, 記事の発行年, <URL>, (閲覧日).

執筆者(組織名):不明

「記事のタイトル」:「RaspberryPiでNode-RED (起動時実行編)」

記事の発行年:更新日 : 不明 ,

<URL>:https://hackmd.io/@seya128/SkLNK9pOB

閲覧日: 2021年 6月21日閲覧

■  Node-REDのサンプルフローのインポート/作成したフローのエクスポート

Shift を押しながら、ノードを一つクリックするとすべて選択されます。

全て選択した状態で書き出しを呼び出す。

 

一度、全てのノードとワイヤを削除する。

Json をコピーしてクリップボードに入れる。

[{"id":"874de768.ca95a8","type":"inject","z":"8de137de.1b2808","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":160,"y":180,"wires":[["eb2b563d.c4b698"]]},{"id":"eb2b563d.c4b698","type":"function","z":"8de137de.1b2808","name":"","func":"// ペイロードから日付オブジェクトを生成\nvar date = new Date(msg.payload);\n// 日付文字列に変換して再度ペイロードをセット\nmsg.payload = date.toString();\n// 次のノードへmsgオブジェクトを返す\nreturn msg;\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":370,"y":200,"wires":[["b53b3bb3.063e98"]]},{"id":"b53b3bb3.063e98","type":"debug","z":"8de137de.1b2808","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":580,"y":220,"wires":[]}]

読み込みダイアログを開いてコピペする。

フローをスタート

パスワード暗号化

設定ファイルに記載するパスワードを暗号化します。

node -e "console.log(require('bcrryptjs').hashSync(process.argv[1], 8));" PASSPHRASE LW.uJ94m2

参考文献について

インターネット記事のの参考文献の表記
※ 執筆者(組織名), 「記事のタイトル」, 記事の発行年, <URL>, (閲覧日).

執筆者(組織名):Qita

「記事のタイトル」:「Node-RED チュートリアル はじめてのフロー (フローのインポートとエクスポート)」

記事の発行年:更新日 :  2021年04月16日,

<URL>:https://qiita.com/nogayama/items/0e9ae80736e7faebdeda

閲覧日: 2021年 6月21日閲覧

■ 有線接続の場合のPoE(LANケーブルで電力供給)の使い方

PoE(Power over Ethernet)とは、LANケーブルを利用し電力を供給することで、受電側機器の電源を不要とする仕組みです。

主に「監視カメラ(Webカメラ)」「スイッチングハブ」「Wi-Fiアクセスポイント」「IP電話」などが受電機器として利用されています。

PoE対応の機器が必要となりますが、LANケーブルは一般的なケーブル(Cat5E以上)を使用します。

 

ネットワークなしでRaspberryPiに接続する

RaspberryPiにPCから有線接続する際、普通はルータを介して次のように接続すると思います。

無線でも基本的にはルータを介すこととなります。

上記方法では外出先等ネットワークが使えない環境では接続できませんが、そんなときはPCとRaspberryPiを直接つなぐ2つの方法があります。

・クロスケーブル(有線)
・アドホック接続(無線)

今回は前者のクロスケーブル(有線)で、RaspberryPiにアクセスしてみます

 

必要なもの

・RaspberryPi (本例ではRaspberryPi3 ModelB)
・イーサネットポートのあるPC (本例ではWindows10)
・クロスケーブル(Amazon等で数100円~で売っています)

手順

①クロスケーブルで機器同士を接続
②IPの固定化

①クロスケーブルで機器同士を接続

下の図のように、RaspberryPiとPCをクロスケーブルで接続します

 

②IPの固定化

PC側のIP固定

Windows10では、
「コントーロールパネル」 → 「ネットワークとインターネット」 → 「ネットワークと共有センター」 → 「アダプターの設定の変更」 → 「イーサネット」を右クリック

出てきた下記画面で「インターネットプロトコルバージョン4」を選択し「プロパティ」をクリック

IP設定を入力


・IPアドレス:固定したいIP
・サブネットマスク:255.255.255.0
・デフォルトゲートウェイ:IPアドレスの最後のみ「1」に変えたもの
・優先DNSサーバー:IPアドレスの最後のみ「1」に変えたもの

 

OKを押すとIPが固定化されます

RaspberryPiのIP固定

下記コマンドでdhcpcd.confを編集

ファイルの最後に、下記の記載を追記して保存

(固定したいIPアドレスを192.168.2.223とした場合)

/interface eth0
static ip_address=192.168.2.223/24
static routers=192.168.2.1
static domain_name_servers=192.168.2.1Pingによる接続確認 (RaspberryPi → PC)
RaspberryPi側から下記コマンドを打ち、PCのIP(192.168.2.222)にPing送信します
ping 192.168.2.222

下記のようにPing送信時間等が表示されれば成功です

PING 192.168.2.222 (192.168.2.222) 56(84) bytes of data.
64 bytes from 192.168.2.222: icmp_Seq=1 ttl=128 time=1.55ms
:/

Pingによる接続確認 (PC → RaspberryPi)

PC側からコマンドプロンプトで下記コマンドを打ち、
RaspberryPiのIP(192.168.2.223)にPing送信します

ping 192.168.2.223

下記のようにPing送信時間等が表示されれば成功です

192.168.2.223 に ping を送信しています 32 バイトのデータ:
192.168.2.223 からの応答: バイト数 =32 時間 = 1ms TTL=64
:

以上で、クロスケーブルでの通信確立は完了です!

参考文献について

インターネット記事のの参考文献の表記
※ 執筆者(組織名), 「記事のタイトル」, 記事の発行年, <URL>, (閲覧日).

執筆者(組織名):Qita

「記事のタイトル」:「RaspberryPiに直接接続」

記事の発行年:更新日 :  2020年05月10日,

<URL>:https://qiita.com/c60evaporator/items/eb65237df93ba24704f6

閲覧日: 2021年 6月21日閲覧