Thiết kế và điều khiển led RGB chuyển đổi 3 màu sử dụng ESP8266 bằng wifi
Trang 1TRƯỜNG ĐẠI HỌC VĂN HIẾN
KHOA : KỸ THUẬT CÔNG NGHỆ
BÁO CÁO ĐỒ ÁN CHUYÊN NGÀNH ĐIỆN TỬ VIỄN
THÔNG
ĐỀ TÀI : ĐIỀU KHIỂN LED RGB
GVHD ths: NGUYỄN THIỆN
THÔNG
Trang 2HCM, NGÀY 27 THÁNG 04 NĂM 2018
Trang 3MỤC LỤC
LỜI NÓI ĐẦU 1
TÓM TẮT ĐỀ TÀI 2
CHƯƠNG 1 :XÂY DỰNG Ý TƯỞNG 3
1.1.Lý do chọn đề tài 3
1.2 Mục đích nghiên cứu 4
1.3.Đối tượng nghiên cứu 4
1.4.Nhiệm vụ nghiên cứu 4
1.5.Phương pháp nghiên cứu 4
1.6.Các kết quả đạt được của đề tài 4
CHƯƠNG 2 : TỔNG QUAN VỀ ESP8266 5
2.1 Giới thiệu ESP8266 5
2.2 Cấu trúc phần cứng của dòng chip ESP82 5
2.3 Cài dặt 7
2.4 Sơ đồ chân và các chức năng 10
2.5 Thông số kỹ thuật 10
2.6 Sơ đồ 11
2.7 Quá trình nạp code 11
2.8 Sơ đồ khối 13
CHƯƠNG 3 TỔNG QUAN VỀ LED RGB 14
3.1 Giới thiệu về LED RGB 14
3.2 Cơ sở sinh học 15
3.3 RGB và hiển thị 15
3.4 Biểu diễn dạng số 24 bit 15
CHƯƠNG 4 : THIẾT KẾ PHẦN CỨNG 16
4.1 ESP8266 16
4.2 Kết nối 17
4.3 Lưu đồ giải thuật 18
CHƯƠNG 5 : THIẾT KẾ PHẦN MỀM ỨNG DỤNG 19
5.1 Thiết kế giao diện 19
5.2 Code 21
CHƯƠNG 6 : QUÁ TRÌNH THỰC HIỆN 31
Trang 46.1 Các linh kiện sử dụng 31
6.2 Sơ đồ kết nối dây thực tế 32
CHƯƠNG 7 : KẾT LUẬN 33
7.1 Ưu điểm của đề tài: 33
7.2 Nhược điểm của đề tài: 33
7.3 Hướng phát triển: 33
Tài liệu kham khảo 34
Trang 5LỜI NÓI ĐẦU
Ngày nay, sự phát triển mạnh mẽ của khoa học công nghệ, cuộc sống của con người đã
có những thay đổi ngày càng tốt hơn, với những trang thiết bị hiện đại phục vụ công cuộccông nghiệp hoá, hiện đại hoá đất nước Đặc biệt góp phần vào sự phát triển đó thì ngành
kĩ thuật điện tử đã góp phần không nhỏ trong sự nghiệp xây dựng và phát triển đất nước.Những thiết bị điện,điện tử được phát triển mạnh mẽ và được ứng dụng rỗng rãi trong đờisống cũng như sản suất Từ những thời gian đầu phát triển vi xử lý đã cho thấy sự ưu việtcủa nó và cho tới ngày nay tính ưu việt đó ngày càng được khẳng định thêm
Những thành tựu của nó đã có thể biến được những cái tưởng chừng như không thể thànhnhững cái có thể, góp phần nâng cao đời sống vật chất và tinh thần cho con người Đểgóp phần làm sáng tỏ hiệu quả của những ứng dụng trong thực tế của môn vi xử lý, saumột thời gian học tập được các thầy cô trong khoa giảng dạy về các kiến thức chuyênngành, đồng thời được sự giúp đỡ nhiệt tình của các thầy cô trong khoa Điện tử -Viễnthông, cùng với sự lỗ lực của bản thân, chúng emđã quyết định chọn đề tài “thiết kế vàđiều khiển led RGB chuyển đổi 3 màu sử dụng ESP8266 bằng wifi”
Trong quá trình thực hiện đề tài này , dù rất cố gắng nhưng do thời gian, kiến thức vàkinh nghiệm của em còn có hạn nên sẽ không thể tránh khỏi những sai sót Nhóm em rấtmong nhận được những đóng góp, phê bình,chia sẻ của thầy và các bạn để các đề tài tiếptheo của nhóm sẽ hoàn thiện hơn
Chúng em chân thành cảm ơn thầy !
Trang 6TÓM TẮT ĐỀ TÀI
Đề tài là điều khiểm LED RGB làm chuyển đổi 3 màu sử dụng ESP8266 thông qua wifi
Đề tài này sẽ được thực hiện theo đúng quy trình thiết kế kĩ thuật gồm 9 bước:
1 Xây dựng ý tưởng
2 Mô tả sản phẩm
3 Lập kế hoạch
4 Thiết kế sơ đồ khối
5 Thiết kế chi tiết từng khối
6 Lựa chọn phương án tối ưu
7 Kiểm tra
8 Chế tạo sản phẩm
9 Bàn giao sản phẩm
Trang 7CHƯƠNG 1 :XÂY DỰNG Ý TƯỞNG
1.1.Lý do chọn đề tài
Ngày nay, khoa học kỹ thuật đã và đang phát triển một cách vô cùng mạnh mẽ.Cùng với đó là những đòi hỏi, yêu cầu ngày càng cao từ phía người sử dụng Để xã hộivăn minh, phát triển và hiện đại hơn thì đòi hỏi cần phải có nhiều thiết bị thông minh rađời Một thiết bị thông minh có thể hoạt động độc lập, người dùng có thể giám sát, điềukhiển được chúng ở bất kỳ đâu và chúng có thể kết nối với nhau để trở thành một hệthống hoàn chỉnh Là một sinh viên ngành kỹ thuật điện tử truyền thông cần phải biếtđược nhu cầu của người sử dụng, nắm bắt và vận dụng được các công nghệ kỹ thuật tiêntiến để áp dụng vào đời sống, góp phần làm cho xã hội phát triển hơn
Như chúng ta đã biết, sự ra đời của Internet mang lại cho chúng ta rất nhiều lợi ích
và nó luôn đóng một vai trò quan trọng trong xã hội Nó tác động đến mọi mặt, lĩnh vựctrong đời sống Internet là công cụ tiện lợi nhất để truyền tải một lượng thông tin lớn vớitốc độ nhanh đến hàng triệu người trên thế giới Chỉ với một cái máy tính hoặc điện thoạiđược kết nối Internet thì chúng ta đã có trong tay một quyền bách khoa toàn thư, có thểtiềm kiếm được những thông tin mà mình cần, dễ dàng trao đổi dữ liệu với tất cả mọingười Nói tóm lại, Internet mang lại cho chúng ta rất nhiều lợi ích và thật thiếu xót khikhông vận dụng được những ưu điểm của nó trong ngành kỹ thuật điện tử
Trong ngành kỹ thuật, chúng ta thể kết hợp Internet với các loại vi điều khiển,board phát triển Từ đó, ta có thế kết nối, giám sát, điều khiển được chúng ở bất kỳ đâu
mà không cần phải thao tác trực tiếp như trước đây Nhận thấy được tiềm năng, một lĩnhvực mới đã được ra đời đó là Internet of Things- một lĩnh vực đang phát triển, được biếtđến với các thiết bị thông minh và nó còn được ví là “cuộc cách mạng công nghiệp kếtiếp”, “thế giới kết nối tương lai”
Hiện nay nhu cầu sử dụng ánh sáng ngày càng lớn,nên việc sản xuất các con ledđiều khiển màu là rất phổ biến và LED RGB nằm trong số đó
Thường các loại bóng này dùng để trang trí trong quán bar, phòng hát karaoke, hộitrường, Lý do là khả năng nháy theo nhạc một cách chuẩn xác cùng các hiệu ứng tuyệtđẹp khiến người nhìn cảm thấy thích thú và yêu mến
Trang 81.3.Đối tượng nghiên cứu
Những người muốn có thiết bị giám sát ánh sáng chuyển đổi qua Internet có thểthuận tiện hơn
1.4.Nhiệm vụ nghiên cứu
Nhiệm vụ của đề tài:
- Tạo ra một thiết bị nhận dữ liệu ánh sáng từ môi trường sau đó truyền lên mộtserver trên Internet
- Có thể quan sát các thông số ánh sáng mọi lúc mọi nơi khi kết nối với Internet
1.5.Phương pháp nghiên cứu
Đề tài này chủ yếu sử dụng các phương pháp nghiên cứu sau:
- Phương pháp quan sát
- Phương pháp thực nghiệm khoa học
- Phương pháp phân tích và tổng kết kinh nghiệm
1.6.Các kết quả đạt được của đề tài
Sau gần một tháng nghiên cứu, đề tài đã đạt được một số mục tiêu đề ra:
- Có thể điều khiển được màu led RGB qua web server
1.7.Tính tối ưu của đề tài
- Tạo tính tư duy cho sinh viên trong quá trình nghiên cứu
- Có tính linh động và mở rộng cho sinh viên thiết kế mô hình dựa trên cơ sỡ thựctế
Trang 9CHƯƠNG 2 : TỔNG QUAN VỀ ESP8266
2.1 Giới thiệu ESP8266
Hiện nay, nhu cầu nghiên cứu ESP8266 và điều khiển từ xa qua Internet ngàycàng lớn Có rất nhiều cách để kêt nối ESP8266 vào Internet, và mình sẽ chọn phươngpháp giao tiếp qua Socket để hướng dẫn mọi người cách tiếp cận vào thế giới Internet OfThings Đây là phương pháp theo mình đánh giá là dễ dàng nhất Tất cả đều hướng theo
sự kiện, nghĩa là bạn có thể bắt (catch) và xử lý nó một cách dễ dàng
ESP8266 là một chip tích hợp cao - System on Chip (SoC), có khả năng xử lý vàlưu trữ tốt, cung cấp khả năng vượt trội để trang bị thêm tính năng wifi cho các hệ thốngkhác hoặc đóng vai trò như một giải pháp độc lập ESP8266 cung cấp khả năng kết nốimạng wifi đầy đủ và khép kín, bạn có thể sử dụng nó để tạo một web server đơn giảnhoặc sử dụng như một access point
ESP8266 là một mạch vi điều khiển có thể giúp chúng ta điều khiển các thiết bịđiện tử Điều đặc biệt của nó , đó là sự kết hợp của module Wifi tích hợp sẵn bên trongcon vi điều khiển chính, nhưng lại được tích hợp sẵn Wifi, bộ nhớ flash 8Mb
2.2 Cấu trúc phần cứng của dòng chip ESP82
Sử dụng 66 32-bit MCU core có tên là Tensilica
Tốc độ system clock có thể set ở 80MHz hoặc 160MHz
Không tích hợp bộ nhớ Flash để lưu chương trình
Tích hợp 50KB RAM để lưu dữ liệu ứng dụng khi chạy
Có đầy đủ các ngoại vi chuẩn đê giao tiếp như 17 GPIO, 1 Slave SDIO, 3 SPI, 1
I2C, 1 I2S, 2 UART, 2 PWM
Tích hợp các mạch RF để truyền nhận dữ liệu ở tần số 2.4GHz
Trang 10NodeMCU 0.9
Thông số kỹ thuật ESP8266:
Dòng điện 10uA-170mAFlash Tối đa 16 MB (thưởng là 512K)
Vi xử lý Tensilica L106 32 bit
Trang 11Vào File→ Preferences, vào textbox Additional Board Manager URLs thêm đường
link sau vào http://arduino.esp8266.com/stable/package_esp8266com_index.json
Click OK để chấp nhận
Trang 12Tiếp theo vào Tool→Board→Boards Manager
đợi một lát để chương trình tìm kiếm Ta kéo xuống và click vào ESP8266 by ESP8266
Community, click vào Install Chờ phần mềm tự động download và cài đặt
Trang 13Chọn Board để lập trình cho ESP8266:
Vào Tool→Board→Node MCU 0.9 chọn cổng COM tương ứng với module NodeMCU
tương ứng Đối với các mạch khác như WeMos mini thì ta chọn WeMos D1 R2 & mini
Trang 14Đến bước này là chúng ta đã có thể lập trình ESP8266.
Trang 152.4 Sơ đồ chân và các chức năng
Hình 1:Sơ đồ chân
URXD(RX) — dùng để nhận tín hiệu trong giao tiếp UART với vi điều khiển
VCC — đầu vào 3.3V
GPIO 0 — kéo xuống thấp cho chế độ upload bootloader
RST — chân reset cứng của module, kéo xuống mass để reset
GPIO 2 — thường được dùng như một cổng TX trong giao tiếp UART đểdebug lỗi
CH_PD — kích hoạt chip, sử dụng cho Flash Boot và updating lạimodule, nối với mức cao
GND — nối với mass
UTXD (TX) — dùng để truyền tín hiệu trong giao tiếp UART với vi điều khiển
2.5 Thông số kỹ thuật
Wifi 802.11 b/g/n
Wifi 2.4 GHz, hỗ trợ WPA/WPA2
Chuẩn điện áp hoạt động 3.3V
Chuẩn giao tiếp nối tiếp UART với tốc độ Baud lên đến 115200
Có 3 chế độ hoạt động: Client, Access Point, Both Client and Access Point
Hỗ trợ các chuẩn bảo mật như: OPEN, WEP, WPA_PSK, WPA2_PSK,WPA_WPA2_PSK
Hỗ trợ cả 2 giao tiếp TCP và UDP
Trang 16 Tích hợp công suất thấp 32-bit CPU có thể được sử dụng như là bộ vi xử lý ứngdụng
SDIO 1.1 / 2.0, SPI, UART
Làm việc như các máy chủ có thể kết nối với 5 máy con
2.6 Sơ đồ
2.7 Quá trình nạp code
Để nạp được code cần có 1 board USB sang COM TTL (COM hoạt động ở mức
3.3v hoặc 5v)
Trang 17Hình 2: Board USD sang COM TTL
Cắm FT232RL vào máy tính thông qua cổng usb, cài đặt driver (driver này có thể tìmtrên internet) Trên windows có thể kiểm tra xem cổng com đã được cài đặt chưa bằngcách vào Control Panel > Device Manager > Ports (COM & LPT) sẽ thấy tên cổngCOMxx xuất hiện Nhớ tên cổng COM này để thiết lập cho Arduino IDE khi nạp code
Kết nối:
–Chuyển jumper của FT232RL sang chế độ 3.3v
– Nối GND của FT232RL vào GND của mạch esp8266 ở trên
– Nối VCC của FT232RL vào 3.3v của mạch esp8266 ở trên
– Nối Tx của FT232RL vào Rx của mạch esp8266 ở trên
– Nối Rx của FT232RL vào Tx của mạch esp8266 ở trên
1 Mở Arduino IDE chọn File > New Nhập vào đoạn code ở trên, lưu file
2 Vào Tools > Board:… chọn Generic ESP8266 Module
3 Vào Tools > Port chọn cổng COM của USB TTL
4 Đóng công tắc S1, nhấn nút B1
5 Chọn Sketch > Upload và chờ Arduino nạp code Xong
Trang 182.8 Sơ đồ khối
Hình 3: Sơ đồ khối
Trang 19CHƯƠNG 3 TỔNG QUAN VỀ LED RGB
3.1 Giới thiệu về LED RGB
Mô hình màu RGB sử dụng mô hình bổ sung, trong đó ánh sáng đỏ, xanh lá cây vàxanh lam được tổ hợp với nhau theo nhiều phương thức khác nhau để tạo thành các màukhác
Khác với LED bình thường, led RGB có 4 chân, trong đó có 1 chân dương (hoặcâm) chung và 3 chân âm riêng cho từng màu (R - red - đỏ, G - Green - Xanh lá, B - Blue -
Xanh dương) LED RGB thực chất là 3 con diode led bình thường dính chụm thành 1 khối (vì độ sáng của LED RGB khá sáng cộng với hiệu ứng lưu ảnh của mắt người mà
mình thấy được các màu sắc khác nhau) Để thay màu sắc của LED RGB, ta chỉ việc thayđổi độ sáng của từng diode (led) trong led rgb Để thay đổi độ sáng của một con LED tachỉ việc điều chỉnh điện áp xuất ra LED
Hình 4: hình ảnh RGB
Trang 20Ânodo comum (chung cực dương)
Cátodo comum (chung cực âm )
3.2 Cơ sở sinh học
Các màu gốc có liên quan đến các khái niệm sinh học hơn là vật lí, nó dựa trên cơ
sở phản ứng sinh lí học của mắt người đối với ánh sáng Mắt người có các tế bào cảmquang, các tế bào này thông thường có phản ứng cực đại với ánh sáng vàng –xanh lácây(L), xanh lá cây (M), xanh lam (S) tương ứng với các bước sóng khoảng 564nm,534nm và 420nm
3.3 RGB và hiển thị
Một trong những ứng dụng phổ biến nhất của mô hình màu RGB là việchiển thị màu sắc trong các ống tia âm cực, màn hình tinh thể lỏng hay màn hình plasma,chẳng hạn như màn hình máy tính hay ti vi Mỗi điểm ảnh trên màn hình có thể được thểhiện trong bộ nhớ máy tính như là các giá trị độc lập của màu đỏ, xanh lá cây và xanhlam Các giá trị này được chuyển đổi thành các cường độ và gửi tới màn hình Bằng việc
sử dụng các tổ hợp thích hợp của các cường độ ánh sáng đỏ, xanh lá cây và xanh lam,màn hình có thể tái tạo lại phần lớn các màu trong khoảng đen và trắng Các phần cứnghiển thị điển hình được sử dụng cho các màn hình máy tính trong năm 2003 sử dụng tổngcộng 24 bit thông tin cho mỗi điểm ảnh (trong tiếng Anh thông thường được biết đến nhưbits per pixel hay bpp) Nó tương ứng với mỗi 8 bit cho màu đỏ, xanh lá cây và xanh lam,tạo thành một tổ hợp 256 các giá trị có thể, hay 256 mức cường độ cho mỗi màu Với hệthống như thế, khoảng 16,7 triệu màu rời rạc có thể tái tạo
3.4 Biểu diễn dạng số 24 bit
Khi biểu diễn dưới dạng số, các giá trị RGB trong mô hình 24 bpp thông thườngđược ghi bằng cặp ba số nguyên giữa 0 và 255, mỗi số đại diện cho cường độ của màu
đỏ, xanh lá cây, xanh lam trong trật tự như thế
Ví dụ:
(0, 0, 0) là màu đen
(255, 255, 255) là màu trắng
(255, 0, 0) là màu đỏ
(0, 255, 0) là màu xanh lá cây
(0, 0, 255) là màu xanh lam
(255, 255, 0) là màu vàng
(0, 255, 255) là màu xanh ngọc
(255, 0, 255) là màu hồng sẫm
Trang 21CHƯƠNG 4 : THIẾT KẾ PHẦN CỨNG
4.1 ESP8266
Hình 6 : Sơ đồ ESP8266
Trang 224.2 Kết nối
Hình 7 :Sơ đồ kết nối
Trang 234.3 Lưu đồ giải thuật
Trang 24CHƯƠNG 5 : THIẾT KẾ PHẦN MỀM ỨNG DỤNG
5.1 Thiết kế giao diện
Trang 25Hình 8: hình ảnh của giao diện
Trang 26const char* ssid = "Xperia";
const char* password = "123567890";
String red = server.arg(0);
String green = server.arg(1);
String blue = server.arg(2);
analogWrite(R, red.toInt());
Trang 27webpage += "<header><title>DIEU KHIEN RGB LED</title><h1>DIEU KHIENRGB LED</h1></header>";
webpage += "<header><title>Giang vien: Nguyen Thien Thong</title><h1>Giangvien: Nguyen Thien Thong</h1></header>";
webpage += "<header><title>SVTH:Thanh Luan + Thanh Hau + GiaQuang</title><h1>SVTH:Thanh Luan + Thanh Hau + Gia Quang</h1></header>";
Trang 28
webpage += "<style>";
//webpage += "<style type = 'text/css'>";
//webpage += "body {background-color:white;";
//webpage += " background-size:cover;";
webpage += "h1 {";
webpage += " font: 1em normal Arial, Helvetica, sans-serif;";
webpage += " padding: 20px; margin: 0;";
Trang 29webpage += "</head>";
webpage += "<body style='margin: 0px; padding: 0px;'>";
webpage += "<canvas id='colorspace'></canvas></body>";
webpage += "<script type='text/javascript'>";
webpage += "(function () {";
webpage += " var canvas = document.getElementById('colorspace');";
webpage += " var ctx = canvas.getContext('2d');";
webpage += " function drawCanvas() {";
webpage += " var colours = ctx.createLinearGradient(0, 0, window.innerWidth, 0);"; webpage += " for(var i=0; i <= 360; i+=10) {";
webpage += " colours.addColorStop(i/360, 'hsl(' + i + ', 100%, 50%)');";
webpage += " }";
webpage += " ctx.fillStyle = colours;";
webpage += " ctx.fillRect(0, 0, window.innerWidth, window.innerHeight);";
webpage += " var luminance = ctx.createLinearGradient(0, 0, 0, ctx.canvas.height);"; webpage += " luminance.addColorStop(0, '#ffffff');";
webpage += " luminance.addColorStop(0.05, '#ffffff');";
webpage += " luminance.addColorStop(0.5, 'rgba(0,0,0,0)');";
webpage += " luminance.addColorStop(0.95, '#000000');";