Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 124 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
124
Dung lượng
3,95 MB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP HỒ CHÍ MINH ĐỒ ÁN TỐT NGHIỆP HỆ THỐNG KỆ NHÃN ĐIỆN TỬ SỬ DỤNG MÀN HÌNH EINK QUA BLUETOOTH 5.0 ( MẠCH HIỂN THỊ) NGÀNH: KỸ THUẬT ĐIỆN TỬ-VIỄN THÔNG GIẢNG VIÊN HƯỚNG DẪN : TS VÕ ĐÌNH TÙNG Sinh viên thực MSSV Nguyễn Hồng Tâm 1711010077 17DDTA1 Võ Anh Tú 1711010085 17DDTA1 TP.Hồ Chí Minh, tháng 9/2021 Lớp BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC CƠNG NGHỆ TP HỒ CHÍ MINH ĐỒ ÁN TỐT NGHIỆP HỆ THỐNG KỆ NHÃN ĐIỆN TỬ SỬ DỤNG MÀN HÌNH EINK QUA BLUETOOTH 5.0 ( MẠCH HIỂN THỊ ) NGÀNH: KỸ THUẬT ĐIỆN TỬ-VIỄN THÔNG GIẢNG VIÊN HƯỚNG DẪN : TS VÕ ĐÌNH TÙNG Sinh viên thực MSSV Lớp Nguyễn Hoàng Tâm 1711010077 17DDTA1 Võ Anh Tú 1711010085 17DDTA1 TP.Hồ Chí Minh, tháng 9/2021 BM01/QT05/ĐT-KT VIỆN KỸ THUẬT HUTECH PHIẾU ĐĂNG KÝ ĐỀ TÀI ĐỒ ÁN/KHÓA LUẬN TỐT NGHIỆP Hệ: …….Chính quy…… (CQ, LT, B2, VLVH) Họ tên sinh viên/ nhóm sinh viên đăng ký đề tài (sĩ số nhóm 2): (1) Võ Anh Tú MSSV: 1711010085…Lớp: 17DDTA1 Điện thoại: 0779471336 Email: voanhtu1999@gmail.com (2) Nguyễn Hoàng Tâm MSSV: 1711010077 …Lớp: 17DDTA1 Điện thoại: 0988110249 Email: tam.nht.1812@gmail.com Ngành : Kỹ thuật điện tử truyền thông Chuyên ngành : Kỹ thuật điện tử truyền thông Tên đề tài đăng ký : Hệ thống kệ nhãn điện tử sử dụng hình e-ink qua Bluetooth 5.0 ( mạch hiển thị ) Sinh viên hiểu rõ yêu cầu đề tài cam kết thực đề tài theo tiến độ hoàn thành thời hạn TP HCM, ngày 12 tháng 04 năm 2021 Giảng viên hướng dẫn Sinh viên đăng ký (Ký ghi rõ họ tên) (Ký ghi rõ họ tên) TS Võ Đình Tùng Nguyễn Hồng Tâm Võ Anh Tú MÃ ĐỀ TÀI: 97 VIỆN KỸ THUẬT HUTECH PHIẾU GIAO NHIỆM VỤ THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP (Mỗi sinh viên phiếu, GVHD ghi rõ tên đề tài nhiệm vụ sinh viên GVHD chuyển cho SV để nộp VP Viện.) Sinh viên thực đề tài Họ tên : Võ Anh Tú MSSV : 1711010085 Lớp : 17DDTA1 Điện thoại : 0779471336 Email : voanhtu1999@gmail.com Ngành : Kỹ Thuật Điện Tử - Truyền Thông Tên đề tài: Hệ thống kệ nhãn điện tử sử dụng hình e-ink qua Bluetooth 5.0 ( mạch hiển thị ) Nhiệm vụ thực đề tài: _ Tìm hiểu thiết kế sơ đồ ngun lí mạch hiển thị _ Viết chương trình cho vi điều khiển _ Thiết kế vỏ mạch thị _ Tối ưu hóa mạch hiển thị _ Tìm hiểu vi điều khiển AVR _ Tìm hiểu bluetooth 5.0 TP HCM, ngày 18 tháng 05 năm 2021 Sinh viên thực Giảng viên hướng dẫn (Ký ghi rõ họ tên) (Ký ghi rõ họ tên) Võ Anh Tú TS Võ Đình Tùng MÃ ĐỀ TÀI: 97 VIỆN KỸ THUẬT HUTECH PHIẾU GIAO NHIỆM VỤ THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP (Mỗi sinh viên phiếu, GVHD ghi rõ tên đề tài nhiệm vụ sinh viên GVHD chuyển cho SV để nộp VP Viện.) Sinh viên thực đề tài Họ tên : Nguyễn Hoàng Tâm MSSV : 1711010077 Lớp : 17DDTA1 Điện thoại : 0988110249 Email : tam.nht.1812@gmail.com Ngành : Kỹ Thuật Điện Tử - Truyền Thông Tên đề tài: Hệ thống bảng giá kệ sử dụng bluetooth 5.0 hình E-ink (mạch hiển thị) Nhiệm vụ thực đề tài: _ Tìm hiểu vẽ sơ đồ mạch nguyên lí mạch hiển thị _ Tìm hiểu bluetooth 5.0 _ Thiết kế sơ đồ mạch in PCB _ Lựa chọn linh kiện _ Thi công mạch _ Kiểm tra mạch sửa lỗi có _ Tính cơng suất tiêu thụ Pin _ Kiểm tra khoảng cách truyền nhận Bluetooth TP HCM, ngày 18 tháng 05 năm 2021 Sinh viên thực Giảng viên hướng dẫn (Ký ghi rõ họ tên) (Ký ghi rõ họ tên) Nguyễn Hồng Tâm TS Võ Đình Tùng LỜI CAM ĐOAN Chúng xin cam đoan với lãnh đạo nhà trường Đại Học Công Nghệ Thành Phố Hồ Chí Minh (HUTECH), q thầy bạn sinh viên khóa 2017 nội dung đề tài nghiên cứu làm đồ án tốt nghiệp chúng tơi xác từ công sức dày công học hỏi, nghiên cứu tham vấn hướng dẫn thầy giảng viên TS Võ Đình Tùng, trao dồi kiến thức bạn thành viên lớp 17DDTA1 nguồn thông tin rộng lớn sách, báo, tài liệu internet (google.com), Khi sử dụng lại nguồn thông tin ghi rõ ràng minh bạch nguồn gốc, tên tác giả Quan trọng không chép tài liệu viết báo cáo để trình bày báo cáo đồ án tốt nghiệp Cả nhóm hai thành viên chúng tơi xin chịu hồn tồn trách nhiệm có điều xảy với điều vừa nêu TP HCM, ngày… tháng… năm 2021 Sinh viên thực (Ký ghi rõ họ tên) Nguyễn Hoàng Tâm i Võ Anh Tú LỜI CẢM ƠN Chúng xin gửi lời cảm ơn chân thành đến thầy giảng viên TS Võ Đình Tùng Trong suốt trình thực đề tài đồ án tốt nghiệp, thầy người chèo lái, đồng hành hướng dẫn với dẫn tận tâm, dạy bảo tận tình, góp ý nhận xét với kinh nghiệm quý báu thầy truyền đạt lại tạo điều kiện thuận lợi để chúng tơi hồn thành tốt đề tài đồ án tốt nghiệp Chúng xin cảm ơn đến quý thầy, cô Viện Kỹ Thuật Hutech giảng dạy cho kiến thức tảng để chúng tơi có tiền đề thực đề tài đồ án tốt nghiệp cách tự tin vững vàng Cảm ơn người cha, người mẹ tạo điều kiện tốt cho cá nhân bạn, cảm ơn người bạn lớp 17DDTA1 đồng hành chúng tôi, tạo nên nguồn động lực mạnh mẽ để chúng tơi hồn thành đồ án tốt nghiệp Xin chân thành cảm ơn TP HCM, ngày tháng năm 2021 Sinh viên thực (Ký ghi rõ họ tên) Nguyễn Hoàng Tâm ii Võ Anh Tú MỤC LỤC PHIẾU ĐĂNG KÝ TÊN ĐỀ TÀI ĐỒ ÁN TỐT NGHIỆP PHIẾU GIAO NHIỆM VỤ Trang LỜI CAM ĐOAN i LỜI CẢM ƠN ii MỤC LỤC iii DANH SÁCH CÁC TỪ VIẾT TẮT vii DANH SÁCH CÁC HÌNH viii DANH SÁCH CÁC BẢNG x LỜI MỞ ĐẦU .1 TÍNH CẤP THIẾT CỦA ĐỀ TÀI TÌNH HÌNH NGHIÊN CỨU MỤC ĐÍCH NGHIÊN CỨU NHIỆM VỤ NGHIÊN CỨU PHƯƠNG PHÁP NGHIÊN CỨU CÁC KẾT QUẢ ĐẠT ĐƯỢC CỦA ĐỀ TÀI KẾT CẤU CỦA ĐỒ ÁN .4 Chương1: GIỚI THIỆU 1.1 Một số phương pháp hiển thị giá 1.2 Các công nghệ kết nối không dây 1.3 Công nghệ Bluetooth phiên 5.0 Chương 2: TỔNG QUAN GIẢI PHÁP 12 2.1 Công nghệ Bluetooth 12 2.1.1 Nguyên lí hoạt động Bluetooth 12 2.1.2 Các chuẩn kết nối Bluetooth 13 2.2 Các chuẩn truyền liệu 14 2.2.1 Giao tiếp UART .14 2.2.2 Giao thức truyền liệu 4-wire SPI 15 iii 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0X80,0X03,0XE0,0X00,0X 00,0X70,0X7C, 0XC0,0X38,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 01,0X80,0X03, 0XE0,0X00,0X00,0X70,0X7C,0XE0,0X38,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X00,0X01,0X80,0X03,0XE0,0X00,0X00,0X60,0X7C,0XE0,0X18,0X00,0X 00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XE0,0X1F,0XF9,0XF1,0X 80,0X1F,0XE7, 0X06,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 03,0XE0,0X1F, 0XF9,0XF1,0X80,0X1F,0XE7,0X06,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X01,0X8C,0X03,0XFF,0XC0,0X01,0XFC,0X1F,0XE0,0X3E,0X00,0X00,0 X00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 93 00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X01,0X8C,0X03,0XFF,0XC0,0X01,0XFC,0 X1F,0XE0,0X3E, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0X8C,0X 03,0XFF,0XE0, 0X01,0XFC,0X1F,0XC0,0X3E,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0 X00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X03,0XE0,0X18,0XF8,0X3E,0X7F,0XE3,0X00,0X3E,0X00,0X00,0X00,0 X00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X03,0XE0,0X18,0XF8,0X3E,0X7F,0XE3,0 X00,0X3E,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0X8C,0X7F,0X 07,0XF9,0XC0, 0X03,0XFF,0XF8,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X01, 0X8C,0X7F,0X07,0XF9,0XC0,0X03,0XFF,0XF8,0XC0,0X00,0X00,0X00,0X00,0 X00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 94 0X00,0X00,0X00,0X00,0X01,0X8C,0X7F,0X07,0XF0,0X80,0X03,0XFF,0XF8,0 XE0,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X18,0X C0,0X01,0X83, 0XE0,0X18,0XFE,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X18,0XC0,0X01,0X83,0XE0,0X18,0XFE,0X00,0X00,0X00,0X00,0X00,0 X00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X00,0X00,0X01,0XFF,0XFF,0X18,0X00,0X80,0X60,0XE3,0X18,0X38,0X 00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0XFF,0XFF,0X18,0X01,0X C0,0X70,0X63, 0X18,0X30,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 01,0XFF,0XFF, 0X18,0X01,0XC0,0X70,0X63,0X18,0X38,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X00,0X01,0X80,0X03,0X00,0XC7,0XCF,0X8C,0X60,0X1F,0XFE,0X00,0 95 X00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0X80,0X03,0X00,0XC7,0XCF,0X 8C,0X60,0X1F, 0XFE,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0X 8F,0XE3,0X00, 0X3F,0XF3,0XF0,0X7F,0XF8,0X0E,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X01,0X8F,0XE3,0X00,0X3F,0XF1,0XF0,0X7F,0XF8,0X06,0X00,0X00,0 X00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X01,0X8F,0XE3,0X00,0X3F,0XF0,0XE1,0X FF,0XBC,0X04, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0X8F,0X E3,0X1F,0XC0, 0X30,0X03,0X83,0X1F,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X01,0X8F,0XE3,0X1F,0XC0,0X30,0X03,0X83,0X1F,0XC0,0X00,0X00,0X00,0 X00,0X00,0X00, 96 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X01,0X8F,0XE3,0X07,0X3E,0X00,0X20,0X60,0X 1F,0XC6,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0X8F,0XE3,0X 07,0X3E,0X00, 0X70,0X60,0X1F,0XC6,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X01, 0X8F,0XE3,0X07,0X3E,0X00,0X70,0XE0,0X1F,0XC6,0X00,0X00,0X00,0X00,0 X00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X00,0X00,0X00,0X01,0X80,0X03,0X1F,0XC1,0XF1,0XFF,0XE0,0X18,0 X38,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X01,0X80,0X03,0X1F,0X C1,0XF1,0XFF, 0XE0,0X18,0X38,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X01,0XFF, 0XFF,0X1F,0XC0,0X3E,0X7C,0XFF,0XF8,0X38,0X00,0X00,0X00,0X00,0X00,0 X00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 97 00,0X00,0X00, 0X00,0X00,0X00,0X01,0XFF,0XFF,0X1F,0XC0,0X3E,0X7C,0X7F,0XF8,0X38,0 X00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0XFF,0XFE,0X0F,0X80,0X 3C,0X3C,0X3F, 0XF0,0X10,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 98 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X 00,0X00,0X00, }; Input.cpp #include "OGinput.h" const String CMD_CHARS = "@#!"; const char CMD_SYS= CMD_CHARS[0]; const char CMD_DISP_NAME = CMD_CHARS[1]; const char CMD_DISP_PRICE= CMD_CHARS[2]; 99 const char* CMD_SYS_DISP_WIPE_UPDATE= "sduw"; const char* CMD_SYS_DISP_REFRESH= "dr"; String GetSerialData(){ if (Serial.available() > 0) { String serialData= Serial.readString(); serialData.replace("\n", ""); return serialData; } return ""; } bool IsValidCmd(String src){ if (src == ""){ return false; } if(src.length() < 2){ return false; } char cmdChar= src[0]; int loops= CMD_CHARS.length(); int failures= 0; for(int i=0; i< loops; i++){ if (cmdChar != CMD_CHARS[i]){ failures+=1; 100 } } if(failures == loops){return false;} return true; } bool IsValidSysCmd(String src){ if(src.length() < 4){ return false; } if(src[0] != CMD_SYS){ return false; } if(src.indexOf(' ') == -1){ return false; } return true; } char GetCmdChar(String src){ if(!IsValidCmd(src)){ return 0x00; } return src.substring(0, 1)[0]; 101 } String GetCmdData(String src){ if(!IsValidCmd(src)){ return ""; } return src.substring(1); } String GetSysCmd(String src){ if(!IsValidSysCmd(src)){ return ""; } String cmdData= GetCmdData(src); int spacingIndex= cmdData.indexOf(' ', spacingIndex); return cmdData.substring(0, spacingIndex); } String GetSysCmdData(String src){ if(!IsValidSysCmd(src)){ return ""; } String cmdData= GetCmdData(src); int spacingIndex= cmdData.indexOf(' ', spacingIndex); return cmdData.substring(spacingIndex+1); } 102 Input.h #ifndef INPUT_H #define INPUT_H #include extern const char CMD_SYS; extern const char CMD_DISP_NAME; extern const char CMD_DISP_PRICE; extern const char* CMD_SYS_DISP_WIPE_UPDATE; extern const char* CMD_SYS_DISP_REFRESH; String GetSerialData(); char GetCmdChar(String src); String GetCmdData(String src); String GetSysCmd(String src); String GetSysCmdData(String src); #endif Eink.cpp #include "eink.h" #include "OGframe.h" #include GxEPD2_BW display(GxEPD2_290_T5(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW029T5 //GxEPD2_BW 103 display(GxEPD2_290_T5(/*CS=10*/ SS, /*DC=*/ 8, /*RST=*/ 9, /*BUSY=*/ 7)); // GDEW029T5 màn dẻo EinkDisplay::~EinkDisplay(){} EinkDisplay::EinkDisplay(){ clearOnUpdate= true; } void EinkDisplay::Init(){ display.init(); } void EinkDisplay::UpdateProduct(String productName, String productPrice){ String nameLabel= ""; String priceLabel= ""; productName= nameLabel+ productName; productPrice= priceLabel+ productPrice; uint16_t x = 10; uint16_t y = 70; display.setRotation(1); display.setFont(&FreeSerifBold12pt7b); display.setTextColor(GxEPD_BLACK); int16_t nameBoxX, nameBoxY; uint16_t nameBoxW, nameBoxH; display.getTextBounds(productName, x, &nameBoxW, &nameBoxH); 104 y, &nameBoxX, &nameBoxY, int pricex, pricey, namex, namey; namex= x; namey= y; pricex= x; pricey= y+nameBoxH+10; //display.setPartialWindow(x-2, y-15, display.width(), display.height()); display.setPartialWindow(0, 0, display.width(), display.height()); if (this->clearOnUpdate){ display.fillRect(0,0,nameBoxW, nameBoxH,GxEPD_BLACK); display.fillRect(0,0,nameBoxW, nameBoxH,GxEPD_WHITE); } display.firstPage(); { display.drawBitmap(0,0, frame, display.width(), GxEPD_BLACK); display.setCursor(namex, namey); display.print(productName); display.setCursor(pricex, pricey); display.print(productPrice); } while (display.nextPage()); 105 display.height(), } void EinkDisplay::SetWipeOnUpdate(bool value){ this->clearOnUpdate= value; } bool EinkDisplay::GetWipeOnUpdate(){ return this->clearOnUpdate; } Eink.h #ifndef EINK_H #define EINK_H #include #include #define MAX_DISPLAY_BUFFER_SIZE 800 #define MAX_HEIGHT(EPD) (EPD::HEIGHT