Tải bản đầy đủ (.docx) (41 trang)

BÁO cáo đồ án lập TRÌNH THIẾT bị iots môn học CÔNG NGHỆ INTERNET OF THING HIỆN đại

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.55 MB, 41 trang )

TRƯỜNG ĐẠI HỌC CƠNG NGHỆ THƠNG TIN
KHOA MẠNG MÁY TÍNH VÀ TRUYỀN THƠNG

BÁO CÁO ĐỒ ÁN
LẬP TRÌNH THIẾT BỊ IoTs
MƠN HỌC: CÔNG NGHỆ INTERNET OF THING HIỆN ĐẠI
MÃ LỚP: NT532.I21

GVHD: GS-TS LÊ TRUNG QN

Các thành viên trong nhóm:

1. Nguyễn Hồng Thanh – 14520842
2. Lê Minh Thuận – 14520913
3. Phạm Lê Minh Trí – 14520998
4. Nguyễn Thành Triều – 14521005
5. Nguyễn Văn Tùng – 14521058

Ngày 20 tháng 04 năm 2018

TIEU LUAN MOI download :


Mục lục
I. Giới thiệu Mơ Hình – Kịch bản:
II. Báo cáo tiến độ cơng việc.
III. Giới thiệu và lập trình trên ESP8266.
IV. Giới thiệu và lập trình trên Web Server.
1. CƠNG NGHỆ
a. Node.js là gì?
b. Framwork Express của nodejs


c. Mongodb
2. CÁC LUỒNG CHẠY
a. Login
b. Post data
c. Get data
3. Phân tích mã nguồn
a. Mơ hình MVC
b. Cấu trúc code
V. Giới thiệu và lập trình trên MSP430G2
VI. TÀI LIỆU SỬ DỤNG, TRÍCH DẪN


I.

Giới thiệu Mơ Hình – Kịch bản:

● Mơ hình bao gồm :
-

1 Lauchpab MSP430 .

-

1 Vi xử lý ESP8266 .

-

1 Web server.

-


1 Database lưu trữ thông tin được gửi đến Server.

-

1 SHT10 Cảm biến nhiệt độ, độ ẩm.

-

1 BH1750 Cảm biến ánh sang.

● Kịch Bản:
Quy trình 1 : SHT, BH -> MSP430-> ESP-> web server ->
database .
TRANG 1


TIEU LUAN MOI download :


2 Cảm biến SHT và BH sẽ đọc dữ liệu mơi trường và gửi cho
MSP sau đó MSP sẽ gửi cho ESP khi ESP yêu cầu ( chu kỳ 3s). Khi
nhận được thông tin EPS sẽ gửi yêu cầu cập nhật thông tin cho
Server . Server lưu thông tin xuống Database và thống kê thành bản
hiện thị.
-

Quy trình 2: client-> web server -> database .

Người dùng click nút view, web browser sẽ tự động gửi request

mỗi 3s 1 lần, server cập nhật thông tin weather cho client từ database.

II.

Báo cáo tiến độ công việc.

TRANG 2


TIEU LUAN MOI download :


III. Giới thiệu và lập trình trên ESP8266.

ESP8266 là dịng chip tích hợp Wi-Fi 2.4Ghz có thể lập trình được, giá rẻ được sản
xuất bởi một công ty bán dẫn Trung Quốc: Espressif Systems.
Hiện nay tất cả các dòng chip ESP8266 trên thị trường đều mang nhãn ESP8266EX,
là phiên bản nâng cấp của ESP8266
Được phát hành đầu tiên vào tháng 8 năm 2014, đóng gói đưa ra thị trường dạng Mô
dun ESP-01, được sản xuất bởi bên thứ 3: AI-Thinker. Có khả năng kết nối Internet
qua mạng Wi-Fi một cách nhanh chóng và sử dụng rất ít linh kiện đi kèm. Với giá cả
có thể nói là rất rẻ so với tính năng và khả năng ESP8266 có thể làm được.
ESP8266 có một cộng đồng các nhà phát triển trên thế giới rất lớn, cung cấp
nhiều Module lập trình mã nguồn mở giúp nhiều người có thể tiếp cận và xây
dựng ứng dụng rất nhanh.
Thông số phần cứng
TRANG 3

TIEU LUAN MOI download :



-

32-bit RISC CPU : Tensilica Xtensa LX106 chạy ở xung nhịp 80 MHz

-

Hổ trợ Flash ngoài từ 512KiB đến 4MiB

-

64KBytes RAM thực thi lệnh

-

96KBytes RAM dữ liệu

-

64KBytes boot ROM

-

Chuẩn wifi IEEE 802.11 b/g/n, Wi-Fi 2.4 GHz

- Tích hợp TR switch, balun, LNA, khuếch đại công suất và matching
network
-

Hỗ trợ WEP, WPA/WPA2, Open network


-

Tích hợp giao thức TCP/IP

-

Hổ trợ nhiều loại anten

-

16 chân GPIO

-

Hổ trợ SDIO 2.0, UART, SPI, I²C, PWM,I²S với DMA

-

1 ADC 10-bit

-

Dải nhiệt độ hoạt động rộng : -40C ~ 125C

Board mạch nhóm đang sử dụng là Wemos NodeMCU - ESP8266 CH340
Vì tính đơn giản và dễ sử dụng nên nhóm đã sử dụng Arduino SDK.
Q trình làm việc:
- Bước 1: ModeMCU – ESP8266 cố gắng kết nối đến Access Point đã được
chỉ định trước.

-

Bước 2: Gửi thông điệp “S” đến MSP430

-

Bước 3: Nhận thông điệp phản hồi từ MSP430

-

Bước 4: Khởi tạo một kết nối HTTP request đến máy chủ

-

Bước 5: Gửi thông điệp của bước 3 đến máy chủ.

-

Bước 6: Tạm nghỉ 3 giây và quay lại bước 2

Một số dịng mã lập trình trên ESP8266:
#include <Arduino.h>
#include <ESP8266WiFi.h>

TRANG 4


TIEU LUAN MOI download :



#include
#include
#include
#include

<ESP8266HTTPClient.h>
"SoftwareSerial.h"
<SerialCommand.h>
<string.h>

const char* SSID = "nhtcntt"; // Khai báo tên AP const
char* PASS = "123456789"; // Mật khẩu cho AP đó
String URL = "http://192.168.123.31:3000/update"; // URL của máy chủ
lưu trữ dữ liệu
SoftwareSerial sw(D1, D2, false, 128); //rx, tx khai báo các chân dùng cho
giao tiếp Serial
SerialCommand sCmd; // Giao tiếp serial với máy tính
void
void
void
AP
void
void
void

SendInfo2Server(uint8_t *buff, size_t size); // hàm gửi dữ liệu về máy chủ
RecvFromMSP430(); // Hàm nhận dữ liệu từ MSP430
STAConnectAP(char const* ssid, char const* pass); // hàm kết nối đến
changeURL(); // Hàm thay đổi URL khi có chỉ thị từ máy tính
changeWIFI(); // Hàm thay đổi kết nối wifi khi có chỉ thị từ máy tính

help();

void setup() {
Serial.begin(115200); // thiết lập tỉ lệ bit/s cho giao tiếp serial với máy
tính
sw.begin(9600); // thiết lập tỉ lệ bit/s cho giao tiếp serial với MSP430
Serial.println("debug"); // Hiển thị lên máy tính
Serial.print("Connectting to "); Serial.println(SSID);
sCmd.addCommand("URL", changeURL); // Thiết lập các hàm liên quan
đến các lệnh - tương tự như việc dùng command line
sCmd.addCommand("WIFI", changeWIFI);
sCmd.addCommand("help", help);
}

STAConnectAP(SSID, PASS);

void loop()
{
sCmd.readSerial(); // Đọc các thông điệp từ máy tính gửi đến
RecvFromMSP430();
delay(3000); // Tạm nghỉ 5s
}
/*
Message format:
message | message | ...
*/

TRANG 5

TIEU LUAN MOI download :



void RecvFromMSP430()
{
sw.write('S'); // Bắt đầu gửi kí tự S đến MSP430
uint8_t buff[100];
if(sw.available() > 0) // Xác nhận khi có thơng điệp từ MSP430 gửi về thì
thực thi
{
size_t len = sw.readBytesUntil('|', buff, sizeof(buff)); // Đọc đến khi
nào gặp kí tự | thì dừng lại
if(len > 0)
{
SendInfo2Server(buff, len); // Gửi thơng điệp vừa nhận lên
máy chủ
}
}
}
/*
URL: http://IPorName:80/update
method: POST
http header:
User-Agent: MAC Address
Content-Type: application/json
Content-Length: length(http body)
Connection: close
http body:
{
"NhietDo" : int,
"DoAm" : int,

"AnhSang" : int
}
*/
void SendInfo2Server(uint8_t *buff, size_t size)
{
HTTPClient http; // Khởi tạo đối tượng http
http.begin(URL); // kết nối URL đã chỉ định
http.addHeader("Content-Type", "application/json"); // Thiết lập nội dung
sẽ gửi là kiểu dữ liệu JSON
http.setUserAgent(WiFi.macAddress()); // Thiết lập user agent là địa chỉ
MAC của thiết bị
int statuscode = http.POST(buff, size); // Sử dụng phương thức POST gửi
nội dung lên máy chủ
if(statuscode > 0)
{
String payload = http.getString();
}
http.end();
}
void STAConnectAP(char const* ssid, char const* pass)
{

TRANG 6

TIEU LUAN MOI download :


WiFi.mode(WIFI_STA); // chuyển về chế độ station hay client để kết nối
đến AP
WiFi.begin(ssid, pass); // thiết lập tên wifi và mật khẩu

/
Nếu trạng thái là chưa kết nối thì cố gắng kết nối lại trong khoảng
thời gian 10s
unsigned long startTime = millis();
while( WiFi.status() != WL_CONNECTED && millis() - startTime < 10000
)
{
delay(2000);
Serial.println("Failed - Try connect");
}
if(WiFi.status() != WL_CONNECTED) return;

}

/ Xuất dữ liệu đến máy tính dùng để debug.
Serial.println("WiFi connected");
Serial.print("IP address: ");
Serial.println(WiFi.localIP());
Serial.print("MAC: ");
Serial.println(WiFi.macAddress());

void changeURL()
{
char *arg = sCmd.next();
if(arg)
{
URL = String(arg);
}
}
void changeWIFI()

{
char ssid[20], pass[20];
ssid[0] = '\0';
pass[0] = '\0';
char *arg = sCmd.next();
if(arg)
{
Serial.println(arg);
strncpy(ssid, arg, 20);
arg = sCmd.next();
if(arg)
{
Serial.println(arg);
strncpy(pass, arg, 20);
WiFi.disconnect();
STAConnectAP(ssid, pass);
}
else
{
WiFi.disconnect();

TRANG 7

TIEU LUAN MOI download :


STAConnectAP(ssid, NULL);

}
}


}

void help()
{
Serial.println("Use: ");
Serial.println("URL|<url> - example: URL|http://IP/path");
Serial.println("WIFI|SSID|[PASSWORD]");
}

IV.

Giới thiệu và lập trình trên Web Server.

1.

CƠNG NGHỆ
a.

Node.js là gì?

Node.js là một nền tảng chạy trên mơi trường V8 JavaScript runtime - một
trình thơng dịch JavaScript cực nhanh chạy trên trình duyệt Chrome

b.

Framwork Express của nodejs

Express là một framework nhỏ và tiện ích để xây dựng các ứng dụng web,
cung cấp một lượng lớn của tính năng mạnh mẽ để phát triển các ứng dụng

web và mobile. Nó rất dễ dàng để phát triển các ứng dụng nhanh dựa trên
Node.js cho các ứng dụng Web
TRANG 8

TIEU LUAN MOI download :


c.

Mongodb

MongoDB là gì?
- MongoDB là một hệ quản trị cơ sở dữ liệu mã nguồn mở thuộc học
NoSQL. Nó được thiết kế theo kiểu hướng đối tượng, các bảng trong
MongoDB được cấu trúc rất linh hoạt, cho phép các dữ liệu lưu trữ
trên bảng không cần tuân theo một cấu trúc nhất định nào cả (điều
này rất thích hợp để làm big data).
- MongoDB lưu trữ dữ liệu theo hướng tài liệu (document), các dữ
liệu được lưu trữ trong document kiểu JSON nên truy vấn sẽ rất
nhanh.
Ưu điểm của mongoDB.
- Schema linh hoạt: Do MongoDB sử dụng lưu trữ dữ liệu dưới
dạng Document JSON nên mỗi một collection sẽ các các kích cỡ
và các document khác nhau.
- Cấu trúc đối tượng rõ ràng: Tuy rằng cấu trúc của dữ liệu là linh
hoạt nhưng đối tượng của nó được xác định rất rõ ràng. Sử dụng bộ
nhớ nội tại, nên truy vấn sẽ rất nhanh.
- MongoDB rất dễ mở rộng.
- Không có các join: Điều này cũng góp phần tạo nên tốc độ truy
vấn cực nhanh trên mongoDB.

- MongoDB phù hợp cho các ứng dụng realtime.
Nhược điểm của mongoDB.
Điều đầu tiên phải kể đến ở đây là MongoDB khơng có các tính chất
ràng buộc như trong RDBMS nên khi thao tác với mongoDB thì phải
hết sức cẩn thận. MongoDB sử dụng sẽ hao tốn tài nguyên của hệ
thống nhiều hơn RDBMS.

2.

CÁC LUỒNG CHẠY
a.

Login

Bước 1: Nhập username, password
Bước 2: Web browser gửi request lên server
Bước 3: Server check user với database
TRANG 9


TIEU LUAN MOI download :


Bước 4: Nếu tồn tại user thì tạo token và lưu lại token và gửi response
cho web browser
Bước 5: Browser thông báo đăng nhập thành công cho admin

b.

Post data


Bước 1: ESP gửi request và data lên web server
Bước 2: Web server lưu data xuống database
Bước 3: Trả về kết quả cho ESP

TRANG 10

TIEU LUAN MOI download :


c.

Get data

Bước 1: Admin click view
Bước 2: Web browser gửi request xem thông tin và token
Bước 3: Web server check token với database
Bước 4: Nếu tồn tại token web server sẽ lấy dữ liệu từ database và
gửi response về cho web browser
Bước 5: Web browser hiển thị thông tin lên màn hình cho admin

TRANG 11

TIEU LUAN MOI download :


3. Phân tích mã
nguồn a. Mơ hình
MVC
- M là Model: cấu trúc dữ liệu theo cách tin cậy và chuẩn bị dữ liệu

theo lệnh của controller
- V là View: Hiển thị dữ liệu cho người dùng theo cách dễ hiểu dựa
trên hành động của người dùng.
- C là Controller: Nhận lệnh từ người dùng, gửi lệnh đến cho
Model để cập nhập dữ liệu, truyền lệnh đến View để cập nhập giao
diện hiển thị.

TRANG 12


TIEU LUAN MOI download :


b. Cấu trúc code

TRANG 13

TIEU LUAN MOI download :


-

Luồng login:
+

Front end gửi request đăng nhập gồm thông tin username,

password

TRANG 14


TIEU LUAN MOI download :


+ Back end xử lý login:

TRANG 15

TIEU LUAN MOI download :


V.

Giới thiệu và lập trình trên MSP430G2

MSP430G2
TRANG 16

TIEU LUAN MOI download :


Thuộc dòng Kit Lauchpad giá rẻ từ hãng sản xuất TI danh tiếng, MSP430
Lauchpad là kit thí nghiệm được rất nhiều các bạn sinh viên, người
nghiên cứu và các trường đại học lựa chọn hiện nay

THƠNG SỐ KỸ THUẬT:
-

MCU dịng DIP 20 chân MSP420G2xxx.


-

Mạch nạp và Debug tích hợp sẵn trên board.

-

Có led RGB và nút nhấn tích hợp sẵn.

-

Tặng kèm thạch anh 32khz cho các ứng dụng timer.

-

Tặng thêm 1 vi điều khiển MSP430 trong hộp.

-

Phần mềm lập trình miễn phí trên trang web của hãng.

PHẦN MỀM LẬP TRÌNH:
-

Code Composer Studio
TRANG 17

TIEU LUAN MOI download :


-


IAR Embedded.

CÁC CHUẨN GIAO TIẾP HỖ TRỢ:
-

General-purpose input/output (GPIO)

-

Universal asynchronous receiver-transmitter (UART)

-

Inter-Integrated Circuit (IIC)

-

Serial Peripheral Interface (SPI)

-

Anolog to digital

CLOCK:
-

Nguồn xung Clock của MSP430 được chia làm 2 lớp.

TRANG 18


TIEU LUAN MOI download :


×