投稿者名:TOKIDA

このサイトは備忘録であるとともにIT界隈の人に情報をお返し出来たら良いなぁという物です。

小型OLEDディスプレイをコンソールとして使う

ちょっと秋葉原による時間があったので 128×64のELディスプレイを買ってきました。価格は580円でした。ネットでこの辺の情報を調べていたら「コンソール」として使えるというのを見かけたので試してみました。

とても小さいです。既にピンがついているのでブレッドボードだったら簡単に使えますね?

既にi2cを配線してしまっているので横からポリウレタン導線をつかってパッチしていきます。正直久しぶりすぎて疲れた。1時間くらいかけてようやく4本を配線した感じです。今回は、vccは3.3Vの方に接続しました。裏は汚いのでお見せできません。

マニュアルにも書いて有りましたが配線が間違ってなかったら 0x3c として接続されることがわかります。

 i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- 3c -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- 76 --

ドライバはいつもお世話になっている Adafruit 社が出してくれているので利用します。

sudo apt-get install git
cd /home/pi/local
git clone https://github.com/adafruit/Adafruit_Python_SSD1306.git
cd Adafruit_Python_SSD1306
sudo python setup.py install

サンプルコードもついていますので起動してみます。

cd ~/local/Adafruit_Python_SSD1306/examples
python stats.py

縦が64ドットあるので 8×8フォントだと4行表示できるのでいい感じです。 stats.py の中に解像度を指定している箇所があるので変更しておきましょう。ディフォルトだと32ドットで起動してきます

次にやってみたかったコンソール表示をしてみます。

やり方は上記のサイトのままで動きます。

rootユーザで実施します。

cp oled /bin/oled
chmod a+x /bin/oled
export DEBIAN_FRONTEND=noninteractive
apt-get install console-data

次に /etc/fb.modes の最後についきます。

mode "128x64-60"
    # D: 25.175 MHz, H: 31.469 kHz, V: 59.94 Hz
    geometry 128 64 128 64 8
    timings 39722 48 16 33 10 96 2
endmode

サービスとして今回道入した oled を動かすために /etc/systemd/system/oled.service を作成します。

[Unit]
Description = oled daemon
After = multi-user.target
# After=display-manager.service
[Service]
ExecStartPre=/bin/bash -c "/bin/sleep 10; /bin/chvt 1; /bin/fbset '128x64-60'; /bin/setfont 'alt-8x8'"
ExecStopPost=/bin/bash -c "/bin/fbset '800x600-60'; /bin/setfont 'default8x16'"
ExecStart = /bin/oled
Restart = always
Type = simple
[Install]
WantedBy = multi-user.target

自動起動を登録します

systemctl enable oled 

この状態で再起動ししばらくすると下のように表示されます。

これは便利だと思います。仮にネットワークアドレスが不明な場合など小さいながらもコンソールが使えるので気合で頑張れる(乗り切れる)はずです。USB接続のキーボードを使えば普通に動きます。(キーボードが日本語キーボードの場合には raspi-configで設定をしておくと良いです)、また先のリンク先にも書いていますが画面が狭いのでプロンプトを export PS1=">" にしておくと良いですね。

最後に日本語フォントを利用するためにフォントを道入しておきます。

こちらのフォントを指定すればプログラム(python)内で指定すれば利用できるようになります。極小ですが読めます。

考えも特になくディスプレイ付けてしまったのでボタン取り付けて表示される内容を切り替えれるなどしておきたいです。

IBM の認定バッジが貰えるオンラインコース

少し前からIBMの認定を受けると、Open Badgeという仕組みでオンライン上でバッジがもらえます。

オープンバッジシステム

バッジを受け持っているのは下のサイトでIBM以外にもOracleやMicrosoft、Adobeなど名を連ねているのでIT系を学んでいる人は持っている人も多いかと思います。いままでベンダー資格を取得しても証明するのが面倒でしたがこれで一元的に管理することが出来るように成りました。

資格と言っても色々あり、有償のIBMの認定資格などでももらえますが、無料のオンラインコースを受講してももらうことが出来ます。今回はIBMのバッジが貰える2つのサイトをご紹介します。

Cognitive Class

Analyticsとかコグニティブ系のオンラインコースになっています

dW Course

IBMの開発者向けサイト(Developer Works)でのオンラインコース。主にクラウド上での開発系

沢山バッジを集めてみましょう。

「Node-RED: basics to bots 」を受講してみた

バッジ欲しさに、Node-REDのオンラインコースを受講してみました。

Node-REDというのはビジュアルフローエディタというもので、GUIでノンプログラミングに近い環境でプログラムが出来る実行環境兼開発環境です。このコースではテキストと動画が用いられており30分〜60分位で受講できました。私はそもそも知っていたので流し読み的なところもありましたがコマンドもきちんと書かれておりちょっとやってみたい人は一度受けるといいかなと思います。

バッジを貰いました。
終了したら、メールでバッジのリンクが送られてきました!登録すると自分のサイトにバッジが表示されます。

Raspberry Piで欲しいOLEDとミニHDMIディスプレイ

Raspberry Piをおいているとちょっとしたことでディスプレイがなくて不便なことが多いです。Zeroに至っては小さいのでディスプレイというよりはLCDなどのほうが良いですね。

小型OLED

手持ちのLCDが結構大きいので最近はこれが気になっています。

Adafuitが出しているのですが多分下のやつも同じものかなと思っています。これで動くなら安い。コントローラー一緒なので動くと良いなあ。Adfuitのはi2cが最初から埋まってしまうので個別に付いけれていいかなぁと。

まっとうに小型ディスプレイ

こちらも良いなと思っています。最大のポイントはやっぱりピンヘッダが使えるという点ですよね。しかも3000円台なので1つ持っているとそれだけで便利かなと思います。

次は何を買おうかと悩んでいるのも楽しいですね。
部品を見ていたらチュートリアルのサイトを発見しました。

Rasberry pi 用のユニバーサル基板があったので温度センサーを付ける

ブレッドボードでケーブル出しっぱなしだったので整理がてらユニバーサル基板に温度センサーを貼り付けてみました。老眼ぽくなり始めていて半田がツライ。部品があんまり家になかったので無理やり繋げた感がありますがとりあえず動いたので良かった。

ユニバーサル基板は、以前秋月電子に行った時に2枚買ってきていた物を使いました。

無理矢理感がありますが。

本当はリモコン様にRFモジュールを付けたいところ。後は普通に使うようにOLEDモジュールを付けておこうかな

[ubuntu] ansibleでswapfileを作成する

GCPのf1-microインスタンスがメモリ不足になっていたのでSwapファイルを設定しています。パフォーマンス的には別のディスクに書き出したほうが良いと思います。このあたりは IBM Cloud の場合にはどのサイズのインスタンスを作ってもSwapは別に用意されていて親切さを感じます。

gistに貼ったのでちょっと不親切な状態になっていますが実際には以下のようなディレクトリ構成だと思っていてください。

~/ansible/roles/swap$ du -a
4       ./vars/main.yml
8       ./vars
4       ./handlers/main.yml
8       ./handlers
4       ./templates/swapfile.swap.j2
8       ./templates
4       ./tasks/main.yml
8       ./tasks
36      .

Ansibleのソースは次のようなものを用意しています。

完全に自分用のメモですが以下のコマンドで導入されます。以下は cloud shell上に ansibleを導入している環境を前提にしています。またSwapを作りたいGCEのインスタンスには、ネットワークタグに swap を追加しています。こうすることで tag_swap と dynamic_inventory で認識されたインスタンスのみに上記の Playbook が導入されていきます。

ansible-playbook -i inventory/gce.py -l tag_swap --private-key=~/.ssh/google_compute_engine main.yml

色々やり方があるとは思いますが systemd 的には今回のようにするのが推奨されているのかなと思います。ただしmount系は /etc/fstab でも動くとは思いますので任意の方法で試してください。パフォーマンスの低下が気にならない範囲であればメモリだけの問題であれば swap は1つの手として昔ながらの方法として普通に使えます。

上部へスクロール