Professional Documents
Culture Documents
đồ án tốt nghiệp nguyên
đồ án tốt nghiệp nguyên
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
NHẬN XÉT CỦA NGƯỜI PHẢN BIỆN
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
.........................................................................................................................................
TÓM TẮT ĐỀ TÀI
Đề tài “Ứng dụng IoT điều khiển Robot” tập trung vào nghiên cứu , chế tạo bộ xử lí trung
tâm , là đầu não của robot , làm nhiệm vụ xác nhận vật thể và chỉ rõ hành động tiếp theo
cho robot phải thực hiện . Dựa trên nhiều công nghệ hiện đại hiện nay như xử lí ảnh ,
mạng truyền thông để xây dựng nên hệ thống hoàn chỉnh Mọi kết quả từ hình ảnh , giám
sát vật thể , nhiệt độ , hành động , đều được theo dõi thông qua giao diện giám sát đã
được thiết kế ra. Mỗi một chương trong đề tài sẽ đi từ vấn đề khái quát đến cụ thể , nêu rõ
phương án giải quyết . Toàn bộ nội dung được tóm gọn lại thành các chương sau :
CHƯƠNG 1: TỔNG QUAN ĐỀ TÀI
CHƯƠNG 2 : TỔNG QUAN VỀ THIẾT BỊ , CÔNG NGHỆ DÙNG TRONG DỰ
ÁN
CHƯƠNG 3: XÂY DỰNG THIẾT KẾ HỆ THỐNG ĐIỀU KHIỂN GIÁM SÁT
CHƯƠNG 4: HOÀN THIỆN HỆ THỐNG
ĐẠI HỌC ĐÀ NẴNG CỘNG HÒA XÃ HÔI CHỦ NGHĨA VỆT NAM
TRƯỜNG ĐẠI HỌC BÁCH KHOA Độc lập - Tự do - Hạnh phúc
KHOA : ĐIỆN
1 Trương Đình Thành Nguyên Nghiên cứu tổng quát về công nghệ ứng
dụng trong đề tài
2 Trần Tuấn Thành Nghiên cứu , tiến hành việc lắp ráp mạch
b. Phần riêng:
STT Họ tên sinh viên Nội dung
1 Trương Đình Thành Nguyên Xây dựng giao diện giám sát , xây dựng
thuật toán
2 Trần Tuấn Thành Lắp ráp mạch và hoàn thiện phần cứng
5. Họ tên người hướng dẫn: Phần/ Nội dung:
Thiết kế điều khiển và giám sát robot
chuyển động từ xa
Nội dung bao gồm
- Các tham số cần giám sát
- Cảm biến đo khoảng cách
- Cảm biến đo nhiệt độ
- Camera
- Xử lý ảnh
- Máy tính nhúng Raspberry
TS.Nguyễn Hoàng Mai - Ngôn ngữ python
- Lập trình trên máy tính nhúng
- Truyền thông internet
- Truyền thông mạng 3G, 4G
- Thiết kế mạng cảm biến
- Thiết kế phần nguồn
- Thiết kế chương trình giám sát
trên máy tính
- Lắp ráp mạch
Hiện nay trong quá trình công nghiệp hóa và hiện đại hóa đất nước, Nhà nước ta đã
và đang khuyến khích việc áp dụng các thành tựu khoa học kỹ thuật vào trong sản xuất
nhằm nâng cao chất lượng cũng như số lượng hàng hóa, đem lại hiệu quả kinh tế góp
phần thúc đẩy sự phát triển của xã hội, nâng cao chất lượng cuộc sống người dân.
Với những định hướng rõ ràng đó, nhiều thành tựu khoa học đã được áp dụng vào
tất cả các lĩnh vực, các ngành sản xuất. Ngành nông nghiệp cũng không nằm ngoài xu
hướng đó nhất là trong bối cảnh nước ta đã tham gia vào hiệp định tự do của kinh tế thế
giới. Bởi vì lẽ đó, nếu không nhanh chóng áp dụng các tiến bộ khoa học kỹ thuật, không
đổi mới phương thức sản xuất và canh tác truyền thống thì ngành nông nghiệp sẽ tụt hậu
so với thế giới và khu vực. Trước yêu cầu cấp thiết đó ngành nông nghiệp cùng với ngành
tự động hóa đã đưa ra rất nhiều giải pháp trong nông nghiệp và đã được ứng dụng rộng rãi
trên cả nước.
Trong đề tài đồ án tốt nghiệp “Ứng dụng IOT điều khiển robot” chúng em xin được
giới thiệu giải pháp ứng dụng công nghệ xử lí ảnh và công nghệ mạng dùng để giám sát
việc sửa chữa của robot trên đường dây nhằm mục đích tối ưu hóa khả năng giám sát,
đảm bảo an toàn hơn , giảm sức người nhằm mục đích nâng cao chất lượng truyền tải điện
LỜI CẢM ƠN
Sau một thời gian nghiên cứu, tìm hiểu và tính toán dưới sự chỉ dẫn tận tình của thầy
TS.Nguyễn Hoàng Mai và anh Nguyễn Phan Xuân Bảo chúng em đã hoàn thành đề tài:
“Ứng dụng IoT trong điều khiển robot”.
i
CAM ĐOAN
Tôi xin cam đoan trong quá trình làm đồ án tốt nghiệp sẽ thực hiện nghiêm túc các
quy định về liêm chính học thuật, Không gian lận, bịa đặt, đạo văn, giúp người học khác
vi phạm. Trung thực trong việc trình bày, thể hiện các hoạt động học thuật và kết quả từ
hoạt động học thuật của bản thân. Không giả mạo hồ sơ học thuật. Không dùng các biện
pháp bất hợp pháp hoặc trái quy định để tạo nên ưu thế cho bản thân. Chủ động tìm hiểu
và tránh các hành vi vi phạm liêm chính học thuật, chủ động tìm hiểu và nghiêm túc thực
hiện các quy định về luật sở hữu trí tuệ. Sử dụng sản phẩm học thuật của người khác phải
có trích dẫn nguồn gốc rõ ràng. Tôi xin cam đoan số liệu và kết quả nghiên cứu trong đồ
án này là trung thực và chưa được sử dụng để bảo vệ một học vị nào. Mọi sự giúp đỡ cho
việc thực hiện đồ án này đã được cảm ơn và các thông tin trích dẫn đã được chỉ rõ nguồn
gốc rõ ràng và được phép công bố.
ii
MỤC LỤC
TÓM TĂT
NHIỆM VỤ ĐỒ ÁN
LỜI NÓI ĐẦU VÀ CẢM ƠN i
LỜI CAM ĐOAN LIÊM CHÍNH HỌC THUẬT ii
MỤC LỤC iii
DANH SÁCH CÁC BẢNG BIỂU, HÌNH VẼ VÀ SƠ ĐỒ v
CHƯƠNG 1: TỔNG QUAN VỀ ĐỀ TÀI........................................................................1
1.1. Đặt vấn đề.................................................................................................................... 1
1.1.1. Giới thiệu về đường dây 500kV................................................................................1
1.1.2. Một số thiết bị trên đường dây 500kV......................................................................3
1.2. Tổng quan về Robot.....................................................................................................5
1.2.1. Khái niệm..................................................................................................................5
1.2.2. Vai trò và lợi ích.......................................................................................................5
1.2.3. Ứng dụng.................................................................................................................. 6
1.3. Lựa chọn đề tài..........................................................................................................10
1.4. Tóm tắt quá trình triển khai đề tài..............................................................................11
1.4.1. Lập kế hoạch, sắp xếp công việc:............................................................................11
1.4.2. Tìm hiểu lý thuyết liên quan đến đồ án...................................................................11
1.4.3. Tìm hiểu Web Server..............................................................................................11
1.4.4. Lập trình xử lý ảnh..................................................................................................11
1.4.5. Xây dựng Web hiển thị, giám sát, cảnh báo............................................................11
1.4.6. Kiểm tra, chạy thử...................................................................................................11
1.4.7. Hoàn thiện đồ án.....................................................................................................11
CHƯƠNG 2: TỔNG QUAN VỀ THIẾT BỊ , CÔNG NGHỆ DÙNG TRONG DỰ
ÁN.................................................................................................................................... 12
2.1. TỔNG QUAN VỀ CÔNG NGHÊ:............................................................................12
2.1.1. Phần mềm xử lí ảnh :..............................................................................................12
2.1.2. Ngôn ngữ lập trình Python......................................................................................15
2.1.3. web frameworks Flask :..........................................................................................16
v
2.1.4. Ngôn ngữ lập trình web HTML..............................................................................17
2.1.5. CSS (Cascading Style Sheet):.................................................................................18
2.1.6. Jquery là gì :............................................................................................................19
2.1.7. SocketIo..................................................................................................................21
2.1.8. Đa luồng (Multithreading)......................................................................................22
2.2. Tổng quan về thiết bị sử dụng :..................................................................................22
2.2.1. Giới thiệu chung về Adruino Uno R3.....................................................................22
2.2.2. . Máy tính nhúng Raspberry....................................................................................23
2.2.3. USB Camera...........................................................................................................24
2.2.4. Cảm biến nhiệt độ:..................................................................................................25
2.2.5. Cảm biến hồng ngoại :............................................................................................26
2.2.6. Khối nguồn.............................................................................................................27
CHƯƠNG 3: XÂY DỰNG THIẾT KẾ HỆ THỐNG ĐIỀU KHIẾN GIÁM SÁT.....28
3.1. Xây dựng chương trình xử lý hình ảnh :....................................................................28
3.1.1. Các thuật toán giúp tìm ra Feature (biểu diễn bởi keypoint descriptor)..................30
3.1.2. Thuật toán giúp Matching Feautre:.........................................................................32
3.2. Xây dựng giao diện giám sát......................................................................................36
3.3. Xây dựng chương trình mô phỏng việc điều khiển Robot :........................................43
3.3.1. Giới thiệu sơ bộ về UART :....................................................................................43
3.3.2. Lập trình truyền thông nối tiếp giữa Raspberry và Arduino:...................................45
CHƯƠNG 4: HOÀN THIỆN HỆ THỐNG...................................................................48
4.1. Kết quả:...................................................................................................................... 48
4.2. Nhận xét :...................................................................................................................50
KẾT LUẬN..................................................................................................................... 51
TÀI LIỆU THAM KHẢO..............................................................................................51
PHỤ LỤC A....................................................................................................................53
PHỤ LỤC B..................................................................................................................... 59
PHỤ LỤC C....................................................................................................................65
DANH SÁCH CÁC BẢNG, HÌNH VẼ
vi
LỜI MỞ ĐẦU
Ngày nay với sự phát triển vượt bậc của các ngành khoa học kỹ thuật nói chung
và ngành Kỹ thuật điều khiển và tự động hóa nói riêng, cuộc sống của con người đã
chuyển sang một thời đại mới – thời đại công nghệ hóa. Với việc ứng dụng khoa học
công nghệ vào đời sống xã hội, đời sống con người đang dần được cải thiện và nâng
cao một cách đáng kể. Tuy nhiên việc quản lý giám sát và vận hành các đường dây
500kV theo kiểu truyền thống gây ra nhiều khó khăn, lãng phí nhân lực, thời gian và
tiền bạc.
Xuất phát từ những vấn đề thực tiễn như trên, chúng em đã chọn thực hiện đề
tài:”Ứng dụng IoT điều khiển Robot” vừa đáp ứng được nhu cầu khả năng thu thập và
xử lý thông tinh rất lớn, có mức độ chính xác cao , kịp thời . Giúp việc điều khiển và
giám sát trở nên dễ dàng , tiết kiệm được thời gian và nhân lực.
Ứng dụng IoT điều khiển Robot
- Áp dụng flycam để kiểm tra tình trạng nối, mối vá, chuỗi cách điện, các chi trên đường
dây mang điện vận hành. Trên cơ sở hình ảnh thu thập được từ phim quay, ảnh chụp của
flycam, các kỹ sư vận hành đường dây sẽ đánh giá, phân tích tình trạng thiết bị để lên kế
hoạch sửa chữa, bảo dưỡng kịp thời.
Hình 1.2 : Flycam phun lửa đốt diều mắc trên dây
1.1.2. Một số thiết bị trên đường dây 500kV
- Khung định vị: Khung định vị giữ cho khoảng cách giữa các dây trong một pha
cách nhau một khoảng gần như cố định trong suốt khoảng cột, dưới tác động của
nhiệt độ (dây dãn ra), của gió (dây chao lệch không đều), như vậy đường kính
tương đương của dây dẫn ở mọi điểm dọc tuyến ít thay đổi), giảm rung.
- Robot là một loại máy móc có thể thực hiện những công việc một cách tự động thông
qua sự điều khiển của máy tính hoặc các vi mạch điện tử được lập trình. Robot là một tác
nhân cơ khí nhân tạo, ảo, thường là một hệ thống cơ khí-điện tử
1.2.2. Vai trò và lợi ích
- Cùng với sự tiến bộ của công nghệ thông tin, robot ngày càng trở nên thông minh hơn.
Chúng đóng vai trò ngày càng quan trọng trong sản xuất thông minh, hệ thống vận
chuyển thông minh, internet vạn vật, dịch vụ thông minh và sức khỏe y tế. Trong thời
gian tới, robot thông minh sẽ tiếp tục được tích hợp mở rộng nhiều công nghệ tiên tiến
nhất như: cộng tác người - robot, truyền động tích hợp thông minh, nhận biết cảm xúc,
giao diện máy tính - bộ não, mạng dữ liệu lớn, phần mềm sinh học và nền tảng đám mây..
- Những lợi ích của Robot trong cuộc sống và sản xuất:
Giảm đáng kể các chi phí vận hành trực tiếp như chi phí đào tạo, an toàn, quản lý
nhân công, giảm chi phí thuê lao động chân tay.
Ứng dụng các loại cách tanh robot công nghiệp giúp nâng cao độ chính xác, chất
lượng và đảm bảo tính ổn định của sản phẩm.
Giải phóng con người khỏi những điều kiện làm việc khắc nghiệt, nguy hiểm, độc
hại.
Các loại robot cho phép làm việc ổn định, bền bỉ, liên tục trong khoảng thời gian
dài, giúp nâng cao sản lượng, …
Sử dụng các sản phẩm trí tuệ nhân tạo AI tăng tính linh hoạt trong sản xuất
Hạn chế tối đa việc lãng phí nhiên liệu giúp tăng lợi nhuận đáng kể
1.2.3. Ứng dụng
- Với những lợi ích to lớn, thiết thực, robot được ứng dụng rộng rãi trong hầu hết các
ngành nghê, lĩnh vực trong cuộc sản xuất và đời sống:
Ứng dụng Robot trong sản xuất công nghiệp:
Robot sử dụng cho đóng gói, phân loại sản phẩm, thường sẽ dùng Robot song
song.
Robot được dùng để phun sơn trong xưởng sản xuất vỏ ô tô, máy bay….
Robot công nghiệp dùng trong công nghệ ép nhựa.
Được ứng dụng cho việc xếp dỡ, gắp hàng hóa.
Sử dụng trong vận chuyển, di dời sản phẩm.
Robot hàn xì tự động.
Robot được ứng dụng trong nghành công nghiệp đúc để rót kim loại nóng chảy.
Hình 1.9: ứng dụng hệ thống robot Modus V Synaptive vào phẫu thuật chuyên
khoa Ngoại thần kinh tại bệnh viện 115
quanh.
Hình 1.10 : Robot Perserverance vừa được NASA đưa lên sao hỏa
`
Hình 1.11 : Robot chó Vision được áp dụng vào quân đội Mỹ
- Ngoài ra robot còn được ứng dụng rộng rãi trong nhiều lĩnh vực khác: thể thao, giải trí,
tìm kiếm cứu nạn, học đường, …
1.3. Lựa chọn đề tài
- Với những ưu điểm đáng nổi trội như trên thì việc lựa chọn robot trong quá trình giám
sát đường dây tải điện 500kV là một lựa chọn vô cùng sáng suốt . Ngoài việc khả năng
giám sát được tăng lên , chi phí nhân công giảm bớt , thì vấn đề an toàn cũng được đảm
bảo hơn.
- Đóng vai trò là trái tim cho mỗi kết cấu robot , đó chính là bộ xử lí trung tâm , nó
chính là phép màu giúp cho robot có thể thực hiện được những công việc phi thường Với
hàng triệu phép tính toán được thực hiện mỗi giây , bộ xử lí sẽ ra lệnh cho các kết cấu cơ
khí của robot làm việc theo đúng như những gì đã được lập trình với độ chính xác cao , độ
trễ thấp .Đặc biệt là trong thời kì 4.0 này , công nghệ AI ngày càng phát triển , có thể giúp
Robot tự đưa ra quyết định , tự học hỏi y hệt một con người bình thường . Những điều
trên có được đều do bộ xử lí trung tâm của mỗi con robot tạo nên
- Chính vì vậy nhóm chung em đã quyêt định chọn đề tài “Ứng dụng IoT cho Robot” ,
bằng cách xây dựng một bộ xử lí trung tâm , với nhiệm vụ nhận biết , giám sát trên đường
dây tải điện 500kV . Từ những thiết kế ban đầu về Robot gồm 4 cánh tay có khả năng di
chuyển bằng cách bước trên đường dây 500 kV Từ đó đặt ra những yêu cầu cơ bản cần
có cho bộ xử lý trung tâm là :
Có thể nhận biết được vật thể trên đường dây, xử lý và đưa ra lệnh điều khiển động
cơ của robot:
Chạy trên dây bình thường
Chạy qua khung định vị
Chạy gặp chuỗi sứ đứng thì xác định vị trí để đưa ra lệnh lùi bước hoặc vươn
bước qua
Dùng lại khi gặp chuỗi sứ néo
Có hệ thống có thể theo dõi , giám sát được
- Dựa trên những yêu cầu cơ bản kể trên , nhóm chúng em đã quyết định chọn một số
công nghệ tiên tiến để áp dụng vào cho dự án của mình :
Hệ thống giám sát : xây dựng bằng cách tạo ra Server giao diện HTML
- Để có thể thực hiện được những công việc trên , thì cần phải có một vài thiết bị đủ khả
năng để đảm nhiệm , cụ thể :
Raspberry : cho việc tạo ra Server và xử lí hình ảnh
Arduino : cho việc đọc các module Analog
- Và còn một vài thiết bị cũng như công nghê chưa kể ra , toàn bộ sẽ được giới thiệu kĩ
càng và chuyên sâu ở Chương 2
1.4. Tóm tắt quá trình triển khai đề tài
- Quá trình triển khai đề tài được chia thành 6 giai đoạn chính:
1.4.1. Lập kế hoạch, sắp xếp công việc:
- Tìm hiểu tổng quan để tài, phân chia công việc và thời giabn
- Thống kê linh kiện, thiết bị cần mua
1.4.2. Tìm hiểu lý thuyết liên quan đến đồ án
- Đường dây 500 kV
- Robot
1.4.3. Tìm hiểu Web Server
- Ngôn ngữ nhúng
1.4.4. Lập trình xử lý ảnh
- Dùng ngôn ngữ lập trình Python
1.4.5. Xây dựng Web hiển thị, giám sát, cảnh báo
- Xây dựng phần mềm điều khiển robot
1.4.6. Kiểm tra, chạy thử
- Chạy thử và hiệu chỉnh những lỗi, thiếu sót
1.4.7. Hoàn thiện đồ án
- Trình bày báo cáo đồ án, slide thuyết trình
thường các ảnh thô đó được đặc tả (biểu diễn) lại (hay đơn giản là mã hóa) theo các
đặc điểm của ảnh được gọi là các đặc trưng ảnh (Image Features).
Những vấn đề cơ bản trong hệ thống xử lý ảnh
- Điểm ảnh (Picture Element)
+ Gốc của ảnh (ảnh tự nhiên) là ảnh liên tục về không gian và độ sang. Để xử lý
bằng máy tính (số), ảnh cần phải được số hóa. Số hóa ảnh là sự biến đổi gần đúng một
ảnh liên tục thành một tập điểm phù hợp với ảnh thật về ví trí (không gian) và độ sang
(mức xám). Khoảng cách giữa các điểm ảnh đó được thiết lập sao cho mắt người
không phân biệt được ranh giới giữa chúng. Mỗi một điểm như vậy gọi là điểm ảnh
(PEL: Picture Element) hay gọi tắt là Pixel. Trong khuôn khổ ảnh hai chiều, mỗi pixel
ứng với cặp tọa độ (x, y).
+ Điểm ảnh (Pixel) là một phần từ của ảnh số tại tọa đồ (x, y) với độ xám hoặc
màu nhất định. Kích thước và khoảng cách giữa các điểm ảnh đó được chọn thích hợp
sao cho mắt người cảm nhận sự liên tục về không gian và mức xám (hoặc màu) của
ảnh số gần như ảnh thật. Mỗi phần tử trong ma trận được gọi là một phần từ ảnh.
- Độ phân giải của ảnh (Resolution)
+ Theo định nghĩa, khoảng cách giữa các điểm ảnh phải được chọn sao cho mắt
người vẫn thấy được sự liên tục của ảnh. Việc lựa chọn khoảng cách thích hợp tạo
nên một mật độ phân bố, đó chính là độ phân giải và được phân bố theo trục x và y
trong không gian 2 chiều.
+ Ví dụ: Độ phân giải của ảnh trên màn hình CGA (Color Graphic Adaptor) là
một lưới điểm theo chiều ngang màn hình: 320*200. Thì cùng màn hình CGA 12” ta
thấy mịn hơn màn hình CGA 17” độ phân giải 320*200. Lý do: cùng một độ phân
giải nhưng diện tích màn hình rộng hơn thì độ mịn kém hơn.
OpenCV:
+ OpenCV là dự án bắt đầu tại hãng Intel vào năm 1999 bởi Gary Bradsky và ra
mắt lần đầu tiên vào năm 2000. Sau đó Vadim Pisarevsky gia nhập và quản lý nhóm.
Vào năm 2005, OpenCV được sử dụng trên xe tự lái Stanley và chiếc này đã vô địch
giải đấu 2005 DARPA Grand. Tiếp theo nó tiếp tục được cải tiến và phát triển dưới
sự hỗ trợ của Willow Garage bên cạnh với Gary Bradsky và Vadim Pisarevsky. Hiện
tại OpenCV hỗ trợ vô số các thuật toán liên quan để lĩnh vực thị giác máy tính
(computer vision) và lĩnh vực học máy (machine learning).
OpenCV có thể sử dụng được ở hầu hết các ngôn ngữ như C++, Python, Java … và
các hệ điều hành khác nhau như Windows, Linux, OS X, Android, iOS. Ngoài ra nó
thể sử dụng card đồ họa GPU để xử lý nhằm tốc độ xử lý.
- Để tăng sự đồng bộ , cũng như hiệu quả của dự án , sự dễ hiểu trong từng câu lệnh cú
pháp . Thì nhóm em đã lựa chọn Micro-frameWork Flask , cho việc lập trình Server ,
quản lý việc giám sát và điều hành
2.1.3. web frameworks Flask :
- Flask là một web frameworks, nó thuộc loại micro-framework được xây dựng bằng
ngôn ngữ lập trình Python. Flask cho phép bạn xây dựng các ứng dụng web từ đơn giản
tới phức tạp. Nó có thể xây dựng các api nhỏ, ứng dụng web chẳng hạn như các trang
web, blog, trang wiki hoặc một website dựa theo thời gian hay thậm chí là một trang web
thương mại. Flask cung cấp công cụ, các thư viện và các công nghệ hỗ trợ để làm những
công việc trên.
- Flask là một micro-framework. Điều này có nghĩa Flask là một môi trường độc lập, ít
sử dụng các thư viện khác bên ngoài. Do vậy, Flask có ưu điểm là nhẹ, có rất ít lỗi do ít bị
phụ thuộc cũng như dễ dàng phát hiện và xử lý các lỗi bảo mật.
- Flask có nền tảng là Werkzeug và Jinja2 và nó đã trở thành một trong những Web
Framework phổ biến nhất của Python
nhau. Để viết lại code cho trang web là cả một quá trình dài, cực nhọc. Vì vậy, CSS được
tạo bởi W3C là để giải quyết vấn đề này.
- Mối tương quan giữa HTML và CSS rất mật thiết. HTML là ngôn ngữ markup (nền
tảng của site) và CSS định hình phong cách (tất cả những gì tạo nên giao diện website),
chúng là không thể tách rời.
2.1.6. Jquery là gì :
- jQuery là thư viện được viết từ JavaScript, jQuery giúp xây dựng các chức năng bằng
Javascript dễ dàng, nhanh và giàu tính năng hơn.
jQuery được tích hợp nhiều module khác nhau. Từ module hiệu ứng cho đến module truy
vấn selector. jQuery được sử dụng đến 99% trên tổng số website trên thế giới.
Các module phổ biến của jQuery bao gồm:
Ajax – xử lý Ajax
Atributes – Xử lý các thuộc tính của đối tượng HTML
Effect – xử lý hiệu ứng
Event – xử lý sự kiện
Form – xử lý sự kiện liên quan tới form
DOM – xử lý Data Object Model
Selector – xử lý luồng lách giữa các đối tượng HTML
Bảng 1.1. Vai trò của jQuery với Javascript
- Hỗ trợ tốt phương thức sự kiện HTML: Xử lý sự kiện − jQuery xử lý các sự kiện
đa dạng mà không làm cho HTML code trở nên lộn xộn với các Event Handler.
2.1.7. SocketIo
- Socket.io là một module trong Node.js được phát triển vào năm 2010. Nó được phát
triển để sử dụng các kết nối mở để tạo điều kiện giao tiếp thời gian thực, trả về giá trị thực
ở tại thời điểm đó. Socket.io cho phép giao tiếp hai chiều giữa máy khách và máy chủ.
Giao tiếp hai chiều được bật khi máy khách có Socket.io trong trình duyệt và máy chủ
cũng đã tích hợp gói Socket.io
- Nó được sử dụng trong việc xây dựng các ứng dụng web real-time cần tốc độ phản hồi
ngay lập tức như: chat, trực tiếp bóng đá,.... Socket.io xây dựng dựa trên Engine.IO, đầu
tiên nó sẽ thiết lập một kết nối long-polling, sau đó cố gắng nâng cấp lên các kết nối khác
tốt hơn giống như WebSocket.
- Ngoài Socket.io chúng ta còn có một vài kết nối khác như:
Trong long-polling, client sẽ gửi yêu cầu giống AJAX đến máy chủ. Với mỗi lần
nhận được yêu cầu, máy chủ sẽ gửi phản hồi lại nếu & khi có cập nhật mới. Tại
đây, clients sẽ liên tục & định kỳ yêu cầu cập nhật từ máy chủ, thông qua các kết
nối TCP riêng biệt, làm tắc nghẽn lưu lượng mạng.
Trong short-polling, clients định kỳ gửi yêu cầu đến máy chủ để hỏi xem có gì mới
không. Máy chủ không đợi, nhưng gửi lại nếu có cập nhật hoặc chỉ có tin nhắn
trống. Ở đây, mạng thậm chí còn tắc nghẽn hơn với các yêu cầu liên tục này, ngay
cả khi không có bản cập nhật.
Trong WebSockets, sẽ luôn có một kết nối TCP giữa clients và server. Có luồng dữ
liệu hai chiều giữa clients và server cũng như tính chất thời gian thực do luôn kết
nối TCP mở. Trong các phương thức, có tiềm năng rất lớn để tăng tốc độ trong
WebSockets. Dung lượng phần header của giao thức HTTP là 100 byte, trong khi
phần header của socket chỉ là 2 byte. Vì vậy, sau khi sử dụng HTTP ban đầu,
Sockets có thể giao tiếp với tài nguyên ít hơn nhiều. Với nhiều số lượng yêu cầu
được gửi đến thì nó cũng sẻ làm tăng thời gian phản hồi từ server tới clients.
Socket.io KHÔNG phải là phát triển dựa trên WebSocket. Mặc dù Socket.io thực
sự sử dụng WebSocket như một cách để giao tiếp trong một vài trường
hợp, Socket.io sẽ bổ sung một số siêu dữ liệu cho mỗi gói: loại gói, không gian tên
và id gói khi cần xác nhận thông báo. Đó là lý do tại sao máy khách WebSocket sẽ
không thể kết nối thành công với máy chủ Socket.io và máy khách Socket.io cũng
sẽ không thể kết nối với máy chủ WebSocket.
`
Hình 2.10 :Module máy tính nhúng Raspberry Pi 3B+
- Thông số kỹ thuật:
Vi xử lý: Broadcom BCM2837B0, quad-core A53 (ARMv8) 64-bit SoC @1.4GHz
RAM: 1GB LPDDR2 SDRAM
Kết nối: 2.4GHz and 5GHz IEEE 802.11 b/g/n/ac wireless LAN, Bluetooth 4.2,
BLE, Gigabit Ethernet over USB 2.0 (Tối đa 300Mbps).
Cổng USB: 4 x 2.0
Mở rộng: 40-pin GPIO
Video và âm thanh: 1 cổng full-sized HDMI, Cổng MIPI DSI Display, cổng MIPI
CSI Camera, cổng stereo output và composite video 4 chân.
Multimedia: H.264, MPEG-4 decode (1080p30), H.264 encode (1080p30);
OpenGL ES 1.1, 2.0 graphics
Lưu trữ: MicroSD
Nguồn điện sử dụng: 5V/2.5A DC cổng microUSB, 5V DC trên chân GPIO,
Power over Ethernet (PoE) (yêu cầu thêm PoE HAT)
- Hệ điều hành
Raspberry Pi 3B+ chủ yếu sử dụng hệ điều hành trên nhân Linux ngoài ra chúng
còn có thể được sử dụng trên rất nhiều hệ điều hành khác như Arch Linux ARM,
OpenELEC, Pidora, Raspbian, …
2.2.3. USB Camera
- Thông số kỹ thuật
Độ phân giải tối đa: 1.3MP chuẩn HD 720p
Loại tiêu cự: Lấy nét cố định
Công nghệ thấu kính: tiêu chuẩn
Micro tích hợp: đơn âm
Phạm vi quan sát: 60°
USB 2.0 tốc độ cao
- Tính năng
Với công nghệ Fluid Crytal cho hình ảnh rõ nét và trung thực Loại tiêu cự: Lấy nét
cố định.
Tự động cân bằng sáng.
Tương thích nhiều hệ điều hành: Windows, Linux, … và nhiều ứng dụng.
2.2.4. Cảm biến nhiệt độ:
- Cảm biến nhiệt độ LM35 có điện áp Analog đầu ra tuyến tính theo nhiệt độ thường
được sử dụng để đo nhiệt độ của môi trường hoặc theo dõi nhiệt độ của thiết bị,..., cảm
biến có kiểu chân TO-92 với chỉ 3 chân rất dễ giao tiếp và sử dụng.
- Thông số kỹ thuật:
Điện áp hoạt động: 4~20VDC
Công suất tiêu thụ: khoảng 60uA
Khoảng đo: -55°C đến 150°C
Điện áp tuyến tính theo nhiệt độ: 10mV/°C
Sai số: 0.25°C
Kiểu chân: TO92
Kích thước: 4.3 × 4.3mm
2.2.5. Cảm biến hồng ngoại :
- Cảm biến hồng ngoại khi hoạt động, tia hồng ngoại phát ra một tần số nhất định, khi
phát hiện hướng truyền có vật cản (mặt phản xạ), phản xạ vào đèn thu hồng ngoại, sau khi
so sánh, đèn màu xanh sẽ sáng lên đồng thời đầu cho tín hiệu số đầu ra (một tín hiệu
bậc thấp).
- Khoảng cách làm việc hiệu quả 2 ~ 5cm, điện áp làm việc là 3.3 V đến 5V. Độ nhạy
sáng của cảm biến được điều chỉnh bằng chiết áp, cảm biến dễ lắp ráp, dễ sử dụng,....
- Có thể được sử dụng rộng rãi trong robot tránh chướng ngại vật, xe tránh chướng ngại
vật và dò đường..
- Thông số kỹ thuật:
Bộ so sánh sử dụng LM393, làm việc ổn định
Điện áp làm việc: 3.3V - 5V DC.
Khi bật nguồn, đèn báo nguồn màu đỏ sáng.
Lỗ vít 3 mm, dễ dàng cố định, lắp đặt.
Kích thước: 3.2cm * 1.4cm
Các mô-đun đã được so sánh điện áp ngưỡng thông qua chiết áp, nếu sử dụng ở
chế độ thông thường, xin vui lòng không tự ý điều chỉnh chiết áp.
- Cổng giao tiếp :
VCC: điện áp chuyển đổi từ 3.3V đến 5V (có thể được kết nối trực tiếp đến vi
điều khiển 5V và 3.3V)
GND: GND ngoài
OUT: đầu ra kỹ thuật số (0 và 1)
2.2.6. Khối nguồn
- Raspberry Pi 3 có điện áp hoạt động ổn định: 5VDC, dòng điện 2A. Nên
nhóm sẽ dùng nguồn từ sạc dự phòng output 5VDC - 2A để cấp cho kit.
Chương tiếp theo CHƯƠNG 3 đi sâu vào nghiên cứu cách kết hợp các công nghệ và
thiết bị để tạo ra sản phẩm
Hình 3.1 :Minh họa các Feature trong một khung hình
- Ví dụ như bức ảnh trên , đặt ra bài toán phải tìm các khung hình A,B,C,D,E,F trong
bức ảnh tòa nhà lớn ấy . Có bao nhiêu kết quả đúng chính xác mà ta có thể tìm được ?
A, B : là những mặt phẳng , nó trải dài trên rất nhiều khu vực , Vì thế rất khó xác
định đúng chính xác
C ,D thì đơn giản hơn , nó là những cạnh của tòa nhà . Ta có thể ước chừng địa
điểm , nhưng để chính xác thì hơi khó . Bởi vì dọc theo cạnh dài ấy , no đều giống
nhau . Nhưng mà nếu so với A,B thì C,D dễ xác định hơn nhiều
E,F : là những góc của tòa nhà . Và chúng cực kì dễ để nhận ra . Do đó ta có thể
coi E,F là những đặc tính tốt ( good feature)
* Từ đây trở về sau sẽ dùng feature thay cho đặc tính
- Mục tiêu đồ án của nhóm em là xử lí ảnh để xác định các vật thể trên đường dây , Với
số vật thể N cho trước đều có hình ảnh xác định , đặt trong thư mục QueryImage . Do đó
ý tưởng đưa ra là tìm tất cả các Feature , được mô tả bằng KeyPoint Descriptor , cho N
vật thể xác định trước tất , cho tất cả vào một mảng . Từ camera thu được từng khung
hình , ta xử lí từng khung hình , rồi trích xuất các Feature , duyệt qua mảng chứa Feature
của vật thể cần xác định , nếu kết quả của lần lặp nào , So khớp giữa 2 feature lớn hơn
một ngưỡng (Threshold) cho trước , thì ta ghi nhận đó chính là vật thể ấy
Hình 3.2 :Lưu đồ thuật toán cho việc xác định vật thể
3.1.1. Các thuật toán giúp tìm ra Feature (biểu diễn bởi keypoint descriptor)
FAST Keypoint detector
- Đây là bộ Keypoint Detector đơn giản, trực quan và nhanh nhất. FAST được sử dụng
để xác định các corners (góc) của trong bức ảnh.
- Giả thuyết của FAST detector là, để một pixel P được coi là “corner” thì cần có ít nhất
n pixel liền kề cùng thuộc một đường tròn tâm P bán kính R có cường độ lớn hơn hoặc
nhỏ hơn center pixel P một giá trị T.
- Chúng ta có pixel trung tâm P=32, đường tròn tâm P bán kính R=3 gồm 16 pixel. Để
pixel P được coi là “corner” cần ít nhất n=12 pixels có cường độ lớn hơn (hoặc nhỏ hơn)
P một giá trị threshold T=16. Trong số 16 pixels này có đến 14 pixels có cường độ lớn
hơn P (màu xanh lá), như vậy có thể kết luận rằng P là một “corner”.
BRISK KEYPOINT DETECTOR
- Binary Robust Invariant Scalable Keypoint (BRISK) Detector là một bản nâng cấp của
FAST, cho phép detector hoạt động tốt khi space scale thay đổi (space scale invariance).
Hình 3.5.: Kim tự tháp chứa các bức ảnh đã được resize
- Thay vì chỉ làm việc trên một bức ảnh duy nhất như FAST, BRISK sẽ resize bức ảnh
input thành nhiều bức nhỏ hơn, xem hình 5.
- Với mỗi bức ảnh trong kim tự tháp trên, chúng ta sẽ áp dụng thuật toán của FAST
detector để tìm ra “corner”. Vì không yêu cầu tài nguyên tính toán lớn nên BRISK rất phù
hợp cho các ứng dụng real-time.
ORB KEYPOINT DETECTOR
- ORB Detector là một bản nâng cấp của BRISK, cho phép nó hoạt động tốt ngay cả khi
keypoint bị xoay (rotation invariance).
- Sau khi đã tìm ra tất cả “corner” trong tất cả các bức ảnh trong kim tự tháp, ORB sẽ
chọn ra tối đa 500 “corner” tốt nhất. Vùng pixel xung quanh từng “corner” này sẽ được
khảo sát để tìm ra “Trọng tâm của cường độ” (intensity centroid).
Moments:
Center of mass:
Keypoint dù có xoay một góc cũng sẽ
được phát hiện.
- Tương tự như FAST và BRISK, ORB detector rất phù hợp cho các ứng dụng real-
time.
Để tối ưu nhất , ta chọn thuật toán ORB KEYPOINT DETECTOR
3.1.2. Thuật toán giúp Matching Feautre:
- Ta dung Brute-Force Matcher , thuật toán đơn giản thực hiện bằng cách lấy từng
descriptor so sánh với nhau sử dụng việc tính toán khoảng cách , và cái gần nhất (tức là
khớp nhất) sẽ được trả về
3.1.3 : Áp dụng các thuật toán và công nghệ trên vào phần mềm OpenCV
- Do chúng ta cần xác định một số N vật thể cho trước ,tất cả đều được đặt vào thư mục
QueryImage , nên đầu tiên ta cần lấy từng ảnh , và tên của chúng ra , để tiện cho việc xác
định sau này
STT Dòng lệnh Chú thích
path = r'C:\Users\OS\Desktop\Flaskproject Đây là đường dẫn của thưa mục
1
\static\queryPictures1' chứ ảnh
Tạo mảng để lưu các bức ảnh (các
2 images = [] bức ảnh khi đọc vào sẽ ở dạng
mảng numpy)
Tạo mảng để lưu tên gọi phục vụ
3 classname = []
cho việc xác định vật thể sau này
Chuyển thành đường dẫn trong
4 myList = os.listdir(path) OS(Operation System) giúp máy
tính có thể hiểu được
Tạo object ORB với số feature tối
5 orb = cv2.ORB_create(nfeatures=1000)
đa là 1000
6 for cl in myList: Vòng lặp lần lượt qua từng ảnh
Tên của ảnh có 2 phần . Ví dụ
7 imgCur = cv2.imread(f'{path}/{cl}',0) Anh.jpg thì ta chỉ cần quan tâm
đến phần Anh , còn jpg thì không
<scriptsrc="//cdnjs.cloudflare.com/ajax/libs/socket.io/2.2.0/socket.io.js"integrity="sha
256-yr4fRk/GU1ehYJPAs8P4JlTgu0Hdsp4ZKrx8bDEDC3I="
crossorigin="anonymous"></script>
- Bằng cách lắng nghe tới sự kiện “Mess_from_server” , khi được gọi thì nó sẽ chuyển
data gửi lên từ Server , Giải nghĩa nó ra để chuyển từ JSON về Object bình thường , và
thay thế vào từng nội dung tương ứng
3.2.2 : Xây dựng giao diện người dùng (Client)
- Để xây dựng giao điện người dùng thuận tiện cho việc quản lý và giám sát, ta tạo ra
file index.html . Cấu trúc một file index.html như sau :
- Trong dự án chúng em chọn phương pháp truyền dữ liệu nối tiếp vì lượng dữ liệu
truyền đi không nhiều
- Trong dự án , nhóm em chọn các thông số mặc định của UART cho cả Arduino và
Raspberry, ngoại trừ việc khai báo baud rate là 9600 , còn lại là 8 bit trên 1 frame , No
parity và 1 bit stop
3.3.2. Lập trình truyền thông nối tiếp giữa Raspberry và Arduino:
- Lập trình Arduino
24 gpio.output(lui,0)
việc VƯƠNG
25 gpio.output(vuong,1)
Hình 4.3 : Nhận diện Chuỗi sứ đứng nếu robot cách xa chuỗi đứng
Hình 4.4 : Nhận diện Chuỗi sứ đứng nếu robot đứng gần chuỗi đứng
Hình 4.5: Hình ảnh hoàn chỉnh của khối xử lí trung tâm
4.2. Nhận xét :
- Hệ thống chạy ổn định , nhận diện tốt vật thể và chỉ ra rõ khoảng cách . Tui vậy , khả
nẵng nhận diện vật thể chỉ ở một khoảng cách nhất định , và khả năng truyền hình ảnh
còn bị delay quá nhiều . Nguyên nhân là do cấu hình của phiên bản máy tính Nhúng hiện
tại còn khá thấp . Trong tương lai nếu tiếp tục làm dự án thì nhóm sẽ cải thiện về việc lập
trình và cấu hình của Raspberry
KẾT LUẬN
Sau thời gian tìm tòi , học hỏi và nghiên cứu ,vận dụng hết các kiến thức chuyên nghành
đã được học như : Thiết kế , xây dựng hệ thông Scada , hệ thống thời gian thực ,… từ đó
nhóm đã thực hiện triển khai đề tài “Ứng dụng IoT điều khiển Robot ” , nhóm đã hoàn
thành mục tiêu đưa ra và đạt được các kết quả như sau :
Chế tạo thành công mô hình và hệ thống điều khiển cho robot
Xây dựng thành công hệ thống truyền nhận dữ liệu không dây giữa người giám sát
với bộ xử lí và giữa bộ xử lí với hệ thống giám sát
Xây dựng thành công các chương trình giám sát, quản lý và lưu trữ thông tin trạng
thái của robot khi robot đi vào hoạt động.
Việc thiết kế, chế tạo và kết nối thành công các module trong mô hình thực nghiệm đã
được thể hiện bằng việc bộ xử lí đã có thể nhận diện và đưa ra hành động tiếp theo của
robot chính xác
Các kết quả đạt được đã giải quyết được những vấn đề sau:
Mô hình thực nghiệm là sự tổng hợp của việc phân tích, xây dựng hệ thống mạng
truyền thông, tính toán. Đến tổng hợp và ứng dụng bộ điều khiển, qua đó giúp ta có cái
nhìn tổng quan, sinh động trong việc thiết kế, chế tạo một hệ thống điều khiển tự động.
Thấy được vai trò của các nội dung lý thuyết trong thực tế.
Thành công của đề tài đã đem lại cơ sở và tạo tiền đề cho việc nghiên cứu, chế tạo
các thiết bị điều khiển không dây khác.
PHỤ LỤC A
(Code WebServer)
self.stream = cv2.VideoCapture(src)
(self.grabbed,self.frame) = self.stream.read()
self.stopped = False
def start(self):
Thread(target=self.get,args=()).start()
return self
def get(self):
while not self.stopped:
if not self.grabbed:
self.stop()
else:
(self.grabbed,self.frame) = self.stream.read()
def stop(self):
self.stopped = True
class Videoshow:
def __init__(self, frame=None, thres=40, desList=None,classname=None):
self.imgGray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
(self.kp2, self.des2) = orb.detectAndCompute(self.imgGray, None)
self.bf = cv2.BFMatcher()
self.matchList = []
self.finalVal = -1
self.thres = thres
self.frame = frame
self.stopped = False
self.desList = desList
self.classNames=classname
def start(self):
Thread(target=self.show,args=()).start()
return self
def show(self):
while not self.stopped:
try:
for self.des in self.desList:
return desList
desList = findDes(images)
print(classname)
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
app.debug =False
app.threaded = True
socketio =
SocketIO(app,async_mode='threading',cors_allowed_origins="*",engineio_logger=True,l
ogger=True)
id = -1
def gen_frames(src=0):
video_getter = Videoget(src).start()
video_shower = Videoshow(video_getter.frame, 40, desList,classname).start()
while 1:
if video_getter.stopped or video_shower.stopped:
video_shower.stop()
video_getter.stop()
video_getter.stream.release()
cv2.destroyAllWindows()
break
video_shower.frame = video_getter.frame
global id
id = video_shower.find()
video_shower.imgGray = cv2.cvtColor(video_getter.frame,
cv2.COLOR_BGR2GRAY)
(video_shower.kp2, video_shower.des2) =
orb.detectAndCompute(video_shower.imgGray, None)
video_shower.bf = cv2.BFMatcher()
if not video_getter.grabbed:
break
else:
ret,buffer = cv2.imencode('.jpg',video_shower.frame)
frame = buffer.tobytes()
yield(b'--frame\r\n'
b'Content-Type:image/jpeg\r\n\r\n'+frame+b'\r\n')
@app.route('/')
def index():
return render_template('index.html')
@app.route('/video_feed')
def video_feed():
return Response(gen_frames(),mimetype='multipart/x-mixed-replace;boundary=frame')
@socketio.on('guidi')
def handle_request(data):
dulieudualen = json.loads(dulieu)
if(ser.in_waiting>0):
line = ser.readline()
temp = line.split('|')[0]
dis = line.split('|')[1]
dulieudualen['Nhietdo'] = temp
if id==-1:
dulieudualen['tendoituong'] = 'ĐƯỜNG DÂY'
else:
dulieudualen['tendoituong'] = classname[id]
if classname[id]=='chuoisuneo':
gpio.output(dung,1)
gpio.output(lui,0)
gpio.output(vuong,0)
if classname[id]=='chuoisudung':
dulieudualen['cambien'] = dis
if dis == 1:
gpio.output(dung,0)
gpio.output(lui,1)
gpio.output(vuong,0)
else:
gpio.output(dung,0)
gpio.output(lui,0)
gpio.output(vuong,1)
)
print('on guidi-')
socketio.emit('mess_from_server',json.dumps(dulieudualen))
if __name__ == '__main__':
socketio.run(app)
PHỤ LỤC B
(Code giao diện)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>DATN</title>
<link rel="shortcut icon" type="image/x-icon"
href="{{url_for('static',filename='Pictures/bachkhoa.ico')}}">
<link rel="stylesheet" href="{{url_for('static',filename='css/main.css')}}">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-
awesome/4.7.0/css/font-awesome.min.css">
<script
src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/socket.io/2.2.0/socket.io.js"
integrity="sha256-yr4fRk/GU1ehYJPAs8P4JlTgu0Hdsp4ZKrx8bDEDC3I="
crossorigin="anonymous"></script>
<script defer>
var socket = io.connect('http://127.0.0.1:5000');
i = 0;
socket.on('connect', function() {
console.log('socket connected');
})
socket.emit('guidi',i);
console.log('abc');
setInterval(function(){
console.log('interval');
socket.emit('guidi',i);
}
,1000);
socket.on('mess_from_server',(msg)=>{
if (JSON.parse(msg)["tendoituong"]=="chuoisuneo"){
$('.object').html('CHUỖI SỨ NÉO');
$('.objecthanhdong').html('DỪNG LẠI');
}
else if (JSON.parse(msg)["tendoituong"]=="khungdinhvi"){
$('.object').html('KHUNG ĐỊNH VỊ');
$('.objecthanhdong').html('CHẠY QUA');
}
else if (JSON.parse(msg)["tendoituong"]=="chuoisudung"){
$('.object').html('CHUỖI SỨ ĐỨNG');
if (JSON.parse(msg)["cambien"]==0){
$('.objecthanhdong').html('VƯƠNG BƯỚC');
}
else{
$('.objecthanhdong').html('LÙI BƯỚC');
}
}
else {$('.object').html(JSON.parse(msg)["tendoituong"]);
$('.objecthanhdong').html('ĐI TIẾP');
}
if (JSON.parse(msg)["Nhietdo"]>40){
$('.objecttemp').html('Cảnh báo nhiệt độ');}
else {$('.objecttemp').html(JSON.parse(msg)["Nhietdo"]);}
})
</script>
</head>
<body>
<div class="container">
<img src="{{url_for('static',filename='Pictures/daihocbachkhoa.jpg')}}"
class="anh1">
<img src="{{url_for('static',filename='Pictures/logo khoadien.png')}}"
class="anh2">
<!-- <div class="thongtin1" style="color:rgb(39, 105, 67);">
ĐẠI HỌC ĐÀ NẴNG<br>
TRƯỜNG ĐẠI HỌC BÁCH KHOA<br>
KHOA ĐIỆN </div> -->
<div class="thongtin2" style="color:rgb(39, 105, 67);">
<div class="thongtin21">ĐỒ ÁN TỐT NGHIỆP NĂM 2020</div>
<div class='thongtin212'>
<div class="thongtin22">
ĐỀ TÀI<br>
SVTH<br>
GVHD
</div>
<div class="thongtin23">
:<br>:<br>:
</div>
<div class="thongtin24">
<em>ỨNG DỤNG IOT ĐIỀU KHIỂN ROBOT</em><br>
TRƯƠNG ĐÌNH THÀNH NGUYÊN - TRẦN TUẤN THÀNH<br>
<div class='hanhdong'>
<p class="subjecthanhdong">HÀNH ĐỘNG:</p>
<p class="objecthanhdong">None</p>
</div>
</div>
<div class="footer">
<div class='footer-left'>
<h3>ĐỒ ÁN TỐT NGHIỆP</h3>
<!-- <div class='footer-links'>
<a href="#" class="link1">HOME</a>
<a href="#">HELP</a>
<a href="#">ABOUT</a>
<a href="#">CONTACT</a>
</div> -->
<p class="footer-copyright">
Copyright© 2020 Thành Nguyên - Tuấn Thành
</p>
</div>
<div class="footer-center">
<div>
<i class='fa fa-map-marker'></i>
<p>Hòa Khánh Bắc, Quận Liên Chiểu , Đà Nẵng</p>
</div>
</div>
<div class='social'>
<div class='footer-social'>
<a href='#'><i class='fa fa-facebook'></i></a>
PHỤ LỤC C
(Code Arduino)
float temp;
int dung = 7;
int cambien = 4;
char inputstring;
void setup(){
Serial.begin(9600);
pinMode(cambien,INPUT_PULLUP);
}
void loop(){
int reading = analogRead(A0);
float voltage = reading * 5.0 / 1024.0;
float temp = voltage*100.0;
if (digitalRead(cambien)==0){
Serial.println(String(temp)+String("|")+String(1));
}
else{
Serial.println(String(temp)+String("|")+String(0));
}
delay(1000);
}