Tổng quan về hệ thống cơ điện tử 1.1 Giới thiệu về chức năng nhiệm vụ của hệ thống1.1.1 Khái niệm Cơ Điện Tử và hệ Cơ Điện Tử Cơ điện tử là một hệ thống cơ cấu máy có thiết bị điều khiển
Trang 1CHƯƠNG 1 Tổng quan về hệ thống cơ điện tử 1.1 Giới thiệu về chức năng nhiệm vụ của hệ thống
1.1.1 Khái niệm Cơ Điện Tử và hệ Cơ Điện Tử
Cơ điện tử là một hệ thống cơ cấu máy có thiết bị điều khiển đã được lập trình và có khả năng hoạt động một cách linh hoạt Ứng dụng trong sinh hoạt, trong công nghiệp, trong lĩnh vực nghiên cứu như máy lạnh, tủ lạnh, máy giặt, modul sản xuất linh hoạt, tự động hóa quá trình sản xuất hoặc cá thiết bị hỗ trợ nghiên cứu như các thiết bị đo trong các hệ thống kiểm tra.
Khái niệm cơ điện tử được mở ra từ định nghĩa ban đầu của công ty
Yasakawa Electric, theo sau đó là những định nghĩa khác nhau của các nhà khoa học khác trên toàn thế giới Tất cả những định nghĩa và phát biểu đó đều xác đắng và giàu thông tin, tuy nhiên nếu đứng riêng lẻ lại không định nghĩa được đầy đủ thuật ngữ Cơ Điện Tử.
Hệ thống Cơ Điện Tử là một lĩnh vực đa ngành của khoa học kĩ thuật, hình thành từ các ngành mũi nhọn như Cơ khí, Điện – Điện tử, Tin học Tuy nhiên, trên thực thế hệ thống Cơ Điện Tử không có một định nghĩa rõ ràng Nó được tách biệt hoàn toàn ở cá phần riêng biệt nhưng được kết hợp trong quá trình thực hiện
Các phần tử cơ bản cấu thành nên hệ thống Cơ Điện Tử:
Cơ cấu chấp hành / cơ cấu tác động
Giao tiếp thời gian thực (HMI/GUI)
Hình 1.1 Các thành phần cơ bản của hệ thống Cơ Điện Tử
Giải pháp cơ điện tử trong thiết kế kĩ thuật liên quan đến việc cung cấp một cấu trúc trong đó có sự tích hợp thành một hệ thống thống nhất của các công nghệ khác nhau được thiết lập và đánh giá Sơ đồ khối về toàn bộ hệ thống (một
1
Trang 2sản phẩm cơ điện tử) trên cơ sở các khối hoặc các modun thành phần được thể hiện như trên hình 1.2
Hình 1.2 Cấu trúc theo modul hệ Cơ Điện Tử
1.1.2 Hệ thống Cơ Điện Tử được sử dụng hiện nay
Hệ Cơ Điện Tử được phân loại đa dạng và được ứng dụng rộng rãi trong cuộc sống:
- Trong y học: Các thiết bị máy cắt lớp, các máy chụp X-quang, các thiết bị
mổ nội soi,…
- Trong công nghiệp: Hệ thống FMS, robot công nghiệp, hệ thống phân loại, kho hàng tự động, …
- Trong văn phòng: Hệ thống mạng công tác, có sử dụng máy tính, các thiết
bị văn phòng (máy in, máy fax,…)
- Trong sinh hoạt gia đình: Các sản phẩm tiêu dùng (máy giặt, điện thoại, tivi,…) hệ thống giám sát bảo vệ ngôi nhà, …
1.1.3 Đề tài hệ thống đo và cảnh báo khí gas
Hệ thống cảnh báo rò rỉ khí là hệ thống có chức năng phát hiện sự hiện diện của một loại khí trong một khu vực nhất định nào đó, hệ thống này thường là một phần của
hệ thống an toàn của nhà máy hoặc khu vực dễ chịu ảnh hưởng của những loại khí độc hại Hệ thống này gồm 2 phần chính, phần thứ nhất là đầu rò khí có tác dụng phát hiện khí bị rò rỉ Phần thứ 2 là thiết bị cảnh báo, có chuông cảnh báo, đèn cảnh báo, màn hình hiển thị nồng độ khí Sau khi đầu rò phát hiện khí, nó sẽ truyền tín hiệu cho bộ phận cảnh báo để đưa ra cảnh báo và ngắt nguồn khí, chạy các hệ thống ngăn ngừa cháy nổ.
Trang 3Phát hiện rò rỉ khí là quá trình xác định rò rỉ khí có khả năng gây nguy hiểm hay không Việc tiếp xúc với khí độc cũng có thể xảy ra trong các hoạt động như sợ, khử trùng, đổ nhiên liệu, vận hành bãi chôn lấp,… Các cảm biến thông thường bao gồm cảm biến khí cháy, thiết bị dò quang phổ, cảm biến bán dẫn,… Những loại cảm biến này được sử dụng cho nhiều ứng dụng và có thể tìm thấy trong các nhà máy, xí nghiệp hay như kiểm tra chất lượng và nhà ở.
Sau khi tiến hành lắp đặt thì tất cả đầu rò khí ohair được hiệu chỉnh lần đầu và định kì hiệu chỉnh theo chu kì để cho hệ thống được hoạt động ổn định và ít xảy ra sai sót nhất có thể.
Trong thực tế, hệ thống này đã được ứng dụng rộng rãi trong các hộ gia đình sử dụng gas hay như trong khách sạn, nhà hàng và những khu công nghiệp như là biện pháp an toàn bắt buộc
Hình 1.3 Hệ thống cảnh báo rò rỉ khí Acetylene C2H2 ngắt van tự động
1.2 Mục tiêu hoàn thành của đề tài
- Thiết kế mô hình và đo cảnh báo khí gas sử dụng kit Arduino UNO với những chức năng cơ bản của hệ thống.
- Thiết kế giao diện người dùng GUI phù hợp có thể kết nối với máy tính
- Kết suất bản vẽ sơ đồ điện hệ thống
Trang 4CHƯƠNG 2 Các thành phần cơ bản của hệ thống cơ điện
2.1 Các phần tử đầu vào
Trong đề tài này, phần tử đầu vào của hệ thống nhóm chọn và sử dụng là cảm biến khí gas MQ-2 do mức độ phổ biến và dễ tiếp cận của nó Cảm biến MQ-2 là cảm biến khí gas thông dụng trong các dòng cảm biến MQ Cảm biến MQ-2 thuộc dòng cảm biến bán dẫn, nó sử dụng một mẩu chất bán dẫn oxit kim loại (MOS) làm thành phần nhạy để xác định sự thay đổi của khí Sự có mặt của các chất khí khác ngoài không khí sẽ làm thay đổi điện trở của chất bán dẫn, từ
đó làm thay đổi điện áp, và từ đây ta có thể xác định được sự thay đổi của khí Cảm biến MQ-2 hoạt động dưới điện áp 5V và công suất trung bình khoảng 800mW Nó có thể phát hiện các loại khí như LPG, khói, Alcohol, Propane, Hydrogen, Methane và Cacbon monoxide từ 200 cho đến 10000ppm.
Một vài thông số kĩ thuật liên quan được thể hiện trong bảng 1.
Bảng 1 Các thông số chính cảm biến MQ2
và Propane 300-5000ppm Butane
5000-20000ppm Methane
300-5000ppm H2
100-2000ppm Alcohol
Trang 5Hình 2.4 Thông số kích thước module MQ – 2
Hình 2.5 Sơ đồ điện module MQ – 2
2.2 Các phần tử đầu ra
Trình bày về các thông tin cơ bản của mỗi phần tử đầu ra:
- Chức năng, nguyên lý hoạt động
- Thông số kỹ thuật: điện áp hoạt động, dạng tín hiệu điều khiển, ký hiệu phần tử Các phần tử đầu ra là thành phần thực hiện các kết quả sau khi bộ điều khiển xử lý xong các tín hiệu của phần tử đầu vào Trong đề tài này thì các phần tử đầu ra chính là các cơ cấu chấp hành cụ thể chính là động cơ bước và còi báo động.
2.2.1 Động cơ bước 28BYJ-48 5V
Động cơ bước 5VDC là động cơ bước 4 pha, 5 dây điều khiển 4 trong 5 dây này được kết nối với 4 cuộn dây trong động cơ và 1 dây là dây nguồn chung cho cả 4 cuộn dây Mỗi bước của động cơ quét 1 góc 5.625 độ, vậy để quay 1 vòng động cơ phải thực hiện 64 bước
Trang 6Hình 2.6 Thông số kích thước động cơ bước 28BỴ - 48 5V
Động cơ bước hoạt động kèm theo với IC ULN2003 để có thể điều khiển bước góc xoay Như chúng ta thấy có bốn cuộn dây trong động cơ và một đầu của tất cả các cuộn dây được gắn với + 5V (Đỏ) và các đầu còn lại (Cam, Hồng, Vàng và Xanh) được đưa ra ngoài như dây Dây Đỏ luôn được cung cấp nguồn + 5V không đổi và + 5V này sẽ đi qua (cung cấp năng lượng) cho cuộn dây chỉ khi đầu kia của cuộn dây được nối đất Động cơ bước chỉ có thể quay nếu các cuộn dây được cấp điện (nối đất) theo một trình tự hợp lý Chuỗi logic này có thể được lập trình bằng vi điều khiển hoặc bằng cách thiết kế mạch kỹ thuật số Trình tự
mà mỗi cuộn dây sẽ được kích hoạt được hiển thị trong bảng dưới đây Ở đây “1” đại diện cho cuộn dây được giữ ở + 5V, vì cả hai đầu của cuộn dây đều ở + 5V (màu đỏ và các đầu khác), cuộn dây sẽ không được cung cấp năng lượng Tương
tự “0” đại diện cho cuộn dây được giữ dưới đất, bây giờ một đầu sẽ là + 5V và đầu kia được nối đất để cuộn dây sẽ được cung cấp năng lượng.
Hình 2.7 Sơ đồ dây động cơ
Trang 7Bảng 2 Tín hiệu góc quay động cơ
Màu cuộn dây
Trình tự xoay theo hướng kim đồng hồ Bước
1
Bước 2
Bước 3
Bước 4
Bước 5
Bước 6
Bước 7
Bước 8
Trang 82.3 Bộ điều khiển
Hình 2.9 Kit Arduino UNO
Thông số kỹ thuật của Arduino UNO R3
Thông số kỹ thuật của Arduino Uno R3 là tiêu chuẩn, các biến thể gần như có thông số tương đương.
Arduino Uno được xây dựng với phần nhân là vi điều khiển
ATmega328P, sử dụng thạch anh có chu kì dao động là 16 MHz Với vi điều khiển này, tổng cộng có 14 pin (ngõ) ra / vào được đánh số từ 0 tới 13 (trong đó
có 6 pin PWM, được đánh dấu ~ trước mã số của pin) Song song đó, có thêm 6 pin nhận tín hiệu analog được đánh kí hiệu từ A0 - A5, 6 pin này cũng có thể sử dụng được như các pin ra / vào bình thường (như pin 0 - 13) Ở các pin được đề cập, pin 13 là pin đặc biệt vì nối trực tiếp với LED trạng thái trên board Trên board còn có 1 nút reset, 1 ngõ kết nối với máy tính qua cổng USB và 1 ngõ cấp nguồn sử dụng jack 2.1mm lấy năng lượng trực tiếp từ AC-DC adapter hay thông qua ắc-quy nguồn.
Khi làm việc với Arduino board, một số thuật ngữ sau cần lưu ý:
Flash Memory: bộ nhớ có thể ghi được, dữ liệu không bị mất ngay cả khi tắt điện Về vai trò, có thể hình dung bộ nhớ này như ổ cứng để chứa dữ liệu trên board Chương trình được viết cho Arduino sẽ được lưu ở đây Kích thước của vùng nhớ này dựa vào vi điều khiển được sử dụng, ví dụ như ATmega8 có 8KB flash memory Loại bộ nhớ này có thể chịu được khoảng 10.000 lần ghi / xoá.
RAM: tương tự như RAM của máy tính, mất dữ liệu khi ngắt điện, bù lại tốc độ đọc ghi xoá rất nhanh Kích thước nhỏ hơn Flash Memory nhiều lần.
EEPROM: một dạng bộ nhớ tương tự như Flash Memory nhưng có chu kì ghi / xoá cao hơn - khoảng 100.000 lần và có kích thước rất nhỏ Để đọc / ghi dữ liệu có thể dùng thư viện EEPROM của Arduino.
Ngoài ra, Arduino board còn cung cấp cho các pin khác nhau như pin cấp nguồn 3.3V, pin cấp nguồn 5V, pin GND,
Thông số kỹ thuật của Arduino board được tóm tắt trong bảng 2:
Trang 9Bảng 3 Thông số kĩ thuật chính của Arduino UNO R3
Điện áp đầu vào (khuyên dùng) 7-12V
Điện áp đầu vào (giới hạn) 6-20V
Số chân Digital 14 (trong đó có 6 chân hỗ trợ chỉnh xung
PWM)
Dòng điện DC trên mỗi chân I/O 20mA
Dòng điện DC trên trên 3.3V 50mA
2.4 Các dạng giao tiếp được sử dụng
Để kết nối giữa kit Arduino với GUI trên máy tính, nhóm sử dụng chuẩn truyền thông UART, đây là bộ truyền nhận nối tiếp bất đồng bộ có sẵn với mọi
bộ kit Arduino hiện nay
Các khái niệm quan trọng trong chuẩn truyền thông UART:
Baudrate: Số bit truyền được trong 1s, ở truyền nhận không đồng bộ thì ở
các bên truyền và nhận phải thống nhất Baudrate Các thông số tốc độ Baudrate thường hay sử dụng dể giao tiếp với máy tính là
600,1200,2400,4800,9600,14400,19200,38400,56000,57600,115200.
Trang 10Frame: Ngoài việc giống nhau của tốc độ baud 2 thiết bị truyền nhận thì
khung truyền của bên cũng được cấu hình giống nhau Khung truyền quy định số bit trong mỗi lần truyền, bit bắt đầu “Start bit”, các bit kết thúc (Stop bit), bit kiểm tra tính chẵn lẻ (Parity), ngoài ra số bit quy định trong một gói dữ liệu cũng được quy định bởi khung truyền Có thể thấy, khung truyền đóng một vai trò rất quan trọng trong việc truyền thành công dữ liệu.
- Idle frame: Đường truyền UART ở mức “1”, để xác nhận hiện tại đường
truyền dữ liệu trống, không có frame nào đang được truyền đi.
- Break frame: Đường truyền UART ở mức “0”, để xác nhận hiện tại trên
đường truyền đang truyền dữ liệu, có frame đang được truyền đi.
Hình 2.10 Cấu trúc gói dữ liệu
Start bit: Bit đầu tiên được truyền trong một frame, bit này có chức năng
báo cho bên nhận rằng sắp có một gói dữ liệu truyền đến Đường truyền UART luôn ở trạng thái cao mức “1” cho đến khi chip muốn truyền dữ liệu đi thì nó gởi bit start bằng cách kéo xuống mức “0” Như vậy start bit giá trị điện áp 0V và phải bắt buộc có bit start trong khung truyền.
Data: Data hay dữ liệu là thông tin mà chúng ta nhận được trong quá trình
truyền và nhận Data trong STM32 có quy định khung truyền là 8bit hoặc 9bit Trong quá trình truyền UART, bit có trọng số thấp nhất (LSB – least significant bit – bên phải) sẽ được truyền trước và cuối cùng là bit có ảnh hưởng cao nhất (MSB – most significant bit – bên trái)
Parity bit: Parity dùng để kiểm tra dữ liệu truyền có đúng hay không Có 2
loại Parity đó là Parity chẵn (even parity) và parity lẽ (odd parity) Parity chẵn nghĩa là số bit 1 trong trong data truyền cùng với bit Parity luôn là số chẵn, ngược lại nếu Parity lẽ nghĩa là số bit 1 trong data truyền cùng với bit Parity luôn là số lẽ Bit Parity không phải là bit bắt buộc và vì thế chúng ta có thể loại
bỏ bit này ra khỏi khung truyền.
Trang 11Stop bits: Stop bits là một bit báo cáo để cho bộ truyền/nhận biết được gói
dữ liệu đã được gởi xong Stop bits là bit bắt buộc phải có trong khung truyền Stop bits có thể là 1bit, 1.5bit, 2bit, 0.5bit tùy thuộc vào ứng dụng UART của người sử dụng.
Trang 12CHƯƠNG 3 Hệ thống điều khiển của hệ thống cơ điện tử
3.1 Sơ đồ mạch điện
Notes: Thiết kế sơ đồ kết nối mạch điện cho các phần tử điều khiển với Bộ điều khiển.
Trang 133.2 Chương trình điều khiển
Chức năng chính của mô hình là đo nồng độ các chất khí xung quanh nên chương trình điều khiển sẽ tập trung các thành phần này Với việc sử dụng cảm biến MQ – 2 sẽ tồn tại những bài toán sau:
- Tính toán điện trở của cảm biến khi có tác động của khí
- Hiệu chỉnh cảm biến lúc ban đầu
- Quy đổi giá trị đo của cảm biến sang đơn vị ppm
Tính toán điện trở của cảm biến khi có tác động của khí: Cảm biến và điện trở tải tạo thành một bộ phân áp Với điện áp trên điện trở tải và điện trở của nó, điện trở của cảm biến có thể được tính toán.
Hiệu chỉnh cảm biến: Chức năng này giả định rằng cảm biến đang ở trong không khí sạch Nó sử dụng hàm MQResistanceCalculation để tính toán điện trở của cảm biến trong không khí sạch và sau đó chia nó với
RO_CLEAN_AIR_FACTOR, giá trị này là khác nhau với các cảm biến khác nhau.
Quy đổi giá trị đo của cảm biến: Bằng cách sử dụng độ dốc và một điểm của đường thẳng Giá trị x (giá trị logarit của ppm) của dòng có thể được tính nếu y (rs_ro_ratio) được cung cấp Vì nó là một tọa độ logarit, nên lũy thừa 10 được sử dụng để chuyển đổi kết quả thành một giá trị không phải logarit Đây là giá trị ppm của khí cần cảnh báo.
3.3 Giao diện điều khiển
Notes:
- Sử dụng ngôn ngữ lập trình nào? (C++)
- Ứng dụng chạy trên thiết bị nào? (laptop)
- Trình bày chức năng của các phần tử trên giao diện điều khiển.
- Hướng dẫn cách bước kết nối, cài đặt và sử dụng giao diện điều khiển và
hệ thống cơ điện tử.
Trang 15CHƯƠNG 4 Kết luận và phương hướng phát triển
Note:
- Đúc kết và thảo luận những kết quả đã đạt được.
- Nêu phương hướng có thể tiếp tục cần phát triển của đề tài trong tương lai.
Trang 16Phụ lục
4.1 Chương trình điều khiển cảm biến MQ -2
#include "Stepper.h"
// ĐỘNG CƠ
//
const int so_buoc_tren_1_vong = 2048;
Stepper stepper(so_buoc_tren_1_vong, 8, 10, 9, 11);
// CẢM BIẾN MQ2
//
#define MQ_PIN (A0)
#define RL_VALUE (5)
#define RO_CLEAN_AIR_FACTOR (9.83)
#define CALIBARAION_SAMPLE_TIMES (20)
#define CALIBRATION_SAMPLE_INTERVAL (500)
#define READ_SAMPLE_INTERVAL (10)
#define READ_SAMPLE_TIMES (5)
#define GAS_LPG (0)
#define GAS_CO (1)
#define GAS_SMOKE (2)
float LPGCurve1 = 2.3;
float LPGCurve2 = 0.21;
float LPGCurve3 = -0.47;
float COCurve1 = 2.3; float COCurve2 = 0.72;
float COCurve3 = -0.34;
float SmokeCurve1 = 2.3; float SmokeCurve2 = 0.53;
float SmokeCurve3 = -0.44;
float Ro = 10; float gas=0; float Threshold=0.19;
// ĐÈN LED, CÒI BÁO
//
int redLED =7;
int greenLED=6;
int buzzer=5;
Trang 17//CỬA THÔNG GIÓ
Trang 20return MQGetPercentage(rs_ro_ratio,LPGCurve1,LPGCurve2,LPGCurve3); } else if ( gas_id == GAS_CO ) {
return MQGetPercentage(rs_ro_ratio,COCurve1,COCurve2,COCurve3);
} else if ( gas_id == GAS_SMOKE ) {
return MQGetPercentage(rs_ro_ratio,SmokeCurve1,SmokeCurve2,SmokeCurve3); }
using namespace System;
using namespace System::Collections::Generic;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Threading::Tasks;
using namespace System::Windows::Forms;
using namespace System::Data;
using namespace System::Text;
using namespace System::Drawing;
using namespace System::IO::Ports;
using namespace System::IO;
using namespace System::Xml;
using namespace System::Windows::Forms::DataVisualization::Charting;
using namespace System::Drawing::Drawing2D;
public ref class MyForm : public System::Windows::Forms::Form
Trang 21private: System::Windows::Forms::Panel^ panel3;
private: System::Windows::Forms::TextBox^ textBox1;
private: System::Windows::Forms::Panel^ panel5;
private: System::IO::Ports::SerialPort^ serialPort1;
private: System::Windows::Forms::Timer^ timer1;
private: System::Windows::Forms::DataVisualization::Charting::Chart^ chart1;private: System::Windows::Forms::Panel^ panel8;
private: System::Windows::Forms::Label^ label18;
private: System::Windows::Forms::Label^ label17;
private: System::Windows::Forms::Label^ label16;
private: System::Windows::Forms::Label^ label15;
private: System::Windows::Forms::Label^ label14;
private: System::Windows::Forms::Label^ label19;
private: System::Windows::Forms::Label^ label21;
private: System::Windows::Forms::Label^ label20;
private: System::Windows::Forms::Panel^ panel9;
private: Color onBackColor = Color::MediumSlateBlue;
private: Color onToggleColor = Color::WhiteSmoke;
private: Color offBackColor = Color::Gray;
private: Color offToggleColor = Color::Gainsboro;
private: Bunifu::Framework::UI::BunifuGradientPanel^ panel12;
private: Bunifu::Framework::UI::BunifuiOSSwitch^ Switch2;
private: Bunifu::Framework::UI::BunifuiOSSwitch^ Switch1;
private: System::Windows::Forms::ComboBox^ comboBox1;
private: System::Windows::Forms::ComboBox^ comboBox2;
private: System::Windows::Forms::Label^ label2;
private: System::Windows::Forms::Label^ label3;
private: Bunifu::Framework::UI::BunifuGradientPanel^ panel11;
private: System::Windows::Forms::Label^ label1;
private: Bunifu::Framework::UI::BunifuThinButton2^ button4;
private: Bunifu::Framework::UI::BunifuGradientPanel^ panel10;
private: Bunifu::Framework::UI::BunifuThinButton2^ button6;
private: System::Windows::Forms::Panel^ panel4;
private: System::Windows::Forms::Label^ label6;
private: System::Windows::Forms::Button^ button3;
private: System::Windows::Forms::Panel^ panel2;
private: System::Windows::Forms::Label^ label5;
private: System::Windows::Forms::Button^ button2;
private: System::Windows::Forms::Panel^ panel1;
private: System::Windows::Forms::Label^ label4;
Trang 22private: System::Windows::Forms::Button^ button1;
private: Bunifu::Framework::UI::BunifuCircleProgressbar^ CircleProgressbar1;
private: Bunifu::Framework::UI::BunifuCircleProgressbar^ CircleProgressbar3;
private: Bunifu::Framework::UI::BunifuCircleProgressbar^ CircleProgressbar2;
private: System::Windows::Forms::Label^ label9;
private: System::Windows::Forms::Label^ label8;
private: System::Windows::Forms::Label^ label7;
private: System::Windows::Forms::TrackBar^ trackBar1;
private: System::Windows::Forms::Label^ label10;
private: Bunifu::Framework::UI::BunifuThinButton2^ button5;
private: Bunifu::Framework::UI::BunifuThinButton2^ button8;
private: System::Windows::Forms::CheckBox^ checkBox3;
private: System::Windows::Forms::CheckBox^ checkBox2;
private: System::Windows::Forms::CheckBox^ checkBox1;
private: Bunifu::Framework::UI::BunifuDropdown^ Dropdown1;
private: System::Windows::Forms::Label^ label13;
private: System::Windows::Forms::Label^ label12;
private: System::Windows::Forms::Label^ label11;
private: System::Windows::Forms::Timer^ timer2;
private: Bunifu::Framework::UI::BunifuGauge^ Gauge1;
private: System::Windows::Forms::Label^ label24;
private: System::Windows::Forms::Label^ label23;
private: System::Windows::Forms::Label^ label22;
private: System::Windows::Forms::Label^ label25;
private: System::Windows::Forms::RadioButton^ radioButton1;
private: System::Windows::Forms::TrackBar^ trackBar2;
private: System::Windows::Forms::Label^ label28;
private: System::Windows::Forms::Label^ label27;
private: System::Windows::Forms::Label^ label26;
private: System::Windows::Forms::RadioButton^ radioButton2;
String^ item1 = "GAS";
String^ item2 = "Lpg, Co, Smoke";
#pragma region Windows Form Designer generated code
void InitializeComponent(void)
{
this->components = (gcnew System::ComponentModel::Container());
System::ComponentModel::ComponentResourceManager^ resources = (gcnew
Trang 23System::Windows::Forms::DataVisualization::Charting::Series^ series3 = (gcnew System::Windows::Forms::DataVisualization::Charting::Series());
System::Windows::Forms::DataVisualization::Charting::Series^ series4 = (gcnew System::Windows::Forms::DataVisualization::Charting::Series());
this->panel3 = (gcnew System::Windows::Forms::Panel());
this->button8 = (gcnew Bunifu::Framework::UI::BunifuThinButton2());
this->label19 = (gcnew System::Windows::Forms::Label());
this->textBox1 = (gcnew System::Windows::Forms::TextBox());
this->panel5 = (gcnew System::Windows::Forms::Panel());
this->Dropdown1 = (gcnew Bunifu::Framework::UI::BunifuDropdown());
this->chart1 = (gcnew System::Windows::Forms::DataVisualization::Charting::Chart());this->label13 = (gcnew System::Windows::Forms::Label());
this->serialPort1 = (gcnew System::IO::Ports::SerialPort(this->components));
this->timer1 = (gcnew System::Windows::Forms::Timer(this->components));
this->panel8 = (gcnew System::Windows::Forms::Panel());
this->label28 = (gcnew System::Windows::Forms::Label());
this->label27 = (gcnew System::Windows::Forms::Label());
this->label26 = (gcnew System::Windows::Forms::Label());
this->radioButton2 = (gcnew System::Windows::Forms::RadioButton());
this->label25 = (gcnew System::Windows::Forms::Label());
this->radioButton1 = (gcnew System::Windows::Forms::RadioButton());
this->trackBar2 = (gcnew System::Windows::Forms::TrackBar());
this->label24 = (gcnew System::Windows::Forms::Label());
this->label23 = (gcnew System::Windows::Forms::Label());
this->label22 = (gcnew System::Windows::Forms::Label());
this->Gauge1 = (gcnew Bunifu::Framework::UI::BunifuGauge());
this->label12 = (gcnew System::Windows::Forms::Label());
this->label11 = (gcnew System::Windows::Forms::Label());
this->label10 = (gcnew System::Windows::Forms::Label());
this->trackBar1 = (gcnew System::Windows::Forms::TrackBar());
this->Switch2 = (gcnew Bunifu::Framework::UI::BunifuiOSSwitch());
this->Switch1 = (gcnew Bunifu::Framework::UI::BunifuiOSSwitch());
this->label21 = (gcnew System::Windows::Forms::Label());
this->label20 = (gcnew System::Windows::Forms::Label());
this->label17 = (gcnew System::Windows::Forms::Label());
this->label16 = (gcnew System::Windows::Forms::Label());
this->label15 = (gcnew System::Windows::Forms::Label());
this->label14 = (gcnew System::Windows::Forms::Label());
this->label18 = (gcnew System::Windows::Forms::Label());
this->panel9 = (gcnew System::Windows::Forms::Panel());
this->panel12 = (gcnew Bunifu::Framework::UI::BunifuGradientPanel());
this->panel4 = (gcnew System::Windows::Forms::Panel());
this->checkBox3 = (gcnew System::Windows::Forms::CheckBox());
this->label9 = (gcnew System::Windows::Forms::Label());
this->CircleProgressbar3 = (gcnew Bunifu::Framework::UI::BunifuCircleProgressbar());this->label6 = (gcnew System::Windows::Forms::Label());
this->button3 = (gcnew System::Windows::Forms::Button());
Trang 24this->panel2 = (gcnew System::Windows::Forms::Panel());
this->checkBox2 = (gcnew System::Windows::Forms::CheckBox());
this->label8 = (gcnew System::Windows::Forms::Label());
this->CircleProgressbar2 = (gcnew Bunifu::Framework::UI::BunifuCircleProgressbar());this->label5 = (gcnew System::Windows::Forms::Label());
this->button2 = (gcnew System::Windows::Forms::Button());
this->panel1 = (gcnew System::Windows::Forms::Panel());
this->checkBox1 = (gcnew System::Windows::Forms::CheckBox());
this->label7 = (gcnew System::Windows::Forms::Label());
this->CircleProgressbar1 = (gcnew Bunifu::Framework::UI::BunifuCircleProgressbar());this->label4 = (gcnew System::Windows::Forms::Label());
this->button1 = (gcnew System::Windows::Forms::Button());
this->comboBox1 = (gcnew System::Windows::Forms::ComboBox());
this->comboBox2 = (gcnew System::Windows::Forms::ComboBox());
this->label2 = (gcnew System::Windows::Forms::Label());
this->label3 = (gcnew System::Windows::Forms::Label());
this->panel11 = (gcnew Bunifu::Framework::UI::BunifuGradientPanel());
this->label1 = (gcnew System::Windows::Forms::Label());
this->button4 = (gcnew Bunifu::Framework::UI::BunifuThinButton2());
this->panel10 = (gcnew Bunifu::Framework::UI::BunifuGradientPanel());
this->button5 = (gcnew Bunifu::Framework::UI::BunifuThinButton2());
this->button6 = (gcnew Bunifu::Framework::UI::BunifuThinButton2());
this->timer2 = (gcnew System::Windows::Forms::Timer(this->components));
this->panel3->SuspendLayout();
this->panel5->SuspendLayout();
(cli::safe_cast<System::ComponentModel::ISupportInitialize^>(this->chart1))->BeginInit();this->panel8->SuspendLayout();
(cli::safe_cast<System::ComponentModel::ISupportInitialize^>(this->trackBar2))->BeginInit();(cli::safe_cast<System::ComponentModel::ISupportInitialize^>(this->trackBar1))->BeginInit();this->panel9->SuspendLayout();
Trang 25this->button8->ActiveLineColor = System::Drawing::SystemColors::MenuHighlight;this->button8->BackColor = System::Drawing::SystemColors::Control;
this->button8->IdleCornerRadius = 20;
this->button8->IdleFillColor = System::Drawing::Color::White;
this->button8->IdleForecolor = System::Drawing::SystemColors::ActiveCaptionText;this->button8->IdleLineColor = System::Drawing::Color::DodgerBlue;
Trang 27chartArea1->AxisY->LineColor = System::Drawing::Color::Blue;
chartArea1->AxisY->MajorGrid->LineColor = System::Drawing::SystemColors::Control;chartArea1->BackColor = System::Drawing::SystemColors::Control;
chartArea1->BorderColor =
System::Drawing::Color::FromArgb(static_cast<System::Int32>(static_cast<System::Byte>(64)), static_cast<System::Int32>(static_cast<System::Byte>(64)),
Trang 29this->label28->ForeColor = System::Drawing::SystemColors::ActiveCaptionText;this->label28->Location = System::Drawing::Point(291, 198);
this->label28->Margin = System::Windows::Forms::Padding(2, 0, 2, 0);
this->label28->Name = L"label28";
this->label28->Size = System::Drawing::Size(15, 16);