「mbed」タグアーカイブ

MARY-OBとNucleo地震計

DSC03328
MARY-OBとNucleo地震計

先日のNucleo地震計にマルツの有機ELディスプレイMARY-OBを繋いでみた。

SPIとタイマー割り込みが相性が悪いらしく画面表示が乱れた。排他処理をして解決した。

乱れる表示画面
乱れる表示画面

MARMEX_OB基板OLEDライブラリを利用した。LPC1768用に作られているらしくそのままだとCompiler Error 35が出る。Nucleoで利用するにはmbedライブラリをupdateする必要があるらしい。

mbedライブラリをupdate
mbedライブラリをupdate

MARMEX_OB_oled.hの「#define MARMEX_OB_SPI_8BIT_MODE」を有効化してSPIの8ビットモードを利用する。表示する文字は16×16ピクセルに整形してスクリプトで文字列に変換する。

フォント
ビットマップ

ビットマップを文字列に変換するスクリプト

回路図
回路図

ソース
nucleoeq_maryob.cpp
fttfloat.c

Nucleo地震計

DSC03322
Nucleo地震計

とりあえず組み立て。

ソースはmbed地震計とほぼ同じ。ストロベリー・リナックスの有機ELディスプレイ はクリアな表示で快適だけどグラフィックを操るライブラリが見当たらない。GraphicOLEDも試したが要求と少し違う感じ。MARY-OBを使って大きな文字で「5強」とか表示したい。

部品:
有機ELディスプレイ
ADS1220
ADP150
KXR94-2050

回路図
回路図

ソース
nucleoeq.cpp
fttfloat.c

 

回転灯付き地震計 — 配線

回転灯付き地震計
回転灯付き地震計

配線した。リレーは秋月のソリッド・ステート・リレーで、問題なく動く。リレーがオフの間はほぼ発熱しないのでこのままプラスチックケースに入れても問題無いと思う。リレーは約2.2V(実測)以上でオンになるのでmbedのDigitalOutの3.3Vをそのまま出力すれば駆動できる。

次はプラスチックケースを削って収納する。

mbed地震計

mbed地震計
mbed地震計

完成した。

少しノイズがあるのでデジタル・アイソレータADuM5401も試したが効果は無かった。計測震度0.1程度なので支障は無いと思う。

起動後2147秒後にハングアップするバグに悩んだが、Timerが0x7fffffffでオバーフローしていた。

ユーザメモリ32kバイトでは足らないのでシステム用メモリも使用する。
http://mbed.org/users/okini3939/notebook/mbed256_memory/

char buf1[0x4000]; // 通常エリア
char buf2[0x4000] __attribute__((section(“AHBSRAM0”))); // USB用エリア
char buf3[0x4000] __attribute__((section(“AHBSRAM1”))); // Ethernet用エリア

回路図
回路図

ソース
mbed_lpc1768_eq.cpp
fftfloat.c

追記:
Timerがうまく動かないのでソースを修正した。

mbed LPC1768 — ADコンバータを接続する

ADS1220とmbed LPC1768
ADS1220とmbed LPC1768

mbedに先日使ったADS1220を接続する。mbedの入出力の電圧は分からなかったが、出力を測定すると3.3Vだったので入力も3.3Vと信じる。

windows環境においてusb経由でprintfなどの出力をモニタする場合はwindowsにシリアルポートドライバをインストールする。

ホーム→Communicating over USB Serial→Windows-serial-configuration→Download latest driverをダウンロード→インストール

spi.formatはADS1220のデータシートにSPI mode 1と書いてあるのでspi.format(8,1)とする。

pc.baudはデフォルトで9600bpsが設定されていて実際その速度で入出力される。モニタするには少し遅いので115200bpsなどに設定する。pc側も同じ速度にする必要がある。

ADS1220は待ち時間を入れないと正常に動かないので適度にwaitを入れる。実測で電源投入後に56ミリ秒、リセットコマンド後に16マイクロ秒以上waitを入れると正常に動いた。

DigitalInとSPIを同じピンに定義すると上書きされるらしく動かない。GPIOのレジスタを直接読み出すと動く。

シリアル出力は14バイトごとにpcに送られるらしい。断片を想定していない場合は、14バイトに整形して出力するか、受信側で整形する必要がある。

次にLCDを接続する。

ソース
mbed_lpc1768_adc1220.cpp

mbedで地震計を作りたい

mbedで地震計を作りたい。

先日作ったIntelGalileo地震計は入出力がボトルネックとなってハードウェアの性能が出し切れていない感じだった。mbedは高性能らしいので期待したい。秋月で売っていたmbed LPC1768で試す。

まず開発環境を登録する。

mbed.org→サインアップ→ボード接続→MBED.HTM開く

サンプルをビルドする。

home→Platforms→mbed LPC1768→ Hello World!→ Import program→ Compile→ファイルに保存→mbedドライブにコピー→ボードのリセットボタンを押す→LED点滅

次はADコンバータを接続する。

追記:しばらくするとメールアドレスの確認メールが届く。

あなたのmbedメールアドレスを確認してください

リンクをクリックしてログインするとメールアドレスが確認される。