(Đồ án hcmute) quang báo led ma trận rgb giao tiếp máy tính

64 12 0
(Đồ án hcmute) quang báo led ma trận rgb giao tiếp máy tính

Đ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

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 SKL 0 2 Tp Hồ Chí Minh, tháng 01 - 2018 an 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 an Đồ á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 an Đồ á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 an Đồ á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 an Đồ á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 an Đồ á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 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 an Đồ á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 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 để hồ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 an Đồ á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: an Đồ án tốt nghiệp Hình 2.2 Sơ đồ chân kích thước led RGB dán 2.2 Bảng led RGB: 2.2.1 Giới thiệu: Panel led RGB thường sử dụng cho hình led có kích thước lớn nhiều mét vng, nhìn từ khoảng cách xa điểm ảnh đèn LED khoảng cách bóng LED từ đến 10 mm Mỗi yêu cầu 12-13 chân điều khiển (6 bit liệu, bit kiểm soát) Hoạt động tốt với nguồn 5V, lên đến 5A cho Có loại panel led RGB có như:  Panel led P40: kích thước 640x640, loại led lưới, thích hợp sử dụng trang trí vách, sàn, cột  Panel led P16: kích thước 128x256, sử dụng cho hình led cần độ phân giải trung bình, kích thước hình từ 15 – 50m2  Panel led P5: kích thước 64x32, sử dụng cho hình cần độ phân giải cao: thể biểu đồ, đồ giao thông an Đồ án tốt nghiệp Chương KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 5.1 KẾT LUẬN: Sau nghiên cứu thực đề tài “Điều Khiển Panel Led Ma Trận RGB Sử Dụng Kit Raspberry Pi”, nhóm nghiên cứu giải vấn đề sau: Tìm hiểu mơ hình hình Led thực tế, loại module Led chuyên dụng, phần cứng điều khiển thi cơng hồn thiện mơ hình hệ thống rút gọn tối thiểu dùng thực tế (sử dụng card nhận C&Light A8 phần mềm LEDSHOW T9), từ áp dụng vào mơ hình thi cơng dùng Raspberry Pi điều khiển module led ma trận RGB sử dụng thư viện mã nguồn mở tác giả Henner Zeller Tìm hiểu chức khối liệu, chương trình thư từ xuất liệu: hình ảnh, text, hình ảnh động hình led ma trận RGB Mơ hình hình Led sau thi cơng có ưu nhược điểm sau: Ưu điểm:  Có thể ứng dụng vào nhiều mục đích khác sống  Mở rộng khối hiển thị hình ảnh tương đối dễ dàng Nhược điểm:  Giới hạn số panel led kết nối  Không hỗ trợ ghép nhiều Raspberry lại với  Thời gian hiển thị video lâu ( 1~2 phút)  Không xem video dài  Không chống nước để trời 5.2 HƯỚNG PHÁT TRIỂN: Dựa điểm đạt chưa đạt được, ta cải thiện mở rộng đề tài theo hướng như:  Thiết kế chống nước cho hệ thống giúp bảo vệ hoạt động trời  Thêm chức năng: nhận liệu trực tiếp từ máy tinh,điều khiển qua web, điện thoại …  Tăng số lượng LED tối đa điều khiển được, kết nối nhiều mạch điều khiển lại với  Hỗ trợ khả cài đặt từ xa 48 an Đồ á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 an Đồ án tốt nghiệp PHỤ LỤC Code chương trình hiển thị hình ảnh: Cài đặt thư viện #include #include #include #include #include #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) 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 : canvas_(output) { 50 an Đồ á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())); } } } } FrameCanvas *canvas() const { return Trả giá trị canvas canvas_; } 51 an Đồ á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 Khởi tạo hàm width, int height, Loadanimation std::vector *image_sequence) { std::vector frames; 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 ả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 an Đồ á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 an Đồ á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 an Đồ á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 an Đồ á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 an Đồ án tốt nghiệp return usage(argv[0]); } const char *filename = argv[optind]; Cho phép chạy root GPIO io; if (!io.Init()) return 1; 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 an Đồ á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; Xóa hình led return 0; } Code Client import socket Cài đặt thư viện from Tkinter import * from tkFileDialog import askopenfilename import Tkinter import tkMessageBox import thread HOST = '192.168.0.105' Đại kit raspberry PORT = 12345 Cổng kết nối s = socket.socket(socket.AF_INET, Gán s loại giao tiếp liệu socket.SOCK_STREAM) socket s.connect((HOST,PORT)) Lệnh kết nối với kit raspberry def hello(h): Tạo chương trình 58 an Đồ án tốt nghiệp s.send('Hello') Gửi chữ ‘Hello’ qua cho server def callback(cb): name= askopenfilename() s.send(name) Gửi biến name qua cho server giaodien = Tkinter.Tk() Khởi tạo giao diện Tkinter var = StringVar() Cho giá trị Var chuỗi label = Label( giaodien, textvariable=var, Gán nhãn cho giao diện relief=RAISED ) var.set("Mai Quoc Hung - Hoang Phi Hung - Nội dung hiển thị 13119CL1") label.pack() Đóng gói kết thúc nhãn ketnoi = Tạo nút nhấn giao diện Tkinter.Button(giaodien,width=15,height=2,acti Tkinter veforeground=('green'),fg=('red'),text ="Ket Noi") ketnoi.bind('',Ketnoi) Đọc hàm ketnoi nut nhấn kết nối ketnoi.pack(side="top",padx=10,pady=5); Đóng gói hiển thị nút nhấn giao diện 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() Để bắt đầu chạy Tkinter Code Server: import socket Cài đặt thư viện import os import sys 59 an Đồ án tốt nghiệp from Tkinter import * import tkMessageBox HOST = '192.168.0.105' Địa kit Raspberry PORT = 12345 Cổng truyền liệu (phải trùng với Client) s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) print 'Socket created' try: s.bind((HOST, PORT)) Đọc địa Client kết nối except socket.error: print 'Bind failed ' s.listen(5) Đợi Client kết nối print 'Socket awaiting messages' (conn, addr) = s.accept() Kết nối chấp nhận print 'Connected' dem=0 # awaiting for message while True: data = conn.recv(1024) Gán biến data = biến nhận giá trị với tốc độ 1024 if data =='Ketnoi': Nếu data = chữ ‘Ketnoi’ từ Client gửi sang dem=1 reply = 'Ket noi cong' Gán biến 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' 60 an Đồ án tốt nghiệp conn.send(reply) Gửi liệu biến reply cho Client conn.close() Close connections 61 an an ... ĐÀ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 192x64,... 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: 02/02/2023, 09:22

Tài liệu cùng người dùng

Tài liệu liên quan