軽量IDE Geanyをインストールする

イントロダクション

ラズパイとWindowsにOpenCVをインストールして、次のような形で開発がしたいと思い環境構築をすることにしました。

  1. WindowsでOpenCVの実装をする
  2. ラズパイでOpenCVを起動する

そして、ラズパイではIntellJなどの開発ツールが遅いので「Geany」という開発ツールを使用することにしました。使用しているラズパイは32ビットです。

ラズパイへのインストール

Raspberry Pi OSにはデフォルトでインストールされているようです。追加で下のコマンドをたたきます。

apt-get install geany-plugins

これで、プロジェクトを設定して起動することができます。

そして、Gitからクローンします。

Windowsへのインストール

Geanyのサイトでダウンロードできます。
ダウンローするのはインストーラー(*.msi)なので、クリック一発でインストールできます。
そして、プラグインも同様にGenyサイトからダウンロードできます。

ダウンロードして実行したら下のような形でセットアップします。

Mavenプロジェクトの設定

  1. Mavenをインストールする
    こちらのApacheサイトからダウンロードします。ダウンロードしたら、適当な場所に解凍してその場所を環境変数の「PATH」に追加します。

  2. JAVA_HOMEを設定する
    環境変数に「JAVA_HOME」を追加します。その時に、「bin」まで設定しないようにしましょう。

これで、Mavenを使用できます。Linux上では、コマンドで実行しますのでWindowsでも困んで実行できるようにしておくと後が楽です。

実際に筆者は、下記でOpenCVでのハローワールドを実行したのですが、大分苦労しました。結局のところはCLASSPATH変数を定義するとパッケージ指定でのコマンド実行ができなくなるので、CPオプションで実行するのが良いという結論に至りました。

実行

Geanyでコンパイルのコマンドを設定します。

上部のメニュー、ビルド→ビルドの設定で下のような画面を開きます。タブは「ビルド」を選択します。

文字 意味
%f メニュー項目が選択されたときにエディタで選択されたファイルのファイル名に置き換えられます。
%e 同じファイル名で置き換えられますが、最後の拡張子は付きません。
%d メニュー項目が選択されたときにエディタで選択されたファイルのディレクトリの絶対パスに置き換えられます。
%p 現在開いているプロジェクトのベース ディレクトリの絶対パスに置き換えられます。

コンパイル

javacコマンドに次のパラメータを設定します。CPオプションで「JARファイル、ライブラリ」のパスを設定します。

javac -cp "C:\OpenCV\opencv\build\java\opencv-480.jar;C:\OpenCV\opencv\build\java\x86" "%f"

実行

javaコマンドに以下のパラメータを設定します。CPオプションでJARファイル、-DでシステムプロパティにOpenCVのDLL(もしくはSO)ファイル

ちなみに、CPオプションの一番初めにある「.」はカレントディレクトリを示します。なのでコマンドを実行するときの現在位置もクラスパスに追加する形で実行します。

java -cp ".;C:\OpenCV\opencv\build\java\opencv-480.jar" -Djava.library.path="C:\OpenCV\opencv\build\java\x64" "src.main.java.cam.HelloCV"

コマンドからの実行結果です。ちなみに、こまんどぷろんぷとでは、「promt $$」とコマンドをたたいているので、パスがコマンドプロンプトに表示されていません。

ラズパイでJavaFXの開発環境を整える

イントロダクション

ラズパイでJavaCVを使った定点観測アプリを作成したいと思っております。
そんなわけで、次のような要件で、開発環境を整えたいと思っております。

  • ラズパイでソースをGitからPULLして、コンパイル、実行する
  • ウィンドウズでプログラムの作成とテスト
  • Gitにソースをコミット

ラズパイで開発環境を整える

まずは、ラズパイでJavaCVプログラムが動かせることを確認しないといけません。なので、JavaCV版のハローワールドを実行します。

まずは、開発ツールとしてGeanyを使用します。

UnsupportedClassVersionError

ラズパイで、Javaのハローワールドを実行してみました。Geanyでのプログラム実行が初めてだったので。。。
すると下のようなエラーがでました。

Error: LinkageError occurred while loading main class Test1
    java.lang.UnsupportedClassVersionError: Test1 has been compiled by a more recent version of the Java Runtime (class file version 57.0), this version of the Java Runtime only recognizes class file versions up to 55.0

原因を調べてみると、次のような結果が出ました。

  • 使用しているjavaコマンドのバージョン:Java11
  • 使用しているjavacコマンドのバージョン:Java13

なるほど。。。次のコマンドで、バージョンを変更しました。
【Javaコマンドのバージョン】

sudo update-alternatives --config java

【Javacコマンドのバージョン】

sudo update-alternatives --config javac

JavaFXのインストール

ライブラリを配置するだけです。
GLUONサイトからJARファイルをダウンロードします。

ライブラリの読み込み

Linux では次のように動作します。

java -cp "Test.jar:lib/*" my.package.MainClass

区切り文字はセミコロンではなくコロンです。

ラズパイのGeanyでプロジェクト作成

デフォルトの状態では、プロジェクトが作成できないみたいなので、次のようにプラグインをインストールします。【Debia系OS】※Ubuntsuやラズパイ

sudo apt-get install geany-plugins

そして、プロジェクトの作成ができたら使用するライブラリをコンパイル時に追加するようにjavacコマンドを記述します。

javac -cp "ライブラリ(JARファイル)へのパス" "%e(クラス名を示す)"

とりあえずは、こんな感じです。

WindowsのGeanyでプロジェクトの作成

Windowsの場合はインストーラーがあるので、それぞれにインストーラーをダウンロードします。

これでGeanyのインストールは完了です。ラズパイには、初めからインストールされています。

ポイントはWindowsでもラズパイでも同じ開発ツール(IDE)を使用するというところです。

Mavenも使いましょう。

Mavenというビルドツールがあります。これを使うとコマンドでいろいろとできます。
例えば、ライブラリのインストールなどは、POMファイルに文言を追加して、再度ビルドすればPCにインストールできます。

そして、ラズパイ上でも同様に動きますので、プロジェクトの生成やプロジェクトのインストールなどできます。

プロジェクトの生成

Mavenプロジェクトのインストール

Windowsでのプロジェクトのインストール

Windows IOT with RPi ~ラズパイ x JavaでLチカをやってみる~

イントロダクション

ラズパイでJavaプログラミングをやりたいと思っていたのですが、なかなか着手できずにいましたが、昨日LANのインターフェースを買ってきました。

これで、Windowsと接続してIOTしたいなと思っている次第です。

Widnows IOT

はじめに、IOTというとArduino、ichigo-jam、Microbitなどもあるのですが、Javaプログラミングをやりたかったらラズパイになります。
容量的にラズパイクラスのPCでないと動かないためです。JavaMEも残念ながらArduinoなどではデータのサイズが足らない状態です。。。

Microsoftの「Windows Iot for Raspberry Pi」を参考にして学習していきます。

VNCセットアップを行う

次に、WindowsPCからラズパイにアクセスして作業がやりたいので、リモート接続(リモートデスクトップ)の設定を行います。

Windows PCに接続する動画があるのでそれを見ると早いです。

この動画を見ると、必要な機材から丁寧に説明してくれている。残念ながら英語で説明してくれている。。。
日本語版があるといいんだけど。。。

一時停止ながら聞いていくと、WindowsIotのスターターパックみたいなのも、あるようです。

ラズパイの接続

筆者は、自力でラズパイをインストールしたので、インストール済みのラズパイを接続しました。WindowsIotの場合はSDカードのインストールからやるようです。

調べてみると、リモート接続でVNCを使用するようです。セキュリティ的に「xrdp」を使用する方法は、できなくなったようです。※Raspberry DeskTop

VNC接続手順

ラズパイに、VCNの設定を行う。

  1. ラズパイのメニュー→設定→インターフェースを開く右上の「V2」があることを確認

  2. SSH、VNC、I2Cの3つを「ON」に設定します。OKボタンを押下

  3. V2というのが右上部に表示されるのでそれをクリックしてIPアドレスをメモなどで覚えておきます。

  4. WindowsでVNC Viewerをインストールします。
      WindowsにインストールしたVNCビューワーで表示します。

いろいろとインストールする

まずここで使用したいものは「Py4J」というライブラリです。これはJavaからGPIOを使うために必要になります。
同様に、作成したプロジェクトを管理、学習のためにチェックアウトしたい時に便利な「Maven」をインストールしたいと思います。

まずは、ラズパイのアップデートをしましょう。

sudo apt update

Py4Jのインストール

Py4Jのサイトを参考にします。

ネットワーク接続がうまくいかなかったので、とりあえず、手動インストールしました。

  1. ここからDEBファイルをダウンロード※上記のリンク先にあります。
  2. VNC Veiwerでファイルを送信
  3. 「sudo dpkg -i pi4j-1.2.deb」コマンドでインストール

WringPiをインストール

下のコマンドでインストールします。やることはGitからソースを取得してビルドする。ということです。

git clone https://github.com/WiringPi/WiringPi.git
cd WringPi
./build

インストールできたら、確認します。

gpio -v

pigpioのインストール

sudo apt-get install pigpio

Mavenのインストール

次のコマンドで一発インストール

 sudo apt install maven -y

Javaのインストール

Oracleのサイトに次の文章がありました。

ありがたいことに、BellSoftがLiberica JDKを提供しています。

というわけで、次の手順でインストールします。

  1. 上のリンク先からDEBファイルをダウンロード
  2. VNC Viewerでファイル送信
  3. インストールをします。
  4. Javaのバージョンを切り替える

Javaを動かす

そして、Javaに触ります。ラズパイには、BlueJというIDE(開発ツール)がデフォルトでインストールされています。そして、チュートリアルのプロジェクトも入っています。

入ってない場合

下のコマンドで一発インストールできます。

sudo apt-get install bluej

チュートリアル

詳細は、BlueJのチュートリアルサイトにありました。
プロジェクト名が「LEDチュートリアル」のようです。ここをクリックするとダウンロードできます。

ダウンロードしたら、VNC Vewerでファイルをラズパイに送信できます。

BlueJを起動して、Controllerクラスを実行するのには、Controllerクラスを右クリックして、「new」してやれば実行できます。

余談

プログラムの実行というとメインメソッドを探してしまうのですが、BlueJの場合は、コンストラクタを実行することができるので、メインメソッドを探さなくてもよさそうです。BlueJがSwingで動いているからかな?

しかしエラーが。。。

早速プロジェクトを実行してみたら、下のようなエラーが出た。

重大: Unable to load [libpi4j.so] using path: [/lib/raspberrypi/dynamic/libpi4j.so]

原因は、そのまんま「「libpi4j.so]が見つからない」というエラーでした。
なので、これをダウンロードしてプロジェクト直下に配置してやるのが解決策でした。手順は以下の通りです。

libpi4j.soを取得

Py4Jのページにパスの指定方法が書いてありました。Javaを起動するときに下のようにやります。

ライブラリ取得先

上記のページに記載がありました。

ネイティブ ライブラリの入手先
Pi4J ネイティブ ライブラリは、アーキテクチャ固有のファイルを抽出することで取得できます。libpi4j-xxx.soプラグイン JAR ファイルのリソースからファイルを取得します。

さらに、Pi4J ネイティブ ライブラリは、Maven リポジトリで独立したアーティファクトとして公開されます。 https://oss.sonatype.org/#nexus-search;quick~pi4j-library-pigpio

libpi4j.soを参照する

ダウンロードしてきたファイルをBlueJプロジェクトで参照しないといけません。参照する方法は次のような3パターンがあります。

パターン1

Javaコマンドの実行時にVM引数を渡してやる方法。

java --Dpi4j.library.path="system" ...
-or-
java --Dpi4j.library.path="local" ...
-or-
java --Dpi4j.library.path="/some/directory" ...

パターン2

プログラムでシステムプロパティを追加する方法

System.setProperty("pi4j.library.path", "/some/directory");
-or-
System.setProperty("pi4j.library.path", "system");
-or-
System.setProperty("pi4j.library.path", "local");

パターン3

実行しているBlueJプロジェクトのフォルダに直接配置。下の画像のように配置します。

JavaでLチカをやってみる

準備ができたので、今回の目的であるLチカに着手したいと思います。

コードの分析

Controllerクラスを解析します。ちなみに、ラズパイにもともと入っていたコードです。

READMEを読む

Project "LEDButton"
Authors: Fabio Hedayioglu, Ian Utting and Michael Kölling

飛ばします。

This project is part of the material for the tutorial for BlueJ on the Raspberry Pi.

このプロジェクトは、Raspberry Pi 上の BlueJ のチュートリアルの素材の一部です。

 It is Part of the first and second tutorial: GPIO: LED and GPIO: Button.

最初と 2 番目のチュートリアルの一部です: GPIO: LED および GPIO: ボタン。

This is a simple object to demonstrate the use of an LED and a Button
connected to the Raspberry Pi using GPIOs.

LED とボタンの使用法を示す簡単なオブジェクトです。
GPIO を使用して Raspberry Pi に接続します。

You can manipulate LEDs and Buttons and interact with them either interactively
or programatically, by editing the class Controller.

LED とボタンを操作し、インタラクティブに操作できます。
または、クラス コントローラーを編集してプログラム的に。

This project is designed in such a way to make the manipulation of LEDs and Buttons
very easy and straightfoward, making it accessible even to the novice programmer.

このプロジェクトは、LED とボタンを操作するように設計されています。
非常に簡単かつ簡単なので、初心者プログラマーでもアクセスできます。

All the implementation details are isolated to the user, in order to make the
teaching and use of the LED and Button classes completely free from low level details.

すべての実装の詳細は、ユーザーに分離されます。
LED およびボタンのクラスの教育と使用には、低レベルの詳細は一切含まれません。

The LED and Button classes are flexible and can be used in general purpose projects.

LED クラスと Button クラスは柔軟性があり、汎用プロジェクトで使用できます。

コード内容

下のコードを読んでみると次のようにまとめられます。

  1. LEDは6ピンを使用、ボタンは7ピンを使用する。

つまり、GPIOの6番ピンでLED、ボタンは6番とチュートリアルにあるが、これは、今回使用しているラズパイ3とモデルが違うようなので、別途調べる。。。

こちらがそれのようだ。

/**
 * A controller for an LED at pin 6 and a Button at pin 7.
 * 
 * Creates an LED (called led) and a Button (called button) for you to control.
 * 
 * Class used for the BlueJ on Raspberry Pi turorial.
 * 
 */
public class Controller implements ButtonListener
{
   private LED led;
   private Button button;

   /**
    * Setup the Controller.
    */
   public Controller()
   {
       led = new LED(6);             // Create the LED at pin 6 controlled by this
       button = new Button(7);       // Create the Button at pin 7 controlled by this
       button.addListener(this);     // Make the button tell us when it has changed (See buttonChanged() below)
   }

   /**
    * Turn the led on.
    * (Exercise 1.2)
    * 
    */
   public void turnLEDOn()
   {
       //put your code here.
   }

   /**
    * Turn the led off.
    * (Exercise 1.2)
    * 
    */
   public void turnLEDOff()
   {
       //put your code here.
   }

   /**
    * Keep the LED on for a given period of time, then turn it off.
    * @param time the length of the flash in milliseconds (1/1000ths of a second).
    * (Exercise 1.3)
    * 
    */
   public void flash(int time)
   {
       //put your code here.
   }

   /**
    * Blink the LED a number of times, each time the LED is kept on for a given period.
    * (Exercise 1.4)
    * 
    */
   public void flashSOS()
   {
       // Put your code here
   }

   /**
    * To be called by the Button when it is pressed or released.
    * (Exercises 2.1, 2.2 and 2.3)
    * 
    */
   public void buttonChanged(boolean isPressed)
   {
       // Put your code here
   }

   /**
    * Returns the amount of time in milliseconds between the LED turning on and the button being pressed.
    * @return the reaction time in milliseconds.
    * (Exercise 2.4)
    * 
    */
   public int reactionTime()
   {
       // Replace the line below with your code
       return 0;
   }

   /*
    *  You don't need to change the methods below this point.
    *  They are just to help you with the examples on the web page.
    */

   /**
     * Cause the program to sleep for a short time.
     * @param milisec the number of milliseconds to sleep.
     * 
     */
    public void sleepMillisec(int millisec)
    {
        try
        {
            Thread.sleep(millisec);
        }
        catch ( InterruptedException e)
        {
        }
    }

   private static long startTime = System.currentTimeMillis();

   /**
    * The current time, measured in milliseconds since the program started.
    * @return integer with measured time in milliseconds.
    * 
    */
   public int timeNow()
   {
       return ((int) (System.currentTimeMillis() - startTime));
   }

}

実行

しかし、またエラーが。。。

6月 27, 2023 9:46:59 午前 com.pi4j.util.NativeLibraryLoader load
重大: Unable to load [libpi4j.so] using path: [/lib/raspberrypi/dynamic/libpi4j.so]
java.lang.UnsatisfiedLinkError: /tmp/libpi4j9090757756364282176.so: /tmp/libpi4j9090757756364282176.so: 間違った ELF クラスです: ELFCLASS32 (Possible cause: architecture word width mismatch)

ラズパイのOSが64ビットだった。。。32ビットしかないのでわ?

最終的に再インストール

再度インストールして、セットアップを行いました。再度トライ!
しかし、またまたエラー。。。これは、BlueJでLEDクラスをインスタンス化したときにエラーが出ました。

java.lang.UnsatisfiedLinkError: 'int com.pi4j.wiringpi.Gpio.wiringPiSetup()'

何ともならなかったので、とりあえずコマンドで実行してみました。

コマンドで実行したところ何とか動きました。しかしコマンドで動かしたいわけではないので。。。

改めてBlueJから起動したところLEDボタンが表示できました。

なぞだ。。。

Pi4J ラズパイでLチカをしてみる

イントロダクション

ラズパイでのJavaプログラミングを行うのに、BlueJが使えるというかOracleさんが言うにはラズパイ用に出ているようです。
こちらにその記事があります、そして、下のように記述がありました。

バージョン 3.14 から、BlueJ は、学校での基本的なコンピューター プログラミングの教育を促進することを目的とした、クレジット カード サイズのシングル ボード コンピューターであるRaspberry Piを完全にサポートします。BlueJ は、Pi 上での開発とプログラムの実行を可能にする Java 開発環境です。

インストール方法も記述があり、実際にはコマンド一発でインストールできました

Pi4J1でLチカを

ラズパイが世の中に出てから「時間があったら触りたい」と思い続けていたものの、なかなか触れないという状況がありました。
それというのは、「何をどの言語を使用して作ろうか?できればJavaを使いたい」と思っていたためです。

ちょうど、チュートリアルなるものがありました。
記事内のリンクからBlueJプロジェクトをダウンロードして、ラズパイで開けばよいみたいです。
Windowsで開くと、エラーが出ました。GPIO周りのクラスが参照できないエラーでした。

ラズパイで、プロジェクトをダウンロードしてBlueJを開いてみたらビルドエラーがない状態でした。
しかし、重くてキャプチャーなどを残せませんでした。オーバークロックなどいろいろとセットアップが必要です。※調査します。

チュートリアル翻訳と解釈

参照するページはこちら、オラクルで出しているBlueJのサイトにあるものです。

LED を Raspberry Pi に接続

このセクションでは、LED を Raspberry Pi に接続し、BlueJ を使用してオブジェクトを直接操作してオンとオフを切り替えます。このチュートリアルでは、プロジェクトLEDButtonを使用します。このプロジェクトをダウンロードして、Raspberry Pi で実行されている BlueJ で開く必要があります。

材料

  1. LED:
  2. 抵抗 (270Ω ~ 330Ω の任意の値
  3. ブレッドボード(あるとよい)

組み立て方

ブレッドボードなし

LEDは、電流が流れると光る部品です。長い脚と短い脚があります。短い脚 (接地端子) は黒いワイヤに直接接続し、長い脚は抵抗器に接続する必要があります。抵抗は流れる電流を制限し、LED の焼損を防ぐために使用されます。

次の図のように、抵抗器のもう一方の脚をもう一方のワイヤ (赤いワイヤ) に接続する必要があります。

次に、黒のワイヤを Pi の 20 (Ground) とマークされたピンに接続し、赤のワイヤを 22 (GPIO6) とマークされたピンに接続する必要があります。

注: Raspberry Pi モデル B+ を使用している場合は、26 個を超えるピンがあります。ただし、両方のモデル (B および B+) に存在するピンの割り当ては、ここで説明されているものと同じであり、プロジェクトは変更なしで機能するはずです。

回路は次のようになります。

ブレッドボードあり

任意のサイズのブレッドボードが利用できる場合は、それを使用して回路を構築することをお勧めします。LEDの脚を正しい方向に向けることを忘れないでください! この回路を以下の図 4 に示します。

コードについて

BlueJ で、プロジェクト LEDButton を開きます。画面は次のようになります。

上の BlueJ 画面の黄色のボックスはそれぞれ Java クラスです。LED クラスは、Raspberry Pi に接続された実際の LED を表します。

LED、Button、および ButtonListener クラスはすでに作成されており、次の演習で使用できますが、変更しないでください。Controller クラスは、独自のコードを記述する場所です。Button クラスと ButtonListener クラスについては、このチュートリアルのパート 2 で説明します。

新しい LED オブジェクトの作成
コードを書き始める前に、BlueJ を使用して直接制御することで、LED クラスが実際の LED にどのように影響するかを確認します。

開始するには、LED クラスを右クリックし、ポップアップ メニューから次の項目を選択します。

BlueJ は「インスタンスの名前」を尋ねます。提案された名前は今のところ問題ありません。BlueJ ウィンドウの左下に「lED1」という名前の赤い四角形が表示されます。

この長方形の赤いアイコンは、「lED1」オブジェクトを表します。このオブジェクトは、Raspberry Pi に接続された実際の LED の Java 表現です。

LEDの点灯

LED をオンにするには、「lED1」インスタンスを右クリックし、次を選択します。

これで LED が点灯するはずです。(すべての舞台裏の接続が行われるため、最初は少し時間がかかる場合があります)。

図 6 を見ると、gpio 番号を指定して LED も作成できることがわかります。デフォルトの gpio 番号は、LED を接続した gpio 番号 6 であるため、これを行う必要はありませんでした。

ヒント: LED クラスには、使用可能なすべてのメソッドとそれぞれの簡単な説明を示す独自のドキュメントが含まれています。それらを表示するには、LED クラス (黄色のボックス) をダブルクリックするだけで、そのドキュメント (javadoc) が表示されます。

演習

演習 1.1 : LED をオンにしました。今すぐオフにできますか?
演習 1.2 : Controller クラスにコードを記述して、今行ったことを対話的に行うことができます。Controller クラスで、メソッド「void turnLEDOn()」の本体を変更して LED をオンにするメソッドを呼び出し、同じクラスのメソッド「void turnLEDOff()」を同様に LED をオフにするように変更します。
チップ:

Controller クラスを編集するには、「Controller」の黄色のボックスをダブルクリックすると、Controller クラスのソース コードが表示されます。
Controller クラスでは、LED オブジェクトは 'led' と呼ばれます: それはすでに存在しています!
重要:コントローラー クラスに加えた変更をテストする前に、エディターの左上または BlueJ メイン画面の左パネルにある [コンパイル] をクリックしてプロジェクトをコンパイルすることを忘れないでください。

Controller クラスの変更をテストするには、LED クラスで行ったのと同じように、クラスを右クリックして Controller のインスタンスを作成し、次に赤い Controller インスタンスを右クリックして、変更したばかりのメソッドを呼び出します。 .
演習 1.3 : Controller クラスのメソッド "void flash(int time)" の本体を変更して、一定時間 (ミリ秒単位で測定) LED をオンにしてから、LED をオフにします。
チップ:

Controller クラスには、というメソッドがあります。
sleepMillisec(int 時間)
このメソッドは、プログラムを指定されたミリ秒数待機させるために使用できます。
1 ミリ秒は非常に短い時間です。
演習 1.4 : SOS のモールス信号を LED で点滅させるために、メソッド "void flashSOS()" の本体を変更します。
ヒント:

SOS のモールス符号は「. . . - - - . . .」で、ドット (.) は短いフラッシュで、ダッシュ (-) は長いフラッシュです。

前の演習で実装したフラッシュ メソッドを利用します。

演習 1.5 : モールス信号が使用するすべてのパターンを調べ、モールス符号で指定した文字列をフラッシュする Controller クラスの新しいメソッドを作成します。

ラズパイで実行するとき

  1. ラズパイのセットアップを先に行います。
  2. 必要な部品などを用意。
  3. サンプルプロジェクトをダウンロード。
  4. チュートリアルを見ながら作成。

現状は、Windowsで記事を書いているので、後に、ラズパイでの実行した結果を記述します。

RPi ラズパイの設定

イントロダクション

ラズパイ(RPo)を購入して、早速起動!などどと浮かれていると、早速設定の必要性が出てきます。
設定は一度やったら、あまりいじらないので、メモしておくに限ります。

ラズパイの設定

以下の内容を記述しています。

  • CPUの情報を表示する
  • 日本語入力の設定(iBus-Mozc)
  • インストール状況の確認
  • Javaのインストール
  • BlueJのインストール
  • Wifiの設定
  • オーバークロックの方法

CPUの情報を表示する

ターミナルから下のコマンドで確認できます。

cat /proc/cpuinfo

日本語入力の設定(iBus-Mozc)

日本語のキーボート、表示はOSのインストール時にできるかもしれませんが、自分の場合は入力ができませんでした。
なので、次のコマンドを実行して、必要なプログラムをインストールしました。

まずは、アップデートを行います。

sudo  apt update

次に、iBus-Mozcのインストール

sudo apt install iBus-Mozc

これが終わったら、再起動します。そして、設定後入力結果です。
この記事を書いているときのもので失礼・・・

画面の右上部分にインストールした結果追加されたアイコン?が表示さています。

インストール状況の確認

コマンドを実行して、「Java, Ruby, Pythonのインストールされているかどうか?」を確認しました。
以下のような感じでした。

コマンドの実行結果は以下の出力がありました。

 takunoji@raspberrypi:~ $ jaca -vewrsion
bash: jaca: コマンドが見つかりません
takunoji@raspberrypi:~ $ ruby -V
bash: ruby: コマンドが見つかりません
takunoji@raspberrypi:~ $ python -V
Python 3.9.2

つまり、Pythonのインストールはされているということです。

Javaのインストール

下のコマンドでインストールできます。

$ cd /home/pi 
$ wget https://download.bell-sw.com/java/13/bellsoft-jdk13-linux-arm32-vfp-hflt.deb 
$ sudo apt-get install ./bellsoft-jdk13-linux-arm32-vfp-hflt.deb 

下のコマンドは、各コマンドの設定を変更するものです。※インストールは上で終わり

$ sudo update-alternatives --config javac
$ sudo update-alternatives --config java

インストールができたら、下のコマンドで確認します。

$ java --version 
openjdk version "13-BellSoft" 2019-09-17 
OpenJDK Runtime Environment (build 13-BellSoft+33) 
OpenJDK Server VM (build 13-BellSoft+33, mixed mode)

BlueJのインストール

参考サイトは「bluej.org」です。
これの実行前に、一度コマンドで、Lチカをやっておくと良いです。

筆者は、Javaから起動したのですが、原因不明のエラーが出て困りました。
しかし、コマンドで実行したあとには、動きました。

以下のコマンドを叩きます。

sudo apt-get update && sudo apt-get install bluej

Javaは別途インストールする必要があります。

sudo apt install default-jdk

確認するには、次のコマンドで行います。

java -version

BlueJを使ってみる

インストール後に、起動してプロジェクトを作成すると以下のような形で見えます。

そしてクラスを作成すると、こんな感じです。

クラスのコードを書くために、エディタを開きます。

一連の流れを動画にしました。
<iframe width="560" height="315" src="https://www.youtube.com/embed/nQjENclzrhE"; title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

Wifiの設定

Rpi3以降では、GUIで簡単に設定ができます。

コマンドで設定する場合

参考サイト

1, コマンドでSSIDの確認
<code>sudo iwlist wlan0 scan | grep SSID</code>で対象のアクセスポイントが生きているか確認

  1. 「/etc/wpa_supplicant/wpa_supplicant.conf」を修正
    ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
    update_config=1
    country=JP
    network={
    ssid="ここにSSID"
    psk="パスワード"
    }

これで再起動すると、Wifiの設定ができているようです。

オーバークロックの方法

オーバークロックとは、大まかに、PCに無理をさせてスペックを上げることを言います。なのでPCが熱くなったりします。

こちらのページを参考にします。

  1. クロックの状態を確認するために、ツールを導入。

    sudo apt-get install cpufrequtils
  2. オーバークロックする前の状態を確認。

    cpufreq-info -s -m
  3. /boot/config.txt 修正。

    arm_freq=1300
    over_voltage=5
    gpu_freq=500
    sdram_freq=500
    sdram_schmoo=0x02000020
    over_voltage_sdram_p=6
    over_voltage_sdram_i=4
    over_voltage_sdram_c=4
  4. リブート

    udo reboot
  5. 確認。

    pufreq-info -s -m