1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Đồ án môn học phần mềm nhúng thời gian thực đề tài đồng hồ sóng nhạc

34 4 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Đồng Hồ Sóng Nhạc
Tác giả Vũ Trọng Chính, Vũ Xuân Bình, Nguyễn Anh Đức, Văn Thái
Người hướng dẫn GV. Lê Thị Hồng Vân
Trường học Học viện kỹ thuật mật mã
Chuyên ngành Kỹ thuật phần mềm và hệ thống nhúng
Thể loại Đồ án môn học phần mềm nhúng thời gian thực
Năm xuất bản 2021
Thành phố Hà Nội
Định dạng
Số trang 34
Dung lượng 8,21 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Với vốn kiến thức được tiếp thu trong quá trình học không chỉ là nền tảng cho quá trình làm đề tài mà còn là hành trang quý báu để chúng em bước vào đ i một cách vững chắờ c và tự tin..

Trang 1

Giảng viên hướng dẫn: GV LÊ THỊ HỒNG VÂN

Hà Nội, 06-09-2021

Trang 2

Nhóm 17: Đồng hồ sóng nhạc

Trang 3

MỤC LỤC

MỤC LỤC i

LỜI MỞ ĐẦU 2

CHƯƠNG 1 CƠ SỞ LÝ THUYẾT 3

1.1 Tổng quan về đề tài đồ án Error! Bookmark not defined 1.2 Tìm hiểu về lập trình nhúng 3

1.2.1 Khái niệm 3

1.2.2 Các ngôn ngữ sử dụng cho lập tình nhúng 4

1.2.3 Các thiết bị phần cứng cho lập trình nhúng 4

1.2.4 Ứng dụng của lập trình nhúng với đời sống thực tiễn 4

1.3 Tìm hiểu về lập trình nhúng trên nền tảng Arduino 4

1.3.1 Tìm hiểu về Arduino 4

1.4 Cơ sở lý thuyết của đồ án 14

1.4.1 Tìm hiểu về lập trình nhúng thời gian thực 14

1.4.2 Tìm hiểu về âm thanh và xử lý âm thanh 14

CHƯƠNG 2 THIẾT KẾ VÀ XÂY DỰNG HỆ THỐNG 17

2.1 Ý tưởng thiết kế phần cứng 17

2.1.1 Bo mạch: Esp32 Wroom DEV( dual core) 17

2.1.2 Cảm biến âm thanh Max9812 22

2.1.3 Module Led matrix P5 22

2.1.4 Sơ đồ nối chân 24

2.2 Thiết kế phần mềm 24

CHƯƠNG 3 KẾT QUẢ THỰC NGHIỆM 31

3.1 Vẽ mạch và chạy thử trong phần mềm Proteus 31

3.2 Phương án phát triển và tối ưu 31

3.3 Báo cáo kết quả khi hoàn thành 31

TÀI LIỆU THAM KHẢO 31

Trang 4

LỜI MỞ ĐẦU

Xã hội ngày càng phát triển, nhu cầu giải trí thư giãn ngày một nhiều, âm nhạc dần trở thành một món ăn tinh thần của mọi người Âm nhạc giúp chúng ta thư giãn và có giá trị tinh thần tốt Đi kèm nó là các sản phẩm nâng cao chất lượng và trải nghi m cệ ủa người dùng đố ới âm nhạc, trong đó i vphải kể đến công nghệ ánh sáng

Đèn LED ra đời mang lạ ự đội s t biến trong nhiều lĩnh vực đời sống, làm thay đổi toàn bộ bộ mặt ngành công nghiệp giải trí Nó có mặt trong tấ ả t c các

cơ sở kinh doanh nhà hàng, cơ sở kinh doanh dịch vụ như Karaoke, Café, Bar, v.v , hay có mặt trong các đồ điện tử, gia dụng để mang lạ ự bắt mắi s t và nâng cao trải nghiệm của người dùng Trong đó, việc đèn LED kế ợp vớt h i các sản phẩm âm thanh cũng được nhiều người yêu thích

Nắm bắ âm lý này, nhóm sinh viên chúng em quyế ịnh tìm hiểu, nghiên t t t đcứu, kế ợp vớ ền tảng kiến thức có được khi họt h i n c b môn ộ “Công nghệ phần mềm nhúng cho ra mắ ản phẩ”, t s m công ngh “ Đồng hồ led nháy theo nhạc” ệ

Mục đích c a sản phẩm giúp ngườủ i dùng có phút giây thư giãn và có thải nghiệm tốt nhấ ới âm nhạt v c

Để hoàn thành được bài báo cáo này, trước hết, nhóm chúng em kính gửi lời cảm ơn sâu sắc tới cô Lê Thị Hồng Vân, giảng viên khoa Công nghệ thông tin -Học viện Kỹ thuật mật mã, đã tận tình chỉ bảo, hướng dẫn và hỗ ợ trong thờtr i gian chúng em nghiên cứu và thực hiện đề tài này

Nhóm chúng em cũng chân thành cảm ơn quý Thầy, Cô đang công tác tại Học viện Kỹ thuật Mật mã đã tận tình truyền đạt kiến thức trong những năm học tập vừa qua Với vốn kiến thức được tiếp thu trong quá trình học không chỉ

là nền tảng cho quá trình làm đề tài mà còn là hành trang quý báu để chúng em bước vào đ i một cách vững chắờ c và tự tin

Cuối cùng nhóm chúng em kính chúc quý Thầy, Cô dồi dào sức khỏe và thành công trong sự hiệp cao quý.ng

Chúng em xin chân thành cảm ơn!

Trang 5

CHƯƠNG 1 CƠ SỞ LÝ THUYẾT

1.1 Tìm hiểu về lập trình nhúng

1.1.1 Khái niệm

Lập trình nhúng là một thuật ngữ lập trình dùng để chỉ đến một hệ thống có khả năng tự trị và nó thường được nhúng vào trong một môi trường hoặc một hệ thống mẹ bất kỳ nào đó.Đây là các hệ thống tích hợp cả một phần mềm và phần cứng

Trang 6

Mục đích chủ yếu lập trình nhúng chính là phục vụ các bài toán chuyên dụng trong các lĩnh vực công nghiệp, tự động hóa điều khiển và truyền tin Thông thường, hệ thống nhúng sẽ được thiết kế để thực hiện các chức năng chuyên trách hoặc riêng biệt nào đó

Bởi vì đây là lập trình chỉ được xây dựng cho một nhiệm vụ nhất định nên người tạo lập thường sẽ tối ưu hóa được nó nhằm tối thiểu kích thước và chi phí cho lập trình Hệ thống nhúng này thường rất đa dạng và phong phú về chủng loại

1.1.2 Các ngôn ngữ sử dụng cho lập tình nhúng

Có rất nhiều ngôn ngữ đượ ử dụng cho lập trình nhúng Có thể kể đến như c scác ngôn ngữ như C, C++, Java, Java Script, Python, Go, Rust, Parasail, B#, Assembly, Forth …v.v…

1.1.3 Các thiết bị phần cứng cho lập trình nhúng

Các thiế ị phần cứng dùng cho hệ ống nhúng là các linh kiện điện tử, chip t b th

xử lí và các thi t bế ị lưu trữ, các thiế ị ngoại vi, cảm biến…t v

1.1.4 Ứng dụng của lập trình nhúng vớ ời sống thựi đ c tiễn

Lập trình nhúng mang lại r t nhiấ ều ứng dụng trong đờ ống của chúng ta, nó đi i sđôi và gần như là không thể ếu trong các thiế ị điện tử và công nghệ.thi t bLập trình nhúng mang các đặc điểm về sự ện lợ ự động, an toàn và thông ti i, tminh khi áp dụng vào các lĩnh vực của đờ ống i s VD: các thiết bị điện tử gia dụng (nồi cơm, máy giặt, v.v.), các thiế ị ,máy tính, máy in, cây ATM, máy t bbán hang tự động…

1.2 Tìm hiểu về lập trình nhúng trên nền tảng Arduino

1.2.1 Tìm hiểu v Arduino

1.2.1.1 Khái niệm

 Arduino là nền tảng mã nguồn mở giúp tạo tính liên kết và tương tác với nhau tốt hơn giữa các các ứng dụng điện tử do con người xây dựng nên Arduino dùng để thay thế các công cụ chuyên nạp code giúp người dùng lập

Trang 7

trình, thực hiện các dự án điện tử một cách đơn giản, dễ dàng, hiệu quả và ít tốn kém hơn rất nhiều

1.2.1.2 Phần cứng lập trình nhúng nền tảng Arduino:

 Có nhiều loại bo mạch nền tảng Arduino sử dụng cho các mục đích khác

nhau, nhưng hầu hết các bo mạch Arduino có các thành phần như dưới đây:

Hình 2 1 Ảnh minh họa kit Arduino

- Nguồn (USB / Đầu cắm nguồn cái)

Mỗi bo mạch Arduino có một cách nối nguồn Arduino UNO được cấp nguồn từ cáp USB hoặc đầu cắm nguồn cái Trong hình trên, cổng USB được đánh số (1) và đầu cắm nguồn cái được đánh số (2)

Cổng USB cũng hỗ trợ tải mã lên bo mạch Arduino

LƯU Ý: KHÔNG sử dụng nguồn điện lớn hơn 20 Vôn sẽ làm hư Arduino Điện áp thích hợp cho hầu hết các mô hình Arduino là từ 6 đến 12 Vôn

- Các chân (5V, 3.3V, GND, Analog, Kỹ thuật số, PWM, AREF)

Các chân trên Arduino là chỗ nối dây để xây dựng mạch (để liên kết bo mạch với dây thường có các đầu cắm bằng nhựa đen để bạn có thể cắm ngay dây vào bo mạch) Arduino có nhiều loại chân khác nhau, mỗi loại được ghi chú trên bo mạch và được sử dụng cho các chức năng khác nhau

Trang 8

GND (3): Viết tắt của ‘Ground’ Có một số chân GND trên Arduino, có thể

sử dụng bất kỳ chân nào để nối đất cho mạch

5V (4) & 3.3V (5): Chân 5V cấp nguồn 5 vôn, và chân 3.3V cấp nguồn 3,3 vôn Hầu hết các linh kiện đơn giản sử dụng với Arduino chạy ổn định ở 5 hoặc 3,3 vôn

Analog (6): Khu vực các chân có ký hiệu 'Analog In' (A0 đến A5 trên UNO) là các chân nhận tín hiệu đầu vào Các chân này có thể đọc tín hiệu từ một cảm biến tương tự (như cảm biến nhiệt độ) và chuyển đổi nó thành một giá trị số mà chúng ta có thể đọc

Digital (7): Qua khu vực các chân analog là tới các chân digital (0 đến 13 trên UNO) Các chân này sử dụng cho cả đầu vào digital (ví dụ như cho biết nút nào được nhấn) và đầu ra digital (như cấp năng lượng cho đèn LED) PWM (8): Bạn có thể thấy dấu ngã (~) bên cạnh một số chân số (3, 5, 6, 9,

10 và 11 trên UNO) Các chân này hoạt động như các chân digital thông thường, ngoài ra có thể sử dụng cho điều chế độ rộng xung (PWM)

AREF (9): Là viết tắt của tham chiếu analog Chân này thường ít được sử dụng Thỉnh thoảng nó được dùng để thiết lập điện áp tham chiếu bên ngoài (giữa 0 và 5 Vôn) làm giới hạn trên cho các chân analog đầu vào

- Nút reset

Cũng giống như Nintendo gốc, Arduino có nút reset (10) Nếu nhấn nút này

sẽ tạm thời kết nối chân reset với đất và khởi động lại bất kỳ mã nào được nạp trên Arduino Nó rất hữu dụng nếu mã của bạn không lặp lại và bạn muốn kiểm tra nó nhiều lần

Trang 9

- Đèn LED báo nguồn

Ngay bên dưới và bên phải của từ “UNO” trên bảng mạch có một đèn LED nhỏ bên cạnh chữ ‘ON’ (11) Đèn LED này sẽ sáng lên khi cắm Arduino vào nguồn điện

- Đèn LED RX TX

TX là viết tắt của truyền, RX là viết tắt của nhận Những ký hiệu này xuất hiện khá nhiều trong các thiết bị điện tử để chỉ ra các chân chịu trách nhiệm về giao tiếp nối tiếp Trong trường hợp bo mạch ở trên, có hai vị trí trên UNO Arduino nơi TX và RX xuất hiện - vị trí thứ nhất là chỗ các chân số 0 và 1, và

vị trí thứ hai bên cạnh đèn LED báo TX và RX (12) Những đèn LED này sẽ cung cấp chỉ dẫn trực quan bất cứ khi nào Arduino nhận hoặc truyền dữ liệu

- Bộ điều chỉnh điện áp

Bộ điều chỉnh điện áp (14) là thứ bạn không có tương tác với Arduino Nhưng nó điều chỉnh lượng điện áp được đưa vào bo mạch Arduino Giống như người gác cổng, nó sẽ xử lý điện áp phụ có thể gây hại cho mạch Tất nhiên, nó

có giới hạn của nó, do đó, không cấp điện cho Arduino lớn hơn 20 vôn

Trang 10

Hình 2 2 Ảnh Arduino Uno R3

 Lilypad Arduino

LilyPad là một công nghệ dệt e-textile được phát triển bởi Leah Buechley

và được hợp tác thiết kế bởi Leah và SparkFun Mỗi LilyPad được thiết kế cho phép chúng có thể gắn lên quần áo bằng chỉ dẫn điện LilyPad có đầu vào, đầu

ra, điện, và bo mạch cảm biến xây dựng chuyên cho công nghệ dệt e-textile Thậm chí có thể rửa được

Trang 11

Hình 2 3 Ảnh Lilypad Arduino

 RedBoard

RedBoard có thể được lập trình qua cáp USB Mini B sử dụng Arduino IDE

-Nó sẽ hoạt động trên Windows 8 mà không phải thay đổi cài đặt bảo mật -Nó

ổn định hơn nhờ chip USB / FTDI, cộng với chip hoàn toàn phẳng ở mặt sau, giúp bạn dễ dàng nhúng vào các project hơn Chỉ cần cắm bo mạch, chọn

“Arduino UNO từ menu là có thể tải mã lên Bạn có thể cấp nguồn cho ” RedBoard qua USB hoặc qua đầu cắm nguồn cái Bộ điều chỉnh nguồn trên bo mạch có thể xử lý từ 7 đến 15V DC

Hình 2 4 Ảnh RedBoard

 Arduino Mega 2560

Trang 12

Arduino Mega giống như anh trai của UNO Nó có rất nhiều chân đầu vào / đầu ra digital (14 chân có thể được sử dụng làm đầu ra PWM), 16 chân đầu vào analog, kết nối USB, giắc cắm nguồn và nút reset Nó chứa mọi thứ cần thiết để

hỗ trợ vi điều khiển; chỉ cần kết nối nó với một máy tính bằng cáp USB hoặc cấp điện cho nó bằng bộ chuyển đổi dòng xoay chiều thành một chiều hoặc pin

Vì có nhiều chân nên bo mạch này rất tiện dụng cho các project cần nhiều các đầu vào hoặc đầu ra digital (như nhiều đèn LED hoặc nhiều nút)

Hình 2 5 Ảnh Arduino Mega R3

 Arduino Leonardo

Leonardo là bo mạch arduino đầu tiên sử dụng một vi điều khiển tích hợp USB Vì thế nên nó rẻ hơn và đơn giản hơn Ngoài ra, bởi vì bo mạch xử lý USB trực tiếp, các thư viện mã có sẵn cho phép bo mạch mô phỏng bàn phím máy tính, chuột và nhiều thứ nữa

Trang 13

Hình 2 6 Ảnh Arduino Leonardo

1.2.1.4 Ứng dụng của nền tảng Arduino

 Arduino là một nền tảng tốt, với phần cứng nhỏ gọn, rất thích hợp để sinh viên nghiên cứu các dự án nhỏ gọn như robot, xe tự hành thiết bị cầm , tay, điều khiển thiết bị gia dụng thông minh v.v…

Trang 14

Hình 2 7 Một số ứng dụng của Arduino

Trang 15

1.2.1.5 Ngôn ngữ sử dụng cho lập trình Arduino

Ngôn ngữ:

 Có hai ngôn ngữ chính thường được dùng cho Arduino, đó là và C C++

( Trong đồ án này, em sẽ thực hiện bằng ngôn ngữ lập trình bậc cao C)

Phần mềm hỗ trợ:

 Có rất nhiều công cụ từ đơn giản tới phức tạp, hỗ ợ người dùng trong lậtr p trình nhúng Trên nền tảng Arduino, có 2 phiên bản phần mềm hỗ ợ lậtr p trình nhúng:

 Arduino IDE: Thường được sử dụng nhiều, ứng dụng trên nền tảng HDH Window, Mac…

 Arduino Droid: Sử dụng trên nền tảng HDH Android, thường ít khi được dùng

 Trong đồ án này, chúng em sẽ sử dụng phần mềm hỗ ợ lập trình bằng ngôn trngữ bậc cao C trên nền tảng Arduino, đó là Arduino IDE

Trang 16

1.3 Cơ sở lý thuyết của đồ án

1.3.1 Tìm hiểu về lập trình nhúng thời gian thực

1.3.2 Tìm hiểu về âm thanh và xử lý âm thanh

1.3.2.1 Tìm hiểu về âm thanh

Khái niệm:

Âm thanh là các dao động cơ học của các phân tử, nguyên tử hay các hạt làm nên vật ch và lan truyền trong vật chất như cácất sóng

(Ảnh dạng sóng âm thanh từ 1 nguồn)

Âm thanh, giống như nhiều sóng, được đặc trưng bởi tần số, bước sóng, chu

kỳ, biên độ vàvận tốc lan truyền (tốc độ âm thanh)

1.3.2.2 Xử âm thanhlý

Trên thực tế, âm thanh xung quanh chúng ta không đơn giản như hình trên, mà

nó bao gồm âm thanh từ nhiều nguồn phát ra, được trộn lại với nhau, có tần số và biên

độ biến thiên không tuần hoàn theo thời gian

Trang 17

Trên đây là hình ảnh về sóng âm thanh trong thực tế, ta có thể ấy chúng là thmột hỗn hợp các sóng âm vớ ần số và biên độ khác nhau i t

Tìm hiểu cách xử lý âm thanh

Sau khi đã tìm hiểu được nguyên lí và cách thu phát âm thanh, ta có thể xử lý

âm thanh để hiển thị lên màn hình dưới dạng sóng Cụ ể, có hai phương pháp để xử th

lý âm thanh thu nhận được:

 Phương pháp thứ nhất: VuMeter

VuMeter là phương pháp nhận dạng và xử lí âm thanh dựa trên độ lớn của tín hiệu đầu vào, biến chúng thành lí tường bằng cách lấy độ lớn cực đại trừ đi độ lớn cực tiểu của âm thanh trong một khoảng thời gian nhất định đủ nhỏ để không gây sai số quá lớn

 Phương pháp thứ hai: Biến đổ ourier nhanh (FFT).i f

Đây là phương pháp chuyên sâu hơn, chúng ta có thể dung FFT để nhận dạng

và tách các âm thanh đến từ các nguồn khác nhau dựa trên tần số của chúng, phương pháp này có độ chính xác cao hơn

Trang 18

Để cho dễ hiểu, với hình vẽ ở trên, với phương pháp VuMeter, ta sẽ coi nó là tuần hoàn và làm tròn tín hiệu như đường màu đỏ Còn đối với phương pháp biến đổi FFT, Ta sẽ tách riêng cách màu và chia kênh để ển thị chúng.hi

Trang 19

CHƯƠNG 2 THIẾT KẾ VÀ XÂY DỰNG HỆ THỐNG

2.1 Ý tưởng t ết kế hi phần cứng

- Sau khi nghiên cứu và tìm hiểu, chúng em đã chọn được mộ ố linh kiện phù t shợp để làm dự án

2.1.1 Bo mạch: Esp32 Wroom DEV( dual core)

2.1.1.1 Giới thiệu Esp32

 Esp32 là một loại bo mạch đến từ nhà sản xuất espressif, loại bo mạch này có thể được lập trình bằng nền tảng phần mềm lập trình của Arduino Có rất nhiều phiên bản Esp32 được tùy biến khác nhau, song chúng đều có nhiều chân giao tiếp cũng như các module tiện ích đi kèm như Wifi, Bluetooh, Oled Screen,…v.v…

2.1.1.2 Cấu tạo Esp32

 Tốc độ xung nhịp đọc flash chip 40mhz > 80mhz (tùy chỉnh khi lập trình)

 RAM: 520 KByte SRAM

 520 KB SRAM liền chip

 –(trong đó 8 KB RAM RTC tốc độ cao – 8 KB RAM RTC tốc độ thấp (dùng ở ế độ DeepSleep).ch

 Hỗ ợ 2 giao tiếp không dâytr

 Wi-Fi: 802.11 b/g/n/e/i

 Bluetooth: v4.2 BR/EDR and BLE

 Hỗ ợ tất cả tr các loại giao tiếp chân

 8-bit DACs( digital to analog) 2 cổng

 Analog(ADC) 12 bit- 16 cổng

Trang 20

 Băm xung PWM (tấ ả t c các chân )

 Ultra low power analog pre-amplifier’

 Cảm biến tích hợp trên chip esp32

 Cảm biến Hall (cảm biến từ trường) 1 đầu vào

 Cảm biến đo nhiệt độ 1 đầu vào

 Cảm biến chạm (điện dung) với 10 đầu vào khác nhau

 1024-bit OTP, up to 768 bit for customers

- Cryptographic hardware acceleration: AES, SHA 2, RSA, elliptic curve cryptography (ECC), random number generator (RNG)

- Nguồn điện hoạt động

 Nhiệt độ hoạ ộng 40 t đ - + 85C

 Điện áp hoạ ộng: 2.2t đ -3.6V

 Số cổng GPIOs : 34

Trang 21

Sơ đồ chân

Các loại Esp32 trên thị trường có cấu tạo chân gần giống nhau Các tài liệu về

sơ đồ chân của các loại Esp 32 cũng khá phổ biến Dưới đây là sơ đồ chân của Esp32 DevKitC

Esp 32 rất hữu dụng và đa năng, do vậy, bố cục các linh kiện cũng như cách sử dụng các chân rất phức tạp Các chân với các tính năng cụ ể làm cho chúng phù th

hợp hoặc không phù hợp cho một dự án khi xây dựng Cần cẩn trọng khi sử dụng các chân để có thể tối ưu, tránh mắc sai sẽ gây giảm hiệu năng hoặc gây hư hỏng bo

mạch

Ngày đăng: 25/05/2023, 19:57

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w