週刊「Robi2」が貯まってく。

先月から発売された週刊「Robi2」。
ううう。あとで作ればいいやと高を括るっているので、週刊で増えて行くので貯まってきた。

んで箱がでかいから邪魔で邪魔で。sad

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

任天堂SwitchにSDカードスロットを取り付けてみた。(その2)

任天堂Switchに、SDカードスロットと搭載させた。
ここにFlashAirを挿すことで、Switchが書き込んだデータファイルをWi-Fiで飛ばせる、シェアできる。
一番簡単な画面キャプチャーのデータをスマホのWi-Fiで取り出してみる。

んで、実際どうなるか動画にしてみた。(ニコニコ動画版はこちら

さらにFlashAirは中のファイルを、Luaを使って自動アップ処理とかできるみたいなので、いろいろ遊べると思う。

ただ、本体下側に線を延ばして配線したので、本体がドッキングベイに挿さらなくなってしまった。w
延長ケーブルを探すかな。

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

任天堂SwitchにSDカードスロットを取り付けてみた。(その1)

どこもかしこもmicroSD搭載ということで、過去何度かSDカードスロットを取り付けて強引に動かすこと数回。


今回対象は任天堂Switch
これもmicroSDスロットなので、SDカードスロットに変更させる。catface

まずはバラす。
運がいいことに、microSDスロットは、別部品になっていて改造しやすい。

足が狭いので、ちまちま半田付けしているとブリッジして最悪回路を壊すことになりそうなので、思い切ってスロット部分は剥がしてしまった。
microSDスロットの配線は1列に並んでおり、最後にSD検出信号がある。(プルアップされていて、LレベルでSDが入ったことを感知)

以後SwitchはSDカードへアクセスを行う。
全ての信号線をSDカードスロット側と1対1で半田付けして、完成!

と同時に保証も一切無くなりました。w
あとは狭いピッチでの半田付けなので、とれないようにUVパテでコーティング

今まではグルーガンでやっていたけれど、最近はこっち。
盛り上がらないで、配線部分が止められるのがいいねー。

という事で、早速動かしてみますか。>続く

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

任天堂Switchの液晶保護フィルムを作ってみた。

ようやく仕事が緩やかになってきて、遊びに時間が割けるようになった。
任天堂Switchは、予約して発売日に購入していたのだが、ずーっと箱に入ったまま。
ようやく取り出して触れる。smile

さてまずはスマホと同じように、液晶保護フィルムを取り付ける。
ネットでもいろんな人がやっているように、俺もダイソーに行って8インチの保護フィルムを購入した。

定規でサイズを測って、16cm x 9cmのサイズあたりでカット。
あとは貼るだけ。

…まぁ。こんなもんでしょう。

ダイソー品は安上がりでええわ。smile

さて、画面が傷つくのを防げるようにしたので、お次は改造を始めるかな。w

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

タカラトミーのアイデアソンに行ってみた。


本日は、タカラトミーのアイデアソンのお手伝いということで、休日返上でタカラトミーの本社にお邪魔させてもらった。

ベースが”新おもちゃのアイデア出し”で、タカラトミーがゆえに「リカちゃん」が絡んでいたりするため、会場では女子率が高い! ヒョォォォhappy01

全体の3分の1は女子だったと思う。
指で数えられる程度の人数が普通なのに…。

実際の内容に関しては守秘つーことで書けないけれど、商品化に向けて我こそはと熱いプレゼンでした。
それを受けて、自分としても新しいアイデアが浮かんできた。happy01
さて、訪問するにあたって俺が以前作ったR2−D2のWi-Fiリモコンを持参して、来場者・おもちゃ関係者にデモをさせてもらった。

特に遊びに来ていた小二の子供にずーーーーーとウケていたcatface
飽きずに終始遊んでくれた。♡満足。

これぞ、おもちゃの真髄!
ヽ(´▽`)/


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

FlashAirでR2-D2のラジコンを作ってみた。(その3)

ようやっと、動画の編集が終わった…。

ハードウエアの作成は前回で完成。
今回は、ソフトウエア。
っても、以前作ったやつの使い回し

基本の「音が鳴って」、「モータの制御ができる」ところは一緒。
音の種類と壁紙を代えただけ。(^_^;)

この間直したiPad3で制御させてみますかね。

んで、デジカメで一連の動作を撮影して、編集完了~。coldsweats01

ではどーぞ。


なんか市販品みたいだのぉ。
子供の頃、欲しくても買えなかったR2−D2のラジコン。
大人になって作ってやったぜ。w

年末にはSWの新作が上映されるので、当然日本でも盛り上がるはずですから、玩具メーカーさんどうでしょうか?happy02

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

FlashAirでR2-D2のラジコンを作ってみた。(その2)

FlashAirを使ったR2-D2ラジコンの電子回路部分は完成したので、今度は足回りを作り込む。
「ちびギアモータ」を足に仕込む。

どうやったらうまく収まるかを、いろいろ角度を変えていい位置を割り出していった。
左右でモータの向きが違うので、そこをカバーできるように取り付けないといけない。

タイヤの大きさを考えて、この辺かな。
後はネジと、ホットボンドで固定。
タイヤを取り付けて、足の完成。
足元からちらりとタイヤの片鱗が見えるようなレイアウトとなっている。
真ん中の足には、以前買っていた「どこでもキャスター」をこれまたホットボンドで貼り付け。
ホットボンドは、この手の工作には欠かせません。便利。delicious

これですべて材料はそろった。
後は組み立てていくだけ。
ハイハイ。
では改めて構成を紹介。

頭部に電子回路があって、そこから左右のモータに線が延びていくだけもの。
おなかの中には電源が入る。

これで動いちゃうのだ。( ̄▽ ̄)フフフ
じゃ~ん.
組みあがりました。

とても元1000円の貯金箱には見えない。w

FlashAirを頭部に刺すとLEDが光って電源がつながったことを表します。
と同時に、FlashAirからはWi-Fiが動きだすので、スマホやタブレットで接続できると。

ハードウエア製作はここまで。
後はこれを制御するソフトを作るかな。
っても過去に作ったJavascriptでいいんだけど。
つづく

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

FlashAirでR2-D2のラジコンを作ってみた。(その1)

FlashAirとバスバッファICでモータを動かすネタは、数多く書いてきた。
モータ+回路は、自体小さいのでいろいろ応用ができるのはわかっている。

今回は、アキバをうろついていて発見した「R2-D2の貯金箱」を改造して、ラジコンで動かしてみよう〜♪。
男の子ならば、R2-D2のラジコンに憧れたことはあると思う。
貯金箱なので、中身は空洞。
頭後部からお金を落として、体の中にたまる仕組み。
その際、例の鳴き声が聞こえるという回路が組み込まれている。
空洞なので、この中にバッテリーを仕込められるのであった。smile

足の裏は特に動くギミックがないので真っ平らで、中も空洞。
こっちとしては、とても加工しやすい筐体になっていた。w
頭後部のお金の投函口は、FlashAlirを差し込む大きさにちょうどいいのがわかった。
ここを利用しよう。
「SDスロット」と「バッファIC」をR2-D2の頭部に仕込む。
基板に半田付けして、大きさもちょうどいい。
あつらえたような感じ。w
FlashAirを挿し込むと、カード・ディテクト信号を使って、白色LEDを目玉に仕込んで光らせてみた。
電源はリチューム水素の3.6v/830mAと小型で長持ちのに決定。
次は足回りと行きますか。>つづく

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

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

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

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

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

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

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

HTML5では動画、音声のデコードをブラウザ側で持っているので、再生タグが使えるのでこれを使わない手はない。smile
手元のスマホとかタブレットで音がなるのである!。
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)