O¿c các b¿n vào đây tham khÁo nhé cách cài nhé:

Một phần của tài liệu L¾P TRÌNH ĐIÀU KHIÂN ARDUINO CHO NG£äI MâI BÀT ĐÄU V2 (Trang 27 - 38)

http://tdhshop.com.vn/huong-dan-cai-thu-vien-vao-arduino-ide-ho-tro-cho- viec-lap-trinh

K¿t nßi cÁm bi¿n DHT11 vãi m¿ch Arduino

DHT11 Arduino UNO R3

GND 5V

Vcc GND

L¿p trìnhđiÁu khiÃn: (chƠÂng trỡnh ny khơng có sā tham gia cÿa LCD) Chúng ta xem dÿ lißu trāc ti¿p trên Serial port

#include "DHT.h"

const int DHTPIN = 2; //Đác dą liệu tā DHT11 ở chân 2 trên m¿ch Arduino

const int DHTTYPE = DHT11; //Khai báo lo¿i cÁm biÁn, có 2 lo¿i là DHT11 và DHT22 DHT dht(DHTPIN, DHTTYPE);

void setup() {

Serial.begin(9600);

dht.begin(); // Khởi đáng cÁm biÁn }

void loop() {

float h = dht.readHumidity(); //Đác đá Ám float t = dht.readTemperature(); //Đác nhiệt đá Serial.print("Nhiet do: ");

Serial.println(t); //XuÃt nhiệt đá Serial.print("Do am: ");

Serial.println(h); //XuÃt đá Ám

Serial.println(); //Xuống hàng delay(1000); //Đợi 1 giây }

Sau khi upload chÔÂng trỡnh lờn m¿ch Arduino, b¿n hãy bÃm Ctrl + Shift + M mỗ ca só Serial Monitor và xem k¿t quÁ.

Mát l°u ý nho nhß cho những b¿n lập trình nâng cao, đó là cÁm biÁn DHT11 s¿ "treo" (delay) ch°¡ngtrình cÿa b¿n trong q trình nó đọc nhiát đá, đá Ám!

Màn hình LCD

Thơng th°ßng, đá sử dụng màn hình LCD, b¿n s¿ phÁi mÃt rÃt nhißu chân trên Arduino đá đißu khián.

Do vậy, đá đ¡n giÁn hóa cơng viác, ng°ßi ta đã t¿o ra mát lo¿i m¿ch đißu khián màn hình LCD sử dụng giao tiÁp I2C. Nói mát cách đ¡n giÁn, b¿n chỉ tán ... 2 dây đá đißu khián màn hình, thay vì 8 dây nh° cách thơng th°ßng.

B¿n chỉ viác hàn m¿ch vào nh° thÁ này là xong.

2 chân SDA và SCL là 2 chân tín hiáu dùng cho giao tiÁp I2C.

Download và cài đặt thư viện hỗ trợ sử dụng màn hình LCD qua giao tiếp I2C: http://tdhshop.com.vn/tong-hop-cac-thu-vien-cho-arduino

NÁu b¿n khơng có module hß trợ này, b¿n vẫn có thể điều khiển màn hình theo cỏch thụng thÔỏng. Tuy nhiờn s rt tn thỏi gian v chƠa chc bn s lm Ơc !

K¿t nßi module màn hình vãi Arduino

Module màn hình LCD (16 x

2 Arduino

GND GND

SDA A4 SCL A5 L¿p trìnhđiÁu khiÃn: Test màn hình LCD. #include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,16,2);

// lÔu ý mỏt số lo¿i LCD l¿i să dÿng đßa chỉ : 03F

//0x27 là đßa chỉ màn hình trong bus I2C. Ph¿n này chúng ta khơng c¿n phÁi q bận tâm vì h¿u hÁt màn hình (20x4,...) u nhƠ th ny!

//16 là số cát cāa màn hình (nÁu dùng lo¿i màn hình 20x4) thì thay bằng 20 //2 là số dịng cāa màn hình (nÁu dùng lo¿i màn hình 20x4) thì thay bằng 4 void setup() {

lcd.init(); //Khởi đáng màn hình. Bắt đ¿u cho phép Arduino să dÿng màn hình lcd.backlight(); //Bật đèn nền

lcd.print("Hello"); //XuÃt ra chą Hello, m¿c đßnh sau khi init thì con trỏ t¿i cát 0 hng 0 (trong C, khỏc vịi quy Ơịc ca tiÁng Việt, mái chỉ số đều bắt đ¿u bằng số 0, vì vậy b¿n c¿n hiểu rằng, nÁu ta kẻ mát bÁng có 2 hàng và 16 cát thì ơ góc trên cựng bờn trỏi l ụ (0,0) tƠÂng t vßi các ơ khác, ta cÿ tăng d¿n giá trß lên!

lcd.setCursor(0,1); //Ơa con trỏ tßi hàng 1, cát 0 lcd.print("tdhshop !");

}

void loop() { }

K¿t hợp đác nhißt đá đá - đá Çm và xt ra màn hình: (sau khi đã nßi LCD nhƠ trờn tiờp tc kt nịi vói DHT11 vói s ỏ nịi dõy nhƠ hỡnh trờn)

Bây giß b¿n đã biÁt cách đọc nhiát đá, đá Ám rồi và cũng đã biÁt xt ra màn hình. Vậy bây giß chúng ta chỉ viác kÁt hợp cÁ 2 l¿i đá đ°ợc mát đo¿n code nh° thÁ này:

N¿p code trên vào arduino và cùng xem kÁt quÁ nhé:

#include <DHT.h> #include <Wire.h>

#include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27,16,2); const int DHTPIN = 2;

const int DHTTYPE = DHT11; DHT dht(DHTPIN, DHTTYPE); byte degree[8] = { 0B01110, 0B01010, 0B01110, 0B00000, 0B00000, 0B00000, 0B00000, 0B00000 }; void setup() { lcd.init(); lcd.backlight(); lcd.print("Nhiet do: "); lcd.setCursor(0,1); lcd.print("Do am: "); lcd.createChar(1, degree); dht.begin();

}

void loop() {

float h = dht.readHumidity(); float t = dht.readTemperature();

if (isnan(t) || isnan(h)) { // Kiểm tra xem thă việc đác giá trß có bß thÃt b¿i hay khơng. hàm isnan

b¿n xem t¿i đây http://arduino.vn/reference/isnan

} else { else { lcd.setCursor(10,0); lcd.print(round(t)); lcd.print(" "); lcd.write(1); lcd.print("C"); lcd.setCursor(10,1); lcd.print(round(h)); lcd.print(" %"); } } 9. CÀM BI¾N NHIÞT Đà (LM35).

CÁm biÁn nhiát đá LM35 là mát lo¿i cm bin tÔÂng t rÃt hay đ°ợc āng dụng trong các āng dụng đo nhiát đá thßi gian thực. Vì nó ho¿t đáng khá chính xác với sai sá nhß, đồng thßi với kích th°ớc nhß và giá thành rÁ là mát trong những °u điám cÿa nó. Vì đây là cÁm biÁn t°¡ng tự (analog sensor) nên ta có thá dß dàng đọc đ°ợc giá trị cÿa nó bằng hàm analogRead(). Nào, cùng nhau tìm hiáu thơi!

Qua bài viÁt này, mình hi vọng nó s¿ đem l¿i cho b¿n mát vài m¿o nhß đá āng dụng hàm analogRead() mát cách nhu¿n nhuyán, và bật mí cho b¿n cách sử dụng cÁm biÁn LM35 - mát cÁm biÁn nhiát đá rÃt hay và dß sử dụng!

PhÅn cāng

 Arduino UNO

 Breadboard

 Dây cắm breadboard

Giãi thißu vÁ cÁm bi¿n LM35:

LM35 là mát cÁm bi¿n nhißt đá analog:

Nhiát đá đ°ợc xác định bằng cách đo hiáu đián thÁ ngõ ra cÿa LM35. → Đ¡n vị nhiát đá: °C.

→ Nhiát đá thay đổi tuyÁn tính: 10mV/°C

Sơ đồ chân của LM35

Đá chính xác thực tÁ: 1/4°C á nhiát đá phịng và 3/4°C ngồi khng -55°C tới

150°C

LM35 có hiáu năng cao, cơng st tiêu thụ là 60uA

CÁm bi¿n LM35 ho¿t đáng bằng cách cho ra mát giá trß hißu đißn th¿ nhÃt đßnh t¿i chân Vout (chân giÿa) āng vãi mßi māc nhißt đá.

Nh° vậy, bằng cách đ°a vào chân bên trái cÿa cÁm biÁn LM35 hiáu đián thÁ 5V,

chân phÁi nái đÃt, đo hiáu đián thÁ á chân giữa bằng các pin A0 trên arduino (giáng y hát cách đọc giá trị biÁn trá), b¿n s¿ có đ°ợc nhiát đá (0-100ºC) bằng cơng thāc:

float temperature = (5.0*analogRead(A0)*100.0/1024.0);

Với LM35, b¿n có thá tự t¿o cho mình m¿ch cÁm biÁn nhiát đá sử dụng LM35 và tự đáng ngắt đián khi nhiát đá v°ợt ng°ỡng tái đa, đóng đián khi nhiát đá thÃp h¡n ng°ỡng tái thiáu thơng qua module r¡ le...

LM35 thay đãi nhißt đá nhanh và chính xác.

LÁp m¿ch:

L¿p trìnhdiÁu khiÃn:

int sensorPin = A0;// chân analog kÁt nối tßi cÁm biÁn LM35 void setup() {

Serial.begin(9600); //Khởi đáng Serial ở mÿc baudrate 9600

// B¿n không c¿n phÁi pinMode cho cỏc chõn analog trƠịc khi dựng nú }

void loop() {

//đác giá trß tā cÁm biÁn LM35

int reading = analogRead(sensorPin);

//tính ra giỏ trị hiu in th (Ân vị Volt) t giá trß cÁm biÁn float voltage = reading * 5.0 / 1024.0;

// ở trên mình đã gißi thiệu, cÿ mßi 10mV = 1 đá C.

// Vì vậy nÁu bin voltage l bin lƠu hiu in th (Ân vị Volt) // thì ta ch vic nhõn voltage cho 100 l ra Ôc nhit đá! float temp = voltage * 100.0;

Serial.println(temp); /*Mẹo:

*/

delay(1000);//đợi 1 giây cho l¿n đác tiÁp theo }

10.L¾P TRÌNH ARDUINO VâI CÀM BI¾N KHÍ GAS ( MQ2).

à đây ta s¿ dùng Module cÁm biÁn khí ga MQ2-GAS. Đây là cÁm biÁn indoor nên b¿n phÁi đá nó trong nhà á nhiát đá phịng. Māc khí GAS nhận đ°ợc b¿n đọc vß á đ¿u ra d¿ng Analog cÿa nó. Với Arduino thì ta dùng các chân Analog cÿa nó đá đọc.

S¡ đồ nái dây giữa arduino và CB khí gas (MQ2).

S¡ đồnái dây theo bÁng này:

Arduino MQ2

A0 Aout VCC 5V GND GND

Một phần của tài liệu L¾P TRÌNH ĐIÀU KHIÂN ARDUINO CHO NG£äI MâI BÀT ĐÄU V2 (Trang 27 - 38)

Tải bản đầy đủ (PDF)

(56 trang)