Google Maps API là ứng dụng của Google dùng để vẽ bản đồ. Ứng dụng này được Google cung cấp hàm API miễn phí, đầy đủ, giúp người dùng tạo ra bản đồ một cách dễ dàng. Google Map API còn cho phép chúng ta truy cập vào các thông tin chi tiết về địa điểm trên một phạm vi rộng.
Google Maps API là một bộ sưu tập API cho phép bạn chọn dữ liệu của riêng bạn trên một bản đồ Google tùy chỉnh. Ứng dụng trên web và di động trực tuyến trên bản đồ của Google, bao gồm hình ảnh vệ tinh, chế độ xem phố, cấu hình độ cao, chỉ đường lái xe...
Các ứng dụng xây dựng trên maps được nhúng vào trang web cá nhân với thẻ javascipt do vậy việc sử dụng API google rất dễ dàng. Trong đó, việc hổ trợ cho các máy để bàn và các thiết bị di động để giám sát vị trí của một hay nhiều đối tượng thông qua biểu đồ dễ dàng.
GIỚI THIỆU KHÁI QUÁT GIAO THỨC HTTP/HTTPS 2.6.1 Giao thức HTTP
HTTP là chữ viết tắt của HyperText Tranfer Protocol (giao thức truyền tải siêu văn bản). Đây là giao thức ứng dụng trong bộ giao thức TCP/IP (gồm một nhóm các giao thức nền tảng cho internet).
HTTP hoạt động dựa trên mô hình Client – Server. Trong mô hình này, các máy tính của người dùng sẽ đóng vai trò làm máy khách (Client). Sau một thao tác nào đó của người dùng, các máy khách sẽ gửi yêu cầu đến máy chủ (Server) và chờ đợi câu trả lời từ những máy chủ này. Để có thể giao tiếp được với nhau, các máy chủ và máy khách phải thực hiện việc trao đổi thông qua các giao thức. Một trong những giao thức được sử dụng thường xuyên nhất chính là HTTP. Giao thức HTTP gồm một số phương thức như: GET, POST, PUT, DELETE, HEAD, TRACE, OPTION. Trong đề tài có sử dụng phương thức GET để đưa dữ liệu Arduino lên web server.
18 Phiên bản hiện tại của giao thức HTTP/1.1, có thêm một vài tính năng bổ sung cho giao thức HTTP/1.0 phiên bản trước, giúp truyền tải dữ liệu nhanh hơn.
Phương thức GET là phương thức trong giao thức HTTP/1.0, phương thức này được dùng phổ biến rộng rãi, ngoài phương thức GET còn có phương thức POST. Trong đó phương thức GET chạy nhanh hơn, phù hợp với việc lấy dữ trong đề tài, nên trong đề tài chọn phương thức GET để lấy dữ liệu đưa lên server. Dưới đây là sơ lược về hai phương thức GET và POST:
Phương thức GET lấy một nguồn tài nguyên hiện có. Trong đó URL chứa
tất cả thông tin cần thiết các máy chủ cần phải xác định vị trí và trả lại tài nguyên. Trong đó phương thức GET gửi yêu cầu đến server lấy dữ liệu hoặc cung cấp dữ liệu cho server thông qua URL.
Phương thức POST ngược lại với phương thức GET, tạo ra một nguồn tài
nguyên mới. POST yêu cầu xác định các dữ liệu về tài nguyên mới. POST sẽ gửi dữ liệu qua một cái form HTML và các giá trị được định nghĩa trong các input gồm (textbox, radio, pssword).
2.6.2 Giao thức HTTPS
Khi truy cập vào tên miền của trang web, giao thức mà nó sử dụng sẽ là HTTPS thay vì HTTP như ở những trang web thông thường. Điều này là bởi, phiên bản nâng cấp HTTPS của HTTP được sử dụng nhằm tăng cường khả năng bảo mật thông tin sau mỗi lần truy cập.
HTTPS là tên viết tắt của “Hypertext Transfer Protocol Secure”. Đây là sự kết hợp giữa giao thức HTTP và giao thức bảo mật SSL hay TLS. HTTPS giúp cho việc trao đổi thông tin một cách bảo mật trên nền Internet.
Khác với HTTP, HTTPS sẽ hỗ trợ việc xác thực tính chính danh của Website mà người dùng truy nhập thông qua việc kiểm tra xác thực bảo mật (security certificate).
Các xác thực bảo mật này được cung cấp và xác minh bởi các CA (Certidicate Authority) có uy tín. Với xác thực từ CA, người sử dụng có thể biết truy nhập đúng vào Website, không phải một Website giả danh bất kỳ nào khác.
19
GIỚI THIỆU CÁC LINH KIỆN SỬ DỤNG TRONG ĐỀ TÀI 2.7.1 Board Arduino mega 2560 R3
Arduino Mega 2560 R3 là một vi điều khiển dựa trên nền ATmega2560 tốc độ cao của Atmel, bộ nhớ chương trình 256KB trong đó có 8KB được sử dụng bởi bootloader. Với bộ nhớ chương trình lớn, bạn có thể viết nhiều chương trình phức tạp, điều khiển được nhiều thiết bị phức tạp hơn.
Tương thích với hầu hết các Shield dành cho Arduino Uno các Shield mở rộng tương thích với Arduino Uno có thể gắn lên Arduino Mega với thứ tự các chân không thay đổi. Việc cài đặt driver và sử dụng hoàn toàn tương tự như board Arduino Uno.
Chính nhờ vào bộ nhớ chương trình lớn, số cổng I/O nhiều và giá thành không quá cao nên board Arduino Mega 2560 rất được nhiều người chú ý khi biết nhiều về Matlab. Với việc sử dụng Matlab, bạn viết chương trình trên Matlab, các cổng nhập xuất trên Arduino giao tiếp với máy tính thông qua giao thức Serial.
Dưới đây là thông số kỹ thuật của Arduino mega 2560 R3:
Vi điều khiển: ATmega2560
Điện áp hoặt động: 5V
Điện áp ngõ vào DC: 7-12V
Số chân Digital: 54 (15 chân PWM)
Số chân Analog: 16
Bộ nhớ Flash: 256KB, 8KB sử dụng cho Bootloader
SRAM: 8KB
EEPROM: 4KB
Xung clock: 16MHz
20
2.7.2 Board Arduino Ethernet Shield
IC vi điều khiển W5100 có thể thực hiện truyền dữ liệu thông qua 2 giao thức TCP và UDP. Số đường truyền dữ liệu song song tối đa là 4. Đây là điểm mạnh của W5100 so với Microchip ENC28J60. Khả năng truyền song song cùng lúc 4 dữ liệu giúp board có khả năng nhận dữ liệu từ internet với tỉ lệ lỗi thấp hơn (nguyên nhân thường là do mất dữ liệu trên đường truyền hoặc do thời gian vượt quá giới hạn).
Giao tiếp với khe cắm microSD thông qua các chân SPI và chân select chân số 4. Dưới đây là thông số kỹ thuật của Ethernet shield:
Để sử dụng phải có board mạch Arduino đi kèm
Hoạt động tại điện áp 5V (được cấp từ mach Arduino)
Chip Ethernet: W5100 với buffer nội 16K
Tốc độ kết nối: 10/100Mb
Kết nối với mạch Arduino qua cổng SPI
Thu viện và code mẩu có sẵn trong chương trình Arduino
2.7.3 Giới thiệu khái quát module NRF24L01
Module sử dụng chip truyền sóng NRF24L01+ mới nhất của hãng Nordic với nhiều cải tiến so với chip NRF24L01 cũ về tốc độ truyền, khoảng cách, độ nhạy cao. Module nRF24L01 là chip thu phát trên dải tần 2.4GHz, chip được nhúng giao thức baseband (Enhanced ShockBurstTM), được thiết kế cho các ứng dụng điện năng thấp. Các nRF24L01 được thiết kế để hoạt động trong băng tần ISM rộng 2.4 – 2.4835 GHz. Một MCU và rất ít các thành phần bên ngoài cần thiết để thiết kế hệ thống truyền sóng radio với nRF24L01.
21 Module nRF24L01 được cấu hình và điểu khiển thông qua chuẩn giao tiếp SPI, các thanh ghi cấu hình trong nRF24L01 có thể truy cập vào tất cả các hoạt động của chip.
Giao thức Baseband (Enhanced ShockBurst)
Giao thức được dựa trên truyền gói dữ liệu và hỗ trợ các chế độ khác nhau hoạt động trong giao thức baseband. FIFOs đảm bảo một luồng dữ liệu thông suốt giữa các
sóng radio kết thúc và hệ thống MCU. Enhanced Shock-BustTM làm giảm chi phí hệ
thống bằng cách xử lý tất cả các hoạt động của lớp liên kết tốc độ cao.
Đặt điểm của module nRF24L01
Module nRF24L01 hoạt động ở tần số sóng ngắn 2.4GHz nên module này có khả năng truyền dữ liệu tốc độ cao và truyền nhận dữ liệu trong môi trường có vật cản. Module nRF24L01 có 126 kênh truyền, điều này giúp ta có thể truyền nhận ở nhiều kênh khác nhau, module có khả năng thay đổi công suất phát bằng chương trình, điều này giúp nó có thể hoạt động trong độ tiết kiệm năng lượng.
Radio
Hoạt động ở giải tần 2.4GHz và có 126 kênh
Truyền tốc độ cao 250Kbps, 1Mbps hoặc 2Mbps
Công suất phát
Có thể cài đặt được 4 công suất nguồn phát: 0, -6, -12, -18dBm.
Công suất thu
Có bộ lọc nhiễu tại đầu thu
12.3mA ở 2Mbps
-82dBm độ nhạy ở 2Mbps, -85dBm độ nhạy ở 1Mbps
Kênh đại bị ảnh hưởng bởi nhiễu thấp(LNA)
Enhanced ShockBurstTM
Các gói tin được xử lý tự động
6 dữ liệu MutiCeiverTM cho một mạng hình sao
Nguồn cấp
Hoạt động từ 1.9-3.6V
Các chân I/O chạy được cả 3.3 lẫn 5V
Giao tiếp
Chân SPI, tốc độ tối đa 8Mbps
22
Chân Tên Chức năng từng chân Mô tả
1 GND Nguồn Mass (0V)
2 VCC Nguồn Nguồn (1.9V-3.6V DC)
3 CE Tín hiệu số ngõ vào Kích hoạt chế độ RX hoặc TX
4 CSN Tín hiệu số ngõ vào Chân chọn SPI
5 SCK Tín hiệu số ngõ vào Clock SPI
6 MOSI Tín hiệu số ngõ vào SPI Slave ở ngã vào
7 MISO Tính hiệu số ngõ ra SPI Slave ở ngã ra
8 IRQ Tín hiệu số ngõ vào Chân kích hoạt ngắt mức thấp
Trong đó, khung truyền của nRF24L01 từ 3-5 bytes dùng làm địa chỉ.
Bảng 2.1 Sơ đồ chức năng mỗi chân module nRF24L01
Hình 2.17 Module nRF24L01 và sơ đồ chân nRF24L01
23
2.7.4 Cảm biến độ rung động ADXL001
Cảm biến ADXL001 là một bước tiến lớn so với thế hệ trước. Gia tốc cung cấp hiệu suất cao và băng thông rộng, ứng dụng trong công nghiệp, y tế, và quân sự. ADXL001 là bộ cảm biến độ rung động tích hợp chính xác cao mà điện áp đầu ra của nó với tính chống nhiểu, độ nhạy của cảm biến rất cao. Sử dụng các thiết bị Analog,
độc quyền thế hệ thứ năm iMEMsR, ADXL001 cung cấp phạm vi hoạt động từ ±70g,
±250g và ±500g với băng thông là 22kHz.
Nguồn cung cấp điện áp hoạt động cho cảm biến 3.3V đến 5V.
Chân Tên Chức năng
1, 2, 5 DNC Không kết nối
3 COM Nối mass
4 ST Kiểm tra điều khiển (ngõ vào)
6 Xout Trục X ngõ ra gia tốc
7,8 Vdd, Vdd2 Nguồn 3.3 đến 6V
Tương ứng với nguồn điện thế 3.3V hay 5V mà cho ra mức điện thế ngõ ra khác nhau. Ở Vs=3.3V, zero-g là 1.65V, mức độ nhạy là 2.2mV/g. Ở Vs=5V, zero-g là 2.5V, mức độ nhạy là 3.3mV/g.
Bảng 2.2 Sơ đồ chân ADXL001
24
2.7.5 Cảm biến nhiệt độ và độ ẩm
Cảm biến độ ẩm và nhiệt độ DHT11 là cảm biến rất thông dụng hiện nay vì chi phí rẻ và rất dễ lấy dữ liệu thông qua giao tiếp 1 wire (giao tiếp digital 1 dây truyền dữ liệu duy nhất). Bộ tiền xử lý tín hiệu tích hợp trong cảm biến giúp bạn có được dữ liệu chính xác mà không phải qua bất kỳ tính toán nào. Cảm biến nhiệt độ và độ ẩm được tích hợp trong 1 mạch duy nhất. Sử dụng cảm biến DHT11 có sẵn thư viện giành cho Arduino.
Thông số kỹ thuật của DHT11:
Nguồn: 3-5 VDC.
Dòng sử dụng: 2.5mA max (khi truyền dữ liệu)
Đo tốt ở độ ẩm 20-80%RH với sai số ±5%
Đo tốt ở nhiệt độ 0 to 50°C với sai số ±2°C
Tần số lấy mẫu tối đa 1Hz (1 giây 1 lần)
25
CHƯƠNG 3: NỘI DUNG VÀ KẾT QUẢ NGHIÊN CỨU
Chương này trình bày các vấn đề:
Tổng quan hệ thống
Kiến trúc của hệ thống
Thiết kế phần cứng
Thiết kế phần mềm
Kết quả nghiên cứu
TỔNG QUAN HỆ THỐNG
Mô hình tổng quan của hệ thống được mô tả như hình bên dưới:
Hệ thống bao gồm 2 phần chính:
Phần cứng bao gồm 2 nút cảm biến và 1 nút quản lý, sử dụng module
nRF24L01, board Arduino, một số cảm biến và bộ nguồn năng lượng mặt trời cấp nguồn cho nút cảm biến.
Các dịch vụ và ứng dụng web trên nền tảng điện toán đám mây của Google
Drive.
Hình 3.1 Mô hình tổng quan của hệ thống
Google Spreadsheet Google Maps Google charts Ethernet shield Modem
Nguồn năng lượng mặt trời Nút
quản lý User
26
KIẾN TRÚC HỆ THỐNG
Trong mô hình mạng cảm biến không dây (WSN) sử dụng hai nút cảm biến, ở hai điểm khác nhau của cây cầu, hai nút cảm biến này đều được xử lý dữ liệu và đưa dữ liệu đó về nút quản lý trung tâm. Nút quản lý trung tâm này có nhiệm vụ thu và xử lý dữ liệu rồi gửi lên Websever. Người dùng có thể xem số liệu đó bằng bất kì thiết bị nào điện tử nào (laptop, máy tính bảng, smartphone…) nếu nó được kết nối với mạng Internet. Dưới đây là mô hình kiến trúc của hệ thống:
THIẾT KẾ PHẦN CỨNG
Phần mạng cảm biến không dây trong hệ thống bao gồm 2 nút cảm biến và 1 nút quản lý trung tâm. Sử dụng board Arduino làm bộ xử lý tại các nút cảm biến và nút quản lý, module nRF24L01 được dung để truyền nhận dữ liệu.
Tại mỗi nút cảm biến, nhóm gắn vào các cảm biến đo độ rung động để phục vụ cho việc thu thập dữ liệu về độ rung lắc có thể ảnh hưởng đến sức khỏe công trình cầu.
3.3.1 Khối nút cảm biến
Mỗi nút cảm biến bao gồm một vi điều khiển (Arduino Mega), một module truyền nhận (nRF24l01), cảm biến (độ rung, nhiệt độ…) như trong hình bên dưới:
Cảm biến Arduino Mega ADC
Module nRF24L01
SPI
Hình 3.3 Mô hình của nút cảm biến
Nút cảm biến ở vị trí 1 Nút quản lý trung tâm nRF24L01 GET/POST Webserver nRF24L01 Nút cảm biến ở vị trí 2 Hình 3.2 Kiến trúc của hệ thống
27 Nút cảm biến sẽ chờ nhận yêu cầu lấy dữ liệu từ nút quản lý trung tâm, khi có yêu cầu nút cảm biến sẽ đọc giá trị từ các cảm biến và xử lý số liệu nhận rồi truyền dữ liệu đó về cho nút quản lý trung tâm.
Ngoài ra, vì tính thực tế là trên công trình cầu rất khó có thể lắp đặt nguồn điện để làm nguồn cung cấp cho nút cảm biến hoạt động. Vì thế, nhóm đã thiết kế bộ nguồn dựa vào năng lượng mặt trời để làm nguồn cung cấp cho nút cảm biến.
Hình 3.5 Mô hình sử dụng năng lượng mặt trời Hình 3.4 Nút cảm biến thực tế Cảm biến rung ADXL001 Cảm biến DHT11 ADC SPI 1-wire
Board Arduino Mega
28
3.3.2 Khối nút quản lý trung tâm
Vì hệ thống này cần làm rất nhiều công việc nên nhóm chọn lựa phần cứng có bộ nhớ lớn, xử lý nhanh là board Arduino mega 2560 làm bộ xử lý trung tâm, sử dụng module nRF24L01 để truyền nhận dữ liệu và board Arduino Ethernet Shield dùng để gửi dữ liệu lên webserver của Google.
Khi hệ thống bắt đầu hoạt động nút quản lý trung tâm gửi tín hiệu yêu cầu dữ liệu đến nút cảm biến. Khi nhận được dữ liệu từ nút cảm biến, nút quản lý trung tâm xử lý dữ liệu rồi thông qua board Ethernet Shield gửi dữ liệu lên bảng tính trên nền tảng điện toán đám mây của Google Drive.
Mọi công việc của nút quản lý trung tâm khá quan trọng, nếu có một lỗi sự cố nào đó xãy ra, hệ thống sẽ ngưng hoạt động.
THIẾT KẾ PHẦN MỀM 3.4.1 Đặt vấn đề
Google phát triển một giao thức mới đó là HTTPS, giao thức này giúp cho các ứng dụng và dịch vụ web với thông tin bảo mật cao khi sử dụng trên internet. Vì vậy, để chuyển giao thức HTTP lên server của HTTPS là không thể thực hiện được. Điều đó cần một dịch vụ trung gian để chuyển các giao thức đó. Hiện nay có một số dịch vụ làm
Hình 3.6 Sơ đồ khối nút quản lý trung tâm
Moudle nRF24L01 Board Arduino mega 2560 Board Arduino Ethernet Shield SPI SPI
Hình 3.7 Sơ đồ khối nút xử lý trung tâm thực tế
SPI SPI
Ethernet Shield Arduino mega 2560
Module nRF24L01
29 công việc trên như: Tembo, Pushingbox. Các dịch vụ này cũng có một số hạn chế về số lượng gửi dữ liệu, tốc độ gửi, hạn chế về thời gian và các dịch này có tính phí.
Để khắc phục những khó khăn, hạn chế trên. Nhóm nghiên cứu và thiết kế một