1、多功能智慧家庭萬能手機搖控器,張右昇(49937043) 李政澤(49937034) 曾群翔(49937057),成員,Summary,我們想要利用Arduino與手機藍芽間的通訊,與紅外線發射的功能,來做出一個萬能型遙控器,使用者只須要使用一隻小小的手機,就能夠遙控家裡所有的電器。,須安裝IRremote library,然後將紅外線sensor接上Arduino,並利用IRremote中的函數去撰寫程式接收每個按鍵所發出的紅外線,然後解碼,利用Serial.print顯示在螢幕上,方便待會使用。當接收到相對應的藍芽訊號時,利用IRremote library中的irsend來發射紅外線訊號
2、,以達到利用手機取代遙控的功能。,Hardware Required,Arduino uno Board、38Khz紅外線sensor、藍芽模組、紅外線發射LED、紅外線遙控器、USB cable、麵包版、Android手機、冷氣、電視。,Schematic1,Schematic2,Arduino UNO,藍芽模組,紅外線發射器,紅外線接收器,Demo,冷氣Demo影片http:/youtu.be/nyK7FY2_tw4電視Demo影片http:/youtu.be/gnkjcnmzQt4,Code:紅外線接收解碼,#include const int irReceiverPin = 2;IRr
3、ecv irrecv(irReceiverPin);decode_results results; void setup() Serial.begin(9600); irrecv.enableIRIn();,void showIRProtocol(decode_results *results) Serial.print(Protocol: ); switch(results-decode_type) case NEC: Serial.print(NEC); break; case SONY: Serial.print(SONY); break;,case RC5: Serial.print(
4、RC5); break; case RC6: Serial.print(RC6); break; default: Serial.print(Unknown encoding); ,Serial.print(, irCode: ); Serial.print(results-value, HEX); / 紅外線編碼 Serial.print(, bits: ); Serial.println(results-bits); / 紅外線編碼位元數 void loop() if (irrecv.decode( ,Code:藍芽接收與紅外線發射,#include IRsend irsend;void
5、setup() Serial.begin(9600);,void loop() if(Serial.available() unsigned char charreceived = Serial.read(); switch(charreceived) case q: irsend.sendNEC(0xA05D48B7, 32); Serial.println( air conditioner power); break; case w: irsend.sendNEC(0xA05D18E7, 32); Serial.println( degreeup); break;,case e: irse
6、nd.sendNEC(0xA05D9867, 32); Serial.println( degreedown); break; case r: irsend.sendNEC(0xA05D58A7, 32); Serial.println( time); break; case a: irsend.sendNEC(0x20DF10EF, 32); Serial.println( TV power); break;,case 1: irsend.sendNEC(0x20DF8877, 32); Serial.println( TV 1); break; case 2: irsend.sendNEC
7、(0x20DF48B7, 32); Serial.println( TV 2); break; case 3: irsend.sendNEC(0x20DFC837, 32); Serial.println( TV 3); break;,case 4: irsend.sendNEC(0x20DF28D7, 32); Serial.println( TV 4); break; case 5: irsend.sendNEC(0x20DFA857, 32); Serial.println( TV 5); break; case 6: irsend.sendNEC(0x20DF6897, 32); Se
8、rial.println( TV 6); break;,case 7: irsend.sendNEC(0x20DFE817, 32); Serial.println( TV 7); break; case 8: irsend.sendNEC(0x20DF18E7, 32); Serial.println( TV 8); break; case 9: irsend.sendNEC(0x20DF9867, 32); Serial.println( TV 9); break;,case 0: irsend.sendNEC(0x20DF08F7, 32); Serial.println( TV 0);
9、 break; case s: irsend.sendNEC(0x20DF40BF, 32); Serial.println( TV volume+); break; case x: irsend.sendNEC(0x20DFC03F, 32); Serial.println( TV volume-); break;,case d: irsend.sendNEC(0x20DF00FF, 32); Serial.println( TV channel+); break; case c: irsend.sendNEC(0x20DF807F, 32); Serial.println( TV channel-); break;,case z: irsend.sendNEC(0x20DFD02F, 32); Serial.println( tv/video change); break; default: break; Serial.flush(); delay(10);,