2012/12/31

iPhoneのアラームに連動して部屋の明かりを点ける装置

 朝が早いと、起きるのが大変ですよね。起きる時に部屋が明るくなったら、目が覚めると思いませんか?

 そこで、iPhoneのアラームが鳴ると、部屋の明かりがつく装置(iPhone 4Sのみ対応)を作りました。

Maker Faire Tokyo 2012 に行ってきました

12月1~2日に開催された,Maker Faire Tokyo 2012に行ってきました。
今更ですが行ってきたレポート。
水道橋重工の4脚ロボット「クラタス」
動いてるところが見れず残念...
会場が日本科学未来館になって、ちょっと狭くなったかも?通路が狭くて移動しにくかったのが残念...
今回のお目当ては3Dプリンタ!実物や印刷物を見てきました。

2012/11/27

I2CキャラクタLCDを使ってみる

秋月電子通商の『I2C接続キャラクタLCDモジュール[16x2行]』を使ってみました。
通常のLCD基板上にマイコンが追加されており,I2C接続で通信ができます。
I2C通信に初挑戦です!
I2C接続キャラクタLCDモジュール[16x2行]
(丸ピンソケット取付後)

2012/10/20

HEWでprintfを使えるようにする(追記情報)

HEWでprintfを使えるようにする」が人気(?)のようなので,ちょっと追記情報といいますか,使っていて気づいた注意点です。

具体的には,printfの文字列送信にかかる時間と受信エラーの処理についてです。

ターゲットマイコンは,これまで同様SH7125,HEWとコンパイラパッケージは,

  • C/C++ compiler package for SuperH RISC engine family V.9.04 Release 01
  • High-performance Embedded Workshop Upgrade 4.09.01

です。まあ前回とほとんど変わってないんですが,念のため。

2012/09/01

ロボット掃除機を分解してみた

以前紹介した,ロボット掃除機を分解してみました。

ロボットクリーナーミニAIM-ROBO2

2012/08/30

Make: Ogaki Meeting 2012 に行ってきました

ものづくり系のイベント,Make: Ogaki Meeting 2012に行ってきました。
Make: とは・・・

Make: はモノづくりを行なっている個人、教育機関、企業のMaker(作り手)の発表と交流の場です。最新の技術や斬新なアイデア、ノウハウを交換しあうだけではなく、モノづくりの素晴らしさや楽しさを家族連れや子供たちにも楽しんでいただけるイベントです。Make: Ogaki Meeting HPより)

2010年に続いて2回目の開催で,岐阜県大垣市のソフトピアジャパンセンターで開催されました。Make Tokyo Meetingと比べると規模は小さいですが,色々な展示があって楽しむことができました。 そしてなにより,ものづくりが好きな人たちと交流できるのが良いです:-)

気になった展示をちょっと紹介します。

Kimio KosakaさんのBottled Circuit
ボトルシップならぬボトル回路(?)。組み立ての様子や,工具の展示をされていました。
オリジナルの工具・治具の他に,手術器具も使っているそうです。

ハラダナオキさんのマーブルマシン
ボールがひたすら動き続ける様子は,YouTubeでも見ることができます。
他にも,LEDバッジやノイズシンセを展示されていました。

ユニバ株式会社のロボット
カメラに映った動くものに自動で照準を合わせます。
この展示はおまけだったらしいのですが,俊敏な動きで人を集めていました。

プロジェクト軽井沢さんのスゴ涼
(恐らく)世界初のオープンソースウェラブル扇風機なるものを展示していました。
首の後ろに着けると,服のスキマに風を送ってくれます。使ってみると割と涼しい!

Androidロボットサミットin大垣さんのロボットアーム
Androidのカメラでタグのついたブロックを認識し,アームでつかんで運びます。
画像認識からアームの制御まで,すべてAndroid端末で行っています。 

デイリーポータルZさんのしょうゆかけすぎ機
あなたがしょうゆをかけようとすると,100%かけすぎを補助してくれます・・・
こういう斜め上の発想,個人的にはけっこう好きです:)

Kohsuke’s Lab.さんのプチプチつぶし機
プチプチをセットすると,1つ1つ丁寧につぶしてくれます。
なんとCVT搭載(!)で,プチプチの送り量を無段階で調整できます。

株式会社ホットプロシードの3Dプリンタ(Blade-1)
フィギュアをプリントするデモを行っていました。

FET電気研究室さんのテスラコイル
写真は小型のもので,人の身長くらいある大型のものも展示されていました。
電球を近づけるとぼんやりと発光する様子が幻想的でした。

Maker Botの3Dプリンタ(MakerBot Replicator)
アクセサリの部品をプリントしていました。
かなり細かい造形もできるようで,驚きです。

その他の写真は↓からどうぞ(手ブレも多いですが^^;)。



それでは。

2012/08/17

新しい置時計


先日,中古ゲームを探しにハードオフ行ったんですよ。ハードオフ。
それでせっかくなので,店の中をぐるぐる見て周ってたら・・・なんとニキシー管を使った置時計を発見!ジャンクじゃなくて中古。いやそれより,ハードオフで売ってることにびっくりです。

商品の説明には,「日立のニキシー管を使った時計です」とだけ・・・。ショーケースに入っていたので,店員さんにお願いしてよく見せてもらうことに。電源を入れてもらうと,オレンジ色の光で数字が点灯。おお,実物を初めて見た!

ここまでテンション上がりっぱなし。これは欲しい!いやでもちょっと高いしなあ・・・と最後の理性と戦っていると,店員さんから援護射撃が。

店員:「国産のニキシー管はめずらしいですよ」
私:「(よく知らないけどそんな気もする!)そうですよね。これください」

というわけで,念願の卓上置時計を手に入れたぞ!
正面。数字6桁とドットが2つ。横幅は約160mm。
背面。ニキシー管の背面に日立のロゴと「CD81 JAPAN」の文字が。
側面。ロゴも何も印字されていません。
点灯!数字の表示が少しちらつきます。コンセントのノイズが乗ってるのかも?
ちょっと暗いところで...
点灯している様子


どこのメーカのものか気になって調べてみたのですが,結局わからず。本体に何も印字がなく,作りもちょっと粗い(アルミの加工後のバリが残っていたりする)ので,誰かがキットを組み立ててケースに入れたものなのかもしれません。ほこりの侵入が心配なので,良いケースを探さないと・・・

それでは。

2012/07/28

電源装置の製作-その2(完成)

電源装置製作の続き。今回で完成です。

今回は,電源の回路を作って,前回作ったケースに入れます。
ベースの回路は秋月電子通商の大容量出力可変安定化電源キットで,ケースに入れるためにコンデンサを横に寝かしたり,出力電圧のレンジを変えやすいようにDIPスイッチを追加したりしました。コンデンサの配線は,できれば伸ばさないほうがよいですが,出力電流は1 A以下と小さいので問題ないと判断しました。
電源の回路
 回路をケースに取り付けた様子↓。コンデンサの位置が悪くてヒートシンクに近くなってしまいましたが,発熱も少ないはずので(多分)大丈夫でしょう^^;。
回路をケースに搭載
 フロントパネルのスイッチや端子,計器と配線します。
フロントパネルの部品との配線
 100円ショップで買った両面テープ付きの滑り止めを小さく切って,ゴム足代わりにしました。
滑り止めの取付
完成です!
工作機械を一度も使わなかった割には,きれいに仕上がったと思います。
手間暇かけた甲斐がありました:)
フロントビュー
リアビュー 
12~16 VのセンタープラスのACアダプタを繋げば,ツマミで出力電圧を可変できます。
動作確認のため,模型用のモータを回してみました。電流もきちんと計ることができました。
モータを回してみた
ちなみに,右側の出力端子にはACアダプタの電圧が直接出力されるようにしたのですが,電圧と電流をメーターに表示できません^^;
メーターの表示先をスイッチで切り替えるようにしようかと思いましたが,それはまた,他の機会にということで・・・。

それでは。

2012/07/23

電源装置の製作-その1

電源装置は,電子工作をする上で必須の道具です。せっかくなので,自分の用途にあったものを手作りすることにしました。しばらく工作から離れていたので,そのリハビリも兼ねて一石二鳥です。
My電源装置の仕様は次のようにしました。

  • 出力電圧:3~12 V可変
  • 出力電流:約1 A
  • 小型(←狭い机の上で作業するので,なるべく小さく)
  • 安価(←重要!精度はそこそこで良い)
  • 電圧と電流とを計測可

また,机の上で使うことが多いので,フロントパネルを斜めにして,視認性の向上を狙うことにしました。
小容量の電源で良いので,回路構成は,スイッチングアダプタ+可変3端子レギュレータにしました。
とりあえず,それっぽい部品を買ってみます。ほどんどは秋月電子通商で,端子台とロッカースイッチは大須で購入。
回路の部品
部品がそろったら,採寸して,部品のレイアウトを考えます。
部品のレイアウトとケース検討
ケースはMDF板で作ることにしました。カッターやピンバイスでも加工がしやすく,安価なことが魅力です。クリップボードに使われている3 mm厚のMDF板を使います。ついでに塗料と足の代わりになるものを買っておきます。
100円ショップで買ったMDF板その他
ケースの部品図を1:1で印刷します。
1:1で印刷した部品図
印刷した紙をMDF板にノリで貼り付けます。スティックノリを薄く塗っておくと,後できれいにはがせます。
部品図をMDF板に貼る
線に沿って加工します。カッターとピンバイスしか持ってないので,切断だけで3時間くらいかかりました・・・。改善案を考えねば。
加工!
加工した部品をホットボンド(グルーガン?)で仮止めして様子を見ます。ぴったり合わないところは,ヤスリやカッターで切って調整します。
ここで気づいたのですが,スイッチングレギュレータのプラグを挿す穴を忘れてました・・・。修正した後,部品を瞬間接着剤で完全に固定します。
切った部品をホットボンドで仮止め
フロントパネル固定のための,樹脂スペーサを四隅に固定,ヤスリで全体を仕上げます。
瞬間接着剤で固定した後,ヤスリで仕上げ
塗装をして、
塗装
仮組した様子。
箱完成
フロントパネルの部品だけつけてみました。ぴったり収まって,割と満足です:)。
フロントパネルの部品だけつけた様子
フロントパネルを本体に固定する工夫は,下の写真のようにしました。メンテナンスが必要なときに,すぐにフロントパネルを外せます。
プラのスペーサを使って,フロントパネルをねじで取り外し可能な構造に
今回はここまで。次は中身の回路を作ります。
(小型ロボットもやらないと^^;)
それでは。

2012/07/20

ロボット掃除機を使ってみる

ちょっと前に,後輩から掃除ロボットを貰いました。今まで放置してたのですが,ためしに動かしてみることに。
ツカモトエイム販売の自走式掃除機 ロボットクリーナーミニAIM-ROBO2
なにゆえこのデザインを選んだのか・・・他はなかったのでしょうか(プレゼントは嬉しいけど)。ロボットクリーナーミニ。残念ながらルンバではないです。
そういえば,去年くらいからルンバのCMが放送されるようになって,驚いたというか,ちょっと嬉しかったのを覚えています。Wikipediaさんによると,ルンバの販売は2002年(10年前!)で,その後の改良を経て,現在は3世代目のようです。色々な改良があって,CMをやるまでになったんでしょうね。

話が逸れましたが,頂きもののロボットクリーナーさんは破格のお値段ですので,性能もまあ相応です。電池はニッケル水素。搭載しているセンサは,フロントバンパのタッチセンサ1つ,落下防止の赤外線センサ3つのみ。家具や壁に割と豪快にアタックしていきます。


うまくカメラに入ってくれません・・・(照れ屋さんですね^^;)。電源を入れた直後は,ひたすら直進し,バンパに物が当たると旋回します。しばらく放置すると,らせん運動をはじめ,またしばらくすると直進動作にもどります。
動きは多少頼りないですが,吸引力は割とあって,ホコリやらなんやらを集めてくれました。時間のあるときにハックして,タイマー機能とかを付ければ,割と実用的になるかもしれません。

それでは。

2012/06/12

大学ロボコン観戦・その他

観戦ハガキが当たったので,NHK大学ロボコンを観に行ってきました。
当日は天気もよく,絶好のロボコン日和(?)でした。
今年のテーマは「平安大吉(ペンオンダイガ)」
といっても,番組放送前なので,会場の写真や試合結果などは紹介できないのです・・・残念。
一応,NHK公式Twitterでは,東京大学が優勝したことだけが公開されています。

追記:NHK公式ページで試合結果を見ることができます。

今年は全体的にロボットの完成度が高く,見どころの多い大会だったと思います。
オムニホイールを使った自動ロボットなんかも出たりして,技術の高さを感じました。

大会の様子は,7月1日17時より,NHK総合テレビで放送されます。是非ご覧ください。

なんか番宣だけになってしまいましたが・・・
それでは。

2012/05/20

HEWでprintfを使えるようにする・続(scanfを使ってみる)

「HEWでprintfを使えるようにする」で,せっかくgetcharを作ったのに,scanfが使えるか試していませんでした^^;下表のようなプログラムで試してみると,問題なく動作してくれました:)
void main(void)
{
    int a;
    double b;


    printf("input int data->",0);
    scanf("%d",&a);
    printf("%d\r\n",a);
    printf("input float data->",0);
    scanf("%lf",&b);
    printf("%lf\r\n",b);
}

下図は,プログラム実行後に「123」「3.1415926」と入力した結果です。
整数はそのまま表示され,小数は最後の桁が四捨五入されました。これは,printfのデフォルトの設定によるものです。桁数を指定したい場合は,通常のprintfと同様の記述が使えます(%6.4lf など)。
scanfの実行結果
今日はこれだけです。ちょっと手抜き感がありますが^^;

それでは。

2012/05/19

小型オシロスコープ(DSO Quad)購入

少し前に発売され,話題になった(らしい)小型オシロスコープ,DSO Quadを購入しました。
ついにオシロも個人持ち!テンション上がります。
届いたDSO Quadの外箱
アナログ2ch,デジタル2ch,波形生成機能付きで19,900円!
帯域幅が狭かったり,入力インピーダンスが小さかったりと,値段相応の品質ですが,ホビーで使うには十分だと思います。
セット内容
セット内容は,本体,リチウム電池,アナログ用プローブ2本,デジタル用プローブ2本,簡単なマニュアル(英語)です。(電池の充電およびPCとの通信にはUSBケーブルが必要ですが,セットには含まれていません^^;)リチウム電池はなぜか自分で取り付ける仕様です。
電池のケーブルがほんの少し短く,仕方なく逆向きで取り付けました。
リチウム電池を取り付け
この後,ファームウェアのアップデート,プローブの補正,GNDのキャリブレーションを行い,ひとまず使える状態になりました。
このオシロの面白いところは,回路図やプログラムが公開されている点です。純正ファームウェア以外にも,有志の方々が作成したファームウェアが存在しており,FFT機能などを追加できるようです。基本の機能に飽きてきたら,試してみようと思います。

それでは。

2012/05/13

HEWでprintfを使えるようにする

今回は,printfの実装を行いました。
プログラムでprintfといえば,画面に文字や変数の値を表示することが多いですが,マイコンの場合はシリアル通信でPCなどにデータを送るようにします。ターミナルソフトでこのデータを見れば,デバッグに使えるわけです。
(SHには,便利なエミュレータやデバッガがあるらしい?のですが,私は未だにprintfデバッグです^^;)

これまでは自作のprintfを使っていたのですが,今回はHEWのstdio.hで最初から定義されているprintfを使うことにしました。Renesas純正ですから,きっとSH向けに最適化されているだろうと期待してみたり。
プログラム中...
RenesasのFAQユーザーズマニュアルC/C++コンパイラ,アセンブラ,最適化リンケージエディタ ユーザーズマニュアル,p.168あたり)を読みながら格闘すること早半日・・・なんとか実装できました。以下に手順を示します。

なお,HEWとコンパイラパッケージのバージョンは,
  • C/C++ compiler package for SuperH RISC engine family V.9.02 Release 00 (Evaluation Version)
  • High-performance Embedded Workshop Upgrade 4.09.00
ターゲットマイコンはSH7125です。

1.新規ワークスペース作成

まず,HEWの「ファイル」-「新規ワークスペース」から新しいワークスペースを作成します。生成ファイルの設定画面で,「I/Oライブラリ使用」にチェックを入れてください。これによって,標準入出力に必要な関数のほとんどをHEWが用意してくれます。また,「ハードウェアセットアップ関数生成」で「C/C++ source file」を指定すると,パワーオンリセット後のI/Oの初期化関数(HardwareSetup関数)の雛形を生成してくれます。
「I/Oライブラリ使用」にチェック,「ハードウェアセットアップ関数生成」は「C/C++ source file」を指定

2.シリアル通信のための関数作成

ワークスペースができたら,プロジェクトから「lowsrc.src」を削除します。このファイルには,デバッガ用の低水準入出力関数「charget」と「charput」が記述されています。従って,この「charget」と「charput」をシリアル通信の関数に置き換えれば,シリアルポートに対してprintfが使えるようになります。今回作成した関数を下表に示します。割り込みは使わない,最も単純なものです。シリアル通信の初期化関数(sio_init)も作成します。

void sio_init(void){
    STB.CR3.BIT._SCI1=0; // SCIスタンバイ解除
    SCI1.SCSCR.BYTE=0x00; // 送受信割り込み禁止、送受信禁止
    PFC.PACRL1.BYTE.H=0x10; // PA3をRXD1に設定
    PFC.PACRL2.BYTE.L=0x01; // PA4をTXD1に設定
    SCI1.SCSMR.BYTE=0x00; // 通信フォーマット、クロックソースを選択
    SCI1.SCBRR=19; // ビットレート BRR=(25000000[Hz]/(32*38400[bps])) - 1 => 19
    SCI1.SCSCR.BIT.TE=1;   // トランスミットイネーブル:送信動作を許可
    SCI1.SCSCR.BIT.RE=1;   // レシーブイネーブル:受信動作を許可
}

void charput(char c){
    while (SCI1.SCSSR.BIT.TDRE==0);
    SCI1.SCSSR.BIT.TDRE=0;
    SCI1.SCTDR=c;
}

char charget(void){
    char c;
    while ((SCI1.SCSSR.BYTE & 0x40)==0);
    c=SCI1.SCRDR;
    SCI1.SCSSR.BYTE=SCI1.SCSSR.BYTE & 0xBF;
    return(c);
}

追記(2012/10/26):↑のcharget()はエラー処理を省略しており,受信エラー発生時に無限ループになってしまいます。常にデータが送られてくるような用途では,エラー処理を追加することをオススメします。修正版のchargetはこちら

3.シリアル通信初期化関数の呼び出し設定

パワーオンリセット後に,シリアル通信の初期化関数が呼ばれるように設定します。「ハードウェアセットアップ関数生成」を指示しておくと,「hwsetup.c」というファイルが生成され,その中に「HardwareSetup」関数があります。この関数が,パワーオンリセット後に自動的に呼ばれますので,この中でシリアル通信の初期化関数を呼び出すよう変更します。

追記(2012/8/30):sio_init()は,printfを使う前ならば,どこで呼び出してもよいです。HardwareSetup以外でも,mainでもOKです。(HardwareSetupはmainより前に実行されるため,ここに初期化処理をまとめておくと便利です

void HardwareSetup(void)
{
    sio_init();
}

4.完成!

以上で設定は完了です。これで,思う存分にprintfできます。例えば,下表のようにすると・・・

void main(void)
{
    int a=1;
    double b=1;

    a+=1;
    b=3.141592;

    printf("abcdefghijklmnopqrstuvwxyz\r\n",0);
    printf("%d\r\n",a);
    printf("%lf\r\n",b);
}

こんな感じ↓で出力されます。
使ってみて気付いたのですが,このprintfは必ず第二引数まで指定しなければならないようです。
文字列のみをprintfする場合,上の表のように,第二引数に適当な値を指定してください。(第二引数を指定しないと何も出力されません)
TeraTermで確認した結果
手順さえ分かってしまえば,割と簡単にprintfを使えるようになります。ぜひ試してみてください。

余談ですが,現在のプログラムサイズは21.6 kByteでした。SH7125のROMは128 kByteなので,既に20%弱を使ってしまっています。
もう少し削りたいところですね。

それでは-~)ノ~~

2012/05/02

大学ロボコンの観覧応募

今年もNHK大学ロボコンが近づいてきましたね。
NHKのHPで,観覧募集の告知が出ています。


今年も申し込んでみましたが,どうか当たりますように八(^□^*)

そういえば,高専ロボコンのルールも発表されましたね。
今年のテーマは「ベスト・ペット」です。


今年はなんと,コントローラなしで競技が行われるようです!
自動ロボットのみの大会になるってことでしょうか・・・胸熱ですね!
去年みたいに,大会の様子をストリーム配信してくれることを願ってます。

大学ロボコンのHPもリニューアルしてくれればいいのに・・・
リニューアルされたみたいです^^;


それでは-~)ノ~~

2012/04/22

レベル変換IC内蔵シリアル通信ケーブル

ロボットの製作が進んでいないので,ちょっと小ネタ。
昔に作った,シリアル通信ケーブルを紹介します。

マイコンとPCとでRS232C通信をする場合,ADM3202等のレベル変換ICが必要です。
基板を作るたびにレベル変換ICを載せなくてもいいように,レベル変換ICを内蔵した通信ケーブルを作りました。

見た目はこんな↓感じ。
PC側はD-Sub9ピンのメスコネクタが,マイコン側はピンソケット(Tx,Rx,Vcc,GND)が付いています。
レベル変換IC内蔵シリアル通信ケーブル
コネクタ部分の中には,ADM3202と,動作に必要なコンデンサが入ってます。
ICの足を短く切って,コンデンサと配線とを直接ハンダ付けしました。だいぶ無理やりです^^;
コネクタの中身
次こそは,頑張ってプログラミングしたいと思います。。。

2012/03/21

小形ロボットの製作(ハード3)

今回は,ロータリーエンコーダの回路の調整をします。

モータを回して,エンコーダに使用したフォトセンサの出力を見ると,下図のようになります。
フォトセンサの出力(モータを単三電池1本で回した場合)
2個のフォトセンサを少しずらして配置することで,位相が約90°ずれた2相の信号を得ることができています。上の図ではCH2の信号のほうが,位相が進んでいますが,モータの回転方向を逆にすると,CH1のほうが進みます。

この信号をパルス状にするために,オペアンプを使った波形整形回路を使います。
オペアンプを使った波形整形回路
フォトセンサの出力と,可変抵抗で作った基準電圧とを比較することで,フォトセンサの出力をパルス状に整形します。可変抵抗で基準電圧を調整し,Duty比が約50%になるようにしました。
波形整形回路の出力
簡単な回路ですが,うまく動いてくれました:)
これでロータリーエンコーダが使えるようになりました。

これで,ハードの製作はひと段落です。
次回からは,プログラミングをしていきます。