Pi2 LXDE 調整

osx より X11 を経由して、ああでもないこうでもないと設定をあれこれ見ると、i-bus というのがありまして。

結論から言えば、この設定を変えることで、スペースが打てない問題は解決しました。

以下のような部分を右クリックして、設定を選択

panel

以下のような設定が現れて、ここをシフト + スペースに設定。Super っていうのが選択されていたのですが、そんな就職キーはないのか有効じゃないようで、

スペースがこのショートカット

になっていたようです。

入力メソッドの切り替え中_のキーボードショートカットを選択_と_IBus_の設定_と___無題_

このキーは、入力システムを切り替えるやつのようです。以下のようなのが、現れて、切り替わるという。

__無題_

とりあえず、少し前進。普通に使えるってことが、すばらしいですね。こんな事で感動してますが、何か?w

panel_と_タスクマネージャ_と_IBus_について_と___無題_

メモリの消費も最小限で、速度も実用的。Linux の GUI ツールっていうのはまったく知りませんが、探せばいろいろあるかと思います。あわてず、少しづつ入れてみます。知らないだけで、実は便利なLinux のGUIツールっていうのはありそうですよね。

LXDE Desktop のほうが軽かった

この画像、osx から X11 経由で接続してます。LXDE でとりあえずいいやってことにして、これを使ってみます。

LXDE

キーボードマップがどこで設定するのかがまだ、わかりませんが。ぜんぜん、実用的な感じでちょっとGUI環境もいいなってことで見直すことにしてみます。

 

いつになるかわかりませんが、GPIO を操作するアプリケーションをXでGUIインターフェイスで作ってみたいです。X-Window っていうのは、応用価値がありそうだということがわかりました。

Pi2 と arduino をUSB接続してシリアル通信

今日は、Pi2 と arduino をシリアル通信させてLED を光らせてみました。全体像はこんな感じ。

写真 1

緑色のブレッドボードにある LED は arduino の 3pin につながっています。Pi2 からシリアル経由でLED を光らせる形です。

写真 2

良いチュートリアルなBlog 記事があったので、それを習ってみました。

参考 Raspberry PiとArduino間でUSB経由のシリアル通信

 

まず、arduino のスケッチは、上記サイトにあるとおり、

#define LED_PIN (3)
byte val;

void setup(){
  // Serial Setting
  Serial.begin(9600);

  // Port Setting
  pinMode(LED_PIN, OUTPUT);
  digitalWrite(LED_PIN, LOW);
}

void loop(){
  if(Serial.available() > 0){
    
    val = Serial.read();
    Serial.write(val);
    if(val == 'A'){
      digitalWrite(LED_PIN, HIGH);
    }

    if(val == 'B'){
      digitalWrite(LED_PIN, LOW);
    }
  }
}

そして、書き込んで、今度は pi2 からシリアル通信させます。

USB ケーブルを挿すと、pi2 側の dmesg に以下のように出ますので、覚えておきます。

[root@pi2 ~]# dmesg

::

[ 4270.245917] usb 1-1.5: new full-speed USB device number 5 using dwc_otg

[ 4270.369007] usb 1-1.5: New USB device found, idVendor=1a86, idProduct=7523

[ 4270.376106] usb 1-1.5: New USB device strings: Mfr=0, Product=2, SerialNumber=0

[ 4270.383583] usb 1-1.5: Product: USB2.0-Serial

[ 4271.484705] usbcore: registered new interface driver usbserial

[ 4271.491107] usbcore: registered new interface driver usbserial_generic

[ 4271.499466] usbserial: USB Serial support registered for generic

[ 4271.508688] usbcore: registered new interface driver ch341

[ 4271.514472] usbserial: USB Serial support registered for ch341-uart

[ 4271.521035] ch341 1-1.5:1.0: ch341-uart converter detected

[ 4271.531056] usb 1-1.5: ch341-uart converter now attached to ttyUSB0★

[root@pi2 ~]#

[root@pi2 ~]# ll /dev/ttyUSB0

crw-rw—- 1 root dialout 188, 0  7月  6 23:08 /dev/ttyUSB0★

[root@pi2 ~]#

pi2 からシリアル通信させるプログラムは、minicom というのを使ってみました。

[root@pi2 work]# which minicom

/usr/bin/minicom

設定は、以下のように –s をつけて起動。

▼設定

[root@pi2 work]# LANG=C minicom –s

以下のように cui で選択して設定します。

            ┌─────[configuration]──────┐
            │ Filenames and paths      │
            │ File transfer protocols  │
            │ Serial port setup        │
            │ Modem and dialing        │
            │ Screen and keyboard      │
            │ Save setup as dfl        │
            │ Save setup as..          │
            │ Exit                     │
            │ Exit from Minicom        │
            └──────────────────────────┘

    ┌───────────────────────────────────────────────────────────────────────┐
    │ A -    Serial Device      : /dev/ttyUSB0                              │
    │                                                                       │
    │ C -   Callin Program      :                                           │
    │ D -  Callout Program      :                                           │
    │ E -    Bps/Par/Bits       : 9600 8N1                                  │
    │ F - Hardware Flow Control : Yes                                       │
    │ G - Software Flow Control : No                                        │
    │                                                                       │
    │    Change which setting?                                              │
    └───────────────────────────────────────────────────────────────────────┘

    ┌─────────────────┌─────────[Comm Parameters]──────────┐────────────────┐
    │ A -    Serial De│                                    │                │
    │                 │     Current:  9600 8N1             │                │
    │ C -   Callin Pro│ Speed            Parity      Data  │                │
    │ D -  Callout Pro│ A: <next>        L: None     S: 5  │                │
    │ E -    Bps/Par/B│ B: <prev>        M: Even     T: 6  │                │
    │ F - Hardware Flo│ C:   9600        N: Odd      U: 7  │                │
    │ G - Software Flo│ D:  38400        O: Mark     V: 8  │                │
    │                 │ E: 115200        P: Space          │                │
    │    Change which │                                    │                │
    └─────────────────│ Stopbits                           │────────────────┘
            │ Screen a│ W: 1             Q: 8-N-1          │
            │ Save set│ X: 2             R: 7-E-1          │
            │ Save set│                                    │
            │ Exit    │                                    │
            │ Exit fro│ Choice, or <Enter> to exit?        │
            └─────────└────────────────────────────────────┘

で、実行。

[root@pi2 work]# LANG=C minicom

Welcome to minicom 2.7

OPTIONS: I18n 
Compiled on Aug 17 2014, 17:46:22.
Port /dev/ttyUSB0, 23:40:40

Press CTRL-A Z for help on special keys

AABABABABABAAABAB★こんな感じで、タイプするとLED ついたり消えたり。

終了は、CTL + A 押して、Z でメニュー 以下の Q で終了

┌───────────────────────────────────────────────────────────────────┐
│                      Minicom Command Summary                      │
│                                                                   │
│              Commands can be called by CTRL-A <key>               │
│                                                                   │
│               Main Functions                  Other Functions     │
│                                                                   │
│ Dialing directory..D  run script (Go)....G | Clear Screen.......C │
│ Send files.........S  Receive files......R | cOnfigure Minicom..O │
│ comm Parameters....P  Add linefeed.......A | Suspend minicom....J │
│ Capture on/off.....L  Hangup.............H | eXit and reset.....X │
│ send break.........F  initialize Modem...M | Quit with no reset.Q │
│ Terminal settings..T  run Kermit.........K | Cursor key mode....I │
│ lineWrap on/off....W  local Echo on/off..E | Help screen........Z │
│ Paste file.........Y  Timestamp toggle...N | scroll Back........B │
│ Add Carriage Ret...U                                              │
│                                                                   │
│             Select function or press Enter for none.              │
└───────────────────────────────────────────────────────────────────┘

 

今度は、python から制御。 pyserial を入れます。

[root@pi2 ~]# dnf install python-pip

[root@pi2 ~]# pip install --upgrade pip
You are using pip version 6.0.8, however version 7.1.0 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Collecting pip from https://pypi.python.org/packages/py2.py3/p/pip/pip-7.1.0-py2.py3-none-any.whl#md5=b108384a762825ec20345bb9b5b7209f
  Downloading pip-7.1.0-py2.py3-none-any.whl (1.1MB)
    100% |################################| 1.1MB 37kB/s 
Installing collected packages: pip
  Found existing installation: pip 6.0.8
    Uninstalling pip-6.0.8:
      Successfully uninstalled pip-6.0.8

Successfully installed pip-7.1.0
[root@pi2 ~]# 

[root@pi2 ~]# pip install pyserial
::
Successfully installed pyserial-2.7
[root@pi2 ~]# 

プログラムは、以下のようにA と B をループして、CTL + C で中断したら、B を流しLEDを消して、終了。

---- loop.py 
# -*- coding: utf-8 -*-
import serial
import time

ser = serial.Serial('/dev/ttyUSB0', 9600)
time.sleep(2)
try:
    while True:
        ser.write('A')
        time.sleep(1)
        ser.write('B')
        time.sleep(1)
except KeyboardInterrupt:
        ser.write('B')
        ser.close()

実行してみます。

[root@pi2 work]# python loop.py

なるほどですね。まぁ、これだと、pi2 の GPIO ピンから直接制御すればええやんってことになりますが、、、次は、arudino のアナログ入力にセンサーをつけて、それをpi2 に渡す方法を実践してみたいと思います。I2C とかシリアルを使わない結線だと、promini とかが使えるので、そういうのをどのようにするのか調査して、実践してみたいと思っています。

なんとかリモートよりxwindow に入れた

まだしっくり着ていませんが、とりあえず osx より Pi2 にx-window 経由で起動できました。

いろいろ設定をいじったので、どこが良くて、何がポイントだったのかちょっとぼけています。絶対忘れるので、何をどうしたらよかったのか、メモ的に書いておきます。間違っているところがたくさんあると思うので、ここかな?っていう部分のみ。

 

osx の term にて以下を実行。Pi2 の IP を入れて、osx の X11 Server に接続許可設定を入れる

$ xhost +192.168.1.24
192.168.1.24 being added to access control list

※xhost は、osx の X11 のツール

osx の ssh設定を以下のように

—- /etc/sshd_config
X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes
XAuthLocation /opt/X11/bin/xauth

Pi2 の ssh 設定を以下のように

—- /etc/ssh/ssh_config
::
   ForwardX11 yes
::

osx も pi2 も一回再起動。

ターミナルで以下のようにオプションをつけて接続。pi は osx の hosts にてIP 記載してあり名前解決可能な状態。

$ ssh -XC junkhack@pi

※-X で勝手にXQuartz 2.7.7 が起動。C は圧縮

ログインしたら、pi2 にて以下のコマンド実行。

$ xfce4-session startxfce4

このあたり、マニュアル見ると、こうしちゃだめって書いてあるのでたぶん良くないと思います。

 

xfce4-panel_と_xeyes

動作はこんなものかと思えば、まぁ良いのかもですが、速いマシンを使っているヒトには決して向きません。よっぽど特殊な理由がなければまず使わないと断言できます。以下のログアウトが出るまでちょっと時間がかかります。2~5秒くらい。

スクリーンショット_2015_07_06_1_22

キーマップがよくわからず、スペースキーが押せないのでなんとかしないと。他にも問題は山済みですが。

とりあえず、x-window をリモートから接続することは出来ました。

X-Windowsを入れてみる

さて、Pi2 にFedora22 を入れたわけですが、サーバに使うか、クライアントに使うかで迷っていまして。

 

Pi2 をサーバで使うんだったらGUI 環境は入らない派なので今まで見向きもしてきませんでした。しかし、よーく考えてみると以下のようなシーンが想像されます。

・arduino や ESP8266 でシンプルな仕組みを作り、それらを集合させ、画面に表示させるもの

今や、24インチのHDMI ディスプレイが1.5万程度で買える時代なので、工作の幅と表現が増えると面白いんじゃないかと思い、興味を持ち始めています。

 

候補としては、以下の3つでどれが使いやすくて開発しやすいのかまだよくわかりません。Anjuta (アニュータ)+ Glade いうGUI 統合開発環境があるようです。なんと、GTK/GNOMEによる GUIプログラミング が全ページPDFで公開されています。

・LXDE Desktop(GTK+ , Qt)
・Xfce Desktop(GTK+2)
・MATE Desktop(?)

LXDE は、Windows ライクな感じで、一番軽そうな印象。迷った末、以下のページの印象を受け、Xfce をいれてみることにします。

LXDEのインストール方法

Xfceのインストール方法

MATE Desktopのインストール方法

 

インストールパッケージは、700個弱で、グループインストールすれば良いので省きます。自分の環境では、見つからないパッケージが出てエラーとなったので、そういうのは、単体でrpm を落として入れました。

stunnel
tigervnc-server-minimal
tigervnc-license

ちなみに、dnf でローカルインストールは、以下のようにすればよいようです。

yum localinstall [RPMファイル]
dnf install [RPMファイル]

※参考 Fedora 22でパッケージ管理システムがYumからDNFに

 

インターフェイスのイメージは、以下のオフィシャルサイトを見るといいかもです。

http://www.xfce.org/about/tour

 

標準環境の RASPBIAN では LXDE なのでちょっと違うのを選んだという理由もあります。さぁ、どんな感じでしょうかね。

こんな感じになりました。

 

 

1

なかなかシンプルでいい感じです。

2

 

以下のような設定ファイルをホームディレクトリに作りました。

—- .xinitrc

exec startxfce4

以下の設定ファイルも作りました。

—- /etc/X11/Xwrapper.config

allowed_users=anybody

 

まだリモートで接続するやり方がわかりません。が、おいおいやっていくことにします。

pi2 fedora22 ファイルシステムの拡張

16GB の SD Card なので、残りを / に拡張したいので、メモ。

 

・現状の確認。

[root@pi2 log]# df -h
ファイルシス   サイズ  使用  残り 使用% マウント位置
/dev/root        3.5G  1.4G  2.0G   41% /
devtmpfs         459M     0  459M    0% /dev
tmpfs            464M     0  464M    0% /dev/shm
tmpfs            464M  348K  463M    1% /run
tmpfs            464M     0  464M    0% /sys/fs/cgroup
/dev/mmcblk0p1   200M   21M  180M   11% /boot
tmpfs             93M     0   93M    0% /run/user/0
[root@pi2 log]#

[root@pi2 ~]# blkid
/dev/mmcblk0p1: SEC_TYPE="msdos" UUID="509F-31B8" TYPE="vfat" PARTUUID="0008037c-01"
/dev/mmcblk0p2: LABEL="_/" UUID="7c321d6b-f2b0-4783-9576-e3dfe657f9b3" TYPE="ext4" PARTUUID="0008037c-02"
/dev/mmcblk0: PTUUID="0008037c" PTTYPE="dos"
[root@pi2 ~]#

[root@pi2 ~]# blkid
/dev/mmcblk0p1: SEC_TYPE="msdos" UUID="509F-31B8" TYPE="vfat" PARTUUID="0008037c-01"
/dev/mmcblk0p2: LABEL="_/" UUID="7c321d6b-f2b0-4783-9576-e3dfe657f9b3" TYPE="ext4" PARTUUID="0008037c-02"
/dev/mmcblk0: PTUUID="0008037c" PTTYPE="dos"
[root@pi2 ~]# 
[root@pi2 ~]# ll /dev/mm*
brw-rw---- 1 root disk 179, 0  1月  1  1970 /dev/mmcblk0
brw-rw---- 1 root disk 179, 1  1月  1  1970 /dev/mmcblk0p1
brw-rw---- 1 root disk 179, 2  1月  1  1970 /dev/mmcblk0p2
[root@pi2 ~]# 

 

boot に200M / に 3.5GB のようです。

拡張の流れは、

・最終パーティションの後ろがあいていれば

・fdisk でサイズ拡張し、

・リブート後に、リサイズ

な感じ。

[root@pi2 log]# fdisk /dev/mmcblk0
n
2
最初のセクタ (411648-31356927, 既定値 411648): エンター
最終セクタ, +セクタ番号 または +サイズ{K,M,G,T,P} (411648-31356927, 既定値 31356927): エンター
w

リブートし、その後ファイルシステムを拡張します。

[root@pi2 ~]# resize2fs /dev/mmcblk0p2
resize2fs 1.42.12 (29-Aug-2014)
Filesystem at /dev/mmcblk0p2 is mounted on /; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/mmcblk0p2 is now 3868160 (4k) blocks long.

確認。

[root@pi2 ~]# df -T
ファイルシス   タイプ   1K-ブロック    使用   使用可 使用% マウント位置
/dev/root      ext4        15196556 1215912 13927400    9% /
devtmpfs       devtmpfs      469832       0   469832    0% /dev
tmpfs          tmpfs         474128       0   474128    0% /dev/shm
tmpfs          tmpfs         474128     348   473780    1% /run
tmpfs          tmpfs         474128       0   474128    0% /sys/fs/cgroup
/dev/mmcblk0p1 vfat          204580   20772   183808   11% /boot
tmpfs          tmpfs          94828       0    94828    0% /run/user/0
[root@pi2 ~]# 

[root@pi2 ~]# df -h
ファイルシス   サイズ  使用  残り 使用% マウント位置
/dev/root         15G  1.2G   14G    9% /
devtmpfs         459M     0  459M    0% /dev
tmpfs            464M     0  464M    0% /dev/shm
tmpfs            464M  348K  463M    1% /run
tmpfs            464M     0  464M    0% /sys/fs/cgroup
/dev/mmcblk0p1   200M   21M  180M   11% /boot
tmpfs             93M     0   93M    0% /run/user/0
[root@pi2 ~]# 

[root@pi2 ~]# fdisk  -l
::
デバイス       起動 開始位置 最後から セクタ サイズ Id タイプ
/dev/mmcblk0p1          2048   411647   409600   200M  e W95 FAT16 (LBA)
/dev/mmcblk0p2        411648 31356927 30945280  14.8G 83 Linux

拡張できたようです。