1. Trang chủ
  2. » Công Nghệ Thông Tin

Đồ án tốt nghiệp Điều khiển thiết bị điện bằng điện thoại di động Chuyên ngành CNTT

46 2,1K 8

Đ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

Định dạng
Số trang 46
Dung lượng 4,86 MB

Nội dung

Điều khiển thiết bị điện thông qua ESP 8266 (đồ án thực hiện điều khiển trên điện thoại di động và web).Tìm hiểu về board mạch arduino, ESP8266, role... Các linh kiện liên quan và ứng dụng mô hình sử dụng board mạch vi điều khiển để điều khiển thiết bị điện với lập trình arduino.Tìm hiểu, nắm rõ các khái niệm, nền tảng, quy trình hoạt động… để điều khiển thiết bị điện bằng điện thoại di động với role thông qua ESP 8266.

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC MỎ - ĐỊA CHẤT HÀ NỘI -*** - NGUYỄN THỊ HẠNH ĐỒ ÁN TỐT NGHIỆP CHUYÊN NGÀNH MẠNG MÁY TÍNH ĐỀ TÀI ĐIỀU KHIỂN THIẾT BỊ ĐIỆN BẰNG ĐIỆN THOẠI DI ĐỘNG Sinh viên thực Cán hướng dẫn Nguyễn Thị Hạnh ThS Đặng Xuân Điệp Hà Nội – 2018 LỜI CẢM ƠN Trước tiên em xin gửi lời cảm ơn chân thành tới quý thầy, cô trường Đại Học Mỏ Địa Chất Hà Nội tận tình dạy dỗ em suốt năm học vừa qua Trong đó, phải kể đến q thầy, chun ngành Mạng Máy Tính - khoa Cơng Nghệ Thơng Tin tạo điều kiện cho em học tập thực đồ án tốt nghiệp Đặc biệt, em xin gửi lời cảm ơn sâu sắc đến giảng viên hướng dẫn em ThS Đặng Xuân Điệp – giảng viên mơn Mạng Máy Tính hết lòng giúp đỡ em q trình lựa chọn đề tài hỗ trợ em suốt trình thực đồ án Sau ngày tháng học tập làm việc giúp đỡ, dẫn từ phía Thầy, thân em đúc kết, tiếp thu, học hỏi kiến thức, kinh nghiệm quý báu để hồn thành đồ án Vì thời gian hạn hẹp trình độ hiểu biết hạn chế, nên đồ án em nhiều thiếu sót, em mong nhận góp ý, sửa đổi từ phía thầy để đồ án em hồn thiện Em xin chân thành cảm ơn! Hà Nội, 4/2018 SV Nguyễn Thị Hạnh - BM Mạng Máy Tính– Khóa 58 Page MỤC LỤC LỜI CẢM ƠN MỤC LỤC DANH MỤC HÌNH ẢNH .5 THÔNG TIN KẾT QUẢ NGHIÊN CỨU ĐỒ ÁN LỜI MỞ ĐẦU CHƯƠNG 1: TÌM HIỂU VỀ ARDUINO I TỔNG QUAN VỀ ARDUINO Khái niệm Arduino .8 Thành phần Arduino II ĐẶC TÍNH VÀ ỨNG DỤNG CỦA ARDUINO 10 Ưu điểm - nhược điểm Arduino 10 Ứng dụng Arduino .10 CHƯƠNG 2: MODULE WIFI ESP 8266 VÀ MODULE RƠ-LE 12 I MODULE WIFI ESP 8266 12 Khái niệm 12 Thông số kỹ thuật ESP 8266 12 Sơ đồ chân chức 13 Các chế độ boot up ESP8266 .16 II MODULE RƠ-LE 16 Tổng quan rơ-le 16 Module Rơ-le 17 Cách sử dụng Rơle 18 CHƯƠNG 3: LẬP TRÌNH ARDUINO 19 I CÀI ĐẶT ARDUINO IDE 19 Cài đặt chương trình Arduino IDE 19 Giao diện phần mềm Arduino IDE 21 Cài đặt Arduino IDE để nạp code cho ESP8266 23 II LẬP TRÌNH ARDUINO 24 Cấu trúc chương trình IDE 24 Một số hàm, câu lệnh thường gặp 26 SV Nguyễn Thị Hạnh - BM Mạng Máy Tính– Khóa 58 Page 3 Hướng dẫn sử dụng phần mềm Arduino IDE 27 CHƯƠNG 4: CÁC MƠ HÌNH LẬP TRÌNH VỚI ESP8266 32 I SỬ DỤNG FIRMWARE CÓ SẴN GIAO TIẾP AT COMMAND 32 Nguyên lý hoạt động 32 Tập lệnh AT 33 II LẬP TRÌNH TRỰC TIẾP TRÊN CHIP ESP8266 33 Nguyên lý hoạt động 33 Đặc điểm trình lập trình chip ESP8266 34 III LẬP TRÌNH ESP 8266 SỬ DỤNG ARDUINO IDE .37 Nguyên lý hoạt động 37 Các hàm chuẩn 38 IV SO SÁNH CÁC MƠ HÌNH LẬP TRÌNH ESP 8266 40 CHƯƠNG 5: ĐIỀU KHIỂN THIẾT BỊ ĐIỆN BẰNG ESP 8266 THÔNG QUA ĐIỆN THOẠI DI ĐỘNG 41 I XÂY DỰNG MƠ HÌNH HỆ THỐNG ĐIỆN 41 Mô tả hệ thống điện 41 Sơ đồ hệ thống điều khiển 41 Thiết bị phần cứng 41 II CHƯƠNG TRÌNH ĐIỀU KHIỂN BOARD ARDUINO 41 III MÔ PHỎNG QUÁ TRÌNH ĐIỀU KHIỂN 45 KẾT LUẬN 46 TÀI LIỆU THAM KHẢO .47 SV Nguyễn Thị Hạnh - BM Mạng Máy Tính– Khóa 58 Page DANH MỤC HÌNH ẢNH Hình 1.1 Board Arduino .8 Hình 1.2 Chi tiết mạch Arduino Uno Hình 2.1 Sơ đồ bảng mạch ESP 8266 13 Hình 2.2 Sơ đồ vẽ chân ESP 8266 .14 Hình 2.3 Board ESP8266 15 Hình 2.4 Sơ đồ khối Rơ – le điện từ 17 Hình 2.5 Module Rơ – le kiểu mẫu 17 Hình 3.1 Trang chủ Arduino 19 Hình 3.2 Màn hình phần Download 19 Hình 3.3 Màn hình download Arduino IDE 1.8.5 20 Hình 3.4 Màn hình trang download phần mềm 20 Hình Giao diện phần mềm IDE 21 Hình 3.6 Các lệnh cơng cụ phần mền Ardunio IDE 21 Hình 3.7 Menu File 22 Hình 3.8 Menu Tools 22 Hình 3.9 Cài đặt Arduino IDE để nạp code cho ESP8266 23 Hình 3.10 Cài đặt Arduino IDE để nạp code cho ESP8266 (tiếp theo) 23 Hình 3.11 Cài đặt Arduino IDE để nạp code cho ESP8266 (tiếp theo) 24 Hình 3.12 Cài đặt Arduino IDE để nạp code cho ESP8266 (tiếp theo) 24 Hình 3.13 Cấu trúc chương trình Arduino IDE 25 Hình 3.14 Hàm void setup() .25 Hình 3.15 Hàm void loop() 26 Hình 3.16 Kết nối Arduino Uno R3 với máy tính qua cáp USB 28 Hình 3.17 Xác định cổng kết nối Arduino với máy tính 29 Hình 3.18 Nạp thử chương trình mẫu Arduino IDE 30 Hình 3.19 Mã nguồn Blink Arduino IDE 31 Hình 4.1 Nguyên lý hoạt động sử dụng firmware có sẵn giao tiếp AT command .32 Hình 4.2 Cấu trúc thư mục Non-OS SDK 35 Hình 4.3 Cấu trúc thư mục RTOS SDK .36 Hình 4.4 Mơ hình sử dụng IDE Adruino lập trình cho Esp8266 38 Hình 5.1 Sơ đồ hệ thống điều khiển 41 SV Nguyễn Thị Hạnh - BM Mạng Máy Tính– Khóa 58 Page THÔNG TIN KẾT QUẢ NGHIÊN CỨU ĐỒ ÁN Thông tin chung Đề tài: điều khiển thiết bị điện điện thoại di động Giảng viên hướng dẫn: ThS Đặng Xuân Điệp Sinh viên thực hiện: Nguyễn Thị Hạnh – Mã sinh viên: 1321050519 Lớp: Mạng Máy Tính Khóa 58 – Khoa: Cơng nghệ thơng tin Trường: Đại học Mỏ - Địa Chất Hà Nội – Hệ đào tạo: Đại học quy Điện thoại: 01683608321 Gmail: hanhmmt58@gmail.com Năm thực đồ án: Năm 2018 Mục tiêu Tìm hiểu board mạch arduino, ESP8266, role Các linh kiện liên quan ứng dụng mơ hình sử dụng board mạch vi điều khiển để điều khiển thiết bị điện với lập trình arduino Tìm hiểu, nắm rõ khái niệm, tảng, quy trình hoạt động… để điều khiển thiết bị điện điện thoại di động với role thơng qua ESP 8266 Nội dung Đồ án gồm chương: Chương 1: Tìm hiểu Arduino Chương 2: Module Wifi ESP8266 module Rơle Chương 3: Lập trình Arduino Chương 4: Các mơ hình lập trình với ESP8266 Chương 5: Điều khiển thiết bị điện ESP8266 thông qua điện thoại di động Kết đạt Nghiên cứu lý thuyết vi điều khiển, mạch điện tử công nghệ Đặc biệt Arduino, ESP8266 module Rơle Triển khai thực điều khiển thiết bị điện vi mạch điện tử: tắt mở thiết bị Arduino: đèn led, điều khiển tốc độ sáng, phản ứng chạy đèn led Học phương pháp lập trình mới: lập trình vi điều khiển (cụ thể: lập trình ArduinoESP8266) Sản phẩm mô ứng dụng điều khiển hai role qua điện thoại di động thông qua module ESP 8266 SV Nguyễn Thị Hạnh - BM Mạng Máy Tính– Khóa 58 Page LỜI MỞ ĐẦU Công nghệ thông tin cơng nghệ tự động hóa hai lĩnh vực có tốc độ phát triển mạnh mẽ, đạt nhiều thành tựu đáng kể thời gian gần Chính yếu tố mà kinh tế phát triển nên nhu cầu người nâng cao, việc điều khiển cách tự động hệ thống hóa thiết bị gia đình ưu tiên hàng đầu Cùng với xu hướng phát triển giới, Việt Nam thời gian gần bước phát triển hệ thống nhà thông minh điều khiển thiết bị Smartphone hay Webserver Hệ thống nhà thông minh ưu tiên phát triển rộng rãi Một yếu tố quan trọng móng dể hướng đến phát triển với nhà thông minh hệ thống điều khiển thiết bị thông minh mà không phụ thuộc vào phạm vi khoảng cách Như biết, gần thiết bị tự động nhà máy, đời sống gia đình ngày hoạt động độc lập với nhau, thiết bị có quy trình sử dụng khác tuỳ thuộc vào thiết lập, cài đặt người sử dụng Chúng chưa có liên kết với mặt liệu Nhưng hệ thống điều khiển thiết bị điện thông qua hệ thống điều khiển điện thoại di động lại khác Ở đây, thiết bị điều khiển tự động kết nối với thành hệ thống hoàn chỉnh qua một thiết bị trung tâm giao tiếp với mặt liệu Điều khiển thiết bị điện thoại di động ứng dụng mang tính đại có giá trị thực tiễn cao Với điện thoại di động tay, đâu hay làm quản lý, giám sát điều khiển thiết bị điện gia đình Qua cho thấy giải pháp điều khiển thiết bị thông qua điện thoại di động giải pháp hữu dụng thực tiễn Chính nhu cầu thực tiễn này, em lựa chọn đề tài tốt nghiệp nghiên cứu việc “điều khiển thiết bị điện điện thoại di động”, đề tài mà đáp ứng thực tiễn cao từ phía người sử dụng, có tính khả thi phù hợp với xu nhân loại SV Nguyễn Thị Hạnh - BM Mạng Máy Tính– Khóa 58 Page CHƯƠNG 1: TÌM HIỂU VỀ ARDUINO I TỔNG QUAN VỀ ARDUINO Khái niệm Arduino Arduino tảng thiết bị điện tử mã nguồn mở sử dụng để xây dựng ứng dụng điện tử Nói cách khác, Arduino board mạch vi xử lý dùng để lập trình tương tác với thiết bị phần cứng (như cảm biến, động cơ, đèn thiết bị khác) Hình 1.1 Board Arduino Arduino đời thị trấn Ivrea thuộc nước Ý đặt theo tên vị vua vào kỷ thứ King Arduin Arduino thức đưa giới thiệu vào năm 2005 không ngừng mở rộng năm qua với nhiều nhà sản xuất nhà phân phối toàn giới Thành phần Arduino Arduino gồm hai phần: Phần cứng gồm board mạch mã nguồn mở (vi điều khiển): lập trình Hiện phần cứng Arduino có tất phiên bản, nhiên phiên sử dụng nhiều Arduino Uno Arduino Mega Phần mềm để lập trình cho mạch Arduino phần mềm IDE (Integrated Development Environment) dùng để soạn thảo, biên dịch code nạp chương cho board: phần mềm mã nguồn mở download từ trang web Arduino: arduino.cc Cổng cắm USB: dùng để kết nối với cap USB, cổng giao tiếp để upload code từ PC lên vi điểu khiển Đồng thời giao tiếp serial để truyền liệu vi điểu khiển với máy tính SV Nguyễn Thị Hạnh - BM Mạng Máy Tính– Khóa 58 Page Hình 1.2 Chi tiết mạch Arduino Uno Cổng cấp nguồn điện: để chạy Arduino lấy nguồn từ cổng USB trên, khơng phải lúc cắm với máy tính Cổng cấp nguồn điện nhằm sử dụng nguồn điện bên ngồi pin, bình acquy hay adapter cho board Arduino hoạt động Nguồn điện cấp vào cổng nguồn DC có hiệu điện từ 6V đến 20V, nhiên hiệu điện tốt mà nhà sản xuất khuyên dùng từ đến 12V Chân tín hiệu Analog (0-5): Các chân lấy tín hiệu Analog (tín hiệu tương tự) từ cảm biến để IC Atmega 328 xử lý Có tất chân lấy tín hiệu Analog, từ A0 đến A5 Chân cấp nguồn cho cảm biến: Các chân dùng để cấp nguồn cho thiết bị bên role, cảm biến… khu vực có sẵn chân GND (chân nối đất, chân âm), chân 5V, chân 3.3V thể hình 1.2 Nhờ chân mà người sử dụng không cần thiết bị biến đổi điện cấp nguồn cho cảm biến, role… Ngồi khu vực có chân Vin (nguồn vào) chân reset Tuy nhiên chân thường sử dụng IC điều khiển ATmega 328: linh hồn board mạch Arduino Uno, IC sử dụng việc thu thập liệu từ cảm biến, xử lý liệu, xuất tín hiệu ra… Chân ICSP (In-Circuit Serial Programming) ATmega 328: Các chân ICSP ATmega 328 sử dụng cho giao tiếp SPI (Serial Peripheral Interface), số ứng dụng Arduino có sử dụng chân này, ví dụ sử dụng module RFID RC522 với Arduino hay Ethernet Shield với Arduino Nút reset: sử dụng để reset lại chương trình chạy Đơi chương trình chạy gặp lỗi, người dùng reset lại chương trình SV Nguyễn Thị Hạnh - BM Mạng Máy Tính– Khóa 58 Page Chân tín hiệu số (2-13) chân có dấu ~ chân băm xung (PWM), tức điều khiển tốc độ động độ sáng đèn Hình 1.2 thể rõ chân để băm xung Pin điện áp tham chiếu (AREF Pin) II ĐẶC TÍNH VÀ ỨNG DỤNG CỦA ARDUINO Ưu điểm - nhược điểm Arduino Hiện Việt Nam giới có nhiều board mạch vi điều khiển khác Tuy nhiên Arduino có số ưu điểm mà khiến trở nên tiếng sử dụng rộng rãi Các ưu điểm là: Rẻ, dễ mua, đơn giản nhanh (rất dễ dàng lắp ráp, lập trình sử dụng thiết bị), Arduino chạy đa tảng (lập trình Arduino thực nhiều hệ điều hành khác Windows, Mac OS, Linux, Android) Hơn ngơn ngữ lập trình đơn giản, dễ hiểu (ngơn ngữ tương tự C++) Nền tảng mở: Arduino phát triển nguồn mở nên phần mềm chạy Arduino chia sẻ dễ dàng tích hợp vào tảng khác Dễ dàng chia sẻ: người dễ dàng chia sẻ mã nguồn với mà không lo lắng ngôn ngữ hay hệ điều hành sử dụng Khả kết nối board mạch Arduino cao: hoạt động độc lập kết nối với máy tính Máy tính phép truy cập liệu cảm biến từ giới bên ngồi cung cấp thơng tin phản hồi Các Arduino kết nối với Hay Arduino kết nối với thiết bị điện tử, chip điều khiển khác nên việc mở rộng phần cứng dễ dàng Tuy nhiên, Arduino có nhược điểm định ảnh hưởng đến kích thước dự án ví dụ board mạch Arduino Due với kích thước 101.5×53.5mm, khơng q to, đặt vào mơ hình điện tử đơn giản chiếm vị trí ngốn so với mơ hình Ngồi ra, đòi hỏi người sử dụng có kiến thức định điện, điện tử hướng lập trình đối tượng sử dụng tốt board mạch vi điều khiển Ứng dụng Arduino Làm Robot: Arduino có khả đọc thiết bị cảm biến, điều khiển động nên thường dùng để làm xử lý trung tâm nhiều loại robot Game tương tác: Arduino sử dụng để tương tác với Joystick, hình… chơi game Tetrix, phá gạch, Mario… Máy bay không người lái, làm máy in 3D, làm đàn ánh sáng, làm lò nướng bánh biết đưa tín hiệu kêu để báo hiệu bánh chín Điều khiển thiết bị điện, thiết bị cảm biến ánh sáng, âm Điều khiển đèn tín hiệu giao thơng, làm hiệu ứng đèn Led nhấp nháy biển quảng cáo… Khai thác trí sáng tạo, tìm tòi, học hỏi người Ngồi ra, Arduino nhiều ứng dụng hữu ích khác tùy vào sáng tạo mục đích người dùng SV Nguyễn Thị Hạnh - BM Mạng Máy Tính– Khóa 58 Page 10 Tập lệnh AT Tốc độ giao tiếp mặc định (Baud rate): 9600 115200 Các lệnh AT nên viết hoa Các lệnh AT phải kết thúc dấu CR (\ r) + LF(\n), tương đương với byte 0x0D + 0x0A Việc cài đặt kết nối wifi tự động lưu lại cài đặt lại reset module AT – Kiểm tra kết nối AT+RST – Reset module AT+GMR – Kiểm tra phiên firmware AT+CWMODE? – Kiểm tra kiểu kết nối Giá trị trả 1,2,3 tương ứng với STA (Station), AP (Access point), BOTH AT+CWLAP – Hiển thị danh sách cột WIFI AT+CWJAP – Kết nối với Access point Cú pháp kết nối sau: AT+CWJAP=”SSID”,”PW” SSID tên Access point PW mật Nếu Module esp8266 kết nối với AP bạn dùng lệnh AT+CWJAP? để xem kết nối với AP AT+CIFSR – Kiểm tra IP AT+CIPMUX – Thiết lập kết nối TCP/UDP AT+ CIPMUX?: xem cài đặt thiết lập AT+ CIPMUX=0: single AT+ CIPMUX=1: Multiple AT+CIPSERVER=[,] – thiết lập server: Mode = 0: Close server, Mode =1: Open server, Port: Cổng Phải thiết lập chế độ kết nối tcp/udp lệnh AT+ CIPMUX=1 thiết lập server Tất liệu truyền với ESP8266 qua đường UART mã ASCII lệnh Ví dụ lệnh Restart module, MCU truyền chuỗi Ascii[]= “AT+RST\r\n” thành cơng nhận lại chuỗi Ascii[] = “AT+RST\r\r\n\r\nOK\r\n” Sau Esp8266 tiến hành khởi động lại Lưu ý chuỗi Ascii mà MCU Esp8266 truyền phải có kết thúc CR+LF (\r\n) II LẬP TRÌNH TRỰC TIẾP TRÊN CHIP ESP8266 Ngun lý hoạt động Trong mơ hình này, lập trình firmware cho ESP8266 sử dụng thư viện SDK cung cấp Espressif Chúng ta theo mơ hình cho ứng dụng muốn dùng ES8266 để điều khiển thiết bị trực tiếp mà không cần external MCU điều khiển cần tính mà firmware chuẩn chưa cung cấp SV Nguyễn Thị Hạnh - BM Mạng Máy Tính– Khóa 58 Page 32 Đặc điểm q trình lập trình chip ESP8266 Bộ thư viện SDK ESP8266 bao gồm thành phần sau: - Các file code thư viện cung cấp API để điều khiển phần cứng (HAL driver), định nghĩa địa ghi điều khiển, module software RTOS, Memory Management - Các chương trình biên dịch (compiler and linker) để biên dịch source code tạo file *.bin firmware cho ESP8266 - Software để truyền file *.bin xuống ESP8266 qua đường UART (chúng ta cần thay đổi giá trị vài chân GPIO để ESP8266 vào chế độ nạp firmware từ UART) Lưu ý: Espressif khuyên nên biên dịch firmware cho ESP8266 Linux OS sử dụng compiler tool khuyên dùng để đảm bảo firmware biên dịch Với môi trường Windows, Espressif cung cấp file máy ảo (dùng Virtual Box) có cài đặt sẵn trình biên dịch sử dụng Ngồi cộng đồng mạng hỗ trợ toolkit khác dùng Windows biên dịch Python Chúng ta sâu vào hướng dẫn sau Với file code thư viện, Espressif hỗ trợ thư viện: Non-OS SDK RTOS SDK Chúng ta dùng thư viện Non-OS SDK để lập trình cho ESP8266 khơng sử dụng hệ thống RTOS; RTOS SDK để lập trình ứng dụng có sử dụng giải pháp đồng tác vụ ứng dụng hệ thống RTOS Bản chất ứng dụng sử dụng Non-OS SDK RTOS SDK mơ tả sau: Non-OS SDK: Do khơng có sử dụng hệ điều hành quản lý (OS) nên hoạt động chương trình quản lý thông qua timer hay hàm call-back Các tác vụ gọi có điều kiện tương ứng xảy thông thường xử lý theo phương thức polling để kiểm tra tất điều kiện tính tương ứng Đây mơ hình lập trình truyền thống mà thường sử dụng bắt đầu trình học lập trình ứng dụng Ưu điểm đơn giản nên ổn định nhà sản xuất cập nhật tính Hiện nay, phiên Non-OS SDK V2.0.0 Cấu trúc thư mục Non-OS SDK sau: SV Nguyễn Thị Hạnh - BM Mạng Máy Tính– Khóa 58 Page 33 Hình 4.2 Cấu trúc thư mục Non-OS SDK app: Thư mục làm việc chứa tất source code compile ứng dụng bin: Chứa firmware compile nạp trực tiếp xuống flash documents: tài liệu liên quan đến SDK driver_lib: Các thư viện hỗ trợ thiết bị ngoại vi UART, I2C GPIO examples: Chứa ví dụ mẫu để tham khảo include: Chứa header file sử dụng SDK Các tập tin định nghĩa API macro mà SDK hỗ trợ Người sử dụng không nên sửa file ld: Chứa file tương tác với phần mềm chạy SDK Nhà sản xuất khuyến cáo khơng nên sửa đổi trừ có yêu cầu đặc biệt lib: Chứa thư viện hỗ trợ SDK cấu hình chip, Wifi config đến tính cao cấp Mesh, SmartConfig, mDNS, Sniffer… SV Nguyễn Thị Hạnh - BM Mạng Máy Tính– Khóa 58 Page 34 tools: Chứa script cần thiết cho trình compile firmware: script tạo file binary, script tạo certificate… Nhà sản xuất khuyến cáo người sử dụng không nên sửa file RTOS SDK: Sử dụng FreeRTOS mã nguồn mở giúp hệ thống hoạt động đa nhiệm Do đó, hệ thống cho phép người dùng sử dụng phương thức chuẩn cho việc quản lý tài nguyên, chu kỳ hoạt động theo chu kỳ, quản lý thời gian trễ tác vụ , cung cấp thơng tin đồng hóa tác vụ Ưu điểm xử lý đa nhiệm yêu cầu dự án lớn nhiên phụ thuộc vào chất lượng SDK mà hệ thống hoạt động ổn định hay khơng Do thơng thường API cập nhật chậm so với Non-OS Điểm đặc biệt cần lưu ý RTOS không hỗ trợ AT command Do bạn muốn viết firmware mà cần hỗ trợ AT command để giao tiếp với MCU bạn phải sử dụng Non-OS SDK Hiện nay, phiên RTOS SDK V1.4.0 cung cấp hầu hết tất Api Non-OS SDK ngoại trừ việc không hỗ trợ AT command Cấu trúc thư mục RTOS SDK sau: Hình 4.3 Cấu trúc thư mục RTOS SDK bin: Chứa firmware compile nạp trực tiếp xuống flash documents: tài liệu liên quan đến SDK examples: Chứa ví dụ mẫu để tham khảo examples/driver_lib: Các thư viện hỗ trợ thiết bị ngoại vi UART, I2C GPIO SV Nguyễn Thị Hạnh - BM Mạng Máy Tính– Khóa 58 Page 35 examples/project_template: template cho project examples/smart_config: Ví dụ mẫu cho Smart Config examples/spiffs_test: Ví dụ mẫu cho SPIFFS examples/websocket_demo: Ví dụ mẫu cho WebSocket extra_include: Các header files Xtensa include: Chứa header file sử dụng SDK Các tập tin định nghĩa API macro mà SDK hỗ trợ Người sử dụng không nên sửa file ld: Chứa file tương tác với phần mềm chạy SDK Nhà sản xuất khuyến cáo không nên sửa đổi trừ có yêu cầu đặc biệt lib: Chứa thư viện hỗ trợ SDK cấu hình chip, Wifi config, FreeRTOS đến tính cao cấp Mesh, SmartConfig, mDNS, Sniffer… third_party: Các thư viện hỗ trợ open-source từ nhà phát triển: Spiffs, Lwip, ssl… tools: Chứa script cần thiết cho trình compile firmware: script tạo file binary, script tạo certificate… Nhà sản xuất khuyến cáo người sử dụng không nên sửa file Hiện Espressif chưa hỗ trợ chương trình IDE IAR, Keil để lập trình cho ESP8266 Do dùng trình soạn thảo text (Java, Visual Studio, Notepad ) để viết code ứng dụng cho ESP8266, sau sử dụng trình biên dịch để biên dịch mã code với SDK hỗ trợ file binary Cuối sử dụng tool download để nạp firmware xuống device III LẬP TRÌNH ESP 8266 SỬ DỤNG ARDUINO IDE Nguyên lý hoạt động Chúng ta hiểu nguyên lý mơ hình thư viện ArduinoESP8266 giúp tạo dòng code ESP8266 từ lệnh quen thuộc Arduino IDE Vì người lập trình sử dụng ngơn ngữ Arduino quen thuộc dễ hiểu để lập trình cho ESP8266 Hơn ArduinoESP8266 hỗ trợ tích hợp trình biên dịch vào Arduino IDE để tạo file firmware nạp xuống module ESP8266 thông qua UART Hiện tại, thư viện ESP8266 Adruino hỗ trợ đầy đủ chức cần thiết module wifi như: TCP, UDP, thiết lập HTTP, mDNS, SSDP, DNS servers, OTA… Ngồi hỗ trợ giao tiếp thiết bị ngoại vi như: flash memory, SD cards, servos, SPI, I2C… Chúng ta sử dụng lệnh quen thuộc Adruino IDE Khi biên dịch Arduino IDE, thư viện ESP8266 chuyển đổi lệnh Arduino thành code ESP8266 sử dụng API Non-OS SDK (Được thể rõ mô hình đây) SV Nguyễn Thị Hạnh - BM Mạng Máy Tính– Khóa 58 Page 36 Hình 4.4 Mơ hình sử dụng IDE Adruino lập trình cho Esp8266 Các hàm chuẩn Các hàm chuẩn cho digital IO: pinMode(pin, Mode) //pin = cho GPIO0, cho GPIO01 cho GPIO02 digitalRead(pin) digitalWrite(pin, value) attachInterrupt(digitalPinToInterrupt(pin), callback_func, mode); //Lưu ý khơng có interrupt cho GPIO16 deattachInterrupt(digitalPinToInterrupt(pin) Các hàm chuẩn cho Analog IO: analogRead(A0) //trả 0-1023 tương ứng với 0-1V analogWrite(pin, value) // tạo điện áp analog chân GPIO, value từ 0-1023 analogWriteFreq(new_frequency) //thay đổi tần số 1KHz mặc định PWM để tạo analog điện áp Các hàm chuẩn cho timer: delay(ms) delayMicroseconds(us) Lưu ý nên gọi hàm delay(), delayMicroseconds() thường xuyên để firmware xử lý chức Wifi ESP hoạt động bình thường Nếu chương trình ứng dụng Arduino chiếm nhiều thời gian gọi hàm delay(), chức Wifi khơng hoạt động mong đợi SV Nguyễn Thị Hạnh - BM Mạng Máy Tính– Khóa 58 Page 37 Các hàm chuẩn cho UART: Serial.begin(baudrate) // Serial1.begin(baudrate) Serial.print(), Serial.println(), Serial.readByte(), Serial.readString(), v.v… Các hàm chuẩn cho I2C: Wire.begin(sda_pin, scl_pin) //thay đổi chân mặc định chân GPIO4, GPIO5 cho I2C Wire.beginTransaction(),Wire.write(), Wire.read(), Wire.endTransaction(), v.v… Các hàm đọc thông tin phần cứng ESP8266: ESP.restart() //reset ESP ESP.getResetReason() ESP.getChipId() ESP.getFlashChipSize() ESP.getFlashSpeed() Các hàm API cho Wifi: WiFi.mode(mode) //chọn mode thiết bị Wifi, Access Point, Soft Access Point WiFi.softAP(ssid, password) //thiết lập thông tin mạng Wifi WiFi.macAddress(mac) //thay đổi MAC address làm thiết bị Wifi WiFi.softAPmacAddress(mac) //thay đổi MAC address làm Access Point Wifi.localIP() //đọc địa IP hoạt động thiết bị Wifi Wifi.softAPIP() //đọc địa IP hoạt động Access Point WifiUDP.xxxx() // hỗ trợ truyền nhận liệu qua UDP SV Nguyễn Thị Hạnh - BM Mạng Máy Tính– Khóa 58 Page 38 IV SO SÁNH CÁC MƠ HÌNH LẬP TRÌNH ESP 8266 Mơ hình lập trình Firmware với AT command Ưu điểm Điểm hạn chế Đơn giản, nhanh gọn Hạn chế lệnh AT Sử dụng firwmare có sẵn, command cung cấp ổn định Cần MCU để điều khiển Tốc độ đáp ứng khơng tối ưu Lập trình trưc tiếp dùng Khả sử dụng phần Lập trình C phức tạp, tốn SDK cứng cao thời gian nghiên cứu Không cần MCU ngồi Độ ổn định chương Có thể tối ưu tốc độ truyền trình tùy thuộc vào khả liệu người lập trình Sử dụng thư viện Sử dụng ngôn ngữ cấp Giới hạn thư viện khác cao (Arduino, Python) cung cấp Khơng cần MCU ngồi Khả tối ưu phần cứng, (trường hợp tốc độ truyền liệu không ArduinoESP8266) cao Đơn giản nhanh lập Tốn nhớ chương trình trình trực tiếp thời gian thực thi cho thư viện MicroPython SV Nguyễn Thị Hạnh - BM Mạng Máy Tính– Khóa 58 Page 39 CHƯƠNG 5: ĐIỀU KHIỂN THIẾT BỊ ĐIỆN BẰNG ESP 8266 THÔNG QUA ĐIỆN THOẠI DI ĐỘNG I XÂY DỰNG MƠ HÌNH HỆ THỐNG ĐIỆN Mơ tả hệ thống điện Vì hầu hết hệ thống điện với người sử dụng dùng để điều khiển theo hướng bật tắt tăng giảm, dựa vào yếu tố đề tài sở ta chọn hệ thống điện điều khiển: gồm module ESP 8266, hai module relay Sơ đồ hệ thống điều khiển Hình 5.1 Sơ đồ hệ thống điều khiển Thiết bị phần cứng - II Module Rơle hai kênh Dây cáp USB hai đầu type A-B Module ESP 8266 Board mạch Arduino Uno Dây dẫn Điện thoại di động CHƯƠNG TRÌNH ĐIỀU KHIỂN BOARD ARDUINO #define ROLE1 #define ROLE2 #define CMD_SEND_BEGIN "AT+CIPSEND=0" SV Nguyễn Thị Hạnh - BM Mạng Máy Tính– Khóa 58 Page 40 #define CMD_SEND_END "AT+CIPCLOSE=0" #define HANHNGUYEN_PROTOCOL_HTTP 80 #define HANHNGUYEN_PROTOCOL_HTTPS 443 #define HANHNGUYEN_PROTOCOL_FTP 21 #define HANHNGUYEN_PROTOCOL_CURRENT HANHNGUYEN_PROTOCOL_HTTP #define HANHNGUYEN_CHAR_CR 0x0D #define HANHNGUYEN_CHAR_LF 0x0A #define HANHNGUYEN_STRING_EMPTY "" #define HANHNGUYEN_DELAY_SEED 1000 #define HANHNGUYEN_DELAY_1X (1*HANHNGUYEN_DELAY_SEED) #define HANHNGUYEN_DELAY_2X (2*HANHNGUYEN_DELAY_SEED) #define HANHNGUYEN_DELAY_3X (3*HANHNGUYEN_DELAY_SEED) #define HANHNGUYEN_DELAY_4X (4*HANHNGUYEN_DELAY_SEED) #define HANHNGUYEN_DELAY_0X (5*HANHNGUYEN_DELAY_SEED) bool hasRequest = false; void setup() { delay(HANHNGUYEN_DELAY_0X); Serial.begin(115200); pinMode(ROLE1, OUTPUT); digitalWrite(ROLE1, LOW); pinMode(ROLE2, OUTPUT); digitalWrite(ROLE2, LOW); initESP8266(); } void loop() { while(Serial.available()) { bufferingRequest(Serial.read()); } if(hasRequest == true) { String htmlResponse = "" "" "" SV Nguyễn Thị Hạnh - BM Mạng Máy Tính– Khóa 58 Page 41 "HANHNGUYEN" "" "" "DIEU KHIEN THIET BI DIEN THONG QUA MODULE WIFI ESP8266V1" "" " ROLE1 ON" " ROLE1 OFF" "" "" "" " ROLE2 ON" " ROLE2 OFF" "" "" "" ""; String beginSendCmd = String(CMD_SEND_BEGIN) + "," + htmlResponse.length(); deliverMessage(beginSendCmd, HANHNGUYEN_DELAY_1X); deliverMessage(htmlResponse, HANHNGUYEN_DELAY_1X); deliverMessage(CMD_SEND_END, HANHNGUYEN_DELAY_1X); hasRequest = false; } } void initESP8266() { deliverMessage("AT+RST", HANHNGUYEN_DELAY_2X); deliverMessage("AT+CWMODE=2", HANHNGUYEN_DELAY_3X); deliverMessage("AT+CWSAP=\"DIEUKHIENROLE\",\"01234568\",1,4", HANHNGUYEN_DELAY_3X); deliverMessage("AT+CIFSR", HANHNGUYEN_DELAY_1X); deliverMessage("AT+CIPMUX=1", HANHNGUYEN_DELAY_1X); // phép kết nối TCP deliverMessage(String("AT+CIPSERVER=1,") + HANHNGUYEN_PROTOCOL_CURRENT, HANHNGUYEN_DELAY_1X); //để tạo TCP server SV Nguyễn Thị Hạnh - BM Mạng Máy Tính– Khóa 58 Page 42 } void bufferingRequest(char c) { static String bufferData = HANHNGUYEN_STRING_EMPTY; switch (c) { case HANHNGUYEN_CHAR_CR: break; case HANHNGUYEN_CHAR_LF: { HANHNGUYENProcedure(bufferData); bufferData = HANHNGUYEN_STRING_EMPTY; } break; default: bufferData += c; } } void HANHNGUYENProcedure(const String& command) { hasRequest = command.startsWith("+IPD,"); if(command.indexOf("ROLE1_OFF") != -1) { digitalWrite(ROLE1, LOW); } else if(command.indexOf("ROLE1_ON") != -1) { digitalWrite(ROLE1, HIGH); } ///////////////////////////////////////// if(command.indexOf("ROLE2_OFF") != -1) { digitalWrite(ROLE2, LOW); } else if(command.indexOf("ROLE2_ON") != -1) { digitalWrite(ROLE2, HIGH); } } SV Nguyễn Thị Hạnh - BM Mạng Máy Tính– Khóa 58 Page 43 void deliverMessage(const String& msg, int dt) { Serial.println(msg); delay(dt); } III MÔ PHỎNG Q TRÌNH ĐIỀU KHIỂN (Mơ trực tiếp kết thu được) SV Nguyễn Thị Hạnh - BM Mạng Máy Tính– Khóa 58 Page 44 KẾT LUẬN Về mặt lý thuyết, đồ án trình bày cách hệ thống lý thuyết liên quan cách thức sử dụng mạch vi điều khiển hiểu rõ chế hoạt động chức vi điều khiển Arduino, ESP8266, rơle Về mặt thực nghiệm, ngồi mơ hình hệ thống điện qua sơ đồ thực tả chương trình điều khiển ngơn ngữ lập trình vi điều khiển, đồ án mơ trực tiếp q trình sử dụng điều khiển thiết bị điện điện thoại di động thông qua vi mạch điện tử SV Nguyễn Thị Hạnh - BM Mạng Máy Tính– Khóa 58 Page 45 TÀI LIỆU THAM KHẢO Website tài liệu học tập cộng đồng Arduino Việt Nam: https://arduino.vn/ Website google : https://sites.google.com/ Website trang chủ Arduino: https://www.arduino.cc/ SV Nguyễn Thị Hạnh - BM Mạng Máy Tính– Khóa 58 Page 46

Ngày đăng: 05/10/2018, 10:21

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

TÀI LIỆU LIÊN QUAN

w