PHẦN 1. KIẾN THỨC CƠ BẢN 1.1. Tổng quan về cảm biến và công nghệ cảm biến Sinh viên trình bày các khái niệm, phân loại cảm biến và các vấn đề liên quan như chống nhiễu, xử lý tín hiệu v.v.v a. Khái niệm Cảm biến là thiết bị điện tử cảm nhận những trạng thái, quá trình vật lý hay hóa học ở môi trường cần khảo sát và biến đổi thành tín hiệu điện để thu thập thông tin về trạng thái hay quá trình đó b. Phân loại Trên thực tế có vô vàn những loại cảm biến khác nhau và chúng ta có thể chia các cảm biến thành hai nhóm chính: • Cảm biến vật lí: có thể kể đến một vài ví dụ dễ hình dung như sóng ánh sáng, hồng ngoại, tia X, hạt bức xạ, nhiệt độ, áp suất, âm thanh, từ trường, gia tốc,… • Cảm biến hóa học: thường thấy như độ ẩm, độ PH, ion, khói,….
Trang 1Thành viên và phân công
STT H và ọ và tên N i dung công vi c chínhội dung công việc chính ệc chính
Trang 2MỤC LỤC
PHẦN 1 KIẾN THỨC CƠ BẢN 1
1.1 Tổng quan về cảm biến và công nghệ cảm biến 1
1.2 Tổng quan về môi trường và công cụ lập trình 2
1.2.1 Tổng quan về bộ kit andruino 2
1.2.2 Cài đặt IDE, driver, các thao tác trên IDE 6
1.2.3 Một số thao tác với phần cứng 15
1.2.4 Ví dụ nạp một chương trình cơ bản 21
PHẦN 2 CẢM BIẾN VÀ ỨNG DỤNG 32
2.1 Cảm biến (Sinh viên trình bày lần lượt từng loại cảm biến được cung cấp về nguyên lý cấu tạo, cấu hình phần cứng, mạch đo, nguyên tắc lập trình và tính toán giá trị đo, kết quả thực nghiệm) 32
2.1.1 Cảm biến ánh sáng analog LM393 32
2.1.2 Cảm biến nhiệt độ LM35 35
2.1.3 Cảm biến dòng điện ACS712 39
2.1.4 Công tắc hành trình 44
2.1.5 Động cơ giảm tốc G12-N20 + Encoder 48
2.1.6 Cảm biến khoảng cách siêu âm HC-SR04 52
Trang 3PHẦN 1 KIẾN THỨC CƠ BẢN
1.1 Tổng quan về cảm biến và công nghệ cảm biến
Sinh viên trình bày các khái niệm, phân loại cảm biến và các vấn đề liên quan như chốngnhiễu, xử lý tín hiệu v.v.v
a Khái niệm
Cảm biến là thiết bị điện tử cảm nhận những trạng thái, quá trình vật lý hay hóa học ởmôi trường cần khảo sát và biến đổi thành tín hiệu điện để thu thập thông tin về trạngthái hay quá trình đó
Cảm biến hóa học: thường thấy như độ ẩm, độ PH, ion, khói,…
Ngoài ra ta cũng có một số hình thức phân chia khác
Phân loại theo nguyên lí hoạt động
Theo nguyên lí hoạt động ta có thể kể đến những loại cảm biến nổi bật như:
Cảm biến điện trở: hoạt động dựa theo di chuyển con chạy hoặc góc quay của biếntrở, hoặc sự thay đổi điện trở do co giãn vật dẫn
Cảm biến cảm ứng: cảm biến biến áp vi phân, cảm biến cảm ứng điện từ, cảm biến dòng xoáy, cảm biến cảm ứng điện động, cảm biến điện dung,…
Cảm biến điện trường: cảm biến từ giảo, cảm biến áp điện,…
Và một số cảm biến nổi bật khác như: cảm biến quang, cảm biến huỳnh quang nhấp nháy, cảm biến điện hóa đầu dò ion và độ pH, cảm biến nhiệt độ,…
Trang 41.2.1 Tổng quan về bộ kit andruino
Arduino là một nền tảng mà mọi thiết bị phần cứng đều được làm sẵn và chuẩnhóa, người dùng chỉ việc chọn những thứ mình cần, ráp lại là có thể chạy được Bạnmuốn làm xe điều khiển từ xa ? Arduino cung cấp cho bạn module điều khiển động cơ cósẵn, mạch điều khiển có sẵn, mạch thu phát sóng không dây có sẵn,… Bạn sẽ không cầnphải động não thiết kế mạch điện cho chiếc xe bởi đơn giản là mọi thứ đều có sẵn
Giống như một con người với “thể xác” đã được xây dựng sẵn, một hệ thống Arduinophải có “tâm hồn” để có thể “sống” Và tôi gọi việc tạo ra “tâm hồn” ấy là “Lập trình”.Tuy nhiên bạn sẽ không phải lập trình từ A đến Z Mỗi thứ phần cứng gắn mác
“Arduino” đều có những đoạn lệnh đã được viết sẵn (gọi là thư viện) do cộng đồng ngườidùng Arduino cùng phát triển Bạn chỉ việc bưng vào và xào nấu lại theo ý muốn củamình Tới đây, bạn đã giải quyết được vấn đề thứ 2 Đừng lo nếu bạn không biết gì về lậptrình bởi chúng chỉ giống như những bài tập Tin học lớp 11 lặt vặt ở trường thôi
Chính vì tính tiện lợi và đơn giản cho người sử dụng mà Arduino đã trở thành một hiệntượng trong làng điện tử thế giới Những sản phẩm của cộng đồng người dùng Arduinocũng như những thiết bị hỗ trợ Arduino lớn đến mức không thể thống kê được Nó pháttriển đến mức mà ta có thể gọi nó là một hệ sinh thái đa dạng như tiêu đề - giống như
Trang 5Windows hay Android Tôi tin rằng nếu bạn học chữ bằng những quyển vở tập viết thìbạn sẽ cần tới Arduino để đến với điện tử.
Một vài thành viên trong đại gia đình Arduino
*Arduino có thể kết nối với những gì ?
Một hệ thống Arduino có thể cung cấp cho bạn rất nhiều sự tương tác với môi trường xung quanh với:
Hệ thống cảm biến đa dạng về chủng loại (đo đạc nhiệt độ, độ ẩm, gia tốc, vận tốc, cường độ ánh sáng, màu sắc vật thể, lưu lượng nước, phát hiện chuyển động, phát hiện kim loại, khí độc,…),…
Các thiết bị hiển thị (màn hình LCD, đèn LED,…)
Các module chức năng (shield) hỗ trợ kêt nối có dây với các thiết bị khác hoặc các kếtnối không dây thông dụng (3G, GPRS, Wifi, Bluetooth, 315/433Mhz, 2.4Ghz,…), …
Định vị GPS, nhắn tin SMS,…
… và nhiều thứ thú vị khác đang chờ bạn khám phá
Trang 6*Lịch sử ra đời của Arduino
Arduino ra đời tại thị trấn Ivrea, nước Ý và được đặt theo tên một vị vua vào thế kỷ thứ 9
là King Arduin
Nó chính thức được đưa ra giới thiệu vào năm 2005 như là một công cụ cho sinh viên họctập của giáo sư Massimo Banzi, một trong những người phát triển Arduino tại trườngInteraction Design Instistute Ivrea (IDII) Dù hầu như không có một sự tiếp thị hay quảngcáo nào nhưng tin tức về Arduino vẫn lan truyền với tốc độ chóng mặt nhờ vô vàn lờitruyền miệng tốt đẹp của những người dùng đầu tiên
Arduino UNO R3
Trang 7Nhắc tới dòng mạch Arduino dùng để lập trình, cái đầu tiên mà người ta thường nói tớichính là dòng Arduino UNO Hiện dòng mạch này đã phát triển tới thế hệ thứ 3 (R3).Bạn sẽ bắt đầu đến với Arduino qua thứ này Bạn có thể dùng Arduino Nano cũng đượcnhưng tôi khuyên bạn nên dùng cái này.
Trang 81.2.2 Cài đặt IDE, driver, các thao tác trên IDE.
Cài đặt Driver:
Để máy tính của bạn và board Arduino giao tiếp được với nhau, chúng ta cần phải cài đặt driver trước tiên
Nếu bạn dùng Windows 8, trong một số trường hợp Windows không cho
phép bạn cài Arduino driver (do driver không được kí bằng chữ kí số hợp lệ) Do vậy bạn cần vào Windows ở chế độ Disable driver signature enforcement thì
mới cài được driver
Đầu tiên, các bạn chạy file arduino-1.6.4\drivers\dpinst-x86.exe (Windows x86) hoặc arduino-1.6.4\drivers\dpinst-amd64.exe (Windows x64) Cửa sổ “Device Driver Installation Wizard” hiện ra, các bạn chọn Next để tiếp tục.
Trang 9Khi có yêu cầu xác nhận cài đặt driver, chọn “Install”
Đợi khoảng 10 giây trong lúc quá trình cài đặt diễn ra …
Trang 10Quá trình cài đặt đã hoàn tất Bấm “Finish” để thoát.
Trang 11Cài đặt IDE:
Bước 1: Truy cập vào đường link: https://www.arduino.cc/en/Main/Software/
Đây là nơi lưu trữ cũng như cập nhật các bản IDE của Arduino Bấm vào mục WindowsZip file for non admin install
Trang 12Bạn sẽ được chuyển đến một trang mời quyền góp tiền để phát triển phần mềm choArduino, tiếp tục bấm để bắt đầu tải.
Bước 2: Sau khi download, các bạn bấm chuột phải vào file vừa download 1.6.4-windows.zip và chọn “Extract here” để giải nén
arduino-Bước 3: Copy thư mục arduino-1.6.4 vừa giải nén đến nơi lưu trữ
Bước 4: Chạy file ariduino.exe trong thư mục arduino-1.6.4\ để khởi động Arduino IDE
Trang 13Các thao tác cơ bản trên IDE:
Trang 15* Vùng viết chương trình
Bạn sẽ viết các đoạn mã của mình tại đây Tên chương trình của bạn được hiển
thị ngay dưới dãy các Icon, ở đây nó tên là “Blink” Để ý rằng phía sau tên
chương trình có một dấu “§” Điều đó có nghĩa là đoạn chương trình của bạn
chưa được lưu lại
Trang 16* Vùng thông báo (debug)
Những thông báo từ IDE sẽ được hiển thị tại đây Để ý rằng góc dưới cùng bên phải hiển thị loại board Arduino và cổng COM được sử dụng Luôn chú ý tới mụcnày bởi nếu chọn sai loại board hoặc cổng COM, bạn sẽ không thể upload được code của mình
* Một số lưu ý
Khi lập trình, các bạn cần chọn port (cổng kết nối khi gắn board vào) và board(tên board mà bạn sử dụng) Giả sử, bạn đang dùng mạch Arduino Uno, và khigắn board này vào máy tính bằng cáp USB nó được nhận là COM4 thì bạn chỉnhnhư thế này là có thể lập trình đươc nhé
Trang 171.2.3 Một số thao tác với phần cứng
*Phần cứng của Arduino
Trang 18- Cổng USB (loại B): đây là cổng giao tiếp để ta upload code từ PC lên vi điểu khiển.Đồng thời nó cũng là giao tiếp serial để truyền dữ liệu giữa vi điểu khiển với máy tính -Jack nguồn: để chạy Arduino thì có thể lấy nguồn từ cổng USB ở trên, nhưng không phảilúc nào cũng có thể cắm với máy tính được Lúc đó, ta cần một nguồn 9V đến 12V -Hàng Header: đánh số từ 0 đến 12 là hàng digital pin, nhận vào hoặc xuất ra các tín hiệu
số Ngoài ra có một pin đất (GND) và pin điện áp tham chiếu (AREF) - Hàng header thứhai: chủ yếu liên quan đến điện áp đất, nguồn - Hàng header thứ ba: các chân để nhậnvào hoặc xuất ra các tín hiệu analog Ví dụ như đọc thông tin của các thiết bị cảm biến -
Vi điều khiển AVR: đây là bộ xử lý trung tâm của toàn bo mạch Với mỗi mẫu Arduinokhác nhau thì con chip này khác nhau Ở con Arduino Uno này thì sử dụng ATMega328
*Một vài thông số của Arduino UNO R3
Điện áp hoạt động 5V DC (chỉ được cấp qua cổng USB)
Điện áp vào khuyên dùng 7-12V DC
Số chân Digital I/O 14 (6 chân hardware PWM)
Trang 19Dòng tối đa trên mỗi chân I/O 30 mA
*Vi điều khiển
Arduino UNO có thể sử dụng 3 vi điều khiển họ 8bit AVR là ATmega8, ATmega168,ATmega328 Bộ não này có thể xử lí những tác vụ đơn giản như điều khiển đèn LEDnhấp nháy, xử lí tín hiệu cho xe điều khiển từ xa, làm một trạm đo nhiệt độ - độ ẩm vàhiển thị lên màn hình LCD,…
Thiết kế tiêu chuẩn của Arduino UNO sử dụng vi điều khiển ATmega328 với giá khoảng90.000đ Tuy nhiên nếu yêu cầu phần cứng của bạn không cao hoặc túi tiền không chophép, bạn có thể sử dụng các loại vi điều khiển khác có chức năng tương đương nhưng rẻhơn như ATmega8 (bộ nhớ flash 8KB) với giá khoảng 45.000đ hoặc ATmega168 (bộnhớ flash 16KB) với giá khoảng 65.000đ
Ngoài việc dùng cho board Arduino UNO, bạn có thể sử dụng những IC điều khiển này cho các mạch tự chế Vì sao ? Vì bạn chỉ cần board Arduino UNO để lập trình cho vi điềukhiển Trên thực tế, bạn không cần phải dụng Arduino UNO trên các sản phẩm của mình,thay vào đó là các mạch tự chế để giảm chi phí như hình dưới đây:
Trang 20Chế tạo thủ công Sử dụng mạch in
*Năng lượng
Arduino UNO có thể được cấp nguồn 5V thông qua cổng USB hoặc cấp nguồn ngoài với điện áp khuyên dùng là 7-12V DC và giới hạn là 6-20V Thường thì cấp nguồn bằng pin vuông 9V là hợp lí nhất nếu bạn không có sẵn nguồn từ cổng USB Nếu cấp nguồn vượt quá ngưỡng giới hạn trên, bạn sẽ làm hỏng Arduino UNO
*Các chân năng lượng
GND (Ground): cực âm của nguồn điện cấp cho Arduino UNO Khi bạn dùng các
thiết bị sử dụng những nguồn điện riêng biệt thì những chân này phải được nối với nhau
5V: cấp điện áp 5V đầu ra Dòng tối đa cho phép ở chân này là 500mA.
3.3V: cấp điện áp 3.3V đầu ra Dòng tối đa cho phép ở chân này là 50mA.
Vin (Voltage Input): để cấp nguồn ngoài cho Arduino UNO, bạn nối cực dương của
nguồn với chân này và cực âm của nguồn với chân GND
IOREF: điện áp hoạt động của vi điều khiển trên Arduino UNO có thể được đo ở
chân này Và dĩ nhiên nó luôn là 5V Mặc dù vậy bạn không được lấy nguồn 5V từ chân này để sử dụng bởi chức năng của nó không phải là cấp nguồn
RESET: việc nhấn nút Reset trên board để reset vi điều khiển tương đương với việc
chân RESET được nối với GND qua 1 điện trở 10KΩ
Lưu ý:
Arduino UNO không có bảo vệ cắm ngược nguồn vào Do đó bạn phải hết sức cẩnthận, kiểm tra các cực âm – dương của nguồn trước khi cấp cho Arduino UNO Việc làm chập mạch nguồn vào của Arduino UNO sẽ biến nó thành một miếng nhựa chặn giấy mình khuyên bạn nên dùng nguồn từ cổng USB nếu có thể
Trang 21 Các chân 3.3V và 5V trên Arduino là các chân dùng để cấp nguồn ra cho các thiết
bị khác, không phải là các chân cấp nguồn vào Việc cấp nguồn sai vị trí có thể làm hỏng board Điều này không được nhà sản xuất khuyến khích
Cấp nguồn ngoài không qua cổng USB cho Arduino UNO với điện áp dưới 6V có thể làm hỏng board
Cấp điện áp trên 13V vào chân RESET trên board có thể làm hỏng vi điều khiển ATmega328
Cường độ dòng điện vào/ra ở tất cả các chân Digital và Analog của Arduino UNO nếu vượt quá 200mA sẽ làm hỏng vi điều khiển
Cấp điệp áp trên 5.5V vào các chân Digital hoặc Analog của Arduino UNO sẽ làmhỏng vi điều khiển
Cường độ dòng điện qua một chân Digital hoặc Analog bất kì của Arduino UNO vượt quá 40mA sẽ làm hỏng vi điều khiển Do đó nếu không dùng để truyền nhận
dữ liệu, bạn phải mắc một điện trở hạn dòng
Khi mình nói rằng bạn “có thể làm hỏng”, điều đó có nghĩa là chưa chắc sẽ hỏng ngay
bởi các thông số kĩ thuật của linh kiện điện tử luôn có một sự tương đối nhất định Do đó hãy cứ tuân thủ theo những thông số kĩ thuật của nhà sản xuất nếu bạn không muốn phải
mua một board Arduino UNO thứ 2.Khi mình nói rằng bạn “có thể làm hỏng”, điều đó có
nghĩa là chưa chắc sẽ hỏng ngay bởi các thông số kĩ thuật của linh kiện điện tử luôn có một sự tương đối nhất định Do đó hãy cứ tuân thủ theo những thông số kĩ thuật của nhà sản xuất nếu bạn không muốn phải mua một board Arduino UNO thứ 2
*Bộ nhớ
Vi điều khiển Atmega328 tiêu chuẩn cung cấp cho người dùng:
32KB bộ nhớ Flash: những đoạn lệnh bạn lập trình sẽ được lưu trữ trong bộ nhớ
Flash của vi điều khiển Thường thì sẽ có khoảng vài KB trong số này sẽ được dùng cho bootloader nhưng đừng lo, bạn hiếm khi nào cần quá 20KB bộ nhớ này đâu
2KB cho SRAM (Static Random Access Memory): giá trị các biến bạn khai báo khi
lập trình sẽ lưu ở đây Bạn khai báo càng nhiều biến thì càng cần nhiều bộ nhớ RAM Tuy vậy, thực sự thì cũng hiếm khi nào bộ nhớ RAM lại trở thành thứ mà bạn phải bận tâm Khi mất điện, dữ liệu trên SRAM sẽ bị mất
1KB cho EEPROM (Electrically Eraseble Programmable Read Only Memory): đây
giống như một chiếc ổ cứng mini – nơi bạn có thể đọc và ghi dữ liệu của mình vào đây mà không phải lo bị mất khi cúp điện giống như dữ liệu trên SRAM
Trang 22*Các cổng vào/ra
Arduino UNO có 14 chân digital dùng để đọc hoặc xuất tín hiệu Chúng chỉ có 2 mứcđiện áp là 0V và 5V với dòng vào/ra tối đa trên mỗi chân là 40mA Ở mỗi chân đều cócác điện trở pull-up từ được cài đặt ngay trong vi điều khiển ATmega328 (mặc định thìcác điện trở này không được kết nối)
Một số chân digital có các chức năng đặc biệt như sau:
2 chân Serial: 0 (RX) và 1 (TX): dùng để gửi (transmit – TX) và nhận (receive – RX)
dữ liệu TTL Serial Arduino Uno có thể giao tiếp với thiết bị khác thông qua 2 chânnày Kết nối bluetooth thường thấy nói nôm na chính là kết nối Serial không dây Nếukhông cần giao tiếp Serial, bạn không nên sử dụng 2 chân này nếu không cần thiết
Chân PWM (~): 3, 5, 6, 9, 10, và 11: cho phép bạn xuất ra xung PWM với độ phân
giải 8bit (giá trị từ 0 → 28-1 tương ứng với 0V → 5V) bằng hàm analogWrite() Nói
Trang 23một cách đơn giản, bạn có thể điều chỉnh được điện áp ra ở chân này từ mức 0V đến5V thay vì chỉ cố định ở mức 0V và 5V như những chân khác.
Chân giao tiếp SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK) Ngoài các chức
năng thông thường, 4 chân này còn dùng để truyền phát dữ liệu bằng giao thức SPIvới các thiết bị khác
LED 13: trên Arduino UNO có 1 đèn led màu cam (kí hiệu chữ L) Khi bấm nút
Reset, bạn sẽ thấy đèn này nhấp nháy để báo hiệu Nó được nối với chân số 13 Khichân này được người dùng sử dụng, LED sẽ sáng
Arduino UNO có 6 chân analog (A0 → A5) cung cấp độ phân giải tín hiệu 10bit (0 →
210-1) để đọc giá trị điện áp trong khoảng 0V → 5V Với chân AREF trên board, bạn có
thể để đưa vào điện áp tham chiếu khi sử dụng các chân analog Tức là nếu bạn cấp điện
áp 2.5V vào chân này thì bạn có thể dùng các chân analog để đo điện áp trong khoảng từ0V → 2.5V với độ phân giải vẫn là 10bit
Đặc biệt, Arduino UNO có 2 chân A4 (SDA) và A5 (SCL) hỗ trợ giao tiếp I2C/TWI vớicác thiết bị khác
1.2.4 Ví dụ nạp một chương trình cơ bản
Trang 24Bước 1: Kết nối Arduino UNO R3 vào máy tính
Bước 2: Tìm cổng kết nối của Arduino Uno R3 với máy tính
Khi Arduino Uno R3 kết nối với máy tính, nó sẽ sử dụng một cổng COM
(Communication port - cổng dữ liệu ảo) để máy tính và bo mạch có thể truyền tải dữ liệu qua lại thông qua cổng này Windows có thể quản lí đến 256 cổng COM Để tìm được cổng COM đang được sử dụng để máy tính và mạch Arduino UNO R3 giao tiếp với nhau, bạn phải mở chức năng Device Manager của Windows
Bạn mở cửa sổ Run và gõ lệnh mmc devmgmt.msc
Trang 25Sau đó bấm Enter, cửa sổ Device Manager sẽ hiện lên.
Trang 26Mở mục Ports (COM & LPT), bạn sẽ thấy cổng COM Arduino Uno R3 đang kết nối
Trang 27Cổng kết nối ở đây là COM3.
Thông thường, trong những lần kết nối tiếp theo, Windows sẽ sử dụng lại cổng COM3 đểkết nối nên bạn không cần thực hiện thêm thao tác tìm cổng COM này nữa
Bước 3: Khởi động Arduino IDE
Trang 28Bước 4: Cấu hình phiên làm việc cho Arduino IDE
Vào menu Tools -> Board -> chọn Arduino Uno
Vào menu Tools -> Serial Port -> chọn cổng Arduino đang kết nối với máy tính Ở máy
của mình là COM3.
Trang 29Xác nhận cổng COM của Arduino IDE ở góc dưới cùng bên phải cửa sổ làm việc
Trang 30Vào menu Tools -> Programmer -> chọn AVR ISP
Trang 31Bước 5: Mở và nạp mã nguồn chương trình mẫu
Nạp một chương trình mẫu bằng cách vào menu File -> Examples -> 01.Basics ->
chọn Blink