rss ログイン
JJ1RLWのXOOPS Cube Siteにようこそ

メインメニュー

ログイン


ユーザー名:


パスワード:





パスワード紛失  |新規登録

オンライン状況

1 人のユーザが現在オンラインです。 (1 人のユーザが xpress ブログ を参照しています。)

登録ユーザ: 0
ゲスト: 1

もっと...

アーカイブ

カテゴリー

アクセスカウンタ

今日 : 5454
昨日 : 9898
総計 : 238498238498238498238498238498238498

カレンダー

2018年2月
« 1月    
 123
45678910
11121314151617
18192021222324
25262728  

xpress ブログ » » PC

  カテゴリー ‘PC’ のアーカイブ
WordPress for XOOPS

Raspberry Pi3に接続したカメラ、サーボをブラウザで遠隔コントロール

Raspberry Pi3に接続したカメラ、サーボをブラウザで遠隔コントロール出来る様にして見ました。

Raspberry Pi3でtornado(ストリーミング配信用サーバ)を構築」の記事

PCA9685 16チャンネル 12-ビット PWM Servo モーター ドライバーでサーボを制御」の記事にpythonのCGIHTTPServerを組み合わせて、ブラウザで遠隔コントロールを実現させます。

今回は、Raspberry Pi3に接続したカメラの向きを、上下左右にそれぞれ5秒間程度15度向ける様にしました。
カメラのライブ映像を見るブラウザ画面とながら操作できる

手順
1. /home/piにtornado(ストリーミング配信用サーバ)に必要なファイル
camera.py
index.html
を配置します。
※予め、tornado(ストリーミング配信用サーバ)をサービスとして登録して置きます。
systemctl start tornado.service ※tornado(ストリーミング配信用サーバ)を起動
systemctl stop tornado.service ※tornado(ストリーミング配信用サーバ)を停止

2. CGIHTTPServerに必要なファイル
/home/pi/Adafruit_Python_PCA9685に
index.html

/home/pi/Adafruit_Python_PCA9685に
cgiserver.py

/home/pi/Adafruit_Python_PCA9685に
sg90_92r_pca9685_camera_cont_cmd.py

/home/pi/Adafruit_Python_PCA9685/cgi-binに
cam1.cgi

3. cgiserver(カメラコントロール用サーバ)をサービスに登録する
pythonのCGIHTTPServerをsystemdに登録しサービスとして自動起動」を参照

あとは、ブラウザで「http://Raspberry Pi3のIPアドレス:8000/cgi-bin/cam1.cgi」にアクセスし、[livecamera by Raspberry Pi3を起動する]のボタンをクリックし、tornado(ストリーミング配信用サーバ)を起動します。
別にブラウザを立ち上げ、「http://Raspberry Pi3のIPアドレス:8080」にアクセスするとライブ映像を見る事が出来ます。
ライブ映像を見ながらカメラを操作出来る様にふたつのブラウザ画面を適当な位置に移動させます。

※2018-01-11 文章中にリンク情報を追加、一部文言を訂正

Raspberry Pi3のライブカメラをコントロールしている様子
Raspberry Pi3のライブカメラをコントロールしている様子

参考にさせて頂いたサイトのプログラムをほとんどコピペさせて頂きました。
また、◎を付けたサイトの情報をプログラミングのヒントにさせて頂きました。
情報を提供して下さった方々に感謝します。..m(_ _)m

※Web画面を作る際に参考にしたサイト
押されたボタンを取得する – Python CGIプログラミング入門
PythonでWebアプリをつくる(ApacheもWebフレームワークもなしで)

※Python組み込みのWebサーバ関連
サーバー側でPythonスクリプトを動かし、結果をクライアント側に表示する
Python 組み込みのCGIHTTPServerやhttp.serverでcgiを動かす
Pythonで簡易CGIサーバーを利用する
iPad(ブラウザ)とRaspberry Pi 3+Webカメラで遠隔操作するタミヤのタンクを作る ③プログラム編 – OpenCV Python (Flask)
Webブラウザ上で動くアプリをPythonで作ってみる
みんなのPython Webアプリ編 – フォームの処理
Pythonで作るもっとも簡単なフォームの受け渡し
サーバ側で外部プログラムの実行
サブルーチン・関数
python 関数の基本が初心者でもわかる!引数や戻り値も理解できる!
python と php – ハックノート
Raspberry Pi で Adafruit のI2C接続 16-Channel PWM/Servo Driver を試してみた
首ふりwebカメラを作ってみる(4)(サーボ制御編)
Raspberry Pi 3でPCA9685を使う
Raspberry Pi 3 Model Bに専用カメラモジュールを接続する方法
Raspberry Pi サーボモーターとOpen CVで物体追跡カメラ(Meanshift)
raspberry pi2 + カメラ付きサーボで特定の色を追っかけるカメラを作る – Open CV PWM
Python3 OpenCV3を使って物体検出
Raspberry Pi上でTensorFlowで簡単にディープラーニングを試せるツール「tensorflow-pi」でロボホンの幻の顔認識機能に挑戦してみた – 2017-08-16
Raspberry Pi 3でpythonを使いサーボモータを動かす
Raspberrypi2 PWMでサーボモータを動かす
Raspberry Piで自動監視システム Archive
Raspberry Piでサーボモータを制御 -プログラミング, 電子工作 – 2015年11月7日 hidaka_hiroji
Raspberry Piで使うカメラのパン・チルト制御用マウントの組み立て- 電子工作 – 2015年11月14日 hidaka_hiroji
aspberry pi でロボットアームを動かす その6 ゲームパッドで動かせるようにする

pythonのCGIHTTPServerをsystemdに登録しサービスとして自動起動

最初は、pythonのCGIHTTPServerをターミナルからコマンドを入力していましたが、管理を用意にする為に、pythonのCGIHTTPServerをsystemdに登録しサービスとして自動起動できる様に設定したところ、systemdのサービスで起動するとディレクトリのルートで起動してしまい問題が発生しました。

そこで、pythonのプログラムを作成した時のpiユーザの環境変数のうち、必要と思われる環境変数をsystemdのサービスが起動する時に読み込む様にしました。

sudo nano /etc/default/cgiserver ※環境変数を読み込ませる為のファイル

sudo nano /lib/systemd/system/cgiserver.service ※systemdにサービスとして登録するファイル

※5行目はsystemdから起動する時のユーザ
※6行目はsystemdから起動する時に読み込む環境変数

sudo nano /home/pi/Adafruit_Python_PCA9685/cgiserver.py

これで、pythonのCGIHTTPServerをターミナルからコマンドを入力して起動した時とほぼ同様の動きをしてくます。

参考にさせて頂いたサイトのプログラムをほとんどコピペさせて頂きました。
また、◎を付けたサイトの情報をプログラミングのヒントにさせて頂きました。
情報を提供して下さった方々に感謝します。..m(_ _)m

※systemdに登録する時、参考にしたサイト
Python上で環境変数を取得
Systemd で環境変数を読む読む
Pythonでディレクトリを確認し移動する
systemdでユーザーの環境変数を読み込むようにする
systemdの.serviceファイルで、実行ユーザーを指定する
pythonをデーモン化するメモ
Systemdで自作スクリプトをデーモン化
Pythonコードをデーモン化する(Systemdとinit.dの違い)
Python 組み込みのCGIHTTPServerやhttp.serverでcgiを動かす
Pythonで簡易CGIサーバーを利用する
Systemd メモ書き
[Python] 環境変数を扱う
Pythonプログラムを起動時に実行する方法(Systemd)

Raspberry Pi3に接続したPCA9685 16チャンネル 12-ビット PWM Servo モーター ドライバーでサーボを制御

Raspberry Pi3に接続したPCA9685 16チャンネル 12-ビット PWM Servo モーター ドライバーでサーボを制御して見ました。

I2Cに接続のPCA9685は0x40と0x70です。
参考サイトのpythonプログラム sg90_92r_with_pca9685_rev1.py では、サーボの回転角度は、0度(最小値)、90度(ニュートラル位置)、180度(最大値)となります。

サーボホーンを付けただけのサーボをチャンネル0に接続して、参考サイトのsg90_92r_with_pca9685_rev1.pyを実行して終了すると、サーボホーンが90度(ニュートラル位置)で停止した状態になります。
この状態のサーボホーンの90度(ニュートラル位置)を基準として、動かしたい機器に組み込みます。

Raspberry Pi用遠隔操作カメラキットのパン用サーボ(チャンネル0)、チルト用サーボ(チャンネル1)をPCA9685に接続します。
さすがに0-90-180度のサーボ振り角は必要ないので、50-90-120

sg90_92r_with_pca9685_rev2.py

python sg90_92r_with_pca9685_rev2.py のコマンドを入力すると、
上に30度-40度-30度-ニュートラル位置-下に30度-ニュートラル位置となるアクションを繰り返します。

プログラム中の36行目
Servo = SG90_92R_Class(Channel=1, ZeroOffset=-10) #Channel=1はチルト用サーボ
の(Channel=1, ZeroOffset=-10)を(Channel=0, ZeroOffset=-10)に書き換えることで、パン用サーボもテストします。

それぞれのサーボの動き方が判りましたので、最終的には、Webサーバからブラウザでサーボを操作できる様にしたいと思います。

次のステップに備えて、キーボードからの文字入力を読んで、サーボを動かすpythonプログラムを作って見ました。
サーボの動きが速いので、おまけで、1度づつtime.sleep(sec)を使って待ち時間を設けています。
下記プログラムでは、sec = 0.01にセットしています。
sg90_92r_pca9685_camera_cont.py

実行は、python sg90_92r_pca9685_camera_cont.pyで、プログラムを終了するには、「Ctl+C」です。

参考にさせて頂いたサイトのプログラムをほとんどコピペさせて頂きました。
また、◎を付けたサイトの情報をプログラミングのヒントにさせて頂きました。
情報を提供して下さった方々に感謝します。..m(_ _)m

参考サイト
Raspberry Pi用遠隔操作カメラキット – [TSI-Pi-101-W2]販売価格: 3,980円(税別)
Raspberry Pi講座 PWMコントローラ ( PCA9685 )
Raspberry Pi講座 Python2とPython3
Pythonでキー入力
Pythonでプログラムを終了させる:sys.exit()

Raspberry Pi3でtornado(ストリーミング配信用サーバ)を構築

Raspberry Pi3に接続したカメラの映像を、tornado(ストリーミング配信用サーバ)を構築し、ブラウザで見られる様にしました。

camera.py

index.html

参考にさせて頂いたサイトのプログラムをほとんどコピペさせて頂きました。
また、◎を付けたサイトの情報をプログラミングのヒントにさせて頂きました。
情報を提供して下さった方々に感謝します。..m(_ _)m

tornadoの起動コマンドは、 python /home/pi/camera.py
次にクライアントPCのブラウザで、「http://Raspberry Pi3のIPアドレス:8080」にアクセスすると動画を見る事が出来ます。

今後の事を考えて、tornado(ストリーミング配信用サーバ)をサービスとして登録します。
sudo nano /lib/systemd/system/tornado.service
— ここから —
[Unit]
Description = Tornado

[Service]
ExecStart=/usr/bin/python /home/pi/camera.py
Restart=always
Type=simple

[Install]
WantedBy=multi-user.target
— ここまで —

サービスの管理用コマンド
サービスの起動を確認
sudo systemctl start tornado.service
ps -ef | grep “/camera.py”

サービスの停止を確認
sudo systemctl stop tornado.service
ps -ef | grep “/camera.py”

サービス自動起動の設定を確認
sudo systemctl list-unit-files –type=service | grep tornado
結果は、

サービス自動起動の設定を変更
sudo systemctl enable tornado.service ※有効にする
sudo systemctl disabled tornado.service ※無効にする

tornadoを起動・停止させた時のターミナル画像
tornadoを起動・停止させた時のターミナル画像
※2018-01-07画像を追加

ライブカメラの画像
tornadoを起動・停止させた時のターミナル画像
※2018-01-07画像を追加

参考にさせて頂いたサイトのプログラムをほとんどコピペさせて頂きました。
また、◎を付けたサイトの情報をプログラミングのヒントにさせて頂きました。
情報を提供して下さった方々に感謝します。..m(_ _)m

※Raspberry Pi3のカメラで写真や動画を配信関連で参考にしたサイト
※websocket系
websocketでRaspberryPiからwindowsPCに画像を送る(Python)
Raspberry Piのカメラモジュールで撮った映像をWebSocketでブラウザに送る!!
Tornado入門(1):TornadoではじめるPythonWebフレームワーク
Raspberry Pi 3でWebSocket通信
PythonでRasPi3の公式カメラモジュール V2.1からストリーミング配信 – WebSocket
WebSocketを使ったHTML5による配信動画
※MJPG-Streamer系
ブラウザから操作できるライブ(監視)カメラを作る! – mjpg-streamer+WebIOPi
Raspberry piとApacheとWebカメラで外部から見られる監視カメラを作った話。 – mjpg-streamer
Raspberry Pi 2 のカメラを motion から MJPG-streamer に変更
Raspberry PiのCamera moduleでストリーミングを行う – MJPG-Streamer
Raspberry Pi3とwebカメラでストリーミング配信してみるpart.1(動作確認編) – MJPG-Streamer
※Motion、FFmpeg、連続静止画配信系
【Raspberry Pi】純正カメラモジュール(PiCamera)とMotionで監視カメラを作る
ラズパイZeroに動画配信サーバーを構築する – FFmpeg+nginx
ラズベリーパイで作る省電力ライブカメラ – HTTPで連続静止画配信

Raspberry Pi3に接続したBME280 大気圧センサ 温湿度センサーを使って見る

まずは、参考サイトのプログラムを使わせて貰って、Raspberry Pi3に接続したBME280 大気圧センサ 温湿度センサーからデータが取れるか確認します。

次に、BME280 大気圧センサ 温湿度センサーを使って、データベース(MySQL)に格納し、ウェブブラウザで見られる様にして見ます。

予めApache2、PHP、MariaDB(MySQL)をインストールして環境を整えて置きます。

1. pythonで必要となる「MySQLdb」モジュールをインストールします。

2. BME280からのデータを蓄積する為のデータベースとテーブルをMariaDB(MySQL)に作成。
#※テーブル名はbme280として、登録日時以外のカラムは文字型としています。

3. BME280からのデータをMariaDB(MySQL)に登録するプログラムを作成。
※参考サイトのbme280_custom.pyをそのまま利用させて頂きます。
bme280mysql.py

プログラムを実行
python /home/pi/bme280mysql.py

問題無くDBに登録されたら、cronで10分毎に実行する様に登録します。
sudo crontab -e
以下の行を追加します。
0-59/10 * * * * python /home/pi/bme280mysql.py

3. Webサーバで、MariaDB(MySQL)に接続してBME280のデータを取得して表示するプログラムを作成。
bme280mysql.php

bme280mysql.phpをApacheのコンテンツを置いている/var/www/htmlに配置します。

あとはブラウザで、「http://Raspberry Pi3のIPアドレス/bme280mysql.php」にアクセスして表示されることを確認します。

※今回のプログラムでは、セキュリティを考慮していませんので、あくまでもテスト用ですので注意して下さい。

大気圧・温度・湿度のデータを表示した時のWEB画像
大気圧・温度・湿度のデータを表示した時のWEB画像
※2018-01-07画像を追加

参考にさせて頂いたサイトのプログラムをほとんどコピペさせて頂きました。
また、◎を付けたサイトの情報をプログラミングのヒントにさせて頂きました。
情報を提供して下さった方々に感謝します。..m(_ _)m

参考サイト
第39回「ラズベリーパイで温度・湿度・気圧をまとめて取得!AE-BME280でIC2通信」
WITCHSCIENCEさんのBME280用のpythonサンプルプログラム

※エラーの際に参考にしたサイト
温湿度気圧センサーの値を使ってみる

※Python関連
Python文字列操作マスター
PythonからMySQLを使う
MySQL – Python入門から応用までの学習サイト – Python-izm
Python3でMySQLを使う – 基本操作からエラー処理までサンプルコード付
.pycファイルを作成する方法メモ
.pycファイルを作成させない方法メモ

※そのほかの参考サイト
温湿度気圧センサーの値を動的に取得
Raspberry Pi + BME280モジュールで自動で温度・湿度・気圧を測定してグラフ化する-2016-05-11
【IoT】ESP-WROOM-02とBME280で安くてとことん長持ちする温度・湿度・大気圧センサーをつくる。
【ラズベリーパイ3】BME280で気温・湿度・大気圧の測定
Raspberry Pi 3 でK09421(BME280)のセンサ出力を定期的にcsvへ出力する
Raspberry Pi 3 Model B で遊んでみる - BME280で温度と湿度と気圧を測る
Raspberry Pi 3とBME280とPython3
ラズベリーパイで温度・湿度・大気圧を測定する
Raspberry Pi 2で温湿度・気圧センサのBME280をPythonから使う
温度/湿度/気圧センサーBME280をRaspberry Piで使用する方法

Raspberry Pi3にカメラ、サーボ、大気圧・温湿度センサーを接続

Raspberry Pi3にカメラ、サーボ、大気圧・温湿度センサーを接続して見ました。

使った物
1. Raspberry Pi用遠隔操作カメラキット (パーツキット)Physical Computing Lab
2. HiLetgo PCA9685 16チャンネル 12-ビット PWM Servo モーター ドライバー IIC モジュール Arduinoに対応 ロボット
3. HiLetgo BME280 大気圧センサ 温湿度センサー ブレイクアウト Arduinoに対応 [並行輸入品]

Raspberry Pi用遠隔操作カメラキットに付属するのは、パン・チルト可能なカメラマウント、マイクロサーボ2個、可変焦点タイプのカメラ、小型のブレッドボードです。
まずは、カメラマウントにマイクロサーボを組み付け、カメラを取付、Raspberry Pi3にカメラを繋いで映像を確認します。
サーボホーンの加工にカッター、ニッパ、リューターを使い、プラスネジ用の精密ドライバーでカメラマウントを組み立てます。

次に、遠隔操作カメラに付いているパン・チルト用サーボ2個をPCA9685 16チャンネル 12-ビット PWM Servo モーター ドライバー IIC モジュールで駆動制御するので、I2Cで認識出来るか確認します。

次に電子部品用の即熱「はんだこて」で、BME280の端子部のはんだ付けをし、I2C接続でBME280 大気圧センサ 温湿度センサーを認識出来るか確認します。

それぞれはブレッドボードを使いRaspberry Pi3と接続します。

カメラについては、
sudo raspi-config ※カメラを有効に
vcgencmd get_camera ※カメラの接続を確認
raspistill -o cam1.jpg ※静止画を撮影
sudo apt-get install vlc ※VLCをインストール

動画をストリーミング配信するテスト1(vlcの標準ポートを指定)
sudo raspivid -o – -t 0 -w 640 -h 480 | cvlc -vvv stream:///dev/stdin –sout ‘#rtp{sdp=rtsp://:8554/}’ :demux=h264
動画をストリーミング配信するテスト2(8080ポートを指定)
sudo raspivid -o – -t 0 -w 640 -h 480 | cvlc -vvv stream:///dev/stdin –sout ‘#standard{access=http,mux=ts,dst=:8080}’ :demux=h264

クライアントPCにVLC media playerをインストールして、Raspberry Pi3にIPアドレスを指定してアクセスし動画を再生して見ました。

Raspberry Pi3のI2Cでの認識確認画像
Raspberry Pi3のI2Cでの認識確認画像
※I2Cに接続のPCA9685は0x40と0x70
※I2Cに接続のBME280は0x76
※2018-01-07画像を追加

クライアントPCのVLC media playerの画像
クライアントPCのVLC media playerの画像
※2018-01-07画像を追加

PCA9685 16チャンネル 12-ビット PWM Servo モーター ドライバー、BME280 大気圧センサ 温湿度センサーについては、別の記事として投稿しようと思います。

参考にさせて頂いたサイトのプログラムをほとんどコピペさせて頂きました。
また、◎を付けたサイトの情報をプログラミングのヒントにさせて頂きました。
情報を提供して下さった方々に感謝します。..m(_ _)m

参考サイト ※カメラの動作確認で参考にしたサイト
Raspberry Pi カメラで写真・ビデオを撮影する – 2017.04.11 raspistill raspivid
PythonでRaspberry Pi カメラを制御する – 2017.05.03 Pythonで写真撮影やビデオ撮影の簡単なプログラム
Raspberry PiのカメラモジュールをPythonで動かした – raspistill raspivid
カメラで写真/動画撮影 – raspistill raspivid omxplayerで動画の再生
Raspberry Pi カメラの映像をWebブラウザで受信する – MJPG-Streamer

Raspberry Pi3の起動をUSB-HDDに

Raspberry Pi3はマイクロSDカードをストレージとして使っているが、マイクロSDカードには書き込み制限があり、容量や信頼性が気になり、起動のみマイクロSDカードにして、その後はUSBに繋いだストレージを使う形に設定して見ました。
保管してあったノートPCで使っていたSATA 2.5インチHDD(160GB)をUSB-HDDとして利用しました。
※繋いだUSB-HDDは別電源としました。

手順はUSB-HDDを繋いで、
sudo ls /dev/sda/* -al ※繋いだUSB-HDDを確認

sudo parted /dev/sda ※USB-HDDのパーティションを設定します

sudo fdisk -l ※使用しているストレージの情報を確認

sudo dd if=/dev/mmcblk0p2 of=/dev/sda1 bs=32M conv=noerror,sync ※マイクロSDカードのFAT32領域(/boot)以外のデータをUSB-HDDに丸ごとコピー

ls -l /dev/disk/by-partuuid/ ※各ストレージのPARTUUIDを確認

sudo mount -t ext4 -o defaults /dev/sda1 /mnt ※USB-HDDをマウント

sudo vi /mnt/etc/fstab ※ルートとしてマウントするストレージのPARTUUIDに書き換え

sudo vi /boot/cmdline.txt ※マイクロSDカードの/boot/cmdline.txtの書き換え
root=/dev/mmcblk0p2
の部分を
root=/dev/sda1
に書き換えことで、起動するストレージを選択しています

sudo reboot ※Raspberry Pi3をリブートしてUSB-HDDに起動が変わるか確認

これでマイクロSDカードはブートローダ代わりとなり、書き換え回数制限の心配も無くなります。
このほかにもRaspberry Pi3の場合、USBブートを有効にする方法もあります。

参考にさせて頂いたサイトのプログラムをほとんどコピペさせて頂きました。
情報を提供して下さった方々に感謝します。..m(_ _)m

参考サイト
Raspberry PiをUSB(HDD)で起動させる
Raspberry Pi 3をUSB(HDD)だけ(SD不要)で動かす
Raspberry Pi 3とPi DriveでUSB HDDブートをしてみよう

Raspberry pi3で7インチタッチパネルを使う

Raspberry pi3にDebian 9(Stretch)を入れて、7インチタッチパネル(Elecrow7インチHDMI液晶ディスプレイ1024X600)を使って見ました。
手順は、/boot/config.txtをリネームして置き、1024X600解像度のHDMIディスプレイに付属のDVDに入っているconfig.txtをコピーし、Raspberry pi3を起動させます。
タッチパネルディスプレイ用ドライバはDVDに入っているものが古いので、最新版をWebよりダウンロードしてインストールします。
その後、仮想キーボードを導入してタッチ操作でコマンドや日本語入力が出来る様にします。

※作業前に、/boot/config.txt、/boot/cmdline.txtをバックアップして置くと良いと思います。

piユーザのターミナルで、
1. 7インチタッチパネルのドライバの導入
git clone https://github.com/goodtft/LCD-show.git
chmod -R 755 LCD-show
cd LCD-show/
sudo ./LCD7C-show

※Raspberry pi3が再起動されます。

2. タッチパネルのキャリブレーションソフトの導入
cd LCD-show
sudo dpkg -i -B xinput-calibrator_0.7.5-1_armhf.deb
DISPLAY=:0.0 xinput_calibrator
cd

3. 仮想キーボードの導入(今回はソースからビルドしました)とパネルに追加
sudo apt-get update
sudo apt-get install libfakekey-dev libpng-dev autoconf libxft-dev libtool automake -y
git clone https://github.com/mwilliams03/matchbox-keyboard.git
cd matchbox-keyboard
./autogen.sh
sudo make
sudo make install
sudo apt-get install libmatchbox1 -y
sudo vi /usr/bin/toggle-matchbox-keyboard.sh
sudo chmod +x /usr/bin/toggle-matchbox-keyboard.sh
sudo vi /usr/share/applications/toggle-matchbox-keyboard.desktop
sudo reboot
vi ~/.config/lxpanel/LXDE-pi/panels/panel
sudo reboot

ここまでは、付属DVDのドキュメントに記載されている処理です。

4. なぜか仮想キーボードが文字化けしているので、日本語フォントを追加し、IMEをインストール。
※今回の環境が中途半端に日本語化されていた為ではないかと思います。
localectl set-keymap jp106
sudo apt-get install jfbterm
sudo apt-get install ttf-kochi-gothic xfonts-intl-japanese xfonts-intl-japanese-big
sudo apt-get install ibus-anthy
sudo raspi-config
sudo reboot

5. 仮想キーボードを日本語JIS配列のキーボードに
matchbox-keyboardの起動スクリプトを編集して、
/usr/bin/toggle-matchbox-keyboard.shのelseとfiの間の行を書き換えます。

日本語JIS配列用xmlを利用する場合
matchbox-keyboard -s 100 extended-jis &

日本語JIS配列のキーボードでの表示画像
日本語JIS配列のキーボードでの表示画像

日本語JIS配列でかな表示用xml(日本語JIS配列のキーボードを改造したもの)を利用する場合
matchbox-keyboard -s 100 extended-jis-kana &

日本語JIS配列のキーボードでかな表示画像
日本語JIS配列のキーボードでかな表示画像

私がコンピュータをいじり始めた頃は、まだ英数字記号と半角カタカナしか使えませんでしたので、日本語はカナタイプを使っていました。
なので、今でも日本語入力はローマ字入力ではなく、かな入力が基本です。
そこて、キーボードもかな表示が出来て入力も出来たらと思い、かなキーボードを作って見たものの、かなの仮想キーボードからの入力をIMEが上手く認識されずにスルーされてひらがなが出力されてしまいます。
anthyの設定をいじって、1→ぬ、2→ふの設定をぬ→ぬ、ふ→ふにして見たり、fcitx-mozc をインストールして試して見たが、2バイト文字コードはスキップされてしまう様な感じです。
普通のキーボード(ハードウェア)からなら、かな入力は問題無く出来るのに残念です。
英語圏以外の2バイト文字系の国々の方は、どうされているのか勉強不足です。

参考サイト
Raspberry Pi の仮想キーボード

Raspberry pi3(Raspbian)にXMailとXMailCFG他を導入

Raspberry pi3(Raspbian)にXMailとXMailCFG、K4、kmlを導入して見ました。
XMailはメールサーバで、XMailCFG、K4、kmlはWebサーバを利用してXMailの管理をPerlプログラムでGUI環境を提供します。
元々、XMailCFG、K4、kmlはWindows環境で利用していたので、今回はLinux環境に適用しました。
Raspberry pi3のLinux環境(Debian9(Stretch))に、WebサーバとしてApache2、Perlを導入しました。
ターミナルで
sudo apt-get install apache2 perl
sudo apt-get install xmail

次に日本語版の配布サイトより、XMailCFG(XMailCFG247.zip)、K4(K4u_095a.zip)、kml(kml009c.zip)の各zipファイルをダウンロードして、piユーザのディレクトに
public_html/XMailCFGにXMailCFG247.zipを解凍
public_html/K4GにK4u_095a.zipを解凍
public_html/kmlにkml009c.zipを解凍
public_htmlをApache2で公開し、CGIを使える様にして、基本認証を設定します。

XMailCFG、K4、kmlをLinux環境で使える様にターミナルで
perl /home/pi/public_html/XMailCFG/cgisetup.pl
perl /home/pi/public_html/K4/cgiupdate.cgi
perl /home/pi/public_html/kml/cgisetup.cgi
grep -l ‘File::Stat’ /home/pi/public_html/XMailCFG/cgi/*.* | xargs sed -i -e ‘s/File::Stat/File::stat/g’
ここまでは、XMailCFGのreadme.htmlに記載されている処理です。
追加で#!C:/usr/perl/bin/perl.exeが#!c:/usr/perl/bin/perl.exeだったり、perlの部分がPerlだったりするcgiディレクトリ下のcgiファイルの先頭部分を#!/usr/bin/perlに置き換えます。
また、kmlのWebがエラーになるので、kml/cgi下のファイルのrequire “config.cgi”とrequire ‘config.cgi’をrequire “./config.cgi”に置き換えます。
grep -l ‘require “config.cgi”‘ /home/pi/public_html/kml/cgi/*.* | xargs sed -i -e ‘s/require “config.cgi”/require “.\/config.cgi”/g’
sudo grep -l “require ‘config.cgi'” /home/pi/public_html/kml/cgi/*.* | xargs sed -i -e “s/require ‘config.cgi’/require \”.\/config.cgi\”/g”
以上でXMailCFG、K4、kmlをLinux環境で使える様になると思います。

ブラウザで、Raspberry pi3のIPアドレス/~pi/XMailCFG/にアクセスして認証チェック後に基本セットアップを実行します。
最初に基本セットアップの
動作環境チェック(1)で、
1.基本認証(認証コントロール)の確認
2.XMailCFG インストールフォルダへのファイルの書き込み
3.XMailCFG インストールフォルダへのフォルダの作成
4.Perl インストールフォルダ内へのファイルコピー
それぞれで[チェックの結果] 正常動作を確認しました。となる様にディレクトリのアクセス権を設定します。
動作環境チェック(2)で、
1.基本認証(認証コントロール)の確認
2.XMailCFG インストールフォルダへのファイルの書き込み
3.MailRoot フォルダへのファイルの書き込み
4.Perl インストールフォルダ内へのファイルコピー
5.K4 インストールフォルダへの書き込みチェック
6.kml インストールフォルダへの書き込みチェック
7.kml データフォルダへの書き込みチェック
それぞれで[チェックの結果] 正常動作を確認しました。となる様にディレクトリのアクセス権を設定します。

私のRaspbian環境では、
XMailCFG 環境設定の画面での設定値は以下の様になりました。
XMail インストールフォルダは「/usr/sbin」
MailRoot フォルダは「/var/lib/xmail」
K4 インストールフォルダ「/home/pi/public_html/K4」
kml インストールフォルダ「/home/pi/public_html/kml」
kml データフォルダ「/home/pi/public_html/kml/data」

設定のポイントは、
XMailはrootユーザで実行され、XMailCFG、K4、kmlはApacheなのでwww-dataユーザで実行しているのでアクセス権の変更が必須になります。
XMailの設定ファイルは、/etc/xmail以下に保存される、
XMailのMailRootは、/var/lib/xmail ※設定ファイルやデータ、logディレクトリへのリンクが張られている
XMailのデータは、/var/spool/xmail
XMailのlogは、/var/log/xmail

XMailの起動オプションである/etc/cmd_lineの内容は、「-Cl -Mr 24 -Pl -Ql -Sl」としました。

XMailCFG、K4、kmlを使って、XMailを簡単に管理できます。

参考サイト
XMailCFGをLinuxで動かしまくる!! for Debian
XMailの構築Linux版インストールの補完

Raspberry Pi関連のリンクを追加

Raspberry Pi関連のリンクをリンク集(Links)に追加しました。


 

Powered by XOOPS Cube 2.2 © 2001-2016 XOOPS Cube Project Distributed by XOOPS Cube 2.2 Distribution Team.