RasPi: 16文字x2行LCDでネットワーク伝言板 ノ巻(1)
RaspberryPiにLCDモジュールを繋げたのは、ネットワークから表示を制御して簡単な伝言板にするためであった。調べていくと簡単そうに思われたが、いろいろ嵌ったのでメモとして残しておく。
とりあえずRaspberryPiのI/O制御はHTTPサーバなどとの連携を考慮してしばらくPythonで実現することに決めた。
HTTPサーバについてはこちらを参考にカスタマイズ程度で流用させてもらった。
LCDモジュールの制御は、前回RPi.GPIOを用いていたが、これはROOT権限が必要なため、CGIからは使いづらいというかセキュリティ的に問題になるので、WiringPi-Pythonというのを使うことにした。これはROOT権限がいらないモードとROOT権限が必要なRPi.GPIOと同等のモードがある。ただしROOT権限が必要ない設定で使う場合は、あらかじめ使用する端子を宣言しておく必要がある。
その違いは以下のようなスクリプト内の設定の違いになるが、どうもピン番号の振り方も変わるようではまってしまった。
これでPRi.GPIOで出来ていたLCDへの文字表示までできたが、そのファイルをCGIからモジュールとして呼び出すところでエラーとなってしまい、まだWeb経由の掲示板は完成していない。。
Pythonのクラスとモジュールのあたりで関数のスコープにはまっている感じ。次回でこのあたりが解明されているはずだが。
RaspberryPiとLCD(SC162C)の配線を検索していると時々見かけるFritzingというツールで描いてみた。ブレットボード上でイメージをつかむのにとても良い。RaspberryPiのデータを拾ってきて追加してみたが、コネクタ周りがバグっている。。
とりあえずRaspberryPiのI/O制御はHTTPサーバなどとの連携を考慮してしばらくPythonで実現することに決めた。
HTTPサーバについてはこちらを参考にカスタマイズ程度で流用させてもらった。
LCDモジュールの制御は、前回RPi.GPIOを用いていたが、これはROOT権限が必要なため、CGIからは使いづらいというかセキュリティ的に問題になるので、WiringPi-Pythonというのを使うことにした。これはROOT権限がいらないモードとROOT権限が必要なRPi.GPIOと同等のモードがある。ただしROOT権限が必要ない設定で使う場合は、あらかじめ使用する端子を宣言しておく必要がある。
その違いは以下のようなスクリプト内の設定の違いになるが、どうもピン番号の振り方も変わるようではまってしまった。
[ROOT権限不要] io = wiringpi.GPIO(wiringpi.GPIO.WPI_MODE_SYS) [ROOT権限必要] io = wiringpi.GPIO(wiringpi.GPIO.WPI_MODE_PORT)
上の変更と合わせて、以下の変更も追加した。
[ROOT権限不要] def __init__(self, pin_rs=7, pin_e=8, pins_db=[25, 24, 23, 18]) BCM(Broadcom)チップの端子番号で記述 [ROOT権限必要] def __init__(self, pin_rs=11, pin_e=10, pins_db=[6, 5, 4, 1]): WiringPi固有の端子番号で記述
これでPRi.GPIOで出来ていたLCDへの文字表示までできたが、そのファイルをCGIからモジュールとして呼び出すところでエラーとなってしまい、まだWeb経由の掲示板は完成していない。。
Pythonのクラスとモジュールのあたりで関数のスコープにはまっている感じ。次回でこのあたりが解明されているはずだが。
RaspberryPiとLCD(SC162C)の配線を検索していると時々見かけるFritzingというツールで描いてみた。ブレットボード上でイメージをつかむのにとても良い。RaspberryPiのデータを拾ってきて追加してみたが、コネクタ周りがバグっている。。
コメント
コメントを投稿