找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
樓主: eagler8
打印 上一主題 下一主題
收起左側(cè)

【Arduino】108種傳感器模塊系列實(shí)驗(yàn)(資料+代碼+圖形+仿真)

  [復(fù)制鏈接]
361#
ID:513258 發(fā)表于 2019-6-16 16:25 | 只看該作者
用打火機(jī)的丁烷氣體做測試




回復(fù)

使用道具 舉報(bào)

362#
ID:513258 發(fā)表于 2019-6-16 16:38 | 只看該作者
第一次實(shí)驗(yàn)的串口數(shù)據(jù)




回復(fù)

使用道具 舉報(bào)

363#
ID:513258 發(fā)表于 2019-6-16 16:41 | 只看該作者
第二次實(shí)驗(yàn)




回復(fù)

使用道具 舉報(bào)

364#
ID:513258 發(fā)表于 2019-6-16 16:46 | 只看該作者
實(shí)驗(yàn)的波形圖,檢測到丁烷氣體挺敏感




回復(fù)

使用道具 舉報(bào)

365#
ID:513258 發(fā)表于 2019-6-16 17:03 | 只看該作者

回復(fù)

使用道具 舉報(bào)

366#
ID:513258 發(fā)表于 2019-6-16 17:03 | 只看該作者

回復(fù)

使用道具 舉報(bào)

367#
ID:513258 發(fā)表于 2019-6-16 17:22 | 只看該作者

回復(fù)

使用道具 舉報(bào)

368#
ID:513258 發(fā)表于 2019-6-17 17:12 | 只看該作者
實(shí)驗(yàn)二十六:4X4矩陣鍵盤模塊(輕觸式按鍵)


矩陣鍵盤
是單片機(jī)外部設(shè)備中所使用的排布類似于矩陣的鍵盤組。矩陣式結(jié)構(gòu)的鍵盤顯然比直接法要復(fù)雜一些,識(shí)別也要復(fù)雜一些,列線通過電阻接正電源,并將行線所接的單片機(jī)的I/O口作為輸出端,而列線所接的I/O口則作為輸入。由于電路設(shè)計(jì)時(shí)需要更多的外部輸入,單獨(dú)的控制一個(gè)按鍵需要浪費(fèi)很多的IO資源,所以就有了矩陣鍵盤,常用的矩陣鍵盤有4X4和8X8,其中用的最多的是4X4。





回復(fù)

使用道具 舉報(bào)

369#
ID:513258 發(fā)表于 2019-6-17 17:54 | 只看該作者
工作原理
矩陣鍵盤又稱為行列式鍵盤,它是用4條I/O線作為行線,4條I/O線作為列線組成的鍵盤。在行線和列線的每一個(gè)交叉點(diǎn)上,設(shè)置一個(gè)按鍵。這樣鍵盤中按鍵的個(gè)數(shù)是4X4個(gè)。這種行列式鍵盤結(jié)構(gòu)能夠有效地提高單片機(jī)系統(tǒng)中I/O口的利用率。由于單片機(jī)IO端口具有線與的功能,因此當(dāng)任意一個(gè)按鍵按下時(shí),行和列都有一根線被線與,通過運(yùn)算就可以得出按鍵的坐標(biāo)從而判斷按鍵鍵值。





回復(fù)

使用道具 舉報(bào)

370#
ID:513258 發(fā)表于 2019-6-17 18:14 | 只看該作者
行列掃描法原理
1、使行線為編程的輸入線,列線是輸出線,拉低所有的列線,判斷行線的變化,如果有按鍵按下,按鍵按下的對(duì)應(yīng)行線被拉低,否則所有的行線都為高電平。
2、在第一步判斷有鍵按下后, 延時(shí)10ms消除機(jī)械抖動(dòng),再次讀取行值,如果此行線還處于低電平狀態(tài)則進(jìn)入下 一步,否則返回第一步重新判斷。
3、開始掃描按鍵位置,采用逐 行掃描,每間隔1ms的時(shí)間,分別拉低第一列,第二列,第三列,第四 列,無論拉低哪一列其他三列都為高電平,讀取行值找到按鍵的位置,分別把行值和列值儲(chǔ)存在寄存器里。
4、從寄存器中找到行值和列 值并把其合并,得到按鍵值,對(duì)此按鍵值進(jìn)行編碼,按照從第一行第一個(gè)一直到第四行第四個(gè)逐行進(jìn)行編碼,編碼值從“0000” 至“1111” , 再進(jìn)行譯碼,最后顯示按鍵號(hào)碼。





回復(fù)

使用道具 舉報(bào)

371#
ID:513258 發(fā)表于 2019-6-17 18:48 | 只看該作者
4X4矩陣4管腳直插按鍵鍵盤
(1)體積;
(2)節(jié)省空間;
(3)使用方便;
(4)共計(jì)16按鍵;
(5)單片機(jī)外擴(kuò)鍵盤的上佳選擇。





回復(fù)

使用道具 舉報(bào)

372#
ID:513258 發(fā)表于 2019-6-17 19:30 | 只看該作者
矩陣鍵盤所需庫文件
在Arduino IDE 1.8.0 或者以上版本中, 項(xiàng)目->加載庫->管理庫中搜索Keypad,然后安裝即可。
也可以在下載庫(需要下載庫文件 https://github.com/Chris--A/Keypad),然后手動(dòng)添加到IDE中。


回復(fù)

使用道具 舉報(bào)

373#
ID:513258 發(fā)表于 2019-6-17 19:42 | 只看該作者
安裝4*4矩陣鍵盤
4*4矩陣鍵盤有一個(gè)8孔的排母,理論上可以直接插到0-7腳上,但0,1腳用于串口通信,所以只能選擇2~13腳,這里選用了2-9腳。


Keypad Pin R1 –> Arduino Pin 2
Keypad Pin R2 –> Arduino Pin 3
Keypad Pin R3 –> Arduino Pin 4
Keypad Pin R4 –> Arduino Pin 5
Keypad Pin C1 –> Arduino Pin 6
Keypad Pin C2 –> Arduino Pin 7
Keypad Pin C3 –> Arduino Pin 8
Keypad Pin C4 –> Arduino Pin 9



回復(fù)

使用道具 舉報(bào)

374#
ID:513258 發(fā)表于 2019-6-17 19:48 | 只看該作者
  1. /*
  2. 【Arduino】37種傳感器模塊系列實(shí)驗(yàn)(26)
  3. 實(shí)驗(yàn)二十六:4X4矩陣鍵盤模塊(12鍵示例代碼)
  4. */

  5. #include <Keypad.h>

  6. const byte ROWS = 4;
  7. const byte COLS = 3;

  8. char keys[ROWS][COLS] = {
  9.   {'1','2','3'},
  10.   {'4','5','6'},
  11.   {'7','8','9'},
  12.   {'#','0','*'}
  13. };
  14. byte rowPins[ROWS] = {5, 4, 3, 2};
  15. byte colPins[COLS] = {8, 7, 6};

  16. Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

  17. void setup(){
  18.   Serial.begin(9600);
  19. }

  20. void loop(){
  21.   char key = keypad.getKey();

  22.   if (key != NO_KEY){
  23.     Serial.println(key);
  24.   }
  25. }
復(fù)制代碼


回復(fù)

使用道具 舉報(bào)

375#
ID:513258 發(fā)表于 2019-6-17 19:56 | 只看該作者

回復(fù)

使用道具 舉報(bào)

376#
ID:513258 發(fā)表于 2019-6-17 20:00 | 只看該作者
這是一個(gè)非常簡單的示例,可以看到將鍵盤輸入添加到Arduino程序中是多么容易。也可以將此類輸入用于許多不同的項(xiàng)目,包括:
●    門鎖
●    輸入PWM
●    鬧鐘
●    安全鎖等





回復(fù)

使用道具 舉報(bào)

377#
ID:513258 發(fā)表于 2019-6-17 20:07 | 只看該作者
  1. /*
  2. 【Arduino】37種傳感器模塊系列實(shí)驗(yàn)(26)
  3. 實(shí)驗(yàn)二十六:4X4矩陣鍵盤模塊(16鍵示例代碼)
  4. */

  5. #include <Keypad.h>

  6. const byte ROWS = 4;
  7. const byte COLS = 4;

  8. char hexaKeys[ROWS][COLS] = {
  9.   {'1','2','3','A'},
  10.   {'4','5','6','B'},
  11.   {'7','8','9','C'},
  12.   {'*','0','#','D'}
  13. };

  14. byte rowPins[ROWS] = {2, 3, 4, 5};
  15. byte colPins[COLS] = {6, 7, 8, 9};

  16. Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS);

  17. void setup(){
  18.   Serial.begin(9600);
  19. }

  20. void loop(){
  21.   char customKey = customKeypad.getKey();

  22.   if (customKey){
  23.     Serial.println(customKey);
  24.   }
  25. }
復(fù)制代碼


回復(fù)

使用道具 舉報(bào)

378#
ID:513258 發(fā)表于 2019-6-17 20:07 | 只看該作者

回復(fù)

使用道具 舉報(bào)

379#
ID:513258 發(fā)表于 2019-6-17 20:16 | 只看該作者
程序思路
1
#include <Keypad.h>   //加載庫


2
const byte ROWS = 4;
const byte COLS = 4;
char keys[ROWS][COLS] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};//建立二維數(shù)組,用于設(shè)置按鍵的輸出字符


3
byte rowPins[ROWS] = {2,3,4,5};   //定義行引腳
byte colPins[COLS] = {6,7,8,9};     //定義列引腳


4
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS ); //實(shí)例化Keypad 對(duì)象


5
char key = keypad.getKey();//新建一個(gè)key 變量 用于獲取鍵盤當(dāng)前的值




回復(fù)

使用道具 舉報(bào)

380#
ID:513258 發(fā)表于 2019-6-17 20:54 | 只看該作者
4X4矩陣鍵盤模塊的一些應(yīng)用電路












回復(fù)

使用道具 舉報(bào)

381#
ID:513258 發(fā)表于 2019-6-17 20:57 | 只看該作者







回復(fù)

使用道具 舉報(bào)

382#
ID:513258 發(fā)表于 2019-6-17 21:00 | 只看該作者

回復(fù)

使用道具 舉報(bào)

383#
ID:513258 發(fā)表于 2019-6-18 06:27 | 只看該作者
實(shí)驗(yàn)二十七:GY-BMP280-3.3 高精度大氣壓強(qiáng)傳感器模塊


BMP280
博世Sensortec - BMP280 是一種專為移動(dòng)應(yīng)用設(shè)計(jì)的絕對(duì)氣壓傳感器。該傳感器模塊采用極其緊湊的封裝。得益于小尺寸和低功耗特性,這種器件可用在如移動(dòng)電話、GPS 模塊或手表等電池供電型設(shè)備中。與上代產(chǎn)品相同,BMP180、BMP280 也基于Bosch 成熟的壓阻式壓力傳感器技術(shù),具有高確度和線性度,以及長期穩(wěn)定性和很高的 EMC 穩(wěn)健性。多種設(shè)備工作選擇帶來了最高靈活性,可以在功耗、分辨率和濾波性能方面對(duì)設(shè)備進(jìn)行優(yōu)化。



回復(fù)

使用道具 舉報(bào)

384#
ID:513258 發(fā)表于 2019-6-18 06:55 | 只看該作者
BMP280是博世最新推出的數(shù)字氣壓傳感器,具有卓越的性能和低廉的價(jià)格,相對(duì)精度為±0.12 hPa(相當(dāng)于±1米),傳感器功耗僅有2.7μA。BMP280具有業(yè)界最小封裝,采用極其緊湊的8引腳金屬蓋LGA封裝,占位面積僅為2.0×2.5mm2,封裝高度為0.95 mm。包括有壓力和溫度測量功能。該氣壓傳感器支持SPI和IIC通信接口,相比上一代的BMP180,精度已有相當(dāng)大的提升,非常適合應(yīng)用于低成本的多旋翼飛行器飛行控制器上,價(jià)格僅有目前流行的MS5611的四分之一。傳感器模塊它的小尺寸和2.74μA@ 1Hz的低功耗允許在電池驅(qū)動(dòng)的設(shè)備中實(shí)現(xiàn)。門內(nèi)導(dǎo)航,醫(yī)療保健以及GPS改進(jìn)的新興應(yīng)用需要高相對(duì)精度和低TCO。




回復(fù)

使用道具 舉報(bào)

385#
ID:513258 發(fā)表于 2019-6-18 07:07 | 只看該作者
BMP280芯片結(jié)構(gòu)圖




回復(fù)

使用道具 舉報(bào)

386#
ID:513258 發(fā)表于 2019-6-18 07:16 | 只看該作者
BMP280非常適用于地板水平檢測等應(yīng)用,因?yàn)閭鞲衅骶哂小?.12 hPa的優(yōu)異相對(duì)精度,相當(dāng)于±1m高度差,偏移溫度系數(shù)(TCO)僅為1.5 Pa / K(相當(dāng)于12.6厘米/ K)。作為廣泛實(shí)施的BMP180的繼承者,BMP280最初在2011年開始大量使用手機(jī)中的氣壓測量,BMP280在所有需要精確壓力測量的應(yīng)用中實(shí)現(xiàn)了高性能。同時(shí),BMP280具有更高的應(yīng)用靈活性,新的濾波器模式和SPI接口,而且相對(duì)于BMP180,占位面積縮小了63%。




回復(fù)

使用道具 舉報(bào)

387#
ID:513258 發(fā)表于 2019-6-18 07:23 | 只看該作者
技術(shù)規(guī)格
1、氣壓工作范圍 300 hPa 至 1100 hPa(全精度)
2、工作溫度范圍 -40°C 至 +85°C
3、相對(duì)的絕對(duì)精度 ±0.12 hPa(典型值)
4、平均測量時(shí)間 5.5 ms
5、工作電壓 VDD 1.71 V 至 3.6 V
6、電源電壓 VDDIO 1.2 V 至 3.6 V
7、I2C 和串行外設(shè)接口 (SPI)
8、平均電流消耗典型值(1Hz數(shù)據(jù)刷新率):2.74μA(超低功耗模式);睡眠模式下的平均電流消耗:0.1μA
9、封裝規(guī)格 2.0 mm x 2.5 mm x 0.95 mm,8 引腳 LGA,全金屬封裝



回復(fù)

使用道具 舉報(bào)

388#
ID:513258 發(fā)表于 2019-6-18 07:34 | 只看該作者
應(yīng)用范圍
1、GPS 導(dǎo)航增強(qiáng)(例如改進(jìn)初次定位時(shí)間、航位推算、斜率檢測)
2、室內(nèi)導(dǎo)航(室內(nèi)檢測、電梯檢測)
3、戶外導(dǎo)航,休閑和運(yùn)動(dòng)應(yīng)用
4、天氣預(yù)報(bào)
5、健康保健應(yīng)用(如肺活量測定)
6、垂直速度指示(如上升/下沉速度)




回復(fù)

使用道具 舉報(bào)

389#
ID:513258 發(fā)表于 2019-6-18 09:03 | 只看該作者
GY-BMP280-3.3 高精度大氣壓強(qiáng)傳感器模塊
是個(gè)低功耗數(shù)字復(fù)合傳感器,它可以測量環(huán)境溫度和大氣壓強(qiáng)。氣壓敏感元件是一個(gè)低噪高精度高分辨率絕對(duì)大氣壓力壓電式感應(yīng)元件;溫度感測元件具有低噪高分辨率特性,溫度值可以對(duì)氣壓進(jìn)行溫度補(bǔ)償自校正。通過配置采樣率寄存器,可以設(shè)置敏感元件的采樣率。非常適合空間有限的移動(dòng)設(shè)備,如智能是手機(jī)、平板電腦、智能手表和可穿戴設(shè)備、天氣預(yù)報(bào)、垂直速度指示、飛控設(shè)備、室內(nèi)室外導(dǎo)航、智能家居裝置。





回復(fù)

使用道具 舉報(bào)

390#
ID:513258 發(fā)表于 2019-6-18 09:50 | 只看該作者
模塊電原理圖




回復(fù)

使用道具 舉報(bào)

391#
ID:513258 發(fā)表于 2019-6-18 10:43 | 只看該作者
Adafruit_BMP280_Library,用于BMP280傳感器的Arduino庫


下載地址
https://github.com/adafruit/Adafruit_BME280_Library
https://github.com/mahfuz195/BMP280-Arduino-Library
https://github.com/adafruit/Adafruit_BMP280_Library/releases(最新版本1.0.3)





回復(fù)

使用道具 舉報(bào)

392#
ID:513258 發(fā)表于 2019-6-18 11:43 | 只看該作者
還需要下載這個(gè)庫--Adafruit_Sensor
https://github.com/adafruit/Adafruit_Sensor

回復(fù)

使用道具 舉報(bào)

393#
ID:513258 發(fā)表于 2019-6-18 11:51 | 只看該作者
需要的材料和硬件連接
注意的是這塊板子的額定電壓是3.3v,且同時(shí)支持兩種連接方式: I2C 和 SPI ,下面的連接方式是SPI的連接方式和程序。





回復(fù)

使用道具 舉報(bào)

394#
ID:513258 發(fā)表于 2019-6-18 11:59 | 只看該作者
左邊的是BMP280的6個(gè)接口,右邊是Arduino的6個(gè)接口,兩者用杜邦線連接即可。將USB線纜連接到電腦,選擇好合適的開發(fā)板以及端口,上傳并打開串口監(jiān)視器,查看數(shù)值變化。


GY-BMP 280        Arduino UNO
VCC                                 3.3v
GND                                 gnd
SCL                                 13
SDA                                 11
CSB                                 10
SDO                                 12


備注:不要使用5V,可能會(huì)損壞BMP280傳感器







回復(fù)

使用道具 舉報(bào)

395#
ID:513258 發(fā)表于 2019-6-18 12:03 | 只看該作者

回復(fù)

使用道具 舉報(bào)

396#
ID:513258 發(fā)表于 2019-6-18 12:06 | 只看該作者
  1. /*
  2. 【Arduino】37種傳感器模塊系列實(shí)驗(yàn)(27)
  3. 實(shí)驗(yàn)二十七:GY-BMP280-3.3 高精度大氣壓強(qiáng)傳感器模塊(高度與溫度計(jì))
  4. */

  5. #include <Wire.h>
  6. #include <SPI.h>
  7. #include <Adafruit_Sensor.h>  
  8. #include <Adafruit_BMP280.h>

  9. #define BMP_SCK 13  
  10. #define BMP_MISO 12
  11. #define BMP_MOSI 11
  12. #define BMP_CS 10

  13. //Adafruit_BMP280 bmp;
  14. //Adafruit_BMP280 bmp(BMP_CS);
  15. Adafruit_BMP280 bmp(BMP_CS, BMP_MOSI, BMP_MISO,  BMP_SCK);  

  16. void setup() {
  17.   Serial.begin(9600);
  18.   Serial.println(F("BMP280 測試"));
  19.   
  20.   if (!bmp.begin()) {  
  21.     Serial.println(F("找不到對(duì)應(yīng)的傳感器"));
  22.     while (1);
  23.   }
  24. }

  25. void loop() {
  26.     Serial.print(F("溫度 = "));
  27.     Serial.print(bmp.readTemperature());
  28.     Serial.println(" *C");
  29.    
  30.     Serial.print(F("氣壓 = "));
  31.     Serial.print(bmp.readPressure());
  32.     Serial.println(" Pa");

  33.     Serial.print(F("海拔 = "));
  34.     Serial.print(bmp.readAltitude(1013.25));
  35.     Serial.println(" m");
  36.    
  37.     Serial.println();
  38.     delay(2000);
  39. }
復(fù)制代碼


回復(fù)

使用道具 舉報(bào)

397#
ID:513258 發(fā)表于 2019-6-18 12:44 | 只看該作者

回復(fù)

使用道具 舉報(bào)

398#
ID:513258 發(fā)表于 2019-6-18 12:44 | 只看該作者

回復(fù)

使用道具 舉報(bào)

399#
ID:513258 發(fā)表于 2019-6-18 13:25 | 只看該作者
實(shí)驗(yàn)二十八:5050 RGB全彩LED模塊 KY-009


5050 RGB燈珠是LED燈珠的一種,5050是以產(chǎn)品尺寸命名而來,RGB是指紅光、綠光、藍(lán)光三基色。主要特點(diǎn)有:
1、低電壓驅(qū)動(dòng),環(huán)保節(jié)能;
2、體積小,安裝簡便;
3、亮度高,散射角度大,一致性好
4、主要應(yīng)用于LED 軟燈條、LED 硬燈條、LED 模組、LED 背光源等。





回復(fù)

使用道具 舉報(bào)

400#
ID:513258 發(fā)表于 2019-6-18 14:36 | 只看該作者
內(nèi)部結(jié)構(gòu)與規(guī)格圖






回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表