PR 記事には広告が含まれています
スポンサーリンク
Translate

mbedねこちゃんでY-CON電子ペーパーの表示テストプログラム

スポンサーリンク


image

こんにちはコハペペです。YouTubeのチャンネル電子ペーパーの投稿で、mbedねこちゃんでY's
Lab INC.のY-CONに画像を表示したいという方がおられたので、おためしのプログラムを作ってみました。制作過程を順を追って書いてみました。参考にして頂ければ幸いです。

しかしながら、このモジュールは持っていないため、実際に動作するかは未確認なところご了承ください。

2018.2 追記
コメント頂いた方から動作したとのご連絡を頂きました。

Y-CONはY's Lab INC.が販売している電子ペーパーのモジュールです。

調べてみると、シリアル通信でモノクロBMPのファイルをそのまま送信することで、画像が表示できるようです。mp3デコーダICみたいな感じに使える電子ペーパーモジュールですね。

そのため、

  • SDFileSystemを使ってSDカードからBMPファイルを読み込んで
  • データをシリアル通信でY-CON電子ペーパーへ出力する

というプログラムを作ればよさそうです。それでは作っていきましょう。

1.SDカードを使うためのライブラリのインポート

mbedCompilerでプロジェクトを新規作成します。プロジェクト名はycon_testにしました。

ここにSDカードを使えるようにするためのライブラリーのSDFileSystemをインポートします。

SDFileSystemをクリックすると下のような画面になるので、右側のImport Compilerをクリックします。


ycon01

Target Pathを先ほど新規作成したプロジェクト名「ycon_test」にして[Import]をクリック。


ycon02

これで、FileSystemライブラリがインポートできました。ここで試しにコンパイルしてみて下さい。


ycon03

大量のコンパイルエラーがでます。

2.mbedライブラリの変更

LPC1114でFileSystemを使うとmbedライブラリにバグがあるようなので、mbedライブラリを過去のバージョンに変更します。


ycon04

プロジェクトの中の[mbed]をクリックして、右側のリビジョンをクリックします。


ycon05

リビジョン137を選んで、右クリックして「ワーキングコピーをこのリビジョンに切り替える」をクリックします。mbedライブラリが過去のバージョンになります。コンパイルをしてみて下さい。


ycon06

コンパイルが通ります。

3.SDファイルにアクセスするためのプログラムを追加

SDカードとマイコンの配線は以下のような設定です。

  • SDカードのMISO LPC1114の1番ピン
  • SDカードのMOSI LPC1114の2番ピン
  • SDカードのCS LPC1114の4番ピン
  • SDカードのSCK LPC1114の6番ピン
  • SDカードの3V3  ブレッドボードの電源
  • SDカードのGND ブレッドボードのGND

です。

プログラムは以下の通りです。

#include "mbed.h"

#include "SDFileSystem.h"

//SDFileSystem name(mosi, miso, sck, cs, mount);

SDFileSystem sd( dp2, dp1, dp6, dp4, "sd");

int main() {

FILE *fp = fopen("/sd/test.bmp", "r"); //ファイルを開く

if(fp != NULL) {

;//ファイルが開けたので何か処理をする

}

fclose(fp); //ファイルを閉じる

free(fp);   //解放

}

test.bmpというファイルを、fopneで開いて、ifの{ }で何か処理をして、fcloseで閉じます。

このままだと、単に開いて閉じるだけのプログラムです。

4.シリアルポートクラスを用意して通信速度を設定する

シリアル通信をするにはSerialクラスを使います。

SDFileSystem sd(.... の下の行に

Serial ycon(USBTX, USBRX);

を追加します。USBTXはLPC1114の16ピン、USBRXは15ピンに対応しています。

通信速度を設定するためにmain()の下に

ycon.baud(115200);

を追加します。Y-CONは商品のページによると115200のようです。

プログラムはこんな感じです。

#include "mbed.h"

#include "SDFileSystem.h"

//SDFileSystem name(mosi, miso, sck, cs, mount);

SDFileSystem sd( dp2, dp1, dp6, dp4, "sd");

Serial ycon(USBTX, USBRX);

int main() {

ycon.baud(115200); //通信速度をY-CONのビットレートに設定する

FILE *fp = fopen("/sd/test.bmp", "r"); //ファイルを開く

if(fp != NULL) {

;//ファイルが開けたので何か処理をする

}

fclose(fp); //ファイルを閉じる

free(fp);   //解放

}

これで、SDカードのファイルのオープンと、シリアル通信の用意ができました。

5.ファイルの内容をシリアルに出力する

ファイルから1バイト読み込んで、そのデータをシリアルへ出力します。

ファイルの最後まで繰り返すプログラムはこんか感じになります。

int data;

while (1){  //ループ

data = fgetc(fp); //1バイト読み込む

if( data == EOF )   //ファイルの終わりかチェック

break;      //ファイルの終わりならばループを抜ける

ycon.putc((unsigned char)data);    //シリアルに1バイト送信

}

これを先ほどのif{ } の中に追加します。

プログラム全体はこうなりました。

#include "mbed.h"

#include "SDFileSystem.h"

//SDFileSystem name(mosi, miso, sck, cs, mount);

SDFileSystem sd( dp2, dp1, dp6, dp4, "sd");

Serial ycon(USBTX, USBRX);

int main() {

ycon.baud(115200); //通信速度をY-CONのビットレートに設定する

FILE *fp = fopen("/sd/test.bmp", "r"); //ファイルを開く

if(fp != NULL) {

int data;

while (1){  //ループ

data = fgetc(fp); //1バイト読み込む

if( data == EOF )   //ファイルの終わりかチェック

break;      //ファイルの終わりならばループを抜ける

ycon.putc((unsigned char)data);    //シリアルに1バイト送信

}

}

fclose(fp); //ファイルを閉じる

free(fp);   //解放

}

6.テスト

Y-CONを持っていないので、表示ができるかどうかの確認はできないため、送信内容をパソコンで受信して、データが正しく送信されているか確認します。

LPC1114とmbedねこちゃんを以下のように配線します。

  • LPC1114の15ピン ねこちゃんの緑の端子の14Rx
  • LPC1114の16ピン ねこちゃんの緑の端子の13Tx

パソコンのソフトはテラタームを使いました。テラタームの設定は以下の途中くらいを参考にしてください。

SDカードに適当なtest.bmpを保存して、SDカードスロットに刺します。

先ほど作ったプログラムをコンパイルします。エラーがなければ書き込み用のデータがダウンロードできるので、そのファイルをmbedドライブにコピーします。コピーが完了すれば、マイコンへの書き込みも完了します。


image

配線の全体像はこんな感じです。

mbedねこちゃんの赤いリセットボタンを押すと、プログラムが実行されtest.bmpの内容がパソコンに送信されます。テラタームでの受信結果はこんな感じになりました。


ycon08

バイナリのデータをテキスト表示しているのでめちゃめちゃになっていますが、最初の出だしが「BM...」 となっていてBMPファイルの識別子が表示されてます。ログをバイナリで保存して、元のファイルと内容が同じかどうか確認してみました。


ycon07

左がSDに入っていたファイルのデータ、右がテラタームで受信したデータです。ファイルの終わりまでピッタリ同じでした。

これでSDのBMPファイルの内容が、そのままシリアルに出力されていることが確認できました。

7.Y-CONとの配線

Y-CONとLPC1114との配線は最低限以下の3本が必要です。

  •  Y-CONのVCC  ブレッドボードの電源
  •  Y-CONのGND  ブレッドボードのGND
  •  Y-CONのRX  LPC1114の16番ピン

8.まとめ

mbedねこちゃん&LPC1114で、Y's Lab INC.のY-COMにbmpデータを表示できるかもしれないプログラムを作ってみました。もし動作を確認できましたらコメント頂けるとありがたいです。