Tải bản đầy đủ

IOT với MPU6050. Đo và hiển thi gia tốc qua Wifi với Esp8266

BÁO CÁO MÔN HỌC
THU THẬP DỮ LIỆU VÀ ĐIỀU KHIỂN BẰNG MÁY TÍNH

ĐỀ TÀI: Thiết kế hệ thống đo rung từ xa với smart sensor, và có kết nối Wifi.
Nhóm sinh viên:
Nguyễn Sỹ Quyền

- 20143696

Nguyễn Thanh Danh - 20140643
Nguyễn Quang Phong- 20143426
Đinh Trọng Tuyên

-20144981


1. Đo rung động dùng cảm biến gia tốc
1.1 Tại sao phải đo rung động
Trong các thập niên gần đây, hệ thống công nghiệp chủ yếu hoạt động dựa vào máy
móc, vì thế việc bảo trì hệ thống máy móc thường xuyên là điều rất cần thiết. Có nhiều
nguyên nhân dẫn đến hư hỏng, ví dụ như: máy làm việc quá công suất, hệ thống động cơ

trong máy bị mài mòn, không thường xuyên tra dầu vào các chi tiết máy,… nhưng
nguyên nhân chủ yếu nhất vẫn do những rung động không mong muốn gây ra.
1.2 Nguyên nhân dẫn đến rung động.
Hầu hết các rung động là do một trong các nguyên nhân: có lực tác động lặp đi lặp
lại, sự lỏng lẻo trong các chi tiết máy và sự cộng hưởng.

Hình 1. Tác hại của rung động
1.3 Đo rung động dùng cảm biến gia tốc
Cảm biến gia tốc là cảm biến tạo ra tín hiệu điện tỷ lệ với gia tốc của thành phần
rung động. Từ đó ta đo được rung động.
2. Cảm biến gia tốc góc nghiêng MPU6050
2.1 Khái niệm về IMU và DOF


IMU( Inertial Measurement Unit) là loại cảm biến dùng để đo gia tốc và góc quay.
Một modul IMU thường gồm 2 cảm biến: cảm biến gia tốc (accelerometer) và cảm
biến góc quay (gyroscope).
+ Accelerometer ( gọi tắt là accel): accel đơn giản là một cảm biến đo gia tốc của
bản than module và thường sẽ có 3 trục XYZ ứng với 3 chiều không gian. Accel
đo cả gia tốc trọng lực nên giá trị thực khi đo sẽ bao gồm trọng lực.


+ Gyroscope ( gọi tắt là gyro) :là một loại cảm biến đo tốc độ quay của nó quanh 1
trục. Tương tự với accel, gyro cũng thường có 3 trục XYZ.


Mỗi một module IMU đầy đủ sẽ gọi là 6-DOF ( 6 Degrees of Freedom) tức là 6
trục độc lập ( 3 của accel và 3 của gyro). Ngoài ra còn có các module 9DOF( thêm 1 cảm biến từ trường 3 trục), 10-DOF( thêm 1 áp kế để đo độ cao), 11DOF(thêm module GPS để xác định vị trí),…

Hinh 2: Ví dụ về IMU 6 DOF
2.2 Giới thiệu về MPU-6050
Cảm biến MPU-6050 được sử dụng để đo 6 thông số: 3 trục góc quay( Gyro) và 3 trục
gia tốc hướng (Accelerometer).


Hình 3. Cảm biến MPU-6050

MPU-6050 là module cảm biến của hãng InvenSense tích hợp 6 trục cảm biến bao
gồm:
+ Con quay hồi chuyển 3 trục ( 3-axis Gyroscope).


+ Cảm biến gia tốc 3 chiều ( 3 – axis Accelerometer).
MPU-6050 còn có 1 đơn vị tăng tốc phần cứng chuyên xử lý tín hiệu( Digital
motion Processor-DSP) do cảm biến thu thập và thực hiện các tính toán cần thiết.
Điều này giúp giảm bớt đáng kể phần xử lí tính toán của vi điều khiển, cải thiện
tốc độ xử lí và cho ra phản hồi nhanh hơn.
Các thông số cơ bản của MPU-6050:


Điện áp sử dụng : 3~5 VDC



Điện áp giao tiếp: 3~5 VDC



Chuẩn giao tiếp :I2C



Giá trị Gyroscopes trong khoảng : +/- 250 500 1000 2000 degree/sec.



Giá trị Acceleration trong khoảng: +/- 2g, +/- 4g, +/- 8g, +/- 16g

3. Giới thiệu về Wemos D1


Hình 4. Board mạch Wemos D1

WeMos D1 là board mạch được phát triển dựa trên module ESP8266-12E và được
thiết kế theo tiêu chuẩn của board mạch Arduino UNO, tương thích với Arduino IDE và
NodeMCU.
WeMos D1 được tích hợp Wifi, dễ dàng thực hiện các ứng dụng thu thập dữ liệu và
điều khiển thiết bị qua Wifi.
Wemos D1 có khả năng chuyển đổi điện áp trên board, cho phép cấp 1điện áp DC 924V để chuyển thành 5V với dòng tối đa 1A.
Thông số kit WeMos D1:
Vi điều khiển
Điện áp hoạt đông
I/O Digital Pin
Analog Pin
Bộ nhớ Flash
Điện áp vào
Điện áp ra
Giao tiếp

ESP8266EX
3.3V
11
1 ( điện áp vào tối đa 3.3V)
4MB
9-24V
5V- Dòng max: 1A
Cable Micro USB

Tích hợp giao thức
Kích thước
Ngôn ngữ lập trình

TCP/IP
68.6mm x 53.4 mm
C/C++,Micropython, NodeMCU

Sơ đồ chân:
Wemos

ESP8266

D0

GPIO16

D1

GPIO5

D2

GPIO4

D3,D15

GPIO0

D4,D14

GPIO2

D5,D13

GPIO14

D6,D12

GPIO12


4.

D7,D11

GPIO13

D8

GPIO15

D9

GPIO3

D10

GPIO1

Database

Database : có nghĩa là cơ sở dữ liệu, các dữ liệu thường được dùng như
bảng biểu, lược đồ, truy vấn, báo cáo … sẽ được tập hợp trong một tổ chức gọi là
database, tức cơ sở dữ liệu. Database tồn tại dưới dạng tập tin trong hệ điều hành máy
tính hoặc những hệ quản trị cơ sở dữ liệu, và được lưu trữ trên thiết bị có chức năng ghi
nhớ : ổ cứng, đĩa CD hoặc USB.
-

Đặc điểm của Database:

Đặc điểm của database chính là có thể truy xuất thông tin, dữ liệu theo nhiều cách
khác nhau, thông tin từ CSDL được đảm bảo nhất quán và toàn vẹn dữ liệu, không có sự
trùng lặp thông tin, nếu có thì tỷ lệ rất thấp. Một cơ sở dữ liệu Database có thể có nhiều
người sử dụng cùng một lúc.
Nhờ việc không bị trùng lặp giúp giảm thời gian xử lý dữ liệu, cũng như tránh
khỏi những sai sót trong quá trình kiểm tra cơ sở dữ liệu Database. Nhờ việc có thể truy
xuất từ nhiều cách khác nhau nên nhiều người có thể sử dụng cơ sở dữ liệu cùng một lúc
mà không phải qua các khâu rườm rà phức tạp, từ đó tạo điều kiện thuận lợi cho việc sử
dụng, quản lý, truy cập dữ liệu…
Tuy vậy, database cũng có những hạn chế nhất định, chủ quyền của người sử dụng
khác nhau có thể bị xâm phạm, ngoài ra thì vấn đề về bảo mật, nguy cơ bị tấn công, đánh
cắp dữ liệu.


Tính chất : Phản ánh 1 phần của thế giới thực (mini world) được cập nhật phản
ánh sự thay đổi của thế giới nó biểu diễn. 1 CSDL là 1 tập hợp DL liên kết với
nhau một cách logic và mang 1 ý nghĩa nào đó. Được thiết kế phổ biến cho 1
mục đích riêng có nhóm người sử dụng.



Tổ chức cơ sở dữ liệu:

Một cơ sở dữ liệu thông thường được tổ chức thành các bảng, mỗi bảng chứa các
trường thuộc tính, mỗi tập dữ liệu của các thuộc tính trong bảng gọi là bản ghi (record).
Mỗi bảng có quan hệ với nhau và có thể dùng ngôn ngữ SQL để truy vấn dữ liệu từ cơ sở
dữ liệu.


Phân loại:




Cơ sở dữ liệu dạng file: dữ liệu được lưu trữ dưới dạng các file có thể là text, ascii,
*.dbf. Tiêu biểu cho cơ sở dữ liệu dạng file là*.mdb Foxpro



Cơ sở dữ liệu quan hệ: dữ liệu được lưu trữ trong các bảng dữ liệu gọi là các thực thể,
giữa các thực thể này có mối liên hệ với nhau gọi là các quan hệ, mỗi quan hệ có các
thuộc tính, trong đó có một thuộc tính là khóa chính. Các hệ quản trị hỗ trợ cơ sở dữ
liệu quan hệ như: MS SQL server, Oracle, MySQL...



Cơ sở dữ liệu hướng đối tượng: dữ liệu cũng được lưu trữ trong các bảng dữ liệu
nhưng các bảng có bổ sung thêm các tính năng hướng đối tượng như lưu trữ thêm các
hành vi, nhằm thể hiện hành vi của đối tượng. Mỗi bảng xem như một lớp dữ liệu,
một dòng dữ liệu trong bảng là một đối tượng. Các hệ quản trị có hỗ trợ cơ sở dữ liệu
hướng đối tượng như: MS SQL server, Oracle, Postgres



Cơ sở dữ liệu bán cấu trúc: dữ liệu được lưu dưới dạng XML, với định dạng này
thông tin mô tả về đối tượng thể hiện trong các tag. Đây là cơ sở dữ liệu có nhiều ưu
điểm do lưu trữ được hầu hết các loại dữ liệu khác nhau nên cơ sở dữ liệu bán cấu
trúc là hướng mới trong nghiên cứu và ứng dụng.



Cơ sở dữ liệu phân cấp (blockchain): Dữ liệu được phân tán trên mạng máy tính
ngang hàng và luôn được cả mạng lưới kiểm định. Ví dụ: Bitcoin blockchain.

Trong đề tài này cơ sở dữ liệu database dùng để lưu trữ các giá trị đo gia tốc từ cảm biến
MPU6050 tập hợp thành một file và có thể truy xuất lại các file cũ để quan sát.

5.

SQL
-

SQL là viết tắt của Structured Query Language, là ngôn ngữ truy vấn mang

tính cấu trúc. Nó được thiết kế để quản lý dữ liệu trong một hệ thống quản lý cơ sở dữ
liệu quan hệ (RDBMS). SQL là ngôn ngữ cơ sở dữ liệu, được sử dụng để tạo, xóa trong
cơ sở dữ liệu, lấy các hàng và sửa đổi các hàng, …
Tất cả DBMS như MySQL, Oracle, MS Access, Sybase, Informix, Postgres và SQL
Server sử dụng SQL như là ngôn ngữ cơ sở dữ liệu chuẩn.


SQL cần thiết để:
Tạo cơ sở dữ liệu, bảng và view mới.
Để chèn các bản ghi vào trong một cơ sở dữ liệu.


Để xóa các bản ghi từ một cơ sở dữ liệu.
Để lấy dữ liệu từ một cơ sở dữ liệu.


Chức năng của SQL:

Với SQL, chúng ta có thể truy vấn Database theo nhiều cách khác nhau, bởi sử dụng
các lệnh.
Với SQL, người dùng có thể truy cập dữ liệu từ RDBMS.
SQL cho phép người dùng miêu tả dữ liệu.
SQL cho phép người dùng định nghĩa dữ liệu trong một Database và thao tác nó
khi cần thiết.
Cho phép người dùng tạo, xóa Database và bảng.
Cho phép người dùng tạo view, Procedure, hàm trong một Database.
Cho phép người dùng thiết lập quyền truy cập vào bảng, thủ tục và view.


Lịch sử của SQL:

1970 -- Dr. Edgar F. "Ted" Codd của IBM được biết đến như là cha đẻ của
Relational Database (Cơ sở dữ liệu quan hệ). Ông miêu tả một mô hình quan hệ
(Relational Model) cho các Database.
1974 -- SQL (Structured Query Language) xuất hiện.
1978 -- IBM tiếp tục phát triển ý tưởng của Codd và công bố một sản phẩm tên là
System/R.
1986 -- IBM phát triển nguyên mẫu đầu tiên về Relation Database và được chuẩn
hóa bởi ANSI. Relation Database đầu tiên được công bố là Relational Software và
sau đó là Oracle.


Các lệnh trong SQL:

Lệnh CREATE: Tạo một bảng, một View của bảng, hoặc đối tượng khác trong
Database.
Lệnh ALTER: Sửa đổi một đối tượng Database đang tồn tại, ví dụ như một bảng.


Lệnh: Xóa toàn bộ một bảng, một View của bảng hoặc đối tượng khác trong một
Database.
Lệnh SELECT: Lấy các bản ghi cụ thể từ một hoặc nhiều bảng.
Lệnh INSERT: Tạo một bản ghi.
Lệnh UPDATE: Sửa đổi các bản ghi.
Lệnh DELETE: Xóa các bản ghi.
Lệnh GRANT: Trao một quyền tới người dùng.
Lệnh REVOKE: Thu hồi quyền đã trao cho người dùng.

6.

PHP
PHP là ngôn ngữ lập trình mã nguồn mở phía server được thiết kế để dễ dàng xây

dựng các trang web động. Mã PHP có thể thực thi trên server để tạo ra mã HTML và
xuất ra trình duyệt web theo yêu cầu của người sử dụng. PHP cho phép xây dựng ứng
dụng web trên mạng internet tương tác với mọi cơ sở dữ liệu như: MySQL, Oracle,…
Ngôn ngữ lập trình PHP được tối ưu hóa cho các ứng dụng web, tốc độ nhanh, nhỏ gọn,
cú pháp giống C và Java, dễ học và thời gian xây dựng sản phẩm tương đối ngắn hơn so
với các ngôn ngữ khác nên PHP đã nhanh chóng trở thành một ngôn ngữ lập trình phổ
biến nhất thế giới.
Các file PHP trả về kết quả cho trình duyệt là một trang thuần HTML.
Các file PHP có thể chứa văn bản ( Text ), các thẻ HTML ( HTML tags ) và đoạn
mã kịch bản ( Script ).
Các file PHP có phần mở rộng là: .php, .php3, .phpml.
Từ phiên bản 4.0 trở về sau mới hỗ trợ session.
Sử dụng Php để thiết lập giao diện trên database.


7. Phương thức thu thập dữ liệu

8. Sơ đồ kết nối

Hình 5: Sơ đồ kết nối Wemos D1 với MPU6050


Tương ứng với trên Wemos D1 mini pro thì #4, #5 là chân D14, D15 trên Wemos
D1
Diễn giải: Khi ESP8266 thu thập dữ liệu từ cảm biến sẽ sử dụng PHP Programming
để hiển thị dữ liệu trên Web. Ở trên web sẽ hiển thị các giá trị x, y, z với các giá trị đo
được ở current time. Và cũng nhờ code PHP Programming mà ta có thể add dữ liệu vào
cơ sở dữ liệu My SQL. Ở đây để tạo cơ sở dữ liệu sử dụng phần mềm Xampp.
9. Các chương trình phần mềm được sử dụng trong đề tài.
Code Arduino:
#include
#include
#include
#include

MPU6050 mpu6050(Wire);

float x, y, z;
//Thiet lap ket noi Wifi
const char* ssid = "Zero9";
const char* pwd = "btth1234";
WiFiServer server(80); // open port 80 for server connection

void setup()
{
Serial.begin(115200); //Set toc do truyen thong
Wire.begin();
mpu6050.begin();
mpu6050.calcGyroOffsets(true);
delay(10);


//Thiet Lap ket noi Wifi
Serial.println();
Serial.println();
Serial.print("Connecting to wifi ");
Serial.println(ssid);

WiFi.begin(ssid, pwd);

//attempt to connect to wifi
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print("."); //Dat dau cham de the hien qua trinh doi ket noi thanh cong
}
Serial.println("");

//Trong khi ket noi thanh cong thi in: "Wifi connected"
Serial.println("Wifi connected");

//Bat dau server
server.begin();
Serial.println("Server started.");

//Lay d/c IP va in ra man hinh
Serial.print("This is your IP address: ");
//Serial.print("http://");


Serial.print(WiFi.localIP());
Serial.println("/");
}

void loop()
{
mpu6050.update();
WiFiClient client = server.available();
if (!client)
{
return;
}

//wait for the data to be sent from client
Serial.println("New client connection");
while (!client.available())
{
delay(1);
}

//Read the first line of the request
String request = client.readStringUntil('\r');
Serial.println(request);
client.flush();
//Thiet ke giao dien hien thi tren web
client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");


client.println("");
client.println("");
client.println("");
client.println(" ");
client.println("");
client.println("");
client.println("");
client.println("");
client.println("");
client.println();
client.println("
Dai Hoc Bach Khoa Ha Noi
");
client.println("
MPU6050 Project
");
client.println("
De Tai: Thu Thap Du Lieu MPU6050
");
client.print("

Giam sat do rung MPU6050

");
if (request.indexOf("/AlwaysOn") != -1)
{
client.print("

Sensor: ON

");
client.println(" Gia tri X: ");
client.print(mpu6050.getAngleX());//client.print(R);
client.println(" ; Gia tri Y: ");
client.print(mpu6050.getAngleY());
client.println(" ; Gia tri Z: ");
client.print(mpu6050.getAngleZ());
x = mpu6050.getAngleX();
y = mpu6050.getAngleY();
z = mpu6050.getAngleZ();


//luu data toi mysql, voi http client
HTTPClient http;
String url = "http://127.0.0.1/mpu6050/add.php?x=" + String(x); //access php file de ghi du lieu
Serial.println(url);
http.begin(url);

//Su dung phuong thuc GET de ghi du lieu vao SQL
// Neu gia tri url tra ve >0 thi thuc hien ham trong IF, con khong thi thuc hien else
int httpCode = http.GET();
if (httpCode > 0)
{
Serial.printf("[HTTP] GET...code: %d\n", httpCode);
if (httpCode == HTTP_CODE_OK)
{
String payload = http.getString();
Serial.println(payload);
}
}
else
{
Serial.println(httpCode);
Serial.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str());
}
http.end();
delay(3000);
}


client.println("

");
//Thiet lap nut nhan
client.println("");
// Neu co du lieu thi doc va in chung ra
if (client.available())
{
char c = client.read();
client.print(c);
}

client.println("");

client.println();
delay(1);
Serial.println("Client disconnected!");
Serial.println("");
}


Code PHP: Lưu dữ liệu lên CSDL My SQL.

Hiển thị dữ liệu curent time trên Web:


Dạng hiển thi dữ liệu trên PHP Myadmin:

Kết luận:
Sau một thời gian tìm hiểu và nghiên cứu. Nhóm em đã tìm hiểu được cơ chế
đo và hiển thị giá trị cảm biến đo được. Hiểu cơ chế đọc và xuất dữ liệu trên web
vào CSDL. Biết thêm ngôn ngữ lập trình mới
Trong khi đó, thì vẫn chưa thực sự hoàn thành về lưu dữ liệu vào CSDL do
chưa thực hiện được addlink vào CSDL




Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay

×