當(dāng)前位置:首頁 > 公眾號精選 > 電子電路開發(fā)學(xué)習(xí)
[導(dǎo)讀]ML-L3是用于尼康部分型號相機(jī)的無線紅外遙控器,可以通過紅外方式來控制快門的釋放,支持B門拍攝。官方售價100RMB左右,山寨版售價10RMB左右。雖然也能實現(xiàn)基本的遙控功能,但是功能還是比較單一,如不能實現(xiàn)定時拍攝,即用來拍攝制作延時視頻的素材。本篇文章介紹如何通過Ardui...

ML-L3是用于尼康部分型號相機(jī)的無線紅外遙控器,可以通過紅外方式來控制快門的釋放,支持B門拍攝。官方售價100RMB左右,山寨版售價10RMB左右。雖然也能實現(xiàn)基本的遙控功能,但是功能還是比較單一,如不能實現(xiàn)定時拍攝,即用來拍攝制作延時視頻的素材。本篇文章介紹如何通過Arduino、MCU或FPGA來控制紅外發(fā)射器,產(chǎn)生快門指令從而實現(xiàn)無線遙控快門的功能。

拆解ML-L3遙控器

為了實現(xiàn)ML-L3遙控器的功能,我們首先要了解無線遙控器的原理。當(dāng)然最好的方式就是拆解一個ML-L3,然后看看內(nèi)部的電路,然后測出紅外的編碼。但是手頭又沒有這樣的一個遙控器,有國外的網(wǎng)友已經(jīng)拆解了并且測出了紅外編碼的波形,如下圖。

官方遙控器PCB板:

山寨遙控器PCB板:

從PCB板來看,果然還是官方的用料更足一些,通過測量紅外發(fā)射引腳,在按下按鈕時,紅外發(fā)射頭會發(fā)出一串脈沖信號,如下圖所示:

其中黑色的部分是38KHz的PWM方波,空白部分是低電平,以上波形就表示一個快門指令。

紅外遙控協(xié)議主要有兩種:NEC協(xié)議和Philips RC-5協(xié)議,NEC采用PWM方式調(diào)制,RC-5采用PPM方式調(diào)制。其中使用最多的是NEC協(xié)議,38KHz載波,一般是由引導(dǎo)碼 地址碼 地址反碼 數(shù)據(jù) 數(shù)據(jù)反碼構(gòu)成。其中邏輯0和邏輯1的編碼如下:

基于Arduino的實現(xiàn)

好了,知道了快門指令的紅外波形,我們只需要寫個函數(shù)實現(xiàn)這一串脈沖信號就可以了。Arduino開發(fā)板,我手頭上有的是Circuit Playground Express這款開發(fā)板,板載一對紅外發(fā)射接收頭,和兩路按鍵,對于我們的功能已經(jīng)是足夠用了。在使用前需要先安裝Cortex-M0的庫。

程序非常簡單,按下按鍵時,發(fā)出一個快門指令:

  1. #include


  2. #define IR_Pin 25

  3. #defineLed_Pin13

  4. #defineButtonA_Pin4

  5. #defineButtonB_Pin5


  6. #define LED_ON digitalWrite(Led_Pin, LOW)

  7. #define LED_OFF digitalWrite(Led_Pin, HIGH)

  8. #define LED_SET(x) digitalWrite(Led_Pin, x)


  9. #define IR_ON digitalWrite(IR_Pin, HIGH)

  10. #define IR_OFF digitalWrite(IR_Pin, LOW)


  11. #define GET_BUTTONA() digitalRead(ButtonA_Pin)

  12. #define GET_BUTTONB() digitalRead(ButtonB_Pin)


  13. int sts = 0;


  14. void setup()

  15. {

  16. pinMode(IR_Pin, OUTPUT);

  17. pinMode(Led_Pin, OUTPUT);

  18. pinMode(ButtonA_Pin, INPUT_PULLDOWN);

  19. pinMode(ButtonB_Pin, INPUT_PULLDOWN);


  20. Serial.begin(9600);

  21. }


  22. //Nikon ML-L3 紅外遙控器快門編碼:38KHz=26us

  23. void loop()

  24. {

  25. if(GET_BUTTONA())

  26. {

  27. delay(10);

  28. if(GET_BUTTONA())

  29. {

  30. sts = !sts;

  31. LED_SET(sts);

  32. Serial.println("Right button pressed!");

  33. OneShot();

  34. }

  35. }

  36. while(GET_BUTTONA()); //等待松開

  37. }


  38. voidOneShot()

  39. {

  40. int i = 0;

  41. for(i = 76; i > 0; i--) //2100ms

  42. {

  43. IR_ON; //13.5

  44. delayMicroseconds(12);

  45. IR_OFF; //13.7

  46. delayMicroseconds(12);

  47. }

  48. IR_OFF;

  49. delay(28); //2803us

  50. for(i = 15; i > 0; i--) //393us

  51. {

  52. IR_ON;

  53. delayMicroseconds(12);

  54. IR_OFF;

  55. delayMicroseconds(12);

  56. }

  57. IR_OFF;

  58. delayMicroseconds(1580); //1611us


  59. for(i = 15; i > 0; i--)

  60. {

  61. IR_ON;

  62. delayMicroseconds(12);

  63. IR_OFF;

  64. delayMicroseconds(12);

  65. }

  66. delayMicroseconds(3580);

  67. for(i = 15; i > 0; i--)

  68. {

  69. IR_ON;

  70. delayMicroseconds(12);

  71. IR_OFF;

  72. delayMicroseconds(12);

  73. }

  74. IR_OFF;

  75. }

基于STM32的實現(xiàn)

在STM32F103上的實現(xiàn)也是非常簡單,主要用到了GPIO控制和精確延時函數(shù)。紅外控制引腳和按鍵引腳可根據(jù)需要來調(diào)整。

  1. //根據(jù)Nikon ML-L3紅外遙控器編碼協(xié)議,產(chǎn)生快門指令

  2. voidOneShot(void)

  3. {

  4. int i = 0;

  5. for(i = 76; i > 0; i--) //2100ms

  6. {

  7. IR_ON; //13.5

  8. delay_us(12);

  9. IR_OFF; //13.7

  10. delay_us(12);

  11. }

  12. IR_OFF;

  13. delay_ms(28); //2803us

  14. for(i = 15; i > 0; i--) //393us

  15. {

  16. IR_ON;

  17. delay_us(12);

  18. IR_OFF;

  19. delay_us(12);

  20. }

  21. IR_OFF;

  22. delay_us(1580); //1611us


  23. for(i = 15; i > 0; i--)

  24. {

  25. IR_ON;

  26. delay_us(12);

  27. IR_OFF;

  28. delay_us(12);

  29. }

  30. delay_us(3580);

  31. for(i = 15; i > 0; i--)

  32. {

  33. IR_ON;

  34. delay_us(12);

  35. IR_OFF;

  36. delay_us(12);

  37. }

  38. IR_OFF;

  39. }

基于FPGA的實現(xiàn)

對于FPGA來說,這種波形的產(chǎn)生,時間可以控制的更精確,這取決于FPGA的時鐘,時鐘越高精度越高,而且可控性更強一些,就是實現(xiàn)起來稍微麻煩一些。

Verilog文件

  1. module ml_l3_pulse_gen(


  2. input clk_50M, //20ns

  3. input rst_n,

  4. input trig, //negedge trig


  5. output pulse

  6. );


  7. parameter T1_2000US = 100000;

  8. parameter T2_28000US = 1400000;

  9. parameter T3_400US = 20000;

  10. parameter T4_1580US = 79000;

  11. parameter T5_400US = T3_400US;

  12. parameter T6_3580US = 179000;

  13. parameter T7_400US = T3_400US;


  14. parameter T1_STS = 1;

  15. parameter T2_STS = 2;

  16. parameter T3_STS = 3;

  17. parameter T4_STS = 4;

  18. parameter T5_STS = 5;

  19. parameter T6_STS = 6;

  20. parameter T7_STS = 7;

  21. parameter T8_STS = 8;

  22. parameter T0_STS = 0;

  23. parameter TIME_38KHZ = 658;


  24. reg [7:0] cur_sts;

  25. reg [31:0] cnt_38khz;

  26. reg [31:0] cnt;

  27. reg [31:0] cnt_max;


  28. reg en;

  29. reg pwm_38k;

  30. reg trig_reg;


  31. assign pulse = (en) ? pwm_38k : 0;


  32. always @ (posedge clk_50M)

  33. begin

  34. trig_reg <= trig;

  35. end


  36. always @ (posedge clk_50M)

  37. begin

  38. if(!rst_n)

  39. cnt_max <= 0;

  40. else

  41. begin

  42. case(cur_sts)

  43. T0_STS : cnt_max <= 0;

  44. T1_STS : cnt_max <= T1_2000US;

  45. T2_STS : cnt_max <= T2_28000US;

  46. T3_STS : cnt_max <= T3_400US;

  47. T4_STS : cnt_max <= T4_1580US;

  48. T5_STS : cnt_max <= T5_400US;

  49. T6_STS : cnt_max <= T6_3580US;

  50. T7_STS : cnt_max <= T7_400US;

  51. default: cnt_max <= 0;

  52. endcase

  53. end

  54. end


  55. always @ (posedge clk_50M)

  56. begin

  57. if(!rst_n)

  58. en <= 0;

  59. else

  60. begin

  61. case(cur_sts)

  62. 1,3,5,7: en <= 1;

  63. 2,4,6,0: en <= 0;

  64. default: en <= 0;

  65. endcase

  66. end

  67. end


  68. always @ (posedge clk_50M)

  69. begin

  70. if(!rst_n)

  71. cnt <= 0;

  72. else

  73. begin

  74. if(cur_sts != T0_STS
本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉