ラズパイ設定 ~リモートデスクトップ,ウェブサーバー構築,JavaFX~

イントロダクション

シングルボードコンピューター、ラズベリーパイをご存じの方は多いと思いますが、知らない人のために簡単に「こんなものもです」という動画を引っ張ってきました。以下のものは、サンプルです。
用途その1:ロボットを動かす

用途その2:ゲーム機にする

用途その3:メディアプレーヤーにする

用途その4:ウェブサーバーにする

今回のやりたいこと

表題の通りに、以下の設定を行いました。

  1. ラズパイにリモートデスクトップでアクセスできるように設定
  2. ラズパイを起動したときにウェブサーバーが起動する ※インストール時に、自動起動する設定を行ってくれるようなので、実際にやったことは、インストールとPHPの設定のみ。

ちなみに、コマンドでOSを終了するときは以下のコマンドです。

sudo shutdown now

Index

  1. ラズパイにリモートデスクトップ接続
  2. ラズパイのセッティング
  3. ウェブサーバーのインストール
  4. PHPのインストール
  5. ウェブサーバー(Apache2)の設定
  6. ウェブサーバー(NGINX)の設定
  7. Javaのインストール
  8. Wifiの設定
  9. iPhoneをルーターの代わりにする
  10. MavenのインストールとJavaFXのインストール

ちなみに以下のアプリ(コマンド)はインストール済みでした。

ハマったところ

ブラウザにキャッシュが残っていて、修正自体は問題ないが、修正が反映されていない事件があったので
「おかしい!」と思ったらブラウザの履歴を削除してみるのもよいと思います。

テキストエディタNano

nanoコマンドでのテキストエディタをお勧めします。
その理由は、操作方法法が下に表示されているから。。。
nano

終了するのはウィンドウズのキーボードならcntroll + Xで終了になります。
つまり「^」はcontrollボタンに相当するわけです。

行番号の表示

修正対象ファイル:/etc/nanorc

set linenumbersのコメントアウトを解除する

Access RPi

ラズパイにリモートデスクトップ接続する方法
こちらのサイトを参考に実行してみました。

RPi Setting

ラズパイのセッティングを行います。

  1. ラズパイを起動して、コマンド画面(Terminal)を開きます。

  2. 以下のコマンドを入力、Enterを押下

    sudo apt-get install tightvncserver -y

    コマンドの実行中にy/nの入力を求められるので「y」を入力します

  3. 同様に以下のコマンドを入力

    sudo apt-get install xrdp
  4. 上のコマンド実行が終わったら、ラズパイの使用しているネットワークとIPアドレスを調べます。※192.168.0.10とあります。
    具体的には、下のような形で確認、メモします。
    ifconfig

    • Terminalで「ifconfig」とコマンドを入力すると上のように表示されるので、以下のパターン別に見分けます。
      1. LANケーブルの場合: eth0:の部分にある「inet」をみる。ちなみに上のキャプチャはWifi接続なので「inet」の部分がありません。
      2. Wifi接続の場合: wlan0:の部分にある「inet」をみる。キャプチャには接続しているので「inet」があります。そして「192.168.0.12」と表示されています。これをメモリます。
  5. 改めてWindowsを立ち上げ、ラズパイは、ディスプレイを接続しない形で、再度立ち上げなおし(起動しなおし)「アクセサリ -> リモートデスクトップ接続」のようにアプリを起動します。

  6. 下のような画面が出るので先ほどメモしたIPアドレスを入力します。

    RPiSetting

そして接続してみると下のような画面が見れます。
remoteDesk

これで、今後ラズパイ用ののディスプレイ、キーボードなどを用意しなくても、Windowsからリモートでラズパイを操作することができます。一応ですが、
ラズパイの電源は入れ、ネットワークの接続を行う必要があります。

Install Web Server

ウェブサーバーのインストールを行います。参考サイトはこちら

しかし、Raspberry Pi Imagerでインストールしたもの(OS)には、Apacheが初めからインストールされているようで、さらにラズパイ起動時にウェーブサーバーも起動してくれるようになっていたんで今更インストールしなくてもよいかもしれません。。。

  1. 以下のコマンドを叩きます(入力してEnter押下)
    sudo apt-get install nginx

    インストールが終了したら。。。

  2. 下のコマンドでサーバーを起動します。※自分の場合はインストールしたら起動していました。。。
    sudo /etc/init.d/nginx start

    ブラウザで「localhost」と入力すれば確認できます。
    WebServer

逆に停止するときは下のコマンドです。

sudo /etc/init.d/nginx stop

インストールした時点で、自動起動する設定も反映されるようなので、もともと入っているApacheを使用しなくてもよいようです。

Install PHP

みんながよく使用するので(ウェブ系の人々)一応インストールします。あわよくばWordPressもインストールしようか?と思っています。
シンプルに以下のコマンドでインストールできるようです。

sudo apt-get install php
php -v # phpのバージョンを確認後「X」にバージョン番号を対応させる
sudo apt install phpX.X-mbstring

インストールの確認は以下のコマンド

php -v

Setting Apache

ウェブサーバーを起動した後に、自分の作成した画面を表示できるように設定を行います。
そして、以下のパッケージ?が必要なようですのでインストールします。※参考サイトより

sudo apt install apache2-dev # PHP動かすのに必要(と思う)

まずは、サーバーの起動確認

ラズパイの80番ポートを使用しているアプリの確認を行うコマンド。※80の部分を8080に変更すれば、8080晩ポートの確認ができる

nc -v -w ラズパイのIPアドレス -z 80

そして、ブラウザでIPアドレスにアクセスしてみると下のように表示されました。
ApacheView

Apache起動と停止コマンド

# 起動
$ sudo service apache2 start
# 停止
$ sudo service apache2 stop
# 再起動
$ sudo service apache2 restart // エラーが出る場合がある

# エラーが出る場合は、stopとstartを別々に動かす方法もある

# 強制的に設定を再読み込みする
sudo /etc/init.d/apache2 force-reload

エラーになったときの対処

エラーメッセージの中に下のような文言があるはず。。。

See systemctl status apache2.service

このコマンドを叩いてみると詳細な情報が表示されました。
自分の場合は下のように叩きました。

sudo systemctl status apache2.service

どうやらIPアドレスがバインド (関連付け)されていないようでした。。。
そして、初めにインストールしたNGINXがポートを使用していたためバインドできないエラーが出ていました。下のコマンドで確認しました。つまるところApacheではなくNGINXが動いていた。。。ということでした(笑)

sudo netstat -tlnp

設定の変更

ファイルを修正する前には必ずバックアップを取りましょう

  1. 修正対象ファイル: /etc/apache2/apache2.conf
    バックアップを取るのには以下のコマンド

    # cp コピーするファイル コピー後のファイル
    cp /etc/apache2/apache2.conf /etc/apache2/bakup.apache2.conf

エラーページの設定
下のような文字列を追記する

<VirtualHost *:80>
    # 404エラーのとき、/error/404.htmlを表示する
    ErrorDocument 404 /error/404.html
    ErrorDocument 403 /error/403.html
</VirtualHost>
  1. 修正対象ファイル: /etc/apache2/site-available/000-default.conf

    <VirtualHost *:80>
        # /var/www/htmlディレクトリをドキュメントルートとする設定
        DocumentRoot /var/www/html  
    </VirtualHost>

    デフォルト(初期)設定で上のようになっているのでそのままにしようと思います。。。

  2. PHPの設定を行う
    PHPのインストールを確認後に作業してください
    以下のコマンドを実行します。使用している(インストール済みの)PHPのMODを下のコマンドで「php~.load」があるか確認してください、なければa2enmodコマンドで有効にしてください

    ls -l /etc/apache2/mods-enabled

    有効にするモジュール(MOD)

    sudo a2enmod rewrite
    sudo a2enmod suexec
    sudo a2enmod include
    sudo a2enmod fcgid
  3. 修正が終わったらサーバーを再起動します。

    $ sudo service apache2 stop
    $ sudo service apache2 start

Setting Nginx

Apacheの時と同様に、PHPの設定を行います。
ドキュメントルートはApacheと同様なので、割愛します。

PHPの設定

PHPを使用するのにphpX.X-fpmを使用するようなので今回は下のようにインストールしました。

sudo apt-get install php7.3-fpm

設定ファイルの修正

参考サイト
修正対象ファイル: /etc/nginx/sites-enabled/default

  • 下のようになっている行を

    index index.html index.htm;

次のように修正

index index.php index.html index.htm;

そしてPHP部分の修正、下のようになっている所の{}のなかを

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
# location ~ \.php$ {

下のように修正

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
        include snippets/fastcgi-php.conf;

# With php-fpm (or other unix sockets):
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
# With php-cgi (or other tcp sockets):
#fastcgi_pass 127.0.0.1:9000;
}

そして、下のようなエラーが出る場合「nginx.conf」or「nginx/sites-enabled/default」
のファイルに下のような文字列が記述されているのでどちらかをコメントアウトします。
ちなみに自分の場合はdefaultの方を修正しました。

#listen 80 default_server;
#listen [::]:80 default_server ipv6only=on;

phpExe

Install Java

Javaのインストール配下のコマンドでOK、下のようなコマンドでインストールを行います。
参考サイトはこちらです

sudo apt install default-jdk

しかし、インストールされるのはOpenJDK11, 8なのでネットワーク環境の良いところで実行してください。
でないと、自分のように何時間も待つ羽目になります。。。

そして、実行してみたところ上のコマンドの次に

sudo apt install openjdk-8-jdk

を実行し、使用するJDKの選択を行う必要がありました。

sudo update-alternatives --config java

alternatives

そして、JDK8を選択、javaコマンドが起動できました。
JavaCommand

Wifi Setting

Wifiの設定を行います。
参考サイトはラズパイのページです。

wifiの接続先検索コマンド
  1. ifconfigコマンドで、「wlan」という文字列を探します。
  2. おそらく「wlan0」という文字列が見つけられるので、それを確認
  3. 以下のコマンドを叩く

    sudo iwlist wlan0 scan

これで、接続できるSSIDの一覧を取得できます。

wifiの接続先候補リスト
/etc/wpa_supplicant/wpa_supplicant.conf

上のファイルに接続先候補が記述されています。
なので。。。

wifi接続先候補の確認

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

cat /etc/wpa_supplicant/wpa_supplicant.conf

そしてこれを編集したいときは

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

しかし、これは新しい接続先に画面から接続したらプログラムがこのファイルに書き込んでくれるので「不要なものを削除する」のがメインになりそうです。

Use iPhone for router

iPhoneをルーター代わりにする
ラズパイ上のウェブサーバーを起動しても、ネットワークがつながらないと、話になりません。
そこで、携帯をルーターの代わりにする方法を記載しておきます。

  1. 設定をタップ

  2. インターネット共有をタップ

  3. インターネット共有をONにする

  4. ちょっと待つ

これで、iPhoneをルータの代わりにできます。あとは、ラズパイでiPhoneにwifi接続してやれば、ウェブサーバーにアクセスできます。通信費は携帯のものを使用するので注意が必要です。

Install Maven JavaFX

Mavenのインストール
こちらの記事にも記載しましたが、下のコマンド一発でインストールできます。

sudo apt-get install maven

JavaFXのインストール
参考サイトはこちら
そして、apt-get instll でインストールしたのなら

/usr/lib/jvm

以下に、JDKがインストールされているはずです。

  1. JDKのインストール

    sudo apt update
    sudo apt install openjdk-8-jdk

  2. JDKの確認と選択

    sudo update-alternatives --config java

  3. /etc/environmentファイルを修正する

    JAVA_HOME="javaのインストールしているパス"

具体的には下のようにJDKを確認・指定します。

そして、

sudo nano /etc/environment

でファイルに以下の文字列を書き込みます。

JAVA_HOME="usr/lib/jvm/java-8-openjdk-armhf/jre/bin/java

  1. GluonからJavaFX SDKをダウンロード
    このページからダウンロードできます。そしてダウンロードしたら適当な場所に解凍します。自分の場合は、ダウンロードフォルダに解凍しました。
    以下のように配置(インストール)するようです。
解凍したフォルダ(コピー元) JDKのパス(コピー先)
armv6hf-sdk/rt/lib/ext/jfxrt.jar jre/lib/ext/
armv6hf-sdk/rt/lib/arm/* jre/lib/arm/
armv6hf-sdk/rt/lib/javafx.platform.properties jre/lib/
armv6hf-sdk/rt/lib/javafx.properties jre/lib/
armv6hf-sdk/rt/lib/jfxswt.jar   jre/lib/

実行結果

これで、GithubからPULLしたソースをビルドできる

mvn install

しかし、リモートデスクトップ接続の状態ではXサーバーの問題でうまく動かないようです。

<未解決>
ラズパイを単体で起動、確認してみます。

でわでわ。。。

関連ページ一覧

Eclipse セットアップ

  1. Java Install Eclipse〜開発ツールのインストール〜
  2. TensorFlow C++環境〜EclipseCDTをインストール〜
  3. Setup OpenGL with JavaJOGLを使う準備 for Eclipse
  4. Eclipse Meven 開発手順〜プロジェクトの作成〜
  5. Java OpenCV 環境セットアップ(on Mac)
  6. Eclipse SceneBuilderを追加する
  7. JavaFX SceneBuilder EclipseSceneBuilder連携~

Java Basic一覧

  1. Java Basic Level 1 〜Hello Java〜
  2. Java Basic Level2 〜Arithmetic Calculate〜
  3. Java Basic Level3 〜About String class〜
  4. Java Basic Level 4〜Boolean〜
  5. Java Basic Level 5〜If Statement〜
  6. Java Basic Summary from Level1 to 5
  7. Java Basic Level 6 〜Traning of If statement〜
  8. Java Basic Level8 〜How to use for statement〜
  9. Java Basic Level 8.5 〜Array〜
  10. Java Basic Level 9〜Training of for statement〜
  11. Java Basic Level 10 〜While statement 〜
  12. Java Basic Swing〜オブジェクト指向〜
  13. Java Basic Swing Level 2〜オブジェクト指向2〜
  14. サンプル実装〜コンソールゲーム〜
  15. Java Basic インターフェース・抽象クラスの作り方
  16. Java Basic クラスとは〜Step2_1〜
  17. Java Basic JUnit 〜テストスイートの作り方〜

Git関連

  1. Java Git clone in Eclipse 〜サンプルの取得〜
  2. Eclipse Gitリポジトリの取得 GitからソースをPullしよう〜
  3. IntelliJ IDEA GitGitリポジトリからクローン〜

JavaFX関連ページ

  1. Eclipse SceneBuilderを追加する
  2. JavaFX SceneBuilder 〜EclipseとSceneBuilder連携~
  3. JavaFX SceneBuilder〜ボタンにメソッドを割り当てるワンポイント〜
  4. Java プロコンゲーム 〜見た目の作成(SceneBuilderの使用)〜

ステップアップ関連ページ一覧

  1. Java 初めてでも大丈夫〜ステップアッププログラミングのススメ〜
  2. ステップアッププログラミング〜Java FxでHelloWorld解説〜
  3. Java StepUpPrograming〜JavaFX で四則計算〜
  4. Java StepUpPrograming〜JavaFXで画面切り替えを作る1〜
  5. Java StepUpPrograming〜JavaFXで画面切り替え2ボタン作成〜
  6. Java StepUpPrograming〜JavaFXで画面切り替え3アクション〜
  7. Java StepUpPrograming〜JavaFXで画面切り替え4Pane切り替え〜
  8. Java StepUpPrograming〜JavaFXで画面切り替え5WebEngine

JavaFX + ND4Jで機械学習準備

  1. JavaFX + ND4J〜数学への挑戦1:ND4Jのインストール〜
  2. JavaFX + ND4J〜数学への挑戦2: 行列の計算〜
  3. Java + ND4J 〜数学への挑戦3: ベクトル(配列)の作成方法〜

オブジェクト指向関連ページ

  1. [オブジェクト指向の概念1〜OracleDocのチュートリアル1〜](https://zenryokuservice.com/wp/2019/10/301. /%e3%82%aa%e3%83%96%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88%e6%8c%87%e5%90%91%e3%81%ae%e6%a6%82%e5%bf%b5-%e3%80%9coracledoc%e3%81%ae%e3%83%81%e3%83%a5%e3%83%bc%e3%83%88%e3%83%aa%e3%82%a2%e3%83%ab%ef%bc%91/)
  2. オブジェクト指向の概念2〜クラスとは〜

RPi SSH Command Memos 〜ラズパイに接続するときのメモ〜

ラズパイにMac(PC)から接続するときの手順とコマンドのメモ

SSH コマンドメモ

MacからLANケーブルで接続したラズパイにSSHコマンドでsつ属するとき

接続時に使用するコマンド

接続する時に使用するIPアドレスを調べる
$ arp -a -> 接続しているIPアドレスを検索
<コマ万燈の実行結果>

ラズパイ接続
sudo ssh ユーザー名@IPアドレス

実行例
sudo ssh pi@a192.168.4.2

ここで、「sudo」をつけ忘れるとエラーが出た。実行する環境(PC)によって実行結果が変わる可能性がある。
-> PCのアクセス権限などで実行結果が変わる

ラズパイからログアウト
exit

ファイル送信

<コマンドの入力形式>
scp 「(オプション)」「転送したいファイル名」「転送先のパス」

実行例
sudo scp -p -v ~/.ssh/known_hosts ~/Java/zips/ejdk-8u211-linux-arm-sflt.tar.gz pi@192.168.4.2:/home/pi/

注意点

scpコマンドを使用してアクセスする時にアクセス権限がないのでエラーが出ました、-> 「sudo」を使用しない時

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

これに対してsudoコマンドを初めにつけてやり実行するとちゃんと接続できました。

-> パスワードの入力を促される。

PCのスーパーユーザーのパスワードとラズパイのユーザーのパスワードが聞かれるのでそれを入力する。

でわでわ。。。



Java IoT 開発準備〜BlueJの使い方+Eclipseインストール(RPi)〜

IoTをJavaでやる

JavaでのIoT開発をやるのに、色々と考え、試しましたが、結局はPC上に仮想マシンを立てて実行、テスト、デプロイの順でやるのがやりやすいといところに至りました。

BlueJを使う

VMBoxにインストールしたRPiにデフォルトでインストールされているJavaのIDE(開発ツール)としてBlueJというものがあります。

ちょっと動かしてみました。

Eclipseを使う

参考サイトをみてセットアップを行い開発を進めるのも1つの手段です。

インストール手順

  1. ラズパイでターミナルを開き、以下のコマンドで「dhcpcd5パッケージ」を削除する(互換性がないため)
    sudo apt-get purge dhcpcd5

    これをやった後にネットワークの切り替えをやらないといけません。
    sudo systemctl enable networking
    そして、ここに記載しているものは抜粋なので参考サイトを翻訳してよく読む必要がありますので注意です。

  2. そして、ラズパイでのネットワーク設定はこちらを参照してやってみる→削除したDHCPネットワークを使用不可にしたのでネットワークを切り替えます。
    sudo systemctl enable networking
    これで、通常の(ラズビアン)デビアンのネットワークが動くようです。

  3. gdebiコマンドラインツールをインストールします。
    sudo apt-get update
    sudo apt-get install gdebi-core

  4. Java 8がインストールされていることを確認してください。ターミナルを起動してから下のコマンドを叩きます。と参考サイトに記載がありましたが、openjdk8がインストールできないので(apt-getで見つからなかった)デフォルトのJDK(OpenJDK11)でやってみようと思います。
    java -version

参考にしたサイトの手順にしたのようなものがありました。がdhcpを削除したらネットに繋がらないです。。。当たり前ですが。。。なので、ネットワークの切り替えを上の手順でやりました。
sudo systemctl enable networking

Javaのバージョンが11なので8をインストールします。
sudo apt-get install openjdk-8-jre-headlessしかし、インストールできませんでした。パッケージが見つからないようで。。。

しかし、インストール!

sudo gdebi kura_ <バージョン> _raspberry-pi-2-3_installer.deb

そして、失敗!
やっぱり、JDK8でないといけないようです。
なのでOracle JDK8をインストール!
このサイトを参照

補足

ラズパイのネットワーク

ネットワークの設定を行いました。が結局繋がらなかったので、実物をダウンロードしてインストールする方向に切り替えました。。。こちらのサイトから落とします

ダウンロードしている最中に、(終わるかは別)VMBoxの共有フォルダを作成します。
VMBoxの設定を開き、共有フォルダを選択します。

緑色のプラスボタンを押下して下のように入力しました。

そして、ゲストOS(ラズパイ)を起動して共有フォルダを探してもありませんでした。。。

VBoxAdditionインストール

結論から言うとアプリが足りないのです。。。
と言うわけで、VBoxAddtion〜をインストールします。
VBoxのメニューから「Device」を選択します。VMBoxからゲストOSを起動した状態で行うのでキャプチャが取れませんでした。。。
「Insert Guest Additions CD image」と言う文字が見えるのでそれをクリックします。
するとゲストOS上にCDが見えるようになりますので、それを確認します。さらに以下の手順を行います、

Guest Additions〜のインストール

ターミナルを起動して以下のコマンドを叩き、CDをマウントします、これをやらないとファイルを起動できません。

  1. ディレクトリの移動
    cd /mnt
  2. CD用のディレクトリの作成と
    mkdir cdrom
  3. CDをマウント
    mount -r /media/cdrom /mnt/cdrom/
    ちなみに、CDは/media/cdromにありました。
  4. そしてインストールを行います。
    sudo sh /mnt/cdrom/VBoxLinuxAdditions.run
  5. 共有フォルダをマウント、ファイルパーミッションの変更します。
    sudo mount -t vboxsf 共有フォルダの名前 /mnt/マウントするフォルダ名
    自分の場合は下のようなコマンドになりました。
    sudo mount -t vboxsf VMBox_Fld /mnt/vmbox_fld

そして、パーミッションの変更(誰でもアクセスできるようにします)以下のコマンドを叩きます。
chomod 777 マウントしたフォルダ
自分の場合は、以下のコマンドを叩きました。
sudo chomod 777 /mnt/vmbox_fld

パーミッションの詳細に関しては、こちらを参考にしました。さらに、グループ権限の登録も行います。
sudo gpasswd --add pi vboxsf

しかし、うまくいかず。。。他の人はこれでだいたいうまくいっているようです。

Macのやり方があるようだ

こちらのサイトを見ると<VMBox.app/XXX>のファイルを何かしら、しないといけないようです。

でわでわ。。。



ラズパイ RPi 〜(成功)PC(Mac)からSSH接続〜

今回も、ラズパイ(RPi)へのSSH接続に挑戦します。

前回の反省

RPiに接続するのにはLANで接続してやらないとダメな様だ。

反省を活かす

シンプルにLANで接続してやれば良いだけです。できるかどうかはやって見てから。。。
前回、RPiをPC上で探し当てるのに「arp-scan」コマンドをインストールしました。> arp-scan -Vでバージョンの確認をします。つまりインストールされている確認をします。

そして、RPiとMac(PC)を接続します。下の様に接続しました。

なんか、USBとLANで接続しているので無限ループしそうですが、現在の自分の理解としては以下の様に理解しています。

  1. RPiのUSBはあくまで電源を共有するためのUSB
  2. ネットワーク接続に関しては、LANもしくはWifiでの接続になる

これでPCからRPiへの接続を試みます。

いきなり詰まる

先ほどの「arp-scan」はどうやらIPがわからないと使えない様で。。。仕方ないので、他の方法を探します。
「ifconfig」コマンドで調べることにしましたが、出力される内容がわからないので、調べました。参考サイトはこちらです。
そして、理解したのは以下の内容です。

  1. ifconfigコマンドで出力される「lo0」「eth0」などはネットワークインターフェースの名前であること
  2. しかし、ラズパイの情報を持っていないと話にならない

というわけで、ラズパイに改めてログインしてSSHの設定などを行うことにしました。

RPiを見てみる

結局は、ラズパイの設定を見て設定しているIPアドレスを調べました。自分の場合は192.168.4.2なっていたので上のようにLANでPCと接続してから、以下の手順で接続しました。

bluetoothctlを使う

sshで以下のコマンドで接続しました。

$ ssh pi@192.168.4.2
# パスワードなどを聞かれます。。。
$ sudo bluetoothctl

下のような感じで表示されました。

そして、接続したいMACアドレス(上の黒塗りにしている部分)をコマンドに渡します。

そして、Mmicrobitと接続ができました。



ラズパイ RPi 〜(失敗)PC(Mac)からSSH接続〜

今回は自分のPC(Mac)でSSH接続、つまりUSBで接続してMacから操作しようということをしようと思います。

SSH接続

ターミナルからラズパイ(RPi)に接続しようというわけです。
もともと、RPiに画面を使用したアプリを作成しようと色々試したのですが、結局は中途半端になっておりました。
画面作成はどうしてもビデオカードなどを使用したり、小型のディスプレイを使用したりと面倒なことが多いので、保留になっていましたが、今回はシンプルに画面なしのものを作成しようと考えています。

MIDIプレイヤー

これを作成したいのですが、道のりは遠そうなのでJavaの基本ブログ(JAVA学習フロー)を作成しながらのんびりと行こうと思います。

はじめの一歩

まずはラズパイの環境構築などを行うためのセットアップが必要なので、Macから接続してラズパイをコントロールできる様にしようと思います。ほぼ、手順の再確認になります。

SSH接続手順

Macからラズパイを探す必要があります。なのでMacとラズパイをUSBで接続したら、以下の手順を踏みます。

  1. ターミナルを起動
  2. ラズパイをターミナルから探す
  3. ラズパイとSSH接続する

macでは「arp-scan」コマンドが使える様です。
こちらのサイトを参考にしました。

brewコマンド

自分も最近知ったのですが、「brew」コマンドはMacで使用できるコマンドでいろんなアプリをインストールできるコマンドです。Pythonとかrubyとかgitに上がっているものなど色々とインストールできる様です。

今回は「arp-scan」を使用してやろうと思います、がせっかくの機会のなでこのコマンドのGithubをみてみました。いろんな人が色々とやっているのだなぁと感慨深いものがありいました。

失敗1

今回の挑戦は、USBでラズパイに接続することでしたが、USBは電源につい泣いているのもあり、ネットワークを別個に接続する必要があるみたいです。
現状のRPiは何も設定していないので、ネットワークを接続できる様な設定が必要です。

RPiの設定を行う

やっぱり、ネットワークの設定だけはやっておかないといけない様です。。。

結果

電源を入れたラズパイにLANケーブルを接続して、改めて上のコマンドで検索してやる必要があるようです。

Install XFCE4 on RPi 〜ラズパイに高速軽量デスクトップインストール〜

イントロダクション

ラズパイに表題のアプリケーションをインストールします。デフォルトインストールされているラズビアンは以下の理由で使用しません。

・起動が遅い

そしてXFCE4を使用する理由を列挙します。

  1. GUIアプリを作成したい
  2. CUIでの画面アプリケーションは動かせない(自分の知る限り)

XFCE4のインストール

参考にするサイトのURLです。

http://www.etcwiki.org/wiki/XFCE_desktop_on_raspberry_pi

そして、以前、XFCE4のインストールを行なっていたのでどこまでやったかを確認します。

インストール

上記のサイトのコマンドを叩いていけばインストールできます。

su
apt-get update
apt-get upgrade
apt-get install vim sudo raspi-config rpi-update  #VIMインストール
raspi-config    (change what you want, do NOT boot to desktop)

ポイントはデスクトップを起動しない設定を最後の行でするところです。

これでXFCE4のインストールは完了で、次はウィンドウマネージャをインストールしてやる必要があります。

このままだと今までと大して変わりません。。。。

今までと同じラズパイ画面がでます(笑)

 








dpkg error processing package default-java-plugin (–configure)

イントロダクション

表題の様なエラーが出た時の対処をやりました。

症状:apt-get ができなくなった。。。

調査

エラーメッセージをとりあえず検索する。。。

それっぽいページを開き、詳細を見ていく。。。

色々と調べていくうちにラズパイの「LAN」を起動していないことに気がつく。。。

解決

ネットワークに接続しているかどうかの確認を行いましょう。

あと環境変数JAVA_HOMEに使っていないJDKを指定していたのでそれを削除して再起動したら治りました。


RPi Java Swing〜ラズパイにJava Swingアプリを起動する〜

イントロダクション

初めは、CUIからJava Swingを起動したかったのですが、ちょいと時間がかかるので保留にして、GUI起動してからSwingを実行する様に変更します。

Introduction

At first I woudl like to execute from CUI to Java Swing(GUI). But I need to more leaning about Swing and X. That's why I will start GUI and execute Java Swing.

Java Swing

最近では「JavaFX」でも画面を作成することができるので「Swing」とどちらを使用するか悩んだのですが、テクノリジー的に歴史の長い「Swing」を使用することにしました。

Swingは大雑把に以下の要素で構成されています。

画面(JFrame, JDialog, JWindow), 画面の部品(JComponent)だいたいこれらのクラスを継承したクラス群を使用して画面の作成を行います。

詳細に関してはこちらをどうぞ。

Java Basic Swing〜オブジェクト指向〜

作ってみよう!(Let's get started!)

シンプルに写経をするのが一番だと思います。

mport javax.swing.*;
import java.awt.*;

public class RpiCtlMain extends JFrame {
    public static void main(String[] args) {
        RpiCtlMain rpi = new RpiCtlMain(args);
    }

    /**
     * コンストラクタ(Constructor)
     * インスタンスを作る処理を行う。(Create instance)
     *
     * 1.プログラム引数を受け取る
     *  [0]:タイトル
     */
    public RpiCtlMain(String[] args) {
        // 親クラスのコンストラクタを呼び出す
        // Call constructor of parent class
        super();

        // JFramewを作成するこのクラスが
        // JFrameを継承しているのでこのクラスを作成する

        // デフォルトの画面タイトル
        this.setTitle("Hello RPi Swing!");
        // プログラム引数がある時
        if (args.length > 0) {
            // 1個目の引数をタイトルにセット
            this.setTitle(args[0]);
        }
        // コンポーネントを追加する
        Container con = this.getContentPane();
        con.add(new Label("Hello Swing ! This is Label"));

        // 画面サイズ
        this.setSize(500, 500);

        // 画面が終了したらプログラムも終了する設定
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        // パック(コンポーネントのサイズに合わせる)
        this.pack();
        // 表示設定をする(しないと何もおきずに終了してしまう
        this.setVisible(true);

    }
}

実行結果です。真ん中あたりにあるのは赤字になっているコードを入れた時と入れない時の差分です。※大きい方が赤字コードを入れないケースです。

ちなみにGITリポジトリからPULLできます。

https://github.com/ZenryokuService/RpiSwing

関連ページ

<ラズパイ関連>

  1. ラズパイ SSH接続メモ
  2.  ラズパイ Under-voltage detected! 〜エラー対処〜
  3.  ラズパイ(CUI)セットアップ
  4.  RPi Settingup Wifi in CUI ~ラズパイ CUI Wifi接続~
  5. Memos about Settingup RPi ~使用したコマンドメモ~
  6. RPi and JavaFX sample of deployment 〜ラズパイにサンプルデプロイ〜
  7.  RPi JavaFX execution ~ラズパイ JavaFX自動起動~
  8. RPi Install Git 〜ラズパイにGitのインストール〜
  9. RPi Java Swing〜ラズパイにJava Swingアプリを起動する〜 ※失敗しています。。。」
  10. RPi Install Git 〜ラズパイにGitのインストール〜
  11. RPi Maven Install 〜ラズパイでMeven〜
  12. Install XFCE4 on RPi 〜ラズパイに高速軽量デスクトップインストール〜

 


RPi Install Git 〜ラズパイにGitのインストール〜

イントロダクション

Gitはローカルリポジトリとリモートリポジトリを使用します。

概要としては以下の様になります。「リポジトリ」の意味は作成してみればわかります。(笑)

1: ローカルリポジトリを作成する

2: リモートリポジトリからクローンする

3: ダウンロードできたことを確認する

手順:参考サイト

1: Gitのローカルリポジトリを作る

適当なディレクトリ(フォルダ)を作成します。下はコマンド入力の例です。

「myLocalRepository」は自分で作成するローカルリポジトリになります。

$mkdir ./myLocalRepository
$cd ./myLocalRepository
$git init

実行後に以下の様な文言が出ます。

Initialized empty Git repository in /XXX/myLocalRepository/.git

早い話が「.git」ファイルが作成されます。

Gitからリポジトリをダウンロード(クローン)する

git clone https://github.com/ZenryokuService/rpictl.git

上のコマンドはコピペで自分の作成しているリポジトリをダウンロード(クローン)できます。

そしてJAVA_HOMEにJDKを指定します。

以下のコマンドで「bashrc」or「bash_profile」ファイルを修正します。

#パターン1
nano ~/bashrc
#パターン2
nano ~/bash_profile

開いたら一番下に以下の様なスクリプトを追加します。(書くだけです)

JAVA_HOME=/usr/local/jdk1.8.0_181
PATH=$PATH:$JAVA_HOME/bin:M2_HOME/bin

作成したら以下のコマンドでbashrc(bash_profile)をリロードします。

#パターン1
source ~/.bashrc
#パターン2
source ~/.bash_profile

余談

せっかくクローンしてきたのでMavenビルドをかけてみます。

参考にしたサイトはこちらです。

ぶっちゃけてコピって適当な場所を修正しただけです。

※赤い部分が修正した部分です。

<!-- 実行可能jarファイル用のプラグイン -->
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>3.0.0</version>
    <configuration>
        <finalName>test</finalName>
        <descriptorRefs>
            <!-- 依存するリソースをすべてjarに同梱する -->
            <descriptorRef>jar-with-dependencies</descriptorRef>
        </descriptorRefs>
        <archive>
            <manifest>
                <mainClass>main.Main</mainClass>
            </manifest>
        </archive>
    </configuration>
    <executions>
        <execution>
            <!-- idタグは任意の文字列であれば何でもよい -->
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
</plugin>

これをGitにコミット(PUSH)してからラズパイで「mvn install」で必要なファイルのインストールおよびビルドをかけます。

targetディレクトリ(フォルダ)にJARファイルが出力されているので以下のコマンドで実行します。

java -jar XXXX.jar

実行結果はまた後日!