Giới thiệu về Xamarin

Một phần của tài liệu Hệ thống nhà thông minh ứng dụng công nghệ zigbee (Trang 44)

Xamarin được xây dựng vào tháng 5 năm 2011 bởi các kỹ sư đã tạo ra Mono, Mono cho Android và MonoTouch, mục đích là triển khai chạy ứng dụng trên nhiều nền tảng của Common Language Infrastructure (CLI) và Common Language Specifications (Thường được gọi là Microsoft .NET). Dựa trên ngôn ngữ C#, các nhà phát triển có thể sử dụng các công cụ Xamarin để viết các ứng dụng Android, iOS trên cùng một code project (Cross- platform) [31].

Hình 2.16. Giới thiệu về xamarin [31]. 2.4.5 Khái niệm về Sever firebase

Firebase là dịch vụ cơ sở dữ liệu hoạt động trên nền tảng đám mây – cloud. Kèm theo đó là hệ thống máy chủ cực kỳ mạnh mẽ của Google. Chức năng chính là giúp người dùng lập trình ứng dụng bằng cách đơn giản hóa các thao tác với cơ sở dữ liệu. Đặc biệt là dịch vụ bảo mật cực tốt và hỗ trợ các API đơn giản [32].

Firebase có hỗ trợ liên kết đăng nhập (Google, Facebook, twiter, ...) thuận tiện cho người sử dụng cũng như người phát triển ứng dụng. Phần lớn Firebase thường sử dụng làm nên tảng đăng nhập cho các ứng dụng nhỏ lẻ nhằm tăng lợi nhuận cho nhà phát triển.

Hình 2.17. Giới thiệu về Firebase [32].

Điểm nổi bật của firebase: Firebase hỗ trợ tín năng readtime Database giúp đồng bộ hóa dữ liệu người dùng kể cả khi không có kết nối mạng tạo nên trải nghiệm xuyên suốt bất chấp tình trạng internet và đây là tính năng được sử dụng chính trong đề tài điều khiển thiết bị ứng dụng công nghệ ZigBee. Ngoài ra còn có chức năng Authentication cung cấp nhiều xác thực với bảo mật cao và đơn giản hóa cho người dùng.

2.3.6 Phần mềm sử dung và các gói hỗ trợ

Đề tài sẽ sử dụng tạo ứng dụng windows và ứng dụng trên nền tảng cross platform được viết trên visual studio. Visual studio là ứng dụng được phát hành bởi Microsoft nhằm mục đích hỗ trợ cho developer phát triển các phần mềm, ứng dụng cho người dùng. Visual studio hỗ trợ đa nền tảng, đa ngôn ngữ và là ứng dụng mà hầu như lập trình viên cũng biết đến.

.Net Framework là một nền tảng lập trình và cũng là một nền tảng thực thi ứng dụng chủ yếu trên hệ điều hành Microsoft Windows được phát triển bởi Microsoft. Các chương trình được viết trên nền.NET Framework sẽ được triển khai trong môi trường phần mềm được biết đến với tên Common Language Runtime (CLR).

Nuget: nuget được hiểu như là một thư viện hỗ trợ sẵn nhằm chức năng giảm thiểu code trong project, các nuget cùng API có thể do nhà sản xuất tạo nên cũng có thể do người dùng tạo nên để tận dụng lại sau mỗi project nhằm giảm thiểu code và tăng hiệu quả quản lý code trong project.

Chương 3: Thiết kế và thi công 3.1 Tổng quan về hệ thống

3.1.1 Sơ dồ hệ thống

Thiết kế hệ thống nhà thông minh với các chức năng cơ bản là giám sát nhiệt độ, độ ẩm, khí gas nếu vượt ngưỡng giá trị đặt ra sẽ phát tín hiệu cảnh báo qua còi và app điện thoại. Bên cạnh đó hệ thống còn thực hiện nhiệm vụ điều khiển các thiết bị điện bằng nút nhấn trên mạch và nút nhấn điều khiển trên app điện thoại.

Sơ đồ hệ thống:

Hình 3.1: Sơ đồ tổng quát hệ thống. 3.1.2. Chức năng của các khối

- Node cảm biến có chức năng thu thập giá trị nhiệt độ, độ ẩm, khí gas nếu có giá trị vượt quá giới hạn đặt ra sẽ phát đi tín hiệu cảnh báo nguy hiểm. Đồng thời các giá trị đo đạt được sẽ gửi về Getway thông qua sóng ZigBee và được gửi lên server thông qua mạng internet

- Node điểu khiển tải nhận các lệnh điểu khiển tải từ server gửi về Getway và được gửi đến Node điều khiển tải để thực hiện điều khiển bật tắt thiết bị điện.

Node cảm biến Getway Node điều khiển tải

Google Firebase

iApp điện thoại, máy

Bên cạnh bật tắt bằng phần mềm thì chúng ta còn có thể điều khiển bật tắt bằng nút nhấn trên mạch

- Getway đóng vai trò quan trọng trong việc thu thập và xử lý dữ liệu. Thực hiện việc nhận dữ liệu từ các node để gửi lên sever đồng thời cũng nhận lại các tín hiệu điều khiển trên sever để gửi đến các Node

- Tất cả dữ liệu được lưu trữ ở Google Firebase đồng thời nó là môi trường trung gian để giao tiếp giữa thiết bị điện tử với thiết bị phần cứng

- Người dùng thực hiện việc giám sát và điều khiển thông qua app được cài trên điện thoại và máy tính.

3.2 Tính toán, thiết kế hệ thống

3.2.1. Tính toán, thiết kế node cảm biến

Node cảm biến có nhiệm vụ thu thập giá trị nhiệt độ, độ ẩm và khí gas để gửi về getway. Đồng thời phát cảnh báo khi giá trị khí gas vượt quá ngưỡng quy định

Từ nhiệm vụ trên ta chọn các linh kiện: - Vi điều khiển trung tâm: Arduino Nano - Mạch thu phát RF ZigBee CC2530 - Cảm biến nhiệt độ, độ ẩm: DHT22 - Cảm biến khí gas MQ2

- Màn hình LCD 16x2 - Còi báo 5V…

Tính chọn nguồn cho thiết bị:

Ta có bảng giá trị tiêu thụ điện của các linh kiện

Tên linh kiện Dòng tiêu thụ

Arduino Nano 40 mA

DHT22 2.5 mA

ZigBee CC2530 30 mA

Màn hình LCD 16 mA

Bảng 3.1. Giá trị tiêu thụ điên của linh kiện node cảm biến Từ bảng trên ta lựa chọn cấp nguồn cho mạch bằng adapter 5v – 1A

Lưu đồ thuật toán:

Hình 3.2. Lưu đồ thuật toán Node cảm biến.

Khi cấp nguồn thiết bị sẽ khởi tạo các giá trị cần thiết để cảm biến, Lcd và ZigBee hoạt động. Thiết bị tiến hành đọc các giá trị của cảm biến sau đó hiện thị ra Lcd để người dùng có thể giám sát các thông số đo đạt. Nếu phát hiện giá trị khí gas vượt quá mức giá trị mà ta set, thiết bị sẽ phát ra giá trị cảnh báo bằng còi để người dùng có thể kịp thời khắc phục sự cố. Đồng thời thiết bị cũng gửi giá trị đến Getway liên tục 4 giây một lần khi có thay đổi để người dùng giám sát từ xa.

Sơ đồ nguyên lý:

Hình 3.3 Sơ đồ nguyên lý Node cảm biến. Mạch Pcb:

Hình ảnh thực tế:

Hình 3.5 Hình ảnh thực tế node cảm biến 3.2.2. Tính toán, thiết kế node điều khiển tải

Node cảm biến tiếp nhận tín hiệu điều khiển từ getway gửi về đề điều khiển thiết bị và sẽ trả về getway trạng thái của thiết bị nếu có tác động bật tắt từ nút nhấn cơ. Ta chọn các linh kiện cho mạch:

- Vi điều khiển trung tâm: Arduino Nano. - Mạch thu phát RF ZigBee CC2530.

- Relay 5V.

- Opto quang Pc817. - Điện trở, led….

Tính toán nguồn cấp cho mạch:

Ta có bảng giá trị dòng tiêu thụ của các linh kiện

Tên linh kiện Dòng tiêu thụ

Arduino Nano 40 mA

ZigBee CC2530 30 mA

Led 20 mA

Relay 5 mA

Bảng 3.2. Dòng tiêu thụ của node nút nhấn.

Dựa vào bảng giá trị trên ta chọn nguồn cấp cho mạch là: mạch nguồn 5v - 0,5A Mạch PCB:

Hình ảnh thực tế:

Hình 3.6. Hình ảnh thực tế node điều khiển tải. Sơ đồ nguyên lý:

Hình 3.6. Sơ đồ nguyên lý Node nút nhấn. Lưu đồ thuật toán:

Hình 3.7. Lưu đồ thuật toán Node điều khiển tải.

Khi cấp nguồn mạch sẽ khởi tạo các giá trị để có thể giao tiếp giữa các module ZigBee với nhau. Khi bộ đệm Serial nhận được giá trị có chứa ký tự A ở sau cùng thì gói tin này là được gửi cho Node điều khiển tải. Khi đó Arduino sẽ tiến hành phân tích gói tin nhận được để lấy các dữ liệu điều khiển thiết bị gửi về. Nếu bộ đệm có gói tin nhưng không phải của nó thì Node sẽ bỏ qua gói tin đó và tiếp tục chờ để nhận gói tin điều khiển. Song song với việc đợi nhận gói tin điều khiển thì Node còn liên tục đọc giá trị của nút nhấn bằng ngắt timer1. Nếu có sự kiện nhấn nút thì Node sẽ tiến hành đọc giá trị của nút nhấn và tương ứng với nút nhấn để điều khiển tải cần thiết. Sau đó Node

sẽ gửi giá trị thay đổi của nút nhấn về Getway để đồng bộ trạng thái bật tắt của thiết bị trên app điện thoại và máy tính.

3.2.3. Tính toán, thiết kế getway

Getway là trung tâm gửi và nhận tín hiệu giữa các node song song với đó là truyền nhận dữ liệu với google firebase để điều khiển thiết bị. nên ta chọn các linh kiện: - Vi điều khiển: Esp 8266 Node mcu

- ZigBee CC2530

Mạch tiêu thụ dòng nhỏ nên có thể cấp nguồn trực tiếp qua cổng USB của Esp 8266 node mcu

Sơ đồ nguyên lý:

Hình 3.8. Sơ đồ nguyên lý Getway. Lưu đồ thuật toán:

Hình 3.9. Lưu đồ thuật toán Getway.

Khi cấp nguồn Getway sẽ khỏi tạo các thông số cần thiết để giao tiếp với Module ZigBee. Sau đó sẽ cập nhật các giá trị thay đổi trên Google Firebase để gửi đến Node điều khiển tải bật tắt thiết bị. Sau đó Getway sẽ chờ để nhận các gói tin từ các node, nếu gói tin nhận được có ký tự cuối là dấu “#” Getway sẽ hiều đây là gói tin của Node

cảm biến gửi về sau đó tiến hành phân tích chuỗi để nhận được các giá trị nhiệt độ, độ ẩm, khí gas gửi về Google Firebase để hiển thị giá trị thay đổi trên app. Ngược lại nếu gói tin không có ký tự "#"”ở cuối thì nó sẽ hiều là gói tin từ node điều khiển tải gửi về và tiến hành phân tích chuỗi để cập nhận giá trị lên Google firebase đề đồng bộ giá trị nút nhấn trên app.

Mạch PCB:

Hình 3.10. Mạch Pcb Getway. Hình ảnh thực tế:

3.3. Xây dựng thuật toán và code ứng dụng. 3.3.1. Phần mềm quản lý và cài đặt người dùng. 3.3.1. Phần mềm quản lý và cài đặt người dùng.

Phần mềm quản lý gồm các chức năng dành cho người quản lý hệ thống người dùng. Vì vậy phần mềm này sẽ có các chức năng chính là: Tạo tài khoản mới cho người dùng, đăng nhập vào tài khoản người dùng, trình điều khiển đề kiểm tra kết nối khi lắp đặt thiết bị, trình quản lý tài khoản người dùng nhằm hỗ trợ khách hàng khi quên mật khẩu, xử lý tình huống cấp bách khi khách hàng yêu cầu.

3.3.2. thuật toán và giao diện cho form Login.

Form Login là form cơ bản của hầu hết các ứng dụng yêu cầu tài khoản User hiện nay nhằm để quản lý người dùng nhằm bảo mật thông tin dành cho người dùng và tạo sự an toàn về thông tin cho người sử dụng. Các tài khoản đăng nhập vào form login phải được đăng kí trước, có thể đăng kí trong form đăng kí của phần mềm hoặc có thể đăng kí trực tiếp trên sever firebase.

Hình 4.1 Form Login ứng dụng.

Form login bao gồm các chức năng chính là đăng nhập vào tài khoản đã có, đăng kí tài khoản mới và load tất cả tài khoản hiện có từ sever.

Phần nhập tên đăng nhập và mật khẩu là các textbox cho phép người dùng nhập dữ liệu từ bàn phím vào. Với các thuộc tính cơ bản của textbox như font size, font style, Opacity, … Và chức năng đơn giản khi người dùng click vào để nhập thì dữ liệu sẽ xóa dữ liệu hiện có.

Nếu nhấn đăng ký thì form đăng kí tài khoản sẽ mở ra để người dùng thực hiện đăng ký. Nếu nhấn Load dữ liệu người dùng thì sẽ mở ra form để load tài khoản người dùng hiện đã đăng ký từ sever.

Nếu nhấn đăng nhập thì một chuỗi thuật toán sẽ được thực hiện. Đầu tiên nó sẽ kiểm tra dữ liệu đã nhập vào các textbox hay chưa. Nếu một trong hai textbox nhập tài khoản hoặc mật khẩu trống thì khi ấn đăng nhập sẽ có thông báo “không được để trống” Nếu cả 2 đều không trống thì dữ liệu sẽ load data từ sever xuống và kiểm tra. Nếu mật khẩu nhập vào khác với dữ liệu mật khẩu từ sever thì sẽ có thông báo “mật khẩu không chính xác”. Nếu cả mật khẩu và tài khoản đều trùng khớp với dữ liệu trên sever thì form login sẽ đóng lại và mở form control app lên và truyền vào đó tài khoản người dùng vừa được đăng nhập vào từ form Login. Nếu tất cả điều trên đều không thỏa hoặc người dùng tạo ra lỗi thì sẽ hiển thị “Người dùng không tồn tại”.

Lưu đồ thuật toán:

Hình 4.2 Thuật toán cho form login.

Quá trình login sẽ kiểm tra qua nhiều giai đoạn. Tuy nhiên ở đây vẫn chưa đầy đủ. Bởi vì hàm try – catch thực hiện luôn có những lỗi phát sinh do người dung xảy ra. Nhưng ở đây em đã thực hiện việc in ra message show là tài khoản không tồn tại cho

catch. Tuy chưa hợp lý nhưng nó giúp chống lỗi do người dùng tạo ra và giúp cho chương trình vẫn tiếp tục hoạt động.

3.3.3. thuật toán và giao diện của form Register.

Form Register gồm các Label với nội dung là UserName, Password và Confirm Password, bên cạnh đó là các TextBox để ghi vào tài khoản cần tạo mới. Và các nút nhấn Register để đăng ký và nút nhấn Exit để đóng form.

Chức năng Register chỉ cung cấp cho nhà sản xuất nhằm mục đích không bị người dùng tạo nhiều tài khoản và đánh sập sever bằng cách tạo mới tại khoản liên tục và đăng nhập liên tục bằng tool. Vì vậy hiện nay các dịch vụ thường do bên phía quản lý cung cấp nhằm mục đích tránh sự phá hoại từ bên ngoài và tăng tính bảo mật cho người dùng.

Hình 4.3 Form Register

Resgister có hai nút nhấn là exit để thoát chương trình và Regis để đăng ký. Khi nhấn Register thì điều đầu tiên thực hiện là kiểm tra xem các ô nhập vào có trống hay không. Nếu trống thì thông báo cho người dùng “Mục này không thể để trống”. Nếu

không trống thì sẽ tiếp tục kiểm tra liệu password nhập vào và confirm password có giống nhau hay không. Nếu không thì thông báo cho người dùng “Confirm to not true”. Nếu confirm đúng thì sẽ load data từ người dùng chưa đăng ký để kiểm tra xem

nó có tồn tại không. Nếu có thì thông báo cho người dùng “Tài khoản đã tồn tại” Nếu tất cả đều thỏa thì việc tạo một User mới với tên đăng nhập và mật khẩu vừa nhập

được thông qua. Đồng thời sẽ khởi tạo các giá trị nhiệt độ, độ ẩm, khí ga, thiết bị 1, …. Sau khi đăng ký thì có thể ấn vào Exit để thoát form và thực hiện đăng nhập để kiểm tra. Các giá trị của nhiệt độ, độ ẩm, khí ga và các thiết bị khác sẽ lưu giá trị mặc định là “0” lúc này phần mềm chưa connect với phần cứng.

3.3.4. thuật toán và giao diện của form load account.

Hình 4.5 Form load account.

Form load account chỉ gồm 1 nút nhấn và 1 data grid. Khi click vào load account thì sẽ có hàm foreach. Hàm này sẽ đếm được tất cả các phần từ trong sever và load tất cả chúng ra để show trong data grid view. Tuy nhiên đây là vấn đề ảnh hưởng tới sự bảo mật của người dùng và hiện tại sản phẩm đang nằm ở mức độ đề tài. Nếu thương mại thì việc show account user là việc quan trọng chỉ dành cho một số bộ phận quan trọng trong tiếp quản hệ thống mới được sử dụng nhằm mục đích bảo vệ quyền lợi người dùng. 3.3.5. thuật toán và giao diện form control

Form Control sẽ gồm 2 TabItem trong đó có:

TabItem giao diện hiển thị nhiệt độ, độ ẩm khí ga. Ba giá trị này sẽ được liên tục cập nhập từ sever của firebase và nó hoàn toàn thỏa mãn vấn đề read time.

TabItem giao diện điều khiển các thiết bị. Ở đây mặc định là 5 thiết bị và trạng thái của 5 thiết bị đó tượng trưng cho 5 bóng đèn. Màu vàng biểu thị trạng thái On và màu đỏ biểu thị cho trạng thái Off. Các nút nhấn On, Off sẽ trực tiếp gửi giá trị sau khi được

Một phần của tài liệu Hệ thống nhà thông minh ứng dụng công nghệ zigbee (Trang 44)

Tải bản đầy đủ (PDF)

(116 trang)