一、傳感器*
1、溫濕度傳感器
????????DHT11它采用專用的數字采集技術和溫濕度傳感器技術,包括一個電阻式感濕元件和NTC測溫元件,并與一個高性能的8位單片機連接。DATA端采用串行接口(單線雙向)與微控制器進行同步和通信。
?????????DHT11的供電電壓為3~5.5V。傳感器上電后,要等待1s以越過不穩定狀態,在此期間無需發送任何指令。電源引腳(VDD,GND)之間可增加一個100nF的電容,用于去耦濾波。
溫濕度傳感器模塊接口:
????????? VCC —電源引腳
????????? GND —電源引腳
????????? DATA? —數字引腳?
dht11類庫函數
函數 | 解釋 |
---|---|
DHT11.read(pin) | 獲取返回狀態碼 pin:與DATA端連接的引腳。 返回:0:OK? -1:Error -2:Timeout |
DHT11.humidity | 濕度值 |
DHT11.temperature | 溫度值 |
2、空間運動傳感器
3、溫度傳感器
????????DS18B20是常用的數字溫度傳感器,其輸出的是數字信號,具有體積小,硬件開銷低,抗干擾能力強,精度高的特點。測溫范圍 -55℃~+125℃,固有測溫誤差1℃。
????????DS18B20采用單總線接口方式,在與微處理器連接時僅需要一條口線即可實現微處理器與DS18B20的雙向通訊。
????????? ?單總線(One-Wire)采用單根信號線,實現數據的雙向傳輸,具有節省I/O資源、結構簡單、便于擴展和維護等特點。
二、電機
1、步進電機
步進電機是將電脈沖轉化為角位移的執行元件。當步進電機驅動器接收到一個脈沖信號時,它就驅動步進電機按設定的方向轉動一個固定的角度(即步距角)。可以通過控制脈沖個數來控制角位移量,從而達到準確定位的目的,同時也可以通過控制脈沖頻率來控制電機轉動的速度和加速度,從而達到調速的目的。
?工作模式
?它的工作模式分為單四拍、雙四拍、四相八拍三種工作模式。
?單四拍
正轉繞組的通電順序: A→B→C→D→A→… 。
反轉繞組的通電順序: D→C→B→A→D→… 。
雙四拍
正轉繞組的通電順序: AB→BC →CD→DA→AB。
反轉繞組的通電順序: DA→CD →BC→AB→DA。
?四相八拍
正轉繞組的通電順序: A→AB→B→BC→C→CD→D→DA→A。
反轉繞組的通電順序: A→DA→D→CD→C→BC→B→AB→A。
2、直流電機
????????直流電機將直流電能轉換成機械能(直流電動機)的旋轉電機。
????????直流電機的調速方式:(1)改變電機兩端的電壓 ?(2)改變磁通量 ?(3)串聯調節電阻。電壓越大,轉速越快,改變電壓是調速常用辦法,使用脈沖寬度調制PWM方法,輸入不同占空量的方波,改變直流電機電樞兩端的電壓,即可改變直流電機轉速,實現調速功能,可以實現無級調速。
????????直流電機的換向方法:通過改變輸入電壓極性實現,即反轉電源輸入端的正負極連接方向。
?
3、舵機
三、超聲波測距*
????????HC-SR04是一種應用廣泛的超聲波測距模塊,通過I/O接口給Trig端發測試信號,最少10us的高電平信號,模塊會自動發送8個40kHz聲波,并自動檢測是否有聲波返回。若有信號返回則通過Echo端輸出高電平。(兩次高電平的間隔時間*聲音的速度)/2=距離。
HC-SR04類庫函數
函數 | 解釋 |
---|---|
SR04 sr04(echo,trig) | 類實例化。 |
sr04.Distance() | 讀取測量距離,單位cm。 |
案例:
#include "SR04.h" //添加庫函數
#define TRIG_PIN 6 //定義引腳
#define ECHO_PIN 7 //定義引腳
SR04 sr04 = SR04(ECHO_PIN,TRIG_PIN); //構造函數
long a;
void setup() {Serial.begin(9600); //定義串口波特率Serial.println("Example written by Coloz From Arduin.CN");delay(1000);
}
void loop() {a=sr04.Distance(); //讀取障礙物和SR04的距離Serial.print(a); //送串口監視器顯示Serial.println("cm");delay(1000);
}
四、蜂鳴器
????????蜂鳴器是一種一體化結構的電子訊響器,采用直流電壓供電,廣泛應用于計算機、打印機、復印機、報警器、電子玩具、汽車電子設備、電話機、定時器等電子產品中作 發聲器件。
????????有源蜂鳴器內部有振蕩電路,能將恒定的直流電轉化成一定頻率的脈沖信號,一旦供電,蜂鳴器就會發出聲音。 ? ?
????????無源蜂鳴器內部不帶震蕩源,需要加方波信號PWM能夠發聲。頻率不同,震蕩出來的音調也不同。
int buzzer = 8; //設置控制蜂鳴器的數字引腳
void setup() { pinMode(buzzer,OUTPUT); //設置數字引腳為輸出模式
}
void loop() { unsigned char i, j; //定義變量 for(i=0; i<80; i++) { //輸出一個頻率的聲音 digitalWrite(buzzer,HIGH); //發聲 delay(1); //延時1ms digitalWrite(buzzer,LOW); //不發聲 delay(1); } //延時1 ms for(j=0; j<100; j++) { //輸出另一個頻率的聲音 digitalWrite(buzzer,HIGH); //發聲 delay(2); //延時2ms digitalWrite(buzzer,LOW); //不發聲 delay(2); } //延時2ms
}
五、SD卡讀寫模塊
????????SD卡支持兩種總線方式:SD方式與SPI方式。其中SD方式采用6線制,使用CLK、CMD、DAT0~DAT3進行數據通信(PC等設備使用)。而SPI方式采用4線制,使用CS、CLK、DataIn和DataOut進行數據通信。SD方式的數據傳輸速度比SPI方式要快,但采用單片機對SD卡進行讀寫時一般都采用SPI模式。
?????????Arduino的I/O接口輸出5V高電平,SD卡的工作電壓是3.3V,故需要通過電平轉換才可與Arduino連接,可以使用SD讀寫模塊與Arduino連接。
?
引腳編號 | SPI模式 | ||
名稱 | 類型 | 描述 | |
1 | CS | I | 片選 |
2 | DI | I | 數據輸入 |
3 | VSS1 | S | 電源地 |
4 | VDD | S | 電源 |
5 | SCLK | I | 時鐘 |
6 | VSS2 | S | 電源地 |
7 | DO | O或PP | 數據輸出 |
8 | X | ||
9 | X |
SD卡類庫函數
(1)name()
????????功能:返回文件名。
????????語法格式:file.name()。
????????參數說明:file:File類的一個實例 ( SD.open()的返回值)。
????????返回值:文件名。
(2)available()
????????功能:檢查文件的字節數,available()繼承了流實用類。
????????語法格式: file.available()。
????????參數說明:file:File類的一個實例 ( SD.open()的返回值)。
????????返回值:文件的字節數,int類型。?
(3)close()
????????功能:關閉文件。
????????語法格式:file.close()。
????????參數說明:file:File類的一個實例 ( SD.open()的返回值)。
????????返回值:無。
(4)flush()
????????功能:確保寫到文件里的字節存儲到SD卡上。當文件關閉時,自動完成。
????????語法格式:file.flush()。
????????參數說明:file:File類的一個實例 ( SD.open()的返回值)。
????????返回值:無。
(5)peek()
????????功能:從文件中讀取下一個字節,連續調用該函數將返回同一個值。peek()繼承了流實用類。
????????語法格式:file.peek()。
????????參數說明:file:File類的一個實例 ( SD.open()的返回值)。
????????返回值:下一個字節或字符,若無則返回-1。
(6)position()
????????功能:獲取文件的當前位置(將要讀寫的下一個字節的位置)。
????????語法格式:file.position()。
????????參數說明:file:File類的一個實例 ( SD.open()的返回值)。
????????返回值:文件位置,unsigned long類型。
(7)print()
????????功能:輸出數據到以寫方式打開的文件。按ASCII形式輸出數字(例如:123按'1', '2', '3'輸出)。
????????語法格式:file.print(data) 和file.print(data, BASE)。
????????參數說明:file:File類的一個實例 ( SD.open()的返回值)。 data:輸出數據,char、 byte、 int、 long、或 string類型。 BASE (可選參數):輸出數據的進制:BIN是二進制;DEC是十進制;OCT 是八進制;HEX是十六進制。
????????返回值:byte:輸出的字節數,讀取該數據是可選操作
六、無線射頻識別RFID模塊
????????射頻識別技術通過無線電信號識別特定的目標并讀寫相關數據,常用的有低頻30kHz~300kHz,高頻3MHz~30MHz,超高頻3GHz~30GHz等微波技術。RFID讀寫器有移動式和固定式兩種。
????????一套完整的RFID系統由閱讀器(Reader)、電子標簽(TAG)也就是所謂的應答器(Transponder)及應用軟件三個部分組成。
RFID的類庫函數
函數 | 解釋 |
---|---|
RFID rfid(SS,RST) | 類實例化對象。 |
rfid.isCard() | 尋卡。 |
rfid.readCardSerial() | 讀取卡的串口信息,返回卡的4個字節和一個字節校驗碼序列號到字符數組serNum。 |
rfid.Init() | 初始化。 |
rfid.auth(authMode,BlockAddr,SectorKay,serNum) | 驗證卡片密碼。 unsigned char auth:密鑰驗證模式 unsigned char* SectorKey:扇區密碼 |
rfid.read(blockAddr,recvData) | 讀數據塊。 unsigned char blockAddr:塊地址 unsigned char* recvData:讀出的數據塊 |
rfid.write(blockAddr,writeData) | 寫數據快。 unsigned char blockAddr:塊地址 unsigned char* writeData:寫入16字節數據到塊 |
rfid.selectTag(serNum) | 選擇卡片并讀取卡的存儲器容量。 unsigned char* serNum:卡的序列號。 |
rfid.Halt() | 命令卡片進入休眠狀態。 |
七、繼電器
?????????繼電器(英文名稱:relay)是電控制器件,是一種能把小信號(輸入信號)轉換成高電壓大功率控制信號(輸出信號)的一種“自動開關”。繼電器能控制多個對象和回路,能控制遠距離對象,故繼電器在自動控制及遠程控制領域有較廣泛的應用。例如控制電燈、電冰箱、洗衣機、車庫門等。按繼電器的工作原理或結構特征分類,繼電器可分為:電磁繼電器、固體繼電器、舌簧繼電器和時間繼電器等。按繼電器的外形尺寸可分為:微型繼電器、超小型微型繼電器和小型繼電器等。