第1回でウンコジャマーの原理(http://teppodone.hatenadiary.jp/entry/howToMakeUnkoJammer1)、第2回でウォシュレットの信号の盗み方を解説(http://teppodone.hatenadiary.jp/entry/howToMakeUnkoJammer2)しましたが、今回はいよいよウォシュレットを遠隔操作していきます(Fig.1)。今回も前回と同じく回路を作ったら,まず家にある家電(ここではLGテレビリモコン)で動作テストし,その後にトイレをハッキングする流れで説明します。
対象年齢
前回同様,Arduinoでdelay(); や digitalWrite(); を使ったLチカのプログラムを理解出来て,Serial.println(); でシリアル通信が出来る程度の知識を必要とします。必要なもの
パーツリスト赤外線LED,テキトーな抵抗(電流制限抵抗)
リモコン用の赤外線LEDというのがあります。今回は秋月で売ってたコレを使いました。akizukidenshi.com
電流制限抵抗は,10[kΩ]でも 1[kΩ]でもそこら辺に転がってる抵抗を刺しとけばOKです。ここでは 100[Ω]の抵抗を使いました。
前回の方法で集めた信号
前回記事で下記の信号データを取得しましたが,/*----------------------------------------- LGのテレビの「音量上げ」の信号データ -----------------------------------------*/ Encoding : NEC Code : 20DF40BF (32 bits) Timing[67]: +8800, -4400 + 550, - 550 + 550, - 550 + 550, -1650 + 550, - 550 + 550, - 500 + 550, - 550 + 550, - 550 + 550, - 550 + 550, -1650 + 550, -1650 + 550, - 550 + 550, -1650 + 550, -1650 + 550, -1650 + 550, -1650 + 550, -1650 + 550, - 550 + 550, -1650 + 550, - 500 + 600, - 500 + 550, - 550 + 550, - 550 + 550, - 550 + 550, - 500 + 550, -1650 + 600, - 500 + 550, -1650 + 550, -1650 + 550, -1650 + 600, -1600 + 600, -1650 + 550, -1650 + 550 unsigned int rawData[67] = {8800,4400, 550,550, 550,550, 550,1650, 550,550, 550,500, 550,550, 550,550, 550,550, 550,1650, 550,1650, 550,550, 550,1650, 550,1650, 550,1650, 550,1650, 550,1650, 550,550, 550,1650, 550,500, 600,500, 550,550, 550,550, 550,550, 550,500, 550,1650, 600,500, 550,1650, 550,1650, 550,1650, 600,1600, 600,1650, 550,1650, 550}; // NEC 20DF40BF unsigned int data = 0x20DF40BF;
/*------------------------------------------------------------------- LIXILのウォシュレットの「おしり」の信号データ -------------------------------------------------------------------*/ Encoding : JVC Code : 5C89 (16 bits) Timing[51]: +8950, -4450 + 550, - 550 + 550, -1700 + 550, - 550 + 550, -1650 + 600, -1650 + 600, -1600 + 600, - 550 + 550, - 550 + 600, -1650 + 600, - 500 + 600, - 550 + 550, - 500 + 650, -1600 + 550, - 600 + 550, - 550 + 550, -1700 + 500, - 600 + 600, -1600 + 600, -1650 + 600, -1600 + 600, - 550 + 550, -1650 + 600, -1650 + 550, - 600 + 550 unsigned int rawData[51] = {8950,4450, 550,550, 550,1700,550,550, 550,1650, 600,1650, 600,1600, 600,550, 550,550, 600,1650, 600,500, 600,550, 550,500, 650,1600, 550,600, 550,550, 550,1700, 500,600, 600,1600, 600,1650, 600,1600, 600,550, 550,1650, 600,1650, 550,600, 550}; // JVC 5C89 unsigned int data = 0x5C89;
今回使うのは下記の unsigned int rawData[67] = {…} の部分です。
unsigned int rawData[67] = {8800,4400, 550,550, 550,550,…(略)}; //LGのテレビの「音量上げ」の信号データ unsigned int rawData[51] = {8950,4450, 550,550, 550,1700,…(略)}; //LIXILのウォシュレットの「おしり」の信号データ
ウォシュレットをハッキングする方法
回路図
赤外線信号を送るための下記の回路を組みます(Fig.2)。詳しくはプログラム(スケッチ)の章で書きますが,IRremoteに組み込まれている関数 irsend.sendRaw(); を使って信号を発信する場合,出力は digital3 番ピンと決まっています。プログラム(スケッチ)
IRremote に含まれる関数(メソッド) irsend.sendRaw(); を使います。この関数は,前回記事の IRrecvDumpV2 で解析した信号をもとに逆に信号を発信することができる関数です。信号はdigital3番ピンから出力されます。IRremoteの導入が終わってない方は,先に前回記事を読んでください。次の「 1秒おきに,LGのテレビの音量上げてLIXIL製ウォシュレットの「おしり」を送信するプログラム」をコピペして Arduino に書き込みます。
/*-------------------------------------------------------------------------- 1秒おきに,LGのテレビの音量上げてLIXIL製ウォシュレットの「おしり」を送信するサンプルプログラム @author : てぽ丼/teppodone , 使用ライブラリ:IRremote --------------------------------------------------------------------------*/ #include "IRremote.h" IRsend irsend; //IRsendオブジェクトの生成 void setup(){ } void loop(){ int khz=38; // 信号の周波数は38[kHz] //LGのテレビの「音量上げ」の信号データ unsigned int LG_VOL_UP[] = {8800,4400, 550,550, 550,550, 550,1650, 550,550, 550,500, 550,550, 550,550, 550,550, 550,1650, 550,1650, 550,550, 550,1650, 550,1650, 550,1650, 550,1650, 550,1650, 550,550, 550,1650, 550,500, 600,500, 550,550, 550,550, 550,550, 550,500, 550,1650, 600,500, 550,1650, 550,1650, 550,1650, 600,1600, 600,1650, 550,1650, 550}; // NEC 20DF40BF //LIXILのウォシュレットの「おしり」の信号データ unsigned int OSHIRI[] = {8950,4450, 550,550, 550,1700,550,550, 550,1650, 600,1650, 600,1600, 600,550, 550,550, 600,1650, 600,500, 600,550, 550,500, 650,1600, 550,600, 550,550, 550,1700, 500,600, 600,1600, 600,1650, 600,1600, 600,550, 550,1650, 600,1650, 550,600, 550};; //LGのテレビの「音量上げ」の信号を発生させる関数 irsend.sendRaw(LG_VOL_UP, sizeof(LG_VOL_UP)/sizeof(LG_VOL_UP[0]), khz); //LIXILのウォシュレットの「おしり」の信号を発生させる関数 irsend.sendRaw(OSHIRI, sizeof(OSHIRI)/sizeof(OSHIRI[0]), khz); delay(1000); }
簡単に説明しますと,IRsend クラスからオブジェクト irsend を生成して,関数(メソッド)irsend.sendRaw(); の引数に,信号データ LG_VOL_UP, OSHIRI,信号の周波数 38[kHz]を渡して,1000[ms]おきにグルグル回しているだけです。
テレビをArduinoからハック
前回同様 Arduino 持ってトイレに直行する前に,まず家のテレビをハックします。上記のプログラムを Arduino に書き込んで,ブレッドボードからパーツやケーブルが抜けないように注意しながらLEDをテレビに向けると,1秒おきにテレビの音量が勝手に上がっていくと思います。そうなれば成功です。赤外線LED1では光量が足りずなかなかテレビが反応しないことがあります。赤外線LEDをテレビの赤外線受光部に近づけてあげると良いでしょう。
実際にウォシュレットをハックしてみる
あとは簡単です。Arduino とブレッドボードとUSB電源(パソコンかUSBモバイルバッテリー)持ってトイレに直行するだけ。便座の奥にあるセンサーに付箋紙か何かで覆いをして(Fig.3),Arduino に電源を投入すると勝手に「おしり」が動きます。www.youtube.com
3回に渡って説明してきましたが,ココまでが基本的なウンコジャマー制作の流れです!!もうこれで誰でもウンコジャマーを作れますね!!!!この基本回路に銃の形のフレームや,大光量の9連の赤外線LED,信号切替スイッチなどを加えたものが私のウンコジャマーです。
次回予告
ウンコジャマーの作り方シリーズ,次回が最終回です多分。次回は銃の形をしたフレームの3Dデータだったり,信号切り替えスイッチ,大光量の9練LED,電源系,回路などをサラッと解説します。http://teppodone.hatenadiary.jp/entry/howToMakeUnkoJammer1
http://teppodone.hatenadiary.jp/entry/howToMakeUnkoJammer2