2016年5月27日金曜日

【mbed】NUCLEO-F303K8でRTCを使う

NUCLEO-F303K8でSDカード扱おうとしたら”RTC error: LSE clock initialization failed.”とシリアルに表示された。
RTCの初期化に失敗したらしい。

調べてみると、mbedライブラリのデフォルトではLSEクロックを使用する。
(device.hの#define DEVICE_RTC_LSIが0)
NUCLEOボードのジャンパは購入時の状態ではX1が接続されていない。
上記回路図画像はSTM32 Nucleo-32 Schematics packの回路図(MB1180.pdf)より

RTCを使うための方法は2通り
①標準のmbedライブラリからmbed-devライブラリに変更して、mbed-dev\targets\hal\TARGET_STM\TARGET_STM32F3\TARGET_NUCLEO_F303K8\device.h
の #define DEVICE_RTC_LSIを1に書き換えて使う。
精度は落ちるがGPIO減らないしソルダジャンパしなくてもいいのでお手軽。

②ボードのSB5、SB7をソルダジャンパしてX1を接続。(動作確認していません)
その場合ピンPF0、PF1が使用できなくなるが精度は良いはず。

今回はSDカードの読み出しをやりたいため、ソフトで対応しました。

2016年5月17日火曜日

目覚まし時計をLEDシーリングライト連動にしてみた

赤外線リモコンでコントロールできるLEDシーリングライトをウチには取り付けています。それを目覚ましのブザーと連動させれば快適に起きられそうじゃん?と
なぜこの発想に至ったのかはお察し下さい・・・

まずは目覚まし時計のブザー信号の仕様確認から。
 (写真はすでに引き出し用の線をハンダ付けしています。撮るの忘れてた

 

恐らく圧電ブザー、片側の端子をGNDかVDDにつないで動作させてるだろうと予測。電池のマイナス端子でGNDを取り、オシロのプローブ当てると・・・

 

GNDとICの出力ピンにつながっているようです。逆起電圧出てるのでダイオードで制限して使うことにします。

 続いてLEDシーリングライトのリモコン信号解析
以前会社の寮でON・OFFタイマがついていないエアコンのコントロールをmbedでやっていたことがあるので、同じライブラリで信号を読み取ることに。
実用ライブラリシリーズ:赤外線送受信ライブラリ

さくっとブレボに受信用ICやら赤外線LEDを組んで試してみて・・・あれ?
アイリスオーヤマのリモコンですが、SONYフォーマットで、どのボタン押しても同じコードが表示される・・・。まさか・・・!ロジアナで確認してみると・・・

_人人人人人人人人_
> 独自フォーマット <
 ̄Y^Y^Y^Y^Y^Y^Y^YY ̄
ロジアナでパルス幅取るのもいいけど、ここはmbedで楽することに。パルス幅の時間を取得するプログラムが公開されていました。これなら独自フォーマットでも対応できますね。
リモコンの信号の取得
こちらのサイトをソースを少し改変。1sec経過で新規信号扱い(ターミナルで改行するだけ)、1フレーム目の時間が最後に受信したパルス~新規で受信したパルス間の時間になっているのを修正しました。
IRreceiver_PulseWidth

取得したパルス時間を送信用プログラムにコピペ。
取得したリモコン信号の送信 

IR_LED_Send

動作テスト

使ってみて数日ですが、ブザーで起きたのち眩しいので2度寝する気がなくなり、いい感じです。
朝弱い方はぜひお試し下さい

 回路図はこちら
マイコン基板にみんなのラボのLPC812 300mil board使いました。
なぜそれをって?積んでたからデスヨ