Raspberry Pi (7) OLED status

Published by:

Raspberry Pi ZeroにOLED をつけて、statusを表示する。
Raspberry Pi Zeroは、ネットワークi/fがないため、入手して大分時間がたちまして、棚上げ状態が続く。
USB WiFiを追加し、さらにOLEDでipアドレスなどのstatusが表示できれば、使い道が増えると考えた。
試行錯誤の末、下記のものができた。

  1. オスのUSB追加で、PCに直挿入
    (2は共存できないため、不要!)
  2. USB WiFiでネットワークに接続
  3. シリアル接続ための端子を用意
  4. OLEDでstatusの表示
  5. BMP280で環境温度と気圧を収集

開発環境構築

まず、オスのUSB追加で、PCに直挿入できるように。

(参考: Raspberry Pi (8) USB to PC

PCに直挿入、sshで操作らくらくと調子がいいだけと、
しかしここで、MicroUSBにWiFiドングリをさして見たら、認識しない!共存できないと発見した。

仕方なくシリアル接続ための端子を追加した。

OLEDでstatusの表示

(TBD)

BMP280で環境温度と気圧を収集

(TBD)

Pi (5) USB to PC

Published by:

Raspberry Pi Zero はWiFiもない、LANもないから、使いづらい。

USBで直接PCに刺して使えるならいいと思い、やってみた。

ハードウェア

ついてに、OLEDも繋げて、何かメッセージ見るとき便利。

完成した様子。

ソフトウェア

SDカードにRaspbianを書きこむ

いつもの方法

bootボリューム内の一部ファイルの修正

編集するファイルは3つ。

config.txt

次のコマンドでファイルを開く。

最終行に次の内容を追加。

 

cmdline.txt

次のコマンドでファイルを開く。

rootwaitquietの間にmodules-load=dwc2,g_etherを挿入。

編集後の内容は次のとおり。

 

ssh

現行のRaspbianは,デフォルトでsshによるログインが無効になっていて,モニタやキーボードを接続してローカルからログインする必要。でも,ファイル/boot/sshが存在すると,初回起動時にsshが有効になる。

以上の作業が終わったらMacからSDカードをアンマウントし,Zeroに挿入。

早速Macに繋いて動作確認。

 

Macのターミナルを起動し,次のコマンドでZeroにログインする。初期パスワードは”raspberry”。

ログインできたら、あとはLinuxとして自由に利用できる。

ネットワークに繋ぐには、Pi対応USB WiFi  ドングルを利用する。

参考

  1. http://blue-black.ink/?p=3674

Pi (4) LAMP setup

Published by:

Raspberry PiにLAMP環境を作る

install

念のため、updateしておく。

pi@raspberrypi:~ $ sudo apt-get update

AMPを一気にinstallする
pi@raspberrypi:~ $ sudo apt-get install -y apache2 php5 mysql-server
Apache2 Debian Default Page をみる
http://192.168.11.139/

PHP動作確認

Document Rootsは、/var/www/html の下。そこにinfo.php ファイルを作って、PHP動作確認する。
pi@raspberrypi:~ $ cd /var/www/html
管理者権限で、ファイルを新規作成。
root@raspberrypi:/var/www/html$ sudo nano info.php
またはrootユーザーになって
root@raspberrypi:/var/www/html#  nano info.php

ファイルの中身を確認
root@raspberrypi:/var/www/html# cat info.php
<?php
phpinfo();
?>
ブラウザーから、PHPの設定情報が見れる。
http://192.168.11.139/info.php

PIXEL (3) Screen resolution

Published by:

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セッション起動時に自動起動が走るらしいので、時間があったらまた試してみる。
 

Raspberry Pi (6) Nokia 5110 LCD

Published by:

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 (5) Red LED Matrix Module

Published by:

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 (2) Setup publickey

Published by:

経緯

今回は、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:~ $
ついに成功!

Onion Omega2+ (5) Motion Sensor

Published by:

モーションセンサーに関して、適当なプログラムが見つからないので、下記の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が使用中のままになり、再度起動すると、異常終了になってしまう。
 

PIXEL (1) Raspberry Pi Desktop X86

Published by:

PIXEL とは

Raspberry Pi Desktop X86は、PC用のオペレーティングシステムです。ラズベリーパイ用OSのRaspbianと同じ環境がx86 PCで動作します。

  • 2016年12月 : PIXEL v 1.1 Linux RaspberryPi 3.16.0-4
    PIXEL FOR PC 公開
  • 2017年 6月 : PIXEL v 1.3 Linux RaspberryPi 3.16.0-4
    RASPBERRY PI DESKTOP X86 DEBIAN8 JESSIE公開
  • 2017年11月 : PIXEL v 2.2 Linux RaspberryPi 4.9.0-4
    RASPBERRY PI DESKTOP X86 DEBIAN9 STRETCH公開
  • 2018-06-27 : Kernel version:4.9
    DEBIAN STRETCH WITH RASPBERRY PI DESKTOP

ダウンロード先は、こちらからも確認できます。

PIXEL FOR PCは、プロトタイプのライブCDということでしたが、古い x86 PCにインストールできました。今度の Raspberry Pi Desktop X86 は、PIXEL FOR PC の後継版のようでハードディスクにインストールできるようになりました。

公式サイトによると、PIXEL はPentium M メモリ512MBの「Think Pad X40」で動作可能と書かれています。

インストール

公式サイトからISOイメージをダウンロードして、Win32DiskImagerなどを使って、DVDやUSBやSDにイメージを書き込みます。

Win32DiskImagerとは

windowsではイメージファイルの書き込みが出来ない為、拡張子imgのファイルをSDカード等に書き込む際には専用のソフトをインストールしなければなりません。

しかし、あまりレジストリを汚したくない方はソフトのインストールに抵抗があるかと思います。
そういった場合にもWin32DiskImagerならZIP版を解凍すれば中のexeファイルから起動でき、インストーラーでのインストール無しで使用できますので私はこれを使っています。

Win32DiskImagerのダウンロード

下記ダウンロードサイトからダウンロードします。

Win32DiskImagerダウンロードページhttps://ja.osdn.net/projects/sfnet_win32diskimager/

Win32DiskImagerの使い方

Win32DiskImagerを起動します。

フォルダマークのボタンを押して読み込むimgファイルを選択し、その右側のインストール先のドライブを書き込むドライブ(マイクロSDカード等)に変更します。

imgファイルと書き込み先ドライブに間違いが無ければWriteをクリックします。

ブート

イメージを書き込んだUSBをPCに差し込んで、電源を投入します。持ちのPCに依りますが、BIOS設定画面を表示するために、[F2]または[ESC]キーを押します。

ラズパイのマークが表示されてブートがはじまります。しばらくすると、見慣れた Raspbian のデスクトップが表示されました。

最新に更新

最新に更新する
ネットワークに接続して、次のコマンドを入力して最新版に更新します。

# sudo apt-get update
# sudo apt-get dist-upgrade

Onion Omega2+ (4) DHT22 Sensor

Published by:

温度と湿度を測るべく、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