60 3 2MB
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG KHOA CÔNG NGHỆ ĐIỆN TỬ VÀ TRUYỀN THÔNG
BÁO CÁO THỰC TẬP TỐT NGHIỆP Đề tài:
XÂY DỰNG THIẾT BỊ KIỂM SOÁT VÀO RA TỰ ĐỘNG DỰA TRÊN THÂN NHIỆT CƠ THỂ
Sinh viên thực hiện
: NGUYỄN QUANG VIỆT
Lớp
: ĐTƯD-K16A
Giáo viên hướng dẫn : Th.S Nguyễn Thanh Tùng
Thái Nguyên, ngày 2 tháng 10 năm 2021
1
LỜI CẢM ƠN Em xin chân thành cảm ơn: Giảng viên hướng dẫn Th.S Nguyễn Thanh Tùng, khoa công nghệ điện tử và truyền thông, trường Đại học công nghệ thông tin và truyền thông - Đại học Thái Nguyên đã hướng dẫn tận tình, tạo dựng cho em vốn kiến thức cơ bản không chỉ giúp em hoàn thành tốt bài thực tập tốt nghiệp của mình mà còn giúp em có một hành trang tri thức chuẩn bị bước vào cuộc sống. Cùng các thầy cô giáo trong khoa công nghệ điện tử và truyền thông, trường đại học công nghệ thông tin và truyền thông – đại học thái nguyên đã tạo mọi điều kiện giúp đỡ em trong suốt thời gian thực hiện đề tài.
Thái nguyên,ngày…. tháng 10 năm 2021 Sinh viên thực hiện Nguyễn Quang Việt
2
MỤC LỤC LỜI CẢM ƠN..............................................................................................................2 MỤC LỤC.................................................................................................................... 3 DANH MỤC HÌNH ẢNH............................................................................................5 CHƯƠNG 1. TỔNG QUAN VỀ ĐỀ TÀI...................................................................7 1.1. Tình hình nghiên cứu thuộc lĩnh vực đề tài.........................................................7 1.1.1. Trên thế giới............................................................................................7 1.1.2. Trong nước...............................................................................................8 1.2. Tính cấp thiết của đề tài......................................................................................9 1.3. Phạm vi nghiên cứu...........................................................................................10 1.4. Mục tiêu của đề tài............................................................................................10 1.5. Nội dung của đề tài............................................................................................10 1.6. Tìm hiểu về thân nhiệt cơ thể người..................................................................10 CHƯƠNG 2. PHÂN TÍCH CÔNG NGHỆ THIẾT KẾ..........................................13 2.1. Yêu cầu thiết kế.................................................................................................13 2.2. Giải pháp thiết kế..............................................................................................13 2.2. Lựa chọn linh kiện.............................................................................................14 2.2.1. Arduino Uno...........................................................................................14 2.2.2. Cảm biến MXL90614.............................................................................18 2.2.3. LCD 16X2..............................................................................................20 2.2.4. I2C.......................................................................................................... 30 2.2.5. Module MP3 Player Mini.......................................................................31 2.2.6. Nguồn.....................................................................................................33 2.2.7. Loa.........................................................................................................33 2.2.8. Cảm Biến Vật Cản Hồng Ngoại E18-D80NK........................................34 2.2.9. Động cơ SERVO....................................................................................35 2.3.Phần mềm phụ trợ..............................................................................................37 2.3.1. Cài đặt phần mềm Arduino IDE.............................................................37 2.3.2.Hướng dẫn sử dụng phần mềm Arduino IDE..........................................40 CHƯƠNG 3. XÂY DỰNG THIẾT BỊ KIỂM SOÁT VÀO RA TỰ ĐỘNG DỰA TRÊN THÂN NHIỆT CƠ THỂ................................................................................43 3.1. Thiết kế phần cứng............................................................................................43 3
3.2. Thiết kế phần mềm............................................................................................45 3.3. Một số hình ảnh của sản phẩm..........................................................................47 KẾT LUẬN VÀ ĐÁNH GIÁ.....................................................................................49 HƯỚNG PHÁT TRIỂN............................................................................................50 TÀI LIỆU THAM KHẢO.........................................................................................51 PHỤ LỤC................................................................................................................... 52
4
DANH MỤC HÌNH ẢNH Hình 1.1: Hình ảnh hệ thống camera đo thân nhiệt tự động và kiểm soát vào ra..........9 Hình 2.1. Sơ đồ khối của hệ thống...............................................................................13 Hình 2.2. Arduino Uno................................................................................................14 Hình 2.3. Vi điều khiển Atmega328 tiêu chuẩn...........................................................15 Hình 2.4. Cấu tạo của Arduino....................................................................................16 Hình 2.5. Các ngõ vào/ngõ ra của Arduino..................................................................17 Hình 2.6. Cảm biến MXL90614..................................................................................19 Hình 2.7. Sơ đồ nguyên lí Cảm biến MXL90614........................................................19 Hình 2.8.LCD 16X2....................................................................................................20 Hình 2.9.Sơ đồ khối của HD44780 .............................................................................22 Hình 2.10. Giản đồ xung cập nhật AC ........................................................................24 Hình 2.11.Mối liên hệ giữa địa chỉ của DDRAM và vị trí hiển thị của LCD ..............24 Hình 2.12. Mối liên hệ giữa địa chỉ của ROM và dữ liệu tạo mẫu kí tự.......................25 Hình 2.13.Bảng mã kí tự (ROM code A00) ................................................................25 Hình 2.14.Mối liên hệ giữa địa chỉ của CGRAM, dữ liệu của CGRAM, và mã kí tự.. 26 Hình 2.15.Module I2C.................................................................................................30 Hình 2.16.Module MP3 Player Mini............................................................................31 Hình 2.17. Sơ đồ chân Module MP3 Player Mini........................................................31 Hình 2.18.Nguồn cho Arduino.....................................................................................33 Hình 2.19.Loa 5W.......................................................................................................33 Hình 2.20.Cảm Biến Vật Cản Hồng Ngoại E18-D80NK.............................................34 Hình 2.21. Sơ đồ chân của E18-D80NK......................................................................35 Hình 2.22. Động cơ Động Cơ Servo SG90..................................................................36 Hình 2.23. Sơ đồ chân Động cơ RC Servo...................................................................37 Hình 2.24 Trang chủ arduino.......................................................................................37 Hình 2.25 Download arduino.......................................................................................38 Hình 2.26 Không nhận driver......................................................................................38 Hình 2.27 Divice Manager...........................................................................................39 Hình 2.28 Update Driver Software..............................................................................39 Hình 2.29 Browse my computer for driver software....................................................39 Hình 2.30 Chọn đường dẫn tới folder “driver” ...........................................................40 5
Hình 2.31 : Khởi động Arduino IDE............................................................................40 Hình 2.32 Chọn Board Arduino và chọn Port..............................................................41 Hình 2.33 Chọn port....................................................................................................41 Hình 3.1. Sơ đồ nguyên lý hệ thống.............................................................................43 Hình 3.2 Lưu đồ thuật toán..........................................................................................45 Hình 3.3. Máy đo thân nhiệt không tiếp xúc................................................................47 Hình 3.4. Mạch điện điều khiển hệ thống ...................................................................48 Hình 3.5. Nhiệt độ cơ thể máy đo được.......................................................................48
6
CHƯƠNG 1. TỔNG QUAN VỀ ĐỀ TÀI 1.1. Tình hình nghiên cứu thuộc lĩnh vực đề tài Ngày nay, công nghệ phát triển như vũ bão. Các hệ thống công nghệ cảm biến, đo lường và điều khiển đã làm thay đổi sâu sắc mọi hoạt động sản xuất của con người. Công nghệ cảm biến đang dần thay đổi các công nghệ tương tự và cũng đang đóng vai trò then chốt trong cuộc cách mạng công nghệ. Với sự phát triển thần kỳ của cuộc cách mạng khoa học - công nghệ cảm biến đã dần xuất hiện trong hầu hết các lĩnh vực của đời sống như: khoa học công nghệ, quân sự, y tế, giáo dục, giáo dục, điều khiển, robot, quốc phòng ... nó gọn nhẹ và thuận tiện, giải quyết được khối lượng công việc lớn, giảm kích thước mạch điện tử, nhiều chức năng và độ chính xác cao. Có thể nói công nghệ cảm biến là một cuộc cách mạng trong ngành kỹ thuật điện tử. Hiện nay dịch bệnh Covid-19 diễn ra rất phức tạp ở trên thế giới nói chung và nước ta nói riêng. Để hạn chế sự lây lan của dịch bệnh nước ta đã có những biện pháp rất tốt trong công tác phòng và chữa dịch bệnh Covid-19, với nền y học hiện đại và công nghệ tiên tiến thì nước ta đã không bị ảnh hưởng nặng nề về nền kinh tế và cả con người, không như một số nước trên thế giới hiện tại đang bị ảnh hưởng nặng bởi Covid-19 như: Ấn Độ, Trung Quốc, Nhật Bản…để đạt được kết quả đó Việt Nam đã có những biện pháp rất tốt trong công tác phòng trống dịch bệnh như: cách li tại nhà, giãn cách xã hội, thực hiện công tác kiểm dịch tại các khu vực đông dân cư, các khu công nghiệp, các trường học… và biện pháp tốt nhất để phát hiện kịp thời phát hiện dịch bệnh và xử lí nhanh chóng đó là đo thân nhiệt của từng người nhằm kiểm soát nhiệt độ của người vào ra tại các địa điểm đông người tránh để những người có khả năng bị nhiễm bệnh đi vào các khu tập trung đông người. Do đó em quyết định chọn đề tài “Xây dựng thiết bị kiểm soát vào ra tự động dựa trên thân nhiệt cơ thể.” 1.1.1. Trên thế giới - Dịch bệnh COVID-19 đã được tuyên bố là tình trạng khẩn cấp về sức khỏe cộng đồng toàn cầu. Virus gây bệnh COVID-19 đã lây lan sang nhiều quốc gia và khu vực trên thế giới. Các nhà khoa học ở nhiều nước vẫn đang tiến hành nghiên cứu để hiểu rõ hơn về cơ chế gây bệnh của chủng virus này. Tuy nhiên, chúng ta biết rằng virus gây ra COVID19 lây lan khi tiếp xúc trực tiếp với các giọt đường hô hấp của người bị bệnh. Những giọt này thường được tiết ra khi ho hoặc hắt hơi. Một cách phổ 7
biến khác để lây lan virus là dùng tay chạm vào bề mặt bị ô nhiễm, sau đó chạm vào mặt, chẳng hạn như mắt, mũi và miệng. Khi dịch COVID-19 tiếp tục lây lan, điều quan trọng nhất là phải thực hiện các biện pháp phòng ngừa để hạn chế sự lây lan của virus và giảm thiểu tác động của bệnh. - Toàn thế giới đang bị ảnh hưởng nặng nề bởi dịch bệnh Covid-19, nên không chỉ ở Việt Nam mà các nước trên thế giới cũng đã và đang có những biện pháp rất tốt để phòng ngừa dịch bệnh và đã sáng chế ra nhiều máy móc để phục vụ trong y tế, trong đó có nhiều máy, hệ thống kiểm soát vào ra tự động dựa trên thân nhiệt cơ thể tại nơi tập trung đông người như các công ty, trường học,.. được sử dụng phổ biến ở nhiều nước như Trung Quốc, Nhật Bản, Hàn Quốc, Mỹ, Nga… đều sử dụng hệ thống kiểm soát vào ra tự động để giám sát và sàng lọc kịp thời tình hình sức khỏe cộng đồng. 1.1.2. Trong nước Đến nay, dịch COVID-19 đã lây lan ở hơn 200 quốc gia và khu vực trên thế giới. Hiện dịch bệnh trên thế giới vẫn chưa có dấu hiệu dừng lại, nhất là sau khi các biện pháp phòng, chống dịch được nới lỏng ở một số nước, dịch đã xuất hiện trở lại và tiếp tục gia tăng mạnh. Ở Việt Nam, nguy cơ bùng phát dịch bệnh luôn hiện hữu. Vì vậy, cần có giải pháp sống an toàn phù hợp, nhất là trong thời kỳ chưa có thuốc điều trị đặc hiệu và chưa có vắc xin được sử dụng rộng rãi trong cộng đồng. Đồng thời, thực hiện nghiêm túc các chỉ đạo của Thủ tướng Chính phủ về công tác phòng chống dịch theo “bình thường mới” nhằm đạt được mục tiêu kép là chống dịch có hiệu quả và phát triển kinh tế, xã hội. Trước tình hình dịch bệnh cấp bách như hiện nay, Việt Nam đã không ngừng nghiên cứu, đưa vào sử dụng các hệ thống máy móc giám sát, kiểm tra sức khỏe cộng đồng hiện đại, đồng thời đã thực hiện một số nghiên cứu và ứng dụng thực tế ở nước ta: - Nhóm tác giả của Trường cao đẳng Công nghiệp và Xây dựng - Bộ Công thương đã nghiên cứu chế tạo thành công các thiết bị tự động phục vụ cho việc kiểm soát dịch Covid-19 ra vào cơ quan, giáo viên Trường cao đẳng Công nghiệp và Xây dựng đã nghiên cứu chế tạo thành công hai buồng tự động thực hiện các công việc sát khuẩn tay, sát khuẩn toàn thân và đo nhiệt độ hoàn toàn tự động. - Idworld Việt nam đã nghiên cứu và chế tạo hệ thống camera thân nhiệt kết hợp với cổng kiểm soát phân làn đi bộ hệ thống giúp kiểm soát dịch bệnh từ xa một 8
cách tự động và sàng lọc được cái đối tượng có dấu hiệu sốt từ đấy giúp giảm thiểu được sự lây lan của dịch bệnh, sớm phát hiện và cách ly. - Sunshine Group đi theo xu hướng 4.0 và tăng cường các biện pháp phòng chống dịch, hệ thống camera an ninh, nhận diện khuôn mặt FaceID kết nối trực tiếp với Sunshine App, trạm kiểm soát an ninh nhiều lớp ... 100% thiết bị tòa nhà. Điều này rất hữu ích cho việc giám sát sự xuất hiện của người lạ và kiểm soát chính xác hành động của cư dân và nhân viên. Nếu một cá nhân có nguy cơ lây nhiễm được phát hiện, hệ thống lập tức trích xuất dữ liệu đối tượng và lịch trình di chuyển nhằm phối hợp hợp tích cực với cơ quan an ninh và y tế khoanh vùng có dịch, tối ƣu trong công tác ngăn ngừa bùng phát dịch bệnh… và còn rất nhiều ứng dụng thực tế khác ở nước ta.
Hình 1.1: Hình ảnh hệ thống camera đo thân nhiệt tự động và kiểm soát vào ra 1.2. Tính cấp thiết của đề tài. Hiện nay, theo dõi nhiệt độ cơ thể và khử trùng tay đúng cách là một trong những biện pháp quan trọng để ngăn ngừa nhiễm COVID-19. Tăng cường các biện pháp này sẽ giúp phát hiện các trường hợp sốt một biểu hiện của bệnh COVID-19 và hạn chế lây nhiễm chéo. Ở nước ta đã có nhiều nghiên cứu khoa học được ứng dụng vào thực tiễn đáp ứng mọi nhu cầu của con người, thể hiện rõ nét ở việc ứng dụng nghiên cứu khoa học vào các sản phẩm. Do tập trung vào nghiên cứu và thực hành, nền y học của đất nước đang phát triển từng ngày, điều này rất rõ ràng trong việc ngăn chặn dịch Covid-19. Nước ta đã có máy móc hiện đại để phòng chống dịch Covid-19 như nhiệt kế thủ công, hệ thống camera theo dõi thân nhiệt kiểm soát các ra vào tại các khu vực công cộng... Nhưng những hệ thống đo thân nhiệt hiện tại vẫn chưa tối ưu, 9
cách hoạt động khó khăn, giá thành cao chưa
phù hợp với việc sử dụng ở tất
các điểm đông dân cư và đặc biệt truờng học. Từ đó em đã nghiên và xây dựng thiết bị kiểm soát vào ra tự động dựa trên thân nhiệt cơ thể để sử dụng phù hợp với các khu vực dân cơ vừa và nhỏ và các trường đại học, hệ thống này có ưu điểm hơn với những hệ thống đã có mặt trên thị trường như: dễ vận hành và sử dụng, tự động hoá toàn bộ,độ chính xác cao, giá thành rẻ hơn rất nhiều so với những sản phẩm đã có mặt trên thị trường nước ta hiện nay. 1.3. Phạm vi nghiên cứu - Tìm hiểu về ngôn ngữ lập trình Arduino cho Arduino Uno; - Tìm hiểu về Arduino Uno, MLX906 GY-906, Màn hình LCD1602, cảm biến hồng ngoại, loa, DFplayer mini, nguồn Adapter 9V 1A, sevor SG90. - Thiết kế và thi công Phần cứng và các Module giao diện hiện thị, Module điều khiển, đo và giám sát thân nhiệt MLX906 GY-906. - Xây dựng thiết bị kiểm soát vào ra tự động dựa trên thân nhiệt cơ thể. 1.4. Mục tiêu của đề tài - Tìm hiểu về hệ thống ứng dụng đo và giám sát nhiệt độ với MLX906 GY-906. - Xây dựng thiết bị kiểm soát vào ra tự động dựa trên thân nhiệt cơ thể. - Kiểm tra, đánh giá tính ứng dụng của đề tài. 1.5. Nội dung của đề tài - Tìm hiểu về phần mềm lập trình arduino IDE. - Tìm hiểu về kit Arduino Uno, module DFplayer mini, loa , cảm biến vật cản hồng ngoại E18-D80NK, màn hình LCD1602, MLX906 GY-906. - Xây dựng thiết bị kiểm soát vào ra tự động dựa trên thân nhiệt cơ thể. 1.6. Tìm hiểu về thân nhiệt cơ thể người. Thân nhiệt là nhiệt độ của cơ thể khác nhau ở mỗi vùng: - Luôn thay đổi ở cơ - Da có nhiệt độ thấp nhất. - Cao nhất ở gan là trung tâm quan trọng chuyển hóa các chất - Thấp hơn ở máu Loại thân nhiệt: Tùy vị trí đo nhiệt độ, người ta chia làm 2 loại thân nhiệt: 10
- Thân nhiệt trung tâm: Nhiệt độ ở những vùng nằm sâu trong cơ thể, là nhiệt độ trực tiếp ảnh hưởng đến tốc độ các phản ứng sinh học xảy ra trong cơ thể, là cơ sở của hoạt động điều nhiệt và ít thay đổi theo nhiệt độ của môi trường. Thân nhiệt trung tâm thường được đo ở ba vị trí: + Ở trực tràng: hằng định nhất, trong điều kiện bình thường dao động trong khoảng 36,3 - 37,1oC. + Ở miệng: thấp hơn ở trực tràng 0,2 - 0,6 oC. + Ở nách: thấp hơn ở trực tràng 0,5 – 1 oC. - Thân nhiệt ngoại vi: Thân nhiệt ngoại vi là nhiệt độ ở da, chịu ảnh hưởng của nhiệt độ môi trường nhiều hơn, thân nhiệt ngoại vi cũng thay đổi theo vị trí đo: + Ở trán: trung bình là 33,5 oC. + Ở lòng bàn tay: 32 oC. + Ở mu bàn chân: 28 oC. Thân nhiệt là kết qủa 2 quá trình sinh nhiệt và tỏa nhiệt. - Giảm thân nhiệt Giảm thân nhiệt là tình trạng nhiệt độ cơ thể giảm bất thường. Bình thường, nhiệt độ cơ thể chúng ta vào khoảng 37 oC. Khi bị chứng hạ thân nhiệt nhiệt độ cơ thể bạn giảm xuống dưới 35oC và cần phải được cấp cứu ngay lập tức. Nếu cơ thể không kịp tạo nhiệt tim hệ thống thần kinh và cơ quan khác sẽ bị rối loạn hoạt động gây nguy hiểm đến tính mạng. Giảm thân nhiệt là tình trạng mất nhiều nhiệt của cơ thể gây rối loạn giữa thải nhiệt và sinh nhiệt làm cho thân nhiệt giảm xuống. Có ba trạng thái giảm thân nhiệt: - Giảm thân nhiệt sinh lý: gặp ở động vật ngủ đông. - Giảm thân nhiệt nhân tạo: chủ động giảm thân nhiệt. - Giảm thân nhiệt bệnh lý: do nhiệt độ của môi trường thấp hoặc do trạng thái bệnh lý của cơ thể. Trong lâm sàng, bệnh nhân có dấu hiệu giảm thân nhiệt khi nhiệt độ đo ở trực tràng dưới 36oC. Nguyên nhân gây giảm thân nhiệt. - Giảm thân nhiệt gặp trong các trường hợp bệnh lý do rối loạn chuyển hóa nghiêm trọng như ở các bệnh xơ gan, đái đường, suy dinh dưỡng, một số trường hợp bệnh nhân có sốc. 11
- Giảm thân nhiệt do tăng thải nhiệt: nhiệt độ của môi trƣờng bên ngoài thấp, dẫn đến chênh lệch nhiệt độ quá khả năng sinh nhiệt của cơ thể (nhiễm lạnh). Điều kiện gây giảm thân nhiệt. Trong cùng những điều kiện như nhau của nhiệt độ môi trường, mức độ giảm thân nhiệt phụ thuộc vào các yếu tố: - Thời gian chịu tác động của lạnh dài hay ngắn. - Độ ẩm và tốc độ không khí di chuyển. - Điều kiện sinh hoạt: ăn uống, quần áo, các phương tiện chống lạnh. - Tác động của rượu và một số hóa chất, dược chất: rượu có tác dụng giãn mạch ngoại biên, đồng thời gây mất phản xạ co mạch khi gặp lạnh, đặc biệt khi nồng độ rượu cao trong máu. - Một số thuốc ngủ, thuốc an thần cũng có tác dụng gây giãn mạch, hạ huyết áp gây rối loạn chuyển hóa dẫn đến giảm thân nhiệt. Nguyên nhân gây tăng thân nhiệt Thân nhiệt tăng là một tình trạng cơ thể tích lũy nhiệt, do hạn chế quá trình tăng nhiệt vào môi trƣờng hoặc do tăng sinh nhiệt, cũng có khi phối hợp cả hai. Có 2 loại tăng thân nhiệt: + Tăng thân nhiệt do nhiệt độ môi trường quá cao (nhiễm nóng): Gặp trong say nóng và say nắng. + Tăng thân nhiệt do RL trung tâm điều hòa nhiệt gặp trong cơn sốt. Tăng thân nhiệt là tình trạng cơ thể tích lũy nhiệt, hạn chế quá trình thải nhiệt vào môi trường hoặc do sinh nhiệt tăng, cũng có khi phối hợp cả hai. Những yếu tố ảnh hưởng đến thân nhiệt của con người - Tuổi: Tuổi càng cao thì thân nhiệt càng giảm, tuy nhiên mức độ giảm ít hơn. - Giới tính: phụ nữ thân nhiệt tăng lên 0,3 - 0,5 oC trong giai đoạn giữa các chu kỳ kinh nguyệt, giai đoạn cuối thời kỳ thai nghén thân nhiệt có thể tăng 0,5 - 0,8oC. - Vận động cơ: tình trạng vận động các cơ càng lớn thân nhiệt càng tăng. - Nhiệt độ môi trường: trong môi trường quá nóng hoặc quá lạnh thân nhiệt cũng tăng hoặc giảm. - Trạng thái bệnh lý: nhìn chung trong các bệnh nhiễm khuẩn thân nhiệt tăng lên (trong bệnh tả, bệnh viêm gan virus) thân nhiệt có thể giảm ở giai đoạn cấp tính. 12
CHƯƠNG 2. PHÂN TÍCH CÔNG NGHỆ THIẾT KẾ 2.1. Yêu cầu thiết kế - Tìm hiểu về Arduino Uno, MLX906 GY-906, màn hình LCD1602, cảm biến vật cản hồng ngoại E18-D80NK., loa, DFplayer mini, nguồn Adapter 9V 1A - Thiết kế và thi công Phần cứng và các Module giao diện hiện thị, Module điều khiển, đo và giám sát thân nhiệt MLX906 GY-906. - Xây dựng thiết bị kiểm soát vào ra tự động dựa trên thân nhiệt cơ thể. 2.2. Giải pháp thiết kế
Hình 2.1. Sơ đồ khối của hệ thống. -
Khối nguồn: Làm nhiệm vụ cung cấp điện áp cho toàn bộ hệ thống. Ở đây chúng ta sử dùng nguồn có điện áp 9V.
-
Khối cảm biến: Khối cảm biến làm nhiệm vụ thu thập các dữ liệu cần thiết để truyền về vi điều khiển trung tâm.
-
Khối hiển thị: Khối hiển thị làm nhiệm vụ hiện thị các dữ liệu nhiệt độ mà khối cảm biến đo được nhằm cho người dùng dễ dàng nắm bắt được các dữ liệu.
-
Khối chấp hành: Khối chấp hành gồm module MP3 và Loa làm nhiệm vụ phát ra âm thanh cho người sử dụng có thể lắng nghe được các thông tin mà cảm biến đã đo được, Sevor SG90 làm nhiệm vụ đóng mở barie. Khối vi xử lý trung tâm : Khối này làm nhiệm vụ điều khiển các hoạt động của hệ thống, tổng hợp tính toán và xử lí các tín hiệu từ các cảm biến, sau đó đưa các tín hiệu này đến khối hiển thị để hiển thị lên mà hình LCD và tới khối chấp hành để phát âm thanh và điều khiển servor. 13
2.2. Lựa chọn linh kiện 2.2.1. Arduino Uno. "Uno" có nghĩa là một bằng tiếng Ý và được đặt tên để đánh dấu việc phát hành sắp tới của Arduino 1.0. Uno và phiên bản 1.0 sẽ là phiên bản tài liệu tham khảo của Arduino. Uno là mới nhất trong các loại board Arduino, và các mô hình tham chiếu cho các nền tảng Arduino. Arduino Uno là một “hội đồng quản trị” dựa trên ATmega328. Nó có 14 số chân đầu vào / đầu ra, 6 đầu vào analog, 16 MHz cộng hưởng gốm, kết nối USB, một jack cắm điện, một tiêu đề ICSP, và một nút reset. Nó chứa tất cả mọi thứ cần thiết để hỗ trợ các vi điều khiển; chỉ cần kết nối nó với máy tính bằng cáp USB hoặc cấp điện cho nó để bắt đầu. Uno khác với tất cả các phiên bản trước ở chỗ nó không sử dụng các FTDI chip điều khiển USB-to-serial. Thay vào đó, nó có tính năng Atmega 16U2 lập trình như là một công cụ chuyển đổi USB-to-serial. Phiên bản 2 (R2) của Uno sử dụng Atmega8U2 có một điện trở kéo dòng 8U2 HWB xuống đất, làm cho nó dễ dàng hơn để đưa vào chế độ DFU. Phiên bản 3 (R3) của Uno có các tính năng mới sau đây: - Thêm SDA và SCL gần với pin Aref và hai chân mới được đặt gần với pin RESET, các IOREF cho phép thích ứng với điện áp cung cấp. - Đặt lại mạch khỏe mạnh hơn. - Atmega 16U2 thay thế 8U2.
Hình 2.2. Arduino Uno. 14
Cấu trúc, thông số. Vi điều khiển Điện áp hoạt động Tần số hoạt động Dòng tiêu thụ Điện áp vào khuyên dùng Điện áp vào giới hạn Số chân Digital I/O Số chân Analog Dòng tối đa trên mỗi chân I/O Dòng ra tối đa (5V) Dòng ra tối đa (3.3V) Bộ nhớ flash SRAM EEPROM Vi điều khiển & bộ nhớ
ATmega328 họ 8bit 5V DC (chỉ được cấp qua cổng USB) 16 MHz khoảng 30mA 7-12V DC 6-20V DC 14 (6 chân hardware PWM) 6 (độ phân giải 10bit) 30 mA 500 mA 50 mA 32 KB (ATmega328) với 0.5KB dùng bởi bootloader 2 KB (ATmega328) 1 KB (ATmega328)
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 LED nhấ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,…
Hình 2.3. Vi điều khiển Atmega328 tiêu chuẩn. 32KB bộ nhớ Flash: những đoạn lệnh 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, hiếm khi nào cần quá 20KB bộ nhớ này. 2KB cho SRAM (Static Random Access Memory): giá trị các biến khai báo khi lập trình sẽ lưu ở đây. Khai báo càng nhiều biến thì càng cần nhiều bộ nhớ RAM.
15
Tuy vậy, thực sự thì cũng hiếm khi nào bộ nhớ RAM lại trở thành thứ 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 có thể đọc và ghi dữ liệu vào mà không phải lo bị mất khi cúp điện giống như dữ liệu trên SRAM. -
Cấu tạo:
Hình 2.4. Cấu tạo của Arduino.
Một board Arduino đời đầu gồm một cổng giao tiếp RS-232 (góc phía trênbên trái) và một chip Atmel ATmega8 (màu đen, nằm góc phải-phía dưới); 14 chân I/O số nằm ở phía trên và 6 chân analog đầu vào ở phía đáy. 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). 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. Chiều dài tối đa và chiều rộng của Uno PCB là 2,7 và 2,1 inch tương ứng, với kết nối USB và jack điện mở rộng vượt ra ngoài không gian cũ. Bốn lỗ vít cho phép được gắn vào một bề mặt khác. Vị trí & chức năng các chân. 16
Nếu không có sẵn nguồn từ cổng USB, có thể cấp nguồn cho Arduino UNO từ một bộ chuyển đổi AC→DC hoặc pin. Các bộ chuyển đổi có thể được kết nối bằng một plug-2.1mm trung tâm tích cực vào jack cắm điện. Trường hợp cấp nguồn quá ngưỡng trê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 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 ở chân này là 50mA. • Vin (Voltage Input): để cấp nguồn ngoài cho Arduino UNO, ta nối cực dương của nguồn với chân này và cực âm 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 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Ω. Các chân Input/Output:
Hình 2.5. Các ngõ vào/ngõ ra của Arduino.
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 tối đa trên mỗi chân là 40mA. 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ân này. Kết nối bluetooth thường thấy nói nôm na chính là kết nối 17
Serial không dây. Nếu không cần giao tiếp Serial, 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 một cách đơn giản, có thể điều chỉnh được điện áp ra ở chân này từ mức 0V đến 5V 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 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, ta 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 → 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, ta 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 cấp điện áp 2.5V vào chân này thì ta 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ới các thiết bị khác. 2.2.2. Cảm biến MXL90614. Cảm biến nhiệt độ MLX90614ESF-BAA là một nhiệt kế hồng ngoại được thiết kế cho cảm biến nhiệt độ không tiếp xúc.Cảm biến có bộ đọc ADC 17-bit và một DSP mạnh mẽ góp phần cho độ chính xác cao của cảm biến MLX90614. Ứng dụng cảm biến bao gồm đo nhiệt độ cơ thể và phát hiện chuyển động. MLX90614 cung cấp hai đầu ra: PWM và SMBus (tức là TWI, I2C). PWM 10 bit cung cấp độ phân giải 0.14 ° C, trong khi giao diện TWI có độ phân giải 0.02 ° C. MLX90614 được nhà máy hiệu chuẩn trong phạm vi nhiệt độ rộng: -40 đến 85 ° C cho nhiệt độ môi trường xung quanh và -70 đến 382,2 ° C đối với nhiệt độ của vật. Giá trị đo được là nhiệt độ trung bình của tất cả các đối tượng trong lĩnh vực của cảm biến. MLX90614 cung cấp độ chính xác tiêu chuẩn là 0.5 ° C xung quanh nhiệt độ môi trường xung quanh.
18
Hình 2.6. Cảm biến MXL90614.
Kích thước nhỏ, chi phí thấp
Dễ dàng tích hợp
Phạm vi nhiệt độ đo nhiệt độ rộng:
-40 đến + 85 ° C trong nhiệt độ cảm biến
-70 đến + 380 ° C nhiệt độ của đối tượng
Giao diện kỹ thuật số SMBus tương thích ngõ ra PWM cho độ chính
xác caoChế độ tiết kiệm năng lượng.
Hình 2.7. Sơ đồ nguyên lí Cảm biến MXL90614. Cấu hình sơ đồ chân MLX90614. Số thứ tự chân 1 2
Tên Chân Chức năng Vdd(Power supply) Vdd có thể được sử dụng để cấp nguồn cho Ground
cảm biến, thường sử dụng 5V. Chân nối mass 19
3
SDA – Serial Data
Chân dữ liệu nối tiếp được sử dụng cho
4
Giao tiếp I2C SCL – Serial Clock Serial Clock
Pin
used
for
I2C
Communication 2.2.3. LCD 16X2.
Hình 2.8.LCD 16X2. -
Chức năng các chân :
Chân Ký hiệuMô tả 1 Vss Chân nối đất cho LCD, khi thiết kế mạch ta nối chân này với GND của 2 3 4
VDD
mạch điều khiển Chân cấp nguồn cho LCD, khi thiết kế mạch ta nối chân này với
VEE RS
VCC=5V của mạch điều khiển Điều chỉnh độ tương phản của LCD. Chân chọn thanh ghi (Register select). Nối chân RS với logic “0” (GND) hoặc logic “1” (VCC) để chọn thanh ghi. + Logic “0”: Bus DB0-DB7 sẽ nối với thanh ghi lệnh IR của LCD (ở chế độ “ghi” - write) hoặc nối với bộ đếm địa chỉ của LCD (ở chế độ “đọc” - read) + Logic “1”: Bus DB0-DB7 sẽ nối với thanh ghi dữ liệu DR bên trong
5
R/W
LCD. Chân chọn chế độ đọc/ghi (Read/Write). Nối chân R/W với logic “0” để LCD hoạt động ở chế độ ghi, hoặc nối với logic “1” để LCD ở chế
6
E
độ đọc. Chân cho phép (Enable). Sau khi các tín hiệu được đặt lên bus DB0DB7, các lệnh chỉ được chấp nhận khi có 1 xung cho phép của chân E. + Ở chế độ ghi: Dữ liệu ở bus sẽ được LCD chuyển vào(chấp nhận) 20
thanh ghi bên trong nó khi phát hiện một xung (high-to-low transition) của tín hiệu chân E. + Ở chế độ đọc: Dữ liệu sẽ được LCD xuất ra DB0-DB7 khi phát hiện cạnh lên (low-to-high transition) ở chân E và được LCD giữ ở bus đến 7 - 14 DB0 DB7
khi nào chân E xuống mức thấp. -Tám đường của bus dữ liệu dùng để trao đổi thông tin với MPU. Có 2 chế độ sử dụng 8 đường bus này : + Chế độ 8 bit : Dữ liệu được truyền trên cả 8 đường, với bit MSB là bit DB7. + Chế độ 4 bit : Dữ liệu được truyền trên 4 đường từ DB4 tới DB7, bit
15 16
MSB là DB7 Nguồn dương cho đèn nền GND cho đèn nền * Ghi chú : Ở chế độ “đọc”, nghĩa là MPU sẽ đọc thông tin từ LCD thông qua
các chân DBx. Còn khi ở chế độ “ghi”, nghĩa là MPU xuất thông tin điều khiển cho LCD thông qua các chân DBx. Sơ đồ khối của HD44780: Để hiểu rõ hơn chức năng các chân và hoạt động của chúng, ta tìm hiểu sơ qua chíp HD44780 thông qua các khối cơ bản của nó.
21
Hình 2.9.Sơ đồ khối của HD44780 . o Các thanh ghi : Chíp HD44780 có 2 thanh ghi 8 bit quan trọng : Thanh ghi lệnh IR (Instructor Register) và thanh ghi dữ liệu DR (Data Register) Thanh ghi IR : Để điều khiển LCD, người dùng phải “ra lệnh” thông qua tám đường bus DB0-DB7. Mỗi lệnh được nhà sản xuất LCD đánh địa chỉ rõ ràng. Người dùng chỉ việc cung cấp địa chỉ lệnh bằng cách nạp vào thanh ghi IR. Nghĩa là, khi ta nạp vào thanh ghi IR một chuỗi 8 bit, chíp HD44780 sẽ tra bảng mã lệnh tại địa chỉ mà IR cung cấp và thực hiện lệnh đó. VD : Lệnh “hiển thị màn hình” có địa chỉ lệnh là 00001100 (DB7…DB0) Lệnh “hiển thị màn hình và con trỏ” có mã lệnh là 00001110 - Thanh ghi DR : Thanh ghi DR dùng để chứa dữ liệu 8 bit để ghi vào vùng RAM DDRAM hoặc CGRAM (ở chế độ ghi) hoặc dùng để chứa dữ liệu từ 2 vùng RAM này gởi ra cho MPU (ở chế độ đọc). Nghĩa là, khi MPU ghi thông tin vào DR, mạch nội bên trong chíp sẽ tự động ghi thông tin này vào DDRAM hoặc CGRAM. Hoặc khi thông tin về địa chỉ được ghi vào IR, dữ liệu ở địa chỉ này trong vùng RAM nội của HD44780 sẽ được chuyển ra DR để truyền cho MPU. => Bằng cách điều khiển chân RS và R/W chúng ta có thể chuyển qua lại giữ 2 thanh ghi này khi giao tiếp với MPU. Bảng sau đây tóm tắt lại các thiết lập đối với hai chân RS và R/W theo mục đích giao tiếp. RS R/W Chức năng 0 0 Ghi vào thanh ghi IR để ra lệnh cho LCD 0 1 Đọc cờ bận ở DB7 và giá trị của bộ đếm địa chỉ ở DB0-DB6 1 0 Ghi vào thanh ghi DR 1 1 Đọc dữ liệu từ DR Cờ báo bận BF: (Busy Flag) Khi thực hiện các hoạt động bên trong chíp, mạch nội bên trong cần một khoảng thời gian để hoàn tất. Khi đang thực thi các hoạt động bên trong chip như thế, LCD bỏ qua mọi giao tiếp với bên ngoài và bật cờ BF (thông qua chân DB7 khi có thiết lập RS=0, R/W=1) lên để báo cho MPU biết nó đang “bận”. Dĩ nhiên, khi xong việc, nó sẽ đặt cờ BF lại mức 0. Bộ đếm địa chỉ AC : (Address Counter)
22
Như trong sơ đồ khối, thanh ghi IR không trực tiếp kết nối với vùng RAM (DDRAM và CGRAM) mà thông qua bộ đếm địa chỉ AC. Bộ đếm này lại nối với 2 vùng RAM theo kiểu rẽ nhánh. Khi một địa chỉ lệnh được nạp vào thanh ghi IR, thông tin được nối trực tiếp cho 2 vùng RAM nhưng việc chọn lựa vùng RAM tương tác đã được bao hàm trong mã lệnh. Sau khi ghi vào (đọc từ) RAM, bộ đếm AC tự động tăng lên (giảm đi) 1 đơn vị và nội dung của AC được xuất ra cho MPU thông qua DB0-DB6 khi có thiết lập RS=0 và R/W=1 (xem bảng tóm tắt RS - R/W). Lưu ý: Thời gian cập nhật AC không được tính vào thời gian thực thi lệnh mà được cập nhật sau khi cờ BF lên mức cao (not busy), cho nên khi lập trình hiển thị, bạn phải delay một khoảng tADD khoảng 4uS-5uS (ngay sau khi BF=1) trước khi nạp dữ liệu mới. Xem thêm hình bên dưới.
Hình 2.10. Giản đồ xung cập nhật AC . Vùng RAM hiển thị DDRAM : (Display Data RAM) Đây là vùng RAM dùng để hiển thị, nghĩa là ứng với một địa chỉ của RAM là một ô kí tự trên màn hình và khi bạn ghi vào vùng RAM này một mã 8 bit, LCD sẽ hiển thị tại vị trí tương ứng trên màn hình một kí tự có mã 8 bit mà bạn đã cung cấp. Hình sau đây sẽ trình bày rõ hơn mối liên hệ này :
23
Hình 2.11.Mối liên hệ giữa địa chỉ của DDRAM và vị trí hiển thị của LCD . Vùng RAM này có 80x8 bit nhớ, nghĩa là chứa được 80 kí tự mã 8 bit. Những vùng RAM còn lại không dùng cho hiển thị có thể dùng như vùng RAM đa mục đích. Lưu ý là để truy cập vào DDRAM, ta phải cung cấp địa chỉ cho AC theo mã HEX Vùng ROM chứa kí tự CGROM: Character Generator ROM Vùng ROM này dùng để chứa các mẫu kí tự loại 5x8 hoặc 5x10 điểm ảnh/kí tự, và định địa chỉ bằng 8 bit. Tuy nhiên, nó chỉ có 208 mẫu kí tự 5x8 và 32 mẫu kí tự kiểu 5x10 (tổng cộng là 240 thay vì 2^8 = 256 mẫu kí tự). Người dùng không thể thay đổi vùng ROM này.
Hình 2.12. Mối liên hệ giữa địa chỉ của ROM và dữ liệu tạo mẫu kí tự. Như vậy, để có thể ghi vào vị trí thứ x trên màn hình một kí tự y nào đó, người dùng phải ghi vào vùng DDRAM tại địa chỉ x (xem bảng mối liên hệ giữa DDRAM và 24
vị trí hiển thị) một chuỗi mã kí tự 8 bit trên CGROM. Chú ý là trong bảng mã kí tự trong CGROM ở hình bên dưới có mã ROM A00.
Ví dụ : Ghi vào DDRAM tại địa chỉ “01” một chuỗi 8 bit “01100010” thì trên
LCD tại ô thứ 2 từ trái sang (dòng trên) sẽ hiển thị kí tự “b”.
Hình 2.13.Bảng mã kí tự (ROM code A00) . Vùng RAM chứa kí tự đồ họa CGRAM : (Character Generator RAM) Như trên bảng mã kí tự, nhà sản xuất dành vùng có địa chỉ byte cao là 0000 để người dùng có thể tạo các mẫu kí tự đồ họa riêng. Tuy nhiên dung lượng vùng này rất hạn chế: Ta chỉ có thể tạo 8 kí tự loại 5x8 điểm ảnh, hoặc 4 kí tự loại 5x10 điểm ảnh. Để ghi vào CGRAM, hãy xem hình 6 bên dưới.
25
Hình 2.14.Mối liên hệ giữa địa chỉ của CGRAM, dữ liệu của CGRAM, và mã kí tự. Tập lệnh của LCD : Trước khi tìm hiểu tập lệnh của LCD, sau đây là một vài chú ý khi giao tiếp với LCD : * Tuy trong sơ đồ khối của LCD có nhiều khối khác nhau, nhưng khi lập trình điều khiển LCD ta chỉ có thể tác động trực tiếp được vào 2 thanh ghi DR và IR thông qua các chân DBx, và ta phải thiết lập chân RS, R/W phù hợp để chuyển qua lại giữ 2 thanh ghi này. (xem bảng 2) * Với mỗi lệnh, LCD cần một khoảng thời gian để hoàn tất, thời gian này có thể khá lâu đối với tốc độ của MPU, nên ta cần kiểm tra cờ BF hoặc đợi (delay) cho LCD thực thi xong lệnh hiện hành mới có thể ra lệnh tiếp theo. * Địa chỉ của RAM (AC) sẽ tự động tăng (giảm) 1 đơn vị, mỗi khi có lệnh ghi vào RAM. (Điều này giúp chương trình gọn hơn) * Các lệnh của LCD có thể chia thành 4 nhóm như sau : • Các lệnh về kiểu hiển thị. VD : Kiểu hiển thị (1 hàng / 2 hàng), chiều dài dữ liệu (8 bit / 4 bit), … • Chỉ định địa chỉ RAM nội. • Nhóm lệnh truyền dữ liệu trong RAM nội. 26
• Các lệnh còn lại .
Tên lệnh Clear Display
Hoạt động Mã lệnh : DBx = DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 DBx = 0 0 0 0 0 0 0 1 Lệnh Clear Display (xóa hiển thị) sẽ ghi một khoảng trống-blank (mã hiện kí tự 20H) vào tất cả ô nhớ trong DDRAM, sau đó trả bộ đếm địa AC=0, trả lại kiểu hiển thị gốc nếu nó bị thay đổi. Nghĩa là : Tắt hiển thị, con trỏ dời
Return
về góc trái (hàng đầu tiên), chế độ tăng AC. Mã lệnh : DBx = DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
home
DBx = 0 0 0 0 0 0 1 * Lệnh Return home trả bộ đếm địa chỉ AC về 0, trả lại kiểu hiển thị gốc nếu
Entry
nó bị thay đổi. Nội dung của DDRAM không thay đổi. Mã lệnh : DBx = DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
mode set DBx = 0 0 0 0 0 1 [I/D] [S] I/D : Tăng (I/D=1) hoặc giảm (I/D=0) bộ đếm địa chỉ hiển thị AC 1 đơn vị mỗi khi có hành động ghi hoặc đọc vùng DDRAM. Vị trí con trỏ cũng di chuyển theo sự tăng giảm này. S : Khi S=1 toàn bộ nội dung hiển thị bị dịch sang phải (I/D=0) hoặc sang trái (I/D=1) mỗi khi có hành động ghi vùng DDRAM. Khi S=0: không dịch nội dung hiển thị. Nội dung hiển thị không dịch khi đọc DDRAM hoặc Display
đọc/ghi vùng CGRAM. Mã lệnh : DBx = DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
on/off
DBx = 0 0 0 0 1 [D] [C] [B]
control
D: Hiển thị màn hình khi D=1 và ngược lại. Khi tắt hiển thị, nội dung DDRAM không thay đổi. C: Hiển thị con trỏ khi C=1 và ngược lại. B: Nhấp nháy kí tự tại vị trí con trỏ khi B=1 và ngược lại.
Cursor or
Chu kì nhấp nháy khoảng 409,6ms khi mạch dao động nội LCD là 250kHz. Mã lệnh : DBx = DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 DBx = 0 0 0 1 [S/C] [R/L] * *
display
Lệnh Cursor or display shift dịch chuyển con trỏ hay dữ liệu hiển thị sang
shift
trái mà không cần hành động ghi/đọc dữ liệu. Khi hiển thị kiểu 2 dòng, con trỏ sẽ nhảy xuống dòng dưới khi dịch qua vị trí thứ 40 của hàng đầu tiên. Dữ liệu hàng đầu và hàng 2 dịch cùng một lúc. Chi tiết sử dụng xem bảng 27
bên dưới: Function Mã lệnh : DBx = DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 set
DBx = 0 0 1 [DL] [N] [F] * * DL: Khi DL=1, LCD giao tiếp với MPU bằng giao thức 8 bit (từ bit DB7 đến DB0). Ngược lại, giao thức giao tiếp là 4 bit (từ bit DB7 đến bit DB0). Khi chọn giao thức 4 bit, dữ liệu được truyền/nhận 2 lần liên tiếp. với 4 bit cao gởi/nhận trước, 4 bit thấp gởi/nhận sau. N : Thiết lập số hàng hiển thị. Khi N=0 : hiển thị 1 hàng, N=1: hiển thị 2 hàng. F : Thiết lập kiểu kí tự. Khi F=0: kiểu kí tự 5x8 điểm ảnh, F=1: kiểu kí tự
Set
5x10 điểm ảnh. Mã lệnh : DBx = DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
CGRAM DBx = 0 1 [ACG][ACG][ACG][ACG][ACG][ACG] address
Lệnh này ghi vào AC địa chỉ của CGRAM. Kí hiệu [ACG] chỉ 1 bit của chuỗi dữ liệu 6 bit. Ngay sau lệnh này là lệnh đọc/ghi dữ liệu từ CGRAM
Set
tại địa chỉ đã được chỉ định. Mã lệnh : DBx = DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
DDRAM DBx = 1 [AD] [AD] [AD] [AD] [AD] [AD] [AD] address
Lệnh này ghi vào AC địa chỉ của DDRAM, dùng khi cần thiết lập tọa độ hiển thị mong muốn. Ngay sau lệnh này là lệnh đọc/ghi dữ liệu từ DDRAM tại địa chỉ đã được chỉ định. Khi ở chế độ hiển thị 1 hàng: địa chỉ có thể từ 00H đến 4FH. Khi ở chế độ hiển thị 2 hàng, địa chỉ từ 00h đến 27H cho hàng thứ nhất, và từ 40h đến
67h cho hàng thứ 2. Read BF Mã lệnh : DBx = DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 and address
DBx =[BF] [AC] [AC] [AC] [AC] [AC] [AC] [AC] (RS=0,R/W=1) Như đã đề cập trước đây, khi cờ BF bật, LCD đang làm việc và lệnh tiếp theo (nếu có) sẽ bị bỏ qua nếu cờ BF chưa về mức thấp. Cho nên, khi lập trình điều khiển, phải kiểm tra cờ BF trước khi ghi dữ liệu vào LCD. Khi đọc cờ BF, giá trị của AC cũng được xuất ra các bit [AC]. Nó là địa chỉ 28
của Write
CG hay DDRAM là tùy thuộc vào lệnh trước đó. Mã lệnh : DBx = DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
data to
DBx = [Write data] (RS=1,
CG or
R/W=0)
DDRAM Khi thiết lập RS=1, R/W=0, dữ liệu cần ghi được đưa vào các chân DBx từ mạch ngoài sẽ được LCD chuyển vào trong LCD tại địa chỉ được xác định từ lệnh ghi địa chỉ trước đó (lệnh ghi địa chỉ cũng xác định luôn vùng RAM cần ghi) Sau khi ghi, bộ đếm địa chỉ AC tự động tăng/giảm 1 tùy theo thiết lập Entry Read
mode. Mã lệnh : DBx = DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
data
DBx = [Read data] (RS=1,
from CG R/W=1) or
Khi thiết lập RS=1, R/W=1,dữ liệu từ CG/DDRAM được chuyển ra MPU
DDRAM thông qua các chân DBx (địa chỉ và vùng RAM đã được xác định bằng lệnh ghi địa chỉ trước đó). Sau khi đọc, AC tự động tăng/giảm 1 tùy theo thiết lập Entry mode, tuy nhiên nội dung hiển thị không bị dịch bất chấp chế độ Entry mode.
29
2.2.4. I2C - Mạch chuyển đổi I2C cho LCD LCD có quá nhiều chân gây khó khăn trong quá trình kết nối và chiếm dụng nhiều chân của vi điều khiển? Module chuyển đổi I2C cho LCD sẽ giải quyết vấn đề này cho bạn, thay vì sử dụng tối thiểu 6 chân của vi điều khiển để kết nối với LCD (RS, EN, D7, D6, D5 và D4) thì với module chuyển đổi bạn chỉ cần sử dụng 2 chân (SCL, SDA) để kết nối. Module chuyển đổi I2C hỗ trợ các loại LCD sử dụng driver HD44780(LCD 1602, LCD 2004, … ), kết nối với vi điều khiển thông qua giao tiếp I2C, tương thích với hầu hết các vi điều khiển hiện nay. Ưu điểm • Tiết kiệm chân cho vi điều khiển • Dễ dàng kết nối với LCD - Thông số kĩ thuật: • Điện áp hoạt động: 2.5-6V DC • Hỗ trợ màn hình: LCD1602,1604,2004 (driver HD44780) • Giao tiếp: I2C • Địa chỉ mặc định: 0X27 (có thể điều chỉnh bằng ngắn mạch chân A0/A1/A2) • Kích thước: 41.5mm(L)x19mm(W)x15.3mm(H) • Trọng lượng: 5g • Tích hợp Jump chốt để cung cấp đèn cho LCD hoặc ngắt • Tích hợp biến trở xoay điều chỉnh độ tương phản cho LCD.
Hình 2.15.Module I2C.
30
2.2.5. Module MP3 Player Mini. Module MP3 Player mini Kết Hợp Amply DFPlayer Mini là mạch phát âm thanh từ thẻ microSD cực kì nhỏ gọn mà còn tích hợp sẵn ampli để có thể kết nối với loa. Ngoài ra, ta còn có thể điều khiển chơi MP3 bằng Arduino. Mạch còn hỗ trợ giải mã MP3, WAV, WMA. Module MP3 Player mini là mạch phát tập tin âm thanh kiểu máy chơi nhạc MP3. Mạch có thể được sử dụng riêng lẻ chỉ cần pin, loa và nút nhất hoặc kết hợp với vi điều khiển có giao tiếp chuẩn USART.
Hình 2.16.Module MP3 Player Mini. Ứng dụng: - Các hệ thống cảnh báo, báo động - Trạm thông báo, nhắc nhở - Quảng cáo, bán hàng - Các thiết bị phát sóng tự động, phát sóng thường xuyên…
Hình 2.17. Sơ đồ chân Module MP3 Player Mini. 31
Số thứ tự 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Tên Chân VCC RX TX DAC_R DAC_L SPK2 GND SPK1 IO1 GND IO2 ADKEY1 ADKEY2 USB+ USBBUSY
Chức năng Nguồn vào Đầu vào nối tiếp UART Đầu ra nối tiếp UART Đầu ra âm thanh Đầu ra âm thanh Kết nối loa nhỏ Nối mass Kết nối loa nhỏ Kích hoạt cổng Nối mass Kích hoạt cổng Cổng AD 1 Cổng AD 2 USB+ DP USB- DP Trạng thái phát lại
- Thông số kĩ thuật: Tốc độ lấy mẫu (Khz) ; 8 / 11.025 / 12 / 16 / 22.05 / 24 / 32 / 44.1 / 48 với ngõ ra 24bit Hỗ trợ đầy đủ FAT16, FAT32, thẻ TF hỗ trợ tối đa 32Gb. Có thể điều khiển qua các chân IO hay chuẩn nối tiếp. Các file âm thanh có thể sắp xếp theo thư mục (tối đa 100 mục) , mỗi mục chứa tối đa 255 bài hát. Âm thanh có thể chỉnh 6 mức.
32
2.2.6. Nguồn.
Hình 2.18.Nguồn cho Arduino. Nguồn 9V 1A là một loại nguồn chuyển đổi, có thể chuyển đổi từ AC 220V sang 9V DC. Thường được sử dụng để cấp nguồn cho các thiết bị điện như: Tivi box, Camera Wifi, .. Ứng dụng:Nguồn 9V 1A ứng dụng cung cấp nguồn cho các thiết bị điện DC cùng thông số: như các bo mạch điều khiển, Module điều khiển sử dụng nguồn bên ngoài, Thường thấy trong các hệ thống trạm. Được thiết kế chắc chắn dễ sử dung. Quy định điện áp ổn định. Bảo vệ quá áp và ngắn mạch. Hiệu quả cao và tiêu thụ năng lượng thấp, chống nhiễu. 2.2.7. Loa.
Hình 2.19.Loa 5W. Loa 5W 4Ohm là loại Loa 5W 4Ω, có đường kính là 77mm, có chiều cao là 25mm.Loa có nhiệm vụ tạo ra sóng âm và nhận tín hiệu từ bộ phận khuếch đâị rồi rung màng loa tạo ra sóng âm và tái tạo âm thanh truyền đến tai người nghe. - Cấu tạo của loa 33
Loa gồm: thù loa, lỗ dội âm, jack kết nối, củ loa, mạch phân tần và các phụ kiện phụ trợ, thế nhưng bộ phận quan trọng nhất vẫn là củ loa (Driver). Mặc dù hiện nay các củ loa được thiết kế khá đa dạng cả hình dáng lẫn kích thước, thế nhưng cấu tạo của một củ loa thì hầu hết là giống nhau. Ngoài xương loa, nhện loa, côn loa và gân loa, thì một củ loa có: Màng loa: chủ yếu được làm từ giấy hoặc nhựa kim loại, khi màng loa rung ở tốc độ cao sẽ tạo ra âm thanh. Cuộn âm: thực chất cuộn âm của loa là một nam châm điện từ với cấu tạo bao gồm 1 cuộn dây dẫn bao quanh lõi kim loại (thường là sắt). Nam châm vĩnh cửu: hình tròn, được đặt cố định tại phía sau cùng đầu nhọn của loa. 2.2.8. Cảm Biến Vật Cản Hồng Ngoại E18-D80NK. Cảm biến vật cản hồng ngoại E18-D80NK dùng ánh sáng hồng ngoại để xác định khoảng cách tới vật cản cho độ phản hồi nhanh và rất ít nhiễu do sử dụng mắt nhận và phát tia hồng ngoại theo tần số riêng biệt. Cảm biến có thể chỉnh khoảng cách báo mong muốn thông qua biến trở, ngõ ra cảm biến ở dạng cực thu hở nên cần thêm 1 trở treo lên nguồn ở chân Tín hiệu khi sử dụng.
Hình 2.20.Cảm Biến Vật Cản Hồng Ngoại E18-D80NK. Thông số kỹ thuật: - Nguồn điện cung cấp: 3,3V-5V DC. - Khoảng cách phát hiện: 3 ~ 80cm. - Có thể điều chỉnh khoảng cách qua biến trở. 34
- Dòng kích ngõ ra: 300mA. - Ngõ ra dạng NPN cực thu hở giúp tùy biến được điện áp ngõ ra, trở treo lên áp bao nhiêu sẽ tạo thành điện áp ngõ ra bấy nhiêu. - Có led hiển thị ngõ ra màu đỏ. - Kích thước: 1.8cm (D) x 7.0cm (L). - Sơ đồ chân:
Hình 2.21. Sơ đồ chân của E18-D80NK. - Màu nâu: VCC, nguồn dương 5VDC. - Màu xanh dương: GND, nguồn âm 0VDC - Màu đen: Chân tín hiệu ngõ ra cực thu hở NPN, cần phải có trở kéo để tạo thành mức cao. 2.2.9. Động cơ SERVO. Servo là một dạng động cơ điện đặc biệt. Không giống như động cơ thông thường cứ cắm điện vào là quay liên tục, servo chỉ quay khi được điều khiển (bằng xung PPM) với góc quay bị giới hạn trong phạm vi 180, 270 hoặc 90 độ. Mỗi loại servo có kích thước, khối lượng và cấu tạo khác nhau. Có loại thì nặng chỉ 9g (chủ yếu dùng trên máy bay mô mình), có loại thì sở hữu một momen lực bá đạo (vài chục Newton/m), hoặc có loại thì khỏe và nhông sắc chắc chắn,...
35
Hình 2.22. Động cơ Động Cơ Servo SG90. Động cơ servo được thiết kế những hệ thống hồi tiếp vòng kín. Tín hiệu ra của động cơ được nối với một mạch điều khiển. Khi động cơ quay, vận tốc và vị trí sẽ được hồi tiếp về mạch điều khiển này. Nếu có bầt kỳ lý do nào ngăn cản chuyển động quay của động cơ, cơ cấu hồi tiếp sẽ nhận thấy tín hiệu ra chưa đạt được vị trí mong muốn. Mạch điều khiển tiếp tục chỉnh sai lệch cho động cơ đạt được điểm chính xác. Các động cơ servo điều khiển bằng liên lạc vô tuyến được gọi là động cơ servo RC (radio-controlled). Trong thực tế, bản thân động cơ servo không phải được điều khiển bằng vô tuyến, nó chỉ nối với máy thu vô tuyến trên máy bay hay xe hơi. Động cơ servo nhận tín hiệu từ máy thu này. -
Thông Số Kỹ Thuật Động Cơ Servo SG90
- Khối lượng : 9g - Kích thước: 23mmX12.2mmX29mm - Momen xoắn: 1.8kg/cm - Tốc độ hoạt động: 60 độ trong 0.1 giây - Điện áp hoạt động: 4.8V(~5V) - Nhiệt độ hoạt động: 0 ºC – 55 ºC - Động Cơ Servo SG90 góc quay 180 độ
36
Hình 2.23. Sơ đồ chân Động cơ RC Servo.
Ground: Chân nối đất (Mass).
Power: Chân cấp nguồn cho servo.
Control: Chân gửi tín hiệu điều khiển.
2.3.Phần mềm phụ trợ. 2.3.1. Cài đặt phần mềm Arduino IDE Bước 1: Download trực tiếp phần mềm Arduino IDE tại đây hoặc Truy cập vào trang http://arduino.cc/en/Main/Software và tải về chương trình Arduino IDE mới nhất, phù hợp với hệ điều hành của máy mình bao gồm Windown, Mac OS hay Linux. Với Windown có hai bản Cài đặt (.exe) và bản Zip (chỉ cần giải nén và chạy). Tuy nhiên các bạn nên tải bản cài đặt (.exe) để trình cài đặt tự động cài đặt cả driver cho các board mạch arduino. Phần khoanh đỏ.
Hình 2.24 Trang chủ arduino.
37
Bước 2: Chọn JUST DOWNLOAD (free download).
Hình 2.25 Download arduino. Bước 3 : Cài đặt driver để nhận board Arduino Mặc định khi cài đặt Arduino IDE phần mềm sẽ cài luôn các driver để máy tính có thể nhận được các board mạch Arduino. Tuy nhiên một số trường hợp máy tính không nhận được board mạch Arduino, khi đó các bạn làm như sau: Cắm lại cáp USB nối giữa máy tính và Board Arduino, khi đó hiện ra bảng thông báo.
Hình 2.26 Không nhận driver. Bây giờ bạn click vào Start Menu chọn Control Panel kế đến chúng ta chọn System and Security, click System và sau đó chọn Device Manager.
38
Hình 2.27 Divice Manager. Chúng ta sẽ thấy cảnh báo màu vàng thiếu driver trên Arduino. Click chuột phải trên Arduino Uno icon sau đó chọn “Update Driver Software”.
Hình 2.28 Update Driver Software. Chọn “Browse my computer for driver software”.
Hình 2.29 Browse my computer for driver software. Chọn đường dẫn tới folder “driver” nơi mà phần mềm Arduino được lưu trữ.
39
Hình 2.30 Chọn đường dẫn tới folder “driver” . 2.3.2.Hướng dẫn sử dụng phần mềm Arduino IDE. Bước 1: Khởi động Arduino IDE.
Hình 2.31 : Khởi động Arduino IDE Bước 2: Chọn Board Arduino và chọn Port.
40
Hình 2.32 Chọn Board Arduino và chọn Port.
Chọn port.
Hình 2.33 Chọn port. 41
Bước 3: Viết code Do diện tích board nhỏ nên Arduino Nano không thể ghi rõ các chân Analog và Digital như trên Arduino Uno mà phân biệt các chân này bằng cách thêm ký tự A phía trước số thứ tự của chân Analog và chữ D trước số thứ tự của chân Digital. Khi viết code, để giúp trình biên dịch phân biệt chân Analog và chân Digital, nếu cần sử dụng chân Analog, thêm ký tự A trước số thứ tự chân, đối với chân Digital chỉ cần ghi số thứ tự chân. Dưới đây là code demo chớp tắt LED đơn giản, sử dụng LED tích hợp sẵn trên Arduino Nano được nối với chân D13. void setup() { pinMode(13, OUTPUT);
// initialize digital pin 13 as an output
} void loop() { digitalWrite(13, HIGH); // turn the LED on delay(1000);
// wait for a second
digitalWrite(13, LOW); // turn the LED off delay(1000);
// wait for a second
}
42
CHƯƠNG 3. XÂY DỰNG THIẾT BỊ KIỂM SOÁT VÀO RA TỰ ĐỘNG DỰA TRÊN THÂN NHIỆT CƠ THỂ. 3.1. Thiết kế phần cứng
Hình 3.1. Sơ đồ nguyên lý hệ thống. -
Bảng kết nối chân MLX90614 Arduino UNO R3 GND GND VCC 3.3V SCL SCL SDA SDA Bảng kết nối chân giữa Arduino R3 với MLX90614. LCD1602 I2C Arduino UNO R3 GND GND VCC 5V SCL SCL SDA SDA Bảng kết nối chân giữa Arduino R3 với LCD1602 I2C. Cảm Biến Vật Cản Hồng
Arduino
Ngoại E18-D80NK. GND VCC OUT
UNO R3 GND 5V A0
43
Bảng kết nối chân giữa Arduino R3 với cảm biến hồng ngoại.
Module MP3
Arduino UNO
Player Mini GND
R3 GND
VCC
5V
RX
12
TX
11
Bảng kết nối chân giữa Arduino R3 với Module MP3 Player Mini. Module MP3
LOA
Player Mini SPK_1
-
SPK_2
+
Bảng kết nối chân giữa Module MP3 Player Mini với Loa.
-
Động cơ Động Cơ Servo Arduino UNO SG90 R3 GND GND VCC 5V Control 9 Bảng kết nối chân giữa Servo SG90 với Arduino UNO R3. Hoạt động của mạch điện. Mạch sử dụng nguồn 9v-1A , khi cảm biến hồng ngoại phát hiện có vật cản sẽ
gửi tín hiệu đến chân A0 của Arduino, khi Arduino nhận được tín hiệu từ cảm biến hồng ngoại sẽ xuất lệnh điều khiển tới modul MP3 player mini và phát file âm thanh đã được thiết lập trước ra loa. Sau đó cảm biến MLX90614 sẽ thu nhiệt độ cơ thể và gửi giá trị nhiệt độ đo được về Arduino, Arduino sẽ gửi giá trị nhiệt độ đo được hiển thị lên LCD đồng thời gửi tín hiệu tới tới modul MP3 player mini để phát ra file âm thanh đã được thiết lập trước. Nếu nhiệt độ nhỏ hơn 37 oC thì sevor sẽ mở barie, nếu nhiệt độ vượt quá thì barie sẽ không được mở.
3.2. Thiết kế phần mềm Lưu đồ thuật toán:
44
Hình 3.2 Lưu đồ thuật toán -
Khởi tạo tiền xử lý:
-
Khởi tạo các thư viện của LCD i2c, cảm biến MLX90614, module MP3 player mini. #include #include #include #include "SoftwareSerial.h" #include "DFRobotDFPlayerMini.h"
-
#include Khởi tạo các chân kết nối và các biến:
45
#define SERVO_PIN 9 Adafruit_MLX90614 mlx = Adafruit_MLX90614(); LiquidCrystal_I2C lcd(0x27, 16, 2); double temp_obj; double temp_ob; lcd.init(); lcd.backlight(); mlx.begin(); myDFPlayer.volume(29); pinMode(A0,INPUT_PULLUP); -
} Tín hiệu IR==0 :Khi cảm biến hồng ngoại phát hiện có vật cản thì tín hiệu IR=0 sẽ được gửi về chân A0 của Arduino Uno. if(digitalRead(A0) == 0){ myDFPlayer.play(3);delay(4000); temp(); } else{}
-
} Phát loa nội dung 1: Nội dung 1 “Bạn hãy đeo khẩu trang và đo thân nhiệt cơ thể”.
-
Hiển thị nhiệt độ lên LCD: Hiển thị nhiệt độ cơ thể mà cảm biến MLX90614 đo được lên màn hình LCD 16x2.
lcd.setCursor(0,1 ); lcd.print("GOOD HEALTHY !"); lcd.setCursor(0, 0); lcd.print("TEMP BODY:"); lcd.setCursor(10, 0); lcd.print(temp_obj); lcd.setCursor(14, 0); lcd.print("*C");
46
- Phát loa nội dung 2: Nội dung được phát “cơ thể bạn không bị sốt , chúc bạn mạnh khoẻ”. - Phát loa nội dung 3: Nội dung được phát “Cơ thể của bạn bị sốt, bạn hãy về nghỉ ngơi và đo thân nhiệt lại sau”
void sevor(){ if (temp_obj = 37) { Serial.print("NHIET DO"); lcd.clear(); delay(50);} else{ } //man hinh LCD lcd.setCursor(0,1 ); lcd.print("GOOD HEALTHY !"); lcd.setCursor(0, 0); 53
lcd.print("TEMP BODY:"); lcd.setCursor(10, 0); lcd.print(temp_obj); lcd.setCursor(14, 0); lcd.print("*C"); delay(5000); Serial.print("Object temp = "); Serial.println(temp_obj); if(temp_obj >= 37 ){ myDFPlayer.play(1);delay(4000); myDFPlayer.play(6);delay(2000); } else { myDFPlayer.play(2);delay(4000); myDFPlayer.play(6);delay(2000); } } void sevor(){ if (temp_obj