PIXEL (2) Screen resolution

PIXEL (Raspberry OS)は、USBメモリに書き込んで、古いi386のPCでも活用でするもの。

静音PCでPIXELを動かすと、800×600の解像度になってしまう。ちと狭い。変更する方法はあるのかな…。

_PIXEL for PC and Mac – Raspberry Pi のコメント欄で、xrandr とやらを使って解像度を変更する例が紹介されてる。

sudo xrandr --output Virtual1 --mode 1024x768

上記のように打ってみたら、エラーになり、困った。

pi@raspberrypi:~ $ sudo xrandr --output Virtual1 --mode 1024x768
warning: output Virtual1 not found; ignoring

なぜだろう!試しに引数なしでコマンド送ったら、ステータスとオプションが表示してくれた。

pi@raspberrypi:~ $ sudo xrandr
Screen 0: minimum 320 x 200, current 640 x 480, maximum 2048 x 2048
LVDS1 connected 640x480+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
640x480 63.10*+ 59.94
VGA1 connected 640x480+0+0 (normal left inverted right x axis y axis) 338mm x 270mm
1280x1024 60.02 + 75.02
1024x768 75.08 70.07 60.00
800x600 72.19 75.00 60.32
640x480 75.00 72.81 60.00*
720x400 70.08

これて、output を推測し、下記のコマンドを送る。

pi@raspberrypi:~ $ sudo xrandr --output VGA1 --mode 1024x768

解像度が変更できた。

これでは次回起動時にはまた元に戻ってしまって。さて、どうしたら…。

更に arandr なるツールをインストールしたらGUIでも解像度を変更でき;~/.config/autostart/ に.desktopファイルを置くと、Xセッション起動時に自動起動が走るらしいので、時間があったらまた試してみる。

 

Arduino (1) Guidance

App Inventor IoT の発表に伴い、実験しながら体験する予定。

対応機種は今現在Arduino 101とBBC micro:bitしかない。BBC micro:bitについて、あまり聞いたことがない、イギリスの小学校では無料配布らしい。早速Arduino 101を注文から始まる。

Arduino とは

Arduino(アルドゥイーノ[1])は、AVRマイコン入出力ポートを備えた基板、C++風のArduino言語とそれの統合開発環境から構成されるシステム。Arduino LLC および Arduino SRL が設計・製造を行い、登録商標を持っている。

Arduino 101

Genuino 101(米国ではArduino 101)は、米国のArduino LLCがインテルと共同で設計した、Intel Curie搭載のマイコンボードです。Arduino Uno R3と同じ形状の基板ですが、BLE(Bluetooth Low Energy)に対応し、3軸加速度センサ・3軸ジャイロセンサを搭載しています。

Arduino 101とApp Inventor連携する環境

Arduino 101とApp Inventor一緒にすると、いろいろIoT実験ができる。

その前に、Arduino 101とApp Inventor連携する環境のセットアップする必要。

Arduino IDEのインストール

まず App Inventor + IoT: Setting Up Your Arduinoを参考して、セットアップを進める。

 

Bluetooth連携する環境のセットアップ

次に、App Inventor + IoT: Basic Bluetooth Connection Setup を参考して、Arduino 101とApp InventorをBluetooth通して連携する環境のセットアップ。

Lちか

締めに、App Inventor + IoT: LEDを参考して、Lちかをやる。

http://iot.appinventor.mit.edu/#/arduino101/arduinoled

 

参考:

App Inventor + IoT Setup tutorial

PIXEL (1) Setup publickey

経緯

今回は、Raspberry Pi (ハードウェア)ではなく、Raspberry OS(基本ソフト)の話。

PIXEL (Raspberry OS)は、USBメモリに書き込んで、古いi386のPCでも活用でするもの。

Raspberry Pi (ハードウェア)がなく(不足)でも、同じOS体験できるがねらい。

Raspberry OSで、Atomエディタの動作が確認したくで、しばらく放置のPIXELを再起動してみた。

sshしてみる

まず、セキュリティ対策のため、 SSHサーバ初期値はオフになっています。調べて、/boot/に、sshというファイルを作成することでsshサーバを起動時に立ち上げてくれます。

それからsshしてみる。

外部から、ssh してみたが、publickeyがいるようですね。
chen@raspberrypi:~ $ ssh pi@192.168.11.138
The authenticity of host ‘192.168.11.138 (192.168.11.138)’ can’t be established.
ECDSA key fingerprint is 91:dd:87:09:8d:f4:a7:d1:5e:99:58:86:d1:e2:c5:e2.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘192.168.11.138’ (ECDSA) to the list of known hosts.
Permission denied (publickey).
chen@raspberrypi:~ $ ssh pi@192.168.11.138
Permission denied (publickey).

SSH 接続用の鍵ファイル作成

ssh-keygen -t rsa

を実行して下さい。以下のようなメッセージが表示されます。鍵ファイルを作成する場所を聞かれているだけなので、特に問題がなければエンターを押すだけで構いません。

Generating public/private rsa key pair.
Enter file in which to save the key (/home/pi/.ssh/id_rsa):
 この後、2回パスフレーズの入力が求められるので適当なパスフレーズを入力して下さい。このフレーズ自体はそれほど強固でなくても構いません。(このフレーズは忘れないでください)。

これで、/home/pi/.ssh/ ディレクトリに id_rsa(秘密鍵) と、 id_rsa.pub(公開鍵)が作成されます。

次は、作成された公開鍵を pi ユーザーの公開鍵として登録します。

cat .ssh/id_rsa.pub >> .ssh/authorized_keys
 一方、秘密鍵(/home/pi/.ssh/id_rsa)の方は外部から Raspberry Pi にアクセスする際に利用するので、他のパソコンや USB メモリ等にコピーして下さい。この鍵はとても大切なので、絶対に第三者に漏れる事がないようにしてください。

あとは、念のため今までのファイルのアクセス権を pi ユーザーのみ読み書き出来るようにしておきます。

chmod 600 ~/.ssh/authorized_keys
chmod 600 ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa.pub

Clientにid_rsaをコピー

また外部からssh接続できないので、困るが、
内部から、他のPiにsftpして、 id_rsaをコピーする
ファイルは、.sshの下へ移動
root@raspberrypi:/home/chen# mv id_rsa .ssh/

sshしてみる

chen@raspberrypi:~ $ ssh pi@192.168.11.138
Enter passphrase for key ‘/home/chen/.ssh/id_rsa’:
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
pi@raspberrypi:~ $
ついに成功!

C.H.I.P. (5) Flash CHIP

C.H.I.P.は全部7台も購入した。

kickstandで2台購入し(Kernel 4.3)、getchipでその後追加5台追加した(Kernel 4.4)。

最初の2台は、特に問題なく使えたが、後追加5台は何と2台は使えない。

しばらく忙しいので倉入りでしたが、そろそろIoTに活用すると思って、リモート操作しやすいため、XRDPを入れると思って、エラーになって。

#apt-get update

これて改善すると思って、なぜかupdate中 いきなり電源オフ!!XRDP, git などインストールできないと、なにもできない状態!原因不明のまま、そのうち2台は使えない状態になった。

一台は、ブート途中で止まり、もう一台はどうしてもupdateできない。

getchipのサイトを見ながら、Flash CHIPすれば、改善する可能性があるから、その2台をFlashして見た。ついでに初期の2台を最新版の(Kernel 4.4)にアップする。

http://flash.getchip.com/

を見ながら、いろいろ苦労して、 re-flash CHIPができた。おもな問題はケーブル合わないと、Windowsでドライバーがうまくいかない。最終は特定にケーブルとiMacで作業成功。

それからブートも正常進行、apt-get updateも問題なく、upgradeが終わったら、debian 8.7 になった。

root@chip:/home/chip# uname -a
Linux chip 4.4.13-ntc-mlc #1 SMP Tue Dec 6 21:38:00 UTC 2016 armv7l GNU/Linux
root@chip:/home/chip# cat /etc/debian_version
8.3
root@chip:/home/chip# uptime
 07:30:48 up 7 min,  3 users,  load average: 2.33, 1.80, 0.93
root@chip:/home/chip# uptime
 07:32:29 up 9 min,  3 users,  load average: 2.74, 2.04, 1.10
root@chip:/home/chip# cat /etc/debian_version
8.7
root@chip:/home/chip# exit
chip@chip:~$ logout
Connection to 192.168.11.128 closed.
chen@raspberrypi:~ $

めでたく。

Onion Omega2+ (5) Motion Sensor

モーションセンサーに関して、適当なプログラムが見つからないので、下記のURLを参考しながら自作する!

https://docs.onion.io/omega2-docs/gpio-python-module.html

https://github.com/OnionIoT/onion-gpio-sysfs/

まずPython moduleのインストール

opkg update
opkg install python-light pyOnionGpio

プログラムはこちら

#!/usr/local/bin/python
# -*- coding: utf-8 -*-
import time
import onionGpio
from datetime import datetime

# LED GPIO
led_pin = 0
pir_pin = 9
sleeptime = 100000
led_light_up_time = 1

led = onionGpio.OnionGpio(led_pin)
pir = onionGpio.OnionGpio(pir_pin)

led.setOutputDirection(0)
pir.setInputDirection()

while True:
    value = pir.getValue().rstrip()

    if(value == "1"):
        print datetime.now(),
        print "motion_detected"
        led.setValue(1)
        time.sleep(led_light_up_time)
        led.setValue(0)

一応動作して、検出すると、LED点灯。

LEDをブザーに入れ替えると、検出すると、ブザー鳴る。Ctrl-Cで終了する。

しかし問題は、終了タイミングにより、GPIOが使用中のままになり、再度起動すると、異常終了になってしまう。

 

Onion Omega2+ (4) DHT22 Sensor

温度と湿度を測るべく、DHT22 Sensorを導入

ファイルのダウンロード

Onion Omega2 と DHT22情報を検索すると、まず見つかったのは、onionのフォーラム

https://wiki.onion.io/Tutorials/PHP-DHT11-DHT22-Sensor-Examples

こちらからは、次のパッケージをダウンロードすると指示された。

https://community.onion.io/uploads/files/1450434316215-checkhumidity.tar.gz

しかし、下記のエラーでうまくいかない。

./checkHumidity: line 1: syntax error: unexpected “(” (expecting “)”)

こちらの記事は2016-03-16のもの、 ファイルはOmegaに対応する、Omega2に対応してない!こちらは同じ悩みの方ののデスカッションでした。

http://community.onion.io/topic/1390/dht11-22-checkhumidity-syntax-error

流れの中で、次のOmega2に対応するパッケージをダウンロードすると話があった。

https://dl.dropboxusercontent.com/u/11811685/checkHumidity.tar.gz

しかしリンク切れえ、作者に連絡してみたら、新しいリンクアドレスを教えてくれた。

GPIOの選択

GPIOどれか使うもちょっと手間がかかった、どれでもいいではない。(プログラムちゃんと設定してないかも)!

いくつGPIOを試して、GPIO19に落ち着いた。GPIO6は、対応しないみたい;GPIO18とGPIO19は対応するが、DHT22のデータはGPIO18、Vccは3.3に繋ぐとうまくいかない;最後にDHT22のデータはGPIO19、Vccは5.0に繋ぐとうまくいった!

root@Omega-6F83:~/checkHumidity/bin# /root/checkHumidity/bin/checkHumidity 6 DHT22
-255.000000
-255.000000

root@Omega-6F83:~/checkHumidity/bin# /root/checkHumidity/bin/checkHumidity 18 DHT22
0.000000
0.000000

root@Omega-6F83:~/checkHumidity/bin# /root/checkHumidity/bin/checkHumidity 19 DHT22
21.799999
24.500000

 

参考:

  • https://wiki.onion.io/Tutorials/PHP-DHT11-DHT22-Sensor-Examples

Onion Omega2+ (3) Relay-Exp

昨日普通のリレーをブレッドボードで試したが、専用のリレーボードがあると思い出した。

早速つけって見た。

コマンドライン、ローカルWeb管理画面、そしてクラウド管理画面のどちらでも管理できるので便利。

図:ローカルWeb管理画面

 

リレーをコントロールする

root@Omega-6F83:~# relay-exp 0 on
> Initializing Relay Expansion chip
> Setting RELAY0 to ON
root@Omega-6F83:~# relay-exp 0 off
> Initializing Relay Expansion chip
> Setting RELAY0 to OFF
root@Omega-6F83:~# relay-exp 1 off
> Initializing Relay Expansion chip
> Setting RELAY1 to OFF
root@Omega-6F83:~#

図:コマンドライン管理の様子

ただ、切り替え結果の表示は、当にならないようね。目て確かめる必要。

同期の問題あるかもしれないが、コマンドラインでも状態が適当:

 

コマンド表示と 実物のLED状態、不一致の場合がある

root@Omega-6F83:~# relay-exp all off
> Initializing Relay Expansion chip
> Setting both RELAYS to OFF
root@Omega-6F83:~# relay-exp read 2
> Initializing Relay Expansion chip
> Reading RELAY2 state: ON
root@Omega-6F83:~# relay-exp read 1
> Initializing Relay Expansion chip
> Reading RELAY1 state: ON

両方ともにOffして、目て見てもOffになったが、

State:On

のまま。

IFTTTでも管理できるので、いつかやってみる。