BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
---------------------------------------
VŨ TIẾN ĐẠT
HỆ THỐNG BÁO ĐỘNG TẠI GIÀ N THÉP ĐỖ XE
LUẬN VĂN THẠC SĨ KỸ THUẬT
Chuyên ngành: Kỹ thuật Điện tử
Hà Nội – Năm 2017
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
---------------------------------------
VŨ TIẾN ĐẠT
HỆ THỐNG BÁO ĐỘNG TẠI GIÀ N THÉP ĐỖ XE
Chuyên ngành: Kỹ thuật Điện tử
LUẬN VĂN THẠC SĨ KỸ THUẬT
Chuyên ngành: Kỹ thuật Điện tử
NGƯỜI HƯỚNG DẪN:
TS. Đặng Quang Hiếu
Hà Nội – Năm 2017
MỤC LỤC
Trang
Trang phụ bìa
Lời cam đoan
Danh mục các chữ viết tắt
MỞ ĐẦU.................................................................................................................................... 1
Chương I: TỔNG QUAN ......................................................................................................... 5
1.1. Tổng quan về thư viện Open CV và xử lý ảnh ................................................................. 5
1.1.1. Tổng quan về thư viện Open CV .................................................................. 5
1.1.2. Các ứng dụng của Open CV ......................................................................... 5
1.1.3. Các chức năng của Open CV ........................................................................ 6
1.2. Tổng quan về ngôn ngữ lập trình Python .......................................................................... 7
1.2.1. Ngôn ngữ lập trình Python là gì ................................................................... 7
1.2.2. Các đặc điểm của Python.............................................................................. 8
1.2.3. Lịch sử vắn tắt của Python ........................................................................... 8
1.3. Tổng quan về module Sim 900a và vi điều khiển Atmega328 ..................................... 10
1.3.1. Tổng quan về module Sim 900a ................................................................. 10
1.3.2. Tập lệnh AT điều khiển hoạt động của module sim 900a trong môi trường
Arduino IDE ......................................................................................................... 11
1.3.3. Tổng quan về vi điều khiển Atmega328..................................................... 13
1.4. Giới thiệu về module thu phát Rf và ứng dụng của nó .................................................. 16
1.4.1. Module thu sóng Rf 4 kênh ........................................................................ 16
1.4.2. Tay phát Rf 4 kênh ..................................................................................... 17
1.5. Chuẩn truyển thông Uart và giao tiếp máy tính với board mở rộng ............................. 18
1.5.1. Chuẩn truyền thông Uart ............................................................................ 18
1.5.2. Giao tiếp máy tính và board mở rộng ......................................................... 19
1.6. Giới thiệu về Arduino IDE và cách lập trình cho vi điều khiển Atmega328................ 20
1.6.1. Giới thiệu về Arduino IDE ......................................................................... 20
1.6.2. Cách lập trình vi điều khiển sử dụng Arduino IDE .................................... 21
Chương II: THIẾT KẾ HỆ THỐNG...................................................................................... 22
2.1. Chế tạo board mở rộng với module sim và vi điều khiển Atmega328 ......................... 22
2.1.1. Thiết kế sơ đồ khối và sơ đồ nguyên lý ...................................................... 22
2.1.1.1. Khối vi điều khiển trung tâm .............................................................. 22
2.1.1.2. Khối điều khiển rơ le ........................................................................... 23
2.1.1.3. Khối điều khiển còi chip ..................................................................... 24
2.1.1.4. Mạch Reset .......................................................................................... 24
2.1.1.5. Khối ngõ vào ....................................................................................... 25
2.1.1.6. Khối đọc tín hiệu modul rf .................................................................. 25
2.1.1.7. Khối module sim 900 .......................................................................... 26
2.1.1.8. Khối hiển thị lên màn hình Lcd16*02................................................. 26
2.1.1.9. Khối nguồn .......................................................................................... 27
2.1.1.10 Thiết kế mạch in cho board mở rộng ................................................. 28
2.2. Lập trình cho board mở rộng ........................................................................................... 32
2.2.1. Xây dựng lưu đồ thuật toán ........................................................................ 32
2.2.2. Lập trình cho vi điều khiển ......................................................................... 33
2.3. Lập trình xử lý ảnh trên máy tính .................................................................................... 38
2.3.1. Phương pháp xử lý và nhận dạng hình ảnh sử dụng thư viện OpenCV ..... 38
2.3.1.1. Lấy dữ liệu ảnh đầu vào ...................................................................... 39
2.3.1.2. Nhị phân hóa ảnh................................................................................. 40
2.3.1.3. Nội suy ảnh.......................................................................................... 42
2.3.1.4. Tính toán kết quả ................................................................................. 42
2.3.2. Lý thuyết so sánh 2 bức ảnh nhằm phát hiện chuyển động............................ 43
2.3.3. Xây dựng lưu đồ thuật toán ........................................................................ 47
2.3.3. Lập trình chương trình sử dụng ngôn ngữ Python ..................................... 47
Chương III: KẾT QUẢ HỆ THỐNG; ................................................................................... 51
HÌNH ẢNH HỆ THỐNG TRONG THỰC TẾ VÀ NHẬN XÉT CỦA ĐƠN VỊ SỬ
DỤNG....................................................................................................................................... 51
KẾT LUẬN.............................................................................................................................. 56
TÀI LIỆU VÀ HÌNH ẢNH THAM KHẢO......................................................................... 58
LỜI CAM ĐOAN
Tôi đã đọc và hiểu về các hành vi vi phạm sự trung thực trong học thuật. Tôi
cam kết bằng danh dự cá nhân rằng nghiên cứu này do tôi tự thực hiện và không vi
phạm yêu cầu về sự trung thực trong học thuật.
Tôi xin cam đoan luận văn: “HỆ THỐNG BÁO ĐỘNG TẠI GIÀN THÉP
ĐỖ XE” là nghiên cứu của tôi, các số liệu và kết quả nêu trong luận văn là trung
thực và chưa từng được ai công bố trong bất kỳ công trình nào khác.
Tác giả luận văn
Vũ Tiến Đạt
DANH MỤC CÁC CHỮ VIẾT TẮT
Nghĩa tiếng Anh
Từ viết tắt
Nghĩa tiếng Việt
MCU
Microcontroller Unit
Vi điều khiển
Uart
Universal asynchronous
Giao tiếp truyền nhận không
receiver-transmitter
đồng bộ
CMD
Command
Câu lệnh
GSM
Global System for Mobile
Hệ thống thông tin di động toàn
Communications
cầu
RF
Radio Frequency
Tần số vô tuyến
Sw
Switch
Nút nhấn
ATC
AT Command
Tập lệnh AT
DANH MỤC HÌNH VẼ
Hình 1.1 Logo của thư viện Open CV [1] .................................................................. 5
Hình 1.2 Ứng dụng đếm xe trên quốc lộ bằng Open CV [2] ...................................... 6
Hình 1.3 Ứng dụng nhận dạng biển số xe dùng Open CV [3].................................... 6
Hình 1.4 Logo ngôn ngữ lập trình Python [4] ............................................................ 8
Hình 1.5 Môi trường lập trình Python GUI [5] .......................................................... 9
Hình 1.6 Môi trường lập trình Python CMD [6] ........................................................ 9
Hình 1.7 Hình ảnh thực tế module sim 900a và sơ đồ chân kết nối [7] ................... 10
Hình 1.8 Sơ đồ chân Atmega328 [8] ........................................................................ 14
Hình 1.9 Hình ảnh thực tế của vi điều khiển Atmega328 ở dạng Smd và Dip [9] ... 15
Hình 1.10 Sơ đồ chân Atmega328 Smd [10] ............................................................ 16
Hình 1.11 Module thu sóng Rf 4 kênh [11] .............................................................. 16
Hình 1.12 Form dữ liệu truyền Uart cơ bản [12] ...................................................... 18
Hình 1.13 Usb to Uart sử dụng chip PL2303 [13] .................................................... 19
Hình 1.14 Cửa sổ làm việc của Arduino IDE [14] ................................................... 20
Hình 1.15 Chương trình Blink chớp tắt 1 led theo chu kì 1s [15] ............................ 21
Hình 2.1 Sơ đồ khối của board mở rộng ................................................................... 22
Hình 2.2 Khối vi điều khiển trung tâm Atmega 328 ................................................ 23
Hình 2.3 Khối điều khiển rơ le ................................................................................. 23
Hình 2.4 Mạch điều khiển còi chip ........................................................................... 24
Hình 2.5 Mạch Reset................................................................................................. 24
Hình 2.6 Khối ngõ vào .............................................................................................. 25
Hình 2.7 Khối thu tín hiệu Rf ................................................................................... 25
Hình 2.8 Khối Module Sim900 ................................................................................. 26
Hình 2.9 Khối hiển thị lên màn hình Lcd16*02 ....................................................... 26
Hình 2.10 Khối nguồn 5V......................................................................................... 27
Hình 2.11 Sơ đồ nguyên lý mạch mở rộng sử dụng module sim ............................. 28
và vi điều khiển Atmega328 ..................................................................................... 28
Hình 2.12 Đặt luật khoảng cách giữa 2 đường dây nhỏ nhất ................................... 30
Hình 2.13 Đặt luật độ rộng đường dây nhỏ nhất ...................................................... 30
Hình 2.14 Đặt luật khoảng cách nhỏ nhất giữa đường mạch và lớp phủ đồng ........ 31
Hình 2.15 Mạch in sau khi thiết kế ........................................................................... 32
Hình 2.16 Lưu đồ thuật toán xử lý trên vi điều khiển Atmega328 ........................... 33
Hình 2.17 Ảnh gốc khi chưa sử dụng thuật toán nhị phân [16] ................................ 44
Hình 2.18 Ảnh sau khi được nhị phân bằng cách đổi hệ mầu [17]........................... 44
Hình 2.19 Vẽ khung bảo vệ bên trong ảnh [18]........................................................ 45
Hình 2.20 Xác định các vật chuyển động trong khung bảo vệ [19] ......................... 46
Hình 2.21 Bỏ qua các vật chuyển động có diện tích nhỏ hơn S ngưỡng [20] .......... 46
Hình 2.22 Lưu đồ thuật toán xử lý ảnh trên máy tính .............................................. 47
Hình 3.1 Giàn thép đỗ xe cao tầng tại phố Nguyễn Công Hoan – TP. Hà Nội [21] 51
Hình 3.2 Lắp đặt hệ thống báo động tại giàn thép đỗ xe Phố Nguyễn Công Hoan .. 52
Hình 3.3 Giả nghiệm khi có đồ vật chuyển động vào vùng cảnh báo ...................... 52
(để hạn chế báo động giả) ......................................................................................... 52
Hình 3.4 Hệ thống hoạt động khi có người đi vào vùng cảnh báo ........................... 53
MỞ ĐẦU
1. Lý do chọn đề tài
Xã hội phát triển kéo theo sự đi lên không ngừng nghỉ của những thành tựu
khoa học kĩ thuật. Nhằm tối ưu hóa quá trình sản xuất và đem lại những tiện nghi
tốt nhất cho con người thì công nghệ cũng từng bước phát triển tương xứng, song
song với sự phát triển của công nghệ và khoa học kĩ thuật thì của cải thặng dư và
tích lũy của mỗi cá nhân tập thể ngày càng nhiều thêm.
Trong cuộc sống hiện đại ngày nay, khi những thành tựu khoa học kĩ thuật
ngày càng len lỏi vào sâu trong cuộc sống thì việc ứng dụng các thiết bị điện điện tử
vào các lĩnh vực dân dụng đã trở nên rất cần thiết. Nắm bắt được hướng đi đó, các
nhà sản xuất đã tung ra thị trường rất nhiều sản phẩm với mục đích phục vụ cuộc
sống con người ngày một tiện nghi, an toàn hơn.
Để đảm bảo an toàn cho tính mạng và tài sản của con người, các nhà sản xuất
đã cho ra đời rất nhiểu sản phẩm với mục đích phòng chống và cảnh báo con người
trước các nguy cơ mất tài sản. Sự ra đời của các thiết bị chống trộm cũng như bảo vệ
là minh chứng cho điều đó. Chính vì vậy, em đã chọn đề tài tốt nghiệp của mình “Hệ
thống báo động tài giàn thép đỗ xe”.
Tham khảo các hệ thống chống trộm trên thị trường, em nhận ra các hệ thống
này đều có ưu nhược điểm riêng biệt và nắm lấy nhu cầu bức thiết của thị trường,
em đã mạnh dạn chọn đề tài đồ án của mình và thiết kế hệ thống chống trộm dùng
xử lý ảnh và cảnh báo qua điện thoại (tin nhắn hoặc gọi điện) với mục đích tạo ra
một sản phẩm thiết thực và hữu ích. Đề tài này cũng nhằm mục đích áp dụng các
kiến thức điện - điện tử - lập trình đã được học vào trong thực tế.
Trong quá trình thực hiện đề tài em rất cảm ơn sự hướng dẫn nhiệt tình của
TS. Đă ̣ng Quang Hiế u và TS. Nguyễn Phan Kiên cũng như sự tư vấn của các thầy
cô trong viện Điện tử - Viễn thông. Vì thời gian dành cho đề tài không quá nhiều
cũng như là do lần đầu nghiên cứu nên đề tài sẽ không tránh khỏi một số vấn đề và
chưa được hoàn thiện một cách tốt nhất nên em rất mong nhận được sự đóng góp
quý báu của quý thầy cô và các bạn đọc luận văn này.
Em xin chân thành cảm ơn!
1
2. Mục đích nghiên cứu của luận văn
Trên cơ sở nội dung nghiên cứu, mục đích của luận văn bao gồm:
- Tìm hiểu và nghiên cứu các phương pháp cảnh báo chống trộm trong các bãi
đỗ xe
- Tìm hiểu và so sánh các phương pháp tách và xử lý hình ảnh ứng dụng thư
viện xử lý ảnh OpenCV
- Nghiên cứu tìm ra các giải pháp báo động khi có xâm nhập sử dụng sóng Gms
với module sim gửi tin nhắn cảnh báo lên số điện thoại người sử dụng
- Triển khai và phát triển đề tài từng bước hoàn thiện cho ra sản phẩm thực tế
3. Đối tượng, phạm vi nghiên cứu
- Đối tượng nghiên cứu là thuật toán xử lý ảnh sử dụng thư viện Open CV và
thiết kế mạch điện tử với mục đích báo động xâm nhập
- Phạm vi nghiên cứu là các giải thuật đã được công bố và các đoạn code mẫu
của nhà sản xuất
4. Phương pháp nghiên cứu
Trên thị trường hiện lưu hành rất nhiều hệ thống chống trộm và ta có thể liệt
kê được một số công nghệ chống trộm phổ biến như sau:
-
Chống trộm sử dụng tia laze và hệ thống cảnh báo qua còi báo
-
Hệ thống chống trộm sử dụng cảm biến hồng ngoại nhận diện trong đêm tối
-
Hệ thống chống trộm sử dụng cảm biến thân nhiệt
-
Hệ thống chống trộm sử dụng camera xử lý ảnh và cảnh báo qua còi báo
Trong quá trình thực hiện nghiên cứu, các phương pháp đã được sử dụng để
thực hiện các yêu cầu chức năng hệ thống đề ra bao gồm:
-
Phương án 1: Sử dụng hồng ngoại dải để chặn các đường bao xung quanh khu
giàn thép để xe
-
Phương án 2: sử dụng camera để theo dõi và thực hiện xây dựng phần mềm
cảnh báo
Tuy nhiên, trong quá trình thực hiện nghiên cứu, giải pháp của Phương án 1 là
không thành công do ảnh hưởng nhiễu ánh sáng, không ghi lại hình ảnh thời điểm
2
đối tượng xâm nhập và bài toán kinh tế không hợp lý. Mỗi hệ thống đều có ưu và
nhược điểm riêng, nhằm tìm ra một giải pháp phù hợp với tình hình thực tiễn và khả
năng phát triển về sau, em đã đi sâu phân tích và nhận ra hệ thống chống trộm sử
dụng camera xử lý ảnh và cảnh báo qua điện thoại, còi, đèn báo gần như đáp ứng
đầy đủ các yêu cầu thực tiễn. Xác định được điều này em đã quyết định thực hiện
phương án 2, phát triển hệ thống cảnh báo này và chọn đây là đề tài tốt nghiệp của
mình.
Sau quá trình xây dựng đề tài và tìm hiểu hệ thống, em đã xây dựng được một
hệ thống với các chức năng chính sau:
-
Cảnh báo xâm nhập vào vùng bảo vệ
-
Thay đổi kích thước vùng bảo vệ mỗi lần khởi động
-
Bảo vệ được nhiều vùng khác nhau tương ứng với nhiều camera
-
Tiến hành cảnh báo bằng tin nhắn và còi báo mỗi lần có xâm nhập
-
Tiến hành vô hiệu hóa cảnh báo bằng bộ điều khiển Rf
Hệ thống xây dựng được có những đặc điểm nổi trội so với các hệ thống
chống trộm hiện có trên thị trường như sau:
-
Khả năng phát hiện chính xác các vật thể xâm nhập
-
Có khả năng làm việc ban đêm với camera hồng ngoại
Khả năng báo động bằng tin nhắn áp dụng với trường hợp chủ nhân không có
tại hiện trường. Đặc biệt, có khả năng phát triển về sau như: phát hiện chỗ đỗ xe
trống, đếm lượt xe ra vào bến đỗ xe, phân loại xe,… với những tính năng trên, em
hi vọng hệ thống này sẽ được áp dụng rộng rãi trong thực tế.
5. Bố cục luận văn
Ngoài phầ n mở đầ u, kế t luâ ̣n, danh mu ̣c tài liê ̣u tham khảo, danh mục hình vẽ,
luâ ̣n văn gồ m 03 chương:
Chương 1 - Tổng quan: trình bày các lý thuyết tổng quan về:Thư viện Open
CV, các ứng dụng của Open CV, các chức năng của Open CV; Ngôn ngữ lập
trình Python, các đặc điểm của Python, lịch sử vắn tắt của Python; Module
Sim 900a, tập lệnh AT điều khiển hoạt động của module sim 900a trong môi
3
trường Arduino IDE, vi điều khiển Atmega 328; Module thu sóng Rf 4 kênh,
tay phát Rf 4 kênh; Chuẩn truyền thông Uart và giao tiếp máy tính với board
mở rộng; Giới thiệu Arduino IDE, cách lập trình vi điều khiển sử dụng
Arduino IDE.
Chương 2 –Thiết kế hệ thống: chế tạo board mở rộng với module sim và vi
điều khiển Atmega 328; Lập trình board mở rộng; Lập trình xử lý ảnh trên
máy vi tính.
Chương 3 - Kết quả và bàn luận: trình bày các kết quả hệ thống báo động,
hình ảnh lắp đặt, sử dụng thực tế và đánh giá, nhận xét về sản phẩm của
người sử dụng.
4
Chương I: TỔNG QUAN
Do trong nội dung luận văn, chủ yếu sử dụng các công cụ xử lý ảnh và xử lý
camera nên trong phần cơ sở lý thuyết này, các nội dung liên quan tới các công cụ
ứng dụng trong quá trình thiết kế sẽ được sử dụng để giới thiệu làm cơ sở lý thuyết
trước khi đưa vào nghiên cứu.
1.1. Tổng quan về thư viện Open CV và xử lý ảnh
1.1.1. Tổng quan về thư viện Open CV
OpenCV là một thư viện mã nguồn mở hàng đầu cho thị giác máy tính
(computer vision), xử lý ảnh và máy học, và các tính năng tăng tốc GPU trong hoạt
động thời gian thực [1].
OpenCV được phát hành theo giấy phép BSD, do đó nó hoàn toàn miễn phí
cho cả học thuật và thương mại. Nó có các interface C++, C, Python, Java và hỗ trợ
Windows, Linux, Mac OS, iOS và Android. OpenCV được thiết kế để tính toán
hiệu quả và với sự tập trung nhiều vào các ứng dụng thời gian thực. Được viết bằng
tối ưu hóa C/C++, thư viện có thể tận dụng lợi thế của xử lý đa lõi. Được sử dụng
trên khắp thế giới, OpenCV có cộng đồng hơn 47 nghìn người dùng và số lượng
download vượt quá 6 triệu lần. Phạm vi sử dụng từ nghệ thuật tương tác, cho đến
lĩnh vực khai thác mỏ, bản đồ trên web hoặc công nghệ robot [6].
Hình 1.1 Logo của thư viện Open CV [1]
1.1.2. Các ứng dụng của Open CV
OpenCV đang được sử dụng rộng rãi trong các ứng dụng bao gồm [6]:
- Hình ảnh street view
5
- Kiểm tra và giám sát tự động
- Robot và xe hơi tự lái
- Phân tích hình ảnh y tế
- Tìm kiếm và phục hồi hình ảnh/video
- Phim - cấu trúc 3D từ chuyển động
- Nghệ thuật sắp đặt tương tác[1]
Một số hình ảnh ứng dụng của thư viện Open CV:
Hình 1.2 Ứng dụng đếm xe trên quốc lộ bằng Open CV [2]
Hình 1.3 Ứng dụng nhận dạng biển số xe dùng Open CV [3]
1.1.3. Các chức năng của Open CV
6
Xử lý và hiển thị hình ảnh, video
Phát hiện các vật thể, xây dựng hình ảnh 2D
Phát hiện vật thể 3D, biên tập video
Nhiếp ảnh máy tính, xử lý video tự động
Máy học và ngôn ngữ máy
Công nghệ CUDA giúp tăng tốc GPU-CPU
Với Open CV, có thể thực hiện được các phép xử lý ảnh từ cơ bản đến phức tạp
và hoàn thành nhiều vấn đề xảy ra trong cuộc sống. Thư viện Open CV hỗ trợ rất
nhiều ngôn ngữ lập trình thông dụng như: C#, C++, Python hay Java đảm bảo môi
trường lập trình tốt nhất cho người lập trình[9].
Ở phạm vi đề tài này, ta đi sâu phân tích việc lập trình hệ thống xử lý ảnh sử
dụng Open CV và ngôn ngữ lập trình Python[1].
1.2. Tổng quan về ngôn ngữ lập trình Python
1.2.1. Ngôn ngữ lập trình Python là gì
Python là một ngôn ngữ lập trình bậc cao, thông dịch, hướng đối tượng, đa mục
đích và cũng là một ngôn ngữ lập trình động.
Cú pháp của Python là khá dễ dàng để học và ngôn ngữ này cũng mạnh mẽ và
linh hoạt không kém các ngôn ngữ khác trong việc phát triển các ứng dụng. Python
hỗ trợ mẫu đa lập trình, bao gồm lập trình hướng đối tượng, lập trình hàm và mệnh
lệnh hoặc là các phong cách lập trình theo thủ tục.
Python không chỉ làm việc trên lĩnh vực đặc biệt như lập trình web và đó là tại sao
ngôn ngữ này là đa mục đích bởi vì nó có thể được sử dụng với web, enterprise, 3D
CAD,… [10].
Không cần sử dụng các kiểu dữ liệu để khai báo biến bởi vì kiểu của nó là
động, vì thế có thể viết a=15 để khai báo một giá trị nguyên trong một biến.
Với Python, việc phát triển ứng dụng và debug trở nên nhanh hơn bởi vì không
cần đến bước biên dịch và chu trình edit-test-debug của Python là rất nhanh [2].
7
Hình 1.4 Logo ngôn ngữ lập trình Python [4]
1.2.2. Các đặc điểm của Python
Dưới đây là một số đặc điểm chính của Python [10]:
Dễ dàng để sử dụng: Python là một ngôn ngữ bậc cao rất dễ dàng để sử
dụng. Python có một số lượng từ khóa ít hơn, cấu trúc của Python đơn giản
hơn và cú pháp của Python được định nghĩa khá rõ ràng, … Tất cả các điều
này là Python thực sự trở thành một ngôn ngữ thân thiện với lập trình viên.
Có thể đọc code của Python khá dễ dàng. Phần code của Python được định
nghĩa khá rõ ràng và rành mạch.
Python có một thư viện chuẩn khá rộng lớn. Thư viện này dễ dàng tương
thích và tích hợp với UNIX, Windows và Macintosh.
Python là một ngôn ngữ thông dịch. Trình thông dịch thực thi code theo
từng dòng (không cần phải biên dịch ra file chạy), điều này giúp cho quá
trình debug trở nên dễ dàng hơn và đây cũng là yếu tố khá quan trọng giúp
Python thu hút được nhiều người học và trở nên khá phổ biến.
Python cũng là một ngôn ngữ lập trình hướng đối tượng. Ngoài ra, Python
còn hỗ trợ các phương thức lập trình theo hàm và theo cấu trúc.
Ngoài các đặc điểm trên, Python còn khá nhiều đặc điểm khác như hỗ trợ lập
trình GUI, mã nguồn mở, có thể tích hợp với các ngôn ngữ lập trình khác, …
1.2.3. Lịch sử vắn tắt của Python
8
Python được phát triển bởi Guido Van Rossum vào cuối những năm 80 và
đầu những năm 90 tại Viện toán-tin ở Hà Lan. Python kế thừa từ nhiều ngôn ngữ
như ABC, Module-3, C, C++, Unix Shell, …
Ngôn ngữ Python được cập nhật khá thường xuyên để thêm các tính năng và hỗ trợ
mới. Phiên bản mới nhất hiện nay của Python là Python 3.3 được công bố vào
29/9/2012 với nguyên tắc chủ đạo là "bỏ cách làm việc cũ nhằm hạn chế trùng lặp
về mặt chức năng của Python" [10].
Hình 1.5 Môi trường lập trình Python GUI [5]
Hình 1.6 Môi trường lập trình Python CMD [6]
9
1.3. Tổng quan về module Sim 900a và vi điều khiển Atmega328
1.3.1. Tổng quan về module Sim 900a
Hình 1.7 Hình ảnh thực tế module sim 900a và sơ đồ chân kết nối [7]
VCC: Nguồn vào 5V.
TXD: Chân truyền Uart TX.
RXD: Chân nhận Uart RX.
Headphone: Chân phát âm thanh.
Microphone: Chân nhận âm thanh (phải gắn thêm Micro từ GND vào chân
này thì mới thu được tiếng).
GND: Chân Mass, cấp 0V.
Sim900A là một thiết bị GSM/GPRS (nó cũng được gọi là một module
sim900A) với thiết kế nhỏ gọn được ứng dụng rộng rãi trong ngành điện tử.
Sim 900A hoạt động ở 2 tần số: GSM EGSM: 900 MHz; DCS: 1800 MHz
như là một thiết bị đầu cuối với chíp xử lý 1 lõi công suất mạnh mẽ, tăng cường các
tính năng quan trọng trong nền vi xử lý ARM926EJ-S [11].
10
Module GSM/GPRS Sim900A là một module GSM/GPRS hỗ trợ người
dùng có thể khai thác được tính năng của SIM900a .
1.3.2. Tập lệnh AT điều khiển hoạt động của module sim 900a trong môi
trường Arduino IDE
- HGSM.init()
Là lệnh KHỞI TẠO chỉ được đặt trong hàm void setup(), có 2 cách khai báo:
HGSM.init(&GSM_Ready, baudrate, countryCode)
HGSM.init(&GSM_Ready, baudrate)
o
&GSM_Ready là hàm được gọi mỗi khi module GSM gửi dữ liệu về
board Arduino một cách tự động.
o
baudrate: Tốc độ baud của module GSM.
o
Kiểu dữ liệu: long.
countrycode: Mã quốc gia (kiểu dữ liệu là String). Nếu không khai
báo phần này chương trình sẽ mặc định countryCode là “+84” (ở Việt
Nam ).
o
Kiểu dữ liệu: String
VD:HGSM.init(&GSM_Ready,
9600)
hoặc HGSM.init(&GSM_Ready,
9600, “+84”).
- HGSM.atcm()
Là lệnh gửi tập lệnh AT cho Module Sim, cấu trúc lệnh:
HGSM.atcm(“tập lệnh AT của Sim”);
VD: HGSM.atcm(“AT”);
Để có thể thấy dữ liệu phản hồi từ Module Sim truyền từ Arduino lên máy
tính, các cần thêm lệnh Serial.println() như sau vào hàm GSM_Ready():
- HGSM.delay()
11
Là lệnh giúp trì hoãn một thời gian (thay thế lệnh delay cơ bản của Arduino)
để khi trì hoãn vẫn có thể xử lý dữ liệu từ GSM truyền về, lưu ý lệnh này và cả lệnh
delay() của Arduino không được sử dụng trong hàm GSM_Ready(), cấu trúc lệnh:
HGSM.delay(thời gian tính bằng mS);
VD: HGSM.delay(1000); // trì hoãn1000 ms = 1s
- HGSM.handle()
Là lệnh điều khiển chính mặc định của bộ thư viện, đặt ở đầu
hàm void loop(), cấu trúc lệnh:
HGSM.handle()
VD: HGSM.handle();
- HGSM.call()
Đây là lệnh gọi điện, cấu trúc như sau:
HGSM.call(số điện thoại)
Lưu ý số điện thoại có kiểu dữ liệu là String hoặc Unsigned long và không có
số 0 ở đầu.
VD: HGSM.call(“0938022500”) hoặc HGSM.call(938022500)
- HGSM.hangcall()
Đây là lệnh cúp máy, cấu trúc lệnh:
HGSM.hangcall()
VD: HGSM.hangcall();
- HGSM.answer()
Đây là lệnh bắt máy, cấu trúc lệnh:
HGSM.answer()
VD: HGSM.answer();
-HGSM.sendsms()
Đây là lệnh gửi SMS, cấu trúc lệnh:
HGSM.sendsms(Số điện thoại, content)
o
Số điện thoại: giống của hàm GỌI ĐIỆN.
o
content: Nội dung tin sms.
12
- Xem thêm -