ホーム > Raspberry > Raspberry Pi – eInk Screen の PaPiRus を日本語対応させて遊ぶ

Raspberry Pi – eInk Screen の PaPiRus を日本語対応させて遊ぶ

13043382_1262056263809211_5131613470112809408_n IoTとかよくわかりませんが、Raspberry Pi の追加モジュールで電子ペーパーの「PaPiRus」で遊んでいるのでメモ。

購入したもの

 

MODMYPI
http://www.modmypi.com/

Raspberry Pi 3 – Model B
£24.99 GBP

PaPiRus ePaper / eInk Screen HAT for Raspberry Pi – Large
£29.16 GBP

送料も合わせて日本円で10,301JPYでした。

 

OS(Raspbian)インストール

 

Noobs
https://www.raspberrypi.org/downloads/noobs/

今まで知らなかったんだけどNoobs使えば簡単にRaspbianとかがインストールできる。

Windows IoT入れてみたかったんだけどRaspberry Pi 3に対応したPreview版がどうにもダウンロードできず断念して普通にRaspbianインストール。

Noobs Lite使ってオンラインからRaspbianを入手するときは有線でのNW接続が必要。

 

Wifi接続

 

一旦HDMIでTVに挿してGUIでやるととっても簡単。Mac的に右上のアイコンからWifi接続可能

 

PaPiRus導入 – HW

 

なんとPaPiRusには説明書が当然ながら入っておらず、オンラインにもマニュアルがありません!でも下記を見れば完璧。

Getting PaPiRus to work (and then break it …)
Frederick Vandenbosch
http://frederickvandenbosch.be/?p=1483

要約すると下記手順

  • 金色の小さい棒x1をハンダでくっつける
  • 小さいスイッチx4をハンダでくっつける
  • eInk Screenと基盤を接続
  • プラスチックの支柱を四隅につけてプラスチックのネジでRaspberryとPaPiRusを合体
  • 両面テープみたいなやつでeInk Screenと基盤を固定

ハンダゴテとか持ってないのでハンダが必要なところはやらななかったのですがとりあえず表示させる分にはしなくて大丈夫です。この金の棒はなんの意味あるんだろう?

    両面テープみたいなやつもとりあえずめんどくさいのでセロハンテープでぴたっと。

PapiRus導入 – SW

 

基本上記ブログを見ればOK.要約すると下記手順

  • Webにあるインストールスクリプトを実行
  • raspi-configでSPIの有効化
  • papirus-頭文字のコマンドが使えるようになる
  • 「sudo papirus-set 2.7」という感じで画面サイズ指定
  • コマンドはどうやら全部Pythonなので複製してカスタマイズ簡単
    念のためインストールスクリプト転載

https://raw.githubusercontent.com/PiSupply/PaPiRus/master/install

#!/usr/bin/env bash

sudo apt-get install git -y
sudo apt-get install python-imaging -y

git clone https://github.com/PiSupply/PaPiRus.git
cd PaPiRus
sudo python setup.py install    # Install PaPirRus python library
papirus-setup    # Install drivers and setup epaper

 

Pythonの日本語対応について

 

Java脳の俺にはまだ理解できてないけど、下記を参考させてもらえばどうにかなりそう。

python2.xでの日本語(マルチバイト文字)問題を一掃する!(その1)http://www.exsoft.net/blog/entry/ec1edx

 

RSSのPythonモジュール

 

RSS読み込ますモジュールは下記インストールして利用。

feedparser 5.2.1

https://pypi.python.org/pypi/feedparser

 

コーディング

 

標準なのかとかあまり理解してないけどPython Imaging LibraryであるPILというライブラリ経由で1bitのbitmap作ってPapirusに送れば描画できる感じ。

なので日本語への対応はPaPiRusじゃなくPILに対して日本語を使えるようにすればOK。インストールすると入るpapirus-writeのコードを少しいじればOK。

適当に日本語フォント持ってきて下記コードでRSSをPaPirus上に表示可能。日本語対応のポイントは赤文字。

この場合.decode(‘utf-8’)みたいなのつけなくても大丈夫みたい。一応ソースコードのエンコード指定してるけど途中で日本語文字を直接入力してたからなので不要かも?

ソース:

#!/usr/bin/env python

# -*- coding:utf-8 -*-

import os

import sys

from papirus import Papirus

from PIL import Image

from PIL import ImageDraw

from PIL import ImageFont

import argparse

import feedparser

import datetime

user = os.getuid()

if user != 0:

    print "Please run script as root"

    sys.exit()

# Command line usage

# papirus-wite "RSS-URL"

WHITE = 1

BLACK = 0

def main():

    p = argparse.ArgumentParser()

    p.add_argument(‘url’, type=str)

    p.add_argument(‘–fsize’, ‘-s’,type=int , default=16)

    args = p.parse_args()

    papirus = Papirus()

    if args.url:

        print("Writing to Papirus…….")

        print("RSS URL:" + args.url)

        write_rss(papirus, args.url, args.fsize)

        print("Finished!")

def write_rss(papirus, url, size):

    image = Image.new(‘1’, papirus.size, WHITE)

    draw = ImageDraw.Draw(image)

    font = ImageFont.truetype(‘/home/pi/Osaka.ttf’, size, encoding=’unic’)

    feed = feedparser.parse(url)

    draw.text((0,0), feed.feed.title, font=font, fill=BLACK)

    curLine = 1

    for entry in feed.entries:

        title = entry.title

        draw.text((0, size*curLine), title, font=font, fill=BLACK)

        curLine += 1

    now = datetime.datetime.now().strftime("%Y/%m/%d %H:%M:%S")

    draw.text((0, size*curLine), now, font=font, fill=BLACK)

    papirus.display(image)

    papirus.update()

if __name__ == ‘__main__’:

    main()

 

 

実行:

 

sudo ./papirus-rss http://news.yahoo.co.jp/pickup/rss.xml

 

 

実行結果:

13043382_1262056263809211_5131613470112809408_n

cronにでも仕込めば定期更新。

広告
カテゴリー:Raspberry タグ: ,
  1. まだコメントはありません。
  1. No trackbacks yet.

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中

%d人のブロガーが「いいね」をつけました。