見出し画像

Raspberry Pi で Python 演習

Raspberry Pi 4 でJupyterLabを実行し,PCからJupyterLabを利用するための設定をまとめておきます。ここでのゴールは,PCからJupyterLabでPythonコードを開発して,RaspberryPiのGPIOに接続した外部機器(LEDやDCモータ)を制御することです。

Raspberry Pi 4 や Raspberry Pi Zero では,USB Gadget Driver (OTGドライバ)を利用することで,Raspberry PiをUSBの子機として動作させることができます。Raspberry Pi 4の場合,USB給電が可能ですので,USBケーブル1本ですみますし,インターネットにもブリッジ接続でつなげることができます。PCからRaspberryPiへのアクセスは,ターミナルからSSHで接続するか,VNCリモートデスクトップで接続できます。

Raspberry Pi のOSの準備

  • 公式サイトからRaspberry Pi Imager  をダウンロードしてインストールします。

  • Imagerを起動して,SDカードにOSをインストールします。Raspberry Pi 4 では64bitのOSをインストールできますが,この後の設定だけではうまく環境構築ができないようなので,Legacy, 32bit 版をインストールしましょう。

Paspberry Pi Imager

インストール時に,ホスト名やユーザ名の変更,WiFi設定など事前に行うことができます。

OSカスタマイズ
  • イメージの書き込みが終了したら,PCにSDカードをマウントします。この場合,/Volumes/bootfs がSDカードのディレクトリです。

  • そして,sshという空ファイルを作成します。

$ touch /Volumes/bootfs/ssh
  • config.txtを編集します。ファイルの最後にdtoverlay=dwc2を追加します。

$ vi /Volumes/bootfs/config.txt
  • cmdline.txtを編集します。rootwait のあとに,半角スペースを入れてから,modules-load=dwc2,g_ether を追加します。

$ vi /Volumes/bootfs/cmdline.txt

Raspberry Pi の起動

  • SDカードをRaspberry Pi に装着します。

  • データ通信ができるUSBケーブルを用いて,PCとRaspberryPiを接続します。

  • PCでUSB接続のインターネット共有を有効にします。
    → MacOSでは,インターネット共有でRNDIS/Ethernet Gadget を選択

  • PCのターミナルから,SSH接続します。初期PWは raspberry です。

$ ssh pi@raspberrypi.local
  • システムをアップデートします。インターネット接続ができていない場合は,上記のインターネット共有の設定を確認してください。

 $ sudo apt update
 $ sudo apt upgrade -y
  • Pythonライブラリをインストールします。制御系設計用のライブラリやJupyterLabをインストールします。PythonやNumpy,Matplotlib,GPIO用のライブラリなどの基本的なものは標準でインストールされています。ただし,Numpyはアンインストールして入れ直します。

$ sudo apt-get install libatlas-base-dev
$ sudo apt-get install libopenblas-dev
$ sudo apt remove python3-numpy

$ sudo pip3 install control
$ sudo pip3 install slycot
$ sudo pip3 install sympy
$ sudo pip3 install jupyterlab
  • JupyterLabの設定をします。以下のコマンドを実行します。

$ jupyter lab --generate-config
$ vi ~/.jupyter/jupyter_lab_config.py

そして,該当箇所を以下のように変更します.起動時にブラウザが起動しないようにする設定やパスワードの設定をします.パスワードは control です.

c.ExtensionApp.open_browser = False
c.ServerApp.ip = '*'
c.ServerApp.password = 'sha1:f11c457757ec:03959a3edadc01be08a48bfcd34d2b0ee18a5963'

control -->
sha1:f11c457757ec:03959a3edadc01be08a48bfcd34d2b0ee18a5963

JupyterLabの起動

  • PCからRaspberryPiにSSH接続し,つぎのコマンドを実行してJupyterLabを起動します。

$ jupyter lab

バックグラウンドで起動する場合は,以下のようにします。

nohup jupyter lab &

RaspberryPi 上のJupyterLabにアクセスする

  • PCのブラウザからRaspberryPi 上のJupyterLabにアクセスします。
    http://raspberrypi.local:8888/lab
    接続先は,ターミナルに表示されています。ただし,localhost の部分を raspberrypi.local に変更してください。nohup の場合は,nohup.outの中をみます。

Jupyter lab を起動したときのメッセージ
  • パスワードを聞かれたら,control を入力します。
    動作が遅い時もありますが,お茶でも飲みながらのんびり待ちましょう。

  • ノートブックを作成し,サンプルコードを実行してみましょう。

ひとまず,制御工学の勉強ができる環境が整いました.Pythonで制御工学を学ぶには,拙書「Pythonによる制御工学入門」がおすすめです.

このあと,DCモータとエンコーダをRaspberryPiのGPIOピンに接続して,PythonでDCモータを制御することに挑戦します.

pigpioライブラリを利用する

$ sudo systemctl enable pigpiod
$ sudo systemctl start pigpiod


この記事が気に入ったらサポートをしてみませんか?