« 2015年5月 | トップページ | 2015年7月 »

FlashAirを使ったラジコンカーのデモ動画

FlashAirを使ったラジコンの動画の編集できたのでアップ。

| | コメント (0) | トラックバック (0)

FlashAirを使ってブラウザで車を操作してみた。

FlashAirを使ったラジコンカーを作ったので、WiFi接続で動かすためのJavascriptを作る。

画面上に9つのボタンを配置して、十字ボタンは[前進]、[後進]、[ターン右]、[ターン左]に割り当てる。
残りは音を鳴らすボタンにした。

HTML5では動画、音声のデコードをブラウザ側で持っているので、再生タグが使えるのでこれを使わない手はない。
手元のスマホとかタブレットで音がなるのである!。
Bluetoothで同様のおもちゃがあるけれど、これはそれの発展型。
音や動画が手元から流れるのでした。

んで音のデータはMP3ファイルをFlashAir内の任意のフォルダー(例の場合FlashAirに設けた"/data"フォルダ下)に保存して、ボタン押しのイベントでそれを読み出してWiFi越しで再生するように仕掛ける。
ボタンの押すイベントに諸々の処理を施して完成〜♪。

後は実際に動かしている動画を撮るかな〜。
つーことでまた続く。w



【FlashAirを使ったWiFiラジコンカー 操作JavaScript ソース】
(HTML5を使ったScript等はその手の解説サイトを見てもらえれば分かってもらえると思います。)

<html>
<head>
<meta charset="UTF-8">
<title>FlashAir Car Remote Control</title>
</head>
<script language="javascript" type="text/javascript">
<!--
//関数:FlashAirに対してHTTP通信 GETをする
function flashair_get( param ){
var request = new XMLHttpRequest();
request.open("GET", param, false);
request.send(null);
//通信結果
document.getElementById('RESULT').value = (request.responseText+"\r\n");
}
//関数:ロード時実行
function onLoad(){
get_version(); //最初にFlashAirのバージョン取得
gpio_off(); //んで、各ポートをオフにする
}
//関数:バージョン表示
function get_version(){
var ver = "http://flashair/command.cgi?op=108";
var request = new XMLHttpRequest();
request.open("GET", ver, false);
request.send(null);
document.getElementById('VERSION').value = (request.responseText);
}
//関数:GPIOポートをすべてLow
function gpio_off(){
var url = "http://flashair/command.cgi?op=190&CTRL=0x1f&DATA=0x00";
flashair_get(url);
p = 0x00;
}
//関数:任意のポートをHigh/Lowにする
var send_mess = "http://flashair/command.cgi?op=190&CTRL=0x1f&DATA=0x";
var p = 0x00;
function gpio_remo(port){
switch( port ){
case -1: //SE1
var sound2 = document.getElementById('se1');
sound2.play();
break;
case -2: //SE2
var sound3 = document.getElementById('se2');
sound3.play();
break;
case -3: //SE3
var sound4 = document.getElementById('se3');
sound4.play();
break;
case -4: //SE4
var sound5 = document.getElementById('se4');
sound5.play();
break;
case 1: //[↑]前進
gpio_off();
p |= (0x04+0x08); //D1+D2
url = send_mess + p.toString(16);
flashair_get(url);
//BGM スタート
var sound1 = document.getElementById('bgm2');
sound1.play();
break;
case 2: //[<○]左旋回
gpio_off();
p |= (0x02|0x08); //D0+D2
url = send_mess + p.toString(16);
flashair_get(url);
break;
case 3: //[■]停止
gpio_off(); //All Off
break;
case 4: //[○>]右旋回
gpio_off();
p |= (0x04+0x01); //D1+CMD
url = send_mess + p.toString(16);
flashair_get(url);
break;
case 5: //[↓]後進
gpio_off();
p |= (0x02|0x01); //D0+CMD
url = send_mess + p.toString(16);
flashair_get(url);
break;
}
}
// -->
</script>
<AUDIO id="bgm1"><source SRC="/data/audio/MarchDrums.mp3"></AUDIO>
<AUDIO id="bgm2"><source SRC="/data/audio/And I Love Car.mp3"></AUDIO>
<AUDIO id="se0"><source SRC="/data/audio/gun.mp3"></AUDIO>
<AUDIO id="se1"><source SRC="/data/audio/qq.mp3"></AUDIO>
<AUDIO id="se2"><source SRC="/data/audio/bike.mp3"></AUDIO>
<AUDIO id="se3"><source SRC="/data/audio/kuraku02.mp3"></AUDIO>
<AUDIO id="se4"><source SRC="/data/audio/kuraku01.mp3"></AUDIO>
<AUDIO id="se5"><source SRC="/data/audio/r2d2-5.mp3"></AUDIO>
<AUDIO id="se6"><source SRC="/data/audio/r2d2-6.mp3"></AUDIO>
<AUDIO id="se7"><source SRC="/data/audio/r2d2-7.mp3"></AUDIO>
<AUDIO id="bgm3"><source SRC="/data/audio/Star Wars.mp3"></AUDIO>
<!-- ロードされたとき、ポートを全てOFFする -->
<body onLoad="onLoad()" style="background-image: url(/data/pic/car.jpg);">
<p><input type="text" id="VERSION" value="FlashAir Version=" style="width:450px"></p>
<P>FlashAir GPIO スイッチ</P>

<form>
<FIELDSET>
<LEGEND>リモコン</LEGEND>
<table>
<tr>
<td width="160" hight="160">
<input type="button" value="♪1" onclick="gpio_remo(-1)" style="WIDTH: 160px; HEIGHT: 160px;FONT-SIZE: 30px">
</td>
<td>
<input type="button" value="↑" onclick="gpio_remo(1)" style="WIDTH: 160px; HEIGHT: 160px;FONT-SIZE: 60px">
</td>
<td width="160" hight="160">
<input type="button" value="♪2" onclick="gpio_remo(-2)" style="WIDTH: 160px; HEIGHT: 160px;FONT-SIZE: 30px">
</td>
</tr>
<tr>
<td>
<input type="button" value="<○" onclick="gpio_remo(2)" style="WIDTH: 160px; HEIGHT: 160px;FONT-SIZE: 30px">
</td>
<td>
<input type="button" value="■" onclick="gpio_remo(3)" style="WIDTH: 160px; HEIGHT: 160px;FONT-SIZE: 60px">
</td>
<td>
<input type="button" value="○>" onclick="gpio_remo(4)" style="WIDTH: 160px; HEIGHT: 160px;FONT-SIZE: 30px">
</td>
</tr>
<tr>
<td width="160" hight="160">
<input type="button" value="♪3" onclick="gpio_remo(-3)" style="WIDTH: 160px; HEIGHT: 160px;FONT-SIZE: 30px">
</td>
<td>
<input type="button" value="↓" onclick="gpio_remo(5)" style="WIDTH: 160px; HEIGHT: 160px;FONT-SIZE: 60px">
</td>
<td width="160" hight="160">
<input type="button" value="♪4" onclick="gpio_remo(-4)" style="WIDTH: 160px; HEIGHT: 160px;FONT-SIZE: 30px">
</td>
</tr>
</td></tr></table>
</FIELDSET>
</form>

<input type="text" id="RESULT" value="結果=" style="width:450px">

<p>

</p>
</body>
</html>


| | コメント (0) | トラックバック (1)

バスバッファでモータを動かしてみた。

ちびギアモータと、足を取り付けたから動かしましょう。

モーターを動かすのには大抵モータドライバがいる。
モータドライバは電流をガーっと流す役目。

んでも今回のモータはそんなに電流を流さなくてすむ
なのでそんなに凝った回路がいらない。
それこそSoCのとあるポートに流がれている電流で動いてしまう。

ここにLCX541というロジックICがある。
これは単なる8bitのバスバッファ。
フラットパッケージで、3.3Vで動く。

んでスペック表を見ると、3V時には24mA出力できる。
これを2本束ねて48mAにして、モータへのドライブとして使ってしまおうという試み。

さてさて、ドライブを制御するのにおきまりのFlashAirの登場ーっ
これのGPIO機能を使ってモータ制御をする。
回路図的にはこんな感じ。

FlashAirのSD端子をGPIOモードにして、5ポート中の4ポートをモータ側へバスバッファ(LCX541)を介して接続。
モータの両端へつないだポートをL−HとかH−Lにすればそれぞれのモータが回る。
うん。シンプル〜♪

んではこれを作りましょ。



フラットパッケージなのでピッチが狭い。(@Д@;

老眼なのでこのままでは半田付けが困難。

でとりあえず、変換基盤に付けて2.54mmピッチに拡大した。
そ。ハンダ付けした部分は取れないように、グルーガンで固めた。

配線が少ないので、楽チン。

主な部品は「SDカードスロット」「LCX541」

これで無線でモータが回ってしまうのでした。

ハイ「WiFiラジコン カー」の完成〜っ。

電源は3.3Vだけど、アルカリ単三x2を電源にして、FlashAirとドライバへ電源供給。
(1割減ぐらいなら動く)

あとはFlashAirとタブレットをWiFIでつないで、ブラウザーで操作させるためにブラウザ用のHTMLファイルを書かねば。>つづく

| | コメント (2) | トラックバック (2)

【メルカリ】ジャンクのMG6330を買ってみた。(その3)【スマホアプリ】

スキャナーのガラス部が割れたジャンクプリンタは、印字ができるのを確認したので最低限のことはできる。
後は割れたスキャナーガラスを直すだけとなった。
2日後、大阪のガラス業者(株コーワ)からオーダしていたガラスが届いた。
カットだけのガラスだから、手際がいいね。
事前に寸法を測ったので、当たり前だけれど、サイズもぴったり。
ガラスは、iPadのように両面テープでプラスチックの枠に取り付ける。
このへんもiPadのガラス修理で手馴れたもの。w

ハメ込み直して、ネジで締めると完成。
んじゃスキャナーのテストと参りましょうか。
適当な絵柄をコピーしてみる。
ンガガ…ガと印刷が出てきた。

…よしよし。
スキャナーの修理成功〜。
【まとめ】
今回初めてフリマアプリを使ってジャンクを買った。
オークションなら値段が釣りあがっていくのだが、フリマだと最初の値付けが高いので、お客が値切って逆に下がってくる
その辺の駆け引きが新鮮だった。

インクは消耗品だから、遅かれ早かれ買わなければならないので置いといて。
プリンタ購入代金2600円とガラス代777円(+送料864円)で直せた。♪ヽ(´▽`)/
MG6330の中古の値段ていくらだろ。直さずにまんま買っても同じくらいか??。
まいいや。

年末の年賀状は、この白い連邦のプリンタで刷ることになるでしょう。

| | コメント (5) | トラックバック (1)

【メルカリ】ジャンクのMG6330を買ってみた。(その2)【スマホアプリ】

フリマのアプリで購入したジャンクプリンタ
ジャンクといえどもプリンタを買ったので、印刷はできないといかんということでインクを買いに行った。

PCデポでMG6330互換インクが3700円。(税別)
んで2個セットだと特価5000円(税別)ということで、どうせならってことでこっち。
テスト印字すると、カスることなく印刷ができるとこと確かめられた。ヽ(´▽`)/

よし。
これで、残るはスキャナーの部分が動けばOKっと。

割れたガラスの代替品を入手せねば。
スキャナーに使われていたガラスは、一般的なもので、ノギスで計ると厚さ3mmであった。
ま。こんなところに特殊なものはつかわんでしょう。

ガラスなんか買った事がないので一体いくらするのかネットで調べると、オーダーしてもそんな高いものではないことがわかった。

んじゃそのまま注文しちゃいましょう。( ̄▽ ̄)
■ご注文内容
----------------------------------------------------------------------
【1】 透明ガラス
縦: 240ミリ
横: 330ミリ
厚さ: 3ミリ
形状: 四角形
エッジ処理: 角すりつぶし
────────────────
[この商品の合計金額]
777円 × 1枚 = 777円 (消費税込)
■代金 (消費税込)
----------------------------------------------------------------------
 [1] 商品合計金額 : 777 円
 [2] 梱包送料 : 864 円
 [3] 代金引換料金 : 0 円
 [4] 総合計価格 : 1,641 円
発注はこれでOK。

あとは届くのを待つのであった。>つづく

| | コメント (0) | トラックバック (2)

« 2015年5月 | トップページ | 2015年7月 »