1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Quang báo LED ma trận RGB giao tiếp máy tính

67 7 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Quang Báo Led Ma Trận RGB Giao Tiếp Máy Tính
Tác giả Mai Quốc Hưng
Người hướng dẫn GVHD: Nguyễn Ngô Lâm
Trường học Trường Đại Học Sư Phạm Kỹ Thuật Thành Phố Hồ Chí Minh
Chuyên ngành Công Nghệ Kỹ Thuật Máy Tính
Thể loại Đồ Án Tốt Nghiệp
Năm xuất bản 2018
Thành phố Tp. Hồ Chí Minh
Định dạng
Số trang 67
Dung lượng 3,87 MB

Nội dung

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH ĐỒ ÁN TỐT NGHIỆP NGÀNH KỸ THUẬT MÁY TÍNH QUANG BÁO LED MA TRẬN RGB GIAO TIẾP MÁY TÍNH GVHD: NGUYỄN NGƠ LÂM SVTH: MAI QUỐC HƯNG MSSV: 13119089 SKL005222 Tp Hồ Chí Minh, tháng 01 - 2018 TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH KHOA ĐÀO TẠO CHẤT LƯỢNG CAO BÁO CÁO ĐỒ ÁN TỐT NGHIỆP ĐỀ TÀI: QUANG BÁO LED MA TRẬN RGB GIAO TIẾP MÁY TÍNH SVTH: Mai Quốc Hưng MSSV: 13119089 Ngành: Cơng nghệ kỹ thuật Máy Tính Khóa: 2013-2017 GVHD: Nguyễn Ngơ Lâm Tp Hồ Chí Minh, tháng 01 năm 2018 Đồ án tốt nghiệp Mục lục CHƯƠNG 1: TỔNG QUAN 1.1 Tình hình nghiên cứu nay: 1.2 Mục tiêu đề tài: 1.3 Đối tượng phạm vi nghiên cứu: 1.4 Giới hạn đề tài: 1.5 Bố cục đồ án: CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.1 Led RGB: 2.2 Bảng led RGB: 2.3 IC 74HC245: IC đệm mức điện áp truyền liệu 14 2.4 IC 74HC138:IC điều khiển hàng led ma trận 15 2.5 IC TLC5926: IC điều khiển màu RGB led ma trận 16 2.6 IC SSF4953: IC chốt, đống ngắt dòng điện 18 2.7 điểm ảnh: 192x96 = 18.432 điểm ảnh 19 2.8 Máy tính nhúng: 20 2.9 Tìm hiểu Kit raspberry pi 3: 20 2.10 Xử lý ảnh 24 2.11 Các chương trình …………………………………………………………………………… 26 CHƯƠNG 3: THIẾT KẾ VÀ XÂY DỰNG HỆ THỐNG .29 3.1 SƠ ĐỒ KHỐI HỆ THỐNG: 29 3.2 Thiết kế khối hệ thống: 30 3.3 THIẾT KẾ PHẦN MỀM 35 CHƯƠNG 4: KÊT́ QUẢ 44 4.1 KẾT QUẢ: 44 4.2 THỰC NGHIỆM 44 4.3 Nhận xét kết quả: 47 CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 48 Đồ án tốt nghiệp 5.1 KẾT LUẬN: 48 5.2 HƯỚNG PHÁT TRIỂN: 48 TÀI LIỆU THAM KHẢO 49 PHỤ LỤC 50 Đồ án tốt nghiệp DANH SÁCH CÁC HÌNH ẢNH, BIỂU ĐỒ Hình 1.1: Ứng dụng hình led P4 trung tâm tiệc cưới Đơng Trường Sơn Hình 2.1 Cấu tạo led RGB dán Hình 2.2 Sơ đồ chân kích thước led RGB dán Hình 2.3 Panel led P5 Hình 2.4 Mặt sau panel led P5 Hình 2.5 cổng kết nối HUB75 thực tế Hình 2.6 Dây bus gắn vào HUB75, chuyên dụng cho hình LED Hình 2.7 Sơ đồ kết nối IC điều khiển panel led Hình 2.8 Sơ đồ nguyên lý module LED RGB Hình 2.9 Sơ đồ chân IC 74HC245 Hình 2.10 Sơ đồ chân IC 74HC138 Hình 2.11 Sơ đồ chân IC TLC5926 Hình 2.12 Giản đồ xung IC TLC5926/TLC5927 Hình 2.13 IC SSF4953 Hình 2.14 Mosfet kênh P Hình 2.15 Cấu tạo FDS4953 Hình 2.16 Số lượng điểm ảnh diện tích Hình 2.17 Cấu tạo phần cứng Raspberry Pi Hình 2.18 Chip BMC43438 Broadcom (Wireless radio) Hình 2.19 Antenna Hình 2.20 Chip hệ thống Broadcom BCM2837 (SoC) Hình 2.21 Chip USB SMSC LAN9514 Hình 2.22 Cấu tạo GPIO Rpi3.Hình 3.1 Sơ đồ khối hệ thống Hình 3.1 Sơ đồ khối hệ thống Hình 3.2 Sơ đồ chân bảng LED ma trận RGB Hình 3.3 Sơ đồ nguyên lý đệm Hình 3.4 Hình đệm mặt in trước Hình 3.5 Hình đệm mặt in sau Hình 3.6 Khối nguồn Hình 3.7 Sơ đồ kết nối vi điều khiển Hình 3.8: Lưu đồ chương trình Client – Server Hình 3.9: Hình login Hình 3.10: Hình sai mật Hình 3.11: Chương trình điều khiển (Client) Hình 3.12 Sơ đồ khối hàm thay đổi nội dung Framebuffer Hình 3.13 Sơ đồ khối hàm đổ liệu xuống hình Led Đồ án tốt nghiệp Hình 3.14 Lưu đồ chương trình hiển thị hình ảnh Hình 3.15 Lưu đồ chương trình khởi tạo canvas Hình 3.16 Lưu đồ chương trình đọc ảnh Hình 3.17 Lưu đồ chương trình nạp ảnh vào canvas Hình 3.18 Lưu đồ hoạt động chương trình chuyển đổi video sang file gif Hình 4.1 Mơ hình panel led RGB ghép panel 64x32 Hình 4.2 Hình ảnh hiển thị đa màu Hình 4.3 Hình ảnh hiển thị trắng đen Hình 4.4 Hình ảnh hiển thị video Đồ án tốt nghiệp CHƯƠNG TỔNG QUAN 1.1 Tình hình nghiên cứu nay: 1.1.1 Tình hình nghiên cứu và ngoài nước: Hiện nay, việc ứng dụng led ma trận RGB vào việc trình chiếu hình ảnh phương pháp tối ưu giá thành thấp, dễ dàng sử dụng dễ dàng mở rộng mơ hình Các thiết bị ứng dụng led ma trận RGB không ngừng cải tiến nhằm tăng độ xác, độ phân giải hình ảnh tốt hơn,tính thẩm mỹ cao, tuổi thọ dài tiết kiệm lượng Trong trường học, môn chuyên ngành liên quan đến điện tử có số mơn học liên quan tới led ma trận tạo điều kiện cho học sinh, sinh viên tiếp xúc trực tiếp, nghiên cứu với led ma trận 1.1.2 Tính cấp thiết đề tài: Ta dễ dàng thấy bảng quảng cáo, bảng hiệu đa màu sắc, tivi hình led khu trung tâm thị, sân vận động, quảng trường, nhà hát… Trong trường học, công ty việc ứng dụng hình led nhà ngồi trời để thơng báo tin tức, trình chiếu hình ảnh Một số nơi cịn sử dụng hình led vào việc dẫn đường, báo hiệu Hình 1.1: Ứng dụng hình led P4 trung tâm tiệc cưới Đơng Trường Sơn 1.2 Mục tiêu đề tài: Nghiên cứu cấu tạo, hoạt động Kit Raspberry, hình led RGB, cách kết nối sở liệu phần mềm phần cứng lại với Đọc hiểu datasheet linh kiện cần thiết mạch Đồ án tốt nghiệp Nghiên cứu thiết kế sơ đồ khối, từ vẽ mạch nguyên lý, lưu đồ giải thuật Phát triển thuật toán viết phần mềm điều khiển Giải thích chức thành phần mạch 1.3 Đối tượng và phạm vi nghiên cứu: 1.3.1 Đối tượng nghiên cứu:  Kit Raspberry  Modem Wifi giao tiếp máy tính  Panel led ma trận RGB  Cơ sở liệu thư viện lập trình Python, Cython, C++ 1.3.2 Phạm vi nghiên cứu: Nghiên lý hoạt động led ma trận RGB với kích thước 192x64, có số lượng điểm ảnh 12.288 pixel Cách xuất điểm ảnh, màu sắc Xuất liệu: hình ảnh, text, video hình led ma trận RGB thơng qua kit Raspberry 1.4 Giới hạn đề tài: Hiện việc ứng dụng mô hình vào thực nhiều nhiên tài liệu đề tài nhóm cịn hạn chế đa phần tài liệu từ ngồi nước, việc dịch thuật cịn khó khăn, với hy vọng sau em phát triển lên modem xử lí cao thiết kế với độ phân giải cao để hoàn thiện đề tài Từ hạn chế nhóm thực nhận thấy đề tài cịn nhiều thiếu sót, nhóm mong nhận ý kiến đóng góp, giúp đỡ thầy 1.5 Bố cục đồ án: Đồ án gồm chương với nội dung sau: Chương 1: Tổng quan Chương 2: Cơ sở lý thuyết Chương 3: Thiết kế xây dựng hệ thống Chương 4: Kết so sánh,thực nghiệm, phân tích, tổng hợp Chương 5: Kết luận hướng phát triển Đồ án tốt nghiệp CHƯƠNG CƠ SỞ LÝ THUYẾT 2.1 Led RGB: 2.1.1 Cấu tạo: Led RGB có chân, có chân dương chung chân âm riêng cho màu (R - đỏ, G - xanh lá, B - xanh dương) Led RGB thực chất diode led bình thường gộp chung thành khối Hình 2.1 Cấu tạo led RGB dán 2.1.2 Nguyên lý hoạt động: Để thay đổi màu sắc led RGB, ta việc thay đổi độ sáng diode (led) led RGB Để thay đổi độ sáng led ta việc điều chỉnh điện áp xuất led Dưới hình ảnh thực tế sơ đồ chân, kích thước led RGB: Đồ án tốt nghiệp TÀI LIỆU THAM KHẢO Tiếng Việt: Đậu Trọng Hiển, Trương Ngọc Sơn (2013), “Bài Giảng Hệ Thống Nhúng”, Đại học Sư Phạm Kỹ Thuật TP Hồ Chí Minh Nguyễn Đình Phú, Nguyễn Trường Duy (2014), “Giáo Trình Kỹ Thuật Số”, Đại học Sư Phạm Kỹ Thuật Hồ Chí Minh, Tp HCM Nguyễn Đình Phú (2014), “Vi điều khiển PIC”, Đại học Sư Phạm Kỹ Thuật Hồ Chí Minh, Tp HCM Trần Thu Hà (2013), “Giáo trình Điện tử bản”, Đại học Quốc gia Tp Hồ Chí Minh, Tp HCM Nguyễn Thanh Hải (2014), “Giáo trình Xử lý ảnh”, Đại học Quốc gia Tp Hồ Chí Minh, Tp HCM Tiếng Anh: Macroblock (2004), “MBI5026 Datasheet 16-bit Constant Current LED Sink Driver” pp.1-6 Texas Instruments (2008), “TLC5926, TLC5927 Datasheet” pp 1-7 Paul Deitel & Harvey Deitel (2014), “C++ How To Program Eighth Edition”, DEITEL Stephen G Kochan & Patrick Wood (2003), “Unix ® Shell Programming, Third Edition”, Sams Publishing 10 Matt Richardson and Shawn Wallace (2012), “Getting Started With Raspberry Pi”, O’Reilly Media, Inc., United States of America pp 125-141 49 Đồ án tốt nghiệp PHỤ LỤC Code chương trình hiển thị hình ảnh: #include #include #include #include #include Cài đặt thư viện #include #include #include using rgb_matrix::GPIO; using rgb_matrix::Canvas; using rgb_matrix::FrameCanvas; using rgb_matrix::RGBMatrix; using rgb_matrix::CanvasTransformer; volatile bool interrupt_received = false; static void InterruptHandler(int signo) { interrupt_received = true; } Kế thừa Class Tạo hàm ngắt namespace { class PreprocessedFrame { public: PreprocessedFrame(const Magick::Image &img, CanvasTransformer *transformer, rgb_matrix::FrameCanvas *output) : canvas_(output) { Tạo class xứ lý khung ảnh Đây cấu trúc dùng dể khởi tạo biến cụ thể Khởi tạo chương trình canvas 50 Đồ án tốt nghiệp (Canvas_ = output) int delay_time = img.animationDelay(); if (delay_time < 1) delay_time = 1; delay_micros_ = delay_time * 10000; Canvas *const transformed_draw_canvas = transformer>Transform(output); for (size_t y = 0; y < Trỏ giá trị transformed_draw_canvas = transformer>Transform(output); Hàng img.rows(); ++y) { for (size_t x = 0; x < Cột img.columns(); ++x) { const Magick::Color &c = img.pixelColor(x, y); if (c.alphaQuantum() < 256) { transformed_draw_canvas ->SetPixel(x, y, c la biến hiển thị màu Nếu c phạm vi cho phép 255 bit màu Thay đổi giá trị transformd_draw_canvas trỏ tới canvas (x , y tọa độ hiển thị) Giá trị bit led đỏ ScaleQuantumToChar(c.redQuantum()), Giá trị bit led xanh ScaleQuantumToChar(c.greenQuantum()), Giá trị bit led xanh dương ScaleQuantumToChar(c.blueQuantum())); } } } } Frame Canvas *canva s() const { return Trả giá trị canvas canvas_; } 51 Đồ án tốt nghiệp int delay_micros() const { return delay_micros_; } private: FrameCanvas *const canvas_; Tạo trỏ canvas int delay_micros_; }; } static bool LoadAnimation(const char *filename, int width, int height, std::vector *image_sequence) { std::vector frames; Khởi tạo hàm Loadanimation Xác định vector khung hình hình fprintf(stderr, "Read image \n"); readImages(&frames, filename); Hàm đọc ảnh if (frames.size() == 0) { Nếu khơng có ảnh fprintf(stderr, "No image found."); return false; } if (frames.size() > 1) { fprintf(stderr, "Assembling animation with %d frames.\n", (int)frames.size()); Magick::coalesceImages(image_sequence, frames.begin(), frames.end()); } else { Nều số ảnh >1 ảnh động Ghép ảnh gif lại lưu vào image_sequence 52 Đồ án tốt nghiệp image_sequence>push_back(frames[0]); } Là ảnh thường fprintf(stderr, "Scale %dx%d -> %dx%d\n", (int)(*image_sequence)[0].columns(), (int)(*image_sequence)[0].rows(), width, height); In giá trị hàng cột ảnh gốc chiều rộng chiều cao for (size_t i = 0; i < image_sequence->size(); ++i) { Cằng ảnh (*image_sequence)[i].scale(Magick::Geomet ry(width, height)); } return true; } static void PrepareBuffers(const std::vector &images, RGBmatrix = *matrix, std::vector *frames) { fprintf(stderr, "Preprocess for display.\n"); CanvasTransformer *const transformer = matrix->transformer(); for (size_t i = 0; i < images.size(); ++i) { FrameCanvas *canvas = matrix>CreateFrameCanvas(); frames->push_back(new PreprocessedFrame(images[i], transformer, canvas)); } } Khởi tạo nhớ đệm trỏ matrix kiểu RGB kiểu vector truyển địa Them phần tử vào vector frames 53 Đồ án tốt nghiệp static void DisplayAnimation(const std::vector &frames, RGBMatrix *matrix) { Hàm hiển thị ảnh signal(SIGTERM, InterruptHandler); signal(SIGINT, InterruptHandler); fprintf(stderr, "Display.\n"); for (unsigned int i = 0; !interrupt_received; ++i) { const PreprocessedFrame *frame = frames[i % frames.size()]; matrix->SwapOnVSync(frame>canvas()); if (frames.size() == 1) { sleep(86400); } else { usleep(frame>delay_micros()); } } } Gán trỏ frame = size ảnh Đổi canvas với hình led matrix Nếu ảnh thường static int usage(const char *progname) { fprintf(stderr, "usage: %s [options] \n", progname); fprintf(stderr, "Options:\n" "\t-r : Panel rows '16' for 16x32 (1:8 multiplexing),\n" "\t '32' for 32x32 (1:16), '8' for 1:4 multiplexing; " "Default: 32\n" "\t-P : For Plus-models or RPi2: parallel chains " "Default: 1\n" "\t-c : Daisy-chained boards Default: 1.\n" Xuất bảng hưỡng dẫn sai lệnh Nếu ảnh động 54 Đồ án tốt nghiệp "\t-L : Large 64x64 display made from four 32x32 in a chain\n" "\t-d : Run as daemon.\n" "\t-b : Sets brightness percent Default: 100.\n"); return 1; } int main(int argc, char *argv[]) { Magick::InitializeMagick(*argv); int rows = 32; int chain = 1; int parallel = 1; int pwm_bits = -1; int brightness = 100; bool large_display = false; bool as_daemon = false; int opt; while ((opt = getopt(argc, argv, "r:P:c:p:b:dL")) != -1) { switch (opt) { case 'r': rows = atoi(optarg); break; case 'P': parallel = atoi(optarg); break; case 'c': chain = atoi(optarg); break; case 'p': pwm_bits = atoi(optarg); break; case 'd': as_daemon = true; break; case 'b': brightness = atoi(optarg); break; case 'L': chain = 4; rows = 32; large_display = true; break; default: 55 Đồ án tốt nghiệp return usage(argv[0]); } } if (rows != && rows != 16 && rows != 32) { fprintf(stderr, "Rows can one of 8, 16 or 32 " "for 1:4, 1:8 and 1:16 multiplexing respectively.\n"); return 1; } if (chain < 1) { fprintf(stderr, "Chain outside usable range\n"); return usage(argv[0]); } if (chain > 8) { fprintf(stderr, "That is a long chain Expect some flicker.\n"); } if (parallel < || parallel > 3) { fprintf(stderr, "Parallel outside usable range.\n"); return usage(argv[0]); } if (brightness < || brightness > 100) { fprintf(stderr, "Brightness is outside usable range.\n"); return usage(argv[0]); } if (optind >= argc) { fprintf(stderr, "Expected image filename.\n"); 56 Đồ án tốt nghiệp return usage(argv[0]); } const char *filename = argv[optind]; GPIO io; if (!io.Init()) return 1; Cho phép chạy root if (as_daemon) { if (fork() != 0) return 0; close(STDIN_FILENO); close(STDOUT_FILENO); close(STDERR_FILENO); } RGBMatrix *const matrix = new RGBMatrix(&io, rows, chain, parallel); if (pwm_bits >= && !matrix>SetPWMBits(pwm_bits)) { fprintf(stderr, "Invalid range of pwmbits\n"); return 1; } Cấp phát nhớ động RGBmatrix Nằm khoảng cho phép matrix->SetBrightness(brightness); if (large_display) { matrix->SetTransformer(new rgb_matrix::LargeSquare64x64Transformer()); } Nếu ảnh lớn Thì matrix trỏ tới nhớ cấp phát settransformer std::vector sequence_pics; if (!LoadAnimation(filename, matrix>width(), matrix->height(), &sequence_pics)) { 57 Đồ án tốt nghiệp return 0; } std::vector frames; PrepareBuffers(sequence_pics, matrix, &frames); DisplayAnimation(frames, matrix); Frame chứa phần tử kiểu pre… Gọi hàm nhớ đệm Gọi hàm hiển thị ảnh fprintf(stderr, "Caught signal Exiting.\n"); matrix->Clear(); delete matrix; return 0; } Code Client import socket from Tkinter import * from tkFileDialog import askopenfilename import Tkinter import tkMessageBox import thread HOST = '192.168.0.105' PORT = 12345 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((HOST,PORT)) def hello(h): Xóa hình led Đồ án tốt nghiệp s.send('Hello') def callback(cb): name= askopenfilename() s.send(name) giaodien = Tkinter.Tk() var = StringVar() label = Label( giaodien, textvariable=var, relief=RAISED ) var.set("Mai Quoc Hung - Hoang Phi Hung 13119CL1") label.pack() ketnoi = Tkinter.Button(giaodien,width=15,height=2,acti veforeground=('green'),fg=('red'),text ="Ket Noi") ketnoi.bind('',Ketnoi) ketnoi.pack(side="top",padx=10,pady=5); ketnoi = Tkinter.Button(giaodien,width=20,height=2,text ="recieve",fg=('blue')) ketnoi.bind('',receive) ketnoi.pack(side="top",padx=10,pady=5); giaodien.mainloop() Code Server: import socket Cài đặt thư viện import os import sys 59 Đồ án tốt nghiệp from Tkinter import * import tkMessageBox HOST = '192.168.0.105' PORT = 12345 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) print 'Socket created' try: s.bind((HOST, PORT)) except socket.error: print 'Bind failed ' s.listen(5) print 'Socket awaiting messages' (conn, addr) = s.accept() print 'Connected' dem=0 # awaiting for message while True: data = conn.recv(1024) if data =='Ketnoi': dem=1 reply = 'Ket noi cong' elif data == 'Ngat': dem=0 reply = 'Ngat ket noi' elif data == 'Hello' and dem==1: os.system('./tst.sh') else: reply = 'Ban chua ket noi' Đồ án tốt nghiệp conn.send(reply) conn.close() 61 ... ĐÀO TẠO CHẤT LƯỢNG CAO BÁO CÁO ĐỒ ÁN TỐT NGHIỆP ĐỀ TÀI: QUANG BÁO LED MA TRẬN RGB GIAO TIẾP MÁY TÍNH SVTH: Mai Quốc Hưng MSSV: 13119089 Ngành: Cơng nghệ kỹ thuật Máy Tính Khóa: 2013-2017 GVHD:... Raspberry  Modem Wifi giao tiếp máy tính  Panel led ma trận RGB  Cơ sở liệu thư viện lập trình Python, Cython, C++ 1.3.2 Phạm vi nghiên cứu: Nghiên lý hoạt động led ma trận RGB với kích thước... 2.1 Cấu tạo led RGB dán 2.1.2 Nguyên lý hoạt động: Để thay đổi màu sắc led RGB, ta việc thay đổi độ sáng diode (led) led RGB Để thay đổi độ sáng led ta việc điều chỉnh điện áp xuất led Dưới hình

Ngày đăng: 26/12/2021, 17:48

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w