All posts by chen

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

Raspberry Pi (10) Nokia 5110 LCD

Nokia 5110 LCD表示するための設定

最初の参考文献で、下記のコマンドを実行

cd /home
sudo apt-get update
sudo apt-get install python-pip python-dev build-essential
sudo pip install RPi.GPIO
sudo apt-get install python-imaging
sudo apt-get install git
sudo git clone https://github.com/adafruit/Adafruit_Nokia_LCD.git
cd Adafruit_Nokia_LCD
sudo python setup.py install
Adafruit examples programsを実行:
pi@raspberrypi:~/Adafruit_Nokia_LCD $ cd examples/
pi@raspberrypi:~/Adafruit_Nokia_LCD/examples $ python shapes.py
Traceback (most recent call last):
  File "shapes.py", line 60, in <module>
    disp = LCD.PCD8544(DC, RST, spi=SPI.SpiDev(SPI_PORT, SPI_DEVICE, max_speed_hz=4000000))
  File "build/bdist.linux-armv7l/egg/Adafruit_GPIO/SPI.py", line 42, in __init__
IOError: [Errno 2] No such file or directory

困りました!

もしかしてと、昨日のRaspberry Pi (9) Red LED Matrix Moduleを見直し、spi->> Onが必要と気づいた。

  • spi ->> On

これて、Adafruit examples programsを実行に問題なく表示できた。

参考文献

  1. http://projects.privateeyepi.com/home/home-alarm-system-project/nokia-5110-lcd-project

Raspberry Pi (9) Red LED Matrix Module

Raspberry Pi用赤いLED Matrix Moduleを購入したので、まずためす!

セットアップ

このように、GPIOに差し込むタイプ。何かできるかと思うと、流れ文字、テトリスゲームはいいかもしれません。

ちょっと初期のPiで試したが、OSが古いため、パッケージインストールエラーなど、問題発生する。仕方なく、別SDに最新版のOSを導入して進む。

起動したら、下記の3点設定する。

pi@raspberrypi-256M:~ $ sudo raspi-config
  • Video Momory 64M ->> 16M
  • ssh ->> On
  • spi ->> On

ドライバーインストール

ドライバーの C library for Broadcom BCM 2835 インストール.

wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.49.tar.gz
tar xf bcm2835-1.49.tar.gz
cd bcm2835-1.49
./configure
make
sudo make check
sudo make install

サンプルコード

サンプルコードの取得

cd ~
git clone https://github.com/leon-anavi/raspberrypi-matrix-led-max7219.git

C言語サンプルコードのビルド

cd ~/raspberrypi-matrix-led-max7219/c
make

実行する

sudo ./led-max7219-text hello

参考ビデオ

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が使用中のままになり、再度起動すると、異常終了になってしまう。