TỔNG QUAN
ĐẶT VẤN ĐỀ
Ngày nay, với sự phát triển không ngừng trong lĩnh vực khoa học công nghệ, việc đưa các sản phẩm công nghệ với đời sống thường ngày ngày càng phổ biến, nhằm mục đích phục vụ nhu cầu sống ngày càng cao của con người, như nhu cầu giải trí: nghe, nhìn
Các thiết bị trình chiếu phổ biến như tivi, máy chiếu dùng để phục vụ cho các mục đích học tập, giải trí thì có những khuyết điểm như tuổi thọ không cao, màn hình LCD sử dụng lâu dài sẽ bị giảm chất lượng hình ảnh (bị mờ), tivi thì kích thước nhỏ, không thể để ngoài trời Hiện nay trên thị trường có các Module LED RGB có thể đáp ứng mục đích nghe, nhìn nhưng tối ưu hơn như có tuổi thọ cao, ít suy giảm chất lượng hình ảnh khi sử dụng lâu dài, ngoài ra còn có kích thước lớn, phù hợp cho để ngoài trời
Với những tín đồ túc cầu muốn hòa mình vào không khí trong sân vận động, nhưng chỉ có thể quan sát một khoảng sân nhất định, chính vì thế các sân vận động thường trang bị các tivi led với kích thước lớn để khán giả có thể theo dõi từng pha bóng trên sân, hay các panel led dùng để quảng cáo xung quanh trong và ngoài sân
Không chỉ ở sân vận động, mà ta còn dễ dàng thấy màn hình panel led kích thước lớn ở các trung tâm mua sắm, siêu thị dùng để hiển thị hình ảnh các sản phẩm, các thông báo khuyến mãi; ngoài ra panel led còn dùng làm biển cảnh báo giao thông trên đường Không chỉ dừng lại ở việc hiển thị hình ảnh, thì việc trình chiếu các video phim, các hình ảnh được quay trực tiếp từ camera ra các màn hình led cỡ lớn sẽ mang lại sự mới mẻ, thú vị cho người sử dụng; ngoài ra với việc hiển thị hình ảnh trực tiếp sẽ giúp cho việc thông báo các thông tin, tin tức ở các công ty, trường học sẽ tiết kiệm được thời gian và công sức hơn Dùng panel led matrix có thể giảm thiểu chi phi đầu tư hay bảo trì do có độ bền cao và giá thành phải chăng
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 2
Dựa trên nền tảng là đồ án tốt nghiệp “ ĐIỀU KHIỂN PANEL LED MA TRẬN RGB SỬ DỤNG KIT RASPBERRY PI ” của hai bạn Phạm Thế Vinh và Trần Trung Thành [1], hai bạn chỉ dừng lại ở việc hiển thị hình ảnh thường và ảnh động ra panel led, với sự yêu thích đề tài này nhóm em đã tiếp tục nghiên cứu và phát triển thêm cho đề tài là sẽ hiển thị video đồng thời hiển thị hình ảnh được quay trực tiếp từ camera của kit Raspberry Pi 3 ra panel led Dựa trên nền tảng ấy, nhóm kết hợp với giao thức Flaschen taschen cùng với phần mềm VLC để có thể hiển thị hình ảnh từ camera.
MỤC TIÊU
Với mục đích áp dụng các kiến thức đã học ở trường và những giải quyết nhu cầu thiết thực cho cuộc sống Vì vậy nhóm em phát triển đề tài “HIỂN THỊ HÌNH ẢNH
TỪ CAMERA TRÊN LED MATRIX DÙNG KIT RASPBERRY PI 3” Để thực hiện được cần phải nghiên cứu cấu tạo, hoạt động của Kit Raspberry, màn hình led RGB, cách kết hợp phần mềm và phần cứng lại với nhau Đọc hiểu datasheet của các linh kiện trong đề tài Nghiên cứu và thiết kế sơ đồ khối, vẽ mạch nguyên lý, lưu đồ giải thuật Giải thích được các chức năng của các thành phần trong mạch.
NỘI DUNG NGHIÊN CỨU
NỘI DUNG 1: Tìm kiếm tài liệu về camera kit Raspberry Pi 3, màn hình panel led matrix
NỘI DUNG 2: Đọc hiểu đề tài được làm trước đó, kết nối phần cứng cho mạch
NỘI DUNG 3: Đọc hiểu code của thư viện chính được dùng trong đề tài
NỘI DUNG 4: Hiển thị hình ảnh và ảnh động trên panel led matrix
NỘI DUNG 5: Hiển thị video trên panel led matrix
NỘI DUNG 6: Hiển thị hình ảnh quay từ camera kit Raspberry trên panel led matrix
NỘI DUNG 7: Đánh giá kết quả thực hiện
NỘI DUNG 8: Kết luận và hướng phát triển
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 3
GIỚI HẠN
Sử dụng 9 tấm panel led RGB matrix P5, kích thước của 1 tấm là: 64x32
Sử dụng 1 Kit Raspberry Pi 3
Sử dụng 1 camera kết nối với kit Raspberry Pi 3
Sử dụng bộ đệm gồm 4 IC 74HC245
Hệ thống chỉ sử dụng trong nhà.
BỐ CỤC
CƠ SỞ LÝ THUYẾT
LED RGB
Ngày nay , đèn LED quá quen thuộc với cuộc sống của chúng ta, từ công viên, các tòa cao ốc hay chính trong ngôi nhà của chúng ta cũng dễ dàng bắt gặp được thiết bị có đèn LED, vì chúng có giá thành thấp cũng như tuổi thọ cao Trên thị trường hiện nay có rất nhiều loại LED như LED đỏ, trắng, … Nay nhóm sẽ khảo sát LED RGB
LED RGB cũng chỉ là LED siêu sáng nhưng nó tích hợp 3 màu trong một con LED duy nhất (R = red, G = green, B = Blue) LED bao gồm 4 chân 1 dương chung (hoặc âm chung) và 3 chân RGB
Hình 2.1: LED RGB loại dán (SMD)
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 6
Tùy vào LED thuộc loại catot chung hay anot chung mà ta mắc mạch cho hợp lý, để thay đổi màu sắc chỉ cần thay đổi điện áp của từng con diode(LED) trong LED RGB
Sơ đồ chân và kích thước của LED dán:
Hình 2.2: Kích thước và sơ đồ chân LED dán.
Panel LED RGB
Những địa điểm công cộng hiện nay hầu hết toàn là các màn hình led có kích thước lớn, các màn hình ấy được ghép bởi các panel LED RGB Mỗi điểm ảnh là một đèn LED, khoảng cách giữa các đèn khoảng 10mm Mỗi tấm hoạt động tốt với nguồn 5v DC, 4A Trên thị trường hiện có rất nhiều loại như : LED ngoài trời nhiều màu P40, panel LED trong nhà nhiều màu P5, …
Với đề tài nhóm thực hiện, nhóm chọn panel LED trong nhà nhiều màu P5 vì giá tương đối thấp so với mặt bằng chung, hơn hết panel có thể hiển thị hình ảnh động hay video Hình ảnh thực tế của Panel LED RGB P5
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 7
Panel LED gồm có 2 IC giải mã 74138 ngõ vào kết nối với 4 chân A, B, C, D có chức năng chọn hàng led hiển thị Để quyết định hàng nào sáng thì 3 chân A, B, C có giá trị chạy từ 000 → 111 tương ứng từ 0 → 7, chân D là chân cho phép IC 74138 hoạt động Ngoài ra bảng LED còn có các IC điều khiển gồm 4 IC mỗi hàng được nối với nhau và nối với một chân màu của LED và các IC đệm 74245
Hình 2.4: Mặt sau của Panel LED
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 8
2.2.2 Cổng kết nối Để điều khiển Panel LED thì phải thông qua cổng kết nối được gọi là HUB75 HUB75 có tổng cộng 16 chân cấu tạo 2 hàng rào đực, được chia thành 2 hàng
Các chân R1, R2, B1, B2, G1, G2 là các chân dữ liệu màu
Chân C là chân xung Clock
Chân A, B, C, D là chân ngõ vào giải mã
Chân O là chân cho phép dữ liệu ngõ vào
Chân S có chức năng chốt dữ liệu, sau khi nạp xong dữ liệu cho một hàng cần phải chốt dữ liệu trước khi chuyển sang hàng mới
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 9
2.2.3 Sơ đồ nguyên lý của Panel LED RGB
Hình 2.6: Sơ đồ nguyên lý Panel LED RGB
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 10
Ngõ vào giải mã A, B, C cho giá trị từ 000 → 111 kết nối với IC SSF4953 để điều khiển mức điện áp cung cấp cho các hàng LED Ví dụ tín hiệu là 000 thì ngõ ra thay đổi Y0 thay đổi mức điện áp điều khiển Mosfet cấp nguồn cho led hàng 1 và 17 sáng Một tín hiệu của IC 74138 điều khiển 2 hàng LED Chân G1, G2A, G2B của IC
74138 là chân cho phép G1 mức cao và G2A, G2B mức thấp thì IC sẽ hoạt động Các IC điều khiển được sắp xếp nối tiếp với nhau ngõ ra SDO của IC trước được nối với ngõ vào SDI của IC sau Mỗi một hàng điều khiển một màu.
IC 74HC245
74HC245 là IC xuất nhập 2 chiều thường sử dụng như quét LED matrix, led 7 đoạn hay đệm dữ liệu trên bus với mạch sử dụng nhiều linh kiện mắc song song và có thể dùng để mở rộng port cho các vi điều khiển có ít I/O
Hình 2.7: Sơ đồ chân IC 74HC245
Chân 1: DIR chân chọn hướng dữ liệu : nếu DIR=1 thì input A và output B và ngược lại với DIR=0
Chân 2=>chân 9 : A0=>A7 data in/output phụ thuộc vào chân DIR
Chân 11 =>18: B7=>B0 data in/output phụ thuộc vào chân DIR
Chân 19 : OE chân cho phép tích cực ở mức 0 nếu 0E=0 thì ic xuất dữ liệu ngược lại OE=1, cấm
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 11
Bảng 2.1 Bảng trạng thái của IC 74HC245
Khi chân Enable ở mức thấp, DIR mức thấp thì dữ liệu vào B ra A, DIR mức cao thì dữ liệu vào A ra B
Khi chân Enable ở mức cao thì tất cả các chân của 2 bus A và B ở trạng thái trở cao hi-Z.
IC 74HC138
IC 74HC138 là bộ giải mã địa chỉ với 3 đầu vào (A0, A1, A2) và 8 đầu ra phủ định (Y0 đến Y7) Nó có 3 đầu vào cho phép: 2 đầu vào tích cực mức thấp (1E, 2E) và
1 đầu vào tích cực mức cao (E3) Tất cả các đầu ra của 74HC138 sẽ ở mức cao trừ khi E1 ở mức thấp và E3 ở mức cao Khi các đầu vào 1E, 2E ở mức thấp và E3 ở mức cao thì đầu ra của 74HC138 sẽ được quyết định bởi đầu vào Nó thường được dùng như mạch giải mã địa chỉ trong các mạch điều khiển và trong máy tính
Hình 2.8: Sơ đồ chân IC 74HC138
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 12
Bảng 2.2 Bảng trạng thái của IC 74HC138
Hoạt động giải mã như sau: Đưa dữ liệu nhị phân 3 bit vào A0, A1, A2; lấy dữ liệu ra ở các ngõ từ Y0 đến Y7 3 ngõ cho phép E1 đến E3 E3 ở mức cao và E1, E2 ở mức thấp.
IC TLC5926
TLC5926 được thiết kế cho màn hình LED và ứng dụng chiếu sáng LED với open-load, shorted-load, phát hiện quá nhiệt TLC5926/TLC5927 có 16 ngõ ra được điều khiển bởi ED1 và ED2 với 3 trạng thái Normal Mode Phase, Mode Switching Transition Phase và Special Mode Phase
Hình 2.9: Sơ đồ chân IC TLC5926
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 13
Chân LE (ED1) là chân chốt dữ liệu đầu vào Khi LE (ED1) lên mức cao thì dữ liệu nối tiếp sẽ được chuyển tới chốt tương ứng Dữ liệu được chốt khi LE (ED1) ở mức thấp
Chân OE (ED2) là chân cho phép ngõ ra Khi OE (ED2) ở mức thấp thì ngõ ra được kích hoạt, khi OE (ED2) ở mức cao thì tất cả ngõ ra tắt
OUT0 đến OUT15 là các chân ngõ ra
R-EXT là ngõ vào để kết nối với một điện trở bên ngoài để thiết lập tất cả các dòng đầu ra
SDI là chân dữ liệu đầu vào nối tiếp
SDO là chân dữ liệu đầu ra nối tiếp được nối với SDI của IC điều khiển tiếp theo hoặc là VĐK
Bảng 2.3 Bảng trạng thái Normal Mode
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 14
Hình 2.10: Giản đồ xung của chế độ Normal Mode
Tín hiệu ngõ ra hoạt động dựa theo giá trị xung clock, tín hiệu OE và tín hiệu chốt LED
Một chu kì hoạt động hoàn chỉnh cần 16 xung clock Khi LE(ED1) ở mức thấp thì tín hiệu ngõ vô truyền tới các chốt tương ứng ứng với mỗi xung clock
Khi đủ một chu kì, LE(ED1) lên mức cao chốt dữ liệu
Khi OE(ED2) mức thấp, nghĩa là ngõ ra ic điều khiển được cấp phép thì tín hiệu ở các chốt được truyền tới ngõ ra.
IC SSF4953
IC SSF4953 cấu tạo gồm 2 mosfet là transistor hiệu ứng trường Mosfet thường có công suất lớn hơn rất nhiều so với BJT Đối với tín hiệu 1 chiều thì nó coi như là 1 khóa đóng mở Mosfet có nguyên tắc hoạt động dựa trên hiệu ứng từ trường để tạo ra dòng điện, là linh kiện có trở kháng đầu vào lớn thích hợp cho khuếch đại các nguồn tín hiệu yếu
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 15
SSF4953 là mosfet kênh P hoạt động ở 2 chế độ đóng và mở Do là một phần tử với các hạt mang điện cơ bản nên Mosfet có thể đóng cắt với tần số rất cao Điện áp điều khiển mở Mosfet là Ugs0 Dòng điện sẽ đi từ S đến D
IC SSF 4953 gồm 2 mosfet tích hợp 2 kênh công suất song song Dòng điện đi từ
Hình 2.12: Cấu tạo của FDS4953
IC SSF4953 dùng để đóng ngắt nhanh với dòng diện và điện áp lớn Chân G được điều khiển tín hiệu ngõ ra của IC74HC138.
Camera Raspberry Pi V2 8MP
Camera Raspberry Pi V2 8MP là phiên bản Camera Module dành cho Raspberry
Pi mới nhất sử dụng cảm biến ảnh IMX219 8-megapixel từ Sony thay cho cảm biến cũ là OV5647 Với cảm biến IMX219 8-megapixel từ Sony, Camera Module cho Raspberry Pi đã có được sự nâng cấp vượt trội về cả chất lượng hình ảnh, video cũng như độ bền
Camera Raspberry Pi V2 8MP có thể sử dụng với Raspberry Pi để chụp hình, quay phim với chất lượng HD 1080p30, 720p60, VGA90, cách sử dụng cũng như lập
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 16 trình với Camera Module trên Raspberry Pi cũng rất dễ dàng, chỉ cần cắm vào cổng Camera trên Raspberry Pi và Config 1 chút là có thể dùng được Camera Raspberry Pi V2 8MP có thể sử dụng tương thích với tất cả các dòng Raspberry Pi 1, 2 và 3 từ trước đến nay
Hình 2.13: Camera Raspberry Pi V2 8 MP.
MÁY TÍNH NHÚNG
Máy tính nhúng hay single-board computer (SBC) là một máy tính hoàn chỉnh được xây dựng trên một board mạch duy nhất, bao gồm bộ vi xử lý, bộ nhớ, các ngõ ra vào (I/O) và các tính năng khác tuỳ thuộc vào từng loại máy tính nhúng Các máy tính SBC này được tạo ra cho mục đích phát triển hệ thống, giáo dục hoặc dùng như máy tính thông thường với các hệ điều hành có giao diện người dùng có khả năng xử lý hình ảnh, âm thanh, truy cập internet, lập trình, soạn thảo văn bản,… Trên thế giới hiện nay có rất nhiều loại máy tính nhúng, tuy nhiên ở Việt Nam phổ biến một số loại như: Raspberry Pi, BeagleBone Black, Friendly ARM Cộng đồng người Việt Nam sử dụng các máy tính nhúng này cũng nhiều nhất, qua đó nguồn tài liệu tiếng Việt, hỗ trợ từ những người dùng khác nhiều hơn
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 17
2.8.1 Máy tính nhúng Friendly ARM Mini 2440:
Friendly ARM Mini 2440 là một mẫu máy tính Friendly ARM phổ biến tại Việt Nam Nó có thể chạy các hệ điều hành: Windows CE 5 và 6, Linux 2.6 và Android Mini 2440 được trang bị CPU S3C2440A ARM920T 400MHz của SAMSUNG (tần số tối đa đạt được lên tới 533 MHz), tuy nhiên RAM chỉ có 64 MB Mẫu SBC này được tích hợp chip nhớ FLASH 256 MB ngoài ra nó có thể sử dụng thẻ nhớ SD thông qua SD-socket SBC này có: 1 kết nối DB9 (RS232), 1 USB kiểu A và 1 USB kiểu B, jack audio 3.5 và kết nối ehternet RJ-45 10/100M; máy sử dụng nguồn 5V.
2.8.2 Máy tính nhúng BeagleBone Black:
Máy tính nhúng BeagleBone Black có thể chạy hệ điều hành Android hay Ubuntu Linux Thiết bị được cài đặt sẵn Ångstrửm distro (một bản phõn phối của hệ điều hành Linux) cho phép khởi động chỉ trong vòng chưa đầy 10 giây Với BeagleBone Black, người dùng còn nhận được sự hỗ trợ từ các cộng đồng trực tuyến
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 18 cũng như sử dụng miễn phí các tài liệu, kernel hay mã code về hệ điều hành Ubuntu, Android hay Fedora
BeagleBone Black có kích thước 8,6 x 5,3 cm được trang bị bộ xử lý ARM Cortex-A8 tốc độ 1GHz (Texas Instruments sản xuất) hỗ trợ tăng tốc đồ họa, đầu cắm
46 chân cho các kết nối ngoại vi, 2GB bộ nhớ flash tích hợp và bộ nhớ DDR3 dung lượng 512MB BeagleBone Black cũng được trang bị cổng USB, kết nối Ethernet và HDMI hỗ trợ độ phân giải 1280 x 1024 pixel
2.8.3 Máy tính nhúng Raspberry Pi 3:
Raspberry Pi 3 là phiên bản mới nhất của dòng SBC Raspberry Pi rất phổ biến trên thế giới và Việt Nam Raspberry Pi 3 được trnag bị CPU ARM Cortex-A53 Quadcore 1.2GHz 64-bit, RAM 1GB và đặc biệt hỗ trợ chuẩn Wifi 802.11n cùng Bluetooth 4.1 Điểm nổi trội của Raspberry là hệ điều hành Raspbian chuyên dùng với máy tính Raspberry Pi, hệ điều hành nền Linux này hỗ trợ giao diện người dùng, có tích hợp sẵn các phần mềm lập trình, soạn thảo văn bản và truy cập internet, phục vụ tốt cho nhu cầu giáo dục và lập trình Cấu hình chi tiết của Raspberry Pi 3 bao gồm: CPU 64-bit bốn nhân ARM Cortex-A53 1.2GHz, 802.11 b/g/n Wireless LAN, Bluetooth 4.1 (Classic & Low Energy), Bộ xử lý hình ảnh Videocore IV® Multimedia
2 nhân, bộ nhớ RAM 1 GB LPDDR2,1 x 10/100 Ethernet port, 1 cổng HDMI
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 19 video/audio, 1 cổng audio/video RCA, 4 cổng USB 2.0, 40 GPIO pins, Chip antenna, cổng kết nối màn hình DSI, khe cắm thẻ nhớ MicroSD, Kích thước: 85 x 56 x 17 mm
2.8.4 Lựa chọn máy tính nhúng phù hợp:
Với mục tiêu của đề tài là hiển thị hình ảnh xuống màn hình LED đặt ra các nhiệm vụ cho máy tính nhúng là xử lý hình ảnh và điều khiển xuất hình ảnh ra các GPIO đây là hai nhiệm vụ tốn nhiều tài nguyên bộ hệ thống do đó máy tính nhúng được chọn phải có tốc độ xử lý càng nhanh càng tốt và bộ nhớ RAM càng nhiều càng tốt Nếu tốc độ xử lý không đủ nhanh sẻ không đáp ứng kịp nhu cầu quét ảnh của màn hình LED dẫn đến giật hình, nhấp nháy và hiện tượng bóng ma (ghosting) Nếu bộ nhớ RAM không đủ lớn thì không đủ không gian để dựng FrameBuffer; không đủ vùng nhớ để lưu các khung hình của ảnh ảnh động Từ những yêu cầu trên, nhóm thực hiện đề tài sau khi tham khảo các thông số kỹ thuật và cân nhắc chi phí quyết định chọn máy tính nhúng Raspberry, vì SBC này có CPU 4 nhân đạt tốc độ tới 1.2 GHz và bộ nhớ RAM 1GB trong khi chi phí là thấp nhất (1,2 triệu đồng so với 1,7 triệu đồng của BeagleBone Black và hơn 2 triệu đồng đối với Friendly ARM).
Kit Raspberry Pi 3
Raspberry Pi là một máy tính giá rẻ, có kích thước cực kì nhỏ gọn, chỉ bằng một thẻ tín dụng Khi cắm màn hình (màn hình máy tính, tivi), chuột và bàn phím vào Raspberry Pi để sử dụng như một chiếc máy tính thực thụ Nó mở ra cho mọi người ở tất cả lứa tuổi cơ hội để khám phá máy tính, tìm hiểu và lập trình bằng nhiều ngôn ngữ khác nhau, chẳng hạn như Scratch, Python, PHP, … Nó có khả năng làm được mọi thứ như một máy tính để bàn, từ trình duyệt web, xem video độ nét cao, xử lý bảng tính (spreadsheets), xử lý văn bản (word processing) và thậm chí là chơi game
Kit Raspberry Pi 3 Model B là thế hệ thứ ba của Raspberry Pi với kích cỡ nhỏ, hiệu năng mạnh mẽ có chức năng như một máy tính có thể sử dụng cho nhiều ứng dụng và thay thế các phiên bản cũ Kit có hệ điều hành mạnh mẽ hơn, nhanh hơn gấp
10 lần so với thế hệ đầu tiên Raspberry Pi Ngoài ra còn có thêm kết nối mạng LAN không dây và Bluetooth
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 20
Rasperry Pi 3 sử dụng Quad Core Broadcom BCM2837 64-bit xử lý ARMv8 làm tăng tốc độ xử lý từ 900MHz trên Pi 2 lên đến 1.2GHz trên Pi 3 Ngoài ra Pi 3 còn bổ sung một con chip BCM43143 Wifi và nâng cấp nguồn lên đến 2.5 amps cho phép Pi
3 cung cấp năng lượng mạnh mẽ hơn qua cổng USB
Chip BMC43438 Broadcom rất nhỏ, thường có thể thấy rõ được qua kính hiển vi hoặc kính lúp, cung cấp 2.4 GHz 802.11n mạng LAN không dây, hỗ trợ Bluetooth sử dụng năng lượng thấp và Bluetooth 4.1 Classic Chức năng của Chip là đóng ngắt kết nối FM
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 21
Raspberry Pi 3 được kết nối trược tiếp với con chip Antenna bằng cách hàn trực tiếp vào mạch Chức năng của nó thu tín hiệu LAN và Bluetooth không dây
Nhà phát triển đã cải thiện đặc biệt cho Raspberry Pi 3 bằng việc sử dụng chip Broadcom BCM2837 bao gồm bốn hiệu năng cao ARM Cortex – A3 chạy ở tốc độ 1.2 GHz với 32 kB cấp 1 và 512 kB cấp 2 bộ nhớ Có bộ xử lý đồ họa VideoCore IV và được nối với một module bộ nhớ 1GB vào phía sau bo mạch
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 22
Raspberry Pi 3 sử dụng cùng một con chip SMSC LAN9514 như Raspberry Pi 2, thêm 10/100 kết nối Ethernet và 4 kênh USB Kết nối với Chip hệ thống thông qua một kênh USB duy nhất, hoạt động như một bộ chuyển đổi USB và USB sang Ethernet
Raspberry Pi 3 giữ nguyên hình dạng, chân kết nối và lỗ gắn như Raspberry Pi 2 Gồm 40 chân đầu vào – đầu ra
Có các chân nguồn 3.3v DC và 5v DC để dễ dàng sử dụng cho các linh kiện kết nối Có các chân truyền dữ liệu theo dạng SPI và UART.Ngoài ra còn có các chân GPIO vào/ra theo yêu cầu người sử dụng
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 23
Hình 2.21: GPIO của Raspberry Pi 3.
Phần mềm VLC cho Debian
VLC Media Player là một mã nguồn mở máy nghe nhạc đa phương tiện ứng dụng phổ biến trong các hệ thống Ubuntu Linux VLC Media Player có thể thỏa mãn nhu cầu xem mọi loại file audio/video cũng như DVD, Audio CD, VCD cùng nhiều phương thức stream khác Các tính năng nổi bật của VLC là hỗ trợ hầu hết các định dạng Multimedia hiện nay từ video, âm thanh: MP4, 3GP, MPG, AVI, WMV, FLV, SWF, MP3, WMA, AMR, OGG, AAC, WAV VLC cũng hoạt động như một ứng dụng video streaming và có thể stream video trong UDP/RTP Unicast hoặc Multicast trên IPv4 và mạng băng thông cao IPv6
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 24
Điểm ảnh (pixel)
Trong kỹ thuật ảnh kỹ thuật số, một pixel hay điểm ảnh là một khối màu rất nhỏ và là đơn vị cơ bản nhất để tạo nên một bức ảnh kỹ thuật số Để thông số điểm ảnh có ý nghĩa, người ta qui về một đơn vị kích thước nhất định như inch hay cm/mm để tính và điểm ảnh thường được diễn đạt theo số lượng điểm trên một inch/cm chiều dài Trên một đơn vị diện tích, số lượng điểm ảnh càng nhiều càng cho hình ảnh chi tiết và đầy đủ màu sắc hơn, đơn vị tính là ppi/ppcm (pixel per inch / pixel per cm) Điều này phụ thuộc vào thiết bị thu nhận hình ảnh (máy quét, cảm biến nhận ánh sáng của máy ảnh) và thiết bị hiển thị hình ảnh (màn hình, máy in) Đây cũng là cơ sở để tính độ phân giải của hình ảnh số Đối với máy ảnh kỹ thuật số, độ phân giải được nhà sản xuất quy định chính là tổng số lượng điểm ảnh mà bộ cảm biến của máy có thể thu nhận được Khi đặt ở chế độ tối đa, một máy ảnh kỹ thuật số sẽ cho hình ảnh có số lượng điểm ảnh tương đương với số lượng điểm ảnh mà cảm biến ghi nhận được Khi để ở các chế độ nhỏ hơn chế độ tối đa, cảm biến vẫn thu nhận số điểm ảnh tương đương nhưng trong quá trình xử lý của máy, ảnh được nén giảm số lượng điểm ảnh, và thường làm mất các chi tiết và màu sắc
Khi hiển thị ảnh trên màn hình, kích thước to nhỏ của ảnh phụ thuộc vào độ phân giải của màn hình Độ phân giải của màn hình càng lớn, ảnh có kích thước hiển thị càng nhỏ hơn và ngược lại Ví dụ, một bức ảnh cụ thể sẽ có kích thước to hơn nếu hiển thị trên màn hình có độ phân giải 1024x768 px, và nhỏ hơn trên màn hình độ phân giải là 1280x960 px
Với công nghệ màn hình hiện nay, độ phân giải của màn hình tối thiểu phải là 72 px, tức là mỗi chiều của một inch vuông có 72 điểm ảnh, và tổng số điểm ảnh trong một inch vuông là 72 x 72 = 5184 điểm ảnh Khi phóng to một bức ảnh nghĩa là làm tăng số lượng điểm ảnh trên một đơn vị diện tích của ảnh (inch hoặc cm) Tuy nhiên, số lượng điểm ảnh ở ảnh gốc là một con số cố định, khi tăng điểm ảnh, là nhân một điểm ảnh thành một số điểm ảnh (tỷ lệ phụ thuộc mức độ phóng ảnh) rồi sắp xếp những điểm ảnh mới xung quanh khu vực của điểm ảnh gốc Điều này tạo ra hiện
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 25 tượng các ô vuông có thể quan sát thấy rõ trên màn hình khi phóng quá nhiều lần số lượng điểm ảnh gốc do mỗi ô có cùng một màu sắc hay chi tiết với nhau Ảnh như vậy bị coi là vỡ hay rạn nứt do không còn duy trì được các chi tiết và bố cục màu sắc như ban đầu
Hình 2.23 Ảnh gốc và hình ảnh sau khi phóng to
Tùy theo giá trị dùng để biểu diễn điểm ảnh mà ta có được 3 loại ảnh chính:
Ảnh nhị phân ( binary image): giá trị mỗi điểm ảnh là 0 hoặc 1, nghĩa là trắng hoặc đen Trong thực tế khi xử lý trên máy tính thì ta thường dùng ảnh xám để biểu diễn ảnh nhị phân và lúc này 2 giá trị là 0 hoặc 255
Ảnh xám ( gray image): giá trị mỗi điểm ảnh nằm trong dải giá trị từ 0 đến
255, nghĩa là 8 bits hay 1 byte để biểu diễn mỗi điểm ảnh này
Ảnh màu (color image): mỗi điểm ảnh có giá trị gồm 3 màu đỏ ( red) + xanh lục ( green ) + xanh dương ( blue ) Mỗi màu có giá trị từ 0 đến 255, nghĩa là mỗi điểm ảnh cần 8x3 $bits hay 3 bytes để biểu diễn
(a) (b) (c) Hình 2.24: Ảnh màu (a), ảnh xám (b), ảnh nhị phân (c)
Hình 2.25 cho thấy trên cùng một đơn vị diện tích, hình bên trái có số điểm màu ít hơn ảnh bên phải Số lượng điểm ảnh cũng thường được biểu diễn theo hai chiều rộng và cao Theo cách tính này, hình ảnh bên trái có thể biểu diễn là 2x2 px và hình
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 26 ảnh bên phải là 4x4 px Độ phân giải của một hình ảnh là tổng số điểm ảnh có trong một tệp tin hình ảnh
Hình 2.25: Số điểm ảnh trên cùng một đơn vị diện tích
Bảng 2.4: Bảng kích thước ảnh thông dụng
Trong đó: 1 DPI = 0.393701 pixel/cm, 1 pixel/cm = 2.54 DPI b Độ phân giải video
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 27
Vể cơ bản, một video được tạo bởi các dòng quét Không giống như phim chiếu rạp có hình ảnh được chiếu cả lên màn ảnh cùng một lúc, hình ảnh video là tập hợp của các dòng quét chạy ngang rất nhanh trên màn hình bắt đầu ở phía trên của màn hình và di chuyển xuống dưới Những dòng quét này có thể được hiển thị theo hai cách:
Cách thứ nhất là phân chia các dòng thành hai trường, trong đó tất cả các dòng lẻ được hiển thị đầu tiên, rồi các dòng chẵn được hiển thị tiếp sau đó, về bản chất, vẫn là hiển thị một khung hình hoàn chỉnh Quá trình xử lý này này được gọi là xen kẽ (interlacing ) hoặc quét xen kẽ ( interlaced scan )
Hình 2.26: Quá trình quét xen kẽ video
Cách thứ hai được sử dụng trong máy quay video kỹ thuật số, TV kỹ thuật số, và màn hình máy tính, được gọi là quét đồng thời / quét tuần tự (progressive scan) Thay vì hiển thị các dòng theo hai trường chẵn lẻ, phương pháp này cho phép các dòng hiển thị một cách tuần tự Điều này có nghĩa là cả hai dòng lẻ và chẵn được hiển thị theo cùng thứ tự
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 28
Hình 2.27: Quá trình quét tuần tự video
Pixel Format và Framebuffer
Mỗi pixel có một định dạng riêng như là bao nhiêu bit được gọi là pixel format Nếu Framebuffer dùng 1 bit làm pixel thì đó là ảnh MONO (ảnh chỉ có 2 màu đen trắng) Nếu Farmebuffer dùng 16 bit, 24 bit, 32 bit thì đây đều là ảnh HighColor Màu sắc là thành phần cơ bản tạo nên hình ảnh Trong đồ họa thiết bị điện tử hiện nay, có nhiều hệ màu khác nhau được sử dụng như RGB, HSV, HSL, … Trong hệ màu RGB, màu sắc là sự tổng hợp 3 yếu tố màu: R (red), G (green), B(blue) Thông thường, mỗi giá trị Red, Green, Blue được lưu trữ dưới dạng số nguyên 1byte (8bit)
Bộ 3 bytes RGB được gọi là mã màu (thường được viết dưới dạng số hexa)
Với 16 bit thì thông thường có hai dạng:
5 bit Red, 5 bit Green, 5 bit Blue, còn 1 bit không sử dụng (hoặc có thể làm Transparent)
5 bit Red, 6 bit Green, 5 bit Blue
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 29
Với 24 bit: Red, Green, Blue sẽ chia đều 8 bit
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 30
Với 32 bit : ngoài 3 thành phần RGB, thành phần thứ 4 là A (alpha) để chỉ độ trong suốt của ảnh Thành phần này cũng có giá trị 8 bit, nên 32 bit sẽ chia đều cho các giá trị RGBA
Riêng nếu Frambuffer 8 bit thì lại khác Nó sẽ có 1 màu bảng chứ 256 màu gọi là Palette Mỗi Entry trong bảng này là màu sắc 32 bit Sau đó chính là nội dung của Buffer Cứ 8 bit là 1 Pixel chứa chỉ số Index màu sắc trên bảng Palete
Framebuffer
Framebuffer là một vùng nhớ đặc biệt, mọi dữ liệu nằm trên nó sẽ hiển thị lên màn hình Các thiết bị có màn hình như điện thoại, laptop, vi tính đều có Framebuffer Cấu trúc dữ liệu của Framebuffer giống như file BMP Framebuffer sẽ có các kiểu dữ
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 31 liệu 1 bit, 8 bit, 16 bit, 24 bit, 32 bit, … Kích thước của Framebuffer tùy thuộc vào độ phân giải và Pixel format
Bit Plane
Phương pháp cắt lớp mặt phẳng bit là phương pháp cắt hình ảnh thành nhiều mặt phẳng khác nhau Nó có phạm vi từ bit level 0 có trọng số thấp nhất(LBS) đến bit level
7 có trọng số cao nhất (MSB) Ngõ ra của phương pháp này là ảnh 8-bit mỗi pixel Hiểu đơn giản, bit plane là độ sâu màu sắc của pixel
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 32
Hệ điều hành Raspbian
Raspberry Pi có rất nhiều hệ điều hành hỗ trợ, có đến 7 hệ điều hành: Raspbian, Ubuntu Mate, Snappy Core Ubuntu, Windows 10 IOT Core, OSMC, OpenELEC, PiNet, RiscOS, được xác nhận hỗ trợ và hầu hết hệ điều hành được nhà phát triển tối ưu Trong đó Raspbian là hệ điều hành chính thức của Raspberry Pi
Raspbian là hệ điều hành cơ bản, phổ biến nhất và do chính Raspberry Pi Foundation cung cấp Nó cũng được hãng khuyến cáo sử dụng, nhất là cho những người mới bắt đầu làm quen với Raspberry Pi
Raspbian được phát triển nhằm mục đích:
Sử dụng Raspberry Pi như máy tính văn phòng để lướt web, soạn văn bản, check mail, …
Nghiên cứu phát triển các thiết bị điều khiển tự động
Sử dụng như một máy chủ cung cấp các dịch vụ như web, file server, printer server, …
Ngôn ngữ C++
C++ là một loại ngôn ngữ lập trình cấp cao, nó được cải tiến từ ngôn ngữ C Đây là một dạng ngôn ngữ đa mẫu hình tự do có kiểu tĩnh và hỗ trợ lập trình thủ tục, dữ liệu trừu tượng, lập trình hướng đối tượng và lập trình đa hình
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 33
So với C, C++ tăng cường thêm nhiều tính năng, bao gồm: khai báo như mệnh đề, chuyển kiểu, các kiểu tham chiếu, const, các hàm nội tuyến, các đối số mặc định, nạp chồng hàm, không gian tên, các lớp, tất cả ác chức năng liên quan đến lớp kế thừa, nạp chồng toán, tiêu bản, toán từ phạm vi, xử lí ngoại lệ và sự nhận dạng kiểu trong thời gian thi hành
Ngoài ra C++ còn sử dụng để lập trình cho vi điều khiển, các hệ thống nhúng
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 34
TÍNH TOÁN VÀ THIẾT KẾ
GIỚI THIỆU
Hệ thống màn hình led matrix trong thực tế bao gồm rất nhiều thành phần, đi cùng là một chi phí rất đắt đỏ Để lắp đặt hệ thống đòi hỏi người thi công phải có các kiến thức chuyên môn về từng thiết bị để lựa chọn phần cứng đảm bảo chất lượng đồng thời tránh các sai sót trong lúc vận hành hệ thống như: hình ảnh trình chiếu bị nhòe, bị giật, … Tùy thuộc vào mục đích sử dụng mà mỗi hệ thống màn hình led matrix sẽ có các thành phần khác nhau
Một số hình ảnh về mô hình các hệ thống màn hình led matrix trong thực tế:
Hình 3.1: Hệ thống màn hình led trong thực tế (1)
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 35
Hình 3.2: Hệ thống màn hình led trong thực tế (2)
Hình 3.3: Ứng dụng màn hình led ở sân vận động
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 36
Mô hình một hệ thống màn hình led tối thiểu là:
Hình 3.4: Hệ thống màn hình led tối thiểu
Từ sơ đồ kết nối của hình 3.4 ta thấy một hệ thống màn hình led tối thiểu được lắp đặt sẽ bao gồm các thành phần là: module led, bộ nguồn, card điều khiển, dây tín hiệu, dây nguồn, máy vi tính, khung sắt
Có thể kết nối nhiều module led lại với nhau có các hình dáng đặc biệt như cong, tròn, hình cầu … tạo thành màn hình led có diện tích từ 1-1000 mét vuông
Card điều khiển ở hệ thống trên có 2 loại có thể sử dụng là:
Loại offline với máy vi tính: Card BX, HD, A8 …
Loại online với máy vi tính: Card Nova, C&Light, LINSN …
Nhiệm vụ của card điều khiển trong hệ thống là nhận dữ liệu đã qua xử lý và điều khiển led matrix Card điều khiển trong hệ thống được gọi là card thu dữ liệu, do card thu không thể kết nối trực tiếp với máy vi tính, vì vậy hệ thống cần thêm card phát dữ liệu kết nối với máy vi tính với nhiệm vụ là gửi thông tin đã được xử lý đến card thu thông qua dây mạng RJ45 Tuy nhiên, hiện nay vẫn có các card thu có thể hoạt động độc lập bằng cách lưu trữ dữ liệu được gửi từ máy vi tính bằng bộ nhớ tích hợp, ở đó
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 37 máy vi tính sẽ có nhiệm vụ xử lý các dữ liệu rồi gửi đến card thu, dữ liệu sẽ được card thu xuất ra led matrix Thành phần chính của card thu bao gồm chip FPGA và các chip nhớ
Một số hình ảnh về card điều khiển trong hệ thống màn hình Led matrix:
Và mỗi card điều khiển đều có các phần mềm riêng Ví dụ:
Phần mềm Ledstudio: phù hợp với card điều khiển LINSN
Phần mềm Ledvision: phù hợp với card điều khiển C&Light
Phần mềm Xmplayer: phù hợp với card điều khiển DBstar
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 38
Do nhiều yếu tố như chi phí cao, tài liệu hạn chế, mỗi card điều khiển đều có các phần mềm điều khiển riêng biệt, nên nhóm em đã tìm hiểu và sẽ không đi theo hướng thiết kế hệ thống màn hình led matrix dùng card điều khiển trong đề tài, mà thay vào đó nhóm sẽ sử dụng kit Raspberry Pi 3
Với đề tài “ Hiển thị hình ảnh từ camera trên led matrix dùng kit Raspberry Pi 3”, nhóm em mong muốn thỏa các yêu cầu sau:
Màn hình led matrix có kích cỡ đủ lớn để người xem có thể thấy rõ các hình ảnh được hiển thị trên panel led matrix
Hình ảnh được quay trực tiếp từ camera của Raspberry Pi 3 sẽ được trình chiếu ổn định liên tục
Sơ đồ kết nối phần cứng gọn, đẹp, dễ di chuyển Phần cứng hoạt động ổn định, phần mềm dễ sử dụng
Không mất nhiều chi phí nhưng vẫn tiếp cận được cách lập trình và làm việc với màn hình panel led matrix, màn hình được sử dụng rộng rãi và phổ biến.
TÍNH TOÁN VÀ THIẾT KẾ HỆ THỐNG
3.2.1 Thiết kế sơ đồ khối hệ thống
Yêu cầu của hệ thống là:
Lập trình điều khiển Raspberry Pi 3
Hiển thị hình ảnh trên Led ma trận RGB
Nguồn cung cấp cho từng thiết bị hoạt động ổn định
Khối điều khiển trung tâm Khối đệm Khối hiển thị
Hình 3.7: Sơ đồ khối của hệ thống
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 39
Chức năng và nhiệm vụ của từng khối:
Khối nguồn: Cung cấp nguồn cho toàn bộ hệ thống hoạt động
Khối điều khiển trung tâm: thực thi chương trình và truyền dữ liệu xuống khối đệm
Khối đệm: nâng mức điện áp logic từ 3.3V lên 5V
Khối hiển thị: hiển thị thông tin ra Led matrix RGB
3.2.2 Tính toán và thiết kế mạch a Thiết kế khối nguồn
Dựa theo thông số kĩ thuật của từng thiết bị trong đề tài mà nhóm em sẽ lựa chọn nguồn phù hợp Nguồn cung cấp đối với:
Led matrix: để cho tất cả các led sáng trên một panel Led 64x32 trong nhà thì yêu cầu nguồn tối đa là 5V-4A Do trong đề tài sử dụng 9 tấm panel led nên bộ nguồn cần dùng là 5V-36A Nhóm em lựa chọn bộ nguồn 5V-40A nhỏ gọn, linh hoạt được nhà sản xuất hỗ trợ cho việc sử dụng panel led trở nên dễ dàng Bộ nguồn được thiết kế có điện áp ngõ vào là 220VAC, ngõ ra là 5VDC
Raspberry Pi 3: kit cần nguồn điện ổn định 5VDC từ 2A trở lên, nếu nguồn không ổn định, sụt áp hoặc không không đủ công suất sẽ dẫn đến cháy CPU hoặc chip điều khiển Ethernet-USB b Khối điều khiển trung tâm
Là khối xử lý tín hiệu quan trọng phải thực hiện các yêu cầu sau:
Xử lý được dữ liệu từ người lập trình
Xử lý dữ liệu truyền đi khối hiển thị
Sơ đồ kết nối chân giữa Raspberry Pi 3 với khối đệm và led matrix:
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 40
Hình 3.8: Sơ đồ kết nối của Raspberry Pi 3 trong mạch
Trong khối điều khiển trung tâm bao gồm các thành phần là: kit Raspberry Pi 3 và thiết bị camera được kit Raspberry Pi 3 hỗ trợ c Khối đệm
Trong bộ thư viện được nhóm em dùng trong đề tài, có các thông số được quy định như là:
Chain: được hiểu như là số dây nối tiếp giữa ngõ ra của panel led trước đến ngõ vào của panel led kế tiếp Ví dụ như: ta có 3 tấm panel led thì ta có 2 dây nối tiếp, vậy nhóm em sẽ khai báo thông số chain =2
Parallel: được hiểu là số ngõ vào của màn hình panel led Ví dụ: ta có một màn hình led được sắp xếp thành 3 hàng, mỗi hàng là 3 tấm, vậy ta có số ngõ vào là 3 nên nhóm em khai báo thông số parallel=3 Để thỏa cả hai thông số trên, thì trong bộ thư viện yêu cầu một mạch được hiểu là mạch đệm Mạch này được xem như mạch trung gian có 3 cổng HUB dùng để kết nối đến 3 ngõ vào của mỗi hàng panel led, đồng thời sẽ có một hàng rào 40 chân dùng để kết nối đến chân của kit Raspberry Mạch sử dụng IC74HCT245 dùng để dịch mức tín hiệu từ 3.3V thành 5V
Sơ đồ nguyên lý của mạch đệm:
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 41
Hình 3.9: Sơ đồ nguyên lý khối đệm
Mạch layout của mạch đệm:
Hình 3.10: Mặt dưới layout của khối đệm
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 42
Hình 3.11: Mặt trên layout của mạch đệm d Thiết kế khối hiển thị
Hiển thị được ký tự, chuỗi ký tự
Hiển thị hình ảnh, ảnh động, đoạn text động
Hiển thị video offline, video được quay trực tiếp từ camera của Raspberry pi 3
Sử dụng 9 tấm led 64x32 trong nhà có kích thước được ghép với nhau thành 3 hàng có kích thước 192x96
Chức năng từng chân của module Led đã trình bày ở chương 2 Để giao tiếp giữa Module Led và kit Raspberry Pi 3 sử dụng giao tiếp serial thông qua khối đệm
Hình 3.12: Sơ đồ kết nối giữa khối đệm và led matrix
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 43
Sơ đồ kết nối thực tế của đề tài:
Hình 3.13: Sơ đồ kết nối thực tế của đề tài.
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 44
THI CÔNG HỆ THỐNG
GIỚI THIỆU
Trong đề tài này, với phần cứng là những thiết bị được kết nối với nhau có sẵn trên thị trường như : các tấm panel led matrix P5, kit Raspberry Pi 3 và mạch đệm được giới thiệu ở chương 3, nên nhóm em sẽ bỏ qua các vấn đề thi công mạch như vẽ layout, ủi hay hàn linh kiện trong chương này mà thay vào đó nhóm chú trọng về các chương trình điều khiển các thiết bị được sử dụng trong đề tài
Các chương trình điều khiển quan trọng mà nhóm sử dụng trong đề tài này là các thư viện được viết bởi tác giả Henner Zeller h.zeller@acm.org và được sử dụng với giấy phép bản quyền GNU General Public License Version 2.0 http://www.gnu.org/licenses/gpl-2.0.txt, do có nhiều thư viện được tác giả viết nhưng đối với đề tài này nhóm em chỉ sử dụng các thư viện sau:
Thư viện rpi-rgb-led-matrix-master: thư viện hỗ trợ điều khiển các tấm LED RGB phổ biến như 16x32 hay 32x32 với kit Raspberry Có thể hỗ trợ PWM lên đến 11 bit mỗi kênh, cung cấp 24bpp màu thực Hỗ trợ 3 chuỗi module LED matrix mắc nối tiếp với nhau
Thư viện Flaschen-Taschen: thư viện hỗ trợ xuất các dữ liệu (hình ảnh, video, text) ra màn led hình led ma trận
Phần mềm vlc: phần mềm hỗ trợ trình chiếu video trên tất cả các hệ điều hành (windows, linux …).
LẬP TRÌNH HỆ THỐNG
4.2.1 Lắp ráp, lập trình và kiểm tra thiết bị
Sau quá trình chuẩn bị và có đầy đủ hết tất cả các thiết bị trong đề tài, nhóm em tiến hành thực hiện việc lắp ráp, lập trình và kiểm tra từng thiết bị Các bước lắp ráp – kiểm tra:
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 45 a Lắp ráp màn hình led ma trận
Hiện nay, trên thị trường về tấm led ma trận thì có rất nhiều mẫu mã, kích thước khác nhau nhưng có một điểm chung là các cổng kết nối của tấm led đều sử dụng cổng kết nối HUB75 Trong đề tài này, nhóm đã thiết kế và thi công một mạch đệm phù hợp với bộ thư viện được sử dụng khi mạch này sẽ hỗ trợ 3 cổng kết nối HUB75 trong thư viện gọi là parallel, các parallel này dùng để kết nối và điều khiển các module led ma trận
Tuy nhiên, phụ thuộc vào kích thước led ma trận sử dụng mà sẽ có các cách khai báo khác nhau trong thư viện của tác giả Henner Zeller như hình sau:
Hình 4.1: Kích thước led matrix và thông số phù hợp
Trong hình trên, ta sẽ có “ led-rows” là khai báo số hàng của một tấm led mặc định là 32, “ led-chain” là số dây nối tiếp các tấm led được kết nối với nhau mặc định là 1
Sau khi xác định xong các thông số, nhóm tiến hành ghép nối tiếp các module led lại với nhau tạo thành một màn hình lớn, ngõ ra module led trước kết nối với ngõ vào module led kế tiếp Để kiểm tra các tấm led hoạt động tốt không, nhóm em kết nối từng tấm đến Raspberry thông qua mạch đệm, đồng thời khai báo đúng thông số và cho chạy các hiệu ứng demo do bộ thư viện hỗ trợ, quan sát xem có điểm ảnh nào của tấm led không sáng thì tiến hành gỡ module đó ra và hàn lại điểm ảnh đó
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 46
Hình 4.2: Màn hình led sau khi kết nối b Lập trình kit Raspberry Pi 3
Dựa theo hướng dẫn từ người bán hàng, việc kết nối camera vào Raspberry Pi 3 không quá khó khăn Sau khi lắp ráp nhóm em thực hiện việc kiểm tra hoạt động của kit Raspberry Pi 3 như sau:
Hệ điều hành dùng cho Raspberry và tương thích với bộ thư viện của tác giả Henner Zeller là Raspbian Do Raspbian có 2 bản là bản Lite và bản Full Bản Full bao gồm giao diện đồ họa người dùng, còn bản Lite thì dùng giao diện dòng lệnh Command Line Vì mục đích là nhìn thấy những hình ảnh quay được từ camera nên nhóm em đã cài đặt bản Full cho Raspberry, mặc dù vậy nếu không sử dụng cho mục đích đó thì chúng ta nên cài đặt bản Lite vì bản Full tốn nhiều tài nguyên bộ nhớ đồng thời bao gồm nhiều ứng dụng không cần thiết được tích hợp sẵn
Cài đặt hệ điều hành và thư viện cho kit Raspberry Pi 3:
Tải file ZIP Raspbian Jessie Lite with Pixel tai địa chỉ: https://www.raspberrypi.org/downloads/raspbian/
Chúng ta sử dụng phần mềm Win32DiskImager để ghi file vừa tải vào thẻ nhớ, ta có thể Win32DiskImager theo địa chỉ: https://sourceforge.net/projects/win32diskimager/
Mở phần mềm Win32DiskImager lên và chọn file Raspbian đã giải nén bằng cách click vào icon tập tin như hình:
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 47
Hình 4.3: Chọn file trong phần mềm Win32DiskImager
Tiếp theo, sử dụng đầu đọc thẻ nhớ và kết nối thẻ nhớ cần ghi tới máy tính, chọn thẻ nhớ cần ghi file Raspbian bằng cách chọn ở khung device như hình:
Hình 4.4: Chọn thẻ nhớ để cài đặt hệ điều hành
Nhấn vào “Write” trong cửa sổ để cài đặt hệ điều hành vào thẻ nhớ, quá trình này sẽ mất khá nhiều thời gian
Hình 4.5: Nhấn nút Write để tiến hành cài đặt
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 48
Sau khi quá trình kết thúc, tháo thẻ nhớ ra khỏi đầu đọc và cắm vào Raspberry
Pi Tiến hành cắm nguồn cho Raspberry và kết nối Raspberry với router qua mạng LAN Ở đây, chúng ta sẽ làm việc với Raspberry mà không sử dụng thêm màn hình LCD rời, mà sẽ điều khiển Raspberry từ xa qua SSH trong mạng LAN, bên cạnh đó do nhóm cài đặt bản Full nên cũng có làm việc với Kit thông qua giao diện VNC trên màn hình máy tính
Thực hiện thiết lập kết nối SSH đến Raspberry: Để truy cập vào kit Raspberry từ xa qua SSH, chúng ta cần biết địa chỉ IP của Kit trong mạng nội bộ mà router cấp cho nó Để tìm được IP của Raspberry có rất nhiều cách để thực hiện:
Cách 1: Đầu tiên tiến hành thao tác share internet cho Ethernet theo các bước sau:
Bước 1: Click chuột phải vào biểu tượng wifi hoặc kết nối mạng chọn Open Nextwork and sharing center như hình 4.6:
Hình 4.6: Open Network and Sharing Center
Sẽ xuất hiện cửa sổ Network and Sharing Center :
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 49
Hình 4.7: Cửa sổ Network and Sharing Center
Chọn thiết bị Wi-Fi để share internet cho port COM như hình 4.8:
Bước 2 : Nhấp chuột trái vào kết nối Wi-Fi như hình dưới:
Hình 4.8: Nhấp chuột trái vào kết nối Wi-Fi của máy tính
Xuất hiện cửa sổ Wi-Fi Status sau đó bấm vào “Properties” trong cửa sổ Wi-Fi Status :
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 50
Hình 4.9: Cửa sổ Wi-Fi Status
Sẽ xuất hiện cửa sổ Wi-Fi Properties như hình 4.10 :
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 51
Hình 4.10: Cửa sổ Wi-Fi Properties
Bấm qua tag Sharing sẽ xuất hiện 2 checkbox và tích vào ô “Allow other network users to connect through this computer’s internet connection” như hình 4.11:
Hình 4.11: Tag Sharing của cửa sổ Wi-Fi Properties
Sau khi thực hiện các thao tác trên, ta tiến hành dò địa chỉ IP động cho kit Raspberry bằng cách sau:
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 52
Vào thanh công cụ Search trong hệ điều hành Windows, tìm từ khóa “cmd”, mở cửa sổ cmd lên và gõ dòng lệnh : ping raspberrypi.mshome.net, ta sẽ thấy như hình 4.12 với vùng khoanh đỏ là địa chỉ IP động của kit Raspberry :
Hình 4.12: Cửa sổ cmd và địa chỉ IP động của kit Raspberry
Sử dụng phần mềm quét địa chỉ tất cả các thiết bị trong mạng cục bộ, dưới đây nhóm em trình bày cách quét địa chỉ kit Raspberry Pi sử dụng phần mềm Advanced IP Scanner được tải tại địa chỉ: http://www.advanced-ip-scanner.com/
Phần mềm này sẽ quét và cho chúng ta thấy hết các địa chỉ IP của tất cả các thiết bị được kết nối trong mạng cục bộ Khi mở cửa sổ của phần mềm lên ta nhấn vào nút
“Scan” ở góc trái, chờ đợi một khoảng thơi gian để phần mềm quét địa chỉ IP, sau khi quét xong phần mềm sẽ cho ra một danh sách chứa tất cả các địa chỉ IP của từng thiết bị trong mạng cục bộ bao gồm cả Kit Raspberry Địa chỉ IP của Raspberry được xác định bằng cách nhìn vào phần Manufacturer trong cửa sổ phần mềm như hình 4.13:
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 53
Hình 4.13: Xác định địa chỉ IP của Raspberry dùng phần mềm
PHƯƠNG PHÁP ĐIỀU KHIỂN
Khi thực hiện hoạt động xuất dữ liệu ra màn hình Led thì đã tạo ra một vùng nhớ được lưu trên RAM có chức năng lưu trữ giá trị các pixel trước khi xuất ra màn hình gọi là vùng nhớ Frame Buffer
Mỗi ô nhớ trong Frame Buffer tên là Iobits Trong cấu trúc bits của ô nhớ có tổng cộng 28 biến kiểu integer, mỗi biến có một bit với giá trị là 0 hoặc 1 dùng để điều khiển một GPIO tương ứng Như vậy cấu trúc bits có 28 biến sẽ điều khiển 28 chân GPIO của Raspberry như hình 4.27 Trong 28 biến điều khiển bao gồm cả các chân dữ liệu màu như R1, G1, B1, R2, G2, B2 nên mỗi ô nhớ sẽ điều khiển 2 pixel của một module, 2 pixel này cách nhau 16 hàng
Hình 4.28: Ô nhớ điều khiển 28 chân GPIO
Trong hình trên, thấy được biến p2_g1 điều khiển chân GPIO thứ 3, p2_b1 điều khiển chân GPIO thứ 5…
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 65
4.3.2 Hàm khởi tạo Frame Buffer
Dựa theo file framebuffer.cc trong thư mục lib của thư viện rpi-rgb-matrix, được hiểu là hàm này khi được gọi sẽ tạo ra một vùng nhớ có kích thước dựa theo các tham số là rows, columns, parallel, được tính theo công thức:
Frame Buffer memory size = tổng chiều dài các tấm LED * (Tổng chiều rộng các tấm LED / 2) * độ sâu màu
Ví dụ: Với một màn hình led có kích thước là 64x32 pixel, sử dụng độ sâu màu 8 bit thì ta tính được vùng nhớ Frame Buffer có kích thước là : 64* (32/2) * 8 = 8192 ô nhớ
Trong đó: độ sâu màu xác định có bao nhiêu màu sắc trong bảng màu của một hình ảnh, được hiểu là cần sử dụng bao nhiêu bits ( số nhị phân 0 hay 1) để diễn tả màu sắc của một điểm ảnh Hình ảnh có độ sâu màu càng cao nghĩa là dùng nhiều chữ số 0 hoặc 1 thì có thể mã hóa được nhiều màu hơn, do đó mức độ chuyển sắc càng cao Mỗi điểm màu trong một hình ảnh kỹ thuật số được tạo ra thông qua sự kết hợp của ba màu cơ bản: đỏ, xanh lục, xanh lam Mỗi màu sắc cơ bản được gọi là một
“kênh màu” và phạm vi chuyển sắc của một màu được xác định bởi độ sâu màu Độ sâu màu cho mỗi màu sắc cơ bản là “ số bit trên từng kênh” Số “bit trên từng điểm ảnh” (bpp) là tổng các bit trong tất cả ba kênh màu và đại diện cho tổng số màu sắc tại mỗi điểm ảnh
Ví dụ: Hình ảnh màu chụp từ máy ảnh kỹ thuật số có 8-bit mỗi kênh màu, vì thế chúng có tám chữ số nhị phân (giá trị 0 hay 1) Điều này cho phép chúng ta có thể mã hóa 256 mức độ chuyển sắc khác nhau cho mỗi màu chính Khi cả ba màu cơ bản được kết hợp tại mỗi điểm ảnh sẽ cho phép diễn tả nhiều màu sắc khác nhau Vì thế chúng ta có 24 bit trên từng điểm ảnh, được tạo ra từ 3 kênh màu 8 bit
Hình 4.29: So sánh độ sâu màu 24bpp và 8bpp
4.3.3 Hàm xác định địa chỉ ô nhớ trên Framebuffer ( hàm ValueAt)
Hàm này chức năng xác định vị trí của một pixel bất kỳ trong vùng nhớ Framebuffer được tạo trước đó Hàm có tham số ngõ vào là số hàng, số cột và số bit của pixel, bit là thứ tự vị trí của pixel trong chuỗi PWM
Ví dụ: Để xác định vị trí ô nhớ của pixel A(1,2) trên màn hinh LED ma trận kích thước 64x32 pixel, có giá trị Red10 1001, Green = 1000 1111, Blue = 0111 0000, tại bit PWM = 2, sử dụng con trỏ *bit có kiểu Iobits là: Iobits *bit = ValueAt(1,2,2) trỏ tới ô nhớ tại đó có giá trị Red = 1, Green = 0, Blue = 1 Các giá trị này sẽ xuất ra các GPIO điều khiển màu của màn hình LED ma trận
4.3.4 Hàm thay đổi nội dung Framebuffer
Hàm SetPixel dùng để thay đổi màu của một điểm ảnh bất kỳ với giá trị màu cho trước (thay đổi Framebuffer) Bản chất, hàm SetPixel sẽ thay đổi giá trị ô nhớ của điểm ảnh mà ta muốn thay đổi
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 66 Để hiển thị một điểm ảnh, ta cần đến 24 bit bao gồm 8 bit đỏ, 8 bit xanh, 8 bit xanh lá, nhưng mỗi ô nhớ chỉ chứa 3 bit đỏ, xanh, xanh lá Vì vậy cần đến 8 ô nhớ cho một điểm ảnh Các tham số truyền bao hàm SetPixel gồm tọa độ x,y và 3 giá trị màu từ
Hàm SetPixel sẽ truyền tham số tọa độ x,y của điểm ảnh cần thay đổi cho hàm ValueAt ở bit PWM thứ 0 Giá trị trả về từ hàm ValueAt được quản lí bởi con trỏ
Sau khi xác định được vị trí ô nhớ, tiến hành gán bit PWM thứ 0 cho giá trị màu đỏ, xanh, xanh lá trong từng ô nhớ
Sau khi gán giá trị cho ô nhớ thứ 0 pixels cần thay đổi, ta sẽ tăng con trỏ đến vị trí ô nhớ của bit PWM thứ 1 của pixels cần thay đổi, cứ như vậy cho đến hết chuỗi PWM
Ví dụ: Một chuỗi bit PWM 1010 1010, xác định PWM vị thứ thứ 4
Ta khởi tạo mặt nạ mask 8 bit có giá trị bằng 1, mask = 0000 0001, sau đó dịch bit vị trí thứ 0 sang trái 3 bit (vì xác định vị trí thứ 4 của PWM) mask = 0000 1000 và AND với chuỗi PWM, ta được AND= 0000 1000 Vì so sánh ô nhớ chỉ chứa 1 bit mà giá trị trả về 8 bit nên ta so sánh mask với AND, khi kết quả trả về 1 thì ngay vị trí đó là PWM = 1 và ngược lại thì PWM = 0
Hình 4.30: Lưu đồ thay đổi Framebuffer
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 67
4.3.5 Hàm điều khiển GPIO Setbits và ClearBits
Hai hàm này có tham số truyền vào là value có giá trị lấy từ 1 ô nhớ của vùng nhớ Framebuffer sau đó gán cho con trỏ *gpio_set_bits_ có kiểu volatile 32 bit điều khiển GPIO của Raspberry
Ví dụ: Con trỏ *gpio_set_bits_ có giá trị là 0011 0001 thì các GPIO 0,4,5 ở mức cao
Hàm Setbits: đặt mức điện áp cao cho các bit có giá trị là 1 đến GPIO
Hàm Clearbits: đặt mức điện áp thấp các bit có giá trị là 1
Giao thức Flaschen-Taschen
Là giao thức mạng đơn giản cho phép trình chiếu hình ảnh trực tiếp đến led ma trận, giao thức nhận các gói UDP cùng với file PPM (P6) trên port 1337, UDP-server được gọi khi dùng lệnh sudo /ft-server
UDP: là một trong những giao thức cốt lõi của giao thức TCP/IP Dùng UDP, chương trình trên mạng máy tính có thể gửi những dữ liệu ngắn (datagram) tới máy
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 71 khác UDP không cung cấp sự tin cậy và truyền nhận như TCP làm, vì thế các gói dữ liệu có thể đến không đúng thứ tự hoặc mất mà không thông báo Tuy nhiên, UDP nhanh và hiệu quả đối với các mục tiêu kích thước nhỏ và yêu cầu khắt khe về thời gian
Server trong giao thức được thực hiện để liên kết giao thức flaschen-taschen với màn hình led thực tế thông qua mạng
Dựa theo file main.cc trong thư mục server, để gọi server trước tiên phải thực hiện lệnh : make FT_BACKEND = rgb-matrix với mục đích là chúng ta sẽ sử dụng tất cả các thông số của bộ thư viện rgb-matrix dùng để hỗ trợ cho màn hình led cho giao thức flaschen-taschen bao gồm các thông số về chiều rộng, chiều cao, độ sáng
…của màn hình hay nói đúng hơn màn hình server flaschen-taschen chính là màn hình led matrix
Sau đó, thực hiện lệnh sudo /ft-server là để thiết lập các thông số về số hàng, chain, parallel, độ sáng… có phần cứng được thiết kế dựa trên bộ thư viện rgb-matrix, cho server flaschen-taschen cũng chính là màn hinh led matrix
Thực hiện thành công hai bước trên, nhấn Enter thì UDP-Server sẽ được gọi và sẵn sàng nghe lệnh trên port 1337
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 72
Hình 4.34: Sơ đố việc gọi server trong flaschen-taschen
PPM file: bao gồm sự nối tiếp của một hay nhiều hình ảnh PPM Mỗi hình ảnh PPM bao gồm các dữ liệu sau: số để xác định kiểu file là “ P6 ”, dữ liệu khoảng trắng, chiều rộng của ảnh theo mã ASCII hệ thập phân, dữ liệu khoảng trắng, chiều cao của ảnh mã ASCII hệ thập phân, dữ liệu khoảng trắng, giá trị màu tuyệt đối của ảnh mã ASCII hệ thập phân từ 0 đến 65536, có thể dùng dấu “#” để chú thích Ví dụ: P6 1024
788 255: kiểu file là P6, chiều rộng của ảnh là 1024 pixel, chiều cao của ảnh là 788 pixel, giá trị màu của ảnh là 255
Nhận dữ liệu ảnh được đưa về từ ngõ vào, hàm libnetpbm sẽ đọc ảnh, xử lý ảnh được nhận tạo thành ảnh có định dạng PPM Định dạng PPM là định dạng có chất lượng hình ảnh màu sắc thấp Một ảnh PPM bao gồm các thông số:
1 Magic number: dùng để định dạng kiểu tập tin
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 73
5 Giá trị số điểm ảnh tối đa, giá trị sẽ lớn hơn 0 và bé hơn 65.536
Sau khi xử lý ảnh, điều chế ảnh thay đổi định dạng của ảnh, thì hàm Flaschen taschen sẽ gửi các dữ liệu file PPM thông qua giao thức gói UDP gửi đến server Sau đó server gửi dữ liệu đến chương trình hiển thị hình ảnh ra LED Nếu chỉ gửi đi một ảnh gói dữ liệu gửi đi chỉ là một ảnh PPM Nếu như hiển thị video thì hàm sẽ gửi đi nhiều ảnh có định dạng PPM, flaschen taschen có thể gửi 30ảnh/s
Hình 4.35 Lưu đồ xử lý của VLC
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 74
KẾT QUẢ_NHẬN XÉT_ĐÁNH GIÁ
PANEL LED MATRIX
Độ phân giải của panel led matrix chỉ có 192x96 điểm ảnh, nên khoảng cách hiển thị tốt nhất là 5m trở lên Các hình ảnh, video dùng để hiển thị trên panel led đều rất mượt mà.
KIT RASPBERRY PI 3 VÀ CAMERA
Kit Raspberry Pi 3 hoạt động ổn định, xử lý dữ liệu dễ dàng Camera có độ phân giải thấp nên hình ảnh được quay hơi mờ, tốc độ xử lý hình ảnh được quay chậm
BỘ MÔN ĐIỆN TỬ CÔNG NGHIỆP 75