Tên đề tài :Thiết kế hệ thống giám sát không dây trong công nghiệp ứng dụng công nghệ Lora Nội dung chính trong đề tài: Hệ thống giám sát được viết bằng C trên Visual Studio. Phần thực thi sử dụng Arduino để điều khiển đối tượng là động cơ một chiều.
TRƯỜNG ĐẠI HỌC MỎ ĐỊA -CHẤT BÁO CÁO TỔNG KẾT ĐỀ TÀI NCKH SINH VIÊN THIẾT KẾ HỆ THỐNG ĐIỀU KHIỂN GIÁM SÁT KHÔNG DÂY TRONG CÔNG NGHIỆP ỨNG DỤNG CÔNG NGHỆ LORA Hà Nội, 05/2019 TRƯỜNG ĐẠI HỌC MỎ - ĐỊA CHẤT BÁO CÁO TỔNG KẾT ĐỀ TÀI NCKH SINH VIÊN THIẾT KẾ HỆ THỐNG ĐIỀU KHIỂN GIÁM SÁT KHÔNG DÂY TRONG CÔNG NGHIỆP ỨNG DỤNG CÔNG NGHỆ LORA - Trưởng nhóm nghiên cứu: Vương Cảnh Trí, Tự động hóa A-K60 - Thành viên tham gia thực hiện: + Nguyễn Thành Đạt, Tự động hóa A-K60 + Ngơ Tuệ Hải, Tự động hóa A-K60 + Bì Quốc Vương, Tự động hóa D-K61 + Nguyễn Ngọc Quảng, Tự động hóa D-K61 Người hướng dẫn: Ths Đào Hiếu Hà Nội, 05/2019 Mục Lục MỞ ĐẦU Lora vai trò hệ thống điều khiển giám sát cơng nghiệp: • Vai trò hệ thống điều khiển giám sát cơng nghiệp: tự động hóa cơng nghiệp, việc điều khiển hệ thống công việc thiếu Một hệ thống có điều khiển khơng thơi khơng đảm bảo yêu cầu kỹ thuật đề ra, điều khiển đôi với việc giám sát thu thập liệu để từ hệ thống có thơng tin phản hồi cho tín hiệu điều chỉnh xác Hệ thống điều khiển giám sát kết nối người quản lý với tồn thơng tin giao diện trình duyệt máy tính Từ giao diện này, người quản lý quan sát điều khiển thiết bị từ hình máy tính • LoRa: công nghệ không dây phát triển phép truyền tốc độ liệu thấp khoảng cách lớn cảm biến truyền động cho M2M IoT ứng dụng IoT LoRa hướng tới kết nối M2M khoảng cách lớn Nó hỗ trợ liên lạc khoảng cách lên tới 15 – 20 km, với hàng triệu nút mạng Nó hoạt động băng tần cấp phép, với tốc độ thấp từ 0,3kbps đến khoảng 30kbps Với đặc tính này, mạng LoRa phù hợp với thiết bị thông minh trao đổi liệu mức thấp trì thời gian dài Thực tế thiết bị LoRa trì kết nối chia sẻ liệu thời gian lên đến 10 năm với lượng pin Một mạng LoRa cung cấp vùng phù sóng tương tự mạng di động Trong số trường hợp, ăng-ten Lora kết hợp với ăng-ten di động tần số gần nhau, giúp tiết kiệm đáng kể chi phí Cơng nghệ khơng dây LoRa đánh giá lý tưởng để sử dụng loạt ứng dụng, bao gồm: định lượng thông minh, theo dõi hàng tồn kho, giám sát liệu máy bán hàng tự động, ngành công nghiệp ô tơ, ứng dụng tiện ích lĩnh vực mà cần báo cáo kiểm soát liệu Trong bối cảnh nay, truyền thông cơng nghiệp ngày đòi hỏi cao tốc độ, khả xử lý, khoảng cách ngày gia tăng, tốn lượng truyền So với cách truyền truyền thống sử dụng truyền thơng có dây, tốn nhiều chi phí dây, nguy bị hư hỏng, gián đoạn cao Nhận thấy công nghệ Lora đáp ứng yêu cầu nêu Vì vậy, chúng em dựa hướng dẫn thầy giáo Ths.Đào Hiếu đưa nghiên cứu đề tài ứng dụng công nghệ Lora để thiết kế hệ thống điều khiển giám sát không dây cơng nghiệp Xây dựng tốn phạm vi nghiên cứu khoa học: Xác định đề tài nghiên cứu Đề tài giám sát điều khiển động chiều công nghiệp ứng dụng công nghệ LORA Xác định câu hỏi, giả thiết phương pháp nghiên cứu - Xác định phương pháp điều khiển động chiều: sử dụng phương pháp băm xung PWM để thay đổi giá trị điện áp trung bình, qua thay đổi tốc độ động chiều cách thay đổi giá trị điện áp phần ứng - Cách truyền nhận liệu: sử dụng chuẩn giao tiếp UART để truyền phát thông qua module LORA - Cách mã hóa liệu truyền: truyền chuỗi liệu thông qua cổng COM module LORA Dữ liệu cắt chuỗi giải mã vi điều khiển gắn với động - Cách thức điều khiển: Sử dụng giao diện thiết kế máy tính kết nối với cổng COM - Các thông số cần giám sát: Tốc độ, chiều quay, điện áp phần ứng, dòng điện - Xác định lựa chọn cảm biến, linh kiện cần sử dụng Xây dựng đề cương lập kế hoạch nghiên cứu Thu thập liệu xử lý liệu Viết báo cáo kết nghiệm thu Từ đề tài nghiên khoa học nhóm điều khiển giám sát động chiều ứng dụng phòng thí nghiệm tương lai khơng xa nhóm tiếp tục nghiên cứu phát triển thành hệ thống có quy mơ lớn hơn, xây dựng mạng điều khiển nhiều thiết bị có độ xác cao hơn, khoảng cách xa hơn, tiện lợi giảm tối đa chi phí Tình hình nghiên cứu liên quan đến đề tài: • Với ưu điểm vượt trội LoRa mang lại, giới ứng dụng chuẩn không dây LoRa thay cho chuẩn không dây cũ vào nhiều ứng dụng outdoor indoor trước Smart Campus, Smart Home, Smart Parking, Air Pollution Monitoring, • Bên cạnh có cơng nghệ khác: - Truyền thơng khơng dây qua vệ tinh: có tần số khoảng từ 11đến 14 GHz vận tốc truyền từ đến 10 Mbps - Bluetooth: có tần số từ 2.402 GHz đến 2.480 GHz Bluetooth dùng lượng khoảng cách ngắn - Wi-fi: có băng tần số dùng cho Wi-fi: 2.4, 3.6, 4.9, 5.9 GHz - Truyền sóng radio: sóng radio có độ dài sóng từ 1m đến 100km tức có tần số từ 300 MHz đến KHz Mục đích, nhiệm vụ đề tài: Mục đích: - Nhằm nâng cao kĩ làm việc nhóm sinh viên - Củng cố kiến thức học, tạo điều kiện cho sinh viên có hội vận dụng ứng dụng vào làm sản phẩm thật - Giúp sinh viên nghiên cứu tìm hiểu thêm kiến thức ngồi chương trình giảng dạy Nhiệm vụ: Giám sát tham số động chiều phòng thí nghiệm Đối tượng phạm vi nghiên cứu đề tài báo cáo: Đối tượng nghiên cứu: • Hệ thống giám sát • Cơng nghệ Lora • Động chiều Phạm vi nghiên cứu: Điều khiển giám sát thông số động chiều sử dụng module truyền thơng khơng dây Các phương pháp nghiên cứu: • Phương pháp nghiên cứu lý thuyết - • Phương pháp phân tích tổng hợp lý thuyết Phương pháp phân loại hệ thống hóa lý thuyết Phương pháp mơ hình hóa Phương pháp nghiên cứu thực nghiệm - Phương pháp quan sát khoa học Phương pháp thực nghiệm khoa học Phương pháp phân tích tổng kết kinh nghiệm Phương pháp chuyên gia Kết cấu đề tài báo cáo: Phần Mở Đầu Chương I: Tìm hiểu chung lora Chương II: Xây dựng toán điều khiển giám sát động chiều 2.1 Yêu cầu toán 2.2 Các phương pháp điều khiển động chiều truyền phát 2.3 Các thiết bị sử dụng 2.4 Sơ đồ cấu trúc mô hình ghép nối Chương III: Kết nghiên cứu 3.1 Giao diện 3.2 Truyền thơng 3.3 Thuật tốn điều khiển động 3.4 Thuật toán đo lường tốc độ Kết Luận Phụ Lục CHƯƠNG I: TÌM HIỂU CHUNG VỀ LORA 1.1 Khái niệm LoRa viết tắt Long Range Radio nghiên cứu phát triển Cycleo sau mua lại công ty Semtech năm 2012 Với công nghệ này, truyền liệu với khoảng cách lên hàng km mà không cần mạch khuếch đại công suất; từ giúp tiết kiệm lượng tiêu thụ truyền/nhận liệu Do đó, LoRa áp dụng rộng rãi ứng dụng thu thập liệu sensor network sensor node gửi giá trị đo đạc trung tâm cách xa hàng km hoạt động với battery thời gian dài trước cần thay pin 1.2 Nguyên lý hoạt động LoRa sử dụng kỹ thuật điều chế gọi Chirp Spread Spectrum Có thể hiểu nôm na nguyên lý liệu băm xung cao tần để tạo tín hiệu có dãy tần số cao tần số liệu gốc (cái gọi chipped); sau tín hiệu cao tần tiếp tục mã hố theo chuỗi chirp signal (là tín hiệu hình sin có tần số thay đổi theo thời gian; có loại chirp signal up-chirp có tần số tăng theo thời gian down-chirp có tần số giảm theo thời gian; việc mã hoá theo nguyên tắc bit sử dụng up-chirp, bit sử dụng down-chirp) trước truyền anten để gửi Theo Semtech cơng bố ngun lý giúp giảm độ phức tạp độ xác cần thiết mạch nhận để giải mã điều chế lại liệu; LoRa không cần công suất phát lớn mà truyền xa tín hiệu Lora nhận khoảng cách xa độ mạnh tín hiệu thấp nhiễu môi trường xung quanh Băng tần làm việc LoRa từ 430MHz đến 915MHz cho khu vực khác giới: • 430MHz cho châu Á • 780MHz cho Trung Quốc • 433MHz 866MHz cho châu Âu • 915MHz cho USA Nhờ sử dụng chirp signal mà tín hiệu LoRa với chirp rate khác hoạt động khu vực mà không gây nhiễu cho Điều cho phép nhiều thiết bị LoRa trao đổi liệu nhiều kênh đồng thời (mỗi kênh cho chirprate) Radio packet LoRa hình sau: Các liệu radio packet LoRa, bao gồm: • Preamble: Là chuỗi binary để nhận detect tín hiệu LoRa packet khơng khí • Header: chứa thơng tin size Payload có PayloadCRC hay khơng Giá trị Header check CRC kèm theo • Payload: liệu ứng dụng truyền qua LoRa • Payload: giá trị CRC Payload Nếu có PayloadCRC, LoRa chip tự kiểm tra liệu Payload báo lên CRC OK hay không 1.3 Module giao tiếp khơng dây theo chuẩn Lora • Module HC-12 có vi điều khiển mà người dùng thực khơng cần phải lập trình Để cấu hình mô-đun, cần sử dụng lệnh AT, gửi từ Arduino, PC vi điều khiển khác cổng nối tiếp Để vào chế độ lệnh AT, cần đặt chân Bộ cài đặt mô-đun mức logic thấp • HC-12 máy thu phát có khả thu phát tín hiệu với phạm vi ấn tượng (lên tới 1km) Nó thỏa đáng cho hầu hết sở thích chí số ứng dụng cơng nghiệp Nó thay quan trọng cho nRF24L01 rẻ, lượng thấp tầm ngắn Mặc dù chi phí cao chút so với nRF24L01, phạm vi cách sử dụng đơn giản khiên HC-12 trở thành lựa chọn tuyệt vời cho dự án liên quan đến theo dõi 67 this.groupBox3.TabStop = false; // // label2 // this.label2.AutoSize = true; this.label2.Font = new System.Drawing.Font("Papyrus", 13.8F, ((System.Drawing.FontStyle)((System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic))), System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.label2.ForeColor = System.Drawing.SystemColors.ControlLightLight; this.label2.Location = new System.Drawing.Point(129, 18); this.label2.Name = "label2"; this.label2.Size = new System.Drawing.Size(331, 38); this.label2.TabIndex = 0; this.label2.Text = "Design by Canh Tri Vuong"; // // timer1 // this.timer1.Tick += new System.EventHandler(this.timer1_Tick); // // Form1 // this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(945, 581); 68 this.Controls.Add(this.groupBox3); this.Controls.Add(this.groupBoxGiamSat); this.Controls.Add(this.groupBoxDieuKhien); this.Controls.Add(this.groupBox2); this.Controls.Add(this.groupBox1); this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.MaximizeBox = false; this.Name = "Form1"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = "Giám sát điều khiển"; this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Form1_FormClosing); this.Load += new System.EventHandler(this.Form1_Load); this.groupBox1.ResumeLayout(false); this.groupBox1.PerformLayout(); this.groupBox2.ResumeLayout(false); this.groupBox2.PerformLayout(); this.groupBoxDieuKhien.ResumeLayout(false); this.groupBoxDieuKhien.PerformLayout(); this.groupBoxGiamSat.ResumeLayout(false); this.groupBoxGiamSat.PerformLayout(); this.groupBoxTocDo2.ResumeLayout(false); this.groupBoxTocDo1.ResumeLayout(false); 69 this.groupBoxThongSo.ResumeLayout(false); this.groupBoxThongSo.PerformLayout(); this.groupBox3.ResumeLayout(false); this.groupBox3.PerformLayout(); this.ResumeLayout(false); } #endregion private System.Windows.Forms.GroupBox groupBox1; private System.Windows.Forms.Label lblCom; private System.Windows.Forms.ComboBox cbxCom; private System.Windows.Forms.Label lblStopBit; private System.Windows.Forms.Label lblBaudRate; private System.Windows.Forms.Label lblDataBit; private System.Windows.Forms.ComboBox cbxStopBit; private System.Windows.Forms.ComboBox cbxBaud; private System.Windows.Forms.ComboBox cbxDataBit; private System.Windows.Forms.Label lblParityBit; private System.Windows.Forms.ComboBox cbxParityBit; private System.Windows.Forms.Button button1; private System.Windows.Forms.GroupBox groupBox2; private System.Windows.Forms.ProgressBar progressBar1; 70 private System.Windows.Forms.Label lblStatus; private System.IO.Ports.SerialPort serialPort1; private System.Windows.Forms.GroupBox groupBoxDieuKhien; private System.Windows.Forms.RadioButton rabThietbi2; private System.Windows.Forms.RadioButton rabThietbi1; private System.Windows.Forms.Label lblChieu; private System.Windows.Forms.Label label1; private System.Windows.Forms.Label label3; private System.Windows.Forms.ComboBox comboBox1; private System.Windows.Forms.TextBox textBox1; private System.Windows.Forms.Button btnStop; private System.Windows.Forms.Button btnOk; private System.Windows.Forms.GroupBox groupBoxGiamSat; private System.Windows.Forms.GroupBox groupBoxTocDo1; private CircularProgressBar.CircularProgressBar circularProgressBar3; private System.Windows.Forms.GroupBox groupBoxThongSo; private System.Windows.Forms.GroupBox groupBoxTocDo2; private CircularProgressBar.CircularProgressBar circularProgressBar1; private System.Windows.Forms.TextBox txtDong; private System.Windows.Forms.Label lblAp; private System.Windows.Forms.Label lblDong; private System.Windows.Forms.Label lblChieuR; private System.Windows.Forms.TextBox txtCHIEU; private System.Windows.Forms.TextBox txtAp; 71 private System.Windows.Forms.Label lblA; private System.Windows.Forms.Label lblV; private System.Windows.Forms.GroupBox groupBox3; private System.Windows.Forms.Label label2; private System.Windows.Forms.Timer timer1; } } Chương trình Giám sát điều khiển.cs using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; 72 using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.IO.Ports; namespace Dieu_khien giam_sat { public partial class Form1 : Form { string dataOut; string dataIn; string NumberControl; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { textBox1.Enabled = false; comboBox1.Enabled = false; circularProgressBar3.Value = 0; circularProgressBar1.Value = 0; comboBox1.SelectedIndex = 0; groupBoxGiamSat.Enabled = false; groupBoxDieuKhien.Enabled = false; string[] Ports = SerialPort.GetPortNames(); int[] ComNumberList = new int[Ports.Length]; 73 for (int i = 0; i < Ports.Length; i++) { ComNumberList[i] = int.Parse(Ports[i].Substring(3)); } Array.Sort(ComNumberList); foreach (int ComNumber in ComNumberList) { cbxCom.Items.Add("COM" + ComNumber.ToString()); } bool found = false; foreach (string str in cbxCom.Items) { if (str == Properties.Settings.Default.PortName) { found = true; break; } } if (found) { cbxCom.Text = Properties.Settings.Default.PortName; } else { } } private void SaveSetting() 74 { Properties.Settings.Default.PortName = cbxCom.Text; Properties.Settings.Default.Save(); } private void button1_Click(object sender, EventArgs e) { if (serialPort1.IsOpen) { serialPort1.Close(); button1.Text = "Kết nối"; lblStatus.Text = "Chưa kết nối"; progressBar1.Value = 0; } else { try { serialPort1.PortName = cbxCom.Text; serialPort1.BaudRate = Convert.ToInt32(cbxBaud.Text); serialPort1.DataBits = Convert.ToInt32(cbxDataBit.Text); serialPort1.StopBits = (StopBits)Enum.Parse(typeof(StopBits),cbxStopBit.Text); serialPort1.Parity = (Parity)Enum.Parse(typeof(Parity), cbxParityBit.Text); serialPort1.Open(); progressBar1.Value = 100; button1.Text = "Ngắt kết nối"; lblStatus.Text = "Đã kết nối"; 75 groupBoxDieuKhien.Enabled = true; } catch (Exception err) { MessageBox.Show(err.Message,"Không thể kết nối", MessageBoxButtons.OK, MessageBoxIcon.Error); } } } private void rabThietbi1_CheckedChanged_1(object sender, EventArgs e) { groupBoxGiamSat.Enabled = true; groupBoxTocDo1.Enabled = true; groupBoxTocDo2.Enabled = false; NumberControl = "0"; textBox1.Enabled = true; comboBox1.Enabled = true; } private void rabThietbi2_CheckedChanged(object sender, EventArgs e) { groupBoxGiamSat.Enabled = true; groupBoxTocDo1.Enabled = false; groupBoxTocDo2.Enabled = true; NumberControl = "1"; textBox1.Enabled = true; comboBox1.Enabled = true; } 76 private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { // Xác thực phím vừa nhấn khơng phải CTRL dạng số if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && (e.KeyChar != '.')) { e.Handled = true; } } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { DialogResult ret = MessageBox.Show("Bạn thực muốn thốt?", "Thốt chương trình", MessageBoxButtons.YesNo, MessageBoxIcon.Question); if (ret == DialogResult.Yes) { e.Cancel = false; if (serialPort1.IsOpen) { serialPort1.Close(); } } else { e.Cancel = true; } SaveSetting(); } 77 private void btnOk_Click(object sender, EventArgs e) { if (textBox1.Text.Length 100) { MessageBox.Show("Vượt tốc độ phép","Tốc độ cho phép: 100RPM!!", MessageBoxButtons.OK, MessageBoxIcon.Error); } if (serialPort1.IsOpen) { dataOut = NumberControl + comboBox1.SelectedIndex + textBox1.Text; serialPort1.WriteLine(dataOut); } } private void btnStop_Click(object sender, EventArgs e) { if(textBox1.Text != "") { textBox1.Text = ""; 78 dataOut = NumberControl + "0" + "000"; serialPort1.WriteLine(dataOut); } } private void timer1_Tick(object sender, EventArgs e) { txtCHIEU.Text = comboBox1.Text; } private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e) { dataIn = serialPort1.ReadExisting(); this.Invoke(new EventHandler(ShowData)); } private void ShowData(object sender, EventArgs e) { if (dataIn.Substring(0, 1) == "0") { circularProgressBar3.Text = dataIn.Substring(2, 3); circularProgressBar3.Value = Convert.ToInt32(dataIn.Substring(2, 3)); if (rabThietbi1.Checked) { if (dataIn.Substring(1, 1) == "0") { txtCHIEU.Text = "Quay Thuận"; 79 } else { txtCHIEU.Text = "Quay Nghịch"; } } } else { circularProgressBar1.Text = dataIn.Substring(2, 3); circularProgressBar1.Value = Convert.ToInt32(dataIn.Substring(2, 3)); if (rabThietbi2.Checked) { if (dataIn.Substring(1, 1) == "0") { txtCHIEU.Text = "Quay Thuận"; } else { txtCHIEU.Text = "Quay Nghịch"; } } } if (circularProgressBar3.Value >= && circularProgressBar3.Value 50 && circularProgressBar3.Value 85 && circularProgressBar3.Value = && circularProgressBar3.Value 50 && circularProgressBar3.Value 85 && circularProgressBar3.Value