Mô tả tổng quan về arduino Hướng dẫn cài đặt môi trường lập trìnhViết chương trình từ cơ bản đến nâng caoMô tả từng dòng lệnh của chương trìnhGiao tiếp với các mô đun có sẵn phổ biến trên thị trường
Trang 114 chân I/O kỹ thuật số tương thích với nhiều board mở rộng khác nhau.
Được giới thiệu vào năm 2005, những nhà thiết kế của Arduino cố gắng mang đến một phương thức dễ dàng, không tốn kém cho những người yêu thích, sinh viên và giới chuyên nghiệp để tạo ra những thiết bị có khả năng tương tác với môi trường thông qua các cảm biến và các cơ cấu chấp hành Những ví dụ phổ biến cho những người yêu thích mới bắt đầu bao gồm các robot đơn giản, điều khiển nhiệt độ và phát hiện chuyển động Đi cùng với nó là một môi trường phát triển tích hợp (IDE) chạy trên các máy tính cá nhân thông thường và cho phép ngườidùng viết các chương trình cho mạch bằng ngôn ngữ Arduino, một ngôn ngữ riêng được phát triển dựa trên C/C++
Giá của các board Arduino dao động xung quanh €20, hoặc $27, nếu được "làm giả" thì giá
có thể giảm xuống thấp hơn $9 Các board Arduino có thể được đặt hàng ở dạng được lắp sẵn hoặc dưới dạng các kit tự-làm-lấy Thông tin thiết kế phần cứng được cung cấp công khai để những ai muốn tự làm một mạch Arduino bằng tay có thể tự mình thực hiện được (mã nguồn mở) Người ta ước tính khoảng giữa năm 2011 có trên 300 ngàn mạch Arduino chính thức đã được sản xuất thương mại, và vào năm 2013 có khoảng 700 ngàn mạch chính thức đã được đưa tới tay người dùng
1.2 Phần cứng của arduino
Một mạch Arduino bao gồm một vi điều khiển AVR với nhiều linh kiện bổ sung giúp dễ dàng lập trình và có thể mở rộng với các mạch khác Một khía cạnh quan trọng của Arduino là các kết nối tiêu chuẩn của nó, cho phép người dùng kết nối với CPU của board với các module
thêm vào có thể dễ dàng chuyển đổi, được gọi là shield Vài shield truyền thông với board
Arduino trực tiếp thông qua các chân khác nhau, nhưng nhiều shield được định địa chỉ thông quaserial bus I²C-nhiều shield có thể được xếp chồng và sử dụng dưới dạng song song Arduino chính thức thường sử dụng các dòng chip megaAVR, đặc biệt là ATmega8, ATmega168,
ATmega328, ATmega1280, và ATmega2560 Một vài các bộ vi xử lý khác cũng được sử dụng bởi các mạch Aquino tương thích Hầu hết các mạch gồm một bộ điều chỉnh tuyến tính 5V và một thạch anh dao động 16 MHz (hoặc bộ cộng hưởng ceramic trong một vài biến thể), mặc dù một vài thiết kế như LilyPad chạy tại 8 MHz và bỏ qua bộ điều chỉnh điện áp onboard do hạn chế về kích cỡ thiết bị Một vi điều khiển Arduino cũng có thể được lập trình sẵn với một boot loader cho phép đơn giản là upload chương trình vào bộ nhớ flash on-chip, so với các thiết bị
Trang 2khác thường phải cần một bộ nạp bên ngoài Điều này giúp cho việc sử dụng Arduino được trực tiếp hơn bằng cách cho phép sử dụng 1 máy tính gốc như là một bộ nạp chương trình.
Theo nguyên tắc, khi sử dụng ngăn xếp phần mềm Arduino, tất cả các board được lập trình thông qua một kết nối RS-232, nhưng cách thức thực hiện lại tùy thuộc vào đời phần cứng Các board Serial Arduino có chứa một mạch chuyển đổi giữa RS232 sang TTL Các board Arduino hiện tại được lập trình thông qua cổng USB, thực hiện thông qua chip chuyển đổi USB-to-serial như là FTDI FT232 Vài biến thể, như Arduino Mini và Boarduino không chính thức, sử dụng một board adapter hoặc cáp nối USB-to-serial có thể tháo rời được, Bluetooth hoặc các phương thức khác (Khi sử dụng một công cụ lập trình vi điều khiển truyền thống thay vì ArduinoIDE, công cụ lập trình AVR ISP tiêu chuẩn sẽ được sử dụng.)
Board Arduino sẽ đưa ra hầu hết các chân I/O của vi điều khiển để sử dụng cho những mạch ngoài Diecimila, Duemilanove, và bây giờ là Uno đưa ra 14 chân I/O kỹ thuật số, 6 trong số đó
có thể tạo xung PWM (điều chế độ rộng xung) và 6 chân input analog, có thể được sử dụng như
là 6 chân I/O số Những chân này được thiết kế nằm phía trên mặt board, thông qua các header cái 0.10-inch (2.5 mm) Nhiều shield ứng dụng plug-in cũng được thương mại hóa Các board Arduino Nano, và Arduino-compatible Bare Bones Board và Boarduino có thể cung cấp các chân header đực ở mặt trên của board dùng để cắm vào các breadboard
Có nhiều biến thể như Arduino-compatible và Arduino-derived Một vài trong số đó có chức năng tương đương với Arduino và có thể sử dụng để thay thế qua lại Nhiều mở rộng cho
Arduino được thực thiện bằng cách thêm vào các driver đầu ra, thường sử dụng trong các trường học để đơn giản hóa các cấu trúc của các 'con rệp' và các robot nhỏ Những board khác thường tương đương về điện nhưng có thay đổi về hình dạng-đôi khi còn duy trì độ tương thích với các shield, đôi khi không Vài biến thể sử dụng bộ vi xử lý hoàn toàn khác biệt, với các mức độ tương thích khác nhau
1.3 Phần mềm
Môi trường phát triển tích hợp (IDE) của Arduino là một ứng dụng cross-platform (đa nền tảng) được viết bằng ngôn ngữ lập trình Java, và từ IDE này sẽ được sử dụng cho Ngôn ngữ lập trình xử lý (Processing programming language) và project Wiring Nó được thiết kế để dành cho những người mới tập làm quen với lĩnh vực phát triển phần mềm Nó bao gồm một chương trình code editor với các chức năng như đánh dấu cú pháp, tự động brace matching, và tự động canh
lề, cũng như compile(biên dịch) và upload chương trình lên board chỉ với 1 cú nhấp chuột Một
chương trình hoặc code viết cho Arduino được gọi là một sketch.
Các chương trình Arduino được viết bằng ngôn ngữ Arduino dựa trên C/C++ Arduino IDE
đi kèm với một thư viện phần mềm được gọi là "Wiring", từ project Wiring gốc, có thể giúp các thao tác input/output được dễ dàng hơn Người dùng chỉ cần định nghĩa 2 hàm để tạo ra một chương trình vòng thực thi (cyclic executive) có thể chạy được:
setup() : hàm này chạy mỗi khi khởi động một chương trình, dùng để thiết lập các cài đặt
loop() : hàm này được gọi lặp lại cho đến khi tắt nguồn board mạch
Một chương trình điển hình cho một bộ vi điều khiển đơn giản chỉ là làm cho một bóng đèn Led sáng/tắt Trong môi trường Arduino, ta sẽ phải viết một chương trình giống như sau:
#define LED_PIN 13
Trang 3void setup(){
pinMode(LED_PIN, OUTPUT); //Thiết lập chân 13 làm chân đầu ra số
}
Void loop(){
digitalWrite (LED_PIN, HIGH); //Bật LED on
delay (1000); //chờ trong 1000ms = 1 giây
digitalWrite (LED_PIN, LOW); // Tắt LED off
delay (1000); //chờ trong 1 giây
}
Một đặc điểm của hầu hết các board Arduino là chúng có một đèn LED và điện trở nối giữa chân 13 với đất; một đặc điểm thuận tiện cho nhiều ứng dụng đơn giản Đoạn code ở trên không thể đọc được bởi một compiler C++ chuẩn như là một chương trình đúng, vì vậy khi ta click vào nút "Upload to I/O board" trong IDE này, một bản copy của đoạn code này sẽ được ghi vào một file tạm với một extra include header ở phía trên cùng và một hàm main() đơn giản nằm ở phía đáy, để làm cho thành một chương trình C++ khả dụng
Arduino IDE này sử dụng GNU toolchain và AVR Libc để biên dịch chương trình, và sử dụng avrdude để upload chương trình lên board
Vì nền tảng của Arduino là các vi điều khiển của Atmel, cho nên môi trường phát triển của Atmel, AVR Studio hoặc các phiên bản Atmel Studio mới hơn, cũng có thể được sử dụng để làmphần mềm phát triển cho Arduino
1.4 Arduino Uno R3
Hiện nay trên thị trường có rất nhiều phiên bản phần cứng cho Arduino như Arduino Uno R3, Arduino Uno R3 CH340, Arduino Mega2560, Arduino Nano, Arduino Pro Mino, Arduino Lenadro, Arduino Industrial
Tuy nhiên, thông dụng và được sử dụng phổ biến nhất là Arduino Uno R3, do đó, trong toàn bộ hướng dẫn này sẽ sử dụng mô đun này
Các đặc điểm của Arduino Uno R3
Trang 4 Arduino Uno đi kèm với giao diện USB tức là cổng USB được thêm vào bo mạch Arduino để phát triển giao tiếp nối tiếp với máy tính.
Bộ vi điều khiển Atmega328 sử dụng trên bo mạch đi kèm với một số tính năng như hẹn giờ, bộ đếm, ngắt, chân PWM, CPU, chân I / O và dựa trên xung nhịp 16 MHz giúp tạo ra nhiều tần số và số lệnh hơn trong mỗi chu kỳ.
Đây là một nền tảng mã nguồn mở, nơi mọi người có thể sửa đổi và tối ưu hóa bảng dựa trên số lượng hướng dẫn và nhiệm vụ muốn đạt được.
Arduino đi kèm với một tính năng điều chỉnh tích hợp giúp giữ điện áp trong tầm kiểm soát khi thiết bị được kết nối với thiết bị bên ngoài.
Chân reset trên Arduino để thiết lập lại toàn bộ và đưa chương trình đang chạy trở về ban đầu. Chân reset này hữu ích khi Arduino bị treo khi đang chạy chương trình
Có 14 chân I / O digital và 6 chân analog được tích hợp trên Arduino cho phép kết nối bên ngoài với bất kỳ mạch nào với Arduino. Các chân này cung cấp sự linh hoạt và dễ sử dụng cho các thiết bị bên ngoài có thể được kết nối thông qua các chân này.
6 chân analog được đánh dấu là A0 đến A5 và có độ phân giải 10 bit. Các chân này đo từ 0 đến 5V, tuy nhiên, chúng có thể được cấu hình ở phạm vi cao bằng cách sử dụng chức năng analogReference () và chân ISF.
Bộ nhớ flash 13KB được sử dụng để lưu trữ số lượng hướng dẫn dưới dạng mã.
Chỉ cần nguồn 5V để sử dụng với Arduino, hoặc lấy nguồn trực tiếp từ cổng USB. Arduino có thể hỗ trợ nguồn điện bên ngoài lên đến 12 V có thể được điều chỉnh và giới hạn ở mức 5 V hoặc 3,3 V dựa trên yêu cầu của projects.
Trang 52 Cài đặt môi trường lập trình (Arduino IDE) và các công cụ hỗ trợ
(driver)
Để lập trình được cho các board Arduino, chúng ta cần phải có một công cụ gọi
là Intergrated Development Environment (IDE) Công cụ này được đội ngũ kĩ sư của Arduino
phát triển và có thể chạy trên Windows , MAC OS X và Linux Ở đây chúng ta sẽ cài đặt nó trên Windows
2.1 Tải IDE chúng ta làm theo các bước sau:
Bước 1: Truy cập https://www.arduino.cc/en/software
Bước 2: Chọn hệ điều hành mà máy tính bạn đang dùng: Windows, Mac OS,
Trang 6Bước 3: Chọn Just Download để tải trình cài đặt về máy.
Bước 4: Chọn ổ đĩa bạn muốn tải về và nhấn Save Phần mềm đã được tải về máy bạn!
Trang 72.2 Cài đặt Arduino IDE
Bước 1: Mở phần mềm Arduino IDE vừa mới tải về lên.
Bước 2: Phần mềm sẽ hiện ra hộp thoại License Agreement Bạn lần lượt chọn I
agree > chọn Next > nhấn Install.
Trang 8Bước 3: Đợi trong giây lát.
Đợi trong giây lát
Bước 4: Hoàn thành cài đặt.
Trang 92.3 Cài đặt driver CH340 cho Arduino
CH340 là một chíp chuyển đổi có nhiệm vụ chuyển đổi các tín hiệu từ giao tiếp nối tiếp (UART/RS232) sang giao tiếp USB
Do các máy tính hiện đại không có tích hợp sẵn các cổng nối tiếp (UART/RS232), do đó,các thiết bị ngoại vi mà muốn giao tiếp thông qua cổng nối tiếp với máy tính thì phải giao tiếp qua cổng USB (COM ảo)
Vì vậy, ở phần cứng của thiết bị ngoại vi cần sử dụng IC chuyển đổi từ giao tiếp nối tiếp (UART) sang giao tiếp USB (mạch Arduino Uno R3 sử dụng chíp CH340)
Ở phần mềm trên máy tính cần sử dụng một driver để chuyển đổi từ cổng USB sang cổngCOM ảo (RS232)
Do đó, để giao tiếp được với Arduino để nạp chương trình thông qua cổng nối tiếp thì máy tính cần được cài driver CH340
Các bước để cài đặt driver CH340:
Bước 1: Tải driver theo link dưới hoặc tìm kiếm trên google.
https://sparks.gogo.co.nz/assets/_site_/downloads/CH34x_Install_Windows_v3_4.zip
Bước 2: Dải nén bằng phần mềm winrar và nhấn vào cài đặt.
Trang 10 Bước 3: Kiểm tra xem driver đã hoạt động chưa bằng cách khởi động Arduino IDE
như dưới đây:
Chú ý: Tên cổng COM8 có thể thay đổi tùy thuộc vào cổng USB mà thiết bị được kết nối, có thể là COM2, COM3…
Trang 113 Lập trình và nạp chương trình đầu tiên
Trang 123.2 Chuẩn bị phần mềm
Mở phần mềm Arduino IDE
Kiểm tra kết nối
Kiểm tra và chọn cổng kết nối trong phần Tools Port COMxx
Trang 13 Ở hình trên có thể không phải là COM8, phụ thuộc vào cổng USB của máy tính khi thiết bị được kết nối mà máy tính sẽ chuyển đổi đến tên các cổng COM khác nhau, thường là từ COM2 COM10.
3.3 Lập trình chương trình cơ bản và nạp chương trình
Khi tạo một chương trình mới (Sketch), phần mềm tạo sẵn cho chúng ta hai hàm mặc định phải có khi lập trình Arduino
Hàm setup() dùng để cài đặt các thông số ban đầu cho chương trình, khi bật nguồn cho mạch arduino thì con trỏ chương trình sẽ trỏ đến hàm setup() đầu tiên (hàm setup() sẽ chạy đầu tiên khi mạch khởi động)
Hàm loop() sẽ được chạy sau khi hàm setup() kết thúc Hàm loop() là một vòng lặp
vô hạn không bao giờ dừng lại, do đó đây là hàm chính cho chương trình
Để vào ví dụ đầu tiên chúng ta sẽ lập trình kịch bản nháy LED phổ biến khi bắt đầu làm quen với lập trình vi điều khiển ở bất kỳ ngôn ngữ nào
Các bước lập trình một chương trình nháy LED (sử dụng LED được tích hợp sẵn trên phần cứng của mạch Arduino Uno R3) và nạp chương trình được mô tả như dưới đây:
Bước 1: Kiểm tra kết nối phần cứng của LED được thiết kế sẵn trên mạch
Arduino
Trang 14Như hình trên thì Led L trên mạch Arduino được kết nối với chân PB5 của vi điều khiển
và được tham chiếu đến tên của mạch Arduino trên phần mềm là chân 13 Các chân trên phần mềm được gọi theo số thứ tự từ 1 đến 13 chứ không phải dạng tên như trên vi điều khiển.
Như vậy, để điều khiển Led L trên mạch thì ta chỉ cần điều khiển chân 13 trên phần mềm.
Bước 2: Điều khiển Led L sáng/tắt (ON/OFF) là điều khiển chân 13 ở hai mức
logic 0 và 1 (chân dạng số) Tuy nhiên, ở dạng chân số thì chân 13 là kiểu chân số hai hướng (vào/ra), nghĩa là ta cần phải cài đặt cho chân 13 là đầu vào hay đầu ra? Như hình trên ta thấy rằng Led L cần nhận dòng điện đi từ chân 13 vào để sáng,
do đó, chân 13 cần được cài đặt ở dạng chân ra (bơm dòng điện ra Led) Vì vậy, trong hàm cài đặt setup() ta cần cài đặt cho chân 13 là chân ra dạng số.
Hàm pinMode(pin,mode) dùng để điều khiển hướng của chân số.
pin: tên hoặc số chân cần điều khiển mode: Chế độ, OUTPUT ra, INPUT vào.
Bước 3: Để điều khiển Led sáng/tắt, ta điều khiển mức logic ở chân 13 là 1 hoặc
0 (HIGH hoặc LOW) như hình dưới đây:
Trang 15Hàm digitalWrite(pin,value) sử dụng để ghi mức logic ra chân số với:
pin: tên hoặc số chân cần điều khiển
value: Giá trị ghi ra chân (HIGH là mức 1 mức điện áp cao, LOW là mức 0 mức điện áp thấp).
Hàm delay(ms) là hàm tạo trễ (không làm gì cả) với ms là giá trị mili giây.
Bước 4: Kiểm tra lỗi chương trình
Để kiểm tra xem chương trình vừa lập trình có bị lỗi hay không chúng ta nhấn vào biểu tượng verify trên phần mềm như hình dưới
Trang 16Nếu không có lỗi gì thì phần mềm sẽ hiển thị màu trắng với các thông tin như dưới đây.
Nếu có bất kỳ lỗi nào, chương trình sẽ hiển thị tương tự như hình sau:
Trang 17Chương trình báo có lỗi và chỉ ra dòng bị lỗi là do có một kí tự ‘/’ không hợp lệ.
Bước 5: Nạp chương trình.
Để nạp chương trình xuống mạch Arduino thì chúng ta cần kiểm tra lại hết
các kết nối và nhấn vào biểu tượng Upload như hình dưới đây rồi đợi cho đến khi
chương trình được tải xong
Trang 18Nếu quá trình nạp không có lỗi sảy ra phần mềm sẽ báo như sau:
Trang 19Lỗi xảy ra khi kết nối bị hỏng.
Bước 5: Sau khi nạp xong chương trình, để ý Led L trên mạch Arduino, led sẽ
nháy tắt với thời gian chuyển đổi có độ trễ là 1 giây
Trên đây là các bước để thực hiện một chương trình cho Arduino, chương trình ví dụ trên
có tên là VEE_Led_Blink.ino được cung cấp kèm theo tài liệu hoặc tải trên mạng theo
hướng dẫn tải chương trình được mô tả ở phần trước
Trang 20II CÁC MÔ-ĐUN GIAO TIẾP CƠ BẢN
1 Mô đun giao tiếp còi báo (VKI006)
1.1 Giới thiệu
Hầu hết trong các dự án chúng ta đều cần còi báo (buzzer) để báo hiệu một cảnh báo, một sự bắt đầu hay kết thúc công việc nào đó Trong tài liệu này chúng ta sử dụng loại còi báo phổ biến trong các dự án điện tử là còi báo áp điện (piezoelectric buzzer)
Còi báo là một thiết bị đơn giản để tạo ra tiếng bíp với các âm sắc khác nhau (tones) Nguyên
lý làm việc cơ bản của thiết bị là hiệu ứng áp điện Thành phần chính của thiết bị là một tinh thể
áp điện với tính chất đặc biệt là có thể thay đổi hình dạng khi cung cấp một điện áp cho nó.Khi chúng ta cung cấp một điện áp có tần số thay đổi sẽ làm cho tinh thể áp điện liên tục thayđổi hình dạng (rung) tạo ra áp lực trên không khí gây ra hiệu ứng âm thanh
1.2 Hình ảnh và thông số của mô-đun
1.3 Kết nối cảm biến với Arduino
Trang 211.4 Viết và chạy chương trình
Chương trình dưới đây sử dụng chân 7 của mạch Arduino để tạo tiếng bíp với tần số 1Hz (thể
thể thay đổi theo thời gian trễ trong hàm delay).
Chương trình được viết và giải thích như dưới đây:
2 Mô đun giao tiếp rơ le (VRL05)
2.1 Giới thiệu
Rơ-le (Relay) là một công tắc được điều khiển bằng điện bởi một nam châm điện Chúng ta
có thể điều khiển các thiết bị điện tử cao áp bằng cách sử dụng rơ le
Trang 22Nam châm điện trong rơ-le được điều khiển bằng một điện áp thấp từ các bộ vi điều khiển và
ở đầu ra của nó có thể đóng/cắt một điện áp cao
Trong tài liệu này chúng ta sẽ sử dụng một mô đun rơ-le có sẵn để thực hành Mô đun tích hợp mạch điều khiển và 1 rơ-le KY-019 với điện áp điều khiển 5V
Mô đun có kích thước nhỏ gọn, giá thành rẻ, dùng để đóng ngắt các thiết bị AC
(250VAC/10A) hoặc thiết bị DC (30VDC/10A)
Mạch có 3 tiếp điểm đóng ngắt gồm NC (thường đóng), NO (thường mở) và COM (chân chung) được cách ly hoàn toàn với mạch chính Ở trạng thái bình thường chưa kích hoạt thì NC
sẽ nối với COM, khi có tín hiệu kích hoạt (nam châm điện hoạt động) thì NO sẽ kết nối với COM và NC sẽ mất kết nối
2.2 Hình ảnh và thông số của mô-đun
Trang 23COM Tiếp điểm chung
NC Tiếp điểm thường đóng (khi chưa kích hoạt thì NC kết nối với COM)
2.3 Kết nối cảm biến với Arduino
2.4 Viết và chạy chương trình
Chương trình dưới đây sử dụng chân 7 của mach Arduino để điều khiển mô đun rơ le đóng/cắt cuộn dây nam châm điện để bật/tắt đèn điện áp cao 220V
Chương trình được viết và mô tả như hình dưới đây:
Trang 24Quan sát mô đun rơ le để thấy kết quả, cuộn dây nam châm điện trong rơ le “đóng” làm đèn điện sáng trong 3 giây thì rơ le “ngắt” khiến đèn điện tắt 3 giây và lặp lại.
3 Mô đun cảm biến nhiệt độ (VDHT22)
DHT-22 rất phổ biến trong các ứng dụng đo nhiệt độ - độ ẩm môi trường do có giá thành rẻ, kết nối đơn giản với độ chính xác cao Cảm biến sử dụng nguồn phổ biến trong các thiết bị điện
Nhiệt độ Độ chính xác: ±0.5Dải đo : -40 ~ 80oCoC
3.3 Hình ảnh và thông số của mô-đun VDHT-22
Mô-đun VDHT-22 được phát triển dựa trên cảm biến DHT-22 với 3 chân kết nối và một bảng mạch được thiết kế để phù hợp cho việc gá lắp trong các mô hình thực hành cảm biến
Trang 25STT Tên Chức năng
2 Out Đầu ra số (cần có điện trở kéo lên dương nguồn)
3.4 Kết nối VDHT22 với mạch Arduino
Do mô đun VDHT22 giao tiếp với các thiết bị khác bằng chân đầu ra số, do đó, chúng ta cần kết nối chân tín hiệu đầu ra (Out) của cảm biến với một chân vào/ra số của mạch Arduino.Các chân đầu ra số của mạch arduino được mô tả như sơ đồ mạch dưới đây:
Trang 26Trong bài này chúng ta sẽ sử dụng chân (2) của mạch arduino để giao tiếp với cảm biến
Sơ đồ kết nối phần cứng được mô tả như hình dưới đây:
Sử dụng dây cắm và jump đính kèm để kết nối cảm biến như hình
3.5 Tải thư viện và thêm thư viện vào chương trình
Trang 27Cảm biến DHT-22 có đầu ra dạng số giao tiếp 1 dây, do đó để lập trình giao tiếp được với cảm biến thì chúng ta cần phải hiểu về chuẩn giao tiếp một giây
Tuy nhiên, trong bài học này chúng ta chỉ làm quen và giao tiếp với cảm biến (chi tiết về chuẩn giao tiếp một dây sẽ được học trong các tài liệu nâng cao) thông qua thư viện có sẵn với
mã nguồn mở thông qua internet
Nếu muốn tìm hiểu chi tiết về cảm biến, người học có thể truy cập vào link dưới đây:
Chi tiết cảm biến DHT22
Thư viện mã nguồn mở dành cho cảm biến DHT22 có tên là dht.h Thư viện này được cung
cấp miễn phí trên kho mã nguồn mở do đó máy tính cần phải có internet để tải về thư viện này Arduino là một cộng đồng mã nguồn mở và được đóng góp bởi rất nhiều thành viên, do đó, người lập trình nên làm quen với việc sử dụng các thư viện có sẵn (như các thư viện tiêu chuẩn trong các ngôn ngữ lập trình) để phát triển ứng dụng nhanh hơn, học hỏi các kỹ thuật lập trình từ những người đi trước dễ hơn và không phải làm lại những công việc đã có rất nhiều người làm sẵn
Để tải thư viện dht.h và sử dụng thư viện dht.h (cũng như các thư viện khác) thì người dùng cần thực hiện các bước sau:
Bước 1: Vào phần quản lý thư viện của phần mềm, chọn Tools Manage
Libraries…
Trang 28 Bước 2: Màn hình quản lý thư viện xuất hiện, nhập tên “dht” vào ô tìm kiếm và
Enter
Trang 29 Bước 3: Kéo xuống tìm thư viện “DHT sensor library” và nhấn vào Install để
cài đặt thư viện
Bước 4: Sau khi cài đặt thư viện, để sử dụng thư viện chúng ta có thể tìm trong
phần định nghĩa thư viện như hình dưới đây:
Hoặc có thể nhập trực tiếp tên thư viện “include <DHT.h>” vào trong chương trình, sau khi thực hiện xong là chúng ta đã có thể sử dụng được thư viện
3.6 Viết chương trình
Cảm biến DHT22 có 2 tham số đo là nhiệt độ và độ ẩm, do đó, để có thể thấy được các giá trịnày chúng ta sẽ sử dụng cổng nối tiếp (UART, RS232) được tích hợp sẵn trên mạch Arduino để
Trang 30gửi giá trị đo bằng số lên phần mềm máy tính, từ đó có thể hiển thị nhiệt độ và độ ẩm theo thời gian một cách trực quan.
Chương trình được viết và giải thích như hình dưới đây:
Sau khi viết xong chương trình thì nhấn vào gỡ lỗi (biểu tượng verify), nếu không có lỗi xảy ra, nhấn vào biểu tượng Upload để tải chương trình xuống mạch arduino.
Sau khi Upload hoàn thành, chúng ta sử dụng tiện ích Serial Monitor trên thanh công cụ
của phần mềm để nhận các chuỗi kí tự và giá trị cảm biến gửi qua cổng nối tiếp (cũng có thể sử dụng các phần mềm giao tiếp cổng COM khác trên máy tính)
Để vào tiện ích Serial Monitor chúng ta thao tác như hình dưới đây:
Trang 31Màn hình Serial Monitor xuất hiện, nếu không có dữ liệu gửi nên thì cần phải kiểm tra
xem tốc độ giao tiếp có phù hợp với tốc độ đã cài đặt trong chương trình hay chưa?
Kết quả đo được hiển thị như hình trên
Trang 324 Mô đun cảm biến ánh sáng
4.2 Hình ảnh và thông số của cảm biến
Hình trên là cảm biến quang trở được làm bằng chất bán dẫn có trở kháng cao và không
có lớp tiếp giáp Như trên đường đặc tuyến thì giá trị điện trở sẽ thay đổi phụ thuộc vào cường
độ ánh sáng Trong bóng tối, quang trở có điện trở cao đến vài MΩ, nhưng khi có ánh sáng thì điện trở có thể giảm xuống đến dưới 100 Ω
Hoạt động của cảm biến quang trở dựa trên hiệu ứng quang điện trong khối vật chất Khi photon có năng lượng đủ lớn (cường độ ánh sáng) đập vào sẽ làm bật các electron khỏi phân tử,
Trang 33các electron này trở thành tự do trong khối vật chất làm cho chất bán dẫn trở thành chất dẫn điện.Mức độ dẫn điện tương ứng với số photon được hấp thụ.
Cảm biến quang điện cũng phân thành nhiều loại tương ứng với vật liệu chế tạo lên nó như:
Cadimi sunfua (CdS) và Cadimi selenua (CdSe) được dùng cho ánh sáng nhìn thấy
Chì (II) sunfua (PbS) và Indi antimonua (lnSb) được dùng cho phổ hồng ngoại
Gecu là cảm biến dò hồng ngoại xa tốt nhất, được sử dụng trong thiên văn hồng ngoại và quang phổ hồng ngoại
4.3 Hình ảnh và thông số của mô-đun
Mô-đun cảm biến ánh sáng được phát triển từ cảm biến ánh sáng CdS với 1 đầu ra số dùng
để điều khiển các thiết bị và 1 đầu ra tương tự để đo chính xác sự thay đổi của cường độ ánh sáng
Mô-đun có tích hợp biến trở để điều chỉnh mức phát hiện cường độ sáng được dùng trong cácứng dụng như điều khiển bật tắt thiết bị theo ánh sáng, hệ thống cảnh báo trộm, đền chiếu sáng
Trang 34Ở đầu ra số (DO), khi mức ánh sáng xung quanh tăng làm điện trở trên cảm biến CdS giảm, do đó, điện áp phân áp đi vào chân so sánh (Chân 3) của IC LM393 giảm, nếu điện áp này giảm xuống dưới mức điện áp so sánh (được điều chỉnh bởi chiết áp VR1 vào chân 2 của
IC LM393) thì mức logic ở chân 1 sẽ thay đổi (xuống mức thấp – mức 0), lúc này đèn L1 sẽ sáng để báo có nguồn ánh sáng chiếu vào cảm biến
Ngược lại, khi mức ánh sáng xung quang giảm, làm tăng điện trở trên cảm biến CdS, dẫn đến điện áp vào chân 3 của LM393 tăng trên mức so sánh ở chân 2, do đó, mức logic ở đầu
ra (chân 1 IC LM393) sẽ thay đổi lên mức cao, lúc này đèn L1 sẽ tắt để báo không có nguồn sáng chiếu vào cảm biến
Độ nhạy cường độ sáng (mức so sánh) có thể được điều chỉnh bằng biến trở VR1
Ở đầu ra tương tự (AO), khi mức ánh sáng môi trường xung quanh thay đổi làm cho điện trở của cảm biến CdS thay đổi dẫn đến điện áp phân pháp từ chân 1 của cảm biến sẽ thay đổi,
do đó, điện áp trên chân AO sẽ thay đổi theo Từ sự thay đổi điện áp này có thể tính ra được mức thay đổi của điện trở hay cường độ sáng tương ứng
4.4 Kết nối với Arduino
Sử dụng dây nối và jump để kết nối mô-đun cảm biến vào mạch Arduino
Trang 354.5 Viết và chạy chương trình
Nhìn vào kết nối ở phần trên mô-đun cảm biến được kết nối vào hai chân của mạch Arduino.Đẩu ra số DO của cảm biến nối vào chân vào/ra số (2) của mạch arduino, do đó, chân (2) cầnphải được thiết lập là chân số với mode là INPUT (đầu vào) để đọc trạng thái của DO.\
Đầu ra tương tự AO của mô-đun được nối vào chân đầu vào tương tự (A0) để đọc giá trị điện
áp Do đó, chân (A0) cần phải được thiết lập là đầu vào tương tự và đọc giá trị tương tự từ chân này
Chương trình đọc đầu vào số và đầu vào tương tự, sau đó gửi lên máy tính để hiển thị được viết như dưới đây:
Kết quả khi chạy chương trình:
Trang 36Trên đây chỉ là một chương trình được viết đơn giản để phản ánh sự thay đổi của các giá trị đo được so với sự thay đổi của ánh sáng môi trường xung quanh
Các bài tập lập trình nâng cao có thể được đưa ra để nghiên cứu ứng dụng vào thực tiễn cuộc sống như:
Điều khiển bóng đèn hay loa cảnh báo khi đầu ra số DO thay đổi mức
Tính từ giá trị tương tự AO ra giá trị điện áp thực tế
Tính từ giá trị tương tự AO ra giá trị điện trở thực tế của cảm biến CdS
Tính tương đối cường độ ánh sáng theo đơn vị lux
5 Mô đun đo khí Gas
Trang 37VMQ6 hoạt động tốt nhất trong môi trường khí hóa lỏng như khí gas, LPG, iso-butan, propan, LNG…Nó cũng có thể được sử dụng để phát hiện sự hiện diện của rượu, khói nấu ăn và khói thuốc lá.
5.2 Hình ảnh và thông số của cảm biến
Hình ảnh thực tế của cảm biến
Cấu tạo và kích thước
Cảm biến MQ-6 được chế tạo từ SnO2 với độ dẫn điện thấp trong môi trường khí sạch Khi được đặt vào môi trường có khí cháy thì độ dẫn điện của cảm biến sẽ tăng tương ứng với mức tăng nồng độ của khí cháy trong không khí Độ dẫn điện có thể được chuyển đổi thành các tín hiệu điện một cách dễ dàng bằng mạch điện tử đơn giản
MQ6 có độ nhạy cao với các loại khí hóa lỏng như khí gas, LPG, iso-butan, propan, LNG…
Nó cũng có thể được sử dụng để phát hiện sự hiện diện của rượu, khói nấu ăn và khói thuốc lá
Trang 38Các chi tiết kỹ thuật được mô tả như bảng dưới đây:
Mạch điện Điện áp lò nhiệtĐiện áp VVHC 5.0V ± 0.2V AC hoặc DC≤ 24Vdc
Độ nhạy S Rs (không khí)/Rs (1000ppm C4H10) ≥ 5
Độ dốc (Slope) α ≤ 0.6 (R2000ppm/R1000ppm RH)Điều kiện
Nguồn cấp cho mạch kiểm tra VC: 5.0V ± 0.1V
VH: 5.0V ± 0.1VThời gian ổn định nhiệt độ Trên 48 giờ
Sơ đồ nguyên lý
Trên đây là mạch thử nghiệm cơ bản của cảm biến Cảm biến cần phải được cung cấp 2 nguồn điện áp, VH là nguồn cho sợi đốt của lò nhiệt và VC là nguồn điện áp mạch thử nghiệm
VH được dùng để đảm bảo nhiệt độ làm việc của cảm biến được ổn định, trong khi VC
được sử dụng để dò điện áp VRL trên điện trở tải RL
Trang 39Cảm biến cần phải được phân cực, do đó điện áp sử dụng là điện áp một chiều VC và
VH có thể được cung cấp từ cùng một nguồn điện áp một chiều với các điều khiện của nguồn cấp phù hợp với cảm biến
Mặt khác, để cảm biến hoạt động với hiệu suất tốt nhất thì giá trị RL cần phải ổn định, do
đó độ nhạy của bản thân nguồn cấp được áp dụng theo công thức:
PS = VC2 x RS/(RS + RL)2
Với trở kháng của cảm biến là:
RS = (VC / VRL – 1) x RL
Đặc tuyến độ nhạy của cảm biến
Đồ thị trên đây thể hiện đường đặc tuyến độ nhạy của cảm biến, trục dọc là tỷ lệ trở kháng của cảm biến (RS/RO) và trục ngang là nồng độ khí Trong đó, RS là trở kháng thay đổi theo nồng độ khí còn RO là trở kháng của cảm biến được đo ở môi trường chứa khi LPG có nồng
độ 1000 ppm Tất cả quá trình thử nghiệm đều được thực hiện dưới các điều khiện tiêu chuẩn
Trang 40Trên đây là đồ thị mô tả sự ảnh hưởng của nhiệt độ và độ ẩm của môi trường đến phép đo.
Trục dọc là tỷ lệ trở kháng của cảm biến (RS/RO), với RS là trở kháng của cảm biến được
đo trong môi trường Methane có nồng độ 1000 ppm dưới những điều kiện nhiệt độ và độ ẩm khác nhau RO là trở kháng của cảm biến được đo trong môi trường khí Propane ở nồng độ 1000 ppm với điều kiện nhiệt độ / độ ẩm là 20oC/65%RH
5.3 Hình ảnh và thông số của mô-đun