Các linh kiện cụ thể
Arduino UNO R3
Một board mạch chủ chính dùng để truyền và nhận dữ liệu từ người sử dụng đến các thiết bị điện tử khác.
4 download by : skknchat@gmail.com
Các thông số cơ bản:
Vi điều khiển ATmega328 họ 8bit Điện áp hoạt động 5V DC (chỉ được cấp qua cổng USB)
Tần số hoạt động 16 MHz
Dòng tiêu thụ khoảng 30mA Điện áp vào khuyên dùng 7-12V DC Điện áp vào giới hạn 6-20V DC
Số chân Digital I/O 14 (6 chân hardware PWM)
Số chân Analog 6 (độ phân giải 10bit)
Dòng tối đa trên mỗi chân I/O 30 mA
Dòng ra tối đa (5V) 500 mA
Dòng ra tối đa (3.3V) 50 mA
Bộ nhớ flash 32 KB (ATmega328) với 0.5KB dùng bởi bootloader
Module điều khiển động cơ L298 mạch cầu H
5 download by : skknchat@gmail.com
Driver: L298N tích hợp hai mạch cầu H. Điện áp điều khiển: +5 V ~ +12 V
Dòng tối đa cho mỗi cầu H là: 2A (=>2A cho mỗi motor) Điện áp của tín hiệu điều khiển: +5 V ~ +7 V
Dòng của tín hiệu điều khiển: 0 ~ 36mA
Công suất hao phí: 20W (khi nhiệt độ T = 75 ℃)
12V power, 5V power Đây là 2 chân cấp nguồn trực tiếp đến động cơ
Chúng ta có thể điều chỉnh tốc độ của động cơ DC thông qua việc kiểm soát điện áp đầu vào Phương pháp phổ biến nhất để thực hiện điều này là sử dụng tín hiệu PWM.
PWM, hay còn gọi là thay đổi độ rộng xung, là một kỹ thuật cho phép điều chỉnh giá trị trung bình của điện áp cung cấp cho thiết bị điện tử bằng cách bật và tắt nguồn với tốc độ nhanh Giá trị điện áp trung bình này phụ thuộc vào chu kỳ xung, cụ thể là tỷ lệ thời gian tín hiệu BẬT so với thời gian tín hiệu TẮT trong một khoảng thời gian nhất định.
6 download by : skknchat@gmail.com
Vì vậy: Tùy thuộc vào kích thước của động cơ, chúng ta có thể chỉ cần kết nối đầu ra
Arduino có thể điều khiển tốc độ động cơ bằng cách sử dụng chân cua điện trở hoặc chân của MOSFET thông qua tín hiệu PWM Tín hiệu từ Arduino, mặc dù công suất thấp, có khả năng bật và tắt chân MOSFET, từ đó điều khiển động cơ công suất cao một cách hiệu quả Một phương pháp phổ biến để điều khiển động cơ DC là sử dụng mạch cầu H.
Để điều khiển hướng quay của động cơ, chúng ta chỉ cần đảo ngược dòng điện, và mạch cầu H là phương pháp phổ biến nhất để thực hiện điều này Mạch cầu H bao gồm bốn chân chuyển mạch, điện trở hoặc MOSFET, với động cơ nằm ở trung tâm, tạo thành hình chữ H Bằng cách kích hoạt hai công tắc cụ thể đồng thời, chúng ta có thể thay đổi hướng dòng điện và do đó thay đổi hướng quay của động cơ.
7 download by : skknchat@gmail.com
Cảm biến khoảng cách HC-SR04
Cảm biến siêu âm đo khoảng cách bằng cách sử dụng công thức tính toán dựa trên thời gian và vận tốc của sóng cao tần mà nó phát ra.
*Thông số kĩ thuật: Điện áp: 5V DC
Khoảng cách: 2cm – 450cm (4.5m) Độ chính xác: 3mm
8 download by : skknchat@gmail.com
VCC Cấp nguồn cho cảm biến (5V) hoặc 3.3V ở cảm biến 3V3
TRIGGER Chân phát sóng âm Là chu kỳ của của điện cao /thấp diễn ra.
ECHO Trạng thái ban dầu là 0V, khi có tín hiệu trả về sẽ là 5V và sau đó trở về 0V GND Nối cực âm của mạch
Nguyên lý hoạt động của cảm biến siêu âm đo khoảng cách dựa trên việc phát một xung ngắn từ chân Trig trong khoảng 5 microSeconds Sau đó, cảm biến sẽ tạo ra một xung HIGH ở chân Echo cho đến khi nhận được sóng phản xạ Chiều rộng của xung này tương ứng với thời gian sóng siêu âm được phát ra và quay trở lại, cho phép xác định khoảng cách một cách chính xác.
Tốc độ âm thanh trong không khí đạt 340 m/s, tương đương với 29,412 microGiây/cm Để xác định khoảng cách, ta có thể tính thời gian và chia cho 29,412.
Bluetooth HC-06
Module Bluetooth SLAVE cho phép vi điều khiển kết nối dễ dàng với các thiết bị ngoại vi như smartphone, laptop và USB Bluetooth thông qua giao tiếp Serial, hỗ trợ việc gửi và nhận tín hiệu hai chiều Với thiết kế tích hợp trên board, module này cũng cho phép sử dụng nguồn từ thiết bị, mang lại sự tiện lợi cho người dùng.
Module Bluetooth SLAVE cho phép vi điều khiển kết nối dễ dàng với các thiết bị ngoại vi như smartphone, laptop và USB Bluetooth Giao tiếp Serial giúp gửi và nhận tín hiệu 2 chiều, mang lại sự linh hoạt và tiện lợi trong việc truyền tải dữ liệu.
9 download by : skknchat@gmail.com
Module Bluetooth tích hợp trên board hỗ trợ nguồn điện từ 3.5V đến 6V, giúp người dùng không phải lo lắng về sự chênh lệch điện áp 3V - 5V có thể gây hỏng board.
- Module Bluetooth gồm 6 chân theo thứ tự: KEY, VCC, GND, TX, RX,
Module Bluetooth SLAVE không cho phép vi điều khiển tự kết nối mà cần sử dụng smartphone, laptop hoặc bluetooth USB để tìm kiếm và kết nối (pair) Sau khi kết nối thành công, bạn có thể gửi và nhận tín hiệu giữa vi điều khiển và các thiết bị này.
- Không được gắn lộn dây Vcc và Gnd vì sẽ gây hỏng module bluetooth ngay lập tức.Mặc định, module bluetooth SLAVE sử dụng baud rate là 9600, PIN là 1234.
Thông số kỹ thuật: Điện áp hoạt động: 3.3 ~ 5VDC. Điện áp giao tiếp: TTL tương thích 3.3VDC và 5VDC.
Baudrate UART( tốc độ hỗ trợ) có thể chọn được: 1200, 2400, 4800, 9600, 19200,
Dải tần sóng hoạt động: Bluetooth 2.4GHz
Phạm vi hoạt động 8m ( hiệu quả 5m)
10 download by : skknchat@gmail.com
Kích thước của module chính: 28 mm x 15 mm x 2.35 mm
Nhiệt độ làm việc: 20-75 0 C Độ nhạy: -80dBm 2.1
Module Bluetooth HC-06 là một thiết bị giúp kết nối các thiết bị hỗ trợ Bluetooth với VDK, cho phép gửi và nhận dữ liệu giữa hai thiết bị Nó sử dụng chuẩn giao tiếp UART, giúp dễ dàng giao tiếp với VDK Tốc độ baud và mật khẩu của module có thể được cài đặt qua lệnh AT Lưu ý rằng module HC-06 hoạt động ở chế độ slave, do đó chỉ có thể giao tiếp với các thiết bị Bluetooth ở chế độ master.
*Chức năng từng chân của modul HC-06
+Chân UART_TXD có chức năng truyền dữ liệu tới RXD, nối với chân RXD của vi điều khiển.
+Chân UART_RXD có chức năng nhận dữ liệu do chân TXD truyền tới, nối với chân TXD của vi điều khiển.
+Chân VCC nối với nguồn từ 3-5V
Động cơ Servo SG -90
Servo là một loại động cơ điện đặc biệt, khác với động cơ thông thường chỉ cần cấp điện là quay liên tục Servo chỉ hoạt động khi được điều khiển bằng xung PPM, với góc quay linh hoạt từ 0 đến 180 độ Các loại servo có kích thước, khối lượng và cấu tạo đa dạng; có loại nhẹ chỉ 9g, thường được sử dụng trên máy bay mô hình, trong khi một số loại khác có mô men lực mạnh mẽ, lên tới vài chục Newton/m, hoặc được thiết kế với nhông sắc chắc chắn để đảm bảo hiệu suất cao.
Động cơ servo được thiết kế với hệ thống hồi tiếp vòng kín, cho phép tín hiệu ra của động cơ kết nối với mạch điều khiển Khi động cơ quay, vận tốc và vị trí sẽ được gửi về mạch điều khiển Nếu có bất kỳ rào cản nào ngăn cản chuyển động của động cơ, cơ cấu hồi tiếp sẽ phát hiện tín hiệu ra chưa đạt yêu cầu Mạch điều khiển sẽ điều chỉnh sai lệch để động cơ đạt được độ chính xác mong muốn Động cơ servo điều khiển qua liên lạc vô tuyến được gọi là động cơ servo RC, mặc dù bản thân động cơ không được điều khiển bằng vô tuyến mà chỉ kết nối với máy thu vô tuyến trên máy bay hoặc xe hơi để nhận tín hiệu.
Tốc độ hoạt động: 60 độ trong 0.1 giây Điện áp hoạt động: 4.8V(~5V)
Nhiệt độ hoạt động: 0 ºC – 55 ºC
Kết nối dây màu đỏ với nguồn 5V, dây màu nâu với mass, và dây màu cam với chân phát xung của vi điều khiển Cung cấp xung từ 1ms đến 2ms tại chân xung để điều khiển góc quay theo yêu cầu.
III Phương thức giao tiếp UART
UART, hay Universal Asynchronous Receiver-Transmitter, là một giao thức truyền thông phần cứng cho phép giao tiếp nối tiếp không đồng bộ với tốc độ có thể được cấu hình Đặc điểm không đồng bộ của UART có nghĩa là không sử dụng tín hiệu đồng hồ để đồng bộ hóa các bit dữ liệu từ thiết bị gửi đến thiết bị nhận.
Trong giao tiếp UART, hai thiết bị UART tương tác trực tiếp với nhau UART chuyển đổi dữ liệu từ dạng song song của thiết bị điều khiển, chẳng hạn như CPU, sang dạng nối tiếp Dữ liệu nối tiếp này sau đó được truyền đến UART nhận, nơi nó được chuyển đổi trở lại thành dữ liệu song song cho thiết bị nhận.
• Hai đường dây mà mỗi thiết bị UART sử dụng để truyền dữ liệu đó là:
12 download by : skknchat@gmail.com
UART là một phương thức truyền dữ liệu không đồng bộ, không sử dụng tín hiệu đồng hồ để đồng bộ hóa việc truyền và nhận bit Thay vào đó, UART thêm các bit start và stop vào gói dữ liệu, giúp xác định điểm bắt đầu và kết thúc của gói Điều này cho phép UART nhận biết thời điểm bắt đầu đọc các bit trong quá trình truyền.
Khi UART phát hiện bit start, nó bắt đầu đọc các bit với tốc độ truyền (baud rate) nhất định, được đo bằng bit trên giây (bps) Để đảm bảo truyền dữ liệu hiệu quả, cả hai UART phải hoạt động ở cùng một tốc độ truyền, với sự chênh lệch tối đa khoảng 10% giữa UART truyền và nhận Nếu vượt quá giới hạn này, thời gian của các bit sẽ bị lệch quá xa, gây ra lỗi trong quá trình truyền.
UART nhận dữ liệu từ bus dữ liệu, nơi dữ liệu được gửi bởi các thiết bị như CPU, bộ nhớ hoặc vi điều khiển Dữ liệu được truyền từ bus đến UART ở dạng song song, sau đó UART thêm một bit start, một bit chẵn lẻ và một bit stop để tạo thành gói dữ liệu Gói dữ liệu này sau đó được xuất ra nối tiếp từng bit qua chân Tx, trong khi UART nhận gói dữ liệu từng bit qua chân Rx Sau khi nhận, UART chuyển đổi dữ liệu trở lại dạng song song và loại bỏ các bit start, chẵn lẻ và stop, cuối cùng truyền gói dữ liệu song song trở lại bus dữ liệu ở đầu nhận.
13 download by : skknchat@gmail.com
Sơ đồ nối mạch và sơ đồ thuật toán
Sơ đồ thuật toán
a Sơ đồ điều khiển bằng winform
14 download by : skknchat@gmail.com b.Sơ đồ chạy tự động
15 download by : skknchat@gmail.com
Lập trình
Code Arduino
#define enB 11 int x=0; int spd=0; void setup()
{ pinMode(inA1, OUTPUT); pinMode(inA2, OUTPUT); pinMode(inB1, OUTPUT); pinMode(inB2, OUTPUT); pinMode(trig,OUTPUT); pinMode(echo,INPUT);
Serial.begin(9600); myservo.attach(5); myservo.write(90); delay(500);
16 download by : skknchat@gmail.com
Tranh_Vat_Can(40); break; case '1': spd0; break; case '2': spd5; break; case '3': spd0; break; case '4': spd 0; break; case '5': spd%5; break;
{ analogWrite(enA,spd-15); analogWrite(enB,spd-30); digitalWrite(inA1, HIGH);
17 download by : skknchat@gmail.com digitalWrite(inA2, LOW); digitalWrite(inB1, HIGH); digitalWrite(inB2, LOW);
{ analogWrite(enA,spd-15); analogWrite(enB,spd-30); digitalWrite(inA1, LOW); digitalWrite(inA2, HIGH); digitalWrite(inB1, LOW); digitalWrite(inB2, HIGH);
{ analogWrite(enA,spd-15); analogWrite(enB,spd-30); digitalWrite(inA2,LOW); digitalWrite(inA1,HIGH); digitalWrite(inB1,LOW); digitalWrite(inB2,LOW);
{ analogWrite(enA,spd-15); analogWrite(enB,spd-30); digitalWrite(inA1,LOW); digitalWrite(inA2,LOW); digitalWrite(inB2,LOW); digitalWrite(inB1,HIGH);
{ digitalWrite(inA1, LOW); digitalWrite(inA2, LOW); digitalWrite(inB1, LOW); digitalWrite(inB2, LOW);
{ myservo.write(goc); delay(500); unsigned long times;
18 download by : skknchat@gmail.com int KC; digitalWrite(trig,0); delayMicroseconds(2); digitalWrite(trig,1); delayMicroseconds(5); digitalWrite(trig,0); times = pulseIn(echo,HIGH);
KC = int(times/2/29.412); return KC;
} void Tranh_Vat_Can(byte KC_choPhep)
//Tien(); int KC_phiaTruoc = TinhKC(90); if (KC_phiaTruoc > KC_choPhep)
} else //(KC_phiaTruoc components = (gcnew System::ComponentModel::Container()); this->button1 = (gcnew System::Windows::Forms::Button()); this-
In this code snippet, various components of a Windows Forms application are instantiated, including multiple buttons (button2 to button8), labels (label1 to label5), and combo boxes (comboBox1 to comboBox3) Additionally, a serial port is created using the System.IO.Ports namespace, indicating the setup of a user interface that likely includes interactive elements for user input and communication with external devices.
/ this->button1->Location = System::Drawing::Point(468, 33); this->button1->Name = L"button1"; this->button1->Size = System::Drawing::Size(75, 30); this->button1->TabIndex = 0; this->button1->Text = L"Auto"; this->button1-
>UseVisualStyleBackColor = true; this->button1->Click += gcnew System::EventHandler(this, &MyForm::button1_Click); /
The label1 control in the user interface is set to automatically resize to fit its content, features a highlight color consistent with the system's menu theme, and is positioned at coordinates (111, 33) It is named "label1," has a size of 100 by 17 pixels, and is assigned a tab index of 1 for navigation purposes.
22 download by : skknchat@gmail.com this->label1->Text = L"Not connected";
/ this->button2->Location = System::Drawing::Point(42, 350); this->button2->Name = L"button2"; this->button2->Size = System::Drawing::Size(90, 28); this->button2->TabIndex = 2; this->button2->Text = L"Connect"; this-
>button2->UseVisualStyleBackColor = true; this->button2->Click += gcnew System::EventHandler(this, &MyForm::button2_Click); /
The button3 control is positioned at coordinates (42, 392) and is named "button3." It has a size of 90 by 28 pixels and is assigned a tab index of 3 The button displays the text "Disconnect" and utilizes the visual style back color Additionally, it is linked to an event handler that triggers the button3_Click method when clicked.
/ this->button4->Location = System::Drawing::Point(270, 81); this->button4->Name = L"button4"; this->button4-
>Size = System::Drawing::Size(60, 55); this->button4-
>TabIndex = 4; this->button4->Text = L"Down"; this->button4-
>button4->MouseDown += gcnew System::Windows::Forms::MouseEventHandler(this, &MyForm::button4_MouseDown); this->button4->MouseUp += gcnew System::Windows::Forms::MouseEventHandler(this, &MyForm::button4_MouseUp);
/ this->button5->Location = System::Drawing::Point(270, 233); this->button5->Name = L"button5"; this->button5-
>Size = System::Drawing::Size(60, 55); this->button5-
>TabIndex = 5; this->button5->Text = L"Up"; this->button5-
>button5->MouseDown += gcnew System::Windows::Forms::MouseEventHandler(this, &MyForm::button5_MouseDown); this->button5->MouseUp += gcnew System::Windows::Forms::MouseEventHandler(this, &MyForm::button5_MouseUp);
/ this->button6->Location = System::Drawing::Point(348, 156); this->button6->Name = L"button6";
In the provided code snippet, a button is configured within a Windows Forms application The button, labeled "Right," is set to a size of 60 by 55 pixels and assigned a tab index of 6 It utilizes visual styles for its appearance and is programmed to respond to mouse events, specifically handling mouse button down and up actions through designated event handlers.
/ this->button7->Location = System::Drawing::Point(187, 156); this->button7->Name = L"button7"; this->button7-
>Size = System::Drawing::Size(60, 55); this->button7-
>TabIndex = 7; this->button7->Text = L"Left"; this->button7-
>button7->MouseDown += gcnew System::Windows::Forms::MouseEventHandler(this, &MyForm::button7_MouseDown); this->button7->MouseUp += gcnew System::Windows::Forms::MouseEventHandler(this, &MyForm::button7_MouseUp);
/ this->button8->Location = System::Drawing::Point(270, 156); this->button8->Name = L"button8"; this->button8-
>Size = System::Drawing::Size(60, 55); this->button8-
>TabIndex = 8; this->button8->Text = L"Stop"; this->button8-
>button8->MouseDown += gcnew System::Windows::Forms::MouseEventHandler(this, &MyForm::button8_MouseDown);
/ this->label2->AutoSize = true; this->label2->ForeColor = System::Drawing::Color::DarkGreen; this->label2->Location = System::Drawing::Point(39, 33); this->label2->Name = L"label2"; this->label2-
>Size = System::Drawing::Size(48, 17); this->label2->TabIndex = 9; this->label2->Text = L"Status";
// this->label3->AutoSize = true; this->label3->Location System::Drawing::Point(453, 350); this->label3->Name L"label3"; this->label3->Size = System::Drawing::Size(39, 17); this->label3->TabIndex = 10; this->label3->Text = L"COM";
24 download by : skknchat@gmail.com
/ this->label4->AutoSize = true; this->label4->Location System::Drawing::Point(453, 392); this->label4->Name = L"label4"; this->label4-
>Size = System::Drawing::Size(70, 17); this->label4->TabIndex = 11; this-
// this->label5->AutoSize = true; this->label5->Location System::Drawing::Point(453, 432); this->label5->Name L"label5"; this->label5->Size = System::Drawing::Size(49, 17); this->label5->TabIndex = 12; this->label5->Text = L"Speed";
/ this->comboBox1->FormattingEnabled = true; this-
>comboBox1->Location = System::Drawing::Point(234, 350); this->comboBox1->Name = L"comboBox1"; this-
>comboBox1->Size = System::Drawing::Size(130, 24); this->comboBox1->TabIndex = 13;
// this->comboBox2->FormattingEnabled = true; this-
>comboBox2->Location = System::Drawing::Point(234, 392); this->comboBox2->Name = L"comboBox2"; this->comboBox2-
>Size = System::Drawing::Size(130, 24); this->comboBox2-
/ this->comboBox3->FormattingEnabled = true; this-
>comboBox3->Location = System::Drawing::Point(234, 432); this->comboBox3->Name = L"comboBox3"; this->comboBox3-
>Size = System::Drawing::Size(130, 24); this->comboBox3-
>TabIndex = 15; this->comboBox3->SelectedValueChanged += gcnew System::EventHandler(this,
/ this->AutoScaleDimensions = System::Drawing::SizeF(8, 16); this-
>AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; this->ClientSize = System::Drawing::Size(588, 482); this->Controls-
>Add(this->comboBox3); this->Controls->Add(this->comboBox2); this-
In the code snippet provided, various controls such as labels and buttons are added to a form named "MyForm." The controls include label1 through label5 and button1 through button8, enhancing the user interface The form's title is set to "MyForm," and an event handler is attached to the Load event, allowing for additional functionality when the form is initialized For further inquiries or downloads, contact skknchat@gmail.com.
&MyForm::MyForm_Load); this->ResumeLayout(false); this->PerformLayout();
#pragma endregion private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { this->serialPort1->Write("f");
MessageBox::Show("Ban da cho che do tu dong!");
} private: System::Void button4_MouseDown(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e)
} private: System::Void button8_MouseDown(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e)
} private: System::Void button5_MouseDown(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e)
} private: System::Void button6_MouseDown(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e)
} private: System::Void button7_MouseDown(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e)
} private: System::Void MyForm_Load(System::Object^ sender, System::EventArgs^ e)
26 download by : skknchat@gmail.com
{ array^ oBarray SerialPort::GetPortNames(); this->comboBox2-
>SelectedIndex = 1; this->comboBox3->DataSource speed; this->comboBox1->DataSource = oBarray; this-
} private: System::Void button2_Click(System::Object^ sender, System::EventArgs^ e) { label1->Text = "Connected"; label1->ForeColor = Color::Coral; this->serialPort1->BaudRate = System::Convert::ToInt32(this->comboBox2-
>Text->ToString()); this->serialPort1->PortName = this->comboBox1->Text; this->serialPort1->Open();
//serialPort1->Write(this->comboBox3->Text->ToString()); comboBox1->Enabled = false; comboBox2->Enabled = false; comboBox3->Enabled = false;
} private: System::Void button3_Click(System::Object^ sender, System::EventArgs^ e) { label1->Text = "Disconnected"; label1->ForeColor = Color::Red; serialPort1->Close(); comboBox1->Enabled = true; comboBox2->Enabled = true; comboBox3->Enabled = true;
} private: System::Void button4_MouseUp(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e)
} private: System::Void button6_MouseUp(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e)
} private: System::Void button5_MouseUp(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e)
} private: System::Void button7_MouseUp(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e)
27 download by : skknchat@gmail.com
} private: System::Void comboBox3_SelectedValueChanged(System::Object^ sender, System::EventArgs^ e)
{ this->serialPort1->BaudRate = System::Convert::ToInt32(this->comboBox2-
>Text->ToString()); this->serialPort1->PortName = this->comboBox1-
>Text; this->serialPort1->Open(); if (this->comboBox3->Text == "100")
} else if (this->comboBox3->Text == "125")
} else if (this->comboBox3->Text == "150")
} else if (this->comboBox3->Text == "200")
} else if (this->comboBox3->Text == "255")
28 download by : skknchat@gmail.com
V Kết quả thu được và kết luận
Hướng của đề tài : Ứng dụng công nghệ Bluetooth vào các hệ thống, điều khiển tự động khác thông qua điều khiển bằng giao diện trên My form.
- Hiểu được nguyên lý, cách thức hoạt động của cảm biến, linh kiện điện tử.
- Biết cách xây dựng, thiết kế xe tự hành, điều khiển xe thông qua Bluetooth.
- Sử dụng kiến thức đã học để lập trình điều khiển, xây dựng giao diện My form.
- Nâng cao khả năng hoạt động nhóm, biết phân chia công việc, hoạt động hiệu quả hơn.
- Không thể gặp mặt nhau trực tiếp để cùng nhau lắp đặt , kiểm tra và vận hành.
- Khó khăn trong việc giao tiếp, cách diễn đạt ý để cho các thành viên khác hiểu, các sự cố kỹ thuật, mạng.
29 download by : skknchat@gmail.com
- Khó khăn khi mua các linh kiện.
Quá trình thực hiện đề tài đã giúp chúng em đạt được kết quả tốt và bổ sung nhiều kiến thức chưa rõ trong học tập Chúng em hiểu rõ hơn về quy trình thiết kế và thực hiện một ý tưởng kỹ thuật đơn giản Môn học này đã tạo ra môi trường làm việc thân thiện, sáng tạo, kích thích sự tìm tòi của sinh viên Chúng em xin chân thành cảm ơn TS Trương Công Tuấn đã tận tình hướng dẫn và góp ý trong suốt quá trình thực hiện đề tài.