mbed ホームページから家電をコントロール


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

mbedでホームページのボタンから赤外線で家電をコントロールしてみます。


HTTP SERVER

HTTP-Server のクックブック
こちらでまずホームページサーバを動かします。

IRのテストプログラムの実行とインポート

赤外線のクックページ
TestProgramを実行するとリモコンデータの取得ができます。
format = RemoteIR::AEHA;                                     //  家電協会のフォーマット
uint8_t buf[] = { 0xAA, 0x5A,0x8F,0x12,0x16,0xD1 };       //SHARP TV  電源 のデータ
int bitcount = 48;                          // ビット数



プログラム

#include "mbed.h"
#include "EthernetNetIf.h"
#include "HTTPServer.h"
#include "TextLCD.h"
#include "TransmitterIR.h"

TransmitterIR ir_tx(p21);
TextLCD lcd(p24, p26, p27, p28, p29, p30); // rs, e, d0-d3
DigitalOut led1(LED1, "led1");
DigitalOut led2(LED2, "led2");
DigitalOut led3(LED3, "led3");
DigitalOut led4(LED4, "led4");
AnalogIn ain(p20);

LocalFileSystem fs("webfs");

EthernetNetIf   m_Ether(
IpAddr( 192,168,  1, 7 ), // IP Address
IpAddr( 255,255,255,  0 ), // Mask
IpAddr( 192,168,  1,  1 ), // Default Gateway
IpAddr( 192,168,  1,  1 )  // DNS
);
EthernetNetIf eth;  

HTTPServer svr;


void irsend(void)   // IR Send
{
    RemoteIR::Format format = RemoteIR::AEHA;                 //  家電協会のフォーマット
    uint8_t buf[] = { 0xAA, 0x5A,0x8F,0x12,0x16,0xD1 };       //SHARP TV  電源 のデータ
    int bitcount = 48;                          // ビット数
    if (ir_tx.getState() == TransmitterIR::Idle) {
        bitcount = ir_tx.setData(format, buf, bitcount);
    }
}

int main() {
  Base::add_rpc_class<DigitalOut>();
  Base::add_rpc_class<AnalogIn>();
  Base::add_rpc_class<PwmOut>();
 
  lcd.printf("Setting up...\n");

  EthernetErr ethErr = eth.setup();
  if(ethErr)
  {
    lcd.printf("Error %d in setup.\n", ethErr);
    return -1;
  }
  printf("Setup OK\n");
  IpAddr ip = eth.getIp() ;             //IP Address Read
    lcd.printf(" [%d.%d.%d.%d]\r\n", ip[0], ip[1], ip[2], ip[3] ) ;

  FSHandler::mount("/webfs", "/files"); //Mount /webfs path on /files web path
  FSHandler::mount("/webfs", "/"); //Mount /webfs path on web root path 

  svr.addHandler<SimpleHandler>("/hello");
  svr.addHandler<RPCHandler>("/rpc");
  svr.addHandler<FSHandler>("/files");
  svr.addHandler<FSHandler>("/"); //Default handler
  svr.bind(80);
  
  lcd.printf("Listening...\n");
    
  Timer tm;
  tm.start();
  //Listen indefinitely
  while(true)
  {
    Net::poll();
    if(led1 == 1)
    {
      led2 = 1;  
        irsend();
     led2 = 0;
   led1 = 0;
    }
  }
  return 0;
}

HTML

test.htmとしてmbedに保存しておきます。
リセット後、ホームページにアクセスします http://172.27.9.7/test.htm
外出先からアクセスするには、ルータに上記アドレスを登録が必要です
自宅サーバ等と同じようにDDNSを利用すると便利です
ホームページサーバもmbedを利用するとエコで良いですね

<html>
	<head>
	<title>LEDコントロール</title>
		<script src="mbedRPC.js" language="javascript"></script>
		<script type="text/javascript">

			mbed = new HTTPRPC();
			led1 = new DigitalOut(mbed, LED1);
			led2 = new DigitalOut(mbed, LED2);
			led3 = new DigitalOut(mbed, LED3);
			led4 = new DigitalOut(mbed, LED4);
			ain = new AnalogIn(mbed, p20);	

 			function print(str){
  				document.getElementById("t").innerHTML = str;
			}

		</script>
	</head>
	<body>
		<p></p>
<br>
			アナログ入力  P20 =
		<div id="t">
		</div>

	<script language="javascript">
			var i = 1;
			var x = 0;
			var irb = 0;
	function tick(){

// 		if(document.orderForm.ch1.checked==true)
//				{led1.write(1);}
//			else	{led1.write(0);}
 		if(document.orderForm.ch2.checked==true)
				{led2.write(1);}
 			else	{led2.write(0);}
 		if(document.orderForm.ch3.checked==true)
				{led3.write(1);}
			else	{led3.write(0);}
 		if(document.orderForm.ch4.checked==true)
				{led4.write(1);}
			else	{led4.write(0);}

				x = x + 0.1;
				if(x >= 1) x = 0;
				f = ain.read();
				print(f);
	}
//リモコン送信
	function iron(){	

		led1.write(1);
	}

	setInterval("tick()",100);			
</script>

	<form name="orderForm">
<br><br>
	<input type="checkbox" name="ch2" checked="true">
	LED2<br>
	<input type="checkbox" name="ch3" checked="true">
	LED3<br>
	<input type="checkbox" name="ch4" checked="true">
	LED4<br><br><br><br>

	<input type="button" value=" リモコン送信 " onClick="iron()">
</form>
</body>
</html>







|新しいページ|検索|ページ一覧|RSS|@ウィキご利用ガイド | 管理者にお問合せ
|ログイン|
添付ファイル