image
こんにちはコハペペです。YouTubeのチャンネル電子ペーパーの投稿で、mbedねこちゃんでY's Lab INC.のY-CONに画像を表示したいという方がおられたので、おためしのプログラムを作ってみました。制作過程を順を追って書いてみました。参考にして頂ければ幸いです。
しかしながら、このモジュールは持っていないため、実際に動作するかは未確認なところご了承ください。
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データを表示できるかもしれないプログラムを作ってみました。もし動作を確認できましたらコメント頂けるとありがたいです。

今回作ったプログラムはこちらよりインポートできます。


関連投稿リンク



スポンサードリンク