Category Archives: Raspberry Pi

Raspberry Pi 液晶表示盤のLED制御

数か月前、Raspberry Pi に液晶表示盤を付けたが、バックライトのLEDは常にONのため、夜は眩しい。GPIOからON/OFF制御可能にしたい。

回路図がないのため、ネットでいろいろ調べて、バックライトのLEDは、GPIOに繋ぐと、3.3V に直結したタイプあるそうです。

WebIOPiをインストールして、ブラウザから、すべてGPIO端子ON/OFFして見たが、バックライトのLEDがON/OFF現象が認めない。つまり、購入したものは3.3V に直結したタイプらしい。

基盤の結線を探し、切断してGPIOにつなぎ直し方法もあるが、なかなか決心とタイミングが必要ね。

たまたま液晶表示盤は、PCD8544 LCD使うらしい。そのPCD8544の制御方法を探す際、PCD8544-utils ( https://github.com/acidum/PCD8544-utils )見つかり、おまけに、液晶表示盤改造でバックライトのLED制御する方法まで書いた。小さな抵抗を溶かして、180度回転し、ジャンパー線でコネックターまで繋ぐ方法。

タイミングを見て、改造に取り込んだ。特に上記URLに説明した凹みを作って結線することなく。ケース入りだからそのまま結線でも問題ないと。

2015-04-27 21.51.582015-04-27 21.52.45

結線の正面と裏面、遂に成功した。手元に結線がなく、古い結線付きコネックターの結線をカットして再利用。

2015-04-27 21.51.58

近眼鏡と虫眼鏡の組み合わせて些細作業を進み、一度小さな抵抗が跳ねて見失い、諦めかけた時もあった。

2015-04-27 21.56.23

セット組み直して、WebIOPiから、21番PIN(GPIO9)のON/OFFで、バックライトのLEDがON/OFFが確認した。

これてRaspberry Piに状態変更があるとき、メッセージが届いたとき、バックライトのON/OFF、Blinkなどで表現する手法も増えた。

 

参考文献 肩に乗せてもらった巨人達:

Raspberry Pi に液晶表示盤

AliExpress.comでRaspberry Pi 用液晶表示盤発見。送料無料8ドルで早速注文。約8日で東京自宅に届きました。

見た目右に3つ黒いピクセルがあるが、使用上支障がない模様。

Raspberry-Pi-LCD

Attached new LCD for Raspberry Pi

早速取り付けて、電源ONして、バックライト点灯したが、画面当然何も表示しない。

wiringPiのGitから取得とbuild

415  cd
416  git clone git://git.drogon.net/wiringPi
417  cd wiringPi/
418  ./build

RaspberryPiの/libraries/c/をGitから、pcd8544_test、pcd8544_test2、を実行。

419  cd
423  git clone https://github.com/binerry/RaspberryPi.git
425  cd RaspberryPi/libraries/c/PCD8544/
437  cp -p ../PCD8544.h ./
438  cc -o pcd8544_test pcd8544_test.c ../PCD8544.c  -L/usr/local/lib -lwiringPi
439  sudo ./pcd8544_test
440  cc -o pcd8544_test2 pcd8544_test2.c ../PCD8544.c  -L/usr/local/lib -lwiringPi
441  sudo ./pcd8544_test2

立ち上げ時間、CPU利用率と空きメモリの表示サンプル

442  cc -o pcd8544_rpi pcd8544_rpi.c ../PCD8544.c  -L/usr/local/lib -lwiringPi
443  sudo ./pcd8544_rpi
444  top
445  sudo ./pcd8544_rpi
446  sudo ./pcd8544_rpi &

バックグラウンド実行も可能。

Raspberry Pi wireless 温度計の制作

RaspberryPiの検索で、たまたまUSB温度計を使ってLinuxから室温を計測する を発見

それから、matoken’s wiki. Linux/Device/サンコーレアモノショップ_USB温度計_AKIBA58で、eBay 日本で買うより安いという情報を頂いたので、買ってみた。

同じの品物ないが、類似したものを一個$6.49で買った。送料無料!(しかし安いものがいっぱいあるからついつい、84ドル超える買い物になった。)

P2190091

届いたら、早速RaspberryPiに刺してみたら、

[702457.972061] usb 1-1.2: new low-speed USB device number 5 using dwc_otg
[702458.078478] usb 1-1.2: New USB device found, idVendor=0c45, idProduct=7401
[702458.078511] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[702458.078528] usb 1-1.2: Product: TEMPerV1.4
[702458.078543] usb 1-1.2: Manufacturer: RDing
[702458.093433] input: RDing TEMPerV1.4 as /devices/platform/bcm2708_usb/usb1/1-1/1-1.2/1-1.2:1.0/input/input0
[702458.094931] hid-generic 0003:0C45:7401.0001: input,hidraw0: USB HID v1.10 Keyboard [RDing TEMPerV1.4] on usb-bcm2708_usb-1.2/input0
[702458.104938] hid-generic 0003:0C45:7401.0002: hiddev0,hidraw1: USB HID v1.10 Device [RDing TEMPerV1.4] on usb-bcm2708_usb-1.2/input1

認識された。

こちら(http://hpv.cc/~maty/pukiwiki1/index.php?Linux/Device/サンコーレアモノショップ_USB温度計_AKIBA58)を参考に、ソースコードを取得し、カスタマイズする。

詳しい製作過程は、WIKIへ(http://digilib.edu2web.com/xoops/modules/xpwiki/)どうぞ。

# apt-get install build-essential libusb-0.1-4 libusb-dev git

一部パッケージが見つからない、失敗に終わった。パッケージ更新する。

# apt-get update

# apt-get install build-essential libusb-0.1-4 libusb-dev git

今度上手く完成した。

temper ソースをgit から。

# git clone git://github.com/bitplane/temper.git

# ls temper

60-temper.rules  log.sh  Makefile  pcsensor.c  pcsensor.h  README  temper.c

# cp -p temper.c temper.c.org

# vi temper.c

# diff temper.c.org temper.c

44c44
<               utc = gmtime(&t);
---
>               utc = localtime(&t);
47c47
<               strftime(dt, 80, "%d-%b-%Y %H:%M", utc);
---
>               strftime(dt, 80, "%Y-%m-%d %H:%M:%S", utc);

# make

# mv temper /usr/local/bin/

# chmod u+s /usr/local/bin/temper

# temper

2013-02-16 03:48:08,30.396763

ちゃんと温度の表示ができた。しかし30度は高いね!USB延長ケーブルを付けて再度計測。

$ temper

2013-02-16 03:55:17,23.710213

23度くらい、室温に近いかも。

運用 anchor.png

PHPでWEBに表示するため、UNIX通算時間の表示、ログの生成、cron に登録、ログの解析が必要。

# vi temper.c

# diff temper.c.org temper.c

44c44
<               utc = gmtime(&t);
---
>               utc = localtime(&t);
47c47
<               strftime(dt, 80, "%d-%b-%Y %H:%M", utc);
---
>               strftime(dt, 80, "%Y-%m-%d %H:%M:%S", utc);
49c49
<               printf("%s,%fn", dt, tempc);
---
>               printf("%ld,%s,%fn", t, dt, tempc);

5分置きに、/var/log/temper.logにログを吐き

*/5 * * * * /usr/local/bin/temper >> /var/log/temper.log

最後は、PHPでWEBに表示する

オーダーした、Webカメラもそろそろ届くので、無線で画像、音声、温度、湿度を送るフィールドサーバみたいなものを作りたいね!

Ref anchor.png

参考:

  1. http://model.job.affrc.go.jp/FieldServer/フィールドサーバ

Raspberry Pi 二台目始動

Raspberry Pi一台目Webサーバとして16GのSDカードを積んで遠方で稼働し始めた。

Raspberry Pi 二台目もそろそろ始動。

P1300012

今回はクリアケースで、8GのSDカード(左側青いもの), USB-WiFi無線通信モジュール(右側白いもの)を装備、ワイアレスの何かを試したいともう。

手元にある http://www.amazon.cn/MERCURY-水星网络-MW150US-超小型150M无线USB网卡/dp/B008FK96QG/ で購入した。 USB-WiFi無線通信モジュール(右側白いもの)を装備した様子

# lsusb — 認識されたことを確認。

Bus 001 Device 002: ID 0424:9512 Standard Microsystems Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp.
Bus 001 Device 004: ID 0bda:8176 Realtek Semiconductor Corp. RTL8188CUS 802.11n WLAN Adapter <--- これです!
Bus 001 Device 008: ID 0c45:7401 Microdia

ここの Wifiアダプタ(チップセットがRTL8188CUSのもの)のドライバはカーネルにすでに組み込まれているので、非常に簡単なセットアップだ。

# lsmod — カーネルモジュールの読み込み状態で確認

Module                  Size  Used by
snd_bcm2835            10636  0
snd_pcm                60411  1 snd_bcm2835
snd_seq                44988  0
snd_timer              16257  2 snd_pcm,snd_seq
snd_seq_device          4265  1 snd_seq
snd                    41809  5 snd_bcm2835,snd_timer,snd_pcm,snd_seq,snd_seq_device
snd_page_alloc          3176  1 snd_pcm
8192cu                457513  0  <--- これです!
leds_gpio               1920  0
led_class               2329  1 leds_gpio

# iwconfig — ワイヤレス設定から確認

wlan0     unassociated  Nickname:"<WIFI@REALTEK>"
          Mode:Managed  Frequency=2.412 GHz  Access Point: Not-Associated
          Sensitivity:0/0
          Retry:off   RTS thr:off   Fragment thr:off
          Encryption key:off
          Power Management:off
          Link Quality:0  Signal level:0  Noise level:0
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0
lo        no wireless extensions.
eth0      no wireless extensions.
Page Top

設定 anchor.png

# vi /etc/network/interfaces

auto wlan0
allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf

# vi /etc/wpa_supplicant/wpa_supplicant.conf

network={
 ssid="_SSID_"
 proto=RSN
 key_mgmt=WPA-PSK
 pairwise=CCMP TKIP
 group=CCMP TKIP
 psk="_WPA_SHARED_KEY_"

}

# ifdown wlan0

# ifup wlan0

ioctl[SIOCSIWAP]: Operation not permitted
ioctl[SIOCSIWENCODEEXT]: Invalid argument
ioctl[SIOCSIWENCODEEXT]: Invalid argument

# ifconfig wlan0

wlan0     Link encap:Ethernet  HWaddr 14:cf:92:0b:91:84
         inet addr:192.168.0.123  Bcast:192.168.0.255  Mask:255.255.255.0
         UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
         RX packets:2573 errors:0 dropped:4062 overruns:0 frame:0
         TX packets:13 errors:0 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:1000
         RX bytes:307880 (300.6 KiB)  TX bytes:1871 (1.8 KiB)

運用 anchor.png

サーバとして運用するつもりなので、固定IPの設定を行う

また、eth0はケーブルが抜けると、wlan0も切れてしまうので、いろいろと調べて、ifmetric 導入にした。

# apt-get install resolvconf — chen 2013-02-19 (火) 01:30:55

# apt-get install ifmetric — chen 2013-02-19 (火) 01:31:14

# vi /etc/network/interfaces

auto lo
iface lo inet loopback
# Primary wired network interface [eth0]
auto eth0
iface eth0 inet static
       metric 1
       address 192.168.0.201
       netmask 255.255.255.0
       gateway 192.168.0.1
# DHCP
#iface eth0 inet dhcp
# Wireless interface [wlan0]
auto wlan0
allow-hotplug wlan0
iface wlan0 inet static
       metric 0
       address 192.168.0.207
       netmask 255.255.255.0
       gateway 192.168.0.1
       wpa-ssid _SSID_
       wpa-psk _WPA_SHARED_KEY_
       # wpa_roam /etc/wpa_supplicant/wpa_supplicant.conf

# ifdown wlan0

# ifup wlan0

これてeth0はケーブルが抜けでも、wlan0ちゃんと繋ぐ。

Ref anchor.png

Raspberry Pi power on first time

Raspberry Piのケースもそろい、新しい4G容量のSDカードも購入、いよいよ電源を投入。

その前、まずインストール方法を調べた。インターネット接続されてるなら、berrybootが一番楽らしい。小さいファイルを解凍してsd cardに入れるだけ、しかも複数OS入れられる。

P1160876

Piとテレビの間、HDMIケーブルで繋ぎ、LANケーブルでハブにも繋ぎ、手元にある無線マウス、無線キーボードもそれぞれUSBでつなぎ、用意したSDカード挿入、最後5V電源つなった様子。

インストール手順をまとめる:

  1. http://www.berryterminal.com/doku.php/berryboot サイトを開く。
  2. berryboot-20120904.zip をダウンロードする。
  3. カラのsd cardのルートににすべてファイルunzip
  4. sd cardを PIに挿入
  5. ルータと PI にケーブルをつなぐ
  6. PI 電源を入れる
  7. PI 起動、sd cardのフォーマット
  8. OSを選んでインストール (とりあえずDebian)
注意:フォーマットする際、デフォルトの ‘ext4 (no discard)’  ではなく、 ‘ext4’を選ぶ。

P1160879

Raspberry Pi 注文

Raspberry Pi(ラズベリーパイ)は、名刺サイズの価格35ドルの「単板機」(single-board computer)。

http://ja.wikipedia.org/wiki/Raspberry_Pi

多分3月こと、Fecebookで情報を知り、予約したが、今日やっと注文できるの知らせが来た。

本体は35ドル、送料は8.02ドル、総額43.02ドルで注文した。届くまで5週間かかるから、とりあえず楽しみに。

用途として、HDMIでTVに接続し、10/100 Mbps で無線ルータ(USB電源出力付き)に繋いで、AirPlayを作ってみたいと思う。

 

(液晶TV)---HDMI---(ラズベリーパイ)---LAN---(無線ルータ)---WIFI---(WIFIルータ)
                   (    電源入力 )---USB---(5V電源出力)

 

iPhone, Androidから、ビデオ見るなり、プレゼンなりできるといいね。