Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 99 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
99
Dung lượng
3,56 MB
Nội dung
ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CƠ KHÍ ĐỒ ÁN TỐT NGHIỆP CHUYÊN NGÀNH: KỸ THUẬT CƠ ĐIỆN TỬ ĐỀ TÀI: THIẾT KẾ, CHẾ TẠO HỆ THÁP TRỒNG RAU THÔNG MINH Người hướng dẫn : TS NGUYỄN DANH NGỌC Sinh viên thực : HUỲNH TẤN BẢO NGUYỄN HỮU THỌ Số thẻ sinh viên : 101140174 101140201 Lớp : 14CDT2 Đà Nẵng, 2019 TÓM TẮT ĐỒ ÁN TỐT NGHIỆP Tên đề tài: THIẾT KẾ VÀ CHẾ TẠO THÁP TRỒNG RAU THÔNG MINH Sinh viên thực hiện: Huỳnh Tấn Bảo Nguyễn Hữu Thọ Tóm tắt đề tài: MSSV: 101140174 MSSV: 101140201 Lớp 14CDT2 Lớp 14CDT2 Tháp trồng rau thông minh hệ thống tự động hóa tạo để trợ giúp người việc làm nơng nghiệp Mơ hình vườn rau thiết kế dạng tháp hình trụ nhiều tầng, số tầng thay đổi, cho phép lắp đặt phòng, giải tốn khơng gian Mỗi tầng tháp có chậu đất lớn ghép từ chậu đất nhỏ hình quạt cho phép người dùng dễ dàng tháo rời chậu đất Ngồi tháp quay theo trục đứng giúp người dùng thu hoạch rau thuận tiện Việc sử dụng mơ hình trồng rau thơng qua phần mềm máy tính vơ đơn giản Người dùng cần nhập thơng số chăm sóc cho loại (thời gian tưới nước, độ ẩm tối thiểu, …) nạp liệu xuống mơ hình, việc cịn lại hệ thống từ động chăm sóc Người dùng điều khiển hệ thống cách thủ công cách kéo thả điểm làm việc tới vị trí xác định, hệ thống di chuyển đầu cơng tác tới vị trí tương ứng thực thao tác tưới nước hay đo độ ẩm tùy thuộc vào yêu cầu người sử dụng Người dùng can thiệp đến hệ thống muốn điều khiển trực tiếp cập nhật lại liệu chăm sóc Nhược điểm tháp trồng rau thơng minh áp dụng vào mơ hình nông nghiệp nhỏ tiêu tốn nhiều điện Vấn đề khắc phục tương lai CỘNG HỊA XÃ HƠI CHỦ NGHĨA VIỆT NAM ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA CƠ KHÍ Độc lập - Tự - Hạnh phúc NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP TT Họ tên sinh viên Số thẻ SV Lớp Khoa Ngành Huỳnh Tấn Bảo 101140174 14CDT2 Cơ khí Cơ điện tử Nguyễn Hữu Thọ 101140201 14CDT2 Cơ khí Cơ điện tử Tên đề tài: “THIẾT KẾ VÀ CHẾ TẠO THÁP TRỒNG RAU THÔNG MINH” Đề tài thuộc diện: ☐ Có ký kết thỏa thuận sở hữu trí tuệ kết thực Các số liệu liệu ban đầu: Nội dung phần thuyết minh tính tốn: a Phần chung: TT Họ tên sinh viên Huỳnh Tấn Bảo Nội dung - lựa chọn hệ thống phù hợp để thiết kế - Tìm hiểu số loại hệ thống trồng rau thực tế Nguyễn Hữu Thọ - Đưa nguyên lí, lựa chọn phương án phù hợp để thiết kế Thi công hệ thống thực tế b Phần riêng TT Họ tên sinh viên Nội dung Huỳnh Tấn Bảo Tìm hiểu code điều khiển Nguyễn Hữu Thọ Hồn thành thuyết minh Các vẽ, đồ thị ( ghi rõ loại kích thước vẽ ): a Phần chung: TT Họ tên sinh viên Nội dung Huỳnh Tấn Bảo Bản vẽ mạch điện 1A0 Nguyễn Hữu Thọ Bản vẽ sơ đồ khối 1A0 b Phần riêng: TT Họ tên sinh viên Huỳnh Tấn Bảo Nguyễn Hữu Thọ Nội dung Bản vẽ tổng thể 1A0 Bản vẽ lắp 1A0 Bản vẽ sơ đồ động 1A0 Bản vẽ lưu đồ thuật toán 1A0 Họ tên người hướng dẫn: TS Nguyễn Danh Ngọc Ngày giao nhiệm vụ đồ án: Ngày hoàn thành đồ án: 01 /02 /2019 01 /06 /2019 Đà Nẵng, ngày Trưởng Bộ môn Cơ điện tử tháng năm 2019 Người hướng dẫn TS Nguyễn Danh Ngọc LỜI NĨI ĐẦU Để hồn thành đồ án này, em xin gửi lời cảm ơn chân thành tới thầy cô giáo tận tình hướng dẫn, giảng dạy em suốt qua trình học tập rèn luyện trường Đại học Bách khoa – Đại học Đà Nẵng Em xin chân thành gửi lời cảm ơn đến thầy giáo hướng dẫn TS Nguyễn Danh Ngọc người trực tiếp hướng dẫn tận tình, chu em hồn thành tốt đồ án tốt nghiệp Mặc dù có nhiều cố gắng để thực đồ án tốt nghiệp cách hoàn chỉnh thời gian đầu làm quen với thực tế hạn chế kiến thức kinh nghiệm làm việc nên tránh khỏi sai sót định.Em mong giúp đỡ dẫn quý Thầy giáo để đồ án chúng em hoàn thiện Em xin chân thành cảm ơn! Đà Nẵng, ngày 01 tháng 06 năm 2019 Sinh viên thực đồ án Huỳnh Tấn Bảo i Nguyễn Hữu Thọ CAM ĐOAN Kính gửi: - Trường Đại học Bách khoa – Đại học Đà Nẵng - Khoa Cơ khí Chúng xin cam đoan đồ án tốt nghiệp “Thiết kế chế tạo tháp trồng rau thông minh” cơng trình nghiên cứu chúng tơi Các tài liệu sử sử dụng đồ án nêu rõ phần tài liệu tham khảo Các số liệu, kết tính tốn hồn tồn trung thực, sai tơi xin chịu hồn tồn trách nhiệm chịu kỷ luật khoa nhà trường Sinh viện thực Huỳnh Tấn Bảo ii Nguyễn Hữu Thọ MỤC LỤC NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP LỜI NÓI ĐẦU i CAM ĐOAN ii DANH SÁCH CÁC BẢNG, HÌNH VẼ v DANH SÁCH CÁC KÝ HIỆU, CHỮ VIẾT TẮT .vii MỞ ĐẦU CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI 1.1 Giới thiệu hệ thống trồng rau thông minh nhà 1.2 Mơ hình tháp trồng rau thơng minh CHƯƠNG 2: THIẾT KẾ VÀ GIA CƠNG CƠ KHÍ 2.1 Ý đồ thiết kế 2.2 Thiết kế 2.2.1 Tháp xoay 2.2.2 Cơ cấu cánh tay CHƯƠNG 3: THIẾT KẾ HỆ THỐNG ĐIỀU KHIỂN 21 3.1 Sơ đồ khối hệ thống 21 3.2 Linh kiện, thiết bị sử dụng 22 3.2.1 Arduino Mega (điều khiển trung tâm) 22 3.2.2 Cảm biến độ ẩm 23 3.2.3 Động bước 25 3.2.5 Động Servo 29 3.2.6 RTC DS1307 30 3.3 Sơ đồ mạch nguyên lý 32 3.4 Giao tiếp I2C 34 3.5 Giao diện điều khiển với máy tính 35 3.5.1 Giới thiệu Visual Studio 35 3.5.2 Giao diện SAGT 36 3.6 Khối hiển thị 38 3.6.1 Chức 39 iii 3.6.2 3.7 Cách điều khiển 39 Lưu đồ thuật toán 41 CHƯƠNG 4: KẾT LUẬN 43 4.1 Kết đạt 44 4.2 Hướng phát triển đề tài 47 TÀI LIỆU THAM KHẢO 48 PHỤ LỤC I: CHƯƠNG TRÌNH ĐIỀU KHIỂN THÁP TRỒNG RAU 49 PHỤ LỤC II: CHƯƠNG TRÌNH GIAO DIỆN ĐIỀU KHIỂN 63 iv DANH SÁCH CÁC BẢNG, HÌNH VẼ Bảng Thông số động bước 26 Hình 1 Hệ thống trồng rau theo công nghệ AKISAI Hình Mơ hình trồng rau Greenbot Hình Sơ đồ khối sơ mơ hình Hình Tháp chứa rau Hình 2 Mâm xoay Hình Đế tháp rau Hình Bánh nhỏ Hình Bánh lớn Hình Phương pháp truyền động cho tháp rau Hình Nhơm định hình 20 × 40 10 Hình Con lăn bi 10 Hình Mặt trước bàn trượt 11 Hình 10 Bàn trượt nhơm định hình 11 Hình 11 Bộ dây đai pulley GT2 12 Hình 12 Mặt sau bàn trượt 13 Hình 13 Pulley căng đai 13 Hình 14 Nhơm định hình 20 × 20 mm 14 Hình 15 Một phần nhỏ 15 Hình 16 Thanh hoàn chỉnh 15 Hình 17 Miếng đỡ 16 Hình 18 Cơ cấu bánh cánh tay 16 Hình 19 Gá đỡ cánh tay 17 Hình 20 Đồ gá động servo 18 Hình 21 Đồ gá cảm biến đất vòi tưới nước 18 Hình 22 Đầu cơng tác 18 Hình 23 Cơ cấu cánh tay 19 Hình 24 Khung đế 19 Hình 25 Mơ hình tổng qt hệ thống trồng rau thông minh 20 v Hình Sơ đồ khối 21 Hình Cấu tạo Arduino Mega 23 Hình 3 Cảm biến độ ẩm 23 Hình Sơ đồ nguyên lý cảm biến độ ẩm đất 24 Hình Kết nối cảm biến độ ẩm với Arduino 25 Hình Động bước 25 Hình Driver TB6560 26 Hình Module A4988 28 Hình Động servo 29 Hình 10 Module thời gian thực DS1307 30 Hình 11 Module I2C với LCD 31 Hình 12 Sơ đồ mạch điều khiển 33 Hình 13 Sơ đồ nguồn tín hiệu đầu vào 33 Hình 14 Sơ đồ mạch cho hộp điều khiển 34 Hình 15 Đường truyền I2C thiết bị ngoại vi 35 Hình 16 Giao diện điều khiển hệ thống 36 Hình 17 Kết nối với cổng COM 37 Hình 18 Điều khiển đầu cơng tác 37 Hình 19 Khu vực cài đặt mùa vụ 38 Hình 20 Khu vực cài đặt thời gian tưới nước 38 Hình 21 Bảng điều khiển 39 Hình 22 Menu hiển thị thời gian 39 Hình 23 Menu loại mùa vụ 40 Hình 24 Menu cài đặt thông số cho loại 40 Hình 25 Menu thao tác thủ công với hệ thống 40 Hình 26 Lưu đồ thuật tốn cho chương trình 42 Hình 27 Lưu đồ thuật tốn điều khiển 43 Hình Tồn mơ hình 45 Hình Đế khung 45 Hình Cơ cấu cánh tay 46 Hình 4 Hộp chứa mạch điện 46 vi Thiết kế chế tạo tháp trồng rau thông minh { if (tbSeasonName.Text == "") return; LoadingSeason = LoadingDatabaseXml.CreateSeason(tbSeasonName.Text); cbSeasonName.SelectedIndex = cbSeasonName.Items.Add(LoadingSeason.N); btLoadSeason_Click(null, null); tbSeasonName.Text = ""; } private void btDelet_Click(object sender, EventArgs e) { if (cbSeasonName.Text == "" || cbSeasonName.Items.Count == 0) return; LoadingDatabaseXml.DeleteSeason(cbSeasonName.Text); cbSeasonName.Items.RemoveAt(cbSeasonName.SelectedIndex); if (cbSeasonName.Items.Count > 0) { cbSeasonName.SelectedIndex = 0; } else { cbSeasonName.Text = ""; tbTreeName.Text = ""; tbTempForWater.Text = ""; tbHumiForFan.Text = ""; RemoveAllTimeControls(); SVTH: Huỳnh Tấn Bảo Nguyễn Hữu Thọ GVHD: TS Nguyễn Danh Ngọc 74 Thiết kế chế tạo tháp trồng rau thông minh LoadingSeason = null; } } public void FindFamrBotPort() { foreach (String connectPortName in SerialPort.GetPortNames()) { SerialPort serialPort = new SerialPort(this.components); serialPort.PortName = connectPortName; serialPort.BaudRate = 9600; try { serialPort.Open(); } catch { continue; } SerialPortList.Add(serialPort); serialPort.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(this.ReceiveDataFromSerialPort); serialPort.WriteLine("IsFarmBot"); } Thread closePortsThread = new Thread(ClosePorts); closePortsThread.Start(); } SVTH: Huỳnh Tấn Bảo Nguyễn Hữu Thọ GVHD: TS Nguyễn Danh Ngọc 75 Thiết kế chế tạo tháp trồng rau thông minh public void ClosePorts() { this.Invoke((MethodInvoker)delegate() { lbConnectState.Text = ""; }); for (int i = 0; i < 10; i++ ) { this.Invoke((MethodInvoker)delegate() { lbConnectState.Text += "."; }); Thread.Sleep(100); if (IsFarmBotConnected == true) { break; } } this.Invoke((MethodInvoker)delegate() { if (IsFarmBotConnected == false) { lbConnectState.Text = "FarmBot is not Availabel !"; } SVTH: Huỳnh Tấn Bảo Nguyễn Hữu Thọ GVHD: TS Nguyễn Danh Ngọc 76 Thiết kế chế tạo tháp trồng rau thông minh foreach (SerialPort serialPort in SerialPortList) { serialPort.Close(); serialPort.Dispose(); } SerialPortList.Clear(); if (IsFarmBotConnected == true) { FarmBotSerialPort.Open(); ShowMessage("FarmBot on " + FarmBotSerialPort.PortName, 3000); } btConnect.Enabled = true; }); } private void ReceiveDataFromSerialPort(object sender, SerialDataReceivedEventArgs e) { SerialPort portReceived = ((SerialPort)sender); String receiveString; try { receiveString = portReceived.ReadLine(); } catch SVTH: Huỳnh Tấn Bảo Nguyễn Hữu Thọ GVHD: TS Nguyễn Danh Ngọc 77 Thiết kế chế tạo tháp trồng rau thông minh { return; } ShowMessage(receiveString, 1000); if (receiveString.Length >= "YesFarmBot".Length) { if (receiveString.Substring(0, "YesFarmBot".Length) == "YesFarmBot") { FarmBotSerialPort.PortName = portReceived.PortName; this.Invoke((MethodInvoker)delegate() { lbConnectState.Text = "FarmBot is Connected !"; btConnect.Text = "Disconnect"; }); IsFarmBotConnected = true; } } if (receiveString.Length > "Json".Length) { if (receiveString.Substring(0, "Json".Length) == "Json") { receiveString = receiveString.Substring("Json".Length + 1); var serializeObject = new JavaScriptSerializer(); LoadingSeason = serializeObject.Deserialize(receiveString); this.Invoke((MethodInvoker)delegate() { SVTH: Huỳnh Tấn Bảo Nguyễn Hữu Thọ GVHD: TS Nguyễn Danh Ngọc 78 Thiết kế chế tạo tháp trồng rau thông minh UpdateDisplay(); }); ShowMessage("Load Done", 3000); } } } private void btConnect_Click(object sender, EventArgs e) { if (btConnect.Text == "Connect") { FindFamrBotPort(); btConnect.Enabled = false; } else { ShowMessage("FarmBot closed " + FarmBotSerialPort.PortName, 2000); try { FarmBotSerialPort.Close(); } catch { } IsFarmBotConnected = false; btConnect.Text = "Connect"; SVTH: Huỳnh Tấn Bảo Nguyễn Hữu Thọ GVHD: TS Nguyễn Danh Ngọc 79 Thiết kế chế tạo tháp trồng rau thông minh lbConnectState.Text = "FarmBot is disconnected !"; } } public void ShowMessage(String msg, int time) { Thread messageThread = new Thread(() => ProcessMessageThread(msg, time)); messageThread.Start(); } public void ProcessMessageThread(String msg, int time) { this.Invoke((MethodInvoker)delegate() { lbDebug.Text = msg; }); Thread.Sleep(time); this.Invoke((MethodInvoker)delegate() { lbDebug.Text = ""; }); } private void btUpload_Click(object sender, EventArgs e) { if (FarmBotSerialPort.IsOpen == false) SVTH: Huỳnh Tấn Bảo Nguyễn Hữu Thọ GVHD: TS Nguyễn Danh Ngọc 80 Thiết kế chế tạo tháp trồng rau thông minh return; //ShowMessage("Uploading ", 5000); String jsonString = ""; // We will send this tring to Farmbot Control Box var serializeObject = new JavaScriptSerializer(); jsonString = serializeObject.Serialize(LoadingSeason); Season seasonFromJson = serializeObject.Deserialize(jsonString); ShowMessage("Uploading ", 3000); FarmBotSerialPort.WriteLine("Json-" + jsonString); Thread uploadDoneThread = new Thread(SendUploadDoneSignal); uploadDoneThread.Start(); } void SendUploadDoneSignal() { Thread.Sleep(3000); FarmBotSerialPort.WriteLine("UploadDone"); ShowMessage("Upload Done", 2000); } private void pbEndActuator_MouseUp(object sender, MouseEventArgs e) { String gcode = "G00 X" + X_EndActuator.ToString() + " Y" + Y_EndActuator.ToString(); SendGCode(gcode); } SVTH: Huỳnh Tấn Bảo Nguyễn Hữu Thọ GVHD: TS Nguyễn Danh Ngọc 81 Thiết kế chế tạo tháp trồng rau thông minh private void btHome_Click(object sender, EventArgs e) { String gcode = "G28 X Y Z"; X_EndActuator = 0; Y_EndActuator = 0; Z_EndActuator = 0; //SendGCode(gcode); SendGCode("G28 Z"); Thread.Sleep(100); SendGCode("G28 X Y"); UpdatePbEndActuator(); UpdatePositionDisplay(); } private void btX_Click(object sender, EventArgs e) { String gcode = "G28 X"; X_EndActuator = 0; SendGCode(gcode); UpdatePbEndActuator(); UpdatePositionDisplay(); } public void SendGCode(string gcode) { if (IsFarmBotConnected == false) return; SVTH: Huỳnh Tấn Bảo Nguyễn Hữu Thọ GVHD: TS Nguyễn Danh Ngọc 82 Thiết kế chế tạo tháp trồng rau thông minh ShowMessage(gcode, 1000); FarmBotSerialPort.WriteLine(gcode); } private void btY_Click(object sender, EventArgs e) { String gcode = "G28 Y"; Y_EndActuator = 0; SendGCode(gcode); UpdatePbEndActuator(); UpdatePositionDisplay(); } private void btZ_Click(object sender, EventArgs e) { String gcode = "G28 Z"; Z_EndActuator = 0; SendGCode(gcode); UpdatePbEndActuator(); UpdatePositionDisplay(); } private void tbZ_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { int.TryParse(tbZ.Text, out Z_EndActuator); SendGCode("G00 Z" + Z_EndActuator.ToString()); SVTH: Huỳnh Tấn Bảo Nguyễn Hữu Thọ GVHD: TS Nguyễn Danh Ngọc 83 Thiết kế chế tạo tháp trồng rau thông minh UpdatePositionDisplay(); } } private void tbY_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { int.TryParse(tbY.Text, out Y_EndActuator); SendGCode("G00 Y" + Y_EndActuator.ToString()); UpdatePositionDisplay(); UpdatePbEndActuator(); } } private void tbX_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { int.TryParse(tbX.Text, out X_EndActuator); SendGCode("G00 X" + X_EndActuator.ToString()); UpdatePositionDisplay(); UpdatePbEndActuator(); } } private void btPump_Click(object sender, EventArgs e) SVTH: Huỳnh Tấn Bảo Nguyễn Hữu Thọ GVHD: TS Nguyễn Danh Ngọc 84 Thiết kế chế tạo tháp trồng rau thông minh { string gcode = "G41 P" + tbWaterSpendTime.Text; SendGCode(gcode); } private void cbFan_CheckedChanged(object sender, EventArgs e) { string gcode = "G43 F"; if (cbFan.Checked == true) { gcode += "0"; } else { gcode += "1"; } SendGCode(gcode); } private void cbLamp_CheckedChanged(object sender, EventArgs e) { string gcode = "G44 L"; if (cbLamp.Checked == true) { gcode += "0"; } else { gcode += "1"; SVTH: Huỳnh Tấn Bảo Nguyễn Hữu Thọ GVHD: TS Nguyễn Danh Ngọc 85 Thiết kế chế tạo tháp trồng rau thông minh } SendGCode(gcode); } private void cbVaccum_CheckedChanged(object sender, EventArgs e) { string gcode = "G42 V"; if (cbVaccum.Checked == true) { gcode += "1"; } else { gcode += "0"; } SendGCode(gcode); } private void cbSoilSensor_CheckedChanged(object sender, EventArgs e) { string gcode = "G40 S"; if (cbSoilSensor.Checked == true) { gcode += "90"; } else { gcode += "0"; } SVTH: Huỳnh Tấn Bảo Nguyễn Hữu Thọ GVHD: TS Nguyễn Danh Ngọc 86 Thiết kế chế tạo tháp trồng rau thông minh SendGCode(gcode); } private void tbTreeName_KeyDown(object sender, KeyEventArgs e) { if (e.KeyData != Keys.Enter) return; LoadingSeason.T[LoadingTreeIndex].N = tbTreeName.Text; ShowMessage("Edit", 1000); } private void tbTempForWater_KeyDown(object sender, KeyEventArgs e) { if (e.KeyData != Keys.Enter) return; LoadingSeason.T[LoadingTreeIndex].MaxT = int.Parse(tbTempForWater.Text); ShowMessage("Edit", 1000); } private void tbHumiForFan_KeyDown(object sender, KeyEventArgs e) { if (e.KeyData != Keys.Enter) return; LoadingSeason.T[LoadingTreeIndex].MaxH = int.Parse(tbHumiForFan.Text); ShowMessage("Edit", 1000); } SVTH: Huỳnh Tấn Bảo Nguyễn Hữu Thọ GVHD: TS Nguyễn Danh Ngọc 87 Thiết kế chế tạo tháp trồng rau thông minh private void tbHumiForMist_KeyDown(object sender, KeyEventArgs e) { if (e.KeyData != Keys.Enter) return; LoadingSeason.T[LoadingTreeIndex].MinH = int.Parse(tbHumiForMist.Text); ShowMessage("Edit", 1000); } private void button9_Click(object sender, EventArgs e) { if (FarmBotSerialPort.IsOpen == false) return; FarmBotSerialPort.WriteLine("Load"); ShowMessage("Loading ", 1000); } } } SVTH: Huỳnh Tấn Bảo Nguyễn Hữu Thọ GVHD: TS Nguyễn Danh Ngọc 88 ... Ngọc Thiết kế chế tạo tháp trồng rau thơng minh 1.2 Mơ hình tháp trồng rau thơng minh Từ lợi ích thuận tiện mà hệ thống trồng rau mang lại cho người, định thiết kế chế tạo mơ hình trồng rau thơng... Danh Ngọc Thiết kế chế tạo tháp trồng rau thông minh Hình Tháp chứa rau Hình 2 Mâm xoay SVTH: Huỳnh Tấn Bảo Nguyễn Hữu Thọ GVHD: TS Nguyễn Danh Ngọc Thiết kế chế tạo tháp trồng rau thông minh Để... thống trồng rau thông minh nhà 1.2 Mơ hình tháp trồng rau thơng minh CHƯƠNG 2: THIẾT KẾ VÀ GIA CƠNG CƠ KHÍ 2.1 Ý đồ thiết kế 2.2 Thiết kế 2.2.1 Tháp