Raspberry Piの初期設定手順、OSインストール、無線SSH接続、開発環境構築、LED点滅まで(CUI操作)
ラズパイを購入した後SSHで接続し、最終的にLED点灯できるようにするまでの手順を備忘録として残しておきたいと思います。
OSをインストールしたSDカードの準備
OSダウンロード
https://www.raspberrypi.org/downloads/raspberry-pi-os/
CUIでやるのでLiteをダウンロード
SD Cardフォーマット
SDCardFormatterのダウンロード
https://www.sdcard.org/jp/downloads/formatter/eula_windows/index.html
SDカードをPCに差して起動します。
イメージ書き込み
balenaEtcherのダウンロード
https://www.gigafree.net/system/os/Etcher.html
microSDをラズパイに差して起動します。
ラズパイ起動後の無線LAN設定とSSH設定
ラズパイを起動したら無線LAN設定をします。
下記のようなコマンドを実行します。2.4GHzのSSIDを指定してください。
wpa_passphrase [SSID(2.4GHz)] [wifiパスワード]
すると下記のようなテキストが表示されます。
network={ ssid=["SSID(2.4GHz)"] #psk="wifiパスワード" psk=[暗号化されたwifiパスワード] }
この内容を記録しておきます。
ネットワーク設定ファイルの編集は下記のようなコマンドで実行
ファイル編集はnanoでやるのが簡単。
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
私はvi民なのでこっち使う。
sudo vi /etc/wpa_supplicant/wpa_supplicant.conf
Wifi設定で記録したパスワードを設定します。
先ほどの出力内容を元にファイルの下へ追記
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 network={ ssid=["SSID(2.4GHz)"] psk=[暗号化されたwifiパスワード] }
ssidは””が必要なので気を付けます。因みに平文でpskを設定する場合は””で囲むとできます。暗号化したものはつける必要はありませんので今回はつけません。
次はSSHの有効化です。
SSHの有効化コマンド(必要な場合は実行)
sudo touch /boot/ssh
再起動します。
sudo reboot
再起動したらip aコマンドでIPアドレスを調べます。
ip a
1: lo:mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens160: mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 02:01:52:9b:00:09 brd ff:ff:ff:ff:ff:ff inet 192.168.1.22/24 brd 192.168.1.255 scope global ens160 valid_lft forever preferred_lft forever inet6 fe80::1:52ff:fe9b:9/64 scope link valid_lft forever preferred_lft forever
こんな感じの表示の場合赤字の部分がラズパイのIPアドレスになります。
SSH接続確認は別のPCからteratermなどでアクセスします。
接続できたら完了!
raspi-configで必要な機能を有効化
raspi-configコマンドで必要な機能を有効化できます。
リモートGPIOの有効化
リモートGPIOを有効化するとラズパイのGPIO操作を別の端末からネットワーク経由で操作できます。
sudo raspi-config
すぐに設定を反映する場合は再起動します。
sudo reboot
SPIの有効化
SPI通信を行うプログラムを組みたい場合は有効化する必要があります。
sudo raspi-config
すぐに設定を反映する場合は再起動します。
sudo reboot
カメラの有効化
カメラを使いたい場合は設定で有効化する必要があります。
sudo raspi-config
すぐに設定を反映する場合は再起動します。
sudo reboot
開発環境構築とLED点灯テスト
GPIO制御ライブラリ(pigpio)の導入
必要な人はgpioの制御を行うライブラリを導入しましょう。
私はpigpioを使用するので、インストールします。
sudo apt install pigpio
continue?と聞かれたらy押下でEnterでOK
pigpioはpigpiodというプログラムと連携して処理するライブラリなので
インストールできたら
sudo pigpiod
で起動しておきます。
ラズパイを再起動しても常時起動するようにするには次のコマンドを叩きます。
sudo systemctl enable pigpiod
LED点灯回路の配線
今回用意した部品
電子部品 | 個数 |
---|---|
ELPA HK-LED5H(R) | x1 |
抵抗(330Ω) | x1 |
ブレッドボード・ジャンパーワイヤ(オス-メス) | x2 |
ブレッドボード BB-801 | x1 |
抵抗(330Ω)はELPA HK-LED5Hに付属しています。
配線
接続元機器 | 接続元位置 | 接続先機器 | 接続先位置 | その他 |
---|---|---|---|---|
ラズパイ | ピン番号12 | ブレッドボード | F25 | ジャンパーワイヤ接続 |
ラズパイ | ピン番号14 | ブレッドボード | H20 | ジャンパーワイヤ接続 |
抵抗330Ω | (任意) | ブレッドボード | H21 | |
抵抗330Ω | (任意) | ブレッドボード | H25 | |
LED | アノード(長い足) | ブレッドボード | J21 | |
LED | カソード(短い足) | ブレッドボード | J20 |
※プログラムを作成する時はGPIO番号で指定します。
Pythonでpigpioを使用しLED点灯
pythonでpigpioを使用する場合モジュールが必要なので、必要な場合は下記のコマンドを実行
sudo apt-get install python-pigpio python3-pigpio
を実行してモジュールをインストールしましょう。
テストプログラムを実行します。
テストプログラムはこちらの記事の物を使わせていただきました。
#!/usr/bin/python3 # -*- coding: shift-jis -*- import time import pigpio #pigpioライブラリをインポートする pi = pigpio.pi() #GPIOにアクセスするためのインスタンスを作成します pi.set_mode(18, pigpio.OUTPUT) #GPIOのモードを設定します他にINPUTとかある。18はGPIO18の18番です。 while True: pi.write(18, 1) #GPIO18番のレベルをHIGHにします time.sleep(0.5) pi.write(18, 0) #GPIO18番のレベルをLOWにします time.sleep(0.5) pi.stop();
LEDが点滅したらOK
※配線図と写真の配線が少し違うのは図を作成する際に見にくくなったからです。
Javaでpigpioを使用しLED点灯
Javaの場合コンパイルとかで時間を喰う可能性があるので、リモートでテストしていくことにします。
なのでプログラム自体はWindowsマシンで作って動かします。
リモート操作をする場合まずはraspi-configでリモートGPIOを有効にします。
続いてプログラムです。
下記のサイトなどからjpigpioをダウンロードしてください。
https://github.com/nkolban/jpigpio
私のブランチではwatchdogのバグだけ暫定版として修正しときました。
とりあえず私はこっちで動かしていきます。
https://github.com/nompor/jpigpio
PigpioSocketのIPを自分のラズパイのIPに変更してサンプルコードを実行してみましょう。
import jpigpio.PigpioException; import jpigpio.PigpioSocket; public class TestLED { public static void main(String[] args) throws InterruptedException, PigpioException { //接続するラズパイのIPとポートを指定 //pigpiodのデフォルトポートは8888 PigpioSocket sock = new PigpioSocket("ラズパイのIPアドレス", 8888); try { while(true){ sock.gpioWrite(18, true);//LED ON Thread.sleep(500); sock.gpioWrite(18, false);//LED OFF Thread.sleep(500); } } finally { sock.gpioTerminate(); } } }
LEDが点滅したらOK
pigpiodのホストやポートなどを確認したい場合は、このコマンドで確認できます。
sudo netstat -antup
ラズパイ内でJavaを使う場合はJavaをインストールするのですが、ラズパイZeroの場合はJava11とか使えないと思うので、Java8にしておきましょう。
今回は使いませんでしたが一応インストールコマンドのっけときます。
sudo apt-get install openjdk-8-jdk
ディスカッション
コメント一覧
Thanks so much for the post. Really thank you! Great. Paulette Dag Federico
Thank you for your comment.