欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

【Arduino】168種傳感器模塊系列實驗(146)---MT8870語音解碼

查看數: 7745 | 評論數: 25 | 收藏 0
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發布時間: 2020-3-3 12:19

正文摘要:

本帖最后由 eagler8 于 2020-3-3 17:08 編輯 37款傳感器與模塊的提法,在網絡上廣泛流傳,其實Arduino能夠兼容的傳感器模塊肯定是不止37種的。鑒于本人手頭積累了一些傳感器和執行器模塊,依照實踐出真知(一定要 ...

回復

ID:513258 發表于 2020-3-9 15:58
  1. 【Arduino】168種傳感器模塊系列實驗(資料+代碼+圖形+仿真)
  2.   實驗一百四十五:MT8870 DTMF語音解碼板模塊 電話撥號控制音頻解碼處理電路

  3.   第四項實驗:不用庫,使用MT8870芯片模塊進行DTMF解碼
  4.   1、需要材料:喇叭1個,68Ω電阻兩個,咪頭傳感器和DTMF解碼模塊,兩塊UNO板
  5.   2、合成信號硬件連接:在D11,D12引腳各接一個68Ω電阻一端,68Ω電阻另一端接喇叭,然后喇叭另一端接地。
  6.   3、咪頭模塊接線:
  7.   MAX9814  Arduino
  8.   VCC        5V
  9.   GND        GND
  10.   OUT        IN(接到DTMF)
  11.   4、DTMF解碼模塊接線
  12.   DTMF     Arduino
  13.   VCC        5V
  14.   GND        GND
  15.   Q1         12
  16.   Q2         11
  17.   Q3         10
  18.   Q4         9

  19. int keyvalue;  // 與音調相關的數字

  20. void setup()
  21. {
  22. Serial.begin(9600);
  23. pinMode(12, INPUT); //從解碼器芯片輸入二進制1的數字
  24. pinMode(11, INPUT); //從解碼器芯片輸入二進制2的數字
  25. pinMode(10, INPUT); //從解碼器芯片輸入二進制4的數字
  26. pinMode(9, INPUT); //從解碼器芯片輸入二進制4的數字
  27. }

  28. void loop()

  29. // 首先確定鍵的以10為底的值 0-11
  30. {
  31. if (digitalRead(6) == HIGH) //如果二進制1為高
  32. {
  33. keyvalue = 1;  //使鍵值等于1
  34. }
  35. else
  36. {
  37. keyvalue = 0;  //否則將其設為零
  38. }

  39. if (digitalRead(7) == HIGH)  //如果二進制2為高
  40. {
  41. keyvalue = keyvalue + 2;  //在鍵值中添加“ 2”
  42. }
  43. if (digitalRead(8) == HIGH)  //如果二進制4為高
  44. {
  45. keyvalue = keyvalue + 4;  //將“ 4”添加到鍵值
  46. }
  47. if (digitalRead(9) == HIGH)  //如果二進制8為高
  48. {
  49. keyvalue = keyvalue + 8;  //將“ 8”添加到鍵值
  50. }
  51. // 現在將鍵值9、10和11轉換為“ 0”,“ *”和“#”
  52. if (keyvalue == 10)
  53. {
  54. Serial.println("0"); //打印零鍵
  55. }
  56. else
  57. {
  58. if (keyvalue == 11)
  59. {
  60. Serial.println("*"); //打印星號鍵
  61. }

  62. else
  63. {
  64. if (keyvalue == 12)
  65. {
  66. Serial.println("#"); //打印井號
  67. }

  68. else
  69. {
  70. Serial.println(keyvalue); //它不是特殊鍵,所以只需打印
  71. }
  72. }
  73. }
  74. delay(500);
  75. }
復制代碼


ID:513258 發表于 2020-3-9 15:03
DTMF解碼識別模塊實驗視頻
https://v.youku.com/v_show/id_XNDU3OTkzOTA4OA==.html

https://v.youku.com/v_show/id_XNDU3OTkzOTA4OA==.html


【Arduino】168種傳感器模塊系列實驗(資料+代碼+圖形+仿真)
  實驗一百四十五:MT8870 DTMF語音解碼板模塊 電話撥號控制音頻解碼處理電路

  第三項實驗:用合成DTMF雙音多頻信號測試咪頭傳感器和DTMF解碼模塊
  1、安裝 "dtmf"庫: 下載https://codeload.github.com/DFRobot/DTMF/zip/master
  2、需要材料:喇叭1個,68Ω電阻兩個,咪頭傳感器和DTMF解碼模塊,兩塊UNO板
  3、合成信號硬件連接:在D11,D12引腳各接一個68Ω電阻一端,68Ω電阻另一端接喇叭,然后喇叭另一端接地。
  4、咪頭模塊接線:
  MAX9814  Arduino
  VCC        5V
  GND        GND
  OUT        IN(接到DTMF)
  5、DTMF解碼模塊接線
  DTMF     Arduino
  VCC        5V
  GND        GND
  Q1         12
  Q2         11
  Q3         10
  Q4         9

ID:513258 發表于 2020-3-9 13:51
  1. /*
  2.   【Arduino】168種傳感器模塊系列實驗(資料+代碼+圖形+仿真)
  3.   實驗一百四十五:MT8870 DTMF語音解碼板模塊 電話撥號控制音頻解碼處理電路

  4.   第三項實驗:用合成DTMF雙音多頻信號測試咪頭傳感器和DTMF解碼模塊
  5.   1、安裝 "dtmf"庫: 下載https://codeload.github.com/DFRobot/DTMF/zip/master
  6.   2、需要材料:喇叭1個,68Ω電阻兩個,咪頭傳感器和DTMF解碼模塊,兩塊UNO板
  7.   3、合成信號硬件連接:在D11,D12引腳各接一個68Ω電阻一端,68Ω電阻另一端接喇叭,然后喇叭另一端接地。
  8.   4、咪頭模塊接線:
  9.   MAX9814  Arduino
  10.   VCC        5V
  11.   GND        GND
  12.   OUT        IN(接到DTMF)
  13.   5、DTMF解碼模塊接線
  14.   DTMF     Arduino
  15.   VCC        5V
  16.   GND        GND
  17.   Q1         12
  18.   Q2         11
  19.   Q3         10
  20.   Q4         9
  21. */

  22. #include "dtmf.h"

  23. DTMF dtmf;

  24. void setup()
  25. {
  26.   Serial.begin(9600);
  27. }

  28. void loop()
  29. {
  30.   // 讀DTMF代碼并且用串行輸出
  31.   int myDtmf;
  32.   myDtmf = dtmf.getDTMF();
  33.   if (myDtmf != -1)
  34.     Serial.println(myDtmf);
  35.   delay(100); // 以避免收到重復的輸出。
  36. }
復制代碼


ID:513258 發表于 2020-3-4 20:37
  1. /*
  2.   【Arduino】168種傳感器模塊系列實驗(資料+代碼+圖形+仿真)
  3.   實驗一百四十五:MT8870 DTMF語音解碼板模塊 電話撥號控制音頻解碼處理電路

  4.   第二項實驗:重復播放合成DTMF雙音多頻8675309撥號音
  5.   1、安裝 "Tone.h"庫: IDE-工具-管理庫-搜索-安裝
  6.   2、項目測試 :發送電話號碼8675309到串口
  7.   3、需要材料:喇叭1個,68Ω電阻兩個
  8.   4、硬件連接:在D11,D12引腳各接一個68Ω電阻一端,
  9.      68Ω電阻另一端接喇叭,然后喇叭另一端接地。
  10. */

  11. #include <Tone.h>

  12. Tone freq1;
  13. Tone freq2;

  14. const int DTMF_freq1[] = { 1336, 1209, 1336, 1477, 1209, 1336, 1477, 1209, 1336, 1477 };
  15. const int DTMF_freq2[] = {  941,  697,  697,  697,  770,  770,  770,  852,  852,  852 };

  16. void setup()
  17. {
  18.   Serial.begin(9600);
  19.   freq1.begin(11);
  20.   freq2.begin(12);
  21. }

  22. void playDTMF(uint8_t number, long duration)
  23. {
  24.   freq1.play(DTMF_freq1[number], duration);
  25.   freq2.play(DTMF_freq2[number], duration);
  26. }


  27. void loop()
  28. {
  29.   int i;
  30.   uint8_t phone_number[] = { 8, 6, 7, 5, 3, 0 , 9 };

  31.   for (i = 0; i < sizeof(phone_number); i ++)
  32.   {
  33.     Serial.print(phone_number[i], 10);
  34.     Serial.print(' ');
  35.     playDTMF(phone_number[i], 500);
  36.     delay(600);
  37.   }

  38.   Serial.println();
  39.   delay(4000);
  40. }
復制代碼


ID:513258 發表于 2020-3-4 16:45
視頻——第一項實驗:用arduino的PWM腳(11、12)合成DTMF雙音多頻編碼信號

https://v.youku.com/v_show/id_XNDU3MzExODkzMg==.html

https://v.youku.com/v_show/id_XNDU3MzExODkzMg==.html




ID:513258 發表于 2020-3-4 13:02
  1. /*
  2.   【Arduino】168種傳感器模塊系列實驗(資料+代碼+圖形+仿真)
  3.   實驗一百四十五:MT8870 DTMF語音解碼板模塊 電話撥號控制音頻解碼處理電路
  4.   
  5.   第一項實驗:用arduino的PWM腳(11、12)合成DTMF雙音多頻編碼信號
  6.   1、安裝 "Tone.h"庫: IDE-工具-管理庫-搜索-安裝
  7.   2、項目測試 :將喇叭貼近電話機話筒,然后發送要撥的電話號碼到串口,比如10000,即可撥通電話10000
  8.   3、需要材料:喇叭1個,68Ω電阻兩個
  9.   4、硬件連接:在D11,D12引腳各接一個68Ω電阻一端,
  10.      68Ω電阻另一端接喇叭,然后喇叭另一端接地。
  11. */

  12. #include <Tone.h>
  13. String Phone_Number = "";
  14. int i = 0, mark = 0;
  15. //定義freq1,freq2為Tone實例,并且定義雙音多頻的頻率

  16. Tone freq1;
  17. Tone freq2;
  18. const int DTMF_freq1[] = {1336, 1209, 1336, 1477, 1209, 1336, 1477, 1209, 1336, 1477};
  19. const int DTMF_freq2[] = {941,  697,  697,  697,  770,  770,  770,  852,  852,  852};

  20. void setup()
  21. {
  22.   Serial.begin(9600);
  23.   //定義聲音產生引腳在Arduino的D11,D12
  24.   freq1.begin(11);
  25.   freq2.begin(12);
  26. }

  27. void loop()
  28. {
  29.   //讀出串口數據,串接成Phone_Number字符串
  30.   while (Serial.available() > 0)
  31.   {
  32.     Phone_Number += char(Serial.read());
  33.     delay(2);
  34.     mark = 1;
  35.   }
  36.   //播放DTMF音頻,電話號碼來自Phone_Number,持續長度200ms,間隔長度300ms
  37.   PlayDTMF(Phone_Number, 200, 300);

  38.   //如果剛才接收到串口的電話號碼,因為號碼已經在喇叭輸出了,清空電話號碼并且重置mark
  39.   if (mark == 1)
  40.   {
  41.     Phone_Number = "";
  42.     Serial.println();
  43.     mark = 0;
  44.   }
  45. }
  46. /*
  47.   DTMF播放函數
  48.   調用格式:playDTMF(數字(0~9), 持續時間)。
  49. */
  50. void PlayDTMF(String Number, long duration, long pause)
  51. {
  52.   //如果輸入數字為空,或者持續時間不為正數,或者暫停時間不為正數
  53.   //則視作錯誤,立即停止執行返回主程序。
  54.   if (Number.length() == 0 || duration <= 0 || pause <= 0) return;
  55.   //將Number逐個文字分離,
  56.   for (i = 0; i < Number.length(); i++)
  57.   {
  58.     //如果Number屬于0~9的數字字符
  59.     if (Number[i] >= '0' && Number[i] <= '9')
  60.     {
  61.       //則將它ASCII碼減去‘0’,得到純數字,
  62.       Number[i] = '0';
  63.       //然后在串口輸出一份,便于查看
  64.       Serial.print(i, DEC);
  65.       //輸出雙音多頻之一
  66.       freq1.play(DTMF_freq1[i], duration);
  67.       //輸出雙音多頻之二
  68.       freq2.play(DTMF_freq2[i], duration);
  69.       delay(pause);
  70.     }
  71.   }
  72. }
復制代碼


ID:513258 發表于 2020-3-3 13:07
DTMF
雙音多頻 DTMF(Dual Tone Multi Frequency),雙音多頻,由高頻群和低頻群組成,高低頻群各包含4個頻率。一個高頻信號和一個低頻信號疊加組成一個組合信號,代表一個數字。DTMF信號有16個編碼。利用DTMF信令可選擇呼叫相應的對講機。

在編碼時將擊鍵或數字信息轉換成雙音信號并發送,解碼時在收到的DTMF信號中檢測擊鍵或數字信息的存在性。一個DTMF信號由兩個頻率的音頻信號疊加構成。這兩個音頻信號的頻率來自兩組預分配的頻率組:行頻組或列頻組。每一對這樣的音頻信號唯一表示一個數字或符號。電話機中通常有16個按鍵,其中有10個數字鍵0~9和6個功能鍵*、#、A、B、C、D。由于按照組合原理,一般應有8種不同的單音頻信號。因此可采用的頻率也有8種,故稱之為多頻,又因它采用分別從高低頻中任意抽出1種進行組合來進行編碼,所以又稱之為“8中取2”的編碼技術。根據CCITT的建議,國際上采用的多種頻率為697Hz、770Hz、852Hz、941Hz、1209Hz、1336Hz、1477Hz和1633Hz等8種。用這8種頻率可形成16種不同的組合,從而代表16種不同的數字或功能鍵。

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表