Đề tài này được phát triển nhằm tạo ra phiên bản thử nghiệm cho việc xây dựng một hệ thống điều khiển tự động các thiết bị trong gia đình dựa trên các vi xử lý Arduino UNO, Arduino Mega 2560, và Arduino Promini. Hệ thống sẽ được điều khiển thông qua giao diện điều khiển trên trình duyệt web. Phần lớn các công việc tập trung vào việc thiết kế trên phần mềm thiết kế mạch, lập trình vi điều khiển dựa trên ngôn ngữ CC++ và thực hiện chế tạo các mạch điều khiển. Trong chương 4 của bài báo cáo này sẽ chỉ rõ làm thế nào để thiết kế các mạch điều khiển và mạch cảm biến. Phần cuối của bài báo cáo sẽ tổng hợp tất cả các mã lập trình được sử dụng cho đề tài.
Trang 1TIỂU LUẬN TỐT NGHIỆP
THIẾT KẾ HỆ THỐNG ĐIỀU KHIỂN THIẾT BỊ ĐIỆN TRONG
NHÀ VỚI ARDUINO
MSSV: CM14V7K501
Trang 2LỜI CẢM ƠN
Em xin gửi đến thầy cô ở khoa Công Nghệ Thông Tin &
Truyền Thông Trường Đại Học Cần Thơ lời biết ơn sâu sắc nhất,
những người đã cùng với tri thức và tâm huyết của mình để
truyền đạt vốn kiến thức quý báu cho chúng em trong thời gian
học tập vừa qua
Xin gửi lời cảm ơn chân thành đến gia đình, bè bạn, vàcộng đồng những người lập trình trên internet đã luôn là nguồn
động viên to lớn, giúp em vượt qua những khó khăn trong suốt
quá trình học tập và thực hiện đồ án này
Mặc dù đã rất cố gắng hoàn thiện đồ án với tất cả sự nỗlực, tuy nhiên do bước đầu đi vào thực tế, tìm hiểu và xây dựng
đồ án trong thời gian có hạn, và kiến thức còn hạn chế nên đồ
án “Thiết kế hệ thống điều khiển thiết bị điện trong nhà với
Arduino” chắc chắn sẽ không thể tránh khỏi những thiếu sót Em
rất mong nhận được sự quan tâm, thông cảm và những đóng
góp quý báu của các thầy cô và các bạn để đồ án này ngày càng
hoàn thiện hơn
Một lần nữa, em xin chân thành cám ơn và luôn mongnhận được sự đóng góp của mọi người
Sau cùng, em xin kính chúc các thầy cô trong Khoa Côngnghệ Thông Tin & Truyền Thông dồi dào sức khỏe, niềm tin để
tiếp tục thực hiện sứ mệnh cao đẹp của mình là truyền đạt kiến
thức cho thế hệ mai sau
Trân trọng !
Cà Mau, ngày 27 tháng 08 năm 2016
Sinh viên thực hiện
Trịnh Hải Đảo
Trang 3MỤC LỤC
Trang 4MỤC LỤC HÌNH
Trang 5KÝ HIỆU VÀ TỪ VIẾT TẮT
Bảng từ viết tắt
Viết tắt Viết đầy đủ Diễn giải
IoT Internet ofThings “Vạn vật kết nối” tất cả mọi thứ điều kết nối với InternetShield Lá chắn kết nối Là bo mạch kết nối có khả năng mở rộngthêm các chức năng của vi xử lýRFID Radio FrequencyIdentification Là công nghệ nhận dạng đối tượng bằng sóng vô tuyếnDatasheet Tài liệu thông sốkỷ thuật Là một tài liệu tóm tắt việc thực hiện và đặc tính kỷ thuật của sản phẩm, máy
móc, linh kiệnI/O Input/Output Đầu vào/ra của vi điều khiển
IDE DevelopmentIntegrated
Environment Môi trường phát triển tích hợpDIY Do It Yourself Những người tự mình tạo ra sản phẩm
UART AsynchronousUniversal
Receiver Chuẩn giao tiếp dữ liệu nối tiếpSPI Serial PeripheralInterface Chuẩn giao tiếp đồng bộ song công
I2C Inter-IntergratedCircuit Chuẩn giao tiếp nối tiếp 2 dây
PWM Pulse WidthModulation Phương pháp điều xung, điều chỉnh điện áp ra tảiPCB Printer CircuitBoard Bảng mạch in
NFC CommunicationNear-Field
s
Công nghệ giao tiếp gần sử dụng cảm ứng từ trường
PIR Passive InfraRedsensor Cảm biến thụ động dùng nguồn kích thích là tia hồng ngoại
Op-Amp OperationalAmplifier Mạch khuếch đại tín hiệu thuật toán
AJAX AsynchronousJavascript and Javascript và XML không đồng bộ
Trang 6Object Đối tượngMessage Thông điệp giữa các đối tượngMessage to self Thông điệp lặp có điều kiện
Trang 7Op-amp Mạch khuếch đại thuật toán
TÓM TẮT VÀ TỪ KHÓA
Tóm tắt: Đề tài này được phát triển nhằm tạo ra phiên bản thử
nghiệm cho việc xây dựng một hệ thống điều khiển tự động các
thiết bị trong gia đình dựa trên các vi xử lý Arduino UNO, Arduino
Mega 2560, và Arduino Promini Hệ thống sẽ được điều khiển
thông qua giao diện điều khiển trên trình duyệt web Phần lớn
các công việc tập trung vào việc thiết kế trên phần mềm thiết kế
mạch, lập trình vi điều khiển dựa trên ngôn ngữ C/C++ và thực
hiện chế tạo các mạch điều khiển Trong chương 4 của bài báo
cáo này sẽ chỉ rõ làm thế nào để thiết kế các mạch điều khiển và
mạch cảm biến Phần cuối của bài báo cáo sẽ tổng hợp tất cả
các mã lập trình được sử dụng cho đề tài
Từ khóa: vi điều khiển, Arduino, điều khiển từ xa, máy chủ web.
Abstract: This project I would like to introducing a trial version
of an automatic controllable devices system in the home based
on the microprocessor Arduino UNO, Arduino Mega 2560 and
Arduino Promini The system will be controlled through the
console on the web browser Much of the work focuses on
software design on circuit design, microcontroller programming
language based on C/C++ and implement controllers
fabrication In Chapter 4 of this report will indicate how to design
Trang 8Keyword: microcontroller, Arduino, remote control, web server.
Trang 9CHƯƠNG 1: TỔNG QUAN
1 Đặt vấn đề
Ngày nay với sự phát triển của công nghệ thông tin và xuhướng “Vạn vật kết nối – Internet of Things (IoT)”, chúng ta luôn
muốn mọi đồ vật xung quanh ta điều có thể kết nối với internet
để có thể dễ dàng kiểm soát hoạt động cũng như điều khiển
chúng Và sự ra đời của các bo mạch vi xử lý như: Raspberry pi,
Intel Galileo hay Arduino… là một yếu tố tất yếu để đáp ứng nhu
cầu đó Những bo mạch vi xử lý này chỉ nhỏ hơn lòng bàn tay
của chúng ta nhưng sức mạnh tính toán thì không hề nhỏ, giá
của chúng cũng không thể nào cao hơn một chiếc máy vi tính
bình thường
Internet of Things là một kịch bản của thế giới, khi mà mỗi
đồ vật, con người được cung cấp một định danh của riêng mình,
và tất cả có khả năng truyền tải, trao đổi thông tin, dữ liệu qua
một mạng duy nhất mà không cần đến sự tương tác trực tiếp
giữa người với người, hay người với máy tính IoT đã phát triển từ
sự hội tụ của công nghệ không dây, công nghệ vi cơ điện tử và
Internet [18]
Theo khái niệm đó ta có thể hiểu IoT là mọi vật đều có thểkết nối với nhau qua internet, người dùng có thể kiểm soát đồ
vật của mình qua một thiết bị thông minh như laptop, máy tính
để bàn hay smatphone Các hãng công nghệ lớn như Samsung
hay LG đã cho ra đời những sản phẩm IoT đúng nghĩa như: tủ
lạnh máy giặt hay những chiếc ti vi thông minh, mục tiêu của
những sản phẩm này là hướng đến xây dựng một ngôi nhà thông
minh
Trong sự phát triển và xu thế chung của xã hội, việc làm chủđược công nghệ thiết kế mạch vi xử lý và xây dựng các thiết bị
có thể kết nối với internet để tạo ra một hệ sinh thái IoT mang
thương hiệu riêng là một điều hết sức cần thiết Mục tiêu của đề
tài này là xây dựng một hệ thống điều khiển thiết bị điện trong
gia đình thông qua internet, giúp kiểm soát tốt các vấn đề an
ninh, an toàn trong gia đình nhờ vào các cảm biến, hướng đến
xây dựng một căn hộ thông minh
Trang 102 Lịch sử vấn đề
Đề tài này được phát triển dựa trên nền tảng của đề tài
“Điều Khiển Thiết Bị Điện Qua Internet” của chính em trong bài
báo cáo môn Niên Luận năm 2015 do thầy Lê Văn Lâm giảng
dạy
Trong đề tài lần trước, em đã giải quyết được vấn đề điềukhiển thiết bị qua mạng internet nhưng còn nhiều thiếu sót trong
việc thiết kế mạch điều khiển và kỹ thuật chế tạo mạch chưa
cao, số lượng thiết bị mà hệ thống điều khiển được bị giới hạn,
độ bảo mật hệ thống không được đảm bảo do chưa có cơ chế
chứng thực người dùng hợp lý
3 Mục tiêu nhiệm vụ của đề tài
Như đã nói ở trên, mục tiêu của đề tài lần này là xây dựngmột hệ thống điều khiển thiết bị điện trong gia đình thông qua
internet, xây dựng giao diện điều khiển trên trình duyệt web và
thiết kế các cảm biến như: cảm biến chuyển động, nhiệt độ, độ
ẩm, phát hiện lửa - khí Gas… nhằm giúp người dùng phát hiện
sớm các vấn đề an ninh, an toàn trong gia đình
Nhiệm vụ cần thực hiện của đề tài là thiết kế các bo mạchkết nối (shield) dựa trên các bo mạch vi xử lý có sẵn, lập trình
cho các vi xử lý và thiết kế các mạch cảm biến mới phù hợp với
từng mục đích của người sử dụng
Nền tảng thực hiện đề tài dựa trên kiến thức đã học trongnhững môn học: Lập trình C, Lập trình Web cùng với những
kiến thức về vi xử lý được chia sẽ trên internet và hiểu biết của
em về thiết kế mạch điện, về các thiết bị điện - điện tử và sự
giúp đỡ từ cộng đồng những người lập trình Arduino trên toàn
thế giới
4 Phạm vi của đề tài
- Xây dựng và thiết kế một mạch điều khiển thiết bị điện có
thể điều khiển được 8 thiết bị cùng lúc
- Thiết kế một mạch mở khóa cửa bằng thẻ từ (RFID) và bàn
phím ma trận để điều khiển đóng/mở khóa cửa
- Thiết kế các bộ cảm biến chuyển động, cảm biến nhiệt độ
-độ ẩm, cảm biến khí Gas, cảm biến ánh sáng…
Trang 11- Xây dựng một thiết bị điều khiển trung tâm có nhiệm vụ
nhận các tín hiệu điều khiển từ người dùng qua internet vàcác bộ cảm biến, tính toán và gữi tín hiệu điều khiển đếnmạch điều khiển thiết bị
- Xây dựng cơ chế giao tiếp không dây giữa các mạch điều
khiển thiết bị, các cảm biến và bộ điều khiển trung tâm
- Thiết kế giao diện giám sát điều khiển trên trình duyệt web
có cơ chế chứng thực người dùng cơ bản
5 Hướng giải quyết
- Tìm và tra bảng thông số kỹ thuật (datasheet) của các bo
mạch vi xử lý cũng như các linh kiện điện tử để tìm hiểu vềcách hoạt động cũng như chế độ làm việc vào ra (I/O) củacác chân
- Lập trình code cho vi xử lý để giải quyết các kịch bản đã
được định sẵn để giúp cho vi xử lý hoạt động đúng và chínhxác
- Thiết kế mạch điện bằng một số phần mềm thiết kế mạch
chuyên dụng: Proteus, EAGLE, Fritzing…
- Chạy mô phỏng các mạch điện đã thiết kế trên phần thiết kế
mạch để kiểm tra hoạt động của mạch điện
- Nạp code và test thử hoạt động của vi xử lý và các cảm biến
trên bo test mạch (Breadboard) để kiểm tra tính chính xáccủa mã lập trình
- In mạch và hoàn thiện các mạch điện đã thiết kế sau khi
kiểm tra trên phần mềm mô phỏng và kiểm tra trênbreadboard
Trang 12CHƯƠNG 2: CÔNG CỤ XÂY DỰNG ĐỀ TÀI
1 Khái quát về Arduino
Arduino là một board mạch vi xử lý, nhằm xây dựng các ứngdụng tương tác với nhau hoặc với môi trường được thuận lợi hơn
Phần cứng bao gồm một board mạch nguồn mở được thiết kế
trên nền tảng vi xử lý AVR Atmel 8bit, hoặc ARM Atmel 32-bit
Được trang bị cổng giao tiếp nối tiếp RS-232 hoặc cổng USB,
giao động thạch anh, đầu vào analog, các chân I/O kỹ thuật số
tương thích với nhiều board mở rộng khác nhau
Hình 1: Phiên bản Arduino đầu tiên sử dụng giao tiếp RS-232
Được giới thiệu vào năm 2005, Những nhà thiết kế củaArduino cố gắng mang đến một phương thức dễ dàng, ít tốn kém
cho những người yêu thích lập trình, sinh viên và giới chuyên
nghiệp để tạo ra những thiết bị có khả năng tương tác với môi
trường thông qua các cảm biến và các cơ cấu chấp hành Những
ví dụ phổ biến mà hầu như những người mới bắt đầu học lập
trình vi điều khiển điều phải làm đó là bật tắt một đèn LED Đi
cùng với nó là một môi trường phát triển tích hợp (IDE) chạy trên
các máy tính cá nhân thông thường và cho phép người dùng viết
các chương trình cho Aduino bằng ngôn ngữ C hoặc C++ [19]
Ban đầu Arduino là một dự án dành cho sinh viên tạiInteraction Design Institute Ivrea (Viện thiết kế tương tác
Ivrea) tại Ivrea, Italy Vào thời điểm đó các sinh viên sử dụng một
"BASIC Stamp" (Con tem cơ bản) có giá khoảng $100, xem như
giá dành cho sinh viên Massimo Banzi là một trong những người
sáng lập, giảng dạy tại Ivrea Cái tên "Arduino" đến từ một quán
bar tại Ivrea, nơi một vài nhà sáng lập của dự án này thường
Trang 13xuyên gặp mặt Bản thân quán này được lấy tên là Arduino, Bá
tước của Ivrea, và là vua của Italy từ năm 1002 đến 1014 [20]
Hình 2: Những người đầu tiên khởi xướng Arduino
Mặc dù hầu như không tiếp thị, không quảng bá nhưng tintức về Arduino vẫn lan truyền với tốc độ chóng mặc nhờ những
lời truyền miệng tốt đẹp từ những người dùng đầu tiên Arduino
thực sự đã gây sóng gió trên thị trường người dùng DIY trên toàn
thế giới trong vài năm gần đây, gần giống với những gì mà Apple
đã làm được trên thị trường thiết bị di động Số lượng người dùng
cực lớn và đa dạng với trình độ trải rộng từ bậc phổ thông lên
đến đại học đã làm cho ngay cả những người tạo ra chúng cũng
phải ngạc nhiên về mức độ phát triển
2 Phần cứng sử dụng trong đề tài
2.1 Vi điều khiển Arduino Mega 2560
Arduino Mega 2560 R3 sử dụng vi điều khiển ATmega2560 là
bo mạch vi điều khiển cho các giao tiếp ngoại vi và số chân
nhiều nhất, bộ nhớ rất lớn (256KB)
Trang 14- Vi điều khiển ATmega2560
- Điện áp hoạt động 5V
- Điện áp nguồn 7-12V (khuyên dùng)
- Điện áp nguồn 6-20V (giới hạn)
- Số chân In/Out 54 (trong đó có 15 đầu ra PWM)
- Đầu vào analog 16
- Cường độ chân In/Out 40 mA
2.2 Vi điều khiển Arduino Pro Mini
Arduino Pro Mini là một phiên bản thu nhỏ vi điều khiển UNOR3, nó mang trên mình đầy đủ các kết nối UART, SPI cũng như
I2C và có thêm 2 đầu vào analog nâng lên tổng số đầu vào
- Số chân In/Out 14 (trong đó có 6 đầu ra PWM)
- Đầu vào analog 8
- Cường độ chân In/Out 40 mA
- Bộ nhớ Flash 32 KB, trong đó 2Kb củaBootloader
Trang 152.3 Mạch giao tiếp mạng Ethernet W5100
Ethernet Shield W5100 là một board mạch cho phép kết nốiArduino UNO/Mega với internet qua giao thức TCP/IP bằng một
cổng RJ45 trên board Để sử dụng board Ethernet Shield ta chỉ
cần gắn board này lên trên board Arduino sao cho các chân của
board Ethernet Shield trùng với các chân của board Arduino
Hình 5: Bo mở rộng Ethernet Shield W5100
2.4 Module đọc quét thẻ từ RFID RC522
Module RFID RC522 sử dụng IC MFRC522 của hãng Philipdùng để đọc và ghi dữ liệu cho thẻ NFC tần số 13.56Mhz
Hình 6: Mạch đọc thẻ từ RFID RC522
Thông số kỷ thuật:
- Điện áp hoạt động: 3.3V
- Dòng ở chế độ chờ: 1013mA
Trang 16- Khoảng cách hoạt động: 0~60mm
- Chuẩn giao tiếp: SPI
- Tốc độ truyền dữ liệu tối đa: 10Mbit/s
2.5 Module thu phát sóng vô tuyến RF 315Mhz
Là mạch thu phát tín hiệu bằng sóng vô tuyến Module phátsử dụng thạch anh phát có tần số 315Mhz, module thu có chức
năng điều chế và lọc tín hiệu nhận được từ module phát
Hình 7: Module thu và phát của bộ thu/phát RF 315Mhz
- Tốc độ truyền dữ liệu tối đa: 4Kb/s
- Công suất truyền: 10mW
2.6 Module thời gian thực DS1307
Module thời gian thực DS1307 có chức năng lưu trữ thông tinngày tháng năm cũng như giờ phút giây, nó sẽ hoạt động như
một chiếc đồng hồ và có thể xuất dữ liệu ra ngoài qua giao thức
I2C
Hình 8: Module thời gian thực RTC DS1307
Thông số kỷ thuật:
Trang 173.1 Môi trường phát triển ứng dụng Arduino IDE
Thiết kế bo mạch nhỏ gọn, trang bị nhiều tính năng thôngdụng mang lại nhiều lợi thế cho Arduino, tuy nhiên sức mạnh
thực sự của Arduino nằm ở phần mềm Môi trường lập trình đơn
giản dễ sử dụng, ngôn ngữ lập trình Wiring dễ hiểu và dựa trên
nền tảng C/C++ rất quen thuộc với người làm kỹ thuật, dễ học
đối với những người chưa biết ngôn ngữ lập trình Và quan trọng
là số lượng thư viện code được viết sẵn và chia sẻ bởi cộng đồng
nguồn mở là vô cùng lớn
Hình 9: Giao diện môi trường phát triển ứng dụng Arduino IDE
Arduino IDE là phần mềm dùng để lập trình cho Arduino Môitrường lập trình Arduino IDE có thể chạy trên các nền tảng phổ
biến nhất hiện nay là Windows, Mac và Linux Do có tính chất
nguồn mở nên môi trường lập trình này hoàn toàn miễn phí và
có thể mở rộng thêm bởi người dùng có kinh nghiệm
Ngôn ngữ lập trình có thể được mở rộng thông qua các thưviện C++ Và do ngôn ngữ lập trình này dựa trên nền tảng C của
AVR nên người dùng hoàn toàn có thể nhúng thêm code viết
bằng AVR vào chương trình nếu muốn Arduino IDE được
Trang 183.2 Phần mềm thiết kế mạch
Phần mềm Proteus là phần mềm cho phép mô phỏng hoạtđộng của mạch điện tử bao gồm phần thiết kế mạch và viết
chương trình điều khiển cho các họ vi điều khiển như MCS-51,
PIC, AVR, … Proteus là phần mềm mô phỏng mạch điện tử của
Lancenter Electronics, mô phỏng cho hầu hết các linh kiên điện
tử thông dụng, đặc biệt hỗ trợ cho các MCU như PIC, 8051, AVR,
Motorola
Hình 10: Giao diện làm việc của phần mềm thiết kế mạch Proteus
Phần mềm bao gồm 2 chương trình: ISIS cho phép mô phỏngmạch và ARES dùng để vẽ mạch in Proteus là công cụ mô
phỏng cho các loại vi điều khiển khá tốt, nó hỗ trợ các dòng vi
điều khiển PIC, 8051, PIC, dsPIC, AVR, HC11,…các giao tiếp I2C,
SPI, CAN, USB, Ethenet…ngoài ra còn mô phỏng các mạch số,
mạch tương tự một cách hiệu quả
3.3 Thư viện Arduino trong Proteus
Thư viện Arduino là một bổ sung rất hay cho phần mềm môphỏng Proteus nó giúp cho việc mô phỏng Arduino được thuận
tiện và dễ dàng hơn thay vì chỉ mô phỏng được chip
ATmega328(nhân của Arduino), thư viện này được phát triển bởi
các kĩ sư Cesar Osaka, Daniel Cezar, Roberto Bauer
Thư viện bao gồm các linh kiện sau:
- Arduino Uno (Phiên bản chip ATmega328 chân DIP)
- Arduino Uno (Phiên bản chip ATmega328 chân SMD)
Trang 19Hình 11: Các linh kiện trong thư viện Arduino cho Proteus
4 Công cụ phụ trợ
Breadboard là một loại board dùng để tạo mẩu thử nghiệmnhững mạch điện tử, có các lỗ cắm dây và linh kiện mà không
cần phải dùng mối hàn
Hình 12: Cấu tạo của một loại breadboard
Công cụ thiết kế mạch trực tuyến PCB – EasyEDA được sử
dụng như là một công cụ tham khảo các mạch nguyên lý cũng
như mạch in của các bo mạch vi điều khiển Arduino
Trang 20Phần mềm xuất Gcode (FlatCAM) được sử dụng để tinh chỉnh
và xuất mã Gcode cho máy CNC Router trong quá trình thi công
mạch điện
Hình 14: Giao diện làm việc của phần mềm xuất Gcode FlatCAM
CHƯƠNG 3: ĐẶC TẢ HỆ THỐNG
1 Yêu cầu chức năng
Các yêu cầu chức năng của hệ thống bao gồm:
• Kết nối các thiết bị điện, điện tử, điện gia dụng vào hệthống điều khiển
• Giám sát trạng thái của các thiết bị thông qua Internet
• Kết nối các cảm biến và xử lý các vấn đề an ninh, an toàn
hệ thống
• Điều khiển các thiết bị đã kết nối vào hệ thống
• Điều khiển hệ thống bằng các thiết bị như: máy tính, điệnthoại thông minh…
• Xây dựng một web server để thực hiện yêu cầu điềukhiển từ người dùng
• Sử dụng chuẩn giao tiếp TCP/IP để kết nối với hệ thống
• Người dùng điều khiển hệ thống thông qua trình duyệtweb
• Xây dựng cơ chế chứng thực cơ bản cho người sử dụng
• Hệ thống điều khiển và xử lý sau khi lắp ráp phải đảmbảo tính nhỏ gọn
• Đảm bảo tính an toàn về điện cho người dùng khi sử dụng
hệ thống
Trang 21Cảm biến sẽ thu thập dữ liệu của môi trường (nhiệt độ, độ
ẩm, ánh sáng, khí gas, báo cháy…) và gửi dữ liệu thô về bộ xử lý
trung tâm
Bộ xử lý trung tâm có nhiệm vụ nhận dữ liệu được gửi từmạch điều khiển và các cảm biến, tính toán và cập nhật giá trị
lên web server
Bộ xử lý trung tâm cũng là nơi nhận tín hiệu điều khiển từngười dùng và gửi tín hiệu đến mạch điều khiển để bật/tắt thiết
bị
Các tín hiệu gửi và nhận trên bộ xử lý trung tâm, mạch điềukhiển, các cảm biến và hệ thống mở/khóa cửa RFID được truyền
đi thông qua sóng vô tuyến bằng module RF315Mhz
Hình 15: Sơ đồ khối nguyên lý kết nối của hệ thống
Trang 223 Phân tích yêu cầu chức năng
3.1 Biểu đồ trường hợp sử dụng
Để điều khiển hệ thống, việc đầu tiên người dùng phải làm
là chứng thực người dùng bằng cách nhập tên đăng nhập và mật
khẩu vào màn hình đăng nhập khi người dùng truy cập vào địa
chỉ IP của hệ thống trên trình duyệt Sau khi đăng nhập người
dùng sẽ được đưa đến màn hình điều khiển và giám sát các hoạt
động của hệ thống Từ đây người dùng có quyền điều khiển
bật/tắt các thiết bị, đóng/mở cửa, hay xem lại lịch sử các hoạt
động của hệ thống
Hình 16: Sơ đồ trường hợp sử dụng
3.2 Phân tích các trường hợp sử dụng
Để điều khiển được tất cả các tính năng hệ thống trêninternet, máy tính hay thiết bị di động của người dùng phải kết
nối với internet Người dùng truy cập địa chỉ IP của hệ thống trên
trình duyệt web, sau đó hệ thống yêu cầu người dùng nhập tên
người dùng và mật khẩu đăng nhập Nếu người nhập sai tên
đăng nhập hoặc mật khẩu, người dùng sẽ được yêu cầu nhập lại
Nếu hủy bỏ đăng nhập trình duyệt sẽ hiện thông báo lỗi đăng
nhập Nếu nhập đúng tên đăng nhập và mật khẩu, trình duyệt sẽ
vào màn hình chính của hệ thống
- Cách bước thực hiện:
B1: Người dùng mở trình duyệt web
Trang 23B2: Nhập địa chỉ IP của hệ thốngB3: Nhập tên người dùng và mật khẩuB4: Hệ thống thông báo chứng thực thành công
- Trình tự thực hiện đăng nhập:
Hình 17: Biểu đồ trình tự của thao tác đăng nhập
- Thiết kế form đăng nhập:
Hình 18: Thiết kế form đăng nhập
3.2.2 Use case giám sát cảm biến
Sau khi đăng nhập thành công, trình duyệt sẽ đưa ngườidùng đến màn hình giám sát hoạt động của các thiết bị cũng
như hoạt động của các cảm biến Các cảm biến nhiệt độ - độ ẩm
sẽ được hiển thị giá trị thay đổi theo thời gian thực Cảm biến
chuyển động sẽ thay đổi trạng thái khi có chuyển động, và các
trạng thái này sẽ được lưu lại trong lịch sử hoạt động của hệ
thống
- Thiết kế khung nhìn hiển thị cảm biến nhiệt độ, độ ẩm:
Trang 24Hình 19: Thiết kế khung nhìn hiển thị nhiệt độ, độ ẩm
- Thiết kế khung nhìn hiển thị cảm biến chuyển động và các
cảm biến tương tự:
Hình 20: Thiết kế khung nhìn cảm biến chuyển động
3.2.3 Use case điều khiển thiết bị
Để điều khiển thiết bị, người dùng sử dụng switch chuyểnđổi qua lại giữa trạng thái “ON” hoặc “OFF” Tại một thời điểm
chỉ có một trạng thái duy nhất được kích hoạt
- Cách bước thực hiện:
B1: Người dùng chọn thiết bị cần điều khiểnB2: Nhấn chọn nút ON/OFF trên màn hình điều khiển B3: Hệ thống ra lệnh điều khiển thiết bị
Trang 25- Trình tự điều khiển thiết bị:
Hình 21: Biểu đồ trình tự của thao tác điều khiển thiết bị
- Thiết kế form điều khiển thiết bị:
Hình 22: Thiết kế form điều khiển thiết bị
Người dùng có thể đóng/mở cửa ngay trên trình duyệt của
hệ thống Giám sát việc đóng mở cửa hay xem các cảnh báo
truy cập trái phép, lịch sử đóng mở cửa
- Cách bước thực hiện:
B1: Người dùng đi đến form điều khiểnB2: Nhấn chọn nút “Mở” hoặc “Đóng” trên formB3: Hệ thống ra lệnh điều khiển đóng/mở cửa
Trang 27- Trình tự điều khiển đóng mở cửa
Hình 23: Biểu đồ trình tự của thao tác điều khiển đóng/mở cửa
- Thiết kế form điều khiển đóng mở cửa
Hình 24: Thiết kế form điều khiển đóng/mở cửa
3.2.5 Use case chọn chế độ hoạt động
Người dùng chọn chế độ hoạt động của các thiết bị cũng nhưchế độ làm việc của các cảm biến Có các chế độ như: tùy chỉnh,
ban đêm, có người trong nhà, đi vắng… Tùy theo các chế độ
hoạt động mà các cảm biến sẽ được kích hoạt ở các mức khác
nhau
- Cách bước thực hiện:
B1: Người dùng đi đến form chọn chế độ hoạt độngB2: Nhấn chọn nút chế độ hoạt động trên form
Trang 29- Trình tự chọn chế độ hoạt động:
Hình 25: Biểu đồ trình tự thao tác chọn chế độ hoạt động
- Thiết kế form chọn chế độ hoạt động:
Hình 26: Thiết kế form chọn chế độ hoạt động
Trang 30CHƯƠNG 4: THIẾT KẾ HỆ THỐNG
1 Mạch điều khiển thiết bị
1.1 Ví dụ đầu tiên bật/tắt một đèn led
Một tính năng quan trọng của Arduino là các vi điều khiển cómột bộ nạp khởi động cài đặt sẵn, mà không cần có sự can thiệp
của lập trình viên Các phần cứng Arduino được lập trình với một
ngôn ngữ lập trình dựa trên ngôn ngữ tương tự như C ++, và
thông qua một môi trường phát triển IDE Các chương trình
Arduino nếu chúng được biên dịch và chạy, phải xác định hai
} void loop() { digitalWrite(13, HIGH);
Trang 31pinMode(13, OUTPUT);
Trong vòng lập chính, bật đèn bằng cách sử dụng dòng lệnh:
digitalWrite(13, HIGH);
Sử dụng dòng lệnh trên vi điều khiển sẽ cung cấp 5 volt điện
áp lên chân 13 Điều này tạo ra sự chênh lệch về mặt điện áp
giữa các chân của đèn và làm cho đèn sáng Để tắt đèn ta sử
không có gì hoạt động trong thời gian đó [3]
Hình 28: Ví dụ bật/tắt LED sử dụng lệnh digitalWrite().
Ta có thể thêm nút nhấn và thay đổi một chút về cấu trúclệnh cho ví dụ trên để thấy được sự tương tác vật lý dẫn đến sự
thay đổi trạng thái của đèn led
Trang 32Hình 29: Thêm nút nhấn vào cho ví dụ bật/tắt led
Một chân của nút nhấn được thêm vào chân số 8 và châncòn lại được nối với 5 volt Ta sẽ thay đổi mã lệnh để khi có điện
áp cao vào chân 8 thì vi điều khiển sẽ kiểm tra trạng thái của led
và thay đổi trạng thái đó
const int buttonPin = 8;
const int ledPin = 13;
pinMode(buttonPin, INPUT);
} void loop() { int readingbnt = digitalRead(buttonPin);
lastbntState = readingbnt;
}
Bằng việc sử dụng thêm một số hàm kiểm tra tình trạng củanút nhấn và thời gian nhấn ta có thể thay đổi trạng thái của led
mỗi khi nhấn nút Từ đây ta có thể phát triển được một hệ thống
đơn giản để điều khiển một thiết bị bằng nút nhấn bằng việc
thay đổi led thành relay
Trang 331.2 Tăng số lượng thiết bị điều khiển
Có một vấn đề xảy ra khi ta tăng số lượng led và nút nhấn ở
ví dụ trên lên đến một mức nào đó thì sẽ không đủ chân trên vi
xử lý để có thể điều khiển, cụ thể là trên bo mạch Arduino Pro
Mini chỉ có 14 chân I/O nên ta chỉ có thể điều khiển tối đa là 7
thiết bị
Để giải quyết vấn đề trên ta sử dụng IC 74HC595, là ic ghidịch 8bit kết hợp chốt dữ liệu, đầu vào nối tiếp đầu ra song
song Được dùng trong các mạch quét led 7 đoạn, led matrix…
để tiết kiệm số chân vi điều khiển [12]
Hình 30: Sơ đồ chân và hình ảnh thực tế của IC 74HC595
Sử dụng 3 chân trên ic (DS, ST_CP, SM_CP) để giao tiếp, giúp
vi điều khiển tiết kiệm được các chân I/O nhưng nó lại có thể
điều khiển được cùng lúc 8 thiết bị nhờ vào 8 ngỏ ra trên ic và
nếu được nối tiếp với các ic trên thì số lượng thiết bị có thể được
tăng lên đáng kể
Trang 34Hình 31:Ví dụ điều khiển 8 led với nút nhấn và ic 74HC595
Để điều khiển ta truyền vào IC 1 byte (8 bit) tương đươngvới 8 thiết bị mà ta cần điều khiển Trong ví dụ trên, để xác định
giá trị cho từng led ta chuyển từ hệ thập phân sang hệ nhị phân
Ví dụ 1 byte có giá trị là 5 thì các chân từ Q0 → Q7 sẽ có giá trị
như sau:
Với các chân có giá trị 0 tương ứng chân đó có hiệu điện thế
là 0V, còn các chân có giá trị 1 sẽ có hiệu điện thế là 5V
ledState[0]*pow(2,7) );
Serial.print(ledStatus);
shiftOutHC595(dataPin,clockPin,ledStatus);
Đoạn mã trên dùng để khai báo chân các của ic kết nối với
vi điều khiển, hàm shiftOutHC595() dùng để dịch các bit ra
chân ic với giá trị ledStatus được chuyển từ hệ nhị phân là
Trang 35trạng thái của nút nhấn được thực hiện trong ví dụ trước sang hệ
thập phân
1.3 Mô hình nguyên lý mạch điều khiển
Từ ví dụ bật/tắt led trên ta thấy, nếu muốn bật một led thì viđiều khiển phải xuất một tín hiệu mức cao lên chân được điều
khiển, tạo sự chênh lệch điện áp giữa 2 đầu của led dẫn tới led
sáng Cũng theo nguyên lý trên để điều khiển được các thiết bị
điện ta xây dựng một khối relay kích dẫn điện cho dòng diện lớn
có thể đi qua mà không gây ảnh hưởng tới vi điều khiển
Hình 32: Sơ đồ khối mạch điều khiển thiết bị
Việc xây dựng một khối relay kích dẫn dòng điện hiện nay córất nhiều cách như: kích dẫn bằng tranzitor, fet công suất, hay
opto quang cách ly Nhưng ta nhận thấy rằng việc kích relay
bằng các cách kể trên điều tốn khá nhiều linh kiện và không
gian trên mạch PCB Để giải quyết vấn đề trên, ta sử dụng IC
ULN2803
ULN2803 là một vi mạch đệm, bản chất cấu tạo là các mảngdarlington chịu được dòng đện lớn và điện áp cao, trong đó có
chứa 8 cặp transistor NPN ghép darlington cực góp hở với cực
phát chung Mỗi kênh của ULN2803 có một diode chặn có thể sử
dụng trong trường hợp tải có tính cảm ứng, ví dụ như các relay
ULN2803 có khả năng điều khiển 8 kênh riêng biệt, có thể nối
Trang 362803 có thể chịu được dòng điện lớn trong một khoảng thời gian
dài lên tới 500mA với biên độ đỉnh lên tới 600mA [7]
Hình 33: Cấu tạo của IC đệm dòng ULN2803
Bản chất của ULN2803 là các cổng NOT nên khi ta đưa tínhiệu mức thấp (0) vào đầu vào của IC thì đầu ra thả nổi, khi ta
đưa tín hiệu mức cao (1) thì đầu ra bằng 0
Hình 34: Kết nối 1 relay với ULN2803
Khi ta xuất tín hiệu mức cao vào chân số 1 của IC tín hiệuđầu ra ở chân 18 sẽ ở mức thấp, tương ứng với giá trị điện áp 0V
Do đó sẽ tạo chênh lệch điện áp giữa hai đầu cuộn dây bên
trong relay, giúp relay hút đóng tiếp điểm thường mở dẫn dòng
điện chạy qua
Trang 37Hình 35: Sơ đồ nguyên lý của mạch điều khiển thiết bị
Kết nối các chân đầu ra của IC 74HC595 với các chân đầuvào IC ULN2803 thay cho led ở ví dụ trước Khi vi điều khiển dịch
các bit mức cao vào 74HC595 thì các chân ở đầu ra sẽ xuất tín
hiệu vào ULN2803 làm cho các chân đầu ra xuất tín hiệu mức
thấp
1.4 Thiết kế mạch điều khiển trên phần mềm
Từ sơ đồ nguyên lý của mạch điều khiển thiết bị, ta xâydựng mạch PCB trên phần mềm Proteus Bổ sung thêm các led
báo trạng thái của thiết bị, tụ lọc nguồn, diot tránh ngược dòng,
điện trở thanh gắn vào các chân vào ra của IC 74HC595 và
ULN2803
Trang 38Hình 36: Schematic của mạch điều khiển thiết bị
Các chân kết nối vi điều khiển và module thu phát RF đượcđổi thành các connecter để khi ta làm mạch in, chỉ cần gắn bo
mạch vi điều khiển và module RF vào là có thể hoạt động được
Các điện trở thanh kéo xuống sau 74HC595 và kéo lên sau
ULN2803, có nhiệm vụ làm điện trở treo tránh tình trạng nhiễu
tín hiệu điều khiển
Sử dụng phần mềm Proteus(ISIS) để chuyển mạch nguyên lý
mà ta đã thiết kế từ trước sang chương trình Proteus(ARES) để
thiết kế và vẽ mạch PCB Toàn bộ các linh kiện có trong mạch
nguyên lý sẽ được chuyển sang ARES Sau khi sắp xếp các linh
kiện hợp lý trên diện tích nhất định
Hình 37: Vị trí các linh kiện sau khi được sắp xếp
Trang 39Tiến hành đi đây và đổ đồng sau khi đã sắp xếp các linhkiện Thông thường khi đi dây người ta thường sử dụng cách đi
dây tự động nhưng đối với những mạch có nhiều linh kiện và yêu
cầu tiết diện đi dây nhỏ thì cần phải đi dây bằng tay Dựa vào vị
trí của linh kiện và hướng của các liên kết, ta đi dây sao cho
mạch các đường đi của mạch ngắn nhất để đạt được hiệu suất
cao nhất
Hình 38: Mạch điều khiển sau khi đi dây đường mạch
Từ đây ta có thể xuất mạch in ra file ảnh bitmap, pdf để inmạch hoặc xuất ra file gerber để phay mạch trên máy CNC
Hình 39: Hình mô phỏng mạch điều khiển thiết bị
2 Mạch mở/khóa cửa bằng RFID
2.1 Giao tiếp SPI
SPI (tiếng Anh: Serial Peripheral Interface, SPI bus — Giaodiện Ngoại vi Nối tiếp, bus SPI) là một chuẩn đồng bộ nối tiếp để
truyền dữ liệu ở chế độ song công toàn phần full-duplex (hai
Trang 40giản và giá rẻ Đôi khi SPI còn được gọi là giao diện bốn-dây
(tiếng Anh: four-wire)
Khác với cổng nối tiếp chuẩn (tiếng Anh: standard serialport), SPI là giao diện đồng bộ, trong đó bất cứ quá trình truyền
nào cũng được đồng bộ hóa với tín hiệu đồng hồ tăctơ chung, tín
hiệu này sinh ra bởi thiết bị chủ động (bộ vi xử lí) Thiết bị ngoại
vi bên phía nhận (bị động) làm đồng bộ quá trình nhận chuỗi bit
với tín hiệu đồng hồ tăctơ Có thể kết nối một số vi mạch vào
mỗi giao diện ngoại vi nối tiếp của vi mạch-thiết bị chủ động
Thiết bị chủ động chọn thiết bị bị động để truyền dữ liệu bằng
cách kích hoạt tín hiệu "chọn chip" (tiếng Anh: chip select) trên
vi mạch bị động Thiết bị ngoại vi nếu không được chọn bởi bộ vi
xử lí sẽ không tham gia vào quá trình truyền theo giao diện SPI
[16]
Trong giao diện SPI có sử dụng bốn tín hiệu số:
- MOSI hay SI - cổng ra của bên chủ động, cổng vào của bên
bị động (tiếng Anh: Master Out Slave In), dành cho việctruyền dữ liệu từ thiết bị chủ động đến thiết bị bị động
- MISO hay SO - cổng vào của bên chủ động, cổng ra củabên bị động (tiếng Anh: Master In Slave Out), dành choviệc truyền dữ liệu từ thiết bị bị động đến thiết bị chủđộng
- SCLK hay SCK - tín hiệu đồng hồ tăctơ nối tiếp (tiếng Anh:
Serial Clock), dành cho việc truyền tín hiệu đồng hồ tăctơdành cho thiết bị bị động
- CS hay SS - chọn vi mạch, chọn bên bị động (tiếng Anh:
Chip Select, Slave Select)
Hình 40: Chuẩn giao tiếp SPI
2.2 Mạch đọc thẻ từ RFID
Như đã giới thiệu ở chương 2, RFID RC522 sử dụng chuẩngiao tiếp SPI để giao tiếp với vi xử lý Nó có thể đọc được các loại
thẻ có kết nối không dây như NFC, thẻ từ (loại dùng làm thẻ
giảm giá, thẻ xe bus, thẻ thành viên )