THIẾT KẾ CHẾ TẠO ROBOT LEO TƯỜNG ỨNG DỤNG TRONG KIỂM TRA BẢO TRÌ NHÀ CAO TẦNG

80 113 0
  • Loading ...
    Loading ...
    Loading ...

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

Tài liệu liên quan

Thông tin tài liệu

Ngày đăng: 26/09/2019, 21:01

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC NÔNG LÂM THÀNH PHỐ HỒ CHÍ MINH KHĨA LUẬN TỐT NGHIỆP THIẾT KẾ CHẾ TẠO ROBOT LEO TƯỜNG ỨNG DỤNG TRONG KIỂM TRA BẢO TRÌ NHÀ CAO TẦNG Họ tên sinh viên: TRẦN DƯƠNG HOAN CHÂU KHÁNH ĐẠT Ngành: CƠ ĐIỆN TỬ Niên khóa: 2014-2018 Tháng 06/2018 THIẾT KẾ CHẾ TẠO ROBOT LEO TƯỜNG ỨNG DỤNG TRONG BẢO TRÌ NHÀ CAO TẦNG Tác giả TRẦN DƯƠNG HOAN CHÂU KHÁNH ĐẠT Khóa luận đệ trình để đáp ứng u cầu Cấp Kỹ sư ngành Cơ điện tử Giáo viên hướng dẫn: (Đã ký) TH.S NGUYỄN TẤN PHÚC Tháng 06 năm 2018 i LỜI CẢM ƠN Sau thời gian dài tháng, hôm ngày: viết lời cảm ơn kết thúc khóa luận chúng em Đây giai đoạn học tập mãnh mẽ chúng em, khơng khoa học mà mức độ cá nhân Quá trình viết luận văn có tác động lớn đến chúng em Chúng em suy nghĩ người ủng hộ giúp đỡ chúng em nhiều suốt thời kỳ Trước tiên chúng em đặc biệt muốn người giám sát, người dẫn lối chúng em chặng đường vừa qua Th.S Nguyễn Tấn Phúc – Giảng viên hướng dẫn khóa luận chúng em Chúng em cảm ơn sâu sắc với thầy, người giúp chúng em có hội tiếp tục nghiên cứu mảng đề tài thú vị đầy ứng dụng khoa Cơ khí – Cơng nghệ, trường đại học Nơng Lâm TP HCM, thầy hướng dẫn có giá trị thầy giúp cho chúng em hoàn thành tốt khóa luận Ngồi chúng em muốn gửi lời cảm ơn đến tồn thể thầy cơ, cán cơng tác khoa Cơ khí – Công nghệ, trường đại học Nông Lâm TP HCM tạo điều kiện thuận lợi cho chúng em q trình viết khóa luận, thiếu sót cần bổ sung ý kiến đóng góp bổ ích Chúng em muốn cảm ơn gia đình, hậu phương vững với lời khuyên bổ ích họ Và đồng cảm ơn đến bạn, anh chị học tập nghiên cứu khoa Cơ khí – Cơng nghệ trường đại học Nơng Lâm TP HCM cho hỗ trợ tuyệt vời bạn, anh chị Mọi người sẵn sàng giúp đỡ đồng hành chúng em nhiều suốt thời gian hồn thành khóa luận Tuy vậy, thời gian chúng em mong nhận đóng góp từ sai sót mắc phải báo cáo Chân thành cảm ơn đến tất người! Thủ Đức, 12 tháng 07, năm 2018 (Đã ký) TRẦN DƯƠNG HOAN ii (Đã ký) CHÂU KHÁNH ĐẠT TÓM TẮT Đề tài nghiên cứu “Thiết kế chế tạo Robot leo tường ứng dụng bảo trì nhà cao tầng” tiến hành khoa Cơ khí – Công nghệ, trường đại học Nông Lâm thành phố Hồ Chí Minh, thời gian từ tháng năm 2018 đến tháng năm 2018 Khóa luận đề cập đến thiết kế mơ hình robot bao gồm thiết kế ban đầu phát triển, chế tạo mơ hình thực tế với điều khiển không dây cầm tay Sử dụng camera để truyền hình ảnh máy tính, nhằm đánh giá lỗi khe hở, nứt, sơn rêu mốc cơng tác bảo trì, bảo dưỡng tòa nhà cao tầng, thiết kế giao diện nhận hình ảnh camera máy tính Khảo nghiệm khả hoạt động robot với thông số hệ thống đo đạc qua cảm biến thông minh robot Điều khiển robot điều khiển cầm tay thu thập hình ảnh từ tòa nhà khn viên trường đại học Nông Lâm TP HCM Kế thu được: Thiết kế chế tạo thành công robot leo tường ứng dụng bảo trì nhà cao tầng iii MỤC LỤC Trang TRANG TỰA i LỜI CẢM ƠN ii TÓM TẮT iii MỤC LỤC iv DANH MỤC HÌNH VÀ BIỂU ĐỒ DANH MỤC BẢNG vi viii CHƯƠNG TỔNG QUAN 1.1 LÝ DO CHỌN ĐỀ TÀI .1 1.2 MỤC TIÊU ĐỀ TÀI 1.3 NỘI DUNG ĐỀ TÀI 1.4 ĐỐI TƯỢNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU 1.5 LỊCH SỬ NGHIÊN CỨU .6 1.5.1 Kết nghiên cứu nước 1.5.2 Kết nghiên cứu giới 1.6 Ý NGHĨA KHOA HỌC THỰC TIỄN 10 1.7 KẾT QUẢ DỰ KIẾN ĐẠT ĐƯỢC .10 CHƯƠNG CƠ SỞ LÝ THUYẾT 11 2.1 TÍNH TỐN LÝ THUYẾT CHO ROBOT .11 2.2 BỘ ĐIỀU KHIỂN PID CHO ROBOT 14 2.2.1 Bộ điều khiển PID 14 2.2.2 Giải thuật điều khiển PID 14 2.2.3 Lý thuyết điều khiển PID 15 2.2.3 Ứng dụng PID điều khiển Robot với Arduino động Encoder 20 2.3 SƠ LƯỢC VỀ LỊCH SỬ RA ĐỜI CỦA VI SỬ LÝ ARDUINO 21 2.5 MẠCH ĐIỀU KHIỂN ESP8266 23 2.5.1 Sơ lược Wi-Fi 23 2.5.2 Giao thức truyền nhận liệu TCP/IP 2.5.1 AI Thinker ESP8266 24 iv 23 2.4 CƠ CẤU ROBOT 25 2.4.1 Mạch điều khiển Arduino Pro Micro 25 2.4.2 ESP Wemos D1 mini 26 2.4.4 Động quạt hút không chổi than 28 2.4.3 Động mini hộp số kim loại 12V 29 2.4.5 Camera IP – Camera truyền hình ảnh qua Wi-Fi 32 CHƯƠNG VẬT LIỆU VÀ PHƯƠNG PHÁP NGHIÊN CỨU 33 3.1 CHỌN LỰA VẬT LIỆU THIẾT KẾ KHUNG XE 33 3.1.1 Mẫu thiết kế Robot leo tường giai đoạn nghiên cứu khoa học 3.1.2 Chọn vật liệu làm khung Robot 33 34 3.1.3 Hoàn thiện thiết kế hồi tiếp báo mức pin 36 3.2 PHƯƠNG ÁN THIẾT KẾ BỘ PHẬN ĐIỀU KHIỂN 38 3.2.1 Giải thuật điều khiển Robot leo tường 38 3.2.2 Sơ đồ nguyên lý mạch điều khiển Robot leo tường 40 3.3 THIẾT KẾ CƠ KHÍ ROBOT VÀ BỘ ĐIỀU KHIỂN 41 3.3.1 Thiết kế khí khung Robot leo tường 41 3.3.2 Thiết kế khí điều khiển cầm tay Robot leo tường 42 CHƯƠNG KẾT QUẢ VÀ THẢO LUẬN 46 4.1 KẾT QUẢ 46 4.1.1 Hình ảnh thu nhận từ Robot máy tính qua phần mềm 47 4.2 KHẢO NGHIỆM 49 CHƯƠNG KẾT LUẬN VÀ KIẾN NGHỊ 50 TÀI LIỆU THAM KHẢO PHỤ LỤC 51 52 v DANH MỤC HÌNH VÀ BIỂU ĐỒ Hình 1.1 Robot giảng dạy (trái) thám hiểm (phải) Hình 1.2 Tường bị xuống cấp, rêu mốc .2 Hình 1.3 Flying Robot (trái), Climbing Robot (phải) Hình 1.4 Một số mẫu robot leo tường Hình 1.5 Cơng nhân sơn tường tòa nhà cao tầng Hình 1.6 Robot lau kính nhà cao tầng ĐHLH thực Hình 1.7 Các mẫu Robot City-Climber .7 Hình 1.8 Robot stickybot (trái) Robot Rise (phải) Hình 1.9 Robot ROCR Hình 1.10 Robot doAmir Shapiro thiết kế 10 Hình 2.1 Phân tích lực cho Robot leo tường 11 Hình 2.2 Mơ hình tọa độ Robot 13 Hình 2.3 Sơ đồ khối điều khiển PID 14 Hình 2.4 Đồ thị Hình 2.5 Đồ thị theo thời gian, ba giá trị ( số) 16 theo thời gian, tương ứng với giá trị ( không đổi) 17 Hình 2.6 Đồ thị theo thời gian, tương ứng với giá trị ( khơng đổi)19 Hình 2.7 Sơ đồ khối PID điều khiển động DC Servo 20 Hình 2.8 Mạch Arduino Uno R3 22 Hình ESP-12F hàn breakout board .24 Hình 2.10 Pinout Arduino Pro Micro 25 Hình 2.11 Wemos D1 Mini Thực tế 26 Hình 2.12 Pinout Wemos D1 Mini 27 Hình 2.13 Động hút không chổi than 28 Hình 2.14 Điều khiển ESC (trái), pin Lipo (phải) .28 Hình 2.15 Động Mini hộp số kim loại bánh xe phù hợp 29 Hình 2.16 Đặc tính mong muốn hệ truyền động kéo 31 vi Hình 2.17 Camera IP mini hoạt động pin phát sóng Wi-Fi cự ly lớn 32 Hình 3.1 Mẫu Robot giai đoạn nghiên cứu khoa học .33 Hình 3.2 Mẫu thiết kế với khung Mica khuyết điểm dây dẫn 34 Hình 3.3 Sơ đồ nguyên lý mạch chủ Robot leo tường .35 Hình 3.4 Sơ đồ mạch chia áp đọc điện áp 36 Hình 3.5 Layout mạch chủ Robot leo tường .37 Hình 3.6 Hình ảnh mạch chủ Robot sau hồn thiện 38 Hình 3.7 Sơ đồ giải thuật điều khiển Robot leo tường 39 Hình 3.8 Sơ đồ đọc tín hiệu từ Joystick .40 Hình 3.9 Sơ đồ nguyên lý tổng kết điều khiển Robot leo tường 40 Hình 3.10 Hình ảnh Joystick tích hợp nút nhấn 41 Hình 3.11 Thiết kế khí khung Robot leo tường 41 Hình 3.12 Khung Robot leo tường sau lắp ghép linh kiện thực tế 42 Hình 3.13 Khung điều khiển Robot leo tường 43 Hình 3.14 Màn hình OLED 1.3 Inchs I2C tích hợp điều khiển 43 Hình 3.15 Bộ điều khiển sau hoàn thành .44 Hình 3.16 Cài đặt thơng số tay điều khiển 45 Hình 4.1 Robot hồn thiệu sau kết nối Camera anten thu sóng 46 Hình 4.2 Robot trình vận hành thử nghiệm 47 Hình 4.3 Hình ảnh Robot ghi lại trình vận hành .48 Để vii DANH MỤC BẢNG Bảng 2.1 Thông số kỹ thuật Arduino Pro Micro 26 Bảng 4.1 Bảng thông số hệ thống sau hoàn thành .49 viii CHƯƠNG TỔNG QUAN 1.1 Lý chọn đề tài Ngày nay, Robot học đạt thành tự to lớn công nghiệp, kinh tế, y tế, giáo dục, khảo sát, quan sát, quân Bên cạnh tay robot có khả làm việc với tốc độ cao xác liên tục làm tăng suất kinh tế nhiều lần, robot với kích thước nhỏ, xác làm việc sở y tế lớn giới, robot giáo dục dần triển khai trường học lớn Các Robot khảo sát, quan sát ứng dụng rộng rãi quan sát, khảo sát giới Robot khảo sát mặt trăng, hỏa, Robot thám hiểm đáy biển, đại dương, Robot làm việc mơi trường khắc nghiệt, robot dò mìn, v.v Hình 1.1 Robot giảng dạy (trái) thám hiểm (phải) Robot nghiên cứu nhiều để phần thay sức lao động người Tuy nhiên có vấn đề đặt thách thức kỹ sư chế tạo Robot, phải thiết kế dòng Robot leo tường, trần nhà, để làm công việc kiểm tra kết cấu kiến trúc, điều kiện ẩm mốc, bề mặt vật liệu tòa nhà cao tầng, vị trí khó di chuyển đến Các cơng việc trước phải thực thủ công sức người, việc khảo sát trở nên khó khăn vị trí tòa nhà cao tầng việc TÀI LIỆU THAM KHẢO Tiếng Việt [1] Nguyễn Ngọc Cẩn, Kỹ thuật điều khiển tự động, Nhà xuất Đại học Quốc gia Thành Phố Hồ Chí Minh [2] GS.TS Nguyễn Trọng Hiệp Nguyễn Văn Lẫm, Thiết kế chi tiết máy, Nhà xuất Giáo dục 2003 [3] Trần Hữu Quế, Vẽ kỹ thuật khí, Nhà xuất giáo dục 2002 [4] Dương Minh Trí, Linh kiện điện tử, Nhà xuất Khoa học kỹ thuật 2004 [5] ThS Nguyễn Tấn Phúc Trần Dương Hoan, Thiết kế chế tạo mơ hình robot leo tường – Trần nhà, Tạp chí Khoa học Kỹ thuật Nơng Lâm nghiệp 2018 Tiếng nước [6] Theo Michael Margolis, Arduino Cookbook, 2011 [7] Love P K., Jason G., Max Meng A Wall Climbing Robot for Oil Tank Inspection In: Proceedings of IEEE International Conference on Robotics and Biomimetics, pp 1523-1528 [8] Nishi A., Miyagi H Propeller type wall-climbing robot for inspection use In: Proc.10th Int Symp on Automation and Robots in Construction (ISARC) [9] Rita Jelai Johnson and Mohd Helmi Suid, Pressure Control of Wall Climbing Robot Using PID Controller, 2015 [10] Weimin S., Jason G, Proposed Wall Climbing Robot with Permanent Magnetic Tracks for Inspecting Oil Tanks In: Proceedings of IEEE International Conference on Mechatronics & Automation, pp.2072-2077 [11] W Richard Stevens The Protocols (TCP/IP Illustrated, Volume 1) Addison-Wesley Professional; 1st edition (ngày 31 tháng 12 năm 1993) ISBN 0-20163346-9 PHỤ LỤC MÃ NGUỒN BỘ ĐIỀU KHIỂN /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% * % PROJECT MECHNLU WALLBOT - NONG LAM UNIVERSITY HO CHI MINH CITY % * %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% * This product create by Team Mechatronics DH14CD * - TRAN DUONG HOAN 14153016 * - CHAU KHANH DAT 14153011 * Begin in August 5, 2017 * All code publish in https://portal.edu.vn key Wall-Bot * -#include #include "SH1106Wire.h" #include ; #include #include "image.h" * * * * * * * * * */ String menuHome[10] = {"- MechNLU WallBot Menu -", "Wifi Config", "Set EDF/PWM", "System parameters", "About us", "Exit"}; String menuWifi[10] = {"- Wifi Config -", "Set SSID", "Set Password", "Exit"}; String menuSystem[10] = {"- System Config -", "Set VRef", "Resistors", "Wheel diameter", "PPR define", "Differrence", "Battery warning", "Exit"}; String menuRes[10] = {"- Resistor Config -", "Limit resistor", "Load resistor", "Exit"}; String menuBat[10] = {"- Battery Config -", "Highest voltage", "Lowest Voltage", "Voltage warning", "Exit"}; String menuSpeed[10] = {"- Speed Config -", "Set EDF value", "Set max of PWM", "Exit"}; String menuList[10] = menuHome; byte numItem = 5; byte item = 1; bool Is_Connecting = false; SH1106Wire display(0x3c, D3, D4); #define #define #define #define #define #define #define #define #define #define byte menu = 0; BT1 D2 BT2 D5 BT3 D1 YSC D0 XSC D6 JSK A0 DOWN UP LEFT RIGHT short int x_value = 0; short int y_value = 0; short int x_tmp = 0; short int y_tmp = 0; IPAddress server_ip(192, 168, 4, 1); WiFiClient client; #define PORT 1102 float vr; float r1; float r2; float vmin; float vmax; float valr; int EDF_SPEED; byte max_PWM; byte error_PWM; int PPR; float Dr; void setup() { Serial.begin(115200); EEPROM.begin(512); // put your setup code here, to run once: pinMode(BT1, INPUT_PULLUP);pinMode(BT2, INPUT_PULLUP); pinMode(BT3, INPUT_PULLUP);pinMode(JSK, INPUT); pinMode(YSC, OUTPUT); pinMode(XSC, OUTPUT); digitalWrite(YSC, 0); digitalWrite(XSC, 1); display.init(); display.flipScreenVertically(); display.setFont(ArialMT_Plain_10); WifiConnect(); display.clear(); display.setTextAlignment(TEXT_ALIGN_LEFT); display.setFont(ArialMT_Plain_10); vr = EEPROM.read(101) + r1 = EEPROM.read(102) + r2 = EEPROM.read(103) + vmax = EEPROM.read(105) vmax /= 100; vmin = EEPROM.read(106) vmin /= 100; valr = EEPROM.read(107) valr /= 100; vr /= 100; r1 /= 10; r2 /= 10; } 300; 450; 700; + 1200; + 900; + 900; EDF_SPEED = EEPROM.read(100) * 10; max_PWM = EEPROM.read(120); error_PWM = EEPROM.read(108); Dr = EEPROM.read(104) + 3250; Dr /= 100; PPR = EEPROM.read(109); PPR = 2000 + PPR * 5; #include #include #include #include "res.h" "syst.h" "vol.h" "wifi.h" void WifiConnect() { static unsigned long timer_connect = millis(); static byte numc = 1; if (Is_Connecting) { if (millis() - timer_connect > 500) { if (WiFi.status() != WL_CONNECTED) { display.clear(); display.setTextAlignment(TEXT_ALIGN_LEFT); display.drawString(15, 0, "MechNLU WallBot 3.5"); clearRow(50); if (numc == 1) { display.drawString(23, 50, "Wifi - Connecting."); } else if (numc == 2) { display.drawString(23, 50, "Wifi - Connecting "); } else if (numc == 3) { display.drawString(23, 50, "Wifi - Connecting "); } else if (numc == 4) numc = 0; numc++; display.drawXbm(34, 14, WiFi_Logo_width, WiFi_Logo_height, WiFi_Logo_bits); display.display(); } else { clearRow(0); display.drawString(13, 0, "WallBot is ready to go"); clearRow(50); String msg = "IP address: "; msg += WiFi.localIP().toString(); display.drawString(10, 50, msg); display.display(); delay(2000); Is_Connecting = false; } timer_connect = millis(); } } } else { WiFi.mode(WIFI_STA); WiFi.disconnect(true); String chSSID = ""; for (byte i = 0; i < 16; i++) { byte tmp = EEPROM.read(i); if (tmp >= 32 && tmp = 32 && tmp 1) item ; } xy_read(); display.display(); } } byte checkChoose() { static bool stt[] = {0, 0, 0, 0}; if (y_value < 5) stt[1] = 0; if (y_value > -5) stt[0] = 0; if (x_value < 5) stt[3] = 0; if (x_value > -5) stt[2] = 0; bool change = 0; if (y_value >= && !stt[1]) { stt[1] = 1; change = 1; } if (y_value = && !stt[3]) { stt[3] = 1; change = 1; } if (x_value 3) { rowchoose -= 3; } fillRow(rowchoose * 14 + 5); display.setColor(BLACK); display.drawString(5, rowchoose * 14 + 5, menuList[item]); display.setColor(WHITE); display.display(); } char * TimeToString(unsigned long t) { static char str[12]; long h = t / 3600; t = t % 3600; int m = t / 60; int s = t % 60; if (h > 999) sprintf(str, "%04d:%02d:%02d", h, m, s); else if (h > 99) sprintf(str, "%03d:%02d:%02d", h, m, s); else sprintf(str, "%02d:%02d:%02d", h, m, s); return str; } void loop() { //btn_check(); //if (Is_Menu) return; if (WiFi.status() == WL_CONNECTED && !Is_Connecting) { static unsigned long timerRSSI = millis(); if (millis() - timerRSSI > 1000) { //showRSSI(getBarsSignal(WiFi.RSSI())); timerRSSI = millis(); } while (!client.connected()) { if (!client.connect(server_ip, PORT)) { Serial.println("connection failed"); delay(1000); return; } else { client.println("R=0|0"); display.clear(); } } if (client.available()) { static String str = ""; char c = client.read(); str += c; if (c == '\r') { str.replace("\r", ""); str.replace("\n", ""); float bat = str.substring(0, str.indexOf("|")).toFloat(); bat = vr * (bat / 1023); bat = bat / r1 * (r1 + r2); String msg = "Battery: "; msg += constrain(int((bat - vmin) / (vmax - vmin) * 100), 0, 100); msg += "% "; if (bat < valr) msg += "(Running out)"; clearRow(0); display.drawString(0, 0, msg); static float old_d1 = 0; static float old_d2 = 0; static float d = 0; str = str.substring(str.indexOf("|") + 1); float d1 = str.substring(0, str.indexOf("|")).toFloat(); str = str.substring(str.indexOf("|") + 1); float d2 = str.substring(0, str.indexOf("|")).toFloat(); float dp = float((abs(d1 - old_d1) + abs(d2 - old_d2)) / 2) / PPR * Dr * 3.14 / 10; d += dp; old_d1 = d1; old_d2 = d2; msg = "Moved: "; msg += d; msg += " cm"; clearRow(15); display.drawString(0, 15, msg); msg = "Speed: "; msg += dp; msg += " cm/s"; clearRow(30); display.drawString(0, 30, msg); msg = "Timer: "; msg += TimeToString(millis()/1000); clearRow(45); display.drawString(0, 45, msg); display.display(); str = ""; } } if (keyDown(BT1)) { client.print("E="); client.println(EDF_SPEED); } if (keyDown(BT2)) { client.println("E=1000"); } if (keyDown(BT2)) { client.println("R=0|0"); } xy_read(); if (x_tmp != x_value || y_tmp != y_value) { float lpwm = constrain(y_value + x_value, -10, 10); float rpwm = constrain(y_value - x_value, -10, 10); lpwm = map(lpwm, -10, 10, -max_PWM, max_PWM); rpwm = map(rpwm, -10, 10, -max_PWM, max_PWM); rpwm = rpwm < ? rpwm + error_PWM : rpwm - error_PWM; String str = "R="; str += lpwm; str += "|"; str += rpwm; client.println(str); x_tmp = x_value; y_tmp = y_value; } } else { if (keyDown(BT3)) { showMenu(); } WifiConnect(); } // put your main code here, to run repeatedly: display.display(); } void xy_read() { static bool read_x = true; static unsigned long timer = millis(); if (millis() - timer > 10 && read_x) { int tmp = 0; for (byte i = 0; i < 5; i++) { tmp += analogRead(A0); } x_value = map(tmp / 5, 0, 1024, -10, 10); digitalWrite(YSC, 1); digitalWrite(XSC, 0); read_x = false; timer = millis(); } if (millis() - timer > 10 && !read_x) { int tmp = 0; for (byte i = 0; i < 5; i++) { tmp += analogRead(A0); } y_value = map(tmp / 5, -20, 1024, 10, -10); digitalWrite(XSC, 1); digitalWrite(YSC, 0); read_x = true; timer = millis(); } } bool isPress(byte bt) { return digitalRead(bt); } bool keyDown(byte bt) { static bool keyDown[3] = {0, 0, 0}; static unsigned long timer = millis(); if (millis() - timer < 1) return false; timer = millis(); if (!digitalRead(BT1)) keyDown[0] = 0; if (!digitalRead(BT2)) keyDown[1] = 0; if (digitalRead(BT3)) keyDown[2] = 0; if (bt == BT1 && digitalRead(BT1) && !keyDown[0]) { keyDown[0] = 1; return 1; } if (bt == BT2 && digitalRead(BT2) && !keyDown[1]) { keyDown[1] = 1; return 1; } if (bt == BT3 && !digitalRead(BT3) && !keyDown[2]) { keyDown[2] = 1; return 1; } return false; } bool keyUP(byte bt) { static bool keyUp[3] = {0, 0, 0}; static unsigned long timer = millis(); if (millis() - timer < 1) return false; timer = millis(); if (digitalRead(BT1)) keyUp[0] = 0; if (digitalRead(BT2)) keyUp[1] = 0; if (!digitalRead(BT3)) keyUp[2] = 0; if (bt == BT1 && !digitalRead(BT1) && !keyUp[0]) { keyUp[0] = 1; return 1; } if (bt == BT2 && !digitalRead(BT2) && !keyUp[1]) { keyUp[1] = 1; return 1; } if (bt == BT3 && digitalRead(BT3) && !keyUp[2]) { keyUp[2] = 1; return 1; } return false; } PHỤ LỤC MÃ NGUỒN ROBOT LEO TƯỜNG /* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% * % PROJECT MECHNLU WALLBOT - NONG LAM UNIVERSITY HO CHI MINH CITY % * %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% * This product create by Team Mechatronics DH14CD * - TRAN DUONG HOAN 14153016 * - CHAU KHANH DAT 14153011 * Begin in August 5, 2017 * Using Encoder Library https://github.com/PaulStoffregen/Encoder * -#include #include Servo EDF; Encoder lEnc(7, 2); #define #define #define #define #define #define #define Encoder rEnc(3, 4); BAT A0 L1 10 L2 16 R1 14 R2 15 LM RM void setup() { Serial1.begin(115200); EDF.attach(9); delay(3000); EDF.writeMicroseconds(1000); pinMode(BAT, INPUT); pinMode(L1, OUTPUT); pinMode(L2, OUTPUT); pinMode(R1, OUTPUT); pinMode(R2, OUTPUT); pinMode(RM, OUTPUT); pinMode(LM, OUTPUT); } void loop() { String recv; static unsigned long int mill = millis(); if (millis() - mill >= 1000) { Serial1.print(analogRead(BAT)); Serial1.print("|"); Serial1.print(lEnc.read()); Serial1.print("|"); Serial1.println(-rEnc.read()); mill = millis(); } if (Serial1.available()) recv = Serial1.readStringUntil('\r'); recv.replace("\r", ""); recv.replace("\n", ""); if (recv.substring(0, 2) == "E=") { EDF.writeMicroseconds(recv.substring(2).toInt()); } if (recv.substring(0, 2) == "R=") { recv = recv.substring(2); digitalWrite(L1, recv.substring(0, 1) == "-"); digitalWrite(L2, recv.substring(0, 1) != "-"); analogWrite(LM, byte(abs(recv.substring(0, recv.indexOf("|")).toFloat()))); recv = recv.substring(recv.indexOf("|") + 1); digitalWrite(R1, recv.substring(0, 1) != "-"); digitalWrite(R2, recv.substring(0, 1) == "-"); analogWrite(RM, byte(abs(recv.toFloat()))); } } * * * * * * * * * */ PHỤ LỤC PHỤ LỤC PHỤ LỤC ... thập hình ảnh từ tòa nhà khuôn viên trường đại học Nông Lâm TP HCM Kế thu được: Thiết kế chế tạo thành công robot leo tường ứng dụng bảo trì nhà cao tầng iii MỤC LỤC Trang TRANG TỰA i LỜI CẢM...THIẾT KẾ CHẾ TẠO ROBOT LEO TƯỜNG ỨNG DỤNG TRONG BẢO TRÌ NHÀ CAO TẦNG Tác giả TRẦN DƯƠNG HOAN CHÂU KHÁNH ĐẠT Khóa luận đệ trình để đáp ứng yêu cầu Cấp Kỹ sư ngành Cơ... dàng tường, trần nhà sử dụng camera để đánh giá lỗi khe hỏ, nứt, sơn rêu móc cơng tác bảo trì, bảo dưỡng tòa nhà cao tầng 1.3 Nội dung đề tài Nhiệm vụ đề tài: Thiết kế, chế tạo Robot leo tường,
- Xem thêm -

Xem thêm: THIẾT KẾ CHẾ TẠO ROBOT LEO TƯỜNG ỨNG DỤNG TRONG KIỂM TRA BẢO TRÌ NHÀ CAO TẦNG, THIẾT KẾ CHẾ TẠO ROBOT LEO TƯỜNG ỨNG DỤNG TRONG KIỂM TRA BẢO TRÌ NHÀ CAO TẦNG, 1 Lý do chọn đề tài, 5 Lịch sử nghiên cứu, Chương 2 CƠ SỞ LÝ THUYẾT, 1 Tính toán lý thuyết cho Robot, 2 Bộ điều khiển PID cho Robot, 5 Mạch điều khiển ESP8266, Chương 3 VẬT LIỆU VÀ PHƯƠNG PHÁP NGHIÊN CỨU, 1 Chọn lựa vật liệu thiết kế khung xe, 2 Phương án thiết kế bộ phận điều khiển, 3 Thiết kế cơ khí Robot và bộ điều khiển, 4 Lập trình nền cho bộ điều khiển và Robot, Chương 4 KẾT QUẢ VÀ THẢO LUẬN, TÀI LIỆU THAM KHẢO

Từ khóa liên quan

Mục lục

Xem thêm