LANケーブルは100mしか繋がない

OSとかIoTとかRubyとかPythonのゆとり系音楽プログラマー

Raspberry Pi 3 + Unicorn hatで電源投入時自動的にIPアドレスを表示させる

Raspberry PI のコンパクトさには感動しました。

でもよく考えればスマホとか同じスペックでもっと小さいのかとか、
まぁいろいろ考えさせられます。

まず結果からお見せしよう。


Raspberry PI with Unicorn Hat auto show IP adress

そしてこのプログラム驚くべきことにわずか5行である。

Raspberry PIについて

原産国はイギリスで ワンボードPCとかいう部類。

似たようなもの(?)にarduinoなんかもある。

arduinoがハードウェア制御寄りなのに対し、
Raspberry PIはパソコン寄り(ハイスペック)。

「ハードウェアなにそれ?」な筆者はRaspberry PIと、
とりあえず簡単にチカチカ光らせることができる、
Unicorn Hatなる怪しげなボードを購入したのだった。

Raspberry Pi ユニコーン ハット Unicorn HAT

Raspberry Pi ユニコーン ハット Unicorn HAT

Raspberry Pi 3 Model B (Element14)

Raspberry Pi 3 Model B (Element14)

余談だが執筆時イギリスEU脱退の影響でユーロが大下落していて、
RaspberryPI及びUbuntu関係の商品は、
今が買いだと思っている。

//想定の範囲内だったが、このケースデフォルトではHatがはまらなかったため、あちこち削った。w
//削っても問題なく蓋等は閉まる。

経緯

入出力機器(マウスキーボードディスプレイ)は特に買っていなかったので、
ラズパイしたいときは都度パソコンのマウスとキーボードを外して、
テレビのHDMI入力に繋げるという手間をかけていた。←

当然すぐにめんどくさくなってVNCサーバーを入れることに。。。

VNCサーバー導入については、下の記事を参考に。

yamaryu0508.hatenablog.com

ちなみにVNC ViewerってUbuntuはもちろん、
androidiphone版も出てるんですよ!

下はandroidからリモート接続した図。

f:id:swan_match:20160703232429p:plain

結構使い勝手はスマホ用に工夫されていて、
ベッドでゴロゴロしながらラズパイするのも、
結構癖になるものです。

インターフェイスを全体的に紫っぽくすることで、 Ubuntu感とラズベリー感(食べたことも見たことも多分ないけど)が出るのでオススメ。

しばらくはそんなわけで楽しいラズパイ生活を過ごしていたのですが、
IPを固定していなかったため、
時々またテレビとマウスとキーボードを繋げてifconfigと打つ
という作業が定期的に発生してしまった。

当然IPを固定すればいいだけのことだがなんか嫌だ

理由はないけど、なんか嫌だ

せっかくUnicorn Hatがあるんだから、
起動したらIPを出せばいいじゃん。ってゆー発想。

UnicornHatScrollとの出会い

数値をスクロールさせるロジックをゴリゴリ書くつもりだったが先人がいた。

github.com

まずローカルにスクリプトをクローンさせていただき、
show_ip.pyを作成する。

cd
git clone https://github.com/topshed/UnicornHatScroll
cd UnicornHatScroll
vim show_ip.py

show_ip.pyの中身は下記。
// IP調べてる部分の意味はわかっていない。コピペ。←

# show_ip.py
import socket;
from UHScroll import *

unicorn_scroll('hello','pink',255,0.2)

ip = [(s.connect(('8.8.8.8', 80)), s.getsockname()[0], s.close()) for s in [socket.socket(socket.AF_INET, socket.SOCK_DGRAM)]][0][1]

unicorn_scroll(ip,'pink',255,0.2)

そして、自動起動するように設定。

sudo vim /etc/rc.local
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi

# ここから追記
sudo python3 /home/pi/UnicornHatScroll/show_ip.py &
# 追記終わり

exit 0

これで再起動すればUnicorn HatにIPが表示される。

ハマったのは、はじめにHelloと表示させないと
IP取得される前に表示しようとしてしまい、エラーになること。

おしまい

Raspberry Pi 3になってWifibluetoothがデフォルトで使えるようになったので、
家の中では電源を指すだけでVNCスマホでもUbuntuでもタブレットでも
ラズパイできるようになった。

普通に8*8のフルカラーLEDをパソコンから制御しようとしたら、
途方もない労力が必要な気がするが、
ラズパイやハットを使えばたったの5行である。

ユーロが下落しているうちに
是非ラズパイやハットを買い占めておくのは手かもしれない。