ĐỒ ÁN ỨNG DỤNG INTERNET OF THINGS - SMARTHOME
LỜI CÁM ƠN
Trong cuộc sống, cùng với những giây phút thành công, mỗi cá nhân cũng phải trải qua những giai đoạn khó khăn và mất định hướng. Trong những thời gian đó, song hành với sự nổ lực và bản lĩnh của cá nhân đó, sự giúp đỡ chân thành của những người thân và bạn bè xung quanh đóng một vai trò rất quan trọng để một con người có thể trở lại và bước tiếp để vượt qua nghịch cảnh. Trong suốt bốn năm học qua, cùng với sự tự nổ lực và học hỏi của bản thân, chúng em cũng nhận được những sự giúp đỡ từ rất nhiều phía để hôm nay có thể hoàn thành quyển luận văn này và kết thúc một hành trình đáng nhớ để bắt đầu một chuyến phiêu lưu mới đầy thử thách nhưng cũng nhiều thú vị trong sự nghiệp tương lai.
Trước hết, chúng em xin gửi lời cảm ơn sâu sắc đến gia đình, những người luôn theo giỏi và hỗ trợ về cả vật chất và tinh thần để chúng em có thể kết thúc bốn năm đại học. Chúng em cũng gửi lời cảm ơn chân thành tới thầy Phạm Hưng Thịnh, người đã giúp đỡ tụi em chọn đề tài, cũng như hướng dẫn em trong suốt thời gian thực hiện đề tài này từ lúc bắt đầu đồ án. Chúng em xin cảm ơn các quí Thầy Cô đã giảng dạy em, đặc biệt là các Thầy Cô giáo khoa Điện – Điện tử.
Quyển luận văn này được hoàn thành đúng thời gian quy định của trường mặc dù bước đầu tìm hiểu và thực hiện về những kiến thức mới gặp nhiều khó khăn, trở ngại. Nhờ sự hướng dẫn tận tình của Thầy cùng các ý kiến góp ý, hỗ trợ của các bạn sinh viên đã giúp em hoàn thành tốt đề tài trên. Mặc dù đã rất cố gắng, nhưng do kiến thức còn hạn chế cho nên sẽ không tránh khỏi những sai sót không mong muốn, mong thầy cô lượng thứ. Sau cùng chúng em xin kính chúc các Thầy Cô trong khoa Điện – Điện tử và thầy Phạm Hưng Thịnh thật nhiều sức khoẻ, gặt hái được nhiều thành công trong cuộc sống. Chúc các bạn trong trường đại học Bách Khoa có một tương lai thật rực rỡ và thành công sau khi tốt nghiệp.
TÓM TẮT LUẬN VĂN
Luận văn sử dụng hai loại vi điều khiển là Arduino và Raspberry Pi để điều khiển và nhận thông tin từ các thiết bị các thiết bị như đèn, tivi, máy lạnh,… trong một căn nhà. Các hệ thống được xây dựng trên mô hình IoT, liên kết với nhau bằng mạng kết nối Internet. Các thông tin và các lệnh điều khiển sẽ được đưa lên một trang web trên mạng Internet. Chủ căn nhà có thể điều khiển và điều chỉnh các thiết bị từ trang web này.
Điểm đặc biệt của đề tài là việc xây dựng ứng dụng có khả năng mở rộng hệ thống thiết bị trong Smarthome thông qua khả năng mở rộng kết nối giữa các loại vi điều khiển. Trong đề tài xây dụng Raspberry Pi là Node chính và các vi điều khiển Arduino khác là các Node phụ, từ đó hệ thống có thể thêm bớt thiết bị điều khiển thông qua ứng dụng Web.
MỤCLỤC
1. GIỚI THIỆU ............................................................................................................. 1
1.1. TỔNG QUAN ..................................................................................................... 1
1.2. TÌNH HÌNH NGHIÊN CỨU TRONG VÀ NGOÀI NƯỚC .............................. 4
2. LÝ THUYẾT............................................................................................................. 6
2.1. VI ĐIỀU KHIỂN ................................................................................................. 6
2.1.1. Raspberry Pi ................................................................................................. 8
2.1.1.1. Giới Thiệu Về Raspberry Pi................................................................ 8
2.1.1.2. Phụ Kiện Hỗ Trợ Kèm Theo ............................................................. 11
2.1.1.3. Làm Việc Với Raspberry Pi Qua Máy Tính ..................................... 12
2.1.2. Arduino Uno R3 ......................................................................................... 15
2.1.2.1. Phần Cứng Của Arduino Uno R3 ..................................................... 15
2.1.2.2. Arduino IDE ...................................................................................... 18
2.2. CẢM BIẾN........................................................................................................ 19
2.2.1. Giao Tiếp One-Wire ................................................................................... 19
2.2.1.1. Giới Thiệu Về Giao Tiếp One-Wire ................................................. 19
2.2.1.2. Về Cách Thức Hoạt Động ................................................................. 20
2.2.2. Cảm Biến Mưa............................................................................................ 21
2.2.3. Cảm Biến Nhiệt Độ DS18b20 .................................................................... 23
2.2.. Cảm Biến Độ Ẩm Đất ................................................................................ 24
2.2.4.1. Nguyên Lý......................................................................................... 24
2.2.4.2. Sơ Đồ Và Đặc Tính ........................................................................... 24
2.2.5. Cảm Biến Khí Gas ...................................................................................... 25
2.26. PIR .............................................................................................................. 27
2.2.6.1. Đặc Điểm .......................................................................................... 27
2.2.6.2. Nguyên Lý Làm Việc........................................................................ 28
2.2.7. Cảm Biến Độ Ẩm ....................................................................................... 29
2.2.7.1. Giới Thiệu ......................................................................................... 29
2.2.7.2. Nguyên Lý Hoạt Động ...................................................................... 30
2.3. KẾT NỐI CÓ DÂY – I2C ................................................................................. 32
2.3.1. Giới Thiệu I2C............................................................................................ 32
2.3.2. Các Chế Độ Hoạt Động Của I2C ............................................................... 34
2.4. CÁC ỨNG DỤNG ĐIỀU KHIỂN HỆ THỐNG ............................................... 38
2.4.1. Giới thiệu về IBM Bluemix ........................................................................ 38
2.4.2. Phương thức giao tiếp được sử dụng trên Waston IOT Platform............... 40
2.4.2.1. Tìm hiểu về MQTT ............................................................................. 40
2.4.2.2. Cách thức kết nối được sử dụng trên IBM IOT Platform ................... 41
2.4.2.3 JSON - JavaScript Object Notation ...................................................... 43
2.4.3. Web Application......................................................................................... 44
2.4.3.1. Mô Hình Client-Server ........................................................................ 44
2.4.3.2. Thiết Kế Giao Diện Web - Front-End ................................................. 45
2.4.3.3. Xây Dựng Back-end: ........................................................................... 47
2.4.4. Lưu Trữ Dữ Liệu Bằng Node-Red Trên Cloudant ..................................... 51
2.4.4.1. Node-RED – Một Dịch Vụ Phổ Biến Của IBM Bluemix ................... 51
2.4.4.2. Cloudant.com – Lưu trữ Dữ Liệu Trực Tuyến .................................... 51
3. THIẾT KẾ MÔ HÌNH NHÀ ................................................................................. 52
3.1. MÔ HÌNH NHÀ ................................................................................................ 52
3.2. MÔ HÌNH ĐÃ ĐƯỢC HOÀN THÀNH........................................................... 54
4. THIẾT KẾ ỨNG DỤNG ĐIỀU KHIỂN .............................................................. 55
4.1. GIAO DIỆN WEB VÀ CÁCH ĐIỀU KHIỂN.................................................. 55
4.2. LƯU TRỮ DỮ LIỆU ........................................................................................ 61
5. KẾT QUẢ THỰC HIỆN........................................................................................ 63
5.1 LƯU ĐỒ GIẢI THUẬT ..................................................................................... 63
5.2. KẾT QUẢ ĐO ĐẠC TẠI CÁC NODE ............................................................ 66
6. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ............................................................ 70
6.1. KẾT LUẬN ....................................................................................................... 70
6.2. KHUYẾT ĐIỂM ............................................................................................... 70
6.3. HƯỚNG PHÁT TRIỂN .................................................................................... 70
6.4. ỨNG DỤNG...................................................................................................... 70
7. TÀI LIỆU THAM KHẢO ..................................................................................... 71
8. PHỤ LỤC ................................................................................................................ 72
Nội dung đính kèm (DVD) ........................................................................................... 74
Mục lục hình
Hình 1.1 Internet of Things ..................................................................................... 1
Hình 1.2: Thiết bị cho nhà thông minh.................................................................... 3
Hình 1.3: Tương lai nhà thông minh ....................................................................... 4
Hình 1.4: Kết nối internet toàn cầu ......................................................................... 5
Hình 1.5: Doanh thu của nhà thông minh năm 2020............................................... 6
Hình 2.1: Tổng quan về vi xử lý.............................................................................. 7
Hình 2.2: Thiết bị điều khiển không dây ................................................................. 7
Hình 2.3: Hình ảnh thực tế của Raspberry Pi .......................................................... 8
Hình 2.4: Mô hình Board Raspberry Pi Model B 2011.12...................................... 8
Hình 2.5: Sơ đồ chân GPIO của Raspberry............................................................. 10
Hình 2.6: Phụ kiện kèm theo với Raspberry .......................................................... 11
Hình 2.7: Thông tin địa chỉ IP ................................................................................. 12
Hình 2.8: Giao diện raspi-config ............................................................................. 13
Hình 2.9: Giao diện PuTTY trên máy tính .............................................................. 14
Hình 2.10: Màn hình điều khiển Raspberry bằng SSH ........................................... 14
Hình 2.11: Arduino Uno R3 .................................................................................... 15
Hình 2.12: Các chân Arduino .................................................................................. 18
Hình 2.13: Giao diện Arduino IDE ......................................................................... 18
Hình 2.14: Sơ đồ Master-Salve ............................................................................... 19
Hình 2.15: Cảm biến mưa........................................................................................ 22
Hình 2.16: Cảm biến DS18B20 ............................................................................... 23
Hình 2.17: Sơ đồ nối dây sử dụng nhiều cảm biến……………………………….. 23
Hình 2.18: Sơ đồ chân MQ2.................................................................................... 25
Hình 2.19: Sơ đồ mắc MQ2..................................................................................... 26
Hình 2.20: Hình ảnh PIR ......................................................................................... 27
Hình 2.21: Bộ cảm biến dò ngang và nguyên lý phát hiện nguồn nhiệt ................ 28
Hình 2.22: Cảm biến độ ẩm DHT11 ....................................................................... 29
Hình 2.23: Sơ đồ chân ............................................................................................ 30
Hình 2.24: Sơ đồ kết nối I2C................................................................................... 33
Hình 2.25: Sơ đồ I2C ............................................................................................... 34
Hình 2.26 Sơ đồ sử dụng giao tiếp I2C…………………………………………… 34
Hình 2.27: Lưu đồ trong lúc truyền dữ liệu............................................................. 37
Hình 3.1 Các mô hình dịch vụ trên đám mây.......................................................... 38
Hình 3.2 . Mô hình dự án IoT trên Waston IoT Platform ....................................... 39
Hình 3.3. Client B và Client C subscribe sự kiện “current_draw”......................... 40
Hình 3.4 . Giá trị “current_draw” ở Client B và Client C nhận được khi A publish41. Hình 3.5 . Nhận mã xác thực API key từ service Watson IoT Platform ................. 42
Hình 3.6 Cấu trúc dữ liệu kiểu JSON…………………………………………….. 43
Hình 3.7 . Mô hình client-server ............................................................................. 43
Hình 3.8. Chương trình Hello World trong ngôn ngữ HTML ................................ 45
Hình 3.9 . Trước và sau khi có CSS……………………….……………………… 46
Hình 3.10 . Cấu trúc một đoạn javascript được nhúng vào tập tin HTML. ............ 46
Hinh 3.11 . Giao diện BeyondAdmin trên các loại thiết bị. .................................... 47
Hinh 3.12 Chương trình Hello World của framework Flask………………………48
Hình 3.13. Quá trình HTTP Polling ........................................................................ 49
Hình 3.14. Kĩ thuật WebSocket............................................................................... 50
Hình 3.15. Một chương trình đơn giản sử dụng Flask-SocketIO ............................ 50
Hình 3.16 . Trang chủ Node-RED ........................................................................... 51
Hình 4.1 . Mẫu nhà tổng quát .................................................................................. 52
Hình 4.2 . Tầng trệt.................................................................................................. 52
Hình 4.3 . Tầng 1 ..................................................................................................... 53
Hình 4.4 . Tầng 2 ..................................................................................................... 53
Hình 4.5 Mô hình thực tế đã được hoàn thành…………………………………….54
Hình 5.1 : Cài đặt các gói cần thiết cho Web .......................................................... 55
Hình 5.2 . Giao diện trang chính ............................................................................. 55
Hình 5.3. Giao diện trang chủ ................................................................................. 56
Hình 5.4 . Giao diện phòng với các nút điều khiển và thông tin cảm biến ............. 57
Hình 5.5 . Giao diện phòng với biểu đồ biểu thị thông tin cảm biến trong ngày .... 57
Hình 5.6 . Giao diện đầy đủ của trang Setting......................................................... 58
Hình 5.7 . Tạo Node mới, địa chỉ Node 0007 ......................................................... 59
Hình 5.8 . Tạo phòng mới tên “Garden” tại tầng 2 ................................................. 60
Hình 5.9. Tạo thiết bị bơm nước ở phòng “Garden” ............................................... 60
Hình 5.10 . Giao diện phòng “Garden” và thông báo thiết lập thành công............. 61
Hình 5.11 . Xây dựng ứng dụng Node-RED lưu trữ dữ liệu ................................... 61
Hình 5.12. Dữ liệu được lưu trữ trên Cloudant ....................................................... 62
Hình 5.13. Sơ đồ toàn bộ ứng dụng hệ thống SmartHome ..................................... 63
Hình 5.14. Lưu đồ giải thuật trên Arduino .............................................................. 64
Hình 5.15. Lưu đồ giải thuật trên Raspberry Pi ...................................................... 65
Hình 5.16 Thông tin trạng thái đọc được tại Raspberry Pi……………………..….66
Hình 5.17 Thông tin trạng thái đọc được tại Arduino...............................................67
Hình 5.18 . Xác nhận thao tác tắt một thiết bị...........................................................68
Hình 5.19. Trạng thái tại Arduino thông báo nhận tín hiệu điều khiển…………….68
Hình 5.20 . Kết quả trả về thông báo trạng thái thiết bị Light đã tắt……………….69
1. GIỚI THIỆU
1.1. TỔNG QUAN
Thuật ngữ ” Internet of things”( viết tắt là IOT) dạo gần đây xuất hiện khá nhiều và thu hút không ít sự quan tâm chú ý của thế giới công nghệ. Vì sự bùng nổ của IOT trong tương lai sẽ có tác động mãnh mẽ tới cuộc sống, công việc và xã hội loài người.
Thực tế, Internet of things đã manh nha từ nhiều thập kỷ trước. Tuy nhiên mãi đến năm 1999 cụm từ IOT mới được đưa ra bởi Kevin Ashton , Ông là một nhà khoa học đã sáng lập ra Trung tâm Auto-ID ở đại học MIT, nơi thiết lập các quy chuẩn toàn cầu cho RFID (một phương thức giao tiếp không dây dùng sóng radio) cũng như một số loại cảm biến khác.
Mạng lưới vạn vật kết nối Internet hoặc là Mạng lưới thiết bị kết nối Internet viết tắt là IoT (tiếng Anh: 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. Nói đơn giản là một tập hợp các thiết bị có khả năng kết nối với nhau, với Internet và với thế giới bên ngoài để thực hiện một công việc nào đó.
Hình 1.1 Internetof Things
Cisco, nhà cung cấp giải pháp và thiết bị mạng hàng đầu hiện nay dự báo: Đến năm
2020, sẽ có khoảng 50 tỷ đồ vật kết nối vào Internet, thậm chí con số này còn gia tăng nhiều hơn nữa. Một mạng lưới IoT có thể chứa đến 50 đến 100 nghìn tỉ đối tượng được kết nối và mạng lưới này có thể theo dõi sự di chuyển của từng đối tượng. Một con người sống trong thành thị có thể bị bao bọc xung quanh bởi 1000 đến 5000 đối tượng có khả năng theo dõi
Ứng dụng của IOT
IoT có ứng dụng rộng vô cùng, có thể kể ra một số thư như sau:
Quản lí chất thải
Quản lí và lập kế hoạch quản lí đô thị
Quản lí môi trường
Phản hồi trong các tinh huống khẩn cấp
Mua sắm thông minh
Quản lí các thiết bị cá nhân
Đồng hồ đo thông minh
Tự động hóa ngôi nhà
Nhà thông minh là một ứng dụng trong số các ứng dụng của IoT. Nhà thông minh (tiếng Anh: home automation, smart home hoặc Intellihome) là kiểu nhà được lắp đặt các thiết bị điện, điện tử có tác dụng tự động hoá hoàn toàn hoặc bán tự động, thay thế con người trong thực hiện một hoặc một số thao tác quản lý, điều khiển. Hệ thống điện tử này giao tiếp với chủ nhân nhà thông qua bảng điện tử đặt trong nhà, phần mềm điện thoại di động, máy tính bảng hoặc một giao diện web.
Trong căn nhà thông minh, đồ dùng trong nhà từ phòng ngủ, phòng khách đến toilet đều gắn các bộ điều khiển điện tử có thể kết nối với Internet và điện thoại di động, cho phép chủ nhân điều khiển vật dụng từ xa hoặc lập trình cho thiết bị ở nhà hoạt động theo lịch. Nhà thông minh ngoài ra còn có một số ứng dụng sáng tạo hơn, gồm hệ thống điều
khiển giải trí tại gia – loa công suất khác nhau, hệ thống điện thoại, liên lạc nội bộ, hệ thống tưới nước... Các thành phần của hệ thống nhà thông minh bao gồm các cảm biến (như cảm biến nhiệt độ, cảm biến ánh sáng hoặc do cử chỉ), các bộ điều khiển hoặc máy chủ và các thiết bị chấp hành khác. Nhờ hệ thống cảm biến, các bộ điều khiển và máy chủ có thể theo dõi các trạng thái bên trong ngồi nhà để đưa ra các quyết định điều khiển các thiết bị chấp hành một cách phù hợp nhằm đảm bảo môi trường sống tốt nhất cho con người.
Hình 1.2 Thiết bị cho nhà thông minh
Ngoài ra, cùng với sự phát triển của các thiết bị điện tử cá nhân như máy tính bảng và điện thoại thông minh, cac hệ thống nhà thông minh còn cung cấp khả năng tương tác với người sử dụng thông qua các thiết bị điện tử cá nhân cho phép con người có thể giám sát và điều khiển ngôi nhà từ bất cứ đâu. Hiện nay, trong lĩnh vực nhà thông minh, các kỹ sư vẫn đang tiếp tục sáng tạo để tạo ra nhiều tiện ích hơn nữa cho ngôi nhà cũng như tối ưu hoá về việc triển khai lắp đặt một ngôi nhà thông minh.
Trong tương lai, ngôi nhà thông minh có thể có khả năng "tư duy" để tự điều chỉnh các thiết bị một cách phù hợp và còn có khả năng giao tiếp với con người như trong các bộ phim viễn tưởng.
Hình 1.3 Tương lai nhà thông minh
Với sự phát triển vũ bảo của công nghệ thông tin, Internet, cùng với việc chi phí cho hệ thống nhà thông minh đã giảm xuống cùng với nhu cầu ngày càng cao của con người, hiện nay nhà thông minh được xem là một lĩnh vực có dư địa phát triển rất lớn. Theo hãng ABI Research, năm 2012 đã có hơn 1,5 triệu hệ thống nhà thông minh đã được lắp đặt ở Mỹ và dự kiến, con số này sẽ tăng đến 8 triệu vào năm 2017. Trong tương lai không xa, có thể hi vọng nhà thông minh sẽ là một xu hướng mới cho cuộc sống của con người hiện đại.[1]
1.2. TÌNH HÌNH NGHIÊN CỨU TRONG VÀ NGOÀI NƯỚC
Mặc dù đã manh nha từ lâu nhưng kỷ nguyên Internet of Things chỉ thực sự được sự được chú ý và bùng nổ trong những năm gần đây, sau sự phát triển của smartphone, tablet và những kết nối không dây…Và ngay sau khi nhận được sự chú ý của cộng đồng, IoT đã cho thấy tiềm năng của mình với những số liệu đáng kinh ngạc.
Hình 1.4 Kết nối internet toàn cầu
Cisco, nhà cung cấp giải pháp và thiết bị mạng hàng đầu hiện nay dự báo: Đến năm
2020, sẽ có khoảng 50 tỷ đồ vật kết nối vào Internet, bao gồm hàng tỷ thiết bị di động, tivi,
máy giặt, …
Để thấy được sự phát triển của lĩnh vực này, họ cũng đưa ra số liệu vào năm 1984, khi mà Cisco mới thành lập mới chỉ có khoảng 1.000 thiết bị được kết nối mạng toàn cầu, đến năm 2010, con số này đã lên mức 10 tỷ.
Intel, đơn vị mới tham gia vào thị trường sản xuất chip cho các thiết bị thông minh phục vụ IoT cũng đã thu về hơn 2 tỷ USD trong năm 2014 từ lĩnh vực này, tăng trưởng
19% so với năm 2013.
Và không thể không kể tới một thương hiệu Việt Nam là Bkav cũng đã đạt được những thành tựu đáng ghi nhận về Internet of Things. Hệ thống nhà thông minh SmartHome của Bkav là một tổ hợp các thiết bị thông minh trong 1 ngôi nhà, đều được kết nối Internet và có thể tự động điều chỉnh cũng như điều khiển qua smartphone. Sau hàng chục năm nghiên cứu và sản xuất, Bkav SmartHome đã có chỗ đứng nhất định trên thị trường và hoàn toàn có thể cạnh tranh với những giải pháp nhà thông minh khác trên thế giới.
Bên cạnh đó, các ông lớn như Google, Apple, Samsung, Microsoft cũng không hề giấu diếm ý định xâm nhập thị trường này, hứa hẹn một cuộc cạnh tranh mạnh mẽ trong thời gian tới đây, đưa kỷ nguyên IoT đến sớm hơn với mọi người.
Dự đoán tới năm 2020:
+ 4 tỷ người kết nối với nhau
+ 4 ngàn tỷ USD doanh thu
+ Hơn 25 triệu ứng dụng
+ Hơn 25 tỷ hệ thống nhúng và hệ thống thông minh
+ 50 ngàn tỷ Gigabytes dữ liệu
Hình 1.5 Doanh thu của nhà thông minh năm 2020
Vì thế, Internet of Thing đang là chìa khóa của thành công trong tương lai.
2. LÝ THUYẾT
2.1. VI ĐIỀU KHIỂN
Vi điều khiển là một hệ thống nhúng khép kín với các thiết bị ngoại vi, bộ xử lý và bộ nhớ. Ngày nay, phần lớn hệ thống nhúng của vi điều khiển được lập trình để ứng dụng trong các thiết bị điện tử tiêu dùng, bao gồm cả máy móc, điện thoại, thiết bị ngoại vi, xe hơi, đồ dùng điện lạnh trong gia đình… Do đó, vi điều khiển còn có tên gọi khác là “Bộ điều khiển nhúng”.
Hình 2.1 Tổng quan về vi xử lý
Có rất nhiều loại vi điều khiển được lập trình khác nhau, chủ yếu chúng được phân loại và lập trình chuyên sâu theo một số thông số cơ bản, bao gồm Bits, kích thước Flash, kích thước bộ nhớ RAM, số lượng các dòng đầu vào / đầu ra, loại bao bì, cung cấp điện áp và tốc độ.
Các vi điều khiển đều có thiết kế chung gồm chân đầu vào / đầu ra. Số lượng các chân khác nhau tùy thuộc vào vi điều khiển).
Vi điều khiển thường được sử dụng trong các thiết bị điều khiển tự động bao gồm các công cụ điện, đồ chơi, thiết bị y tế cấy dưới da, máy móc văn phòng, hệ thống điều khiển động cơ, thiết bị, điều khiển từ xa và hàng loạt các hệ thống nhúng khác.
Hình 2.2 Thiết bị điều khiển không dây
2.1.1. Raspberry Pi
2.1.1.1. Giới Thiệu Về Raspberry Pi
Raspberry Pi là một chiếc máy tính tí hon giá chỉ 35$ chạy hệ điều hành Linux ra mắt vào tháng 2 năm 2012.
Hình 2.3 Hình ảnh thực tế của Raspberry Pi
- Raspberry Pi chạy hệ điều hành Linux: 99% những thứ làm trên máy tính Windows đều có thể thực hiện được trên Linux và quan trọng là: tất cả đều miễn phí.
- Cộng đồng Raspberry Pi phát triển rất nhanh trên thế giới: hầu hết những thắc mắc của người dùng đều được giải đáp rất nhanh và còn hơn thế nữa: người dùng có thể tìm thấy hàng ngàn dự án đã thực hiện và vô số ý tưởng độc đáo.Với những ưu điểm độc đáo trên, Raspberry Pi đã vượt ra khỏi biên giới của trường học và trở thành thiết bị ưa thích của rất nhiều người đam mê điện tử và lập trình.
CẤU TẠO CỦA RASPBERRY PI
Hình 2.4 Mô hình Board Raspberry Pi Model B 2011.12
Trái tim của Raspberry Pi là chip SOC (System-On-Chip) Broadcom
BCM2835 chạy ở tốc độ 700MHz. Chip này tương đương với nhiều loại được sử dụng trong smartphone phổ thông hiện nay, và có thể chạy được hệ điều hành Linux. Tích hợp trên chip này là nhân đồ họa (GPU) Broadcom VideoCore IV. GPU này đủ mạnh để có thể chơi 1 số game phổ thông và phát video chuẩn full HD.
8 ngõ GPIO (General Purpose Input Output): đúng như tên gọi của nó, chúng ta có
thể kết nối và điều khiển rất nhiều thiết bị điện tử/cơ khí khác.
Ngõ HDMI: dùng để kết nối Raspberry Pi với màn hình máy tính hay tivi có hỗ trợ
cổngHDMI.
Ngõ RCA Video (analog): khi thiết kế Raspberry Pi người ta cũng tính đến trường hợp người sử dụng ở các nước đang phát triển không có điều kiện sắm một chiếc
tivi đời mới tích hợp cổng HDMI. Vì vậy cổng video analog này được thêm vào,
giúp người dùng có thể kết nối với chiếc tivi đời cũ mà không phải lo lắng.
Ngõ audio 3.5mm: kết nối dễ dàng với loa ngoài hay headphone. Đối với tivi có cổng HDMI, ngõ âm thanh được tích hợp theo đường tín hiệu HDMI nên không cần sử dụng ngõ audio này.
Cổng USB: Có thể mở rộng phạm vi ứng dụng nhờ vào việc tích hợp 2 cổng USB
2.0 để có thể kết nối với bàn phím, chuột hay webcam, bộ thu GPS… Vì Raspberry Pi chạy Linux nên hầu hết thiết bị chỉ cần cắm-và-chạy (Plug-&-Play) mà không cần cài driver phức tạp.
Cổng Ethernet: cho phép kết nối Internet tốc độ tối đa 100Mbps
Khe cắm thẻ SD: Raspberry Pi không tích hợp ổ cứng. Thay vào đó nó dùng thẻ SD
để lưu trữ dữ liệu. Toàn bộ hệ điều hành Linux sẽ hoạt động trên thẻ SD này vì vậy nó cần kích thước thẻ nhớ tối thiểu 4 GB và dung lượng hỗ trợ tối đa là 32GB.
Đèn LED: trên Pi có 5 đèn LED để hiển thị tình trạng hoạt động.
Sơ đồ các chân ngõ vào ra trên Raspberry Pi model B:
Hình 2.5 Sơ đồ chân GPIO của Raspberry
Đặc tính điện của các chân GPIO:
Có tổng cộng 26 chân được chia thành 2 hàng.
Các chân GPIO có điện áp ngõ ra là 3V3.
Dòng điện ngõ ra max trên các chân GPIO là 50 mA.
Nhiều chân có nhiều chức năng khác nhau. Ví dụ:
I2C Bus
Serial port
SPI bus
Pin 3 = I2C SDA Pin 5 = I2C SCL
Pin 8 = UART1 TXD Pin 10 = UART1 RXD
Pin 19 = SPI0 MOSI Pin 21 = SPI0 MISO Pin 23 = SPI0 SCLK Pin 24 = SPI0 CE0
Pin 26 = SPI0 CE1
2.1.1.2. Phụ Kiện Hỗ Trợ Kèm Theo
Raspberry Pi được bán dưới dạng một board mạch đơn lẻ không đi kèm phụ kiện nhằm giảm chi phí sản xuất, vì vậy người sử dụng có thể tự lựa chọn phụ kiện tùy theo mục đích sử dụng. Sau đây sẽ là tổng hợp một số phụ kiện hữu ích cho Pi:
Phụ kiện cơ bản:
Nguồn: loại có jack micro USB, 5V, tối thiểu 700mA.
Thẻ nhớ SD: đây là nơi lưu trữ toàn bộ hệ điều hành của Raspberry Pi và cả dữ liệu do
đó nên đầu tư thẻ nhớ thật tốt, tốc độ từ class 6 trở lên. Pi hoạt động trên thẻ nhớ có dung
lượng ít nhất là 4 GB.
Bàn phím + chuột: là hai thành phần nhập liệu cơ bản của máy tính.
Cáp mạng: để kết nối Internet hoặc kết nối với máy tính. Chỉ cần cáp RJ45 bình thường, bắt chéo hay không đều được
Cáp màn hình: tùy theo loại màn hình sử dụng mà tương thích với cáp HDMI-HDMI
hoặc HDMI-DVI hoặc HDMI-VGA hay RCA Video.
Case bảo vệ: để tránh vô tình chạm vào mạch điện của Raspberry Pi hoặc bảo vệ
Hình 2.6 Phụ kiện kèm theo với Raspberry Pi
Phụ kiện mở rộng:
Webcam hoặc Pi camera module (25$): cả hai đều hoạt động tốt trên Raspberry
Pi. Điểm khác biệt là webcam kết nối qua USB còn camera module sử dụng khe cắm CSI có sẵn trên Raspberry Pi.
Wifi USB dongle: Raspberry Pi hỗ trợ dùng thiết bị wifi dongle để kết nối Pi với mạng wifi thông qua qua cổng USB. 2 sản phẩm được sử dụng phổ biến là Edimax
EW-7811Un và Ralink RT5370 vì rất nhỏ gọn, giá thành rẻ (khoảng 10$) và hoạt
động tốt trên Pi.
Màn hình cảm ứng: gắn lên Raspberry Pi thay cho bàn phím và chuột giá bán khoảng 30$.
2.1.1.3. Làm Việc Với Raspberry Pi Qua Máy Tính
Trong nhiều ứng dụng có không gian hạn chế chẳng hạn như dùng Raspberry Pi để điều khiển cửa tự động thì người ta thường không muốn kết nối rườm rà màn hình, bàn phím, chuột lên Raspberry Pi mà vẫn có thể khiển được nó. Khi đó ta có thể sử dụng 2 công nghệ phổ biến để điều khiển Raspberry Pi từ xa bằng một máy tính khác là SSH và VNC. Mỗi công nghệ có đặc điểm riêng phù hợp với từng ứng dụng mà mình sẽ trình bày sau đây.
Yêu cầu chung: phải biết địa chỉ IP của thiết bị được điều khiển. Trong trường hợp này ta cần biết địa chỉ IP của Raspberry Pi bằng cách gõ từ LXTerminal ta gõ command
line sau:
Hình 2.7 Thông tin địa chỉ IP
Ở phần eth0, inet addr chính là địa chỉ IP. Trong hình minh họa trên, địa chỉ IP chính là
192.168.1.9.
Lưu ý: đây là địa chỉ IP động nên có thể thay đổi sau mỗi lần khởi động lại Raspberry. Có thể chỉnh thành IP tĩnh bằng lệnh:
sudo nano /etc/network/interfaces
trong phần eth0 đặt các thông số địa chỉ IP như mong muốn rồi lưu lại và thoát ra bằng cách nhấn Ctrl + X. Khởi động lại Raspberry để có hiệu lực.
- Giao tiếp Raspberry Pi bằng SSH
SSH là viết tắt của Secure Shell, là một phương thức trao đổi dữ liệu an toàn và đơn giản. Để sử dụng SSH ta phải cài đặt trên cả Raspberry Pi lẫn máy tính.
- Cài đặt SSH server trên Raspberry Pi
Raspbian đã tích hợp sẵn SSH nên để sử dụng chúng ta chỉ cần activate SSH server ở menu
Rasp-config bằng cách gõ ở LXTerminal:
sudoraspi-config
Lúc này màn hình Raspi-config sẽ hiện ra cho phép tùy chỉnh nhiều thông số hệ thống của
Hình 2.8 Giao diện raspi-config
- Cài đặt SSH client trên máy tính Windows
Hình 2.9 Giao diện PuTTY trên máy tính
Hình 2.10 Màn hình điều khiển Raspberry bằng SSH
Như đã thấy, điều khiển Raspberry Pi bằng SSH khá đơn giản. SSH sử dụng rất ít tài nguyên máy của Raspberry Pi do không phải chạy phần đồ họa vì vậy thích hợp cho các ứng dụng cần nhiều tài nguyên tính toán.Tuy nhiên nhược điểm của SSH là chỉ cho phép truy cập vào môi trường dòng lệnh. Trong trường hợp cần điều khiển desktop của Pi thì VNC (Virtual Network Computing) là một giải pháp tốt.
2.1.2. Arduino Uno R3
Arduino là một bo mạch vi điều khiển do một nhóm giáo sư và sinh viên Ý thiết kế và đưa ra đầu tiên vào năm 2005. Mạch Arduino được sử dụng để cảm nhận và điều khiển nhiều đối tượng khác nhau. Nó có thể thực hiện nhiều nhiệm vụ từ lấy tín hiệu từ cảm biến đến điều khiển đèn, động cơ, và nhiều đối tượng khác. Ngoài ra mạch còn có khả năng liên kết với nhiều module khác nhau như module đọc thẻ từ, ethernet shield, sim900A,… để tăng khả ứng dụng của mạch.
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,….
2.1.2.1. Phần Cứng Của Arduino Uno R3
Hình 2.11 Arduino Uno R3
1. Cáp USB Đây là dây cáp thường được bán kèm theo bo, dây cáp dùng để cắm vào máy tính để nạp chương trình cho bo và dây đồng thời cũng lấy nguồn từ nguồn usb của máy tính để cho bo hoạt động.
2. IC Atmega 16U2 IC này được lập trình như một bộ chuyển đổi USB –to-Serial
dùng để giao tiếp với máy tính thông qua giao thức Serial (dùng cổng COM).
3. Cổng nguồn ngoài Cổng nguồn ngoài nhằm sử dụng nguồn điện bên ngoài như
pin, bình acquy hay các adapter cho bo Arduino hoạt động.
4. Cổng USB Cổng USB trên bo Arduino dùng để kết nối với cáp USB
5. Nút reset Nút reset được sử dụng để reset lại chương trình đang chạy. Đôi khi chương trình chạy gặp lỗi, người dùng có thể reset lại chương trình..
6. ICSP của ATmega 16U2 ICSP là chữ viết tắt của In-Circuit Serial Programming.
Đây là các chân giao tiếp SPI của chip Atmega 16U2.
7. Chân xuất tín hiệu ra Có tất cả 14 chân xuất tín hiệu ra trong Arduino Uno, những chân có dấu ~ là những chân có thể băm xung (PWM), tức có thể điều khiển tốc độ động cơ hoặc độ sáng của đèn. Hình 2 thể hiện rất rõ những chân để băm xung này.
8. IC ATmega 328 IC Atmega 328 là linh hồn của bo mạch Arduino Uno, IC này
được sử dụng trong việc thu thập dữ liệu từ cảm biến, xử lý dữ liệu, xuất tín hiệu ra,…
9. Chân ICSP của ATmega 328 Các chân ICSP của ATmega 328 được sử dụng cho các giao tiếp SPI (Serial Peripheral Interface
10. Chân lấy tín hiệu Analog Các chân này lấy tín hiệu Analog (tín hiệu tương tự)
từ cảm biến để IC Atmega 328 xử lý. Có tất cả 6 chân lấy tín hiệu Analog, từ A0 đến A5.
11. Chân cấp nguồn cho cảm biến Các chân này dùng để cấp nguồn cho các thiết bị bên ngoài như role, cảm biến, RC...
12. Các linh kiện khác trên board Arduino Uno Ngoài các linh kiện đã liệt kê bên trên, Arduino Uno còn 1 số linh kiện đáng chú ý khác. Trên bo có tất cả 4 đèn led, bao gồm
1 led nguồn (led ON nhằm cho biết boa đã được cấp nguồn), 2 led Tx và Rx, 1 led L. Các led Tx và Rx sẽ nhấp nháy khi có dữ liệu truyền từ board lên máy tính hoặc ngược lại thông qua cổng USB. Led L được được kết nối với chân số
13. Led này được gọi là led on board (tức led trên bo), led này giúp người dùng có thể thực hành các bài đơn giản mà không cần dùng thêm led ngoài.
Trong 14 chân ra của bo còn có 2 chân 0 và 1 có thể truyền nhận dữ liệu nối tiếp TTL. Có một số ứng dụng cần dùng đến tính năng này, ví dụ như ứng dụng điều khiển mạch Arduino Uno qua điện thoại sử dụng bluetooth HC05. Thêm vào đó, chân 2 và chân
3 cũng được sử dụng cho lập trình ngắt (interrupt), đồng thời còn 1 vài chân khác có thể được sử dụng cho các chức năng khác, như được thể hiện ở hình 3. Bảng 1 thể hiện thêm
Hình 2.12 Các chân Arduino
2.1.2.2. Arduino IDE
Là một nền tảng mã nguồn mở được sử dụng để xây dựng các ứng dụng điện tử. Arduino gồm có board mạch có thể lập trình được ( thường gọi là vi điều khiển ) và các phần mềm hỗ trợ phát triển tích hợp IDE (Integrated Development Environment) dùng để soạn thảo, biên dịch code và nạp chương cho board.Chương trình được cung cấp từ trang chủ của Arduino (arduino.cc) và phù hợp với nhiều phiên bản window và hệ điều hành khác nhauIDE lập trình trên nền tảng C.
Hình 2.13: Giao diện Arduino IDE
2.2. CẢM BIẾN
2.2.1. Giao Tiếp One-Wire
2.2.1.1. Giới Thiệu Về Giao Tiếp One-Wire
One-Wire là một hệ thống bus giao tiếp với thiết bị được thiết kế bởi Dallas Semiconductor Corp. Chuẩn này cung cấp cả dữ liệu tốc độ thấp, truyền tín hiệu, và nguồn nuôi qua cùng một chân tín hiệu đơn. 1-Wire cũng tương tự như giao tiếp I²C, nhưng với tốc độ truyền dữ liệu thấp và khoảng cách xa hơn. Là chuẩn giao tiếp không đồng bộ và bán song công (half – duplex). Trong giao tiếp này tuân theo mối liên hệ chủ tớ một cách chặt chẽ. Trên một bus có thể gắn 1 hoặc nhiều thiết bị slave. Nhưng chỉ có một master có thể kết nối với bus này. Nó thường được sử dụng để giao tiếp với các thiết bị nhỏ giá rẻ như nhiệt kế kĩ thuật số và công cụ đo thời tiết.
Bus dữ liệu khi ở trạng thái rảnh ( không có dữ liệu trên đường truyền) phải ở mức cao do vậy bus dữ liệu phải được kéo lên nguồn thông qua một điện trở. Giá trị điện trở này có thể tham khảo trong datesheet của thiết bị slave.
Hình 2.14: Sơ đồ Master-Salve
Các thiết bị slave kết nối với cùng một bus được phân biệt với nhau nhờ 64 bit địa chỉ duy nhất(64-bit serial number). 8 byte (64 bit) này được chia làm 3 phần chính:
+ LSB: là byte đầu tiên là mã họ thiết bị có độ lớn 8 bit (8 bit family codes) xác định kiểu thiết bị.
+ 6 byte tiếp theo là địa chỉ riêng của từng thiết bị.
+ MSB: là byte cuối cùng, là byte kiểm tra tính toàn ven dữ liệu cyclic redundancy check (CRC) có giá trị tương ứng với giá trị của 7 byte đầu tiên. Byte CRC giúp cho master xác định địa chỉ được đọc có bị lỗi hay không.
Với 224 địa chỉ khác nhau tạo ra một số lượng rất lớn các địa chỉ. Do vậy vấn đề về
địa chỉ không phải là vấn đề chính trong chuẩn giao tiếp này.
2.2.1.2. Về Cách Thức Hoạt Động
Tín hiệu trên bus 1 wire chia thành các khe thời gian 60µs. 1 bit dữ liệu được truyền trên bus dựa trên khe thời gian (time slots). Thiết bị master cần có bộ định thời với độ chính xác cao, để đảm bảo giao tiếp đúng với các thiết bị salve có thời nên khác biết. Do đó cần phải tuân theo giới hạn thời gian được mô tả trong các 4 thao tác hoạt động cơ bản của 1 wire. Bốn thao tác hoạt động cơ bản của bus 1 wire là Reset/Presence, gửi bit 1, gửi bit 0, và đọc bit .
Gửi bit 1 (Write 1” signal)
Thiết bị master kéo bus xuống mức thấp trong khoảng 1 đến 15 µs. Sau đó nhả bus
cho đến hết phần còn lại của thời gian.
Gửi bit 0 (“Write 0” signal)
Kéo bus xuống mức thấp trong ít nhất 60 µs, với chiều dài tối đa là 120 µs.
Giữa các lần gửi bit 1 hoặc 0 phải có thời gian phục hồi bus tối thiểu là 1 µs.
Đọc bit
Thiết bị master kéo bus xuống mức thấp từ 0 -15 µs. Khi đó thiết bị salve sẽ giữ bus
ở mức thấp nếu muốn gửi bit 0. Nếu muốn gửi bit 1 đơn giản là nhả bus. Bus nên lấy mẫu
15 µs sau khi bus kéo xuống mức thấp.
Reset/ Presence
Tín hiệu reset và presence được trình bày như hình dưới. Thiết bị master kéo bus xuống thấp ít nhất 8 khe thời gian ( 480 µs) và sau đó nhả bus. Khoảng thời gian bus ở mức thấp đó gọi là tín hiệu reset. Nếu có thiết bị salve gắn trên bus nó sẽ trả lời bằng tín hiệu Presence tức là thiết bị salve sẽ kéo bus xuống mức thấp trong khoảng thời gian 60 µs. Nếu không có tín hiệu Presence, thiết bị master sẽ hiểu rằng không có thiết bị slave nào tren bus, và các giao tiếp tiếp theo sẽ không diễn ra.
2.2.2. Cảm Biến Mưa
Cảm Biến Nước Mưa sử dụng để phát hiện mực nước, trời mưa, hay các môi trường có nước. Mạch cảm biến mưa được đặt ngoài trời để kiểm tra trời có mưa không, qua đó truyền tín hiệu điều khiển đóng / ngắt rơ le.
Mạch cảm biến mưa gồm 2 bộ phận:
+ bộ phận cảm biến mưa được gắn ngoài trời
+ bộ phận điều chỉnh độ nhạy cần được che chắn