Mục tiêu đề tài: - Thiết kế hệ thống đo được tiếng ồn và phát hiện được trong môi trường thông qua module cảm biến - Thu thập dữ liệu và hiển thị trên màn hình LCD. 3. Tính mới và sáng tạo: - Xây dựng được board mạch thu thập dữ liệu tiếng ồn và truyền thông RF 4. Kết quả nghiên cứu: - Phương pháp đo đạc và cân chỉnh cảm biến dựa theo datasheet của nhà sản xuất. - Hệ thống trao đổi dữ liệu thông qua kết nối giữa các thiết bị. - Thiết kế theo dõi các thông số tiếng ồn (dB)của môi trường. 5. Đóng góp về mặt giáo dục và đào tạo, kinh tế - xã hội,an ninh, quốc phòng và khả năng áp dụng của đề tài: - Đề tài có khả năng áp dụng vào thực tiễn, ứng dụng tại các trạm đo đạc và giám sát chất lượng ở các khu công nghiệp,công trình,giao quán bar và nhà dân.
CƠ SỞ LÝ THUYẾT VÀ CÁC LINH KIỆN ĐƯỢC SỬ DỤNG 3
Giới thiệu chung về Arduino
Arduino đã tạo ra một cơn sốt trong cộng đồng DIY toàn cầu, tương tự như sự ảnh hưởng của Apple trong lĩnh vực thiết bị di động Sự phổ biến của Arduino với một lượng người dùng đông đảo và đa dạng, từ học sinh phổ thông đến sinh viên đại học, đã khiến ngay cả những người sáng lập cũng phải bất ngờ.
Hình 2.1: Những thành viên khởi xướng Arduino
Arduino là một bo mạch vi xử lý phổ biến, được sử dụng rộng rãi bởi sinh viên và nhà nghiên cứu tại các trường đại học danh tiếng như MIT, Stanford và Carnegie Mellon Google cũng đã hỗ trợ phát triển bộ kit Arduino Mega ADK để tạo ra các ứng dụng Android tương tác với cảm biến và thiết bị khác Điểm nổi bật của Arduino là môi trường phát triển dễ sử dụng và ngôn ngữ lập trình thân thiện, cho phép ngay cả những người không có nhiều kiến thức về điện tử cũng có thể học hỏi nhanh chóng Thêm vào đó, Arduino thu hút người dùng nhờ mức giá thấp và tính chất mã nguồn mở, từ phần cứng đến phần mềm.
Hình 2.2: Sự đa dạng của board mạch Arduino
Hiện nay, sự phát triển của công nghệ đã dẫn đến sự ra đời của nhiều loại mạch Arduino, bao gồm Arduino Uno, Arduino Pro, Arduino Micro, Arduino Pro Mini, Arduino Nano, Arduino Mega 250, Arduino Zero, Arduino Due và Arduino Gemma.
Mạch điều khiển Arduino Uno
Arduino UNO R3 có thể được cấp nguồn 5V qua cổng USB hoặc nguồn ngoài với điện áp khuyên dùng từ 7-12V DC, giới hạn từ 6-20V Sử dụng pin vuông 9V là lựa chọn hợp lý khi không có nguồn từ cổng USB Lưu ý, nếu cấp nguồn vượt quá giới hạn trên, Arduino UNO R3 sẽ bị hỏng.
GND (round) là cực âm của nguồn điện cấp cho Arduino UNO R3 Khi sử dụng các thiết bị với nguồn điện riêng biệt, các chân GND này cần được nối với nhau để đảm bảo hoạt động ổn định.
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
Chân IOREF trên Arduino UNO cho phép đo điện áp hoạt động của vi điều khiển, luôn duy trì ở mức 5V Tuy nhiên, bạn không nên sử dụng chân này để lấy nguồn 5V, vì chức năng chính của nó không phải là cung cấp điệ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Ω
Arduino UNO R3 không được trang bị bảo vệ chống cắm ngược nguồn, vì vậy bạn cần kiểm tra kỹ cực âm và dương của nguồn trước khi cấp điện cho board Nếu không cẩn thận, việc chập mạch có thể làm hỏng thiết bị, khiến nó trở thành một vật vô dụng Để tránh rủi ro, hãy ưu tiên sử dụng nguồn từ cổng USB khi có thể.
Các chân 3.3V và 5V trên Arduino được thiết kế để cung cấp nguồn cho các thiết bị khác, không phải để nhận nguồn vào Việc cấp nguồn sai vị trí có thể gây hư hỏng cho 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àm hỏng vi điều khiển
Khi sử dụng Arduino UNO, cần lưu ý rằng cường độ dòng điện qua bất kỳ chân Digital hoặc Analog nào không được vượt quá 40mA, vì điều này có thể gây hỏng vi điều khiển Để bảo vệ vi điều khiển, nếu không sử dụng chân để truyền nhận dữ liệu, bạn nên mắc một điện trở hạn dòng.
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 có vài KB được sử dụng cho bootloader, nhưng bạn không cần lo lắng vì hiếm khi bạn cần quá 20KB bộ nhớ này.
SRAM (Static Random Access Memory) có dung lượng 2KB, nơi lưu trữ giá trị của các biến bạn khai báo trong lập trình Số lượng biến càng nhiều, yêu cầu bộ nhớ RAM càng lớn Tuy nhiên, bộ nhớ RAM thường không phải là mối bận tâm lớn trong quá trình lập trình Lưu ý rằng khi mất điện, dữ liệu trên SRAM sẽ bị mất.
EEPROM (Electrically Erasable Programmable Read-Only Memory) với dung lượng 1KB hoạt động như một ổ cứng mini, cho phép người dùng đọc và ghi dữ liệu mà không lo mất dữ liệu khi mất điện, điều này khác biệt với SRAM.
Arduino UNO R3 được trang bị 14 chân digital, cho phép đọc và xuất tín hiệu với hai mức điện áp là 0V và 5V Mỗi chân có dòng vào/ra tối đa là 40mA và được tích hợp các điện trở pull-up từ trong vi điều khiển ATmega328, mặc dù các điện trở này không được kết nối mặc định.
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 –
Arduino Uno sử dụng 2 chân dữ liệu TTL Serial để giao tiếp với các thiết bị khác Kết nối Bluetooth thường được xem là một hình thức kết nối Serial không dây Nếu không cần giao tiếp Serial, bạn nên tránh sử dụng 2 chân này để tiết kiệm tài nguyên.
Các chân PWM (3, 5, 6, 9, 10, và 11) cho phép xuất xung PWM với độ phân giải 8 bit, tương ứng với giá trị từ 0 đến 255, với điện áp đầu ra từ 0V đến 5V thông qua hàm analogWrite() Điều này có nghĩa là bạn có thể điều chỉnh điện áp ra ở các chân này linh hoạt, thay vì chỉ có hai mức cố định là 0V và 5V như các chân khác.
Chân giao tiếp SPI trên bo mạch bao gồm 10 (SS), 11 (MOSI), 12 (MISO) và 13 (SCK) Bên cạnh các chức năng thông thường, những chân này còn được sử dụng để truyền dữ liệu qua giao thức SPI vớ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 Khi chân này được người dùng sử dụng, LED sẽ sáng
Arduino UNO có 6 chân analog (A0 đến A5) với độ phân giải tín hiệu 10 bit, cho phép đọc giá trị điện áp từ 0V đến 5V Bằng cách sử dụng chân AREF, bạn có thể cung cấp điện áp tham chiếu, ví dụ như 2.5V, để điều chỉnh các chân analog.
Các linh kiện được sử dụng trong đề tài
Đặc biệt, Arduino UNO có 2 chân A4 (SDA) và A5 (SCL) hỗ trợ giao tiếp I2C/TWI với các thiết bị khác
2.3 Các linh kiện đƣợc sử dụng trong đề tài
NRF24L01 là module không dây giá rẻ, dễ dàng kết nối với các MCU như ARM, PIC, AVR, và STM32 qua giao tiếp SPI Nó được sử dụng để truyền nhận dữ liệu từ xa qua sóng RF giữa các vi mạch như Arduino và Raspberry Pi.
Mô-đun không dây NRF24L01 được trang bị bộ khuyếch đại công suất và ăng-ten SMA, cho phép tăng cường khoảng cách liên lạc không dây lên đến 1Km trong môi trường không có vật cản, đồng thời sử dụng giao thức SPI để thực hiện giao tiếp hiệu quả.
Kích thước board siêu nhỏ chỉ 12 x 26mm
PCB mạ vàng chất lượng và chính xác cao
Phạm vi gần 100m tại 250kbps
Tốc độ dữ liệu 250kbps đến 2Mbit
Tối thiểu số lượng các linh kiện bên ngoài
Có thể dùng phân mềm để chọn lựa kênh từ 2400MHz to 2525MHz (có thể chọn
Các PIN đầu ra GND, VCC, CE, CSN, SCK, MOSI, MISO, IRQ
Rất nhiều ứng dụng ghi chú và hỗ trợ trên Website của Nordic Semiconductor
Hình 2.5: Module giao tiếp nRF24L01
Mức thấp: tải dữ liệu lên radio hoặc copy một gói tin nhận được
Mức cao: thiết lập radio sang Mode receive/transmit
Chip Select N (CSN) là chân chọn slave trong chế độ SPI, được thiết lập ở mức thấp để khởi động giao tiếp SPI và đưa về mức cao để kết thúc giao dịch.
5 SCK - SPI Clock Xung clock giao tiếp SPI
Dữ liệu nối tiếp được truyền từ Master (MCU) qua chân này tới Slave (nRF24L01)
Dữ liệu nối tiếp được truyền từ Slave (nRF24L01) qua chân này tới Master (MCU)
8 IRQ - Interrupt Request Yêu cầu ngắt radio điều khiển chân này về mức thấp để kích hoạt interrupt
Bảng 2.1: Chức năng các chân
Giao thức SPI
2.4.1 Giao thức SPI là gì ?
SPI (Serial Peripheral Interface, SPI bus — Giao diện Ngoại vi Nối tiếp, bus
SPI (Serial Peripheral Interface) là một chuẩn truyền dữ liệu đồng bộ, hỗ trợ chế độ truyền thông song công toàn phần (full-duplex) Trong giao thức này, một chip Master điều phối quá trình truyền thông, trong khi các chip Slave được điều khiển bởi chip Master, dẫn đến việc truyền thông chỉ diễn ra giữa Master và Slave Ngoài ra, SPI còn được biết đến với tên gọi giao diện bốn dây (four wire).
Sơ đồ kết nối hai hệ thống qua giao tiếp SPI bao gồm một hệ thống với bộ thu/phát tín hiệu SPI Master và một hệ thống khác với bộ thu/phát tín hiệu SPI Slave Hai thiết bị này kết nối với nhau thông qua bốn đường tín hiệu.
SS (Slave Select) là tín hiệu quan trọng trong giao thức SPI, đánh dấu sự bắt đầu và kết thúc của quá trình truyền nhận dữ liệu Tín hiệu này được tạo ra bởi bộ SPI Master để điều khiển các thiết bị Slave.
SCLK (Serial Clock) là tín hiệu đồng hồ do SPI Master tạo ra để đồng bộ hóa dữ liệu Mỗi khi có cạnh lên hoặc xuống của tín hiệu clock, một bit dữ liệu sẽ được truyền qua dây MOSI và MISO.
MOSI (Master Out Slave In): đường truyền dữ liệu từ SPI Master đến SPI Slave Tín hiệu trên đường dây này do SPI Master tạo ra
MISO (Master In Slave Out): đường truyền dữ liệu từ SPI Slave đến SPI Master Tín hiệu trên đường dây này do SPI Slave tạo ra
Giao thức SPI cho phép hai hệ thống kết nối với nhau, trong đó một hệ thống đóng vai trò là SPI Master và hệ thống còn lại là SPI Slave Kết nối giữa SPI Master và SPI Slave diễn ra qua bốn đường tín hiệu chính: Slave Select (SS), Serial Clock (SCLK), Master-Out-Slave-In (MOSI), và Master-In-Slave-Out (MISO) Hướng mũi tên trên các đường tín hiệu chỉ rõ vị trí tạo ra và nhận tín hiệu.
Cách hoạt động của module
Mô-đun thu phát nRF24L01 áp dụng cấu trúc gói ShockBurst nâng cao, giúp tối ưu hóa hiệu suất truyền dữ liệu Cấu trúc gói này được phân chia thành 5 trường khác nhau, mang lại sự đơn giản và hiệu quả trong việc truyền tải thông tin.
Hình 2.7: nRF24L01 + Cấu trúc gói ShockBurst nâng cao
Cấu trúc ShockBurst ban đầu chỉ bao gồm các trường Bắt đầu, Địa chỉ, Tải trọng và Kiểm tra dự phòng chu kỳ (CRC) Tuy nhiên, ShockBurst đã được cải tiến để cung cấp chức năng truyền thông nâng cao hơn thông qua việc giới thiệu trường điều khiển gói (PCF) mới.
Cấu trúc mới này là tuyệt vời cho một số lý do
Công cụ xác định chiều dài tải trọng cho phép điều chỉnh tải trọng với chiều dài thay đổi, từ 1 đến 32 byte.
Thứ hai, mỗi gói tin gửi đi được gán một ID riêng, giúp thiết bị nhận biết liệu tin nhắn đó là mới hay đã được truyền lại, từ đó có thể quyết định bỏ qua những tin nhắn đã được nhận.
Cuối cùng, và quan trọng nhất, mỗi tin nhắn có thể yêu cầu một xác nhận được gửi khi nhận được bởi một thiết bị khác.
Cảm biến âm thanh KY-037
Module cảm biến âm thanh Ky-037 là một giải pháp chi phí thấp, dễ dàng kết nối với các MCU Cảm biến bao gồm một micro, một bộ so sánh và hai ngõ ra, với tổng cộng bốn chân: VCC, GND, A0 (ngõ ra tương tự) và D0 Chân A0 cung cấp tín hiệu điện áp từ micro, trong khi chân D0 phát tín hiệu cao/thấp khi cường độ âm thanh đạt ngưỡng nhất định.
Hình 2.8: Cảm biến âm thanh KY-037 2.6.1 Thông số kĩ thuật và sơ đồ kết nối cảm biến âm thanh KY-037
Chân dương (+): kết nối 5V của arduino
Chân âm (-): kết nối GND của arduino
Chân A0: kết nối với A0 của arduino
Chân D0: kết nối với D13 của arduino
Độ nhạy có thể điều chỉnh bằng chiết áp trên mạch
Cảm biến âm thanh giúp phát hiện cường độ âm thanh xung quanh, lý tưởng cho các ứng dụng nhận biết và giám sát tiếng động Thiết bị này có thể được điều chỉnh độ nhạy thông qua chiết áp trên module, đáp ứng nhu cầu sử dụng đa dạng và phong phú.
Thiết bị này sử dụng một microphone, mạch khuếch đại tín hiệu, máy dò biên độ và bộ đệm để hoạt động Khi âm thanh được phát hiện, tín hiệu sẽ được khuếch đại qua mạch khuếch đại và sau đó gửi dưới dạng tín hiệu analog.
Module FT232rl
2.7.1 Giới thiệu sơ lược về Module FT232rl
Mạch chuyển USB UART TTL FT232RL sử dụng IC FT232RL chính hãng từ FTDI, thiết kế nhỏ gọn nhưng cung cấp đầy đủ chân kết nối, dễ dàng sử dụng trên mọi hệ điều hành như Windows, Mac và Linux.
Mạch chuyển USB UART TTL FT232RL mang lại chất lượng vượt trội nhờ không sử dụng thạch anh ngoài, đảm bảo độ bền và ổn định cao Sản phẩm này rất phù hợp cho các ứng dụng chuyển đổi USB sang UART TTL hoặc kết nối vi điều khiển với máy tính.
Hình 2.9: Module FT232rl 2.7.2 Thông số kỹ thuật
IC chính: FT232RL từ FTDI
Nguồn cấp: 5VDC từ cổng USB
Chuyển giao tiếp từ USB sang UART TTL
Tốc độ Baudrate: tùy chỉnh
Có ngõ ra nguồn cho cả 3V3 và 5VDC
DTR: Chân UART TTL Data Terminal Ready, thường không sử dụng
RXD: chân nhận dữ liệu UART TTL Reiceve
TXD: chân truyền dữ liệu UART TTL Transmit
VCC: Chân nguồn cấp, có thể chọn nguồn cấp 5V hoặc 3.3VDC qua Jumper
CTS: Chân UART TTL hardware flow control (also called RTS/CTS flow control)
Màn hình LCD
2.8.1 Giới thiệu sơ lược về LCD và thư viện điều khiển LCD của Arduino
Thư viện LiquidCrystal trên Arduino giúp bạn điều khiển các module LCD một cách nhanh chóng và dễ dàng mà không cần lập trình phức tạp Được thiết kế tương thích với IC HD44780, thư viện này vẫn hoạt động hiệu quả với các module LCD sản xuất tại Trung Quốc Bạn chỉ cần mua module LCD, kết nối với Arduino và nạp mã code để sử dụng mà không cần lo lắng về IC điều khiển.
2.8.2 Cấu tạo và thông số kỹ thuật
VSS: tương đương với GND - cực âm
VDD: tương đương với VCC - cực dương (5V)
Constrast Voltage (Vo): điều khiển độ sáng màn hình
Register Select (RS): điều khiển địa chỉ nào sẽ được ghi dữ liệu
Read/Write (RW): Bạn sẽ đọc (read mode) hay ghi (write mode) dữ liệu? Nó sẽ phụ thuộc vào bạn gửi giá trị gì vào
Enable pin: Cho phép ghi vào LCD
Trong chế độ đọc (read mode), 8 chân dữ liệu D0 - D7 sẽ có giá trị HIGH hoặc LOW Ngược lại, trong chế độ ghi (write mode), các chân này cũng sẽ nhận giá trị HIGH hoặc LOW.
THIẾT KẾ
Sơ đồ khối hệ thống
Hình 3.1: Sơ đồ hệ thống khối
Khối điều khiển trung tâm
Khối điều khiển trung tâm
Khởi động Module nRF24L01 Khởi động LCD
Hiển thị dữ liệu thu trên LCD
Hiển thị dữ liệu phát trên LCD
Nhận dữ liệu từ nRF24L01
Chuyển qua nRF24L01(phát) Đọc dữ liệu
- Khối nguồn: Cấp nguồn 5V từ ngoài vào cho board mạch chính qua cổng usb của máy tính
- Khối điều khiến trung tâm:
+ Cấp nguồn và điều khiển hoạt động khối cảm biến
+ Nhận dữ liệu từ khối cảm biến và gửi dữ liệu cho bên thu
+ Đo các thông số về tiếng ồn
- Khối hiển thị: Hiển thị kết quả đo được ra màn hình LCD.
Các kết nối cơ bản trong hệ thống
3.2.1 Kết nối board Arduino Uno và module nRF24L01
Hình 3.2: Các chân kết nối nRF24L01 3.2.2 Cách nối mạch với các mạch Uno, Nano, Promini, Leonardo,
Tôi chỉ nói về cách nối module NRF24 với Arduino (Uno, Nano, Promini, Leonardo, ):
Hình 3.3: Cấu hình cho Module nRF24L01
Bảng 3.1: Sơ đồ nối chân của nRF24L01
Sơ đồ cảm biến âm thanh trên Arduino
Hình 3.4: Các chân kết nối KY-037
Bảng 3.2: Kết nối chấn UNO với KY-037
Sơ đồ nguyên lí của hệ thống
Hình 3.5: Sơ đồ nguyên lý trên Capture 3.4.1 Sơ đồ layout trên Orcard
Hình 3.6.Sơ đồ mạch Layout sau khi hoàn thiện
3.4.2 Sơ đồ layout trên PDF
Hình 3.7: Sơ đồ mạch layout được xuất ra pdf
THI CÔNG MẠCH
Cách làm mạch bằng tay
-Làm sạch bề mặt phíp đồng bằng giấy cọ xoong nồi
-Cắt bản mạch in theo phíp đồng vừa cắt
Đặt ốp lên phíp đồng và sử dụng bàn là ở nhiệt độ vừa phải hoặc tối đa để rút ngắn thời gian, cho đến khi giấy chuyển sang màu đen đều như trong mạch Cần chú ý là phải là đều xung quanh, nếu không sẽ có chỗ không ăn mực.
Sau khi ủi mạch trong khoảng 15-20 phút, bạn hãy dùng một chút nước xịt lên giấy khi còn nóng Mực sẽ tự bong ra, cho phép bạn dễ dàng bóc ra bằng tay mà không lo bị bong mực như với một số loại giấy khác trước đây yêu cầu phải ngâm Với loại giấy này, bạn sẽ nhận thấy rõ ưu điểm ngay từ lần đầu sử dụng.
- Dùng bút dạ tô lại những chỗ bị lỗi không có mực
Hình 3.9: Sau khi ủi mạch Bước 3:
-Pha dung dịch ăn mòn FeCl3, Pha càng đặc thì ngâm càng nhanh khoảng 200-300g cho từng này nước.( Nhớ lắc sẽ làm quá trình ăn mòn nhanh hơn…)
Sau khi ngâm mạch trong dung dịch ăn mòn đồng, hãy sử dụng giấy cọ xoong nồi cùng một ít xà phòng Omo để loại bỏ mực Sau đó, rửa sạch bằng nước và tiến hành xấy khô.
Pha nhựa thông với axeton hoặc xăng, sử dụng một lượng nhỏ nhựa thông để tránh quá đặc, sau đó quết đều lên bề mặt mạch Việc này giúp bảo vệ mạch khỏi oxi hóa và tạo điều kiện thuận lợi cho quá trình hàn thiếc sau này.
Hình 3.11: Thành phảm của quá trình trên
Mạch sau khi đã lắp linh kiện hoàn chỉnh
KIỂM THỬ, ĐÁNH GIÁ VÀ PHÁT TRIỂN
4.1.1 Khảo sát các giá trị đo từ các cảm biến và so sánh máy đo trên điện thoại
4.1.2 Khảo sát tại công trường nằm trên đường Phạm Văn Đồng
15h00 Đơn vị (dB) Thiết bị Máy đo khác
Thiết bị Máy đo khác
Thiết bị Máy đo khác
Bảng 4.1: Khảo sát tại công trường nẳm trên đường Phạm Văn Đồng.