Module SIM800L có tập lệnh điều khiển AT của riêng mình. Có tổng cộng 340 lệnh AT được cơng bố bởi nhà sản xuất SimCom. Một số lệnh AT thường dùng để điều khiển SIM800L được nêu ra ở bên dưới.
17
AT: Kiểm tra module có hoạt động khơng. Trả về: OK nếu hoạt động bình thường, báo lỗi hoặc khơng trả về nếu có lỗi xảy ra. ATEx : Bật (x=1) hoặc tắt (x=0) chế độ phản hồi lệnh vừa gửi (nên tắt đi).
AT+CPIN?: Kiểm tra Simcard. Trả về: +CPIN: READY OK (nếu tìm thấy simcard).
AT+CSQ: Kiểm tra chất lượng sóng. Các lệnh gọi điện [6]
ATA: Chấp nhận cuộc gọi đến.
ATH: Hủy cuộc gọi.
ATD*101#;: Kiểm tra tài khoản. Trả về: +CUSD: 0, “Tai khoan goc cua quy khach la ….”.
Các lệnh gửi tin nhắn [6]
AT+CMGF=x: Cấu hình tin nhắn (x=0: DPU, x=1:dạng ký tự).
AT+CNMI=2,x,0,0: Chọn x=1 (chỉ báo vị trí lưu tin nhắn) hoặc x=2 (hiển thị ra ngay nội dung tin nhắn).
Trả về: +CMTI: “SM”,3 (x=1).
Trả về: +CMT:“+84938380171″,””,”17/07/30, 14:48:09 +28″ noidungtinnhan.
AT+CMGR=x: Đọc tin nhắn tại vị trí lưu. Trả về: nội dung tin nhắn.
AT+CMGS=”sodienthoai”: Gửi tin nhắn cho sodienthoai, sau dòng lệnh này sẽ nhận được ‘>’ (mã HEX là 0x3C), bây giờ có thể nhập vào nội dung tin nhắn, nhập tiếp 0x1A để gửi tin nhắn đi hoặc 0x1B để hủy gửi tin nhắn.
1.3.6 Module RFID RC522
Module RFID RC522 sử dụng IC MFRC522 của Phillip dùng để đọc và ghi dữ liệu thẻ NFC tần số 13.56mhz, với mức giá rẻ thiết kế nhỏ gọn, module này là sự lựa chọn hàng đầu cho các ứng dụng về ghi đọc thẻ RFID.
18 Hình 1.12: Module RFID RC522 Thông số kỹ thuật: Nguồn: 3.3VDC, 13 - 26mA. Dòng ở chế độ chờ: 1013mA. Dòng ở chế độ nghỉ: <80uA. Tần số sóng mang: 13.56MHz.
Khoảng cách hoạt động: 0~60mm(mifare1 card).
Giao tiếp: SPI.
Tốc độ truyền dữ liệu: tối đa 10Mbit/s.
Các loại card RFID hỗ trợ: mifare1 S50, mifare1 S70, mifare UltraLight, mifare Pro, mifare Desfire.
Kích thước: 40mm × 60mm.
1.3.7 Cảm biến chuyển động PIR HC-SR501
Cảm biến thân nhiệt chuyển động PIR (Passive infrared sensor) HC-SR501 được sử dụng để phát hiện chuyển động của các vật thể phát ra bức xạ hồng ngoại (con người, con vật, các vật phát nhiệt,...), cảm biến có thể chỉnh được độ nhạy để giới hạn khoảng cách bắt xa gần cũng như cường độ bức xạ của vật thể mong muốn, ngoài ra cảm biến cịn có thể điều chỉnh thời gian kích trễ (giữ tín hiệu bao lâu sau khi kích hoạt) qua biến trở tích hợp sẵn.
19
Hình 1.13: Cảm biến chuyển động PIR HC-SR501
Thông số kỹ thuật:
Phạm vi phát hiện : góc 360 độ hình nón, độ xa tối đa 6m.
Nhiệt độ hoạt động : 32-122 ° F ( 050 ° C).
Điện áp hoạt động : DC 3.8V - 5V.
Mức tiêu thụ dòng: ≤ 50 uA.
Thời gian báo: 30 giây có thể tùy chỉnh bằng biến trở.
Độ nhạy có thể điều chỉnh bằng biến trở.
Kích thước: 1,27 x 0,96 x 1.0 ( 32,2 x 24,3 x 25,4 mm).
1.3.8 Cảm biến lửa
Cảm biến phát hiện lửa (flame sensor) thường được sử dụng cho các ứng dụng phát hiện lửa như: xe robot chữa cháy, cảm biến lửa,... Tầm phát hiện của cảm biến trong khoảng 80cm, góc quét là 60 độ, có thể phát hiện lửa tốt nhất là loại có bước sóng từ 760nm - 1100nm.
Cảm biến phát hiện lửa (flame sensor) có hai ngõ ra tín hiệu là Digital và Analog rất dễ dử dụng.
20
Hình 1.14: Cảm biến lửa
Thơng số kỹ thuật:
Nguồn cấp: 3.3V - 5VDC.
Dòng tiêu thụ: 15mA.
Tín hiệu ra: Digital 3.3 - 5VDC tùy nguồn cấp hoặc Analog.
Khoảng cách : 80 cm.
Góc quét : 60 độ.
Kích thước : 3.2 x 1.4 cm.
1.3.9 Module chuyển nguồn
Mạch chuyển nguồn pin dự phòng tự động M350 12VDC 150W được sử dụng để chuyển giữa hai nguồn chính và phụ (thường là nguồn pin, ắc quy) tự động để cấp cho hệ thống khi nguồn chính khơng cịn hoạt động, mạch sử dụng điện áp 12VDC (thường là điện áp của Ắc quy hoặc pin Lipo 3S), thích hợp cho các ứng dụng cần nguồn pin dự phịng 12VDC.
21
Hình 1.15: Mạch chuyển nguồn M350 12VDC
Thông số kỹ thuật:
Điện áp hoạt động: 12VDC.
Công suất tải tối đa: 150W.
Kích thước: 54 x 26.6mm.
1.3.10 Module hạ áp
Mạch giảm áp DC LM2596 3A là module giảm áp có khả năng điều chỉnh được dịng ra đến 3A. LM2596 là IC nguồn tích hợp đầy đủ bên trong. Module có 2 đầu vào IN, OUT, 1 biến trở để chỉnh áp đầu ra. Khi cấp điện cho đầu vào (IN) thì người dùng vặn biến trở và dùng VOM để đo mức áp ở đầu ra (OUT) để đạt mức điện áp mà mình mong muốn. Có khả năng giảm áp từ 30V xuống 1.5V mà vẫn đạt hiệu suất cao (92%). Thích hợp cho các ứng dụng chia nguồn, hạ áp, cấp cho các thiết bị như camera, robot,...
22 Thông số kỹ thuật:
Điện áp đầu vào: Từ 3V đến 30V.
Điện áp đầu ra: Điều chỉnh được trong khoảng 1.5V đến 30V.
Dòng đáp ứng tối đa là 3A.
Hiệu suất : 92%.
Cơng suất : 15W.
Kích thước: 45 (dài) * 20 (rộng) * 14 (cao) mm.
1.3.11 Động cơ RC servo 9G
Động cơ RC Servo 9G có kích thước nhỏ, là loại được sử dụng nhiều nhất để làm các mơ hình nhỏ hoặc các cơ cấu kéo không cần đến lực nặng. Động cơ RC Servo 9G có tốc độ phản ứng nhanh, các bánh răng được làm bằng nhựa nên cần lưu ý khi nâng tải nặng vì có thể làm hư bánh răng, động cơ RC Servo 9G có tích hợp sẵn Driver điều khiển động cơ bên trong nên có thể dễ dàng điều khiển góc quay bằng phương pháp điều độ rộng xung PWM. Hình 1.17: Động cơ RC servo 9G Thơng số kỹ thuật: Điện áp hoạt động: 4.8-5VDC. Tốc độ: 0.12 sec/ 60 degrees (4.8VDC). Lực kéo: 1.6KG.CM. Kích thước: 21x12x22mm. Trọng lượng: 9g.
23
1.3.12 Buzzer
Cịi Buzzer 5VDC có tuổi thọ cao, hiệu suất ổn định, chất lượng tốt, được sản xuất nhỏ gọn phù hợp thiết kế với các mạch còi buzzer nhỏ gọn, mạch báo động.
Hình 1.18: Buzzer 5V
Thơng số kỹ thuật:
Nguồn : 3.5V - 5.5V.
Dòng điện tiêu thụ: <25mA.
Tần số cộng hưởng: 2300Hz ± 500Hz.
Biên độ âm thanh: >80 dB.
Nhiệt độ hoạt động:-20°C đến +70°C.
Kích thước : Đường kính 12mm, cao 9,7mm.
1.4 Phần mềm lập trình Arduino IDE 1.4.1 Giới thiệu 1.4.1 Giới thiệu
Arduino IDE là một mơi trường phát triển tích hợp đa nền tảng, làm việc với cùng một bộ điều khiển Arduino để viết, biên dịch và tải code lên phần cứng. Đây là một công cụ hỗ trợ lập trình và nạp chương trình trên tất cả các dịng arduino đang có trên thị trường hiện nay.
Ngôn ngữ phổ biến cho Arduino IDE là C và C++ và thường được viết theo hướng đối tượng. Cơng cụ lập trình Arduino IDE sẽ hỗ trợ người dùng lựa chọn mơ hình để làm việc nhờ sử dụng Menu Tools của ứng dụng và một mảng các thư viện phong phú.
24
Hình 1.19: Giao diện của phần mềm Arduino IDE
Khi mới kết nối phần cứng Arduino với máy tính ta click vào Tools -> board để chọn loại board sử dụng.
Hình 1.20: Các loại board phần mềm hỗ trợ
Bên cạnh việc chọn board thì một phần quan trọng nữa là chọn cổng COM. Khi lần đầu gắn mạch Arduino vào máy tính, người sử dụng cần nhấn chọn cổng COM bằng
25 cách vào Tools -> Serial Port (một số phiên bản dùng từ Port) sau đó nhấn chọn cổng COM.
Hình 1.21: Chọn port giao tiếp với phần cứng
Ngồi ra, trong chương trình cịn chứa một lượng ví dụ rất lớn, giúp người dùng có thể dễ dàng tiếp cận và thuận lợi hơn trong việc viết chương trình.
Hình 1.22: Một số ví dụ cơ bản
Để thêm các thư viện Arduino từ trình quản lý thư viện riêng của IDE, hãy truy cập vào Sketch > Include Library > Manage Libraries.
26
Hình 1.23: Quản lý các thư viện Arduino IDE hỗ trợ
Chọn phiên bản và download các thư viện cần thiết.
Hình 1.24: Giao diện install thư viện 1.4.2 Các lệnh, các hàm cơ bản trong Arduino IDE 1.4.2 Các lệnh, các hàm cơ bản trong Arduino IDE
27 Ngay khi mở Arduino IDE sẽ được chào đón bởi các lệnh setup() và loop(). Đây là hai lệnh duy nhất về sketch mà tìm thấy trong hầu hết tất cả các code Arduino.
Setup(): Mỗi khi sketch bắt đầu, lệnh setup sẽ giúp khởi tạo các biến và bắt đầu sử dụng các thư viện.
Loop(): Một vòng lặp theo sau setup và thực sự là trái tim của chương trình, khiến nó phản hồi vơ hạn với bất kỳ logic nào.
Sau khi làm quen với các sketch cần biết những lệnh điều khiển. Những lệnh quan trọng nhất là:
Break: Nếu muốn thoát khỏi một lệnh cần nhấn break.
If or else: Các lệnh logic khởi tạo một hành động mỗi khi một điều kiện được thỏa mãn.
Các lệnh điều khiển hữu ích khác có thể cung cấp logic nhất định. Những lệnh có thể sử dụng bao gồm:
return: Trả về một giá trị nhất định.
while: Một vòng lặp khác diễn ra liên tục trong một điều kiện nhất định.
goto: Đúng như tên gọi của nó, lệnh này cho phép đi đến một dòng nhất định trong code.
Boolean và các toán tử số học [7]
Bên cạnh sketch và các lệnh kiểm soát, cần phải biết một số Boolean và toán tử số học để chỉ huy các chương trình.
Các tốn hạng: Bằng (=), phép cộng (+), phép trừ (-), phép nhân (*) và phép chia (/).
Các tốn hạng nâng cao: Khơng bằng (!=), Nhỏ hơn hoặc bằng (<=), lớn hơn hoặc bằng (>=), phần dư (%).
Các biến quan trọng [7]
Trong một số trường hợp, cần đưa ra một vài biến để xử lý những phép toán logic khác nhau. Những biến quan trọng là:
HIGH|LOW: Điều này mang lại giá trị cuối cùng cao và thấp cho các hằng số.
28 Các biến quan trọng khác cần nhớ bao gồm True/false, sizeof(), void, int và string. Chúng cũng giống như bất kỳ chương trình thơng thường nào khác bao gồm Python, C++,....
Các hàm cao cấp [7]
Cuối cùng, cần biết một vài hàm nâng cao để điều khiển bo mạch Arduino. Các hàm nâng cao bao gồm:
digitalRead(): Đọc giá trị từ một pin nhất định. Ngồi ra cịn có digitalWrite().
random(): Hàm này giúp tạo ra các số ngẫu nhiên.
Tone() và notone(): Thêm âm thanh xuất hiện trong pin, hàm tone() sẽ xử lý vấn đề đó, trong khi notone() giữ mọi thứ im lặng.
Delay(): Thêm độ trễ thời gian.
1.5 Giới thiệu các ngôn ngữ lập trinh web
Ba ngơn ngữ lập trình thuần được sử dụng là HTML, CSS và Javascript
HTML là viết tắt của HyperText Markup Language (ngôn ngữ đánh dấu siêu văn bản) dùng mô tả cấu trúc của các trang Web và tạo ra các loại tài liệu có thể xem được trong trình duyệt.
CSS (viết tắt của Cascading Style Sheets) là một ngôn ngữ định dạng được sử dụng để mơ tả trình bày các trang Web, bao gồm màu sắc, cách bố trí và phơng chữ. Nó cho phép hiển thị nội dung tương thích trên các loại thiết bị có kích thước màn hình khác nhau, chẳng hạn như màn hình lớn, màn hình nhỏ, hoặc máy in.
JS (viết tắt của Javascript) là một nền tảng (cross-platform), ngôn ngữ kịch bản hướng đối tượng (object-oriented). Nó là một ngơn ngữ nhỏ và nhẹ. Chạy trong môi trường máy chủ lưu trữ (ví dụ: trình duyệt web), JavaScript có thể được kết nối với các đối tượng của môi trường để cung cấp kiểm sốt chương trình đối với chúng.
1.6 Giới thiệu Google Firebase 1.6.1 Khái niệm 1.6.1 Khái niệm
Firebase là một dịch vụ cơ sở dữ liệu thời gian thực hoạt động trên nền tảng đám mây được cung cấp bởi Google nhằm giúp người lập trình phát triển nhanh các ứng dụng bằng cách đơn giản hóa các thao tác với cơ sở dữ liệu…
29 Firebase là sự kết hợp giữa nền tảng cloud với hệ thống máy chủ cực kì mạnh mẽ tới từ Google, để cung cấp cho chúng ta những API đơn giản, mạnh mẽ và đa nền tảng trong việc quản lý, sử dụng database.
1.6.2 Realtime Database System
Cơ sở dữ liệu thời gian thực Firebase lưu trữ dữ liệu database dưới dạng JSON và thực hiện đồng bộ database tới tất cả các client theo thời gian thực. Cụ thể hơn có thể xây dựng được client đa nền tảng (cross-platform client) và tất cả các client này sẽ cùng sử dụng chung một database đến từ Firebase và có thể tự động cập nhật mỗi khi dữ liệu trong database được thêm mới hoặc sửa đổi. Ngồi ra Firebase cịn cho phép phân quyền một các đơn giản bằng cú pháp tương tự như javascript [8].
1.6.3 Tại sao chọn Google Firebase
Triển khai ứng dụng nhanh [8]:
Với Firebase có thể giảm bớt rất nhiều thời gian cho việc viết các dòng code để quản lý và đồng bộ cơ sở dữ liệu, mọi việc sẽ diễn ra hoàn toàn tự động với các API của Firebase. Khơng chỉ có vậy Firebase cịn hỗ trợ đã nền tảng nên sẽ càng đỡ mất thời gian rất nhiều khi muốn xây dựng là ứng dụng đa nền tảng.
Khơng chỉ nhanh chóng trong việc xây dựng database, Google Firebase còn giúp ta đơn giản hóa q trình đăng kí và đăng nhập vào ứng dụng bằng các sử dụng hệ thống xác thực do chính Firebase cung cấp.
Bảo mật [8]:
Firebase hoạt động dựa trên nền tảng cloud và thực hiện kết nối thông qua giao thức bảo mật SSL, chính vì vậy sẽ bớt lo lắng rất nhiều về việc bảo mật của dữ liệu cũng như đường truyền giữa client và server. Khơng chỉ có vậy, việc cho phép phân quyền người dùng database bằng cú pháp javascipt cũng nâng cao hơn nhiều độ bảo mật cho ứng dụng, bởi chỉ những user cho phép mới có thể có quyền chỉnh sửa cơ sở dữ liệu.
Tính linh hoạt và khả năng mở rộng [8]:
Sử dụng Firebase sẽ giúp dễ dàng hơn rất nhiều mỗi khi cần nâng cấp hay mở rộng dịch vụ. Ngồi ra firebase cịn cho phép tự xây dựng server riêng để có thể thuận tiện hơn trong q trình quản lý. Việc Firebase sử dụng NoSQL, giúp cho database sẽ
30 khơng bị bó buộc trong các bảng và các trường mà có thể tùy ý xây dựng database theo cấu trúc riêng.
Sự ổn định [8]:
Firebase hoạt động dựa trên nền tảng cloud đến từ Google vì vậy hầu như khơng bao giờ phải lo lắng về việc sập server, tấn công mạng như DDOS, tốc độ kết nối lúc nhanh lúc chậm, … nữa, bởi đơn giản là Firebase hoạt động trên hệ thống server của Google. Hơn nữa nhờ hoạt động trên nền tảng Cloud nên việc nâng cấp, bảo trì server cũng diễn ra rất đơn giản mà không cần phải dừng server để nâng cấp như truyền thống.
Giá thành [8]:
Google Firebase có rất nhiều gói dịch vụ với các mức dung lượng lưu trữ cũng như băng thông khác nhau với mức giá dao động từ free đến $1500 đủ để đáp ứng được nhu cầu của tất cả các đối tượng.
1.6.4 Tạo một cơ sở dữ liệu trên Google Firebase
Tạo một tài khoản để truy cập vào giao diện điều khiển. Sau đó, chọn “ Get start” để bắt đầu tạo project.
Hình 1.25: Giao diện trang Google Firebase
31
Hình 1.26: Tạo project mới
Từ menu bên trái, nhấp vào “Database” và “Create database” trong phần Realtime Database.
Hình 1.27: Tạo cơ sở dữ liệu mới
32
Hình 1.28: Chọn chế độ cho project
Chọn cách lưu trữ dữ liệu trên Firebase.
Hình 1.29: Chọn chế độ lưu trữ dữ liệu
33
34
CHƯƠNG 2: THIẾT KẾ HỆ THỐNG 2.1 Phân tích hệ thống 2.1 Phân tích hệ thống
2.1.1 Yêu cầu thiết kế
Hệ thống được thiết kế với các yêu cầu:
Có thể đóng mở cửa tiện lợi, dễ dàng hơn chìa khóa thơng thường nhưng vẫn đảm bảo an tồn.
Có thể giám sát, báo động khi có người lạ đột nhập hoặc cháy nổ xảy ra.
Chủ nhà có thể nhận được thơng tin báo động có sự đột nhập trái ý hoặc cháy nổ khi khơng có mặt tại nhà để có thể xử lý kịp thời các tình huống.
Hệ thống có thể hoạt động ổn định.
2.1.2 Đặc tả hệ thống
Dựa vào những yêu cầu, hệ thống phải đáp ứng được các chức năng:
Khóa mở cửa bằng cách sử dụng thẻ RFID hoặc mật khẩu.