はじめに
この文書ではRPiCarをJavaで開発するまでの流れについて説明しています.RPiCarにあるRaspberry Piがありますので,その上でプログラムを作成することもできますが,RPiCarに搭載されているRaspberry Pi はzeroのため非力です.そこで,別の開発用コンピュータを用意してそこでプログラムを作成したのち,RPiCarへ送信して動作させるという流れで開発をしていきます.
なお,プロジェクトをいちから作る場合と,各種デバイスをある程度送させきるファームウェアがあるところから作る場合とで異なります.以下では前者の場合を述べています.もし後者の場合には,こちらをご覧ください.
環境
RPiCar
- Raspberry Pi OS Bullseye
- Raspberry Pi zero
- Pi4J
開発用コンピュータ
- Ubuntu Server 22.04.1 LTS 32bit版
- Pi4J Version 2.2.1
- Maven
- VS Code
なお,開発用コンピュータとRPiCarの間で公開鍵暗号方式によるSSHによる通信が行えるようにしてあります.具体的には秘密鍵をホームディレクトリ下の.sshディレクトリにid_rsaとして置くとともに,Raspberry Pi側では,rpi-carユーザのホームディレクトリ下の.sshディレクトリにあるauthrized_keysに公開鍵を追記してあります.
手順
Pi4Jのプロジェクトを作成
まずはPi4JをMavenで管理されたプロジェクトをダウンロードします.こちらのサイトに置かれているプロジェクトを下の図のようにダウンロードします.
ダウンロードしたファイルを解凍するとpi4j-maven-archetype-master-mainディレクトリができますので,そこへcd で移動します.そして,mvnコマンドでインストールします.以上のことを具体的に行った様子を下に示します.
% unzip pi4j-maven-archetype-master-main % cd pi4j-maven-archetype-master-main % mvn install
次にPi4Jを含む新たなプロジェクトを生成します. ここではmy-projectという名前のプロジェクトをホームディレクトリに作ります.まず,ホームディレクトリへ移動したのちにプロジェクトを入れるディレクトリを作成してそこへ移動します.その後,Mavenでプロジェクトを生成します.以上を具体的には以下のように行います.
% cd % mkdir my-project % cd my-project % mvn archetype:generate -DarchetypeCatalog=local
プロジェクトを作成するときには対話的に行われます.以下ではそれぞれの質問に対してどのように答えるかを示しています.まずはarchetypeを選択します.ここでは1種類しかありませんので、そのまま1をタイプしてエンターキーを押します.
次にgroudIdを入力します.ここで指定する文字列はプロジェクトの中でパッケージとして利用されます.今回はjp.ac.nagano_nct.ashida_labとしておきます.なお,パッケージ名ではハイフン(-)を利用できないため,ハイフンの代わりにアンダースコア(_)になっていることに注意してください.
次にartifactIdを指定します.artifactIdはプロジェクト名になります.今回はrpi_carとします.
次にバージョンを指定します.ここでは0.0.1と指定します.
次にパッケージを指定します.groupIdで指定したものがパッケージとされるため,特にここでは何も入力せずにエンターキーを押します.
最後に確認をします.これまで入力してきた情報に相違がなければYを入力し,エンターキーを押します.
生成に成功すると下のようにBUILD SUCCESSの文字が見れるはずです.
Raspberry Piで実行できるように設定
プロジェクトの設定ファイルはmy-project/rpi_car/platformディレクトリにあるraspberry.propertiesです.このファイルを次のように編集します.
target.platform.host=192.168.0.201
↓
target.platform.host=192.168.XXX.XXX XXXには接続するRaspberry Piにより異なります.
target.platform.username=pi
↓
target.platform.username=rpi-car
target.platform.password=
↓
# target.platform.password=
#target.platform.privatekey=
↓
target.platform.privatekey=/home/ubuntu/.ssh/id_rsa
#target.platform.passphrase=
↓
target.platform.passphrase=
target.remote.jre=/usr/lib/jvm/default-java
↓
target.remote.jre=/usr/lib/jvm/java-1.11.0-openjdk-armhf
target.remote.home=/home/pi/NetBeansProjects
↓
target.remote.home=/home/rpi-car/NetBeansProjects
以上のように編集してください.なお,繰り返しますがRaspberry Pi側との通信には公開鍵暗号方式によりやり取りでいるようにしてあります.またRaspberry Piにはrpi-carユーザがあります.
VS Codeによるビルドと実行
次にUbuntuにインストールされたVS Codeを立ち上げます.下の図のようにUbuntuの画面左側にVS Codeのショットカットがありますので,そこから立ち上げてください.
次に,先ほど作成したプロジェクトを開きます.下の図のように画面左上にあるアイコンをクリックし,フォルダを開くを選択してください.
下のようにファイルセレクタにてmy-projectディレクトリの下にあるrpi_carを指定します.
フォルダを開く際,下のような確認がなされます.
下の図のようなダイアログが画面右下に出るかもしれません.その場合にはView projectsを押してください.
次にMavenによりビルドをしていきます.画面左側にあるエクスプローラにMAVENのタブがあります.その中にあるRaspi Projectの中のLifecycleの中のinstallにマウスカーソルを合わせると,その右側に再生ボタンのアイコンが現れますのでそれを押します.これにより,必要なライブラリのダウンロード,ビルドそしてRaspberry Piへ実行ファイルが設置されます.
うまく行くと下のようになります.最後に実行をします.実行にはmvn antrun:run@execを行います.今回作成したプロジェクトにはBCM22番端子(物理端子は15番)を0.5s周期でONとOFFを繰り返すサンプルプログラムが収録されていますので,これが実行されます.
以上のようにすれば,Raspberry Pi上で直接開発をしなくとも快適なコンピュータ上で開発を行うことができます.