自動車のバッテリーが上がってしまいました

室内灯をつけっぱなしにしたせいで、バッテリーが上がったので、急遽、簡易型の充電器を制作して一晩充電し、事なきを得ました。

作品集に載せてあります。

前回バッテリー交換してからたぶん5年近く交換してないので、室内灯を24時間つけておいたくらいでやられるとは、そろそろ寿命かな?

でも、定期メンテで交換した気もするので、記録を確かめねば。


室内灯を LED に交換すれば消し忘れてもダメージは少ないかも。

室内灯の消し忘れって多いんだから、もっとインテリジェントにはならないものかね?一定時間で自動消灯とか、電圧低下時は点灯しないようにするとか。高級車なら対策済みかな?

ゴールデンウィーク中にいろいろ作った&整理した

昨年、「大人の科学」のArduinoで遊んでみたのを皮切りに、秋月電子やDX.comで電子部品やユニットを買い始めた。

そして、小3の子供に「一緒にロボットを作ろう」と約束したこでが、本格的に電子工作を再開する決心をした。また、情報を伝達するためにこのサイトを開設した。

今回のGW期間中に、28年ぶり?に電子工作の部品箱をひっくり返し、一斉に整理した。

驚いたのは、30年も昔の部品でも、わりときちんと使えるということです。電子パーツは外観上はほとんど変化なし。錫メッキ銅線なんてピカピカのまま。電解コンデンサだけは信用できないと思うので、なるべく古いものは避けようと考えています (DX.com で電解コンデンサのパーツセット注文した)。

また、カーステレオにつなぐ Bluetooth アダプタを作成して車に装着し、数年前に秋月で衝動買いした USB DAC & パワーアンプの基板に改造を施してケースに入れて USB オーディオアンプを完成させ、DX.com で購入したファンクションジェネレータを単3電池2本で動くようにしてケースに収め (まだ未完成)、キットで作った 2-way スピーカーのフロントグリルカバーを木枠+サランネットで作成した。

いろいろできて満足です。

この勢いを止めないように頑張りたいと思います。

mbed LPC1114FN28 始めてみた

ファームウェアアップデートした

インターフェースチップのファームウェアのバージョンは、mbed.htmをテキストエディタ等で開くことで確認できます。

最新のファームウェアとWindowsでのファームウェアのアップデート手順はmbed.orgのwikiをご覧ください。 
mbed LPC1114FN28のファームウェアの更新方法(英語)

ISP ボタンを押しながら USB 接続すると、通常の mbed drive ではなく "CRP DISABLED" drive が出現するので、古いファイルを消去して、そこにダウンロードしておいた最新のファームウェアをコピーする。

ファイル名を変更する必要なし。

本日コピーしたのは build 20150206 だが、何が変わったのかは未確認。

安全のため、Windows から右クリックで取り外ししようとしたがエラーとなった。仕方ないのでいきなり抜いた。

今度は何も押さずに USB 接続すると、通常の mbed drive が出現。めでたくアップデート完了した。



まずは Lチカ

mbed サイトで compiler を開くと、デフォルトでLチカのソースが展開されるので、それをコンパイルして MBED drive にコピー。

コピー終了後に、Explorer のウィンドウが閉じるので、再度開くと先程のファイルは見えなくなっている。

要するに、ほにゃらら.bin をコピーすると、それがプログラムとして認識され、すでに書き込まれている以前のプログラムは消去される。すなわち、「ほにゃらら」の部分は何でも良い。

mbed コンソールでプロジェクトに応じて名前を付け、そのまま変更せずにコピーでよろしい。

ソースをみると、

DigitalOut myled(LED1);

とある。

ピン LED1 を myled という名のデジタル出力に設定する、という意味(に違いない)。

おそらく、LED1 は dp14 という名前の上書きと思えるので、ちょっと試してみる。

#include "mbed.h"


DigitalOut myled(dp14);


int main() {

    while(1) {

        myled = 1;

        wait(0.1);

        myled = 0;

        wait(0.1);

    }

}


はたして、全く同じ動作でした。

要するに、標準の mbed ボードにはもともと LED が2つついているんですね。

だから端子に別名が付けられている。


圧電スピーカを鳴らしてみた

今度は圧電スピーカを繋いで音を出してみた。

#define mC 261.626

#define mD 293.665

#define mE 329.628

#define mF 349.228

#define mG 391.995

#define mA 440.000

#define mB 493.883

 

#include "mbed.h"

 

DigitalOut sp1(dp14);

Ticker timer;

 

int oto=0;

 

void tick(void)

{

    sp1.write(oto);

    oto=!oto;

}

 

int main() {

    float mm[]={mC,mD,mE,mF,mG,mA,mB,mC*2};

    int i;

    for (i=0;i<sizeof(mm);i++) {

        timer.attach(&tick,1.0/mm[i]/2.0);

        wait(0.5f);

    }

    timer.detach();

    while(1);

}

成功。簡単でした。

リファレンスはやはり書籍で手に入れないと、オンラインでみるのは疲れる。


超音波距離センサ試してみた

mbed console から、Import で HCSR04 (DX で購入したセンサ) を探したところ、まさに HCSR04 というライブラリがあったのでインポート。

Author の記載したページ (http://developer.mbed.org/users/prabhuvd/code/HCSR04/)

に参考プログラムがあるのでこれをコピペしてみた。

LCD を持ってないので、距離を音程に変換試みた。

...鳴らず。失敗。

 

#include "mbed.h"

#include "hcsr04.h"


HCSR04 usensor(dp25, dp26); // (TRIGGER, ECHO)

DigitalOut sp1(dp14);

Ticker timer;

 

int oto=0;

float dist;

 

void tick(void)

{

    sp1.write(oto);

    oto=!oto;

}

 

int main() {

    wait(1.0); // 1 sec  


    while(1) {

        usensor.start();

        dist = (float)usensor.get_dist_cm() * 10.0; // mm

        

         if ((dist > 100) & (dist < 1000)){

            timer.attach(&tick,1.0/dist/2.0);

            wait(0.1);

        }

    }

    timer.detach();

}

 

原因は? そもそも、3.3V しか繋がってないのでセンサーが動作してないのだろう。

mbed LPC1114FN28 は 3.3V 動作なので、端子には 3.3V しか出ていない。

ちょっと改造して、USB の 5V を引き出せるようにピンヘッダを付けることにしよう。

GPIO pin は 5V tolerant だそうで。壊れる心配はなさそう (ADC 入力は VCC 以上入れると壊れるそうな)。

あと、LCD モジュールも購入しよう。

今日はここまで。