Webcam quét QR

Một phần của tài liệu HD4 nguyễn anh tú nghiên cứu, thiết kế hệ thống phân loại sản phẩm theo QR code (Trang 56)

Hình 3.14: Webcam QR Thông số kỹ thuật - Độ phân giải: 1920*1080p. - Tốc độ khung hình: 30fps. - Micro: Tích hợp micro. - Phạm vi lấy nét: 20mm. - Kích thước: 70 x 50,7 x 44 (mm). 3.4 Xây dựng phần mềm giám sát hệ thống

Hình 3.16: Giao diện trên Visual Studio

3.5 Chế tạo, thử nghiệm và đánh giá hệ thống

3.5.1 Lắp ráp

Hình 3.18: Mô hình khi hoàn thành

3.5.2 Kết quả thử nghiệm

Khi hệ thống hoạt động ở chế độ Manual

Các nút bấm phản hồi nhanh, tốc độ phản hồi <0.5s. Băng tải hoạt động trơn tru ở nhiều kích thước vật được cho phép, tay máy gắp vật ở đúng vị trí

Khi hệ thống hoạt động ở chế độ Auto

Camera nhận diện chính xác theo QR code có sẵn, tốc độ phản hồi nhanh, không bị nhiễu tín hiệu, cảm biến tiệm cận hoạt động bình thường

Lần đo Thời gian vật di chuyển hết băng tải

(giây)

Thời gian xy lanh Phân loại vật (giây) 1 5,2 s 7,5 s 2 5,18 s 7,6 s 3 5,2 s 7,55 s 4 5,21 s 7,5 s 5 5,2 s 7,56 s

Trong khoảng thời gian 1 phút hệ thống có thể phân loại được trung bình 5 sản phẩm qua các lần thử nghiệm với điều kiện lí tưởng ( Cảm biến không bị nhiễu ,động cơ không bị trượt bước,…). Số sản phẩm phân loại hoàn toàn chính xác không bị lỗi

3.5.3 Đánh giá

Ưu điểm:

-Mô hình hoạt động ổn định

-Tốc độ phản hồi tín hiệu phù hợp với yêu cầu

-Kết cấu hệ thống cơ khí chắc chắn hoạt động trơn tru -Các bộ phận dễ dàng có thế thay thế khi hỏng hóc Nhược điểm:

-Hệ thống vẫn chưa tối ưu tốt nhất về thời gian phân loại

-Các thành phần cơ khí sẽ quay về vị trí cũ nếu xảy ra tình huống mất điện

KẾT LUẬN VÀ ĐỀ XUẤT

-Kết luận

Trải qua quá trình nghiên cứu và hoàn thiện đề tài nhóm đã thiết kế và mô phỏng và làm sản phẩm “ Mô hình phân loại sản phẩm bằng QR” , đã học hỏi được nhiều kiến thức:

+ Sử dụng các phần mềm như Solid Work thiết kế các thành phần cơ khí trong mô hình, xuất bản vẽ

+ Sử dụng phần mềm TIA Portal để lập trình điều khiển PLC cũng như mô phỏng giám sát trên máy tính

+ Sử dụng phần mềm Visual Studio để lập trình Windows Form thiết kế giao diện điều khiển giám sát trên máy tính

+ Các thành viên trong nhóm rèn luyện kĩ năng về thiết kế, xuất bản vẽ, quy trình làm việc nhóm

Mặc dù khi thực hiện đề tài nhóm đã gặp phải những khó khăn do hạn chế về mặt kinh nghiệm nhưng đề tài vẫn hoàn thiện đúng tiến độ đặt ra. Trong

tương lai khi nhóm cải thiện được nhiều kĩ năng đề tải có thể cái thiện thêm nhiều chức năng hơn nữa

-Đề xuất

+ Tối ưu hóa khung cơ khí để hệ thống có thể vũng trãi hơn

+ Thêm chức năng khi mất điện hệ thống sẽ lưu lại vị trí khi đang làm việc + Có thể điều khiển giám sát qua mạng internet

TÀI LIỆU THAM KHẢO

[1] Nguyễn Hữu Lộc; Cơ sở thiết kế máy, Đại học Quốc gia thành phố Hồ Chí Minh.

[2] TS. Nguyễn Như Hiển - TS. Nguyễn Mạnh Tùng; Điều khiển logic và PLC, Hà Nội: NXB Khoa học tự nhiên và công nghệ, 2007. [3] Nguyễn Tuấn Linh; Giáo trình Chi tiết máy, Hà Nội: GDVN, 2014. [4] Khoa Cơ khí, Bộ môn CĐT; Lý thuyết điều khiển tự động, Trường

Đại học công nghiệp Hà Nội.

[5] Trịnh Chất - Lê Văn Uyển; Tính toán thiết kế hệ dẫn động cơ khí tập 1, Hà Nội: NXB Giáo dục, 2006. [6] https://abm-vietnam.com/may-phan-loai-san-pham-theo-kich- thuoc. [7] https://tae.vn/mach-dieu-khien-dong-co-buoc-tb660. [8] https://muasamso.vn/cam-bien-quang-dien-e3f-ds30c4- d17971053.htm. [9] https://donghogiatot.com/to-ong-nguon-xung-24v-cac-loai- nsh4049581871.htm. [10] https://thietbibenthanh.com/aptomat--mcb-bkn-ls-716-15.htm.

PHỤ LỤC

Bảng địa chỉ

Địa chỉ Tên thiết bị

I0.0 Start I0.1 Stop I0.2 Cảm biến 1 I0.3 Cảm biến 2 Q0.0 Phát xung Q0.1 Phát hướng Q0.2 Xy lanh 1 Q0.3 Xy lanh 2 Q0.4 Xy lanh 3 Q0.5 Xy lanh 4 M0.0 Start_wincc M0.1 Stop_wincc M0.2 Start_tt1 M0.3 Start_tt2 M0.4 Start_tt3 M0.5 Duytri_tt1 M0.6 Duytri_tt2 M0.7 Duytri_3 M1.0 Btn_manual M1.1 Btn_auto M1.2 Mode M1.3 Xoa_sl

Chương trình điếu khiển C# using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq;

using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using AForge.Video; using AForge.Video.DirectShow; using MessagingToolkit.QRCode.Codec.Data; using System.Threading; using ZXing; using System.IO; using System.IO.Ports; using System.Data.SqlClient; using S7.Net; using S7.Net.Types; namespace giaodiendieukhien {

public partial class Form1 : Form { int mode = 0; Plc plc; Image img; Image img_qr_auto; Thread checking;

private FilterInfoCollection cameras; private VideoCaptureDevice cam;

public Form1() {

InitializeComponent(); cameras = new

FilterInfoCollection(FilterCategory.VideoInputDevice); foreach(FilterInfo info in cameras )

{

cbb_cam.Items.Add(info.Name); }

cbb_cam.SelectedIndex = 0; }

private void Form1_Load(object sender, EventArgs e) {

mode = 0;

grb_camera.Enabled = true;

grb_camera.BackColor = Color.Silver; }

private void btn_makeqr_Click(object sender, EventArgs e) {

if (tb_obj.Text != "" && cbb_vitri.Text != "") {

QRCoder.QRCodeGenerator qr = new QRCoder.QRCodeGenerator();

var data = qr.CreateQrCode(nd, QRCoder.QRCodeGenerator.ECCLevel.H);

var code = new QRCoder.QRCode(data); ptb_makeqr.Image = code.GetGraphic(10); }

else {

MessageBox.Show("Vui lòng nhập đủ thông tin !!!","Thông báo"); }

}

private void btn_save_Click(object sender, EventArgs e) {

img = ptb_makeqr.Image;

SaveFileDialog sf = new SaveFileDialog(); sf.Filter = "JPG(*.JPG)|*.jpg"; if(sf.ShowDialog()==DialogResult.OK) { img.Save(sf.FileName); } }

private void btn_start_auto_Click(object sender, EventArgs e) {

timer_checkqr.Enabled = true; if(cam!=null && cam.IsRunning)

{ cam.Stop(); } cam = new VideoCaptureDevice(cameras[cbb_cam.SelectedIndex].MonikerString); cam.NewFrame += cam_NewFrame; cam.Start(); }

void cam_NewFrame(object sender, NewFrameEventArgs eventArgs) {

Bitmap bm = (Bitmap)eventArgs.Frame.Clone(); ptb_qr.Image = bm;

}

private void btn_stop_auto_Click(object sender, EventArgs e) {

if (cam != null && cam.IsRunning) {

cam.Stop();

PictureBox ptb = new PictureBox(); ptb.BackColor = Color.LightGray; ptb_qr.Image = ptb.Image;

} }

protected override void OnClosed(EventArgs e) {

base.OnClosed(e);

if (cam != null && cam.IsRunning) {

cam.Stop(); }

}

private void check_qr() { while (true) { try { if (ptb_qr.Image != null) { MessageBox.Show("run"); img_qr_auto = ptb_qr.Image; MessagingToolkit.QRCode.Codec.QRCodeDecoder decoder = new MessagingToolkit.QRCode.Codec.QRCodeDecoder(); tb_ndqr.Text = decoder.Decode(new QRCodeBitmapImage(ptb_qr.Image as Bitmap)); } }

catch {

} } }

private void timer_checkqr_Tick(object sender, EventArgs e) { try { if (ptb_qr.Image != null) { //MessageBox.Show("run"); img_qr_auto = ptb_qr.Image;

BarcodeReader reader = new BarcodeReader(); var result = reader.Decode(img_qr_auto as Bitmap); if (result != null)

{ try {

tb_ndqr.Text = result.ToString(); string input = tb_ndqr.Text;

byte[] data_byte = S7.Net.Types.String.ToByteArray(input); //convert

List<byte> values = new List<byte>(); byte maxLength = (byte)input.Length;

byte actuaLength = (byte)input.Length; values.Add(maxLength); values.Add(actuaLength); values.AddRange(data_byte); // end convert //if (plc.IsConnected) //{ // int dbnumber=25; // int start_add=0; // plc.WriteBytes(DataType.DataBlock, dbnumber, start_add,values.ToArray());

// //MessageBox.Show("Kết nối thành công", "Thông báo");

//} //else //{

// MessageBox.Show("Kết nối không thành công", "Thông báo");

//}

// van hanh tu dong

if (input.IndexOf("vitri1") != -1) { if (plc.IsConnected) { plc.Write("M0.2", 1); plc.Write("M0.2", 0);

//MessageBox.Show("Kết nối thành công", "Thông báo");

} else {

MessageBox.Show("Kết nối không thành công", "Thông báo"); } } if (input.IndexOf("vitri2") != -1) { if (plc.IsConnected) { plc.Write("M0.3", 1); plc.Write("M0.3", 0);

//MessageBox.Show("Kết nối thành công", "Thông báo");

} else {

MessageBox.Show("Kết nối không thành công", "Thông báo");

} }

if (input.IndexOf("vitri3") != -1) {

if (plc.IsConnected)

{

plc.Write("M0.4", 1); plc.Write("M0.4", 0); //MessageBox.Show("Kết nối thành công", "Thông báo"); }

else {

MessageBox.Show("Kết nối không thành công", "Thông báo"); } } } catch { } } } } catch { } } // hiệu ứng nhấn nút

private void btn_start_auto_MouseDown(object sender, MouseEventArgs e)

{

btn_start_auto.BackColor = Color.Gray; }

private void btn_start_auto_MouseUp(object sender, MouseEventArgs e) {

btn_start_auto.BackColor = Color.Silver; }

private void btn_stop_auto_MouseDown(object sender, MouseEventArgs e)

{

btn_stop_auto.BackColor = Color.Gray; }

private void btn_stop_auto_MouseUp(object sender, MouseEventArgs e) {

btn_stop_auto.BackColor = Color.Silver; }

private void btn_makeqr_MouseDown(object sender, MouseEventArgs e)

{

btn_makeqr.BackColor = Color.Silver; }

private void btn_save_MouseDown(object sender, MouseEventArgs e) {

btn_save.BackColor = Color.Silver; }

private void btn_makeqr_MouseUp(object sender, MouseEventArgs e) {

btn_makeqr.BackColor = Color.Gray; }

private void btn_save_MouseUp(object sender, MouseEventArgs e) {

btn_save.BackColor = Color.Gray; }

// s7.net

private void btn_test_connect_Click(object sender, EventArgs e) {

plc = new Plc(CpuType.S71200,tb_ip_plc.Text, 0, 1); plc.Open();

if (plc.IsConnected) {

MessageBox.Show("Kết nối thành công", "Thông báo"); //plc.Close();

} else {

} }

private void btn_run_Click(object sender, EventArgs e) {

if (plc.IsConnected) {

plc.Write("M0.0", 1); plc.Write("M0.0", 0);

MessageBox.Show("Kết nối thành công", "Thông báo"); }

else {

MessageBox.Show("Kết nối không thành công", "Thông báo"); }

}

private void btn_stop_Click(object sender, EventArgs e) {

if (plc.IsConnected) {

plc.Write("M0.1", 1); plc.Write("M0.1", 0);

MessageBox.Show("Kết nối thành công", "Thông báo"); }

else {

} }

private void btn_xoa_sl_Click(object sender, EventArgs e) {

if (plc.IsConnected) {

plc.Write("M1.3", 1); plc.Write("M1.3", 0);

//MessageBox.Show("Kết nối thành công", "Thông báo"); }

else {

MessageBox.Show("Kết nối không thành công", "Thông báo"); }

}

private void tb_ip_plc_TextChanged(object sender, EventArgs e) {

}

private void ptb_qr_Click(object sender, EventArgs e) {

} } }

Tay máy về vị trí mặc định Start S Máy tính xử lý tín hiệu Thực hiện tiến trình tương ứng Auto Manual Tiến trình 1 Tiến trình 2 Tiến trình 3 BT1 BT2 BT3 Stop Kết thúc S S S S S S Đ Đ Đ Đ Đ Đ Đ Tr.nhiệm Thiết kế Hướng dẫn Duyệt Họ và tên Vũ Minh Hiếu Ts.Nguyễn Anh Tú

Chữ kí Ngày Số lượng: 1 Khối lượng: 0

Tờ: 1 Số tờ: 1 Tỉ lệ

Trường đại học Công nghiệp Hà Nội

ĐỒ ÁN TỐT NGHIỆP

PHÂN LOẠI SẢN PHẦM THEO MÃ QR

LƯU ĐỒ THUẬT TOÁN ĐIỀU KHIỂN

Tr.nhiệm Thiết kế Hướng dẫn

Duyệt

Họ và tên Lưu Thanh Hòa Ts.Nguyễn Anh Tú

Chữ kí Ngày Số lượng: 1 Khối lượng: 0

Tờ: 1 Số tờ: 1 Tỉ lệ

Trường đại học Công nghiệp Hà Nội

ĐỒ ÁN TỐT NGHIỆP

PHÂN LOẠI SẢN PHẨM THEO MÃ QR

BẢN VẼ HỆ THỐNG ĐIỀU KHIỂN 24VDC GND off on cảm biến tc 2 cảm biến tc 1 B- B+ A- A+ GND 24V EN+ EN- CW- CW+ CLK- CLK+ X Q0.1 Q0.0 Q0.0 Q0.1 K1 K2 K3 K4

2 3 4 5 6 7 8 9 10 11 12 17 16 15 14 13 20 19 18 21 Nhóm 3 Ts.Nguyễn Anh Tú ĐỒ ÁN TỐT NGHIỆP

PHÂN LOẠI SẢN PHẨM THEO MÃ QR BẢN VẼ LẮP

STT Chi tiết Mô tả SL

1 WebCam 1 2 Xilanh nâng hạ 1 3 Xilanh gắp 1 4 Motor 1 5 Con lăn 2 6 Gá cảm biến 2 7 Gá Motor 1 8 Puly 2 9 Dây belt 1 10 Xilanh quay 1 11 Xilanh vươn 1 12 Khung hệ thống Nhôm định hình 1 13 Nút nhấn Nút nhấn Start/Stop 2 14 PLC S7-1200 1 15 Relay 1 16 Driver TB6600 1 17 Nguồn 24V 1 18 Van 5/2 4 19 Khung đỡ xy lanh 1 20 Khung đỡ WebCam 1 21 Băng tải 1 Tr.nhiệm Thiết kế Hướng dẫn Duyệt Chữ ký

Họ và Tên Số lượng: Khối lượng: Tờ: Tỉ lệ:

Trường: Đại Học Công Nghiệp Hà nội Số tờ:

Một phần của tài liệu HD4 nguyễn anh tú nghiên cứu, thiết kế hệ thống phân loại sản phẩm theo QR code (Trang 56)