先日ラズパイコンテストに応募してみました。
https://trendy.nikkeibp.co.jp/pcls/rpic/
このコンテストにはスポンサーから部品類が提供されます。2018年はオムロンから環境センサ、RSコンポーネンツから Pmod HAT、eneblerからAPI的なものが利用でき、これを使ったアイディアを応募します。
設備のマニアどっとこむ的にはオムロンの温度センサーを希望したが、次点でPmod HATになりました。
応募して数日後この液晶PmodOLEDrgbと拡張ボードが届きました。
さーてコンテスト用の作品をつくるか、と思ったのですが予想以上にハードな道のりでした。
まずはググっても日本語記事が検索できず、参考文献はほぼ英語だった…。
数少ない日本語での解説
https://www.rs-online.com/designspark/easy-peasy-peripheral-interfacing-with-pi-python-and-pmods-jpこの記事を参考にしてインストールは可能でパイソンコード例は使えるんですが、PmodOLEDrgbはこの記事だけでは動かせません。SPI通信でJA1か2を使うみたいなのですが…
(SPI設定は
raspi-configでやっておいてください)
リファレンスをみると
https://reference.digilentinc.com/reference/pmod/pmodoled/reference-manual
The Pmod OLED communicates with the host board via the SPI protocol. By driving and keeping the Chip Select (CS) line at a logic level low, users may send both commands and data streams to the display controller based on the state of the Data/Command (D/C) pin.
どうやらCSピンをGNDに落とさなければならないのですが、いったいどれがCSピンなのか…??
拡張ボードのリファレンスにラズパイのピン配置との対象表があるのでこちらを参照してください。(JA1とJA2でGNDに落とすピンは異なるので注意してください)
https://reference.digilentinc.com/reference/add-ons/pmod-hat/reference-manual
無事CNピンをGNDに落とし、サンプルコードをpython2で実行すると
from DesignSpark.Pmod.HAT import createPmod
from luma.core.render import canvas
from luma.oled.device import ssd1331
oled = createPmod('OLEDrgb','JA')
device = oled.getDevice()
with canvas(device) as draw:
draw.rectangle(device.bounding_box, outline="white", fill="black")
draw.text((16,20), "Hello, World!", fill="white")
while True:
pass
ディスプレイにHello World!の文字が出てきます。
注意して頂きたいのが、この状態でないとSPI通信をしていると反応しません。
lsmodコマンドで事前に確認する事はできません。(ここで結構つまづいた)
無事動作確認する事ができたのですが、普段日本語のブログなどに頼りきっていたのでいい経験になりました。 やはり電子工作をするにあたり英文が読めないいけないですね笑
今回数少ない日本語解説記事として参考になればと思います
そのうちコンテスト応募作品を紹介していきまーす。