1. Trang chủ
  2. » Luận Văn - Báo Cáo

Thiết kế thiết bị giám sát cảm biến từ xa qua smartphone

144 26 0

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

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 144
Dung lượng 6,21 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Thiết kế thiết bị giám sát cảm biến từ xa qua smartphone Thiết kế thiết bị giám sát cảm biến từ xa qua smartphone Thiết kế thiết bị giám sát cảm biến từ xa qua smartphone Thiết kế thiết bị giám sát cảm biến từ xa qua smartphone Thiết kế thiết bị giám sát cảm biến từ xa qua smartphone

Trang 1

Lời cảm ơn vi

Mục lục vii

Liệt kê hình vẽ ix

Liệt kê bảng xii

Tóm tắt xiii

Chương 1 TỔNG QUAN Error! Bookmark not defined 1.1 ĐẶT VẤN ĐỀ Error! Bookmark not defined 1.2 MỤC TIÊU Error! Bookmark not defined 1.3 NỘI DUNG NGHIÊN CỨU Error! Bookmark not defined 1.4 GIỚI HẠN Error! Bookmark not defined 1.5 BỐ CỤC Error! Bookmark not defined Chương 2 CƠ SỞ LÝ THUYẾT Error! Bookmark not defined 2.1 LỰA CHỌN GIẢI PHÁP Error! Bookmark not defined 2.1.1 Giải pháp giám sát cảm biến Error! Bookmark not defined 2.1.2 Giải pháp điều khiển thiết bị Error! Bookmark not defined 2.2 GIỚI THIỆU VỀ ANDROID Error! Bookmark not defined 2.3 GIỚI THIỆU VỀ MẠNG WIFI VÀ 3G Error! Bookmark not defined 2.4 CÁC CHUẨN GIAO TIẾP Error! Bookmark not defined 2.4.1 UART Error! Bookmark not defined 2.4.2 I2C Error! Bookmark not defined 2.4.3 ONE WIRE Error! Bookmark not defined 2.5 Công cụ ThingSpeak Error! Bookmark not defined 2.5.1 Giới thiệu Error! Bookmark not defined 2.5.2 Tính năng Error! Bookmark not defined

Trang 2

2.6 Google Spreadsheets Error! Bookmark not defined Chương 3 TÍNH TOÁN VÀ THIẾT KẾ Error! Bookmark not defined 3.1 BÀI TOÁN THIẾT KẾ Error! Bookmark not defined 3.1.1 Sơ đồ mô tả thiết bị Error! Bookmark not defined 3.1.2 Hoạt động của thiết bị Error! Bookmark not defined 3.2 TÍNH TOÁN VÀ THIẾT KẾ THIẾT BỊ Error! Bookmark not defined 3.2.1 Thiết kế phần cứng Error! Bookmark not defined 3.2.1 Thiết kế ứng dụng Error! Bookmark not defined Chương 4 THI CÔNG HỆ THỐNG Error! Bookmark not defined 4.1 THI CÔNG PHẦN CỨNG - THIẾT BỊ Error! Bookmark not defined 4.1.1 Thi công thiết bị Error! Bookmark not defined 4.1.2 Lắp ráp và kiểm tra Error! Bookmark not defined 4.1.3 Lập trình cho vi điều khiển Error! Bookmark not defined 4.2 THI CÔNG ỨNG DỤNG TRÊN ĐIỆN THOẠI Error! Bookmark not defined

4.2.1 Giao diện bắt đầu ứng dụng Error! Bookmark not defined 4.2.2 Load dữ liệu từ GoogleSpreadsheets Error! Bookmark not defined 4.2.3 Điều khiển thiết bị Error! Bookmark not defined 4.2.4 Thiết lập thiết bị Error! Bookmark not defined 4.2.5 Biểu đồ Error! Bookmark not defined 4.3 GIỚI THIỆU PHẦN MỀM LẬP TRÌNHError! Bookmark not defined 4.3.1 Arduino IDE Error! Bookmark not defined 4.3.2 Phần mềm lập trình ứng dụng cho điện thoại: Android Studio Error! Bookmark not defined

4.4 KẾT QUẢ THỐNG KÊ Error! Bookmark not defined 4.4.1 Quá trình điều khiển thiết bị Error! Bookmark not defined 4.4.2 Kết quả giám sát cảm biến Error! Bookmark not defined

Bookmark not defined

4.5.1 Hướng dẫn sử dụng Error! Bookmark not defined 4.5.2 Quy trình thao tác Error! Bookmark not defined Chương 5 KẾT QUẢ - NHẬN XÉT - ĐÁNH GIÁError! Bookmark not defined 5.1 CẢM BIẾN Error! Bookmark not defined 5.2 BỘ VI ĐIỀU KHIỂN Error! Bookmark not defined

Trang 4

Hình Trang

Hình 2.1 Chiều của dữ liệu cảm biến Error! Bookmark not defined

Hình 2.2 Quy trình gửi nhận dữ liệu giữa Android và Arduino Error! Bookmark not defined

Hình 2.3 Điện áp của các mức logic trong giao tiếp UARTError! Bookmark not defined

Hình 2.4 Truyền 8 bit theo phương pháp song song và nối tiếp Error! Bookmark not defined

Hình 2.5 Mạng I2C với nhiều thiết bị và 2 điện trở kéo lên cho SDA, SCL Error! Bookmark not defined

Hình 2.6 Giản đồ xung của SCL và SDA Error! Bookmark not defined

Hình 2.7 Giản đồ xung khi có REPEAT START Error! Bookmark not defined

Hình 2.8 Giản đồ xung khi có Address Packet Format Error! Bookmark not defined

Hình 2.9 Giản đồ xung định dạng gói dữ liệu trong I2C Error! Bookmark not defined

Hình 2.10 Khung truyền dữ liệu trong chuẩn giao tiếp I2CError! Bookmark not defined

Hình 2.11 Giản đồ xung giao tiếp chuẩn one-wire Error! Bookmark not defined

Hình 2.12 Sơ đồ kết nối one-wire Error! Bookmark not defined

Hình 2.13 Sơ đồ kết nối mode song song Error! Bookmark not defined

Hình 2.14 Thuộc tính của một kênh ThingSpeak Error! Bookmark not defined

Hình 2.15 Google Spreadsheets Error! Bookmark not defined

Hình 3.1 Sơ đồ mô tả hệ thống Error! Bookmark not defined

Hình 3.2 Sơ đồ khối phần cứng thiết bị Error! Bookmark not defined

Hình 3.3 Module cảm biến DHT11 Error! Bookmark not defined

Hình 3.4 Sơ đồ kết nối cảm biến DHT11 với vi điều khiểnError! Bookmark not defined

Hình 3.5 Arduino Pro Mini Error! Bookmark not defined

Hình 3.6 Hình ảnh thực tế và sơ đồ chân PC817 Error! Bookmark not defined

Hình 3.7 Relay Error! Bookmark not defined

Hình 3.8 Module WiFi ESP8266 v7 Error! Bookmark not defined

Hình 3.9 Sơ đồ chân module WIFI ESP8266 v7 Error! Bookmark not defined

Hình 3.10 Flasher và firmware cần chuẩn bị Error! Bookmark not defined

Hình 3.11 Sơ đồ kết nối USBtoCOM với ESP8266 để flash firmware Error! Bookmark not defined

Hình 3.12 Giao diện công cụ flasher firmware Error! Bookmark not defined

Hình 3.13 Sơ đồ kết nối ESP8266 v7 với Arduino UNO Error! Bookmark not defined

Trang 5

Hình 3.23 Một Google Form hoàn chỉnh Error! Bookmark not defined

Hình 3.24 Các entry của Form Error! Bookmark not defined

Hình 3.25 Trang chủ ThingSpeak Error! Bookmark not defined

Hình 3.26 Giao diện điền thông tin để tạo mới tài khoản ThingSpeak Error! Bookmark not defined

Hình 3.27 Tạo mới một kênh ThingSpeak Error! Bookmark not defined

Hình 3.31 Thiết kế giao diện thiết lập thiết bị WiFi Error! Bookmark not defined

Hình 3.32 Thiết kế giao diện thiết lập thiết bị 3G Error! Bookmark not defined

Hình 3.33 Thiết kế giao diện vẽ biểu đồ Error! Bookmark not defined

Hình 4.1 Sơ đồ bố trí linh kiện Error! Bookmark not defined

Hình 4.2 Mặt TOP mạch in thiết bị Error! Bookmark not defined

Hình 4.3 Mặt BOTTOM mạch in thiết bị Error! Bookmark not defined

Hình 4.4 Thiết bị sử dụng WiFi (ESP8266 v7) Error! Bookmark not defined

Hình 4.5 Thiết bị sử dụng 3G (SIM800L) Error! Bookmark not defined

Hình 4.6 Bên trong hộp nhôm bảo vệ thiết bị Error! Bookmark not defined

Hình 4.7 Bên ngoài hộp nhôm bảo vệ thiết bị Error! Bookmark not defined

Hình 4.8 Lưu đồ giải thuật của thiết bị Error! Bookmark not defined

Hình 4.9 Lưu đồ giải thuật hàm con thiết lập WiFi Error! Bookmark not defined

Hình 4.10 Lưu đồ giải thuật hàm con thiết lập 3G Error! Bookmark not defined

Hình 4.12 Lưu đồ giải thuật hàm con CHECK Error! Bookmark not defined

Hình 4.13 Giao diện chính của ứng dụng Error! Bookmark not defined

Hình 4.14 Giao diện hiển thị sheet dữ liệu Error! Bookmark not defined

Hình 4.15 Giao diện điều khiển thiết bị Error! Bookmark not defined

Trang 6

Hình 4.17 Giao diện thiết lập cài đặt thiết bị WiFi Error! Bookmark not defined

Hình 4.18 Giao diện thiết lập cài đặt thiết bị 3G Error! Bookmark not defined

Hình 4.19 Giao diện chọn ngưỡng giá trị để vẽ biểu đồ Error! Bookmark not defined

Hình 4.20 Biểu đồ line Error! Bookmark not defined

Hình 4.21 Biểu đồ tròn thể hiện giá trị cảm biến Error! Bookmark not defined

Hình 4.22 Giao diện download JRE Error! Bookmark not defined

Hình 4.23 Giao diện download arduino IDE Error! Bookmark not defined

Hình 4.24 Thư mục gốc Arduino IDE chứa driver Error! Bookmark not defined

Hình 4.25 Giao diện Arduino IDE Error! Bookmark not defined

Hình 4.26 Giao diện download Android Studio Error! Bookmark not defined

Hình 4.27 Giao diện bắt đầu cài đặt Android Studio Error! Bookmark not defined

Hình 4.28 Giao diện chọn thành phần cài đặt Android Studio Error! Bookmark not defined

Hình 4.29 Giao diện quá trình cài đặt Android Studio Error! Bookmark not defined

Hình 4.30 Giao diện quá trình cài đặt các thành phần Android StudioError! Bookmark not defined

Hình 4.31 Giao diện tạo mới một project Android StudioError! Bookmark not defined

Hình 4.32 Giao diện đặt tên và vị trí lưu trữ project Error! Bookmark not defined

Hình 4.33 Giao diện chọn thiết bị android muốn lập trìnhError! Bookmark not defined

Hình 4.34 Giao diện chọn activity cho ứng dụng Error! Bookmark not defined

Hình 4.35 Giao diện đặt tên cho activity, layout, title Error! Bookmark not defined

Hình 4.36 Giao diện thiết lập cài đặt thiết bị Error! Bookmark not defined

Hình 4.39 Quy trình vận hành thiết bị Error! Bookmark not defined

Hình 5.1 Dung lượng bộ nhớ cài đặt ứng dụng Error! Bookmark not defined

Hình 5.2 Quyền ứng dụng cần được truy cập Error! Bookmark not defined

Hình 5.3 Dung lượng bộ nhớ RAM tiêu tốn khi chạy ứng dụng Error! Bookmark not defined

Trang 7

Bảng 4.1 Thời gian đáp ứng điều khiển thiết bị (đơn vị: giây) Error! Bookmark not

defined

Bảng 5.1 Kích cỡ chương trình arduino Error! Bookmark not defined

Trang 8

dữ liệu cảm biến, lưu vào bộ nhớ điện thoại

Thiết bị sẽ đọc giá trị cảm biến, xử lí và tải lên trên Google Spreadsheets Dữ liệu này có thể truy cập bất cứ lúc nào và bất cứ nơi đâu thông qua điện thoại hoặc máy tính Điều này không có nghĩa là nó không có tính bảo mật Vì Google Spreadsheets thuộc tài khoản Google của người dùng nên bất kì ai cũng có thể xem nhưng chỉ có người dùng mới có khả năng chỉnh sửa cơ sở dữ liệu Việc tải lên dữ liệu này sẽ thông qua công cụ

hỗ trợ là ThingSpeak và bằng các module kết nối mạng như ESP8266 cho WiFi và SIM800L cho 3G

Vì thiết bị không thể truy cập trực tiếp vào Google Spreadsheets để thay đổi các giá trị của sheet nên ta phải sử dụng công cụ hỗ trợ là ThingSpeak để làm đối tượng trung gian cho việc tải lên dữ liệu đến Google Spreadsheets

Với chức năng điều khiển tải, thiết bị sẽ một lần nữa thông qua công cụ hỗ trợ là ThingSpeak để thực hiện việc điều khiển tải tại chỗ Ý tưởng điều khiển thực hiện thông qua việc cập nhật và tải về dữ liệu của một trường trên ThingSpeak Các đối tượng thực hiện việc gửi nhận dữ liệu ở đây là arduino (thiết bị) và android (điện thoại)

Thành công trong việc cập nhật dữ liệu theo thời gian định sẵn và điều khiển tải thông qua ứng dụng, đề tài cần được phát triển hơn về tốc độ đáp ứng và mở rộng ứng dụng sang Smartwatch

Trang 9

riêng mình, và tất cả chúng có khả năng truyền tải, trao đổi thông tin, dữ liệu qua một mạng duy nhất mà không cần đến sự tương tác trực tiếp giữa người với người, hay người với máy tính Ngày nay, từ những thiết bị di động thông minh đến các vật dụng nhỏ nhất trong nhà đều được kết nối internet Sẽ thật tiện lợi, khi mà một thiết bị, một đối tượng cần được giám sát tự thân nó trả về tình trạng “sức khỏe”, đem các yếu tố cần được giám sát đến cho người dùng một cách chủ động Sẽ thật hữu ích và an toàn khi người ta không cần tác động tới thiết bị nữa, những thông số cần giám sát sẽ được đều đặn đo đạc, tải lên và lưu trữ trên một kho dữ liệu uy tín, bền vững và bảo mật như Google

Nắm bắt được tình hình thực tế, đề tài “Thiết kế thiết bị giám sát cảm biến từ

xa qua Smartphone (3G, WIFI)” ra đời với mong muốn ứng dụng sự phát triển của

internet, của điện thoại thông minh, của Google hỗ trợ vào việc giám sát cảm biến từ xa Sản phẩm của đề tài sẽ có thể đọc giá trị của cảm biến, đưa những giá trị này lên GoogleSpreasheets để giám sát và lưu trữ lâu dài, giúp người dùng có thể quan sát từ xa

ở bất kì nơi nào thông qua máy tính hoặc ngay trên chiếc điện thoại thông minh có cài ứng dụng giám sát cảm biến IoTSensor Ứng dụng trên điện thoại có chức năng điều khiển thiết bị, biểu diễn dữ liệu giám sát bằng sheets và 2 loại biểu đồ, xuất file EXCEL chứa dữ liệu cảm biến, lưu vào bộ nhớ điện thoại

1.2 MỤC TIÊU

Thiết bị sẽ đọc dữ liệu từ cảm biến, xử lí, tải lên và lưu trữ trên ứng dụng GoogleSpreadsheets Ngoài ra, nó còn phải có khả năng điều khiển tải tại chỗ thông qua mạng WiFi hoặc 3G, cho nên, sẽ có 2 thiết bị độc lập, một dùng WiFi, một dùng 3G để đảm bảo tính thích ứng linh hoạt với môi trường hoạt động Kèm theo thiết bị là một

Trang 10

dữ liệu cảm biến mà nó thu thập và phần phụ trợ là biểu diễn dữ liệu dưới dạng biểu đồ, giao diện điều khiển tải và giao diện chức năng thiết lập thông số ban đầu cho thiết bị

1.3 NỘI DUNG NGHIÊN CỨU

NỘI DUNG 1: Giới thiệu, đưa ra vấn đề cần giải quyết, xây dựng ý tưởng NỘI DUNG 2: Tìm hiểu và phân tích lý thuyết liên quan, chọn giải pháp

NỘI DUNG 3: Thiết kế và thi công thiết bị

NỘI DUNG 4: Kết quả nghiên cứu thực hiện

NỘI DUNG 5: Đánh giá kết quả thực hiện

1.4 GIỚI HẠN

 Thiết bị có 2 ngõ kết nối cảm biến tương tự, 2 ngõ ra điều khiển, sử dụng nguồn điện DC từ adaptor mà không sử dụng pin

 Thiết bị có 2 mô hình độc lập, một dùng WiFi, một dùng 3G

 Thiết bị thi công có kích thước 6 x 10 (cm)

 Loại cảm biến chỉ cho phép cảm biến tương tự sử dụng nguồn 5VDC

1.5 BỐ CỤC

 Chương 1: Tổng Quan

Chương này trình bày đặt vấn đề dẫn nhập lý do chọn đề tài, mục tiêu, nội dung nghiên cứu, các giới hạn thông số và bố cục đồ án

 Chương 2: Cơ Sở Lý Thuyết

Giới thiệu, phân tích lý thuyết, lựa chọn giải pháp Trình bày cơ sở dữ liệu, đám mây lưu trữ và các chuẩn giao tiếp, kết nối mạng sử dụng trong đề tài

 Chương 3: Thiết Kế và Tính Toán

Trình bày sơ đồ khối, yêu cầu chức năng từng khối Thiết kế sơ đồ nguyên lý, tính toán lựa chọn module, linh kiện cho quá trình xây dựng thiết bị Thiết kế giao diện cho ứng dụng

 Chương 4: Thi Công Hệ Thống

Trình bày quá trình thi công phần cứng thiết bị: sơ đồ bố trí linh kiện, sơ đồ mạch in Lập trình vi điều khiển, lập trình ứng dụng Hướng dẫn thao tác với từng phần cứng

Trang 12

Chương 2 CƠ SỞ LÝ THUYẾT

2.1 LỰA CHỌN GIẢI PHÁP

2.1.1 Giải pháp giám sát cảm biến

Thiết bị sẽ đọc giá trị cảm biến, xử lí và tải lên trên Google Spreadsheets Dữ liệu này có thể truy cập bất cứ lúc nào và bất cứ nơi đâu thông qua điện thoại hoặc máy tính Điều này không có nghĩa là nó không có tính bảo mật Vì Google Spreadsheets thuộc tài khoản Google của người dùng nên bất kì ai cũng có thể xem nhưng chỉ có người dùng mới có khả năng chỉnh sửa cơ sở dữ liệu Việc tải lên dữ liệu này sẽ thông qua công cụ hỗ trợ là ThingSpeak và bằng các module kết nối mạng

Để cập nhật giá trị của sheet trên Google Spreadsheet, phải dùng biểu mẫu (Form) Song, thiết bị không thể gửi trực tiếp giá trị cảm biến lên 1 form, vì vậy, ta phải dùng ThingSpeak làm trung gian ThingSpeak là một công cụ miễn phí để xây dựng các dự

án IoT, hỗ trợ tốt cho người dùng và không cần phải tạo và thuê tên miền như các công

cụ truyền thống Tất cả đều miễn phí Ta có thể qua sát được dữ liệu thu thập từ cảm biến một cách trực quan và dễ dàng thông qua máy tính và ngay cả trên điện thoại Chiều của dữ liệu cảm biến được mô tả như sau:

Hình 2.1 Chiều của dữ liệu cảm biến

2.1.2 Giải pháp điều khiển thiết bị

Thiết bị sẽ một lần nữa thông qua công cụ hỗ trợ là ThingSpeak để thực hiện việc điều khiển tải tại chỗ Ý tưởng điều khiển thực hiện thông qua việc cập nhật và tải về dữ

Trang 13

Hình 2.2 Quy trình gửi nhận dữ liệu giữa Android và Arduino

Điều khiển thiết bị dựa trên việc cập nhật giá trị của trường (field) trên ThingSpeak Để việc điều khiển trực quan hơn, ta cần thấy được sự phản hồi từ thiết bị

là đã điều khiển được hay chưa Android và arduino sẽ thay phiên thực hiện chức năng gửi – tải dữ liệu của field trong từng trường hợp

Muốn có được sự trực quan này, việc điều khiển cần dựa trên dữ liệu của 2 trường:

 Field điều khiển (field 1): chứa giá trị điều khiển, android có chức năng gửi lên giá trị cho field này, còn arduino sẽ tải dữ liệu về và thực hiện điều khiển tương ứng

 Field hiện tại (field 2): cho biết trạng thái của thiết bị Android sẽ hiển thị trạng thái của thiết bị dựa trên việc tải về dữ liệu của trường này, tất nhiên arduino sẽ đảm nhận chức năng gửi lên dữ liệu

2.2 GIỚI THIỆU VỀ ANDROID

Android là một hệ điều hành dựa trên nền tảng Linux được thiết kế dành cho các thiết bị di động có màn hình cảm ứng như điện thoại thông minh và máy tính bảng Android có mã nguồn mở và Google phát hành mã nguồn theo Giấy phép Apache Chính mã nguồn mở cùng với một giấy phép không có nhiều ràng buộc đã cho

Trang 14

phép các nhà phát triển thiết bị, mạng di động và các lập trình viên nhiệt huyết được điều chỉnh và phân phối Android một cách tự do

Ngoài ra, Android còn có một cộng đồng lập trình viên đông đảo chuyên viết các ứng dụng để mở rộng chức năng của thiết bị, bằng một loại ngôn ngữ lập trình Java có sửa đổi Ngày nay, điện thoại android đã có gần như mọi chức năng của một chiếc máy tính Chính vì sự tiện dụng và di động nên nhóm thực hiện quyết định lập trình ứng dụng trên android Sử dụng phần mềm Android Studio và các mã nguồn mở trên GitHub

2.3 GIỚI THIỆU VỀ MẠNG WIFI VÀ 3G

Wi-Fi viết tắt từ Wireless Fidelity hay mạng 802.11, là hệ thống mạng không dây sử dụng sóng vô tuyến giống như điện thoại di động, truyền hình và radio

Hệ thống này hoạt động ở một số sân bay, quán café, thư viện hoặc khách sạn

Hệ thống cho phép truy cập Internet tại những khu vực có sóng của nó và hoàn toàn không cần đến cáp nối Ngoài các điểm kết nối công cộng (hotspots), WiFi có thể được thiết lập ngay tại nhà riêng

Tên gọi 802.11 bắt nguồn từ viện IEEE (Institute of Electrical and Electronics Engineers) Viện này tạo ra nhiều chuẩn cho nhiều giao thức kỹ thuật khác nhau, và nó

sử dụng một hệ thống số nhằm phân loại chúng; 4 chuẩn thông dụng của WiFi hiện nay

là 802.11a/b/g/n

Các sóng vô tuyến sử dụng cho WiFi gần giống với các sóng vô tuyến sử dụng cho thiết bị cầm tay, điện thoại di động và các thiết bị khác Nó có thể chuyển và nhận sóng vô tuyến, chuyển đổi các mã nhị phân 1 và 0 sang sóng vô tuyến và ngược lại Tuy nhiên, sóng WiFi có một số khác biệt so với các sóng vô tuyến khác ở chỗ:

 Chúng truyền và phát tín hiệu ở tần số 2.4 GHz hoặc 5 GHz

Tần số này cao hơn so với các tần số sử dụng cho điện thoại di động, các thiết bị cầm tay và truyền hình Tần số cao hơn cho phép tín hiệu mang theo nhiều dữ liệu hơn

 Chúng dùng chuẩn 802.11:

Chuẩn 802.11b là phiên bản đầu tiên trên thị trường Đây là chuẩn chậm nhất và

rẻ tiền nhất, và nó trở nên ít phổ biến hơn so với các chuẩn khác 802.11b phát tín hiệu

ở tần số 2.4 GHz, nó có thể xử lý đến 11 megabit/giây, và nó sử dụng mã CCK (complimentary code keying)

Trang 15

802.11a, tốc độ xử lý đạt 300 megabit/giây

Chuẩn 802.11ac phát ở tần số 5 GHz

WiFi có thể hoạt động trên cả ba tần số và có thể nhảy qua lại giữa các tần số khác nhau một cách nhanh chóng Việc nhảy qua lại giữa các tần số giúp giảm thiểu sự nhiễu sóng và cho phép nhiều thiết bị kết nối không dây cùng một lúc

3G, hay 3-G, (viết tắt của third-generation technology) là công nghệ truyền thông thế hệ thứ ba, cho phép truyền cả dữ liệu thoại và dữ liệu ngoài thoại (tải dữ liệu, gửi email, tin nhắn nhanh, hình ảnh )

Thế hệ mạng di động mới (3G) không phải là mạng không dây IEEE 802.11 Các mạng này được ám chỉ cho các thiết bị cá nhân như PDA và điện thoại di động

Ngày nay 3G và WiFi được sử dụng một cách phổ biến và là cách truy cập mạng thông dụng của smartphone Không những vậy, các module có thể sử dụng WiFi, 3G để thực hiện xây dựng chức năng của một thiết bị IoT cũng là khá phong phú và có giá thành hợp lý

2.4 CÁC CHUẨN GIAO TIẾP

Trong giới hạn đề tài có sử dụng một số chuẩn giao tiếp: UART, I2C, ONEWIRE

2.4.1 UART

Thuật ngữ USART trong tiếng anh là viết tắt của cụm từ: Universal Synchronous

& Asynchronous serial Reveiver and Transmitter, nghĩa là bộ truyền nhận nối tiếp đồng

bộ và không đồng bộ USART hay UART cần phải kết hợp với một thiết bị chuyển đổi mức điện áp để tạo ra một chuẩn giao tiếp nào đó Ví dụ, chuẩn RS232 (hay COM) trên các máy tính cá nhân là sự kết hợp của chip UART và chip chuyển đổi mức điện áp

Trang 16

Tín hiệu từ chip UART thường theo mức TTL: mức logic High là 5V, mức Low

là 0V Trong khi đó, tín hiệu theo chuẩn RS232 trên máy tính cá nhân thường là -12V cho mức logic high và +12 cho mức low

Hình 2.3 Điện áp của các mức logic trong giao tiếp UART

Truyền thông nối tiếp: Dữ liệu được truyền từng bit trên 1 (hoặc một ít) đường

truyền Vì lý do này, cho dù dữ liệu có lớn đến đâu cũng chỉ dùng rất ít đường truyền

Một hạn chế rất dễ nhận thấy khi truyền nối tiếp so với song song là tốc độ truyền

và độ chính xác của dữ liệu khi truyền và nhận Vì dữ liệu cần được “chia nhỏ” thành từng bit khi truyền/nhận, tốc độ truyền sẽ bị giảm Mặt khác, để đảm bảo tính chính xác của dữ liệu, bộ truyền và bộ nhận cần có những “thỏa hiệp” hay những tiêu chuẩn nhất định

Khái niệm “đồng bộ” để chỉ sự “báo trước” trong quá trình truyền Lấy ví dụ thiết

bị 1 kết nối với với thiết bị 2 bởi 2 đường, một đường dữ liệu và 1 đường xung nhịp Cứ mỗi lần thiết bị 1 muốn gởi 1 bit dữ liệu, nó điều khiển đường xung nhịp chuyển từ mức thấp lên mức cao báo cho thiết bị 2 sẵn sàng nhận một bit Bằng cách báo trước này tất

cả các bit dữ liệu có thể truyền/nhận dễ dàng với ít “rủi ro” hơn Tuy nhiên, cách truyền này đòi hỏi ít nhất phải có 2 đường truyền cho 1 quá trình gửi nhận

Khác với cách truyền đồng bộ, truyền thông không đồng bộ chỉ cần một đường truyền cho một quá trình Khung dữ liệu đã được chuẩn hóa bởi các thiết bị nên không cần đường xung nhịp báo trước dữ liệu đến Ví dụ, 2 thiết bị đang giao tiếp với nhau theo phương pháp này, chúng đã được thỏa thuận với nhau rằng cứ 1 mili-giây thì sẽ có

Trang 17

bị tham gia phải thống nhất về khoảng thời gian truyền đi 1 bit, hay nói cách khác tốc

độ truyền phải được cài đặt như nhau trước, tốc độ này gọi là tốc độ baud Vậy, tốc độ baud là số bit truyền trong 1 giây Ví dụ nếu tốc độ baud được đặt là 19200 thì thời gian dành cho 1 bit truyền là 1/19200 ~ 52.083us

Frame (khung truyền): Do truyền thông nối tiếp mà nhất là nối tiếp không đồng

bộ rất dễ mất hoặc sai lệch dữ liệu nên quá trình truyền thông theo kiểu này phải tuân theo một số quy cách nhất định Bên cạnh tốc độ baud, khung truyền là một yếu tố quan trọng tạo nên sự thành công khi truyền và nhận Khung truyền bao gồm các quy định về

số bit trong mỗi lần truyền, các bit báo hiệu như Start và Stop, các bit kiểm tra như Parity, ngoài ra số lượng các bit trong một data cũng được quy định bởi khung truyền Một khung truyền theo chuẩn UART bắt đầu bằng một bit Start, tiếp theo là 8 bit data, sau đó là 1 bit Parity dùng kiểm tra dữ liệu và cuối cùng là 2 bit Stop

Start bit: là bit đầu tiên được truyền trong một frame truyền, bit này có chức năng

báo cho thiết bị nhận biết rằng có một gói dữ liệu sắp được truyền tới

Data: Data hay dữ liệu cần truyền là thông tin chính mà chúng ta cần gởi và nhận Data không nhất thiết phải là gói 8 bit Trong truyền thông nối tiếp UART, bit có trọng

số nhỏ nhất (LSB – Least Significant Bit, bit bên phải) của data sẽ được truyền trước và cuối cùng là bit có trọng số lớn nhất (MSB – Most Significant Bit, bit bên trái)

Parity bit: Parity là bit dùng kiểm tra dữ liệu truyền đúng không (một cách tương

đối) Có 2 loại parity là parity chẵn (even parity) và parity lẻ (odd parity) Parity chẵn nghĩa là số lượng số 1 trong dữ liệu bao gồm bit parity luôn là số chẵn Ngược lại tổng số lượng các số 1 trong parity lẻ luôn là số lẻ

Stop bit: là một hoặc các bit báo cho thiết bị nhận rằng một gói dữ liệu đã được

Trang 18

để đảm bảo tính chính xác của dữ liệu Stop bit là bit bắt buộc xuất hiện trong khung truyền

2.4.2 I2C

I2C là viết tắt của từ Inter - Integrated Circuit là một chuẩn truyền thông do hãng điện tử Philips Semiconductor sáng lập và xây dựng thành chuẩn năm 1990 Phiên bản mới nhất của I2C là V3.0 phát hành năm 2007

I2C: Là một truyền thông nối tiếp đa chip chủ (tạm dịch của cụm từ multi-master serial computer bus) Khái niệm “multi-master” được hiểu là trên cùng một bus có thể

có nhiều hơn một thiết bị làm Master, đồng thời một Slave có thể trở thành một Master nếu nó có khả năng I2C được truyền đi trên 2 đường SDA (Serial DATA) và SCL (Serial Clock Trong đó SDA là đường truyền/nhận dữ liệu và SCL là đường xung nhịp Căn cứ theo chuẩn I2C, các đường SDA và SCL trên các thiết bị có cấu hình “cực góp mở” nghĩa là cần có các điện trở kéo lên (pull-up resistor) cho các đường này Ở trạng thái nghỉ (Idle), 2 chân SDA và SCL ở mức cao

Hình 2.5 Mạng I2C với nhiều thiết bị và 2 điện trở kéo lên cho SDA, SCL

Master: Là chip khởi động quá trình truyền nhận, phát đi địa chỉ của thiết bị cần giao tiếp và tạo xung giữ nhịp trên đường SCL

Slave: Là chip có một địa chỉ cố định, được gọi bởi Master và phục vụ yêu cầu

từ Master

SDA- Serial Data: Là đường dữ liệu nối tiếp, tất cả các thông tin về địa chỉ hay

dữ liệu đều được truyền trên đường này theo thứ tự từng bit một Chú ý là trong chuẩn I2C, bit có trọng số lớn nhất (MSB) được truyền trước nhất, đặc điểm này ngược lại với chuẩn UART

Trang 19

Hình 2.6 Giản đồ xung của SCL và SDA

START Condition (điều kiện bắt đầu): từ trạng thái nghỉ, khi cả SDA và SCL ở mức cao, nếu Master muốn thực hiện một “cuộc gọi”, Master sẽ kéo chân SDA xuống thấp trong khi SCL vẫn cao Trạng thái này gọi là START Condition

STOP Condition: Điều kiện kết thúc: sau khi thực hiện truyền/nhận dữ liệu, nếu Master muốn kết thúc quá trình nó sẽ tạo ra một STOP condition STOP condition được Master thực hiện bằng cách kéo chân SDA lên cao khi đường SCL đang ở mức cao STOP condition chỉ được tạo ra sau khi địa chỉ hoặc dữ liệu đã được truyền/nhận

REPEAT START (bắt đầu lặp lại): khoảng giữa START và STOP condition là khoảng bận của đường truyền, các Master khác không tác động được vào đường truyền trong khoảng này Trường hợp sau khi kết thúc truyền/nhận mà Master không gởi STOP condition lại gởi thêm 1 START condition gọi là REPEAT START Khả năng này thường được dùng khi Master muốn lấy dữ liệu liên tiếp từ các Slaves Hình bên dưới

mô tả các Master tạo ra START, STOP và REPEAT START

Hình 2.7 Giản đồ xung khi có REPEAT START

Trang 20

Address Packet Format : Định dạng gói địa chỉ: Trên mạng I2C, tất cả các thiết

bị đều có thể là Master hay Slave Mỗi thiết bị có một địa chỉ cố định gọi là Device address Khi một Master muốn giao tiếp với một Slave nào đó, nó trước hết tạo ra một START condition và tiếp theo là gởi địa chỉ Device address của Slave cần giao tiếp trên đường truyền, vì thế xuất hiện khái niệm “gói địa chỉ” (Address Packet) Gói địa chỉ trong I2C có định dạng 9 bit trong đó 7 bit đầu (gọi là SLA, được gởi liền sau START condition) chứa địa chỉ Slave, một bit READ/WRITE và một bit ACK-Ackknowledge (xác nhận) Do bit địa chỉ có độ dài 7 bit nên về mặt lý thuyết, trên 1 mạng I2C có thể tồn tại tối đa 27 = 128 thiết bị có địa chỉ riêng biệt Tuy nhiên, địa chỉ lớn hơn hoặc bằng

120 không được dùng Riêng địa chỉ 0 được dùng cho “cuộc gọi chung” (General call) Bit READ/WRITE (R/W) được truyền tiếp sau 7 bit địa chỉ là bit báo cho Slave biết Master muốn “đọc” hay “ghi” vào Slave Nếu bit này bằng 0 (gọi là W) thì quá trình

“Ghi” dữ liệu từ Master đến Slave được yêu cầu, nếu bit này bằng 1 (gọi là R) thì Master muốn “đọc” dữ liệu từ Slave về 8 bit trên (SLA+R/W) được Master phát ra sau khi phát START condition, nếu một Slave trên mạng nhận ra rằng địa chỉ mà Master yêu cầu trùng khớp với Device address của chính nó sẽ “đáp trả” lại Master bằng cách phát ra 1 tín hiệu “xác nhận” ACK bằng cách kéo chân SDA xuống thấp trong xung thứ 9 Ngược lại, nếu không có Slave đáp ứng lại, chân SDA vẫn ở mức cao trong xung giữ nhịp thứ

9 thì gọi là tín hiệu “không xác nhận” – NOT ACK, lúc này Master cần có những ứng

xử phù hợp tùy theo mỗi trường hợp cụ thể Ví dụ Master có thể gởi STOP condition và sau đó phát lại địa chỉ Slave khác… Như vậy, trong 9 bit của gói địa chỉ thì chỉ có 8 bit được gởi bởi Master, bit còn lại là do Slave

Hình 2.8 Giản đồ xung khi có Address Packet Format

General call – Cuộc gọi chung: Khi Master phát đi gói địa chỉ có dạng 0 (thực chất là 0+W) tức nó muốn thực hiện một cuộc gọi chung đến tất cả các Slave Tất nhiên, cho phép hay không cho phép cuộc gọi chung là do Slave quyết định Nếu các Slave

Trang 21

dữ liệu luôn bao gồm 9 bit trong đó 8 bit đầu là dữ liệu và 1 bit cuối là bit ACK Tám bit dữ liệu do thiết bị phát gởi và bit ACK do thiết bị nhận tạo ra Hình bên dưới mô tả định dạng gói dữ liệu trong I2C

Hình 2.9 Giản đồ xung định dạng gói dữ liệu trong I2C

Phối hợp gói địa chỉ và dữ liệu: Một quá trình truyền/nhận I2C thường được bắt đầu từ Master, Master phát đi một START condition sau đó gởi gói địa chỉ SLA+R/W trên đường truyền Tiếp theo nếu có một Slave đáp ứng lại, dữ liệu có thể truyền/nhận liên tiếp trên đường truyền (1 hoặc nhiều byte liên tiếp) Khung truyền thông thường được mô tả như hình bên dưới

Hình 2.10 Khung truyền dữ liệu trong chuẩn giao tiếp I2C

Trang 22

Hình 2.11 Giản đồ xung giao tiếp chuẩn one-wire

Giao thức 1-wire dùng mức logic CMOS/TTL và hoạt động ở dãy điện áp từ 2.8 đến 6v Master và slave có thể nhận hoặc truyền nhưng tại 1 thời điểm chỉ thực hiện một chức năng LSB được gởi đi đầu tiên Dữ liệu trong mạng 1-wire được truyền đi theo khe thời gian Để viết mức logic 1, Master kéo điện áp xuống thấp trong 15us hoặc thấp hơn Để viết mức logic 0, Master kéo điện áp xuống thấp trong 60us hoặc thấp hơn

Trước khi giao tiếp, Master reset lại mạng bằng việc giữ dữ liệu ở mức thấp ít nhất là 480us và sau đó tìm đáp ứng xung từ slave Master gọi slave bởi địa chỉ duy nhất của nó

Trang 23

Hình 2.12 Sơ đồ kết nối one-wire

Một số chip có khả năng hoạt động ở chế độ song song

Hình 2.13 Sơ đồ kết nối mode song song

Ở chế độ này, chip lấy nguồn từ dòng dữ liệu Điều này cho phép loại bỏ nguồn ngoài nhưng nó gặp một số bất lợi:

 Xử lí nhiều hơn

 Trong suốt quá trình giao tiếp song song không thể giao tiếp với slave khác

Trang 24

 Một số chip có thể mất dữ liệu vì không có nguồn, vì thế mỗi lần nó sẽ định lại cấu hình

Thỉnh thoảng, giải pháp tốt nhất là dùng nguồn dự phòng bên phía slave để tiết kiệm bộ đếm dữ liệu Mode song song hữu ích khi giao tiếp ở khoảng cách xa

2.5 Công cụ ThingSpeak

2.5.1 Giới thiệu

ThingSpeak là một dịch vụ web miễn phí cho phép bạn thu thập dữ liệu cảm biến

lưu trữ đám mây, là một nền tảng dữ liệu mở và API (Application Programming

Interface – Giao diện lập trình ứng dụng) cho việc phát triển các ứng dụng IoT Nó cung

cấp ứng dụng cho phép bạn thu thập, lưu trữ, phân tích, hình dung và tác động lên dữ liệu từ các cảm biến hoặc phần cứng như Arduino, Raspberry Pi, BeagleBone Black…

Với ThingSpeak bạn có thể tạo các ứng dụng giám sát cảm biến, ứng dụng định

vị theo dõi, và một mạng lưới xã hội của sự vật với khả năng cập nhật trạng thái ThingSpeak API có sẵn trên GitHub, bao gồm các API hoàn chỉnh để xử lý các yêu cầu HTTP, lưu trữ dữ liệu số và chữ số, xử lý dữ liệu số, theo dõi vị trí và cập nhật trạng thái

 Và quan trọng hơn cả, ThingSpeak API có sẵn trên GitHub

2.5.3 Các thuộc tính của một kênh

Các thuộc tính của kênh là rất đa dạng, ThingSpeak hướng dẫn rõ ràng cho người dùng các thông số cần thiết cho việc thiết lập thuộc tính của kênh

Nắm rõ thuộc tính của kênh sẽ giúp người dùng dễ dàng quản lí và điều khiển luồng

dữ liệu của mình, từ đó làm việc quản lí và khai thác dữ liệu trở nên dễ dàng, hiệu quả, mang lại hiệu suất cao hơn

Trang 25

Hình 2.14 Thuộc tính của một kênh ThingSpeak

Trang 26

Ta có thể thay đổi các thuộc tính kênh trong tab SettinGoogleSpreadsheets Channel với chức năng của từng thuộc tính như sau:

• Channel ID: Tự động tạo ra ID duy nhất cho kênh của bạn Ứng dụng của bạn sử dụng

ID này để đọc dữ liệu từ các kênh Bạn không thể thay đổi giá trị của nó

• Name: Nhập tên duy nhất cho kênh ThingSpeak

• Mô tả: Nhập mô tả cho kênh ThingSpeak

• Field#: Check box để cho phép sử dụng 1 trường, sau đó nhập tên trường Mỗi kênh

ThingSpeak có thể có đến tối đa 8 trường

• TaGoogleSpreadsheets: Nhập từ khóa xác định kênh Ngăn cách bằng các dấu phẩy

• Make Public: Check box để cho phép chế độ xem công khai kênh của bạn Theo mặc

định, kênh của bạn là riêng tư và đòi hỏi một Read API Key để truy cập vào feed của

nó Bạn có thể tạo một kênh công khai, cho phép người dùng khác có khả năng sử dụng feed của bạn mà không cần một Read API key Vậy, ta bắt buộc phải check ô này để có thể gửi nhận dữ liệu bằng Arduino

• URL: Nếu bạn có một trang web có chứa thông tin về kênh ThingSpeak của mình,

điền URL vào

*Các thuật ngữ cần lưu ý

API key

Khi đọc hoặc ghi dữ liệu vào một kênh bằng ThingSpeak API, ta cần phải có quyền đọc và ghi thích hợp Các API key là các mã có 16 chữ số cấp phép cho việc đọc, ghi dữ liệu vào một kênh Có 2 loại API key: Write API Key và Read API Key

 Write API Key

Sử dụng Write API Key để cập nhật một kênh

Để tìm Write API Key của bạn:

• Nhấp vào Channel > My Channels

• Chọn kênh để cập nhật

• Chọn tab API Keys

 Read API Key

Read API Key cho phép ứng dụng của bạn đọc dữ liệu từ API của một kênh riêng tư Bạn có thể tạo ra nhiều Read API Key cho các ứng dụng khác nhau

Để có được một Read API Key:

• Nhấp vào Channel > My Channels

Trang 27

ThingHTTP cho phép giao tiếp giữa các thiết bị, các trang web và dịch vụ web

mà không cần phải thực hiện các giao thức trên các thiết bị con Bạn chỉ cần chỉ rõ hành động trong ThingHTTP mà bạn muốn kích hoạt sử dụng Ở đây, ta dùng tính năng

ThingHTTP request Để sử dụng được tính năng này, ta cần tạo một ThingHTTP request Quy trình tạo một ThingHTTP request diễn ra như sau:

Nhấn vào Apps > ThingHTTP

Nhấn vào New ThingHTTP

* Cấu hình ThingHTTP

Name: Nhập tên duy nhất cho ThingHTTP request

API Key: ThingSpeak sẽ tự động tạo một API key cho ThingHTTP request

URL: Nhập địa chỉ của trang web hoặc các dịch vụ web để đọc dữ liệu từ hoặc ghi dữ

liệu vào, bắt đầu với http: // hoặc https: // Ở đây, ta dùng Google Form để cập nhật dữ liệu nên ta sẽ điền đầy đủ địa chỉ của Form

Trang 28

HTTP Auth Username: Nếu URL của bạn yêu cầu xác thực, nhập tên người dùng để

xác thực để truy cập các kênh tin hoặc trang web

HTTP Auth Password: Nếu URL của bạn yêu cầu xác thực, nhập mật khẩu để xác thực

để truy cập các kênh tin hoặc trang web

Method: Chọn phương thức HTTP yêu cầu để truy cập vào các URL

Content Type: Nhập MIME hoặc hình thức loại nội dung theo yêu cầu

Ví dụ, application / x-www-form-urlencoded

HTTP Version: Chọn phiên bản của HTTP trên máy chủ của bạn

Host: Nếu ThingHTTP request của bạn yêu cầu một địa chỉ máy chủ, nhập tên miền Ví

dụ, api.thingspeak.com

Headers: Nếu ThingHTTP request của bạn yêu cầu tiêu đề tùy chỉnh, nhập tên của tiêu

đề và giá trị

Body: Nhập bạn muốn bao gồm trong yêu cầu của bạn Ở đây, ta cập nhật dữ liệu cho

2 trường bằng Google Form nên ta sẽ điền các entry của Form với cú pháp như sau:

&entry.998063226=%%cb1%%&entry.1999123839=%%cb2%%

Parse String: Nhập vào một chuỗi nếu bạn muốn ThingSpeak trả về một chuỗi phản

hồi xác nhận cho thủ tục gửi nhận thành công

ThingSpeak hỗ trợ rất tốt cho người dùng, đưa ra những URL trong mục Help để

ta có thể tiến hành gửi nhận dữ liệu của mình Để đăng một feed cập nhật giá trị cho kênh, ta dùng cú pháp như sau:

GET https://api.thingspeak.com/apps/thinghttp/send_request?api_key=API_KEY&field1=value1&field2=value2

Trong đó:

 API_KEY: mã duy nhất gồm 16 chữ số của ThingHTTP của bạn

 field1, field2: tên các trường, cần có kí tự “&” trước tên trường

 value1, value2: chuỗi thông tin cập nhật giá trị cho trường

Trang 29

Hình 2.15 Google Spreadsheets

Hơn thế nữa, Google Docs còn cho phép bạn lưu trữ dữ liệu lên nền đám mây để có thể chỉnh sửa chúng ở bất kỳ một máy tính nào khác Về cơ bản thì Spreasheets là một bảng tính Excel đơn giản của Microsoft Office Tuy không được đầy đủ như Excel nhưng Spreadsheets lại sở hữu những tính năng chia sẻ phong phú và đa dạng của điện toán đám mây giúp cho bạn có thể làm việc một cách hiệu quả

Google Spreadsheets giúp làm nổi bật dữ liệu của bạn bằng các biểu đồ và đồ thị đầy màu sắc Công thức được tích hợp sẵn, bảng tổng hợp và tùy chọn định dạng có điều kiện giúp tiết kiệm thời gian và đơn giản hóa các tác vụ tính toán thông thường Tất cả đều miễn phí Với những tính năng nổi trội này, nhóm thực hiện quyết định chọn Google Spreadsheets để làm cơ sở dữ liệu chính cho việc xây dựng đề tài

Để cập nhật giá trị của sheet trên Google Spreadsheets, phải dùng biểu mẫu (Form) Song, thiết bị không thể gửi trực tiếp giá trị cảm biến lên 1 form, vì vậy, ta phải dùng ThingSpeak làm trung gian Ta có thể qua sát được dữ liệu thu thập từ cảm biến một cách trực quan và dễ dàng thông qua máy tính và ngay cả trên điện thoại

Trang 30

Chương 3 TÍNH TOÁN VÀ THIẾT KẾ

3.1 BÀI TOÁN THIẾT KẾ

Nhóm thực hiện phải thiết kế một thiết bị thu thập dữ liệu từ cảm biến, upload lên Google Spreadsheets Dữ liệu thu thập được có thể quan sát trực tiếp trên điện thoại android dưới dạng sheet hoặc các loại biểu đồ

Ứng dụng trên thiết bị có khả năng điều khiển được 2 tải khác Quá trình điều khiển phải ổn định và có sự phản hồi Thiết bị phải có sự linh hoạt trong kết nối Ở những nơi

có WiFi và có điện liên tục, ta sẽ dùng thiết bị WiFi, còn ở những nơi không có mạng WiFi, ta dùng thiết bị 3G

Ngoài ra, thiết bị còn phải đảm bảo tính nhỏ gọn, đơn giản, ổn định trong quá trình thiết lập và vận hành Thiết kế sẽ gồm 2 phần:

 Thiết kế thiết bị: xây dựng phần cứng, kết hợp các module

 Thiết kế ứng dụng: xây dựng ứng dụng trên điện thoại thông minh để có thể hiển thị, điều khiển thiết bị

3.1.1 Sơ đồ mô tả thiết bị

Hình 3.1 Sơ đồ mô tả thiết bị

Trang 31

nhật dữ liệu cảm biến và điều khiển thiết bị theo yêu cầu của ứng dụng trên smartphone

Cả hệ thống sẽ làm việc trong môi trường WiFi hoặc 3G

3.2 TÍNH TOÁN VÀ THIẾT KẾ THIẾT BỊ

Dựa vào sơ đồ mô tả thiết bị, ta chia ra thiết kế phần cứng (board điều khiển) và thiết

kế phần mềm (ứng dụng trên điện thoại)

3.2.1 Thiết kế phần cứng

a Yêu cầu:

Thiết bị thu thập dữ liệu từ cảm biến, upload lên Google Spreadsheets, điều khiển được 2 tải khác Ngoài ra, thiết bị còn phải đảm bảo tính nhỏ gọn, đơn giản, ổn định trong quá trình thiết lập và vận hành

b Sơ đồ khối phần cứng:

Hình 3.2 Sơ đồ khối phần cứng thiết bị

Trang 32

c Giải thích chức năng

Khối cảm biến: cảm biến đọc các thông số đối tượng cần giám sát, đưa đến

khối xử lý trung tâm Ở đây, nhóm thực hiện đề tài chọn cảm biến DHT11 có thể đo 2 thông số là nhiệt độ và độ ẩm

Khối xử lý trung tâm: nhận tín hiệu từ khối cảm biến, xử lí, upload lên Google

Spreadsheets thông qua khối kết nối mạng Ngoài ra, nó còn điều khiển khối kết nối mạng để thực hiện các quá trình thiết lập và điều khiển tải ở khối chấp hành

Khối chấp hành: nhận dữ liệu từ khối xử lý trung tâm điều khiển, quyết định

đóng, ngắt tải

Khối kết nối mạng: sử dụng module WiFi hoặc SIM để thực hiện upload dữ

liệu thu thập được lên Google Spreadsheets

Khối nguồn: cung cấp nguồn cho khối xử lý trung tâm, khối chấp hành, khối

cảm biến, khối kết nối mạng Mỗi khối có một mức điện áp sử dụng khác nhau nên có khối nguồn cần có sự linh hoạt

d Tính toán và thiết kế

1) Khối cảm biến

Nguyên lý cơ bản chung của các cảm biến là chuyển đổi thông số không điện của môi trường thành các thông số điện như điện áp dòng điện

Ở đây, nhóm thực hiện muốn tạo một thiết kế mở cho khối cảm biến Cảm biến

sử dụng ở khối này có thể là các cảm biến thông dụng, có các chuẩn giao tiếp như I2C hay chỉ đơn giản là cảm biến tương tự

Vì chưa hướng tới khách hàng cụ thể nên nhóm thực hiện chọn DHT làm cảm biến phục vụ cho việc giám sát có kết nối mở này Cách đọc cảm biến được hỗ trợ tốt bằng các thư viện của arduino; giá thành của DHT11 khá hợp lí, mang tính kinh tế khi ứng dụng vào các dự án giám sát đơn giản DHT11 có thể đo cũng lúc cả nhiệt độ và độ

ẩm môi trường, ưu điểm này cho phép việc thiết kế phần cúng và giám sát cảm biến cho thiết bị trở nên đơn giản nhưng mang lại hiệu quả gấp đôi so với việc đọc cùng lúc 2 cảm biến

DHT11 là cảm biến có ngõ ra tương tự Cảm biến đo độ ẩm dùng điện trở và nhiệt điện trở bán dẫn NTC để đo nhiệt độ được kết nối với vi điều khiển 8 bit

Trang 33

Hình 3.3 Module cảm biến DHT11

* Thông số kỹ thuật

 Tín hiệu truyền trong phạm vi: 20m

 Nguồn điện: 3-5V

 Dòng tiêu thụ: 2.5 mA max khi truyền dữ liệu

 Giao tiếp chuẩn 1-wire

 Phạm vi nhiệt độ: 0-50 0C

 Phạm vi độ ẩm: 20-90 %

 Sai số nhiệt độ ± 20C

 Sai số độ ẩm ± 5 %

*Sơ đồ kết nối với vi điều khiển

Hình 3.4 Sơ đồ kết nối cảm biến DHT11 với vi điều khiển

Trang 34

2) Khối xử lý trung tâm

Thiết bị cần đảm bảo tính nhỏ gọn, tách biệt, kinh tế và khả năng xử lý; chỉ dùng arduino ở mức độ đơn giản là đọc, gửi giá trị cảm biến, giao tiếp WIFI, 3G, nên board arduino Pro Mini là lựa chọn kinh tế nhất cho việc thiết kế thiết bị Nếu chỉ dùng vi điều khiển Atmega328 – bộ não của Pro Mini, ta cần phải nạp bootloader, phải vẽ lại mạch

in cho vi điều khiển Việc này làm quá trình thiết kế và hàn mạch trở nên phức tạp và mất nhiều thời gian hơn Arduino Pro Mini là một dòng Arduino nhỏ gọn, mạnh mẽ dùng để lập trình ứng dụng điều khiển đơn giản hay dùng cho người mới tiếp cận với lập trình Arduino Arduino Pro Mini là một trong những board arduino rẻ nhất

Hình 3.5 Arduino Pro Mini Bảng 3.1 Thông số kỹ thuật cơ bản của Arduino Pro Mini

Điện áp vào khuyên dùng 3.3 - 12V (mẫu 3.3V); 5 - 12V (mẫu 5V)

Cường độ dòng điện trên mỗi chân I/O 20 mA

Trang 35

* Bộ nhớ

Các ATmega328 có 32 KB bộ nhớ flash để lưu trữ chương trình (trong đó 0.5kB được sử dụng cho các bộ nạp khởi động (bootloader)) Nó có 2 kB SRAM và 1kBs của EEPROM (có thể được đọc và ghi với các thư viện EEPROM)

* Ngõ vào ra:

Mỗi chân trong số 14 chân digital trên Pro Mini có thể được sử dụng như một đầu vào hoặc đầu ra, sử dụng pinMode(), digitalWrite(), và các chức năng digitalRead() Chúng hoạt động ở 3,3 hoặc 5 V (tùy mẫu) Mỗi chân có thể cung cấp hoặc nhận được tối đa 40 mA và có một điện trở kéo lên (ngắt kết nối theo mặc định) 20-50 kΩ Ngoài

ra, một số chân chuyên dùng có chức năng như sau:

 Nối tiếp: 0 (RX) và 1 (TX) Được sử dụng để nhận (RX) và truyền dữ liệu nối tiếp (TX) TTL Các chân này được kết nối với TX-0 và RX-1 chân của header 6 chân

 Ngắt ngoài: 2 và 3 Các chân này có thể được cấu hình để kích hoạt một ngắt mức thấp, một xung cạnh lên hay xuống, hoặc một sự thay đổi trong giá trị

 PWM: 3, 5, 6, 9, 10, và 11 Cung cấp đầu ra PWM 8-bit với chức năng analogWrite ()

 SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK) Các chân này hỗ trợ chuẩn truyền SPI, trong đó, mặc dù được cung cấp bởi các phần cứng cơ bản, hiện không có trong ngôn ngữ Arduino

 LED: 13 Có một đèn LED kết nối sẵn với chân digital 13 Khi xuất mức điện áp có giá trị HIGH, đèn LED được bật

Trang 36

 Pro Mini có 8 đầu vào tương tự (analog), mỗi trong số đó cung cấp 10 bit

độ phân giải (1024 giá trị khác nhau) Các đầu vào analog đo từ mass đến VCC

 I2C: A4 (SDA) và A5 (SCL) Hỗ trợ I2C (TWI) giao tiếp bằng cách sử dụng thư viện Wire

 Reset: tích cực mức thấp

* Giao tiếp:

Arduino Pro Mini có thể giao tiếp với một máy tính, một Arduino, hoặc vi điều khiển khác Các ATmega328 cung cấp giao tiếp nối tiếp UART TTL, trong đó có sẵn trên chân số 0 (RX) và 1 (TX) Các phần mềm Arduino bao gồm một màn hình nối tiếp cho phép dữ liệu văn bản đơn giản được gửi đến và từ bảng Arduino thông qua kết nối USB

Một thư viện SoftwareSerial cho phép giao tiếp nối tiếp trên bất kỳ chân ngõ ra

số nào Pro Mini

Các ATmega328 cũng hỗ trợ I2C (TWI) và giao tiếp SPI Các phần mềm Arduino bao gồm một thư viện Wire để đơn giản hóa việc sử dụng bus I2C

Arduino Pro Mini có thể sử dụng 3 vi điều khiển họ 8bit AVR là ATmega8, ATmega168, ATmega328 Bộ não này có thể xử lí những tác vụ đơn giản như điều khiển đèn LED nhấp nháy, xử lí tín hiệu cho xe điều khiển từ xa, làm một trạm đo nhiệt

độ - độ ẩm và hiển thị lên màn hình LCD, điều khiển các module giao tiếp UART thông dụng,… Trong phạm vi đề tài, nhóm thực hiện sử dụng vi điều khiển Atmega328

Trang 37

 Chân 4: Collector -Thu

Vì việc đóng cắt tải là không quá liên tục (tần số thấp) nên ta chỉ cần dùng OPTO – RELAY để điều khiển tải

Hình 3.7 Relay

Ta kết nối PC817 với vi điều khiển Để điều khiển tải, ta chỉ cần xuất mức logic

“0” hoặc “1” để đóng, ngắt tương ứng PC817 sẽ đóng vai trò chấp hành, cách ly về điện giữa tải với vi điều khiển

Trang 38

4) Khối kết nối mạng

Để thực hiện kết nối WiFi/3G, ta dùng 2 module SIM 800L và WiFi ESP8266, giao tiếp với arduino thông qua chuẩn UART Với giá thành hợp lí, khả năng xử lí tốt, lập trình trực quan với tập lệnh AT, 2 module có sự tương đồng, làm cho việc xây dựng thiết bị trở nên đơn giản và hiệu quả hơn

A Module WiFi ESP8266 V7

a Giới thiệu

Đây là module truyền nhận WiFi sử dụng chip ESP8266 SoC (System on Chip) ESP8266 với lõi vi xử lý 32 bit hoạt động với tần số 80MHz, 64KB RAM và 512KB Flash Nó sử dụng giao thức nối tiếp với tốc độ baud 9600 (mặc định) Kết nối mạng không dây, giống như một máy chủ hoặc một cầu nối trung gian Hình ảnh thực tế của module được mô tả như sau

Hình 3.8 Module WiFi ESP8266 v7

Mô tả:

o Hỗ trợ chuẩn 802.11 b/g/n

o WiFi 2.4 GHz, hỗ trợ WPA/WPA2

o Chuẩn điện áp hoạt động: 3.3V

o Chuẩn giao tiếp nối tiếp UART với tốc độ baud lên đến 115200

o Có 3 chế độ hoạt động: Client, Access Point, Both Client and Access Point

o Hỗ trợ các chuẩn bảo mật như: OPEN, WEP, WPA_PSK, WPA2_PSK, WPA_WPA2_PSK

o Hỗ trợ cả 2 giao thức TCP và UDP

o Ở chế độ làm việc như máy chủ có thể kết nối cùng lúc với 5 máy con

Trang 39

Hình 3.9 Sơ đồ chân module WIFI ESP8266 v7 Chức năng chân:

REST: chân reset, kéo xuống mass để reset

ADC: chân đọc dữ liệu analog

CH_PD: Kích hoạt chip, sử dụng cho Flash Boot và update module

GPIO4, GPIO5, GPIO0, GPIO2, GPIO15, GPIO16, GPIO14, GPIO12, GPIO13 là các chân I/O

VCC: Nguồn cấp 3.3V (dòng trên 300mA)

TXD: Chân TX của giao thức UART

RXD: Chân RX của giao thức UART

GND: chân mass

b Flash firmware module WiFi ESP8266 v7

Để giao tiếp được với module WiFi một cách linh hoạt và ổn định, ta cần update firmware của module lên bản mới nhất, hỗ trợ tập lệnh AT và có thể thay đổi tốc độ baud một cách dễ dàng Ở đây, nhóm thực hiện đồ án sử dụng firmware ESP8266_AT_V00180902_04 (0018000902-AI03) có thể tìm thấy trên trang web:

http://www.rei-labs.net/esp8266-update-firmware-to-change-the-baudrate/

Ngoài ra, ta cần sử dụng module chuyển đổi USB - UART USBtoCOM như CH340 để tiến hành update firmware cho module WiFi Sử dụng công cụ Esp8266 flasher trực quan và đơn giản nhất tại:

http://www.instructables.com/id/Intro-Esp-8266-firmware-update/

Trang 40

Một bộ công cụ đầy đủ bao gồm một folder chứa các file như sau:

Hình 3.10 Flasher và firmware cần chuẩn bị

Sau khi tải công cụ flasher và firmware thích hợp, ta tiến hành kết nối để chuyển module sang chế độ flash firmware Với module ESP8266 v7, ta kết nối như sau:

Hình 3.11 Sơ đồ kết nối USBtoCOM với ESP8266 để flash firmware

Sau khi kết nối USBtoCOM và ESP8266, ta tiến hành chạy công cụ flasher

Ta nhấn chọn Bin và cấp đường dẫn của file bin đã chuẩn bị

Kiểm tra port kết nối của USBtoCOM với máy tính và chỉnh sửa thứ tự cổng COM cho phù hợp

Giao diện của flasher như sau:

Ngày đăng: 28/11/2021, 10:32

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w