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

Thiet ke va thi cong hop thuoc thong minh cho nguoi benh

149 86 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

Định dạng
Số trang 149
Dung lượng 10,03 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ận dụng các kiến thức đã học trong suốt quá trình học tập ở trường, nhóm em tiếp tục nâng cấp, phát triển đề tài này trở nên thông minh hơn, nhiều tính năng hơn: có thể chứa được nhiều

Trang 1

KHOA ĐIỆN – ĐIỆN TỬ

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH -

Tp Hồ Chí Minh - 01/2018

Trang 2

KHOA ĐIỆN – ĐIỆN TỬ

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH

Trang 3

KHOA ĐIỆN-ĐIỆN TỬ

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP

– Y SINH Tp HCM, ngày 15 tháng 1 năm 2018

NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP

Họ tên sinh viên: Lê Hồ Quang MSSV: 12141119

Nguyễn Quốc Khương MSSV: 12141117 Chuyên ngành: Kỹ thuật Điện - Điện tử Mã ngành: 510302

I TÊN ĐỀ TÀI: THIẾT KẾ VÀ THI CÔNG HỘP THUỐC THÔNG MINH CHO

NGƯỜI BỆNH

II NHIỆM VỤ

1 Các số liệu ban đầu:

- Kit Arduino Mega, NodeMCU và ngôn ngữ lập trình

- Tài liệu về Arduino Mega, NodeMCU, Firebase

- Thư viện về LCD, step motor

2 Nội dung thực hiện:

- Thiết kế mô hình của hộp thuốc: vỏ hộp, ống chứa thuốc, nắp đậy hộp, chân đế hộp

- Lập trình cho mạch Arduino

- Kết nối mạch điều khiển động cơ, mạch sim800a, màn hình LCD, nút nhấn, loa vào mạch Arduino

- Đặt khối mạch điều khiển vào mô hình hộp thuốc

- Thiết kế giao diện và lập trình trang web theo dõi, điều khiển hộp thuốc từ xa

- Chạy thử nghiệm hộp thuốc tự động

- Cân chỉnh hệ thống

III NGÀY GIAO NHIỆM VỤ: 11/10/2017

IV NGÀY HOÀN THÀNH NHIỆM VỤ: 15/01/2018

V HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN: TS Nguyễn Thanh Hải

Trang 4

KHOA ĐIỆN-ĐIỆN TỬ

BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH

Tp HCM, ngày 15 tháng 1 năm 2018

LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP

Họ tên sinh viên 1: Lê Hồ Quang

Lớp: 12141DT2B MSSV: 12141179

Họ tên sinh viên 2: Nguyễn Quốc Khương

Lớp: 12141DT1A MSSV: 12141117

Tên đề tài: Thiết kế và thi công hộp thuốc thông minh cho người bệnh

Tuần/ngày Nội dung Xác nhận

GVHD

Tuần 1

(25/9-1/10)

_Báo cáo GVHD

_Tìm đề tài

Tuần 2

(2/10-8/10)

_Báo cáo GVHD

_Tìm hiểu hoạt động Arduino Mega, NodeMCU

Tuần 3

(9/10-15/10)

_Báo cáo GVHD

_Tổng hợp các linh kiện cần dùng cho đề tài

Tuần 4

(16/10-22/10)

_Báo cáo GVHD

_Tìm hiểu và thiết kế cơ cấu xoay, mô hình của đề tài

Tuần 5

(23/10-29/10)

_Báo cáo GVHD

_Lập trình, tìm hiểu cách hoạt động của từng

linh kiện

Tuần 6

(30/10-5/11)

_Báo cáo GVHD

_Lập trình code hoạt động cho tất cả linh kiện

Tuần 7

(6/11-12/11)

_Báo cáo GVHD

_Tìm hiểu FireBase, lập trình web

Tuần 8

(13/11-19/11)

_Báo cáo GVHD

_Thi công mô hình bằng bìa cứng và nhựa

Tuần 9

(20/11-26/11)

_Báo cáo GVHD

_Thi công mô hình bằng nhựa

Tuần 10

(27/11-3/12)

_Báo cáo GVHD

_Thi công mô hình bằng nhựa

Tuần 11

(4/12-10/12)

_Báo cáo GVHD

_Thi công mô hình bằng nhựa

Tuần 12 _Báo cáo GVHD

Trang 6

Đề tài này là do tôi tự thực hiện dựa vào một số tài liệu trước đó và không sao chép từ tài liệu hay công trình đã có trước đó Nếu có bất kỳ sự gian lận nào chúng tôi xin chịu trách nhiệm về nội dung đồ án của mình

Người thực hiện đề tài

Lê Hồ Quang – 12141179 Nguyễn Quốc Khương - 12141117

Trang 8

Chúng em xin gửi lời cảm ơn chân thành đến quý thầy, cô Trường Đại Học Sư Phạm Kỹ Thuật TP.HCM đã tận tình dạy bảo cũng như giúp đỡ chúng em trong suốt quá trình học tập ở trường nói chung và thầy, cô khoa Điện-Điện Tử nói riêng Các thầy cô khoa Điện-Điện Tử đã truyền đạt những kiến thức, cũng như kinh nghiệm của mình khơi dậy niềm đam mê tìm tòi sang tạo trong trong mỗi chúng em và từ những nền tảng căn bản, đam mê nhỏ nhoi ấy giúp chúng em nổ lực hoàn thành đồ án cuối cùng, đồ án tốt nghiệp do chính mình tạo ra, nó cũng như bước đệm cho sự phát triển sau này của chúng

em

Đặc biệt, chúng em chân thành cảm ơn Thầy Nguyễn Thanh Hải đã tận tình giúp đỡ trong quá trình chọn đề tài và hỗ trợ trong suốt quá trình thực hiện đề tài Trong quá trình thực hiện cũng xảy ra nhiều khúc mắc, thiếu sót nhưng được sự đôn đốc và góp ý của thầy chúng em đã gặt hái được nhiều kiến thức và kinh nghiệm Một lần nữa chân thành cảm ơn thầy

Nhóm chân thành cảm ơn sâu sắc đến các bạn lớp 12141DT đã chia sẻ nhiều kinh nghiệm quý báu cho nhóm thực hiện tốt đề tài

Cuối cùng, chúng con xin chân thành cảm ơn sự động viên và hỗ trợ của gia đình và cha mẹ trong suốt quá trình học tập Chúng con xin gửi cảm ơn trân trọng đến các bậc sinh thành đã nuôi dưỡng, hỗ trợ chúng con từ kinh phí cũng như tinh thần giúp chúng con hoàn thành tốt đề tài

Nhóm em xin chân thành cảm ơn!

Người thực hiện đề tài

Lê Hồ Quang – 12141179 Nguyễn Quốc Khương - 12141117

Trang 9

ii

Trang 10

MỤC LỤC

Trang bìa i

Nhiệm vụ đồ án ii

Lịch trình iii

Phiếu đánh giá iv

Cam đoan v

Lời cảm ơn vi

Mục lục vii

Liệt kê hình vẽ ix

Liệt kê bảng vẽ xi

Tóm tắt xii

CHƯƠNG 1 TỔNG QUAN 1

1.1 Đặt vấn đề 1

1.2 Mục tiêu 2

1.3 Nội dung nghiên cứu 2

1.4 Giới hạn 2

1.5 Bố cục 3

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

2.1 Giới thiệu phần cứng 4

2.1.1 Thiết bị đầu vào 4

2.1.2 Thiết bị đầu ra 6

2.1.3 Arduino Mega 2560 15

2.1.4 NodeMCU 1.0 (ESP-12E Module) 17

2.1.5 Mạch SIM800A 18

2.2 Các chuẩn truyền dữ liệu 21

2.2.1 Giao tiếp I2C 21

2.1.2 Giao tiếp UART 24

2.1.3 Chuẩn giao tiếp Wifi 25

2.3 Firebase Hosting 30

Trang 11

CHƯƠNG 3 TÍNH TOÁN VÀ THIẾT KẾ 33

3.1 Giới thiệu 33

3.2 Tính toán và thiết kế hệ thống 33

3.2.1 Thiết kế sơ đồ khối hệ thống 33

3.2.2 Tính toán và thiết kế mạch 35

3.2.3 Sơ đồ nguyên lý của toàn mạch 37

3.2.4 Tính toán và thiết kế mô hình 38

CHƯƠNG 4 THI CÔNG HỆ THỐNG 41

4.1 Giới thiệu 41

4.2 Đóng gói và thi công mô hình 41

4.2.1 Đóng gói bộ điều khiển 41

4.2.2 Thi công mô hình 43

4.3 Lập trình hệ thống 60

4.3.1 Lưu đồ giải thuật 60

4.3.2 Phần mềm lập trình cho vi điều khiển 74

4.3.3 Phần mềm lập trình web 97

4.4 Viết tài liệu hướng dẫn sử dụng 107

4.4.1 Viết tài liệu hướng dẫn sử dụng 107

4.4.2 Quy trình thao tác 109

CHƯƠNG 5 KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ 110

5.1 Kết quả đạt được 110

5.1.1 Kết quả lý thuyết đạt được 110

5.1.2 Kết quả chạy hệ thống 111

5.2 Đánh giá, nhận xét 117

CHƯƠNG 6 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 118

6.1 Kết luận 118

6.2 Hướng phát triển 118

TÀI LIỆU THAM KHẢO

PHỤ LỤC

Trang 12

Hình Trang

Hình 2.1: Hai gói cấu tạo chip DS1307 4

Hình 2.2: Mạch ứng dụng đơn giản của DS1307 5

Hình 2.3: Tổ chức các thanh ghi của DS1307 5

Hình 2.4: Mạch điều khiển động cơ bước ULN2003 và động cơ bước 28BYJ-4 6

Hình 2.5: Động cơ bước 28BYJ-4 7

Hình 2.6: Mạch điều khiển động cơ bước ULN2003 8

Hình 2.7 Nối dây động cơ vào mạch điều khiển 9

Hình 2.8: Sơ đồ chân của LCD 10

Hình 2.9: Module giao tiếp I2C 14

Hình 2.10: LCD và module giao tiếp I2C 14

Hình 2.11: Thành phần Arduino Mega 2560 16

Hình 2.12: Module ESP8266 ESP-12 17

Hình 2.13: NodeMCU 1.0 (ESP-12E Module) 18

Hình 2.14: Module SIM800A 18

Hình 2.15: Bus I2C và các thiết bị ngoại vi 21

Hình 2.16: Kết nối thiết bị vào bus I2C ở chế độ chuẩn (Standard mode) và chế độ nhanh (Fast mode) 21

Hình 2.17: Sơ đồ truyền dữ liệu 22

Hình 2.18: Giản đồ thời gian có các điều kiện START và STOP 23

Hình 2.19: Truyền dữ liệu bằng UART 24

Hình 2.20: Chuẩn giao tiếp Wifi 25

Hình 2.21: Nguyên tắc hoạt động của mạng Wifi 26

Hình 2.22: Lộ trình phát triển của các chuẩn Wifi 27

Hình 2.23: Wifi chuẩn 802.11g 28

Hình 2.24: Wifi chuẩn 802.11n 28

Hình 2.25: Wifi chuẩn 802.11ac 29

Hình 2.26: Firebase Database 31

Hình 3.1: Sơ đồ khối hệ thống hộp thuốc thông minh 33

Hình 3.2: Sơ đồ nguyên lý của toàn mạch 37

Hình 3.3: Hộp nhựa chứa thuốc sau khi hoàn thiện 38

Hình 4.1: Vị trí đặt bộ điều khiển 41

Trang 13

ii

Hình 4.2: Cửa có khóa để kết nối dây nạp code phía sau hộp thuốc, bên phải là lỗ cho

dây nguồn 42

Hình 4.3: Cửa khi mở ra, bên trong là 2 đầu nạp code của bộ điều khiển 42

Hình 4.4: Thiết kế tầng đáy hộp thuốc 43

Hình 4.5: Thiết kế phần giao tiếp 44

Hình 4.6: Hộp nhôm nhìn ngang 44

Hình 4.7: Module Sim800a được gắn vào thành bên trái của hộp nhôm 45

Hình 4.8: Module điều khiển động cơ bước được gắn lên mặt tròn để tối ưu không gian45 Hình 4.9: Thiết kế tầng giữa 47

Hình 4.10: Tấm tĩnh thứ 1 được bắt dính vào thành hộp thuốc 47

Hình 4.11: Trục kéo dài từ cốt của động cơ tầng giữa để bắt vào tấm xoay 1 48

Hình 4.12: Mặt cắt ngang trục kéo dài khi đã bắt vào tấm xoay thứ 1 48

Hình 4.13: Tấm xoay thứ 1 49

Hình 4.14: Ba vị trí tán rive ở mặt trên đã được mài nhẵn 50

Hình 4.15: Các lỗ tán rive mặt dưới và miếng sắt đối trọng 51

Hình 4.16: Cơ cấu xoay thứ nhất, bên cạnh ống là dây nối động cơ tầng thượng được gắn jack cái 51

Hình 4.17: Giá đỡ rớt thuốc được bắt vào thành ống, bên trên là ống lấy thuốc uống 52

Hình 4.18: Cửa hộc thuốc không uống khi mở ra 52

Hình 4.19: Ống lấy thuốc uống và động cơ tầng giữa 53

Hình 4.20: Thiết kế tầng thượng 54

Hình 4.21: Các lỗ bắt ốc giữa tầng thượng với đai và dây động cơ 55

Hình 4.22: Các ống chứa thuốc và nắp đậy bên trong 56

Hình 4.23: Bên trong tầng thượng khi tháo nắp đậy 57

Hình 4.24: Phần đáy của tấm tĩnh thứ 2 57

Hình 4.25: Tấm xoay thứ 2 58

Hình 4.26: Hộp thuốc sau khi gắn vào hoàn thiện 59

Hình 4.27: Cài đặt JRE 75

Hình 4.28: Giao diện tải Arduino IDE 75

Hình 4.29: Ủng hộ nhà phát triển Arduino IDE 76

Hình 4.30: Giao diện chính của Arduino IDE 77

Hình 4.31: Cài đặt Driver cho Arduino 1 78

Hình 4.32: Cài đặt Driver cho Arduino 2 79

Hình 4.33: Cài đặt Driver cho Arduino 3 79

Hình 4.34: Cài đặt Driver cho Arduino 4 80

Trang 14

Hình 4.35: Cài đặt Driver cho NodeMCU 1 80

Hình 4.36: Cài đặt Driver cho NodeMCU 2 81

Hình 4.37: Cài đặt Driver cho NodeMCU 3 82

Hình 4.38: Cài đặt Driver cho NodeMCU 4 83

Hình 4.39: Cài đặt Driver cho NodeMCU 5 84

Hình 4.40: Chọn phần cứng để lập trình 85

Hình 4.41: Chọn Port kết nối 86

Hình 4.42: Cài đặt thư viện cho Arduino IDE 87

Hình 4.43: Viết chương trình trong Arduino IDE 87

Hình 4.44: Các lệnh cơ bản trong Aruino IDE 89

Hình 4.45:Vùng debug 89

Hình 4.46: Giao diện Sublime Text 97

Hình 4.47: Quy trình thao tác 109

Hình 5.1: Giao diện chào mừng 111

Hình 5.2: Giao diện đồng hồ thời gian thực 111

Hình 5.3: Giao diện cài đặt báo thức 112

Hình 5.4: Giao diện căn chỉnh thiết bị 112

Hình 5.5: Hộp thuốc sau khi gắn vào hoàn thiện 113

Hình 5.6: Giao diện quản lý của Firebase Database 114

Hình 5.7: Giao diện quản lý của Firebase Hosting 114

Hình 5.8: Giao diện trang web bìa 115

Hình 5.9: Trang web yêu cầu nhập mật khẩu để truy cập 115

Hình 5.10: Giao diện quản lý hộp thuốc 116

Hình 5.11: Giao diện hiển thị nếu nhập sai mật khẩu 116

Trang 15

Bảng Trang

Bảng 2.1: Nối dây Aruino vào mạch điều khiển 9

Bảng 2.2 Nguyên lý hoạt động của động cơ 10

Bảng 2.3 Chức năng các chân LCD 16x2 11

Bảng 2.4 Kết nối LCD với NodeMCU 15

Bảng 2.5 Thành phần Arduino Mega 2560 15

Bảng 2.6 Thành phần NodeMCU 18

Trang 16

Với sự phát triển vượt bậc về mọi mặt khoa học, đời sống Kéo theo đó lĩnh vực Điện Tử đóng góp một phần không nhỏ Điện Tử được áp dụng vào cuộc sống giúp cho công việc của con người nhẹ nhàng hơn như smart phone, máy tính bảng, laptop Ngoài việc hỗ trợ cho công việc thì các thiết bị cũng góp một phần nâng cao mức sống của con người Ngày nay, đa số mọi người vẫn còn ra nhà thuốc để mua thuốc uống Nhận thấy điều này, đã có nhiều nhà sản xuất bắt tay vào làm ra những thiết bị giúp mọi người có thể quản lý lịch uống thuốc của bản thân Nhưng hầu hết đều vẫn còn khá đơn giản như nhắc uống thuốc, hẹn giờ uống thuốc Với sự phát triển của khoa học kỹ thuật, ta đã có thể nâng cấp các hộp thuốc này lên mức độ cao hơn như

là gởi tin nhắn thông báo, gởi email thông báo, theo dõi việc uống thuốc từ xa

Vận dụng các kiến thức đã học trong suốt quá trình học tập ở trường, nhóm em tiếp tục nâng cấp, phát triển đề tài này trở nên thông minh hơn, nhiều tính năng hơn:

có thể chứa được nhiều thuốc hơn, gởi tin nhắn và email đến người chăm sóc về tình hình uống thuốc của bệnh nhân, cập nhật lên trên trang web lưu trữ để quản lý từ xa Với đề tài này, nhóm hy vọng sẽ làm cơ sở nghiên cứu cho các nhóm sau có thể

mở rộng, phát triển hơn nữa

Trang 17

Chương 1 TỔNG QUAN

1.1 ĐẶT VẤN ĐỀ

Trong cuộc đời của mỗi chúng ta đều phải trải qua nhiều lần mắc bệnh, từ những bệnh thông thường đến các bệnh hiểm nghèo và việc uống thuốc là không thể tránh khỏi Cuộc sống hiện đại bận rộn khiến ta thường xuyên uống thuốc không đúng giờ hay quên uống thuốc Vì thế, bệnh tình sẽ lâu khỏi hoặc có khi còn gây ra hậu quả khôn lường

Hiện nay, các thiết bị thông minh đã khá phổ biến với chúng ta, đặc biệt là trong lĩnh vực chăm sóc sức khỏe Trên thị trường đã có khá nhiều hộp thuốc thông minh cho người bệnh tuy chức năng của chúng vẫn còn khá cơ bản Ví dụ như hộp thuốc của hãng LASPERAL chỉ có chức năng báo giờ uống thuốc và 2 khay chứa thuốc Thực tế, chúng ta cần một thiết bị có nhiều khay chứa thuốc hơn và nhiều chức năng hơn để thuận tiện cho người bệnh và người chăm sóc Nhận thấy rõ điều này, các bạn sinh viên nước ta cũng đã có những đề tài, sản phẩm sáng tạo, tiêu biểu là hộp thuốc thông minh của các bạn sinh viên trường Đại học Duy Tân, tp.Đà Nẵng Tuy nhiên, sản phẩm của các bạn vẫn còn khá sơ sài về tiện ích đó là chỉ có chức năng chọn thuốc và hẹn giờ báo uống thuốc Ngoài ra, hộp thuốc của các bạn được thiết kế theo nguyên lý lựa chọn loại thuốc theo toa chỉ phù hợp với từng khoa điều trị ở trong bệnh viện [7] Nhóm chúng em muốn tạo ra một hộp thuốc thông minh có nhiều chức năng hơn, có thể kể đến như là:

 Chứa được đa dạng các loại thuốc hơn nhờ sử dụng cơ cấu lấy thuốc mới

 Khi hết thuốc dự trữ tự động gởi tin nhắn sms đến người chăm sóc

 Cập nhật tình trạng uống thuốc và dự trữ thuốc lên trang quản lý trực tuyến

Trang 18

 Hộp thuốc dùng cơ cấu lấy thuốc mới do đó dễ dàng sử dụng hơn, có thể đặt ngay tại nhà

Đó là lý do nhóm em quyết định lựa chọn và thực hiện đề tài "Thiết kế và thi công hộp thuốc thông minh cho người bệnh"

1.2 MỤC TIÊU

Thiết kế và thi công hộp thuốc tự động cho người bệnh, trong đó có một số chức năng như nhắc người bệnh uống thuốc đúng giờ, đúng toa, thông báo cho người chăm sóc trong những trường hợp cần thiết như thuốc trong hộp

đã hết hay người bệnh quên uống thuốc, điều chỉnh thời gian nhắc nhở cho phù hợp với từng bệnh nhân bằng nút nhấn và màn hình LCD tích hợp sẵn hoặc thông qua trang web được nhà sản xuất cung cấp

1.3 NỘI DUNG NGHIÊN CỨU

 NỘI DUNG 1: Thu thập các tài liệu về hộp thuốc thông minh, bộ vi xử lý của đề tài Lựa chọn kích cỡ, hình dáng của hộp đựng thuốc

 NỘI DUNG 2: Tìm hiểu và lựa chọn các giải pháp thiết kế, lập trình hộp thuốc

 NỘI DUNG 3: Thiết kế hệ thống điều khiển, thử nghiệm

 NỘI DUNG 4: Thiết kế mô hình, chỉnh sửa và cải tiến từ những phương án

Trang 19

 Sử dụng nguồn điện lấy trực tiếp từ ổ cắm điện nhà

1.5 BỐ CỤC

 Chương 1: Tổng Quan

Chương này trình bày đặt vấn đề dẫn nhập lý do chọn đề tài, mục tiêu, nội dung nghiên cứu, các thông số giới hạn và bố cục đồ án

 Chương 2: Cơ Sở Lý Thuyết

Chương này giới thiệu phần cứng: các thiết bị đầu vào, thiết bị đầu ra, cách

sử dụng thiết bị Các chuẩn truyền dữ liệu: I2C, UART, Wifi Dịch vụ lưu trữ nội dung trang web FireBase hosting

 Chương 3: Tính toán và thiết kế

Tính toán và thiết kế hệ thống, sơ đồ nguyên lý toàn mạch, lựa chọn các thông số ban đầu cho phần thi công Thiết kế mô hình

 Chương 4: Thi công hệ thống

Chương này sẽ giới thiệu phần thi công mạch, đóng gói bộ điều khiển, các bước thi công mô hình hoàn chỉnh Tài liệu hướng dẫn sử dụng

 Chương 5: Kết Quả, Nhận Xét và Đánh Giá

Chương sẽ nêu lên được kết quả hoàn thành, hình ảnh mạch hoạt động, các phần nhận xét và đánh giá

 Chương 6: Kết Luận và Hướng Phát Triển

Trình bày những gì làm được trong đề tài và nêu hướng phát triển cho đồ án

Trang 20

Chương 2 CƠ SỞ LÝ THUYẾT

và ghi thông qua giao diện nối tiếp I2C nên cấu tạo bên ngoài rất đơn giản Trên thị trường, DS1307 xuất hiện ở 2 gói SOIC và DIP có 8 chân như trong hình 2.1

Hình 2.1 Hai gói cấu tạo chip DS1307

Các chân của DS1307 được mô tả như sau:

 X1 và X2: là 2 ngõ kết nối với 1 thạch anh 32.768KHz làm nguồn tạo dao động

cho chip

 V BAT: cực dương của một nguồn pin 3V nuôi chip

 GND: chân mass chung cho cả pin 3V và Vcc

 Vcc: nguồn cho giao diện I2C, thường là 5V và dùng chung với vi điều khiển

Chú ý là nếu Vcc không được cấp nguồn nhưng VBAT được cấp thì DS1307 vẫn đang hoạt động (nhưng không ghi và đọc được)

 SQW/OUT: một ngõ phụ tạo xung vuông (Square Wave / Output Driver), tần

Trang 21

quan đến chức năng của DS1307 là đồng hồ thời gian thực, chúng ta sẽ bỏ trống chân này khi nối mạch

 SCL và SDA là 2 đường giao xung nhịp và dữ liệu của giao diện I2C

Có thể kết nối DS1307 bằng một mạch điện đơn giản như trong hình 2.2

Hình 2.2 Mạch ứng dụng đơn giản của DS1307

Hình 2.3 Tổ chức các thanh ghi của DS1307

7 thanh ghi đầu tiên là các thanh ghi quan trọng nhất trong hoạt động của DS1307 nên ta chủ yếu khảo soát các thanh ghi này

 Thanh ghi lưu giây (Seconds): có địa chỉ là 0x00 có lưu hàng chục và hàng đơn

vị của giây Bit thứ 7 có tên CH, nếu bit này là 1 thì bộ dao động ngừng làm đồng

hồ ngừng hoạt động, nếu bit này là 0 đồng hồ hoạt động

 Thanh ghi lưu phút (minutes): có địa chỉ là 0x02, có thể lưu hàng chục giờ và hàng đơn vị giờ, hai chế độ là 12 giờ và 24 giờ được lựa bởi bit thứ 6 Nếu lựa chọn chế độ 24 giờ thì hàng chục giờ sử dụng 2 bit thứ 4 và thứ 5 Nếu lựa chọn

Trang 22

chế độ 12 giờ thì hàng chục giờ sử dụng bit thứ 4, còn bit thứ 5 có ký hiệu là A/P tương ứng với 2 chế độ giờ là AM và PM

 Thanh ghi lưu thứ (DAY): có địa chỉ 0x03, có chức năng lưu thứ trong tuần, có giá trị từ 1 đến 7, tương ứng từ chủ nhật đến thứ 7

 Thanh ghi ngày (DATE) : có địa chỉ là 0x04, có chức năng lưu các ngày trong tháng, có giá trị từ 1 đến 31, 4 bit đầu dùng để lưu hàng đơn vị của ngày, bit thứ

4, 5 dùng để lưu hàng chục của ngày, các bit 6,7 thì bỏ trống

 Thanh ghi tháng (MONTH) : có địa chỉ là 0x05, có chức năng lưu các tháng trong năm, có giá trị từ 1 đến 12, 4 bit đầu dùng để lưu hàng đơn vị của tháng, bit thứ 4 dùng để lưu hàng chục của tháng, các bít 5,6,7 thì bỏ trống

 Thanh ghi năm (YEAR): có địa chỉ 0x06, dùng để lưu năm, DS1307 chỉ lưu đước 100 năm tức là 00 đến 99, 4 bit thấp dùng để lưu hàng đơn vị của năm, 4 bit cao dùng để lưu hàng chục của năm

 Thanh ghi điều khiển: có địa chỉ là 0x07, đây là thanh ghi điều khiển quá trình ghi của DS1307 và quá trình ghi kết thúc ở địa chỉ X93

2.1.2 Thiết bị đầu ra

a Mạch điều khiển động cơ bước ULN2003 và động cơ bước 28BYJ-48:

Động cơ bước 5V 28BYJ-48 [5] có bộ giảm tốc bên trong, do đó, nó có mô men lớn trong một kích thước nhỏ bé nhưng chuyển động tương đối chậm Những động cơ và mạch điều khiển này được sản xuất với số lượng rất lớn nên giá thành

rẻ

Hình 2.4 Mạch điều khiển động cơ bước ULN2003 và động cơ bước 28BYJ-4

Trang 23

Hình 2.5 Động cơ bước 28BYJ-4

Thông số động cơ bước 28BYJ-48:

 Số bước trên mỗi vòng quay tại trục đầu ra: 64 x 64 = 4096 bước trong trình tự

8 bước và 32 x 64 = 2048 bước trong trình tự 4 bước (Thư viện Stepper của Arduino IDE dùng chế độ 4 bước)

 Mômen kéo: ≥ 78,4mN.m

 Hướng Dây: A (Màu Xanh), B (Màu hồng), C (Màu Vàng), D (Cam), Màu E (Đỏ, Điểm giữa)

Trang 24

 Trọng lượng: 30g

Lưu ý:

 Nếu động cơ rung động nhưng không quay hoặc chỉ chạy theo một hướng thì

có thể nó đã được kết nối sai trình tự

 Arduino cần có 4 chân trống để kết nối với các chân In1, In2, In3, In4 trên bộ điều khiển động cơ và sau đó các chân được nhập vào phần mềm theo trình tự 1-3-2-4 để có trình tự thích hợp Ngoài ra, cần phải kết nối các chân + và - : - tới chân GND của Arduino, + tới chân 5V của Arduino (chỉ cho một động cơ) hoặc (tốt nhất) cấp nguồn điện riêng biệt + 5V 1A

Hình 2.6 Mạch điều khiển động cơ bước ULN2003

Thông số mạch đệm ULN2003 [5]:

 Điện áp cung cấp: 5~12 VDC

 Tín hiệu ngõ vào: 4 chân in1, in2, in3, in4

 Tín hiệu ngõ ra: Jack cắm động cơ bước 28BYJ-48

 4 led hiển thị trạng thái hoạt động của động cơ

Trang 25

Hình 2.7 Nối dây động cơ vào mạch điều khiển

Cách nối dây (tham khảo):

Bảng 2.1 Nối dây Aruino vào mạch điều khiển

Chân Arduino Chân mạch điều khiển Màu dây

Nguyên lý hoạt động của động cơ bước 28BYJ-4:

Động cơ di chuyển theo trình tự mà các nam châm bên trong được bật lên

Có 2 trình tự có thể xảy ra

Trong trình tự 4 bước (được sử dụng trong thư viện Stepper của Arduino IDE) luôn có 2 trong 4 cuộn dây nam châm được bật lên và chỉ một cuộn dây thay

Trang 26

đổi trong mỗi bước Các chữ cái A-B-C-D in trên mạch điều khiển động cơ được điều khiển bởi chân đầu vào 1-2-3-4 Trình tự 4 bước: AB-BC-CD-DA Trình tự

8 bước chỉ sử dụng 1 cuộn dây, sau đó là 2, sau đó là 1… Trình tự 8 bước: B-BC-C-CD-D-DA-A

A-AB-Bảng 2.2 Nguyên lý hoạt động của động cơ

Bước Bước Bước Bước Bước Bước Bước Bước

Trình tự 4 bước 1 2 3 4 Trình tự 8 bước 1 2 3 4 5 6 8 8

Trang 27

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 mạch điều khiển

2 VDD Chân cấp nguồn cho LCD, khi thiết kế mạch ta nối chân này với

VCC=5V của mạch điều khiển

3 VEE Điều chỉnh độ tương phản của LCD

4 RS 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 LCD

5 R/W 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ế

độ đọc

Trang 28

6 E Chân cho phép (Enable) Sau khi các tín hiệu được đặt lên bus

DB0-DB7, 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) 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 khi nào chân E xuống mức thấp

7-14 DB0

- DB7

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 MSB là DB7

15 - Nguồn dương cho đèn nền

16 - 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

Các chân điều khiển việc đọc ghi vào LCD 16x2:

RS (chân số 3): Chân lựa chọn thanh ghi (Select Register), chân này cho phép lựa

chọn 1 trong 2 thanh ghi IR hoặc DR để làm việc Vì cả 2 thanh ghi này đều được kết nối với các chân Data của LCD nên cần 1 bit để lựa chọn giữa chúng Nếu RS=0, thanh ghi IR được chọn và nếu RS=1 thanh ghi DR được chọn Chúng ta đều biết thanh ghi

IR là thanh ghi chứa mã lệnh cho LCD, vì thế nếu muốn gởi 1 mã lệnh đến LCD thì chân RS phải được reset về 0 Ngược lại, khi muốn ghi mã ASCII của ký tự cần hiển thị lên LCD thì chúng ta sẽ set RS=1 để chọn thanh ghi DR.

Trang 29

R/W (chân số 4): Chân lựa chọn giữa việc đọc và ghi Nếu R/W=0 thì dữ liệu sẽ

được ghi từ MCU vào LCD Nếu R/W=1 thì dữ liệu sẽ được đọc từ LCD ra ngoài Tuy nhiên, chỉ có duy nhất 1 trường hợp mà dữ liệu có thể đọc từ LCD ra, đó là đọc trạng thái LCD để biết LCD có đang bận hay không (cờ Busy Flag - BF) Do LCD là một thiết

bị hoạt động tương đối chậm (so với vi điều khiển), vì thế một cờ BF được dùng để báo LCD đang bận, nếu BF=1 thì chúng ta phải chờ cho LCD xử lí xong nhiệm vụ hiện tại, đến khi nào BF=0 một thao tác mới sẽ được gán cho LCD Vì thế, khi làm việc với Text LCD chúng ta nhất thiết phải có một chương trình con nào đó để chờ cho đến khi LCD rảnh Có 2 cách để viết chương trình wait_LCD Cách 1 là đọc bit BF về kiểm tra và chờ BF=0, cách này đòi hỏi lệnh đọc từ LCD về bộ điều khiển ngoài, do đó chân R/W cần được nối với bộ điều khiển ngoài Cách 2 là viết một hàm delay một khoảng thời gian cố định nào đó (tốt nhất là trên 1ms) Ưu điểm của cách 2 là sự đơn giản vì không cần đọc LCD, do đó chân R/W không cần sử dụng và luôn được nối với GND Tuy nhiên, nhược điểm của cách 2 là khoảng thời gian delay cố định nếu quá lớn sẽ làm chậm quá trình thao tác LCD, nếu quá nhỏ sẽ gây ra lỗi hiển thị

EN (chân số 5): Chân cho phép LCD hoạt động (Enable), chân này cần được kết

nối với bộ điều khiển để cho phép thao tác LCD Để đọc và ghi data từ LCD chúng ta cần tạo một “xung cạnh xuống” trên chân EN, nói theo cách khác, muốn ghi dữ liệu vào LCD trước hết cần đảm bảo rằng chân EN=0, tiếp đến xuất dữ liệu đến các chân D0 đến D7, sau đó set chân EN lên 1 và cuối cùng là xóa EN về 0 để tạo 1 xung cạnh xuống

Module giao tiếp I2C cho LCD:

Thông thường, để sử dụng màn hình LCD, bạn sẽ phải mất rất nhiều chân trên Arduino để điều khiển Do vậy, để đơn giản hóa công việc, người ta đã tạo ra một loại mạch điều khiển màn hình LCD sử dụng giao tiếp I2C Nói một cách đơn giản, ta chỉ tốn 2 dây để điều khiển màn hình, thay vì 8 dây như cách thông thường

Trang 30

Hình 2.9 Module giao tiếp I2C

Hàn Module giao tiếp I2C vào LCD như hình 2.11 và tải thư viện LCD I2C về rồi thêm vào Arduino IDE để sử dụng

Hình 2.10 LCD và module giao tiếp I2C

Trang 31

Kết nối LCD với NodeMCU

Bảng 2.4 Kết nối LCD với NodeMCU

Arduino Mega 2560 là bo mạch sử dụng vi điều khiển ATmega2560 Nó có

54 chân vào/ra kĩ thuật số (trong đó có 15 chân có thể sử dụng để xuất xung PWM), 16 chân tương tự, 4 cặp chân UART, bộ dao động thạch anh 16MHz, 1 kết nối USB, 1 chân nguồn, 6 chân ICSP cho kết nối USB 16U2 và 1 nút khởi động lại Nó cung cấp mọi thứ cần thiết để hỗ trợ vi điều khiển; chỉ cần kết nối nó với 1 máy vi tính bằng cáp USB hoặc cấp điện cho nó bằng bộ điều hợp AC-DC hoặc pin để bắt đầu Bo mạch Mega 2560 tương thích với hầu hết các “shield” – các bo mạch in mở rộng được thiết kế cho Uno và các bo mạch trước đây như Duemilanove hoặc Diecimila Mega 2560 là bản nâng cấp thay thế cho Arduino Mega

b Thành phần Arduino Mega 2560

Bảng 2.5 Thành phần Arduino Mega 2560

Điện áp hoạt động (khuyên dùng) 7-12V

Điện áp đầu vào (giới hạn) 6-20V

Trang 32

Chân vào/ra kĩ thuật số 54 (15 chân hỗ trợ xuất xung PWM) Chân vào tương tự 16

Dòng DC trên 1 chân I/O 20mA

Dòng DC trên chân 3.3V 50mA

Bộ nhớ Flash 256 KB (8 KB được sử dụng cho

Trang 33

2.1.4 NodeMCU 1.0 (ESP-12E Module)

a Giới thiệu:

ESP8266 NodeMCU [3] là dạng vi điều khiển tích hợp Wifi (Wifi SoC) được phát triển bởi Espressif Systems, một nhà sản xuất Trung Quốc có trụ sở tại Thượng Hải Với vi điều khiển và Wifi tích hợp, ESP8266 cho phép lập trình viên

có thể thực hiện vô số các tác vụ TCP/IP đơn giản để thực hiện vô số các ứng dụng khác nhau, đặc biệt là các ứng dụng IoT Tuy nhiên, vào thời điểm ra mắt năm 2014, hầu như chỉ có tài liệu bằng tiếng Trung Quốc nên ESP8266 chưa được phổ biến như hiện nay

Module ESP8266 có giá thành rẻ nhất trong tất cả các loại Wifi SoC từ trước tới nay (trước ESP8266 có series CC3xxx từ Ti rất mắc nên không phổ biến), chỉ khoảng 2USD cho phiên bản đầu tiên, điều này đã thu hút các IoT-er khám phá cũng như dịch các tài liệu của ESP8266 sang tiếng Anh và phát triển vô số các ứng dụng kèm theo Sau nhiều năm phát triển, hiện nay đã có hơn 14 phiên bản ESP ra đời, trong đó phổ biến nhất là ESP-12

Hình 2.12 Module ESP8266 ESP-12

Module ESP-12 kết hợp với firmware ESP8266 trên Arduino và thiết kế phần cứng giao tiếp tiêu chuẩn đã tạo nên NodeMCU, loại Kit phát triển ESP8266 phổ biến nhất trong thời điểm hiện tại Với cách sử dụng, kết nối dễ dàng, có thể lập trình, nạp chương trình trực tiếp trên phần mềm Arduino, đồng thời tương thích với các bộ thư viện Arduino sẵn có, NodeMCU là sự lựa chọn hàng đầu cho các bạn muốn tìm hiểu về ESP8266 hiện nay

Trang 34

Hình 2.13 NodeMCU 1.0 (ESP-12E Module)

b Thành phần NodeMCU 1.0 (ESP-12E Module)

Trang 35

Thông số kỹ thuật:

 Sử dụng module GSM GPRS Sim800A

 Nguồn cấp đầu vào: 5~18VDC, dòng cấp lớn hơn 1A

 Mức tín hiệu giao tiếp: TTL (3,3~5VDC) hoặc RS232

 Tích hợp chuyển mức tín hiệu TTL Mosfet tốc độ cao

 Tích hợp IC chuyển mức tín hiệu RS232 MAX232

 Tích hợp nguồn xung với dòng cao cung cấp cho Sim800A

 Sử dụng khe Micro Sim

 BRXD: Thường không sử dụng, chân nhận tín hiệu, dùng để giao tiếp nạp

Firmware cho Sim800, mức tín hiệu 3.3VDC

 BTXD: Thường không sử dụng, chân nhận tín hiệu, dùng để giao tiếp nạp

Firmware cho Sim800, mức tín hiệu 3.3VDC

 GND: Mass, 0VDC

Trang 36

 EPN: Ngõ ra loa Speaker âm

 EPP: Ngõ ra loa Speaker dương

 MICP: Ngõ vào Micro dương

 MICN: Ngõ vào Micro âm

Điều khiển Sim800A

Ta có thể điều khiển module Sim800A thông qua mạch chuyển từ USB sang UART và truyền lệnh AT trực tiếp từ máy tính hoặc thông qua các board lập trình như Arduino, NodeMCU…

Các lệnh AT cơ bản

 AT: kiểm tra kết nối đến module Sim800A

 ATD<số điện thoại>; : gọi đến số điện thoại mong muốn, lưu ý có dấu “;” ở

cuối câu lệnh

 ATH: hủy cuộc gọi

 AT+CMGF=1: cấu hình chức năng tin nhắn

 AT+CMGS=”<số điện thoại>”: gửi tin nhắn đến số điện thoại mong muốn, sau khi thấy xuất hiện “>” thì gõ tiếp nội dung tin nhắn rồi bấm tổ hợp phím Ctrl+Z

(Tài liệu này khá nặng nên sẽ mất khoảng vài phút để hiển thị tùy theo điều kiện mạng)

Trang 37

2.2 CÁC CHUẨN TRUYỀN DỮ LIỆU

2.2.1 Giao tiếp I2C

Hình 2.15 Bus I2C và các thiết bị ngoại vi

b Đặc điểm giao tiếp I2C

Một giao tiếp I2C gồm có 2 dây: Serial Data (SDA) và Serial Clock (SCL) SDA là đường truyền dữ liệu 2 hướng, còn SCL là đường truyền xung đồng hồ để đồng bộ và chỉ theo một hướng Như ta thấy trên hình vẽ trên, khi một thiết bị ngoại vi kết nối vào đường bus I2C thì chân SDA của nó sẽ nối với dây SDA của bus, chân SCL sẽ nối với dây SCL

Hình 2.16 Kết nối thiết bị vào bus I2C ở chế độ chuẩn (Standard mode) và chế độ nhanh

(Fast mode)

Trang 38

Trong hệ thống truyền dữ liệu I2C thì có thiết bị nào cung cấp xung clock thì được gọi là chủ (master), thiết bị nào nhận xung lock thì được gọi là tớ (slave) Thiết bị chủ chỉ có 1, thiết bị tớ thì nhiều nên mỗi một thiết bị tớ sẽ có 1 địa chỉ độc lập

Các chân giao tiếp I2C của các ngoại vi ở dạng cực máng để hở nên khi kết nối vi điều khiển ta dùng các điện trở có thông số phù hợp kết nối với nguồn dương Giá trị các điện trở thường dao động từ 1k đến 4.7k

Hình 2.17 Sơ đồ truyền dữ liệu

Nhìn hình trên ta thấy xung đồng hồ chỉ có một hướng từ chủ đến tớ, còn luồng dữ liệu có thể đi theo hai hướng, từ chủ đến tớ hay ngược lại tớ đến chủ

c Điều kiện START và STOP

START và STOP là những điều kiện bắt buộc phải có khi một thiết bị chủ muốn thiết lập giao tiếp với một thiết bị nào đó trên bus I2C START là điều kiện khởi đầu, báo hiệu bắt đầu của giao tiếp, còn STOP báo hiệu kết thúc một giao tiếp Hình dưới đây mô tả điều kiện START và STOP

Ban đầu khi chưa thực hiện quá trình giao tiếp, cả hai đường SDA và SCL đều ở mức cao (SDA = SCL = HIGH) Lúc này bus I2C được coi là rỗi (“bus free”), sẵn sàng cho một giao tiếp Hai điều kiện START và STOP

là không thể thiếu trong việc giao tiếp giữa các thiết bị I2C với nhau

Trang 39

Hình 2.18 Giản đồ thời gian có các điều kiện START và STOP

 Điều kiện START: một sự chuyển đồi trạng thái từ cao xuống thấp trên đường SDA trong khi đường SCL đang ở mức cao (cao = 1; thấp = 0) báo hiệu một điều kiện START

 Điều kiện STOP: Một sự chuyển đổi trạng thái từ mức thấp lên cao trên đường SDA trong khi đường SCL đang ở mức cao Cả hai điều kiện START và STOP đều được tạo ra bởi thiết bị chủ Sau tín hiệu START, bus I2C coi như đang trong trạng thái làm việc (busy) Bus I2C sẽ rỗi, sẳn sàng cho một giao tiếp mới sau tín hiệu STOP từ phía thiết bị chủ

Sau khi có một điều kiện START, trong quá trình giao tiếp, khi có một tín hiệu START được lặp lại thay vì một tín hiệu STOP thì bus I2C vẫn tiếp tục trong trạng thái bận Tín hiệu START và lặp lại START (Repeated START) đều có chức năng giống nhau là khởi tạo một giao tiếp

Trang 40

2.1.2 Giao tiếp UART

a Giới thiệu

UART là viết tắt của Universal Asynchronous Receiver – Transmitter

Thường là một mạch tích hợp được sử dụng trong việc truyền dẫn dữ liệu nối tiếp giữa máy tính và các thiết bị ngoại vi Rất nhiều vi điều khiển hiện nay đã được tích hợp UART, vì vấn đề tốc độ và độ điện dụng của UART không thể so sánh với các giao tiếp mới hiện nay nên các dòng PC & Laptop đời mới không còn tích hợp cổng UART Giao tiếp SPI và I2C có 1 dây truyền dữ liệu và 1 dây được sử dụng để truyền xung clock (SCL) để đồng bộ trong giao tiếp Với UART thì không

có dây SCL, vấn đề được giải quyết khi mà việc truyền UART được dùng giữa 2

vi xử lý với nhau, đồng nghĩa với việc mỗi vi xử lý có thể tự tạo ra xung clock cho chính nó sử dụng

Để bắt đầu cho việc truyền dữ liệu bằng UART, một START bit được gửi

đi, sau đó là các bit dữ liệu và kết thúc quá trình truyền là STOP bit

Hình 2.19 Truyền dữ liệu bằng UART

Khi ở trạng thái chờ mức điện thế ở mức 1 (high) Khi bắt đầu truyền START bit sẽ chuyển từ 1 xuống 0 để báo hiệu cho bộ nhận là quá trình truyền dữ liệu sắp xảy ra Sau START bit là đến các bit dữ liệu D0-D7 (Theo hình vẽ các bit này có thể ở mức High or Low tùy theo dữ liệu) Sau khi truyền hết dữ liệu thì đến Bit Parity để bộ nhận kiểm tra tính đúng đắn của dữ liệu truyền Cuối cùng là STOP bit là 1 báo cho thiết bị rằng các bit đã được gửi xong Thiết bị nhận sẽ tiến hành kiểm tra khung truyền nhằm đảm báo tính đúng đắn của dữ liệu

Ngày đăng: 11/03/2019, 16:47

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