Đồ án tốt nghiệp: Xây dựng mô hình xe trò chơi trẻ em ứng dụng công nghệ OCRĐồ án tốt nghiệp: Xây dựng mô hình xe trò chơi trẻ em ứng dụng công nghệ OCRĐồ án tốt nghiệp: Xây dựng mô hình xe trò chơi trẻ em ứng dụng công nghệ OCRĐồ án tốt nghiệp: Xây dựng mô hình xe trò chơi trẻ em ứng dụng công nghệ OCRĐồ án tốt nghiệp: Xây dựng mô hình xe trò chơi trẻ em ứng dụng công nghệ OCRĐồ án tốt nghiệp: Xây dựng mô hình xe trò chơi trẻ em ứng dụng công nghệ OCRĐồ án tốt nghiệp: Xây dựng mô hình xe trò chơi trẻ em ứng dụng công nghệ OCRĐồ án tốt nghiệp: Xây dựng mô hình xe trò chơi trẻ em ứng dụng công nghệ OCRĐồ án tốt nghiệp: Xây dựng mô hình xe trò chơi trẻ em ứng dụng công nghệ OCRĐồ án tốt nghiệp: Xây dựng mô hình xe trò chơi trẻ em ứng dụng công nghệ OCRĐồ án tốt nghiệp: Xây dựng mô hình xe trò chơi trẻ em ứng dụng công nghệ OCRĐồ án tốt nghiệp: Xây dựng mô hình xe trò chơi trẻ em ứng dụng công nghệ OCRĐồ án tốt nghiệp: Xây dựng mô hình xe trò chơi trẻ em ứng dụng công nghệ OCRĐồ án tốt nghiệp: Xây dựng mô hình xe trò chơi trẻ em ứng dụng công nghệ OCRĐồ án tốt nghiệp: Xây dựng mô hình xe trò chơi trẻ em ứng dụng công nghệ OCRĐồ án tốt nghiệp: Xây dựng mô hình xe trò chơi trẻ em ứng dụng công nghệ OCRĐồ án tốt nghiệp: Xây dựng mô hình xe trò chơi trẻ em ứng dụng công nghệ OCRĐồ án tốt nghiệp: Xây dựng mô hình xe trò chơi trẻ em ứng dụng công nghệ OCR
BỘ GIÁO DỤC & ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH KHOA ĐIỆN - ĐIỆN TỬ BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP - Y SINH ĐỒ ÁN TỐT NGHIỆP NGÀNH CÔNG NGHỆ KỸ THUẬT ĐIỆN TỬ TRUYỀN THƠNG ĐỀ TÀI: XÂY DỰNG MƠ HÌNH XE TRỊ CHƠI TRẺ EM ỨNG DỤNG CƠNG NGHỆ OCR GVHD: ThS Nguyễn Văn Hiệp SVTH: MSSV: Nguyễn Minh Dũng 15141122 Đặng Minh Lâm 15141193 TP Hồ Chí Minh - 08/2019 LỜI CAM ĐOAN Đề tài nhóm tự thực dƣới hƣớng dẫn giảng viên ThS Nguyễn Văn Hiệp Đề tài dựa vào số tài liệu trƣớc khơng chép từ tài liệu hay cơng trình có trƣớc Nhóm thực đề tài Nguyễn Minh Dũng Đặng Minh Lâm iv LỜI CẢM ƠN Nhóm em xin gửi lời cảm ơn sâu sắc đến Thầy Nguyễn Văn Hiệp, ngƣời trực tiếp hƣớng dẫn giúp đỡ tạo điều kiện để nhóm hồn thành tốt đề tài Mặc dù kiến thức nhóm cịn hạn chế nhƣng thầy nhiệt tình giúp đỡ, vạch hƣớng cho phù hợp Xin chân thành cảm ơn quý thầy cô Giảng viên khoa Điện - Điện Tử, trƣờng Đại Học Sƣ Phạm Kỹ Thuật Tp.HCM giúp đỡ nhóm trình thực đồ án Ngồi nhóm cịn nhận quan tâm, giúp đỡ gia đình, bạn bè, anh chị trƣờng để hoàn thành đồ án Do kiến thức hạn chế nên trình thực khơng tránh khỏi sai sót mong thầy bạn góp ý để nhóm hoàn thành đồ án tốt Xin chân thành cảm ơn! Nhóm thực đề tài Nguyễn Minh Dũng Đặng Minh Lâm v MỤC LỤC Trang bìa i NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP ii LỊCH TRÌNH THỰC HIỆN ĐỒ ÁN TỐT NGHIỆP iii LỜI CAM ĐOAN iv LỜI CẢM ƠN v MỤC LỤC vi LIỆT KÊ HÌNH viii LIỆT KÊ BẢNG .ix TÓM TẮT .xi CHƢƠNG 1: TỔNG QUAN 1.1 ĐẶT VẤN ĐỀ 1.2 MỤC TIÊU 1.3 NỘI DUNG NGHIÊN CỨU 1.4 GIỚI HẠN 1.5 BỐ CỤC .2 CHƢƠNG 2: CƠ SỞ LÝ THUYẾT .4 2.1 TỔNG QUAN VỀ CÔNG NGHỆ OCR 2.2 CÁC CHUẨN TRUYỀN DỮ LIỆU .6 2.2.1 Chuẩn giao tiếp UART 2.2.2 Chuẩn truyền thông SPI 2.3 TỔNG QUAN VỀ HỆ ĐIỀU HÀNH ANDROID 2.3.1 Khái niệm hệ điều hành android 2.3.2 Giao diện 2.3.3 Ứng dụng 11 2.3.4 Ƣu nhƣợc điểm hệ điều hành Android 13 CHƢƠNG 3: TÍNH TỐN VÀ THIẾT KẾ 14 3.1 ĐẶT VẤN ĐỀ .14 3.2 GIỚI THIỆU VỀ HỆ THỐNG VÀ SƠ ĐỒ KHỐI .14 3.3 THIẾT KẾ VÀ TÍNH TỐN CÁC MƠ HÌNH 15 3.3.1 Thiết kế mơ hình xe 15 3.3.2 Thiết kế mơ hình đƣờng (line) xe chạy 17 3.3.3 Thiết kế mơ hình biển báo 19 3.4 THIẾT KẾ VÀ TÍNH TỐN CÁC KHỐI 19 3.4.1 Sơ đồ khối mạch điều khiển xe 19 vi 3.4.2 Thiết kế khối 21 CHƢƠNG 4: THI CÔNG HỆ THỐNG 34 4.1 GIỚI THIỆU 34 4.2 THI CÔNG HỆ THỐNG .34 4.2.1 Sơ đồ nguyên lý 34 4.2.2 Thi công Board mạch 36 4.3 ĐÓNG GÓI VÀ THI CƠNG MƠ HÌNH 38 4.3.1 Đóng gói mơ hình xe 38 4.3.2 Hồn tất mơ hình đƣờng chạy 41 4.4 LẬP TRÌNH HỆ THỐNG 42 4.4.1 Lƣu đồ giải thuật 42 4.4.2 Phần mềm lập trình cho vi điều khiển 48 4.4.3 Phần mềm lập trình cho điện thoại, máy tính .50 4.5 VIẾT TÀI LIỆU HƢỚNG DẪN SỬ DỤNG, THAO TÁC 52 CHƢƠNG 5: KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ 53 5.1 GIỚI THIỆU 53 5.2 KẾT QUẢ ĐẠT ĐƢỢC 53 5.3 KẾT QUẢ THỰC NGHIỆM .53 5.3.1 Thiết kế thi công tủ .54 5.3.2 Phần cứng, giao diện điều khiển 56 5.3.3 App android 57 5.4 NHẬN XÉT, ĐÁNH GIÁ 59 5.4.1 Nhận xét 59 5.4.2 Đánh giá 59 CHƢƠNG 6: KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN 61 6.1 KẾT LUẬN 61 6.2 HƢỚNG PHÁT TRIỂN 61 TÀI LIỆU THAM KHẢO 62 PHỤ LỤC .63 vii LIỆT KÊ HÌNH Hình Trang Hình 2.1 Giản đồ truyền liệu UART Hình 2.2 Giao tiếp SPI Hình 2.3.Logo hệ điều hành Android Hình 2.4 Giao diện thiết bị chạy hệ điều hành Android 10 Hình 2.5 Thanh trạng thái thiết bị chạy hệ điều hành Android 11 Hình 2.6 Kho ứng dụng Google Play Store 12 Hình 3.1 Hình ảnh minh họa cho hệ thống 14 Hình 3.2 Phân bố linh kiện dự kiến mặt xe 16 Hình 3.3 Phân bố linh kiện dự kiến mặt dƣới xe 17 Hình 3.4 Mơ hình đƣờng (line) xe chạy .18 Hình 3.5 Sơ đồ khối xe 20 Hình 3.6 Board arduino UNO R3 22 Hình 3.7 Sơ đồ chân Arduino Uno .23 Hình 3.8 Thanh cảm biến dị line 27 Hình 3.9 Module Bluetooth HC - 06 28 Hình 3.10 Module L298N 29 Hình 3.11 Động DC giảm tốc 30 Hình 3.12 Cịi chíp .31 Hình 3.13 Chiếc điện thoại sử dụng cho hệ thống .32 Hình 4.1 Sơ đồ nguyên lý toàn mạch 34 Hình 4.2 Sơ đồ mạch làm gọn dây cho xe phần nguồn 35 Hình 4.3 Sơ đồ mạch làm gọn dây cho xe phần Bluetooth Buzzer 35 Hình 4.4 Mạch in theo sơ đồ mạch hình 4.3 36 Hình 4.5 Mạch in thi công theo sơ đồ mạch hình 4.3 36 Hình 4.6 Mạch in theo sơ đồ mạch hình 4.2 37 Hình 4.7 Mạch in thi cơng theo sơ đồ mạch hình 4.2 37 Hình 4.8 Hình ảnh mặt xe .38 Hình 4.9 Hình ảnh mặt dƣới xe 38 Hình 4.10 Hình ảnh xe đƣợc đóng hộp 39 Hình 4.11 Hình ảnh xe đƣợc đóng hộp 40 Hình 4.12 Hình ảnh xe đƣợc đóng hộp 41 Hình 4.13 Mơ hình đƣờng chaỵ 41 Hình 4.14 Lƣu đồ chƣơng trình thực chức dò line 42 Hình 4.15 Sơ đồ bố trí mắt hồng ngoại cảm biến 43 Hình 4.16 Lƣu đồ chƣơng trình thực chức xử lý liệu gởi 44 Hình 4.17 Hình ảnh mơ tả cách thức chọn hƣớng mắt hồng ngoại 45 Hình 4.18 Lƣu đồ chƣơng trình App Android .47 Hình 4.19 Giao diện phần mềm lập trình Arduino IDE .48 Hình 4.20 Giao diện phần mềm Android Studio 50 Hình 4.21 Giao diện phần thiết kế giao diện cho ứng dụng 51 Hình 5.1 Hình ảnh thực tế mơ hình đƣờng (line) xe chạy 54 Hình 5.2 Mơ hình xe bắt gặp lệnh “STOP” dừng lại hú còi 55 Hình 5.3 Các linh kiện đƣợc phân bố kết nối với 56 Hình 5.4 Giao diện app điện thoại .57 viii Hình 5.5 Giao diện app điện thoại 57 Hình 5.6 Giao diện app điện thoại 58 ix LIỆT KÊ BẢNG Bảng Trang Bảng 2.1: Cấu trúc tổng quát Arduino UNO R3 26 Bảng 4.1: Tính tốn chọn khối nguồn 33 Bảng 4.2: Bảng trạng thái chọn hƣớng cho mơ hình xe 43 Bảng 5.1: Số lần thực nghiệm .59 x TĨM TẮT Trong năm gần đây, cơng nghệ nhận diện kí tự chữ viết đƣợc ứng dụng rộng rãi nhiều lĩnh vực đời sống Và nhận thấy lĩnh vực đồ chơi mơ hình cho trẻ em lĩnh vực hay kết hợp với cơng nghệ để tăng tính sáng tạo nhƣ giúp cho sản phẩm độc đáo thu hút đƣợc nhiều đối tƣợng ngƣời dùng Đề tài nhằm mục đích thiết kế thi cơng đƣợc mơ hình xe trị chơi trẻ em với phƣơng pháp nhận diện kí tự hình ảnh thơng qua công nghệ OCR xi CHƢƠNG 1: TỔNG QUAN CHƢƠNG 1: TỔNG QUAN 1.1 ĐẶT VẤN ĐỀ Thế giới sóng cách mạng cơng nghiệp 4.0 Cơng nhận dạng kí tự quang học ngày đƣợc nâng cấp sử dụng rộng rãi ứng dụng đời sống Đặc biệt, nhận dạng kí tự quang học dù khơng cịn điều q mẻ nhƣng công nghệ đƣợc áp dụng phổ biến để giải vấn đề nhƣ giảm tải giấy tờ lƣu trữ, từ giúp tối ƣu mặt kinh phí trì giấy tờ lƣu trữ tài liệu cho doanh nghiệp công ty Ngồi cơng nghệ cịn đƣợc ứng dụng phần mềm phát xử lý tình vi phạm luật giao thơng thơng qua hệ thống camera giám sát, hệ thống hỗ trợ sống cho ngƣời già ngƣời khiếm thị, hỗ trợ cho việc nhập liệu, xử lí hóa đơn loại chứng từ Việc công nghệ ngày phát triển giúp cho tính xác cơng nghệ nhận dạng kí tự đƣợc tăng đáng kể, hệ thống dần thông minh nhận dạng đƣợc hầu hết phông chữ phổ biến Một số hệ thống cịn có khả tái tạo lại định dạng tài liệu gần giống với gốc bao gồm: hình ảnh, cột, bảng biểu… hay thành phần khơng phải văn Trƣớc có nhiều đề tài nghiên cứu ứng dụng sử dụng cơng nghệ nhận dạng kí tự quang học nhƣ đề tài “Ứng dụng công nghệ OCR điều khiển Led màu sáng theo màu mong muốn” Ở tác giả sử dụng ESP8266 liên kết ứng dụng Android với sở liệu thời gian thực Firebase để truyền nhận liệu xử lý chức năng.[3] Qua thơng tin trên, nhóm em định làm đề tài “Thiết kế thi cơng mơ hình xe trị chơi trẻ em ứng dụng cơng nghệ OCR” Hệ thống sử dụng vi điều khiển trung tâm module Arduino Uno R3, cảm biến hồng ngoại TCRT5000L, module L298N, động DC giảm tốc, điện thoại thông minh dùng hệ điều hành Android dùng để làm camera cho xe module Bluetooth HC - 06 Ngƣời dùng tùy ý thay đổi vị trí biến báo mơ hình nhƣ lệnh biển báo liệu nhận đƣợc đƣợc gởi Arduino thông qua ứng dụng cài đặt điện thoại sử dụng hệ điều hành Android [1] BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH CHƢƠNG 6: KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN CHƢƠNG 6: KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN 6.1 KẾT LUẬN Sau khoảng 16 tuần nghiên cứu tìm hiểu, nhóm hồn thành đồ án thi cơng sản phẩm xe dị đƣờng ( line) ứng dụng công nghệ OCR đáp ứng đƣợc yêu cầu đặt ban đầu: - Sản phẩm đƣợc thi cơng hồn thiện, dây gọn gàng mang vào sử dụng - Các chức đƣợc đƣa hoạt động mƣợt mà, ổn định - App android có giao diện trực quan, dễ sử dụng - Thời gian trễ app tùy thuộc vào việc xe chạy ổn định bắt đƣợc chữ tốt - Thời gian hoạt động xe chƣa cao 6.2 HƢỚNG PHÁT TRIỂN - Thiết kế xe với mẫu mã đẹp mắt hơn, bắt mắt thu hút e nhỏ - Tăng dung lƣợng Pin để xe hoạt động nhiều - Bổ sung thêm tính nhƣ xe có đèn Led nhấp nháy, xe chạy lùi, quay vịng,… BỘ MƠN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 61 TÀI LIỆU THAM KHẢO TÀI LIỆU THAM KHẢO Sách tham khảo [1] Nguyễn Văn Hiệp - Đinh Quang Hiệp, “Lập trình android ”, Nhà xuất ĐH Quốc Gia, Tp.HCM, 2015 [2] Nguyễn Đình Phú, “Giáo trình Vi xử lí ”, Trƣờng ĐHSPKT, Tp.HCM, 2013 [3] Văn Trọng Công – Phạm Thiên Đông, “Ứng dụng công nghệ OCR điều khiển Led màu sáng theo màu mong muốn”, Đồ án môn học trƣờng ĐHSPKT, Tp.HCM, Website tham khảo [1] www.arduino.vn [2] www.wikipedia.org [3] www.alldatasheet.com BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 62 PHỤ LỤC PHỤ LỤC Code Arduino Chƣơng trình thực chức xe chạy theo line #include /*=========================================================================== =====================*/ /* L298N Pin define */ #define inA1 #define inA2 #define inB1 #define inB2 #define ENA 10 #define ENB 11 /* Traffic signs */ #define BOARD_STOP "stop" #define BOARD_FAST "fast" #define BOARD_TURN_LEFT "left" #define BOARD_TURN_RIGHT "right" #define BOARD_NORMAL "normal" /* IR-Pack Pin define */ #define IR_eye_1 15 #define IR_eye_2 16 #define IR_eye_3 17 #define IR_eye_4 18 #define IR_eye_5 19 /* IR current status */ #define LEFT_4 0b00001 #define LEFT_3 0b00011 #define LEFT_2 0b00010 #define LEFT_1 0b00110 #define MIDDLE 0b00100 BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 63 PHỤ LỤC #define RIGHT_1 0b01100 #define RIGHT_2 0b01000 #define RIGHT_3 0b11000 #define RIGHT_4 0b10000 /* PWM value for Motor*/ #define NORMAL_SPEED 85 #define FAST_SPEED 100 #define STOP_MOTOR /* Horn Pin define */ #define Horn #define MAX_WAIT_TIME_FOR_EXECUTE_MESSAGE 3000 /* Message from Phone*/ struct exec_message { bool is_executed; char message[20]; bool is_copied; }; /* Non-blocking timer */ struct non_blocking_timer { unsigned long time_start; bool timer_is_running; }; /*=========================================================================== =====================*/ /* Global variable*/ // Buffer to store message data from Bluetooth char mess_data[100]; // The index of buffer data uint8_t index_mess = 0; // Hold the lastest status of IR eye BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 64 PHỤ LỤC bool eye_status[5] = {false, false, false, false, false}; // This car is stop before ? static uint8_t pre_stop = 0; // Initalize soft serial to communicate with Bluetooth module SoftwareSerial Bluetooth(2, 3); // RX, TX // Store the Command (CMD) from Bluetooth exec_message phone_message = {false, "", false}; non_blocking_timer clean_message_timer = {0, false}; /*=========================================================================== =====================*/ /* Prototype */ void go_straight(); void go_back(); void turn_left(); void turn_right(); void stop_car(); /*================================*/ bool have_Bluetooth_message(); void checking_IR_eyes(); bool read_IR_num(int eye_no); void clean_all_after_execute_cmd(); void make_decision(int8_t status); void clean_buffer(); bool check_message_is_valid(); uint8_t check_eye_status(); /*=========================================================================== =====================*/ /* Setup step*/ void setup() { /* Setup serial port */ Serial.begin(9600); Bluetooth.begin(9600); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 65 PHỤ LỤC /* Configure Horn pin */ pinMode(Horn, OUTPUT); /* Configure L298N control pin */ pinMode(inA1, OUTPUT); pinMode(inA2, OUTPUT); pinMode(inB1, OUTPUT); pinMode(inB2, OUTPUT); /* Configure Infrared module */ pinMode(IR_eye_1, INPUT); pinMode(IR_eye_2, INPUT); pinMode(IR_eye_3, INPUT); pinMode(IR_eye_4, INPUT); pinMode(IR_eye_5, INPUT); /* Configure channel of L298N */ pinMode(ENA, OUTPUT); pinMode(ENB, OUTPUT); /* Enable channel for motor speed*/ set_normal_speed(); delay(7000); } /*=========================================================================== =====================*/ /* Main loop */ void loop() { checking_IR_eyes(); have_Bluetooth_message(); /* Unblock to Debug IR status*/ // for (int i = 4; i >= 0; i ) // Serial.print(eye_status[i]); // Serial.print("\n"); if (clean_message_timer.timer_is_running) BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 66 PHỤ LỤC checking_timer(); choose_direction(); } /*=========================================================================== =====================*/ bool have_Bluetooth_message() { char charater_in; while (Bluetooth.available()) { charater_in = Bluetooth.read(); if (charater_in == 0x0D || charater_in == '\n') { mess_data[index_mess] = '\0'; index_mess = 0; if ((phone_message.is_copied == false) && (check_message_is_valid())) { strcpy(phone_message.message, mess_data); Serial.print(phone_message.message); Serial.print("\n"); phone_message.is_copied = true; phone_message.is_executed = false; start_timer_now(); } return true; } else { mess_data[index_mess++] = charater_in; } } return false; } void start_timer_now() { BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 67 PHỤ LỤC clean_message_timer.time_start = millis(); clean_message_timer.timer_is_running = true; } void checking_timer() { if ((millis() - clean_message_timer.time_start) >= MAX_WAIT_TIME_FOR_EXECUTE_MESSAGE) { clean_all_after_execute_cmd(); } } void choose_direction() { int8_t status; /* Check if have command*/ if ((phone_message.is_copied == true) && (phone_message.is_executed == false)) { if (strcmp(phone_message.message, BOARD_STOP) == && pre_stop == 0) { stop_car(); Serial.print("Stop Car\n"); use_horn(3, 1000); set_normal_speed(); pre_stop = 1; clean_all_after_execute_cmd(); } else if (strcmp(phone_message.message, BOARD_TURN_RIGHT) == && eye_status[0] == true) { Serial.print("CMD right\n"); turn_left(); delay(750); pre_stop = 0; clean_all_after_execute_cmd(); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 68 PHỤ LỤC } else if (strcmp(phone_message.message, BOARD_TURN_LEFT) == && eye_status[4] == true) { Serial.print("CMD left\n"); turn_right(); delay(750); pre_stop = 0; clean_all_after_execute_cmd(); } else if (strcmp(phone_message.message, BOARD_FAST) == 0) { set_fast_speed(); Serial.print("CMD fast\n"); pre_stop = 0; clean_all_after_execute_cmd(); } else if (strcmp(phone_message.message, BOARD_NORMAL) == 0) { set_normal_speed(); Serial.print("CMD normal\n"); pre_stop = 0; clean_all_after_execute_cmd(); } } status = check_eye_status(); make_decision(status); } void clean_all_after_execute_cmd() { clean_buffer(); phone_message.is_executed = true; phone_message.is_copied = false; strcpy(phone_message.message, ""); strcpy(mess_data, ""); // Turn off timer BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 69 PHỤ LỤC clean_message_timer.timer_is_running = false; index_mess = 0; } void make_decision(int8_t status) { switch (status) { case LEFT_4: turn_right(); break; case LEFT_3: turn_right(); break; case LEFT_2: turn_right(); break; case LEFT_1: turn_right(); break; case MIDDLE: go_straight(); break; case RIGHT_1: turn_left(); break; case RIGHT_2: turn_left(); break; case RIGHT_3: turn_left(); BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP – Y SINH 70 PHỤ LỤC break; case RIGHT_4: turn_left(); break; default: break; } } uint8_t check_eye_status() { uint8_t result = 0; result += (uint8_t)eye_status[4]; result += (uint8_t)eye_status[3]