ĐỒ án hệ thống điều khiền và giám sát ngôi nhà thông minhĐỒ án hệ thống điều khiền và giám sát ngôi nhà thông minhĐỒ án hệ thống điều khiền và giám sát ngôi nhà thông minhĐỒ án hệ thống điều khiền và giám sát ngôi nhà thông minhĐỒ án hệ thống điều khiền và giám sát ngôi nhà thông minhĐỒ án hệ thống điều khiền và giám sát ngôi nhà thông minhĐỒ án hệ thống điều khiền và giám sát ngôi nhà thông minhĐỒ án hệ thống điều khiền và giám sát ngôi nhà thông minhĐỒ án hệ thống điều khiền và giám sát ngôi nhà thông minhĐỒ án hệ thống điều khiền và giám sát ngôi nhà thông minhĐỒ án hệ thống điều khiền và giám sát ngôi nhà thông minhĐỒ án hệ thống điều khiền và giám sát ngôi nhà thông minhĐỒ án hệ thống điều khiền và giám sát ngôi nhà thông minh
Trang 1-o0o - NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP
GVHD: ThS Đỗ Hoàng Ngân Mi
I Đề tài: "HỆ THỐNG GIÁM SÁT NGÔI NHÀ THÔNG MINH"
II Các tham số ban đầu:
- Nguồn cấp cho mạch động lực: 12V DC hoặc 220V AC
- Nguồn cấp cho mạch điều khiển: 3.3V DC hoặc 5V DC
- Để phát hiện đối tượng và điều khiển các thiết bị sử dụng các bộ cảm biến, phần mềm blynk
III Nội dung cần khảo sát và thiết kế:
- Tổng quan về các hệ thống thông minh có trong thực tế
- Tìm hiều một hệ thống điều khiển thông minh trong thực tế, từ đó tìm hiều quy trình công nghệ của một hệ thống điều khiển một đối tượng nào đó
- Phân tích, đánh giá các mô hình của SV đã làm
- Thiết kế và chế tạo mô hình hệ thống giám sát ngôi nhà thông minh (điều khiển tối thiểu 5 đối tượng khác nhau, theo nhiệt độ, độ ẩm của đối tượng hoặc phạm vi giám sát)
- Phân tích, tính toán các bộ phận cơ khí và truyền động
- Tính chọn các phần tử và các thiết bị điều khiển, cảm biến …
- Lập trình điều khiển hệ thống dùng arduino, esp8266
- Kết luận
IV Các phần cần phải làm và nộp:
- Tập đồ án
- Bản vẽ sơ đồ nguyên lý A0
- Đĩa CD gồm file Word đề tài và file Powerpoint
- Mô hình chế tạo
V Thời gian hoàn thành đồ án: 20 tháng 3 năm 2017
Kiểm tra tiến độ đồ án Đà Nẵng, ngày tháng 4 năm 2017
(Giáo viên HD ký mỗi lần SV đến Giáo viên hướng dẫn
gặp thông qua đồ án)
Trang 2
Trang 3
Trang 4
LỜI NÓI ĐẦU
Ngày nay cùng với sự phát triển mạnh mẽ của các ngành khoa học kỹ thuật, công nghệ kỹ thuật điện tử mà trong đó là kỹ thuật tự động điều khiển đóng vai trò quan trọng trong mọi lĩnh vực khoa học kỹ thuật, quản lí, công nghiệp, cung cấp thông tin Do đó là một sinh viên chuyên ngành Điện tự động chúng ta phải biết nắm bắt và vận dụng nó một cách có hiệu quả nhằm góp phần vào sự phát triển nền khoa học kỹ thuật thế giới nói chung và trong sự phát triển kỹ thuật điện tử nói riêng Bên cạnh đó còn là sự thúc đẩy sự phát triển của nền kinh tế nước nhà
Như chúng ta đã biết,nhu cầu về cuộc sống ngày càng được nâng cao,nên nhu câu về sự tiện nghi trong ngôi nhà ở cũng không nằm ngoài xu thế đó Ngoài ra các
vụ việc đột nhập nhà ở không những gây thiệt hại lớn về tài sản của các gia đình mà còn tạo sự lo lắng cho nhiều người, ảnh hưởng đến an toàn trật tự của toàn xã hội.Theo khảo sát thì phần lớn các vụ trộm cắp tài sản của các gia đình chủ yếu xảy
ra khi tất cả mọi người trong gia đình đều đã đi làm hoặc ngủ say Nên có một hệ thống cảnh báo sẽ giảm được phần lớn thiệt hại Các thiết bị trong nhà ở được điều khiển một cách tự động cũng như giám sát từ xa sẽ đem lại một cuộc sống thoải mái cho mọi thành viên trong gia đình
Để giám sát được ngôi nhà và tài sản một cách 24/24 chúng ta cần phải có một phương tiện giám sát hiệu quả hơn, thông minh hơn
Do đó, tôi chọn để tài “ Hệ thống giám sát ngôi nhà thông minh” làm đề tài tốt nghiệp của mình
Trang 5MỤC LỤC
LỜI NÓI ĐẦU 1
MỤC LỤC 2
CHƯƠNG 1: GIỚI THIỆU TỔNG QUAN VỀ ĐỀ TÀI 6
1.1 VAI TRÒ VÀ ỨNG DỤNG CỦA ARDUINO HIỆN NAY 6
1.1.1 Giới thiệu về arduino 6
1.1.2 Ứng dụng arduino trong thực tế 6
1.2 LÝ DO CHỌN ĐỀ TÀI 8
1.3 MỤC ĐÍCH CỦA ĐỀ TÀI 9
1.4 MỤC TIÊU VÀ PHẠM VI NGHIÊN CỨU 9
1.5 CÁC PHƯƠNG PHÁP NGHIÊN CỨU 9
CHƯƠNG 2: TỔNG QUAN VỀ HỆ THỐNG WIFI, GIỚI THIỆU CHIP ESP8622 VÀ BOARD ARDUINO UNO 10
2.1 GIỚI THIỆU VỀ CÔNG NGHỆ WIFI 10
2.1.1 Nguyên tắc hoạt động 10
2.1.2 Các chuẩn kết nối 11
2.2 GIỚI THIỆU VỀ MODULE ESP8622 14
2.2.1 Tổng quan về module esp8622 14
2.2.2 Tính năng của chip esp8622 14
2.2.3 Sơ đồ chân 15
2.2.4 Tập lệnh AT giao tiếp với Module ESP8266 15
2.2.5 Các phương pháp kết nối thiết bị với esp8266 17
2.3 GIỚI THIỆU VỀ BOARD ARDUINO 22
2.3.1 Cấu tạo phần cứng 22
2.3.2 Môi trường lập trình board mạch Arduino 23
2.3.3 Các loại Board mạch Arduino 23
2.3.5 Sơ đồ chân board arduino uno 26
2.3.6 Các thông số của board arduino uno 27
2.4 TỔNG QUAN VỀ PHẦN MỀM BLYNK 47
2.4.1 Giới thiệu phần mềm blynk 47
2.4.2 Thao tác đối với phần mềm blynk 48
Trang 6CHƯƠNG 3: THIẾT KẾ VÀ LẮP RÁP MÔ HÌNH NGÔI NHÀ THÔNG
MINH 51
3.1 SƠ ĐỒ KHỐI TỔNG QUÁT CỦA HỆ THỐNG 51
3.2 KHỐI GIAO TIẾP MẠNG WIFI 52
3.3 KHỐI XỬ LÝ TRUNG TÂM 53
3.4 KHỐI CẢM BIẾN 54
3.4.2 Cảm biến nhiệt độ độ ẩm DHT22 56
3.5 KHỐI CƠ CẤU CHẤP HÀNH 57
3.5.1 Rơ le 57
3.5.2 Động cơ servo 58
3.5.3 Còi báo động 60
3.5.4 Động cơ một chiều 61
3.6 KHỐI HIỂN THỊ LCD 62
3.6.1Chức năng 62
3.6.2 Thiết kế: 63
3.7 KHỐI NGUỒN 65
CHƯƠNG 4 LẬP TRÌNH TRƯỜNG TRÌNH ĐIỀU KHIỂN 67
4.1 TRƯƠNG TRÌNH ĐIỀU KHIỂN ARDUINO 67
4.1.1 lưu đồ thuật toán ardiuno 67
4.1.2 Chi tiết trương trình điều khiển arduino 68
4.2 TRƯƠNG TRÌNH ĐIỀU KHIỂN ESP8266 71
4.2.1 Lưu đồ thuật toán esp8266 71
4.2.2 Chi tiết trương trình điều khiển esp8266 72
CHƯƠNG 5 KIỂM TRA ĐÁNH GIÁ VÀ HƯỚNG PHÁT TRIỂN 76
5.1 KIỂM TRA HỆ THỐNG 76
5.2 KẾT QUẢ 76
5.3 KẾT LUẬN 77
TÀI LIỆU THAM KHẢO 78
Trang 82.29 Led sáng dần từ led 1 đến led 10 và ngược lại 42
Trang 9CHƯƠNG I: GIỚI THIỆU TỔNG QUAN VỀ ĐỀ TÀI
1.1 VAI TRÒ VÀ ỨNG DỤNG CỦA ARDUINO HIỆN NAY
1.1.1 Giới thiệu về arduino
Arduino: 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ỗi trợ IDE (Integrated Development Environment)
dùng để soạn thảo, biên dịch code và nạp chương cho board
Arduino ngày nay rất phổ biến cho những người mới bắt đầu tìm hiểu về điện
tử vì nó đơn giản, hiệu quả và dễ tiếp cận Không giống như các loại vi điều khiển khác, Arduino không cần phải có các công cụ chuyên biệt để phục vụ việc nạp code,
ví dụ để nạp code cho PIC cần phải có Pic Kit Đối với Arduino rất đơn giản, ta có thể kết nối với máy tính bằng cáp USB
Arduino thực sự đã gây sóng gió trên thị trường người dùng DIY (là những người tự chế ra sản phẩm của mình) trên toàn thế giới trong vài năm gần đây, gần giống với những gì 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 phải ngạc nhiên về m Arduino ra đời tại thị trấn Ivrea thuộc nước Ý và được đặt theo tên một vị vua vào thế kỷ thứ 9 là King Arduin Arduino chính thức được đưa ra giới thiệu vào năm 2005 như là một công cụ khiêm tốn dành cho các sinh viên của giáo sư Massimo Banzi, là một trong những người phát triển Arduino, tại trường Interaction Design Instistute Ivrea (IDII) Mặc dù hầu như không được tiếp thị gì cả, tin tức về Arduino vẫn lan truyền với tốc độ chóng mặt nhờ những lời truyền miệng tốt đẹp của những người dùng đầu tiên Hiện nay Arduino nổi tiếng tới nỗi có người tìm đến thị trấn Ivrea chỉ để tham quan nơi đã sản sinh ra Arduino
1.1.2 Ứng dụng arduino trong thực tế
Máy in 3d
Một cuộc cách mạng khác cũng đang âm thầm định hình nhờ vào Arduino, đó
là sự phát triển máy in 3D nguồn mở Reprap Máy in 3D là công cụ giúp tạo ra các vật thể thực trực tiếp từ các file CAD 3D Công nghệ này hứa hẹn nhiều ứng dụng rất thú vị trong đó có cách mạng hóa việc sản xuất cá nhân
Trang 10Hình 1.1 Máy in 3D Makerbot điều khiển bằng Arduino Mega2560
Thiết bị bay không người lái (UAV)
UAV là một ứng dụng đặc biệt thíchhợp với Arduino do chúng có khả năng xử
lý nhiều loại cảm biến như Gyro, accelerometer, GPS…; điều khiển động cơ servo
và cả khả năng truyền tín hiệu từ xa
Hình 1.2 thiết bị UAV
Trang 11Điều khiển nhà thông minh (Smart Home)
Kết hợp với các module chức năng bluetooth hoặc wifi , với các ứng dụng cài đặt trên máy tính bảng, smartphone hay trình duyệt web người dùng có thể thiết
kế hệ thống điều khiển giám sát thông minh các thiết bị điện trong ngôi nhà của mình khi ở trong nhà hoặc từ bất cứ nới nào (được kết nối internet)
Hình 1.3 Arduino Điều khiển nhà thông minh với Máy tính bảng và smartphone
1.2 LÝ DO CHỌN ĐỀ TÀI
Kỹ thuật điều khiển và tự động hóa là ngành công nghệ liên quan đến việc ứng dụng các kỹ thuật cơ khí hiện đại, kỹ thuật điều khiển và kỹ thuật máy tính vào việc vận hành và điều khiển quá trình sản xuất
Ngày nay, khi nhu cầu và thị hiếu con người ngày càng cao, yêu cầu về số lượng và chất lượng của các sản phẩm xã hội cũng không ngừng tăng, điều đó đòi hỏi các dây chuyền sản xuất trong công nghiệp ngày càng hiện đại, có mức độ tự động hóa ngày càng cao với việc sử dụng các kỹ thuật điều khiển hiện đại có trợ giúp của máy tính Hệ thống điều khiển và tự động hóa có mặt trong mọi dây chuyền sản xuất của các ngành kinh tế khác nhau như: công nghiệp, nông nghiệp,
Trang 12giao thông vận tải,…
Vì vậy một hệ thống điều khiển thông minh và hoàn toàn tự động là một xu
thế tất yếu Ưng dụng hệ thống thông minh vào điều khiển cac thiết bị nhà ở và sân vườn vẫn còn khá mới mẻ ở Việt Nam Nhóm đã quyết ddingj chộn đề tài ngôi nhà thông minh để làm đề trài nguyên cứu của mình để đón đầu xu thế đó
1.3 MỤC ĐÍCH CỦA ĐỀ TÀI
Nhóm xây dựng đề tài đã chọn theo hướng xây dựng hệ thống sử dụng arduino
và esp8266 để quản lý ở nơi mà con người phải bỏ sức ra để thực hiện một công việc lặp đi lặp lại hằng ngày Nhằm bỏ qua sự tác động của con người, con người
sẽ không phải bận tâm quá nhiều đến việc quản lý ngôi nhà Mang lại một cuộc sống thoải mái
1.4 MỤC TIÊU VÀ PHẠM VI NGHIÊN CỨU
Nhóm thực hiện đề tài đã đặt ra mục tiêu nghiên cứu cụ thể như sau: tìm hiểu
về nguyên tắc hoạt động của công nghệ số trên module Arduino và ESP8266 Biết cách ứng dụng trên ardunio IDE Tìm hiểu hoạt động của cảm biến quang, cũng như cảm biến nhiệt độ và độ ẩm
Do giới hạn về thời gian nghiên cứu cũng như kiến thức chuyên ngành nên nhóm thực hiện đề tài chỉ tập trung nghiên cứu một số vấn đề chính xoay quanh đề tài như: Tìm hiểu và cài đặt các công cụ hỗ trợ lập trình arduinon IDE Tìm hiểu hoạt động của các thiết bị trong hệ thống
1.5 CÁC PHƯƠNG PHÁP NGHIÊN CỨU
Chúng em khi thực hiện đề tài đã sử dụng các phương pháp nghiên cứu đề tài sau:
+ Phương pháp phân tích tổng hợp lý thuyết
+ Phương pháp tham khảo tài liệu
+ Phương pháp thực nghiệm
v Cụ thể:
+ Tìm hiểu Arduino phần cứng và tập lệnh
+ Viết chương trình điều khiển bằng phần mềm Arduino IDE
+ Thiết kế các bộ phận của mô hình
+ Lắp ráp hoàn thiện mô hình ngôi nhà thông minh
Trang 13CHƯƠNG II: TỔNG QUAN VỀ HỆ THỐNG WIFI,
GIỚI THIỆU CHIP ESP8622 VÀ BOARD ARDUINO UNO
2.1 GIỚI THIỆU VỀ CÔNG NGHỆ WIFI
Wifi là viết tắt của từ Wireless Fidelity trong tiếng Anh, được gọi chung là
mạng không dây sử dụng sóng vô tuyến Wifi là loại sóng vô tuyến tương tự như
sóng điện thoại, sóng truyền hình và radio Hầu hết các thiết bị sử dụng điện tử hiện
nay như : Smartphone, Máy tính bảng, Tivi, Laptop… đều có thể kết nối được
Wi-Fi Và Wifi là thứ gắn liền và không thể thiếu với đời sống của người dân trong hầu hết công việc cũng như giải trí hàng ngày
Kết nối Wifi dựa trên các loại chuẩn kết nối IEEE 802.11, và chủ yếu hiện nay Wifi hoạt động trên băng tần 54 Mbps và có tín hiệu mạnh nhất trong khoảng cách
100 feet gần 31 mét
2.1.1 Nguyên tắc hoạt động
Hình 2.1 Nguyên tắc hoạt động của wifi
Truyền thông qua mạng không dây là truyền thông vô tuyến hai chiều.Cụ thể:
Thiết bị adapter không dây (hay bộ chuyển tín hiệu không dây) của máy tính chuyển đổi dữ liệu sang tín hiệu vô tuyến và phát những tín hiệu này đi bằng
một ăng-ten
Trang 14Thiết bị router không dây nhận những tín hiệu này và giải mã chúng Nó gởi thông tin tới Internet thông qua kết nối hữu tuyến Ethernet
Qui trình này vẫn hoạt động với chiều ngược lại, router nhận thông tin từ Internet, chuyển chúng thành tín hiệu vô tuyến và gởi đến adapter không dây của máy tính
Sóng WIFI: Các sóng vô tuyến sử dụng cho WiFi gần giống với các sóng vô tuyến sử dụng cho thiết bị cầm tay, điện thoại di động và các thiết bị khác Nó có thể chuyển và nhận sóng vô tuyến, chuyển đổi các mã nhị phân 1 và 0 sang sóng vô tuyến và ngược lại
Tuy nhiên, sóng WiFi có một số khác biệt so với các sóng vô tuyến khác ở chỗ:
Chúng truyền và phát tín hiệu ở tần số 2.5 GHz hoặc 5GHz Tần số này cao
hơn so với các tần số sử dụng cho điện thoại di động, các thiết bị cầm tay và truyền 2.1.2 Các chuẩn kết nối
Hình 2.2 Các chuẩn kết nối wifi
Chúng truyền và phát tín hiệu ở tần số 2.4 GHz hoặc 5 GHz Tần số này cao hơn so với các tần số sử dụng cho điện thoại di động, các thiết bị cầm tay và truyền hình Tần số cao hơn cho phép tín hiệu mang theo nhiều dữ liệu hơn
Chuẩn 802.11
IEEE 802.11 là một tập các chuẩn của tổ chức IEEE (tiếng Anh: Institute of Electrical and Electronic Engineers) bao gồm các đặc tả kỹ thuật liên quan đến hệ
Trang 15thống mạng không dây Chuẩn IEEE 802.11 mô tả một giao tiếp “truyền qua không khí” (tiếng Anh: over-the-air) sử dụng sóng vô tuyến để truyền nhận tín hiệu giữa một thiết bị không dây và tổng đài hoặc điểm truy cập (tiếng Anh: access point), hoặc giữa 2 hay nhiều thiết bị không dây với nhau
Năm 1997, IEEE giới thiệu chuẩn mạng không dây đầu tiên và đặt tên nó là 802.11 Khi đó, tốc độ hỗ trợ tối đa của mạng này chỉ là 2 Mbps với bang tầng 2.4GHz
Chuẩn 802.11b
IEEE đã mở rộng trên chuẩn 802.11 gốc vào tháng Bảy năm 1999, đó chính là chuẩn802.11b Chuẩn này hỗ trợ băng thông lên đến 11Mbps, tương quan với Ethernet truyền thống
802.11b sử dụng tần số vô tuyến (2.4 GHz) giống như chuẩn ban đầu 802.11 Các hãng thích sử dụng các tần số này để chi phí trong sản xuất của họ được giảm Các thiết bị 802.11b có thể bị xuyên nhiễu từ các thiết bị điện thoại không dây (kéo dài), lò vi sóng hoặc các thiết bị khác sử dụng cùng dải tần 2.4 GHz Mặc dù vậy, bằng cách cài đặt các thiết bị 802.11b cách xa các thiết bị như vậy có thể giảm được hiện tượng xuyên nhiễu này
· Ưu điểm của 802.11b – giá thành thấp nhất; phạm vi tín hiệu tốt và không dễ
bị cản trở
· Nhược điểm của 802.11b – tốc độ tối đa thấp nhất; các ứng dụng gia đình có thể xuyên nhiễu
Chuẩn 802.11a
Được phát triển song song cùng với chuẩn 802.11b, chuẩn 802.11a hỗ trợ tốc
độ tối đa gần gấp 5 lần lên đến 54 Mpbs và sử dụng bằng tầng 5Ghz nhằm tránh bị nhiễu từ các thiết bị khác Tuy nhiên, đây cũng là nhược điểm của chuẩn này vì phạm vi phát sẽ hẹp hơn (40-100m) và khó xuyên qua các vật cản như vách tường Chuẩn này thường được sử dụng trong các mạng doanh nghiệp thay vì gia đình vì giá thành của nó khá cao
Chuẩn 802.11g
Năm 2003, chuẩn Wifi thế hệ thứ 3 ra đời và mang tên 802.11g Chuẩn này được kết hợp từ chuẩn a và b Được hỗ trợ tốc độ 54Mpbs như chuẩn a và sử dụng băng tầng 2.4GHz của chuẩn b vì vậy chuẩn này có phạm vi tín hiệu khá tốt (80-200m) và vẫn dễ bị nhiễu từ các thiết bị điện tử khác Ngày nay, một số hộ gia đình vẫn còn sử dụng chuẩn này
Trang 16· Ưu điểm của 802.11g – tốc độ cao; phạm vi tín hiệu tốt và ít bị che khuất
· Nhược điểm của 802.11g – giá thành đắt hơn 802.11b; các thiết bị có thể bị xuyên nhiễu từ nhiều thiết bị khác sử dụng cùng băng tần
Chuẩn 802.11n (hay 802.11 b/g/n)
Đây là chuẩn được sử dụng phổ biến nhất hiện nay và tương đối mới Chuẩn WiFi 802.11n được đưa ra nhằm cải thiện chuẩn 802.11g bằng cách sử dụng công nghệ MIMO (Multiple-Input Multiple-Output) tận dụng nhiều anten hơn
Chuẩn kết nối 802.11n hỗ trợ tốc độ tối đa lên đến 600 Mpbs, có thể hoạt động trên cả băng tần 2,4 GHz và 5 GHz, nếu router hỗ trợ thì hai băng tần này có thể cùng phát sóng song song Chuẩn kết nối này đã và đang dần thay thế chuẩn 802.11g với tốc độ cao, phạm vi tín hiệu rất tốt (từ 100-250m) và giá thành đang ngày càng phù hợp với túi tiền người tiêu dùng
· Ưu điểm của 802.11n – tốc độ nhanh và phạm vi tín hiệu tốt nhất; khả năng chịu đựng tốt hơn từ việc xuyên nhiễu từ các nguồn bên ngoài
· Nhược điểm của 802.11n – chuẩn vẫn chưa được ban bố, giá thành đắt hơn 802.11g; sử dụng nhiều tín hiệu có thể gây nhiễu với các mạng 802.11b/g ở gần Chuẩn 802.11ac (hay chuẩn 802.11 a/b/g/n/ac)
Trong khoảng một năm trở lại đây chúng ta được nghe nhắc nhiều đến chuẩn Wi-Fi 802.11ac, hay còn gọi là Wi-Fi thế hệ thứ năm Nó là chuẩn mạng không dây đang ngày càng xuất hiện nhiều hơn trên các router, máy tính và tất nhiên là cả các thiết bị di động như smartphone So với Wi-Fi 802.11n đang được dùng phổ biến hiện nay, chuẩn 802.11ac mang lại tốc độ nhanh hơn
Là chuẩn Wifi mới nhất được IEEE giới thiệu Chuẩn ac có hoạt động ở băng tầng 5 GHz và tốc độ tối đa lên đến 1730 Mpbs khi sử dụng lại công nghệ đa anten trên chuẩn 802.11n cho người dùng trải nghiệm tốc độ cao nhất
Hiện tại, chuẩn này được sử dụng trên một số thiết bị cao cấp của các hang điện thoại như Apple, Samsung, Sony,… Tuy nhiên, do giá thành khá cao nên các thiết bị phát tín hiệu cho chuẩn này chưa được phổ biến trên thị trường nên mặc dù các thiết bị này không hoạt động tối ưu khi sử dụng bởi sự hạn chế của các thiết bị phát
Wifi Hotspot
Đây là tính năng mà thiết bị của bạn có thể phát sóng Wifi cho các thiết bị điện thoại, laptop, máy tính bảng khác Nói cách khác tính năng này biến chiếc Smartphone thành một chiếc Modem wifi
Trang 17WiFi có thể hoạt động trên cả ba tần số và có thể nhảy qua lại giữa các tần số khác nhau một cách nhanh chóng Việc nhảy qua lại giữa các tần số giúp giảm thiểu
sự nhiễu sóng và cho phép nhiều thiết bị kết nối không dây cùng một lúc
2.2 GIỚI THIỆU VỀ MODULE ESP8622
2.2.1 Tổng quan về module esp8622
Kít ESP8266 là kít phát triển dựa trên nền chíp Wifi SoC ESP8266 với thiết kế
dễ dàng sửa dụng vì tích hợp sẵn mạch nạp sử dụng chíp CP2102 trên borad Bên trong ESP8266 có sẵn một lõi vi sử lý vì thế bạn có thể trực tiếp lập trình cho ESP8266 mà không cần thêm bất kì con vi sử lý nào nữa Hiện tại có hai ngôn ngữ
có thể lập trình cho ESP8266, sử dụng trực tiếp phần mềm IDE của Arduino để lập trình với bộ thư viện riêng hoặc sử dụng phần mềm node MCU
Module ESP8266 là module wifi giá rẻ và được đánh giá rất cao cho các ứng dụng liên quan đến Internet và Wifi cũng như các ứng dụng truyền nhận sử dụng thay thế cho các module RF khác
ESP8266 là một chip tích hợp cao, được thiết kế cho nhu cầu của một thế giới kết nối mới, thế giới Internet of thing (IOT) Nó cung cấp một giải pháp kết nối mạng Wi-Fi đầy đủ và khép kín, cho phép nó có thể lưu trữ các ứng dụng hoặc để giảm tải tất cả các chức năng kết nối mạng Wi-Fi từ một bộ xử lý ứng dụng
ESP8266 có xử lý và khả năng lưu trữ mạnh mẽ cho phép nó được tích hợp với các bộ cảm biến, vi điều khiển và các thiết bị ứng dụng cụ thể khác thông qua GPIOs với một chi phí tối thiểu và một PCB tối thiểu
2.2.2 Tính năng của chip esp8622
§ SDIO 2.0, SPI, UART
§ 32-pin QFN ( Chip esp8266)
§ Tích hợp RF switch, balun, 24dBm PA, DCXO, and PMU
§ Tích hợp bộ xử lý RISC, trên chip bộ nhớ và giao diện bộ nhớ bên ngoài
§ Tích hợp bộ vi xử lý MAC / baseband
§ Chất lượng quản lý dịch vụ
§ Giao diện I2S cho độ trung thực cao ứng dụng âm thanh
§ On-chip thấp học sinh bỏ học điều chỉnh tuyến tính cho tất cả các nguồn cung cấp nội bộ
§ Kiến trúc giả miễn phí thế hệ đồng hồ độc quyền
§ Tích hợp WEP, TKIP, AES, và các công cụ WAPI
Trang 182.2.3 Sơ đồ chân
Hình 2.3 Sơ đồ chân esp8622
UTXD (TX) – chân truyền tín hiệu của module nối với chân RX của vi điều khiển URXD(RX) – chân truyền tín hiệu của module nối với chân RX của vi điều khiển RST – chân reset cứng của module Reset xảy ra khi tín hiệu xuống mức thấp GPIO0, GPIO2, CH_PD nối với mức cao
VCC: Nối với 3.3V
GND: Nối với 0V
Hình 2.4 Hình ảnh thực tế module esp8622
2.2.4 Tập lệnh AT giao tiếp với Module ESP8266
Khi sử dụng giao tiếp UART để gửi lệnh AT đến Module ESP 8266, chúng ta phải gửi kềm kí tư <CR><LF> để báo kết thúc lệnh
Lệnh Kiểm tra kết nối: AT
Kết quả trả về: OK nếu kết nối không bị lỗi
Lệnh Reset module: AT + RST
Trang 19Trả về: Ready sau khi reset thành công module
Lệnh kiểm tra phiên bản module: AT+GMR
Trả về môt dãy số là mã phiên bản module
Lệnh cài đặt module hoạt động ở chế độ trạm phát wifi, điểm truy cập wifi: AT+CWMODE=3
Trả về: Ok sau khi cài đặt thành công
Lệnh tìm các mạng wifi đang có: AT+CWLAP
Kết quả trả về là danh sách các mạng wifi mà module có thể bắt được
Lệnh truy cập vào mạng wifi khác
AT+CWJAP=”<access_point_name>”,”<password>”
Sau khi truy cập thành công, trả về : Ok
Lệnh lấy đỉa chỉ IP của module AT+CIFSR
Trả về một dãy số là địa chỉ IP của module
Lệnh đặt tên và mật khẩu cho mạng wifi do module ESP8266 phát ra:
Sử dụng lệnh CIPSTART để chọn kênh kết nối (0-4), phương thức
truyền(TCP/UDP), địa chỉ IP của website (or domain) và cổng kết nối
ví dụ: AT+CIPSTART=4,”TCP”,”google.com”,80
nếu thành công, module trả về: ok
Linked
Sử dụng lệnh AT + CIPSEND để báo kênh truyền và số byte của địa chỉ
websever mình cần lấy dữ liệu
ví dụ: địa chỉ: “ GET / HTTP/1.0\r\n\r\n” có 18 byte sẽ phải gửi lệnh:
AT + CIPSEND=4,18
Sau khi gửi lệnh này, module sẽ trả về dấu “>”
Đến đây chúng ta sẽ gửi địa chỉ của websever mà chúng ta cần lấy dữ liệu
GET / HTTP/1.0
Module sẽ trả về SEND OK
Và sau đó module sẽ trả về một loạt dữ liệu module nhận được từ web sever (Chuỗi json: JavaScript Object Notation) , phân tích chuỗi json này để lấy được dữ liệu cần
Trang 20thiết
2.2.5 Các phương pháp kết nối thiết bị với esp8266
2.2.5.1 Truyền dữ liệu với wed server
Với demo này, chúng ta sẽ lập trình Arduino gửi AT commands để module ESP-01 thành 1 thiết bị Wifi, kết nối vào mạng Wifi xung quanh, gửi lệnh PING lên
1 web server và nhận response từ web server đó
Về phần cứng, chúng ta sẽ kết nối Arduino Due và ESP-01 như hình sau:
Hình 2.5 kết nối Arduino Due và ESP-01
Công việc còn lại là lập trình board Due trên Arduino IDE để gửi các lệnh AT command cần thiết
Flow chương trình trên Arduino sẽ như sau:
· Gửi lệnh “AT” để kiểm tra kết nối module với ESP-01 và đợi nhận “OK” từ ESP8266
· Gửi lệnh “AT+CWMODE=1” để module ESP-01 hoạt động như 1 thiết bị Wifi
· Gửi lệnh “AT+CWJAP=\”<tên mạng wifi>\”,\”<password>\” ” để chọn mạng Wifi và password để kết nối
Các bạn có thể thay thế <tên mạng wifi> và <password> tương ứng với mạng Wifi của mình nha
Sau khi lệnh này, chúng ta cần đợi vài giây để module ESP-01 tìm và kết nối vào mạng Wifi đã chọn, trong code chúng ta có thể đợi đến khi nhận được“OK” từ ESP8266
· Gửi lệnh “AT+PING=\”google.com\” ” để ping server của Google
Trang 21· Nhận PING response từ module ESP-01
2.2.5.2 Giao tiếp smarphone dùng esp8266
Trong demo này, chúng ta sẽ tạo 1 ứng dụng trong đó smartphone sẽ trao đổi
dữ liệu với thiết bị có ESP8266 Chúng ta có thể sử dụng 1 wifi router trung gian giữa 2 thiết bị Wifi là ESP8266 và smartphone Cách khác đơn giản và hiệu quả hơn
là sử dụng ESP8266 như là 1 rounter để kết nối với smartphone, do đó sẽ không cần router trung gian nữa Chúng ta sẽ chọn cách đơn giản bằng cách sử dụng module ESP-01 như 1 Access Point để smartphone có thể kết nối vào mạng Wifi tạo bởi module ESP-01 Đồng thời chúng ta cũng tạo TCP server và UDP server trên ESP8266 để truyền nhận dữ liệu với smartphone thông qua các port TCP, UDP
Về phần cứng chúng ta sẽ sử dụng board Arduino ATmega2560, module
ESP-01 và iPhone như hình bên dưới:
Hình 2.6 kết nối với smartphone
2.2.5.3 Truyền dữ liệu TCP với smartphone
Các lệnh AT commands được sử dụng theo thứ tự như sau:
· Gửi lệnh “AT” đầu tiên để kiểm tra giao tiếp, kết nối với module ESP-01
· Gửi lệnh “AT+CWMODE=2” để module ESP-01 hoạt động như 1 Access Point
· Gửi lệnh “AT+CWSAP=\”ESP_HTelectronics\”,\”\”,5,0″ đẻ tạo mạng Wifi tên là “ESP_HTelectronics”, không security và không password
· Gửi lệnh “AT+CIPMUX=1” để cho phép các kết nối TCP/UDP
· Gửi lệnh “AT+CIPSERVER=1,1234” để tạo 1 TCP server, port 1234 trên module ESP-01
Trang 22· Liên tục kiểm tra dữ liệu nhận được từ port 1234 gửi lên từ ESP-01 và xử lý
dữ liệu tương ứng
· Sau khi nạp code vào board ATmega2560, chúng ta sẽ dùng smartphone kết nối với module ESP-01 trong Wifi setting, sau đó mở app WIFI TCP Test Tool để truyền/nhận dữ liệu với board Arduino
Trên phone, chúng ta sẽ connect vào TCP port 1234 đã được mở trong ESP8266 và gửi dòng text “Who are you”, khi ESP-01 nhận được sẽ trả lời “I’m ESP_HTelectronics” lên smartphone và chúng ta thấy hiện trong phần Received data của app Với nguyên lý này, chúng ta có thể tạo thiết bị IoT sử dụng ESP8266
để giao tiếp trực tiếp với Smartphone
2.2.5.4 Truyền dữ liệu UDP với smartphone
Tương tự như demo trên, nhưng chúng ta sẽ thử truyền dữ liệu thông qua UDP server trên ESP8266
Các lệnh AT commands được sử dụng theo thứ tự như sau:
· Gửi lệnh “AT” đầu tiên để kiểm tra giao tiếp, kết nối với module ESP-01
· Gửi lệnh “AT+CWMODE=2” để module ESP-01 hoạt động như 1 Access Point
· Gửi lệnh “AT+CWSAP=\”ESP_HTelectronics\”,\”\”,5,0″ đẻ tạo mạng Wifi tên là “ESP_HTelectronics”, không security và không password
· Gửi lệnh “AT+CIPMUX=1” để cho phép các kết nối TCP/UDP
· Gửi lệnh “AT+CIPSTART=0,\”UDP\”,\”255.255.255.255\”,1234,1234,2″ để tạo 1 UDP server, port 1234 trên module ESP-01
· Liên tục kiểm tra dữ liệu nhận được từ port 1234 gửi lên từ ESP-01 và xử lý
dữ liệu tương ứng
Tương tự như demo trên, chúng ta sẽ mở app WIFI UDP Test Tool để truyền nhận dữ liệu với board ATmega2560 thông qua ESP-01
2.2.5.5 Giao tiếp giữa hai module ESP8266
Chúng ta đã đi qua 2 demo sử dụng 2 chế độ hoạt động của ESP8266 là chế độ thiết bị Wifi và chế độ Access Point Trong phần demo này chúng ta sẽ tạo 1 ứng dụng trong đó 2 board arduino sẽ giao tiếp trực tiếp với nhau qua mạng Wifi được tạo bởi ESP8266 Chúng ta có thể ứng dụng demo này trong các mạng wireless sensor trong đó các thiết bị IoT là các node và nói chuyện trực tiếp với nhau mà không cần smartphone hay router hay web server ở trung gian
Về kết nối phần cứng thì chúng ta sẽ giả lập 2 node trong 1 network dùng 2
Trang 23board ATmega2560 và board Due cùng với 2 module ESP-01 như hình bên dưới:
Hình 2.7 kết nối hai module esp8266
Chúng ta sẽ lập trình board Due truyền AT commands để xác lập module
ESP-01 thành 1 Access Point và 1 UDP server; và lập trình board ATmega truyền AT commands để xác lập module ESP-01 thành 1 thiết bị Wifi Hai module ESP8266 sẽ kết nối trực tiếp với nhau và truyền/nhận dữ liệu thông qua UDP server/client Các lệnh AT commands truyền từ board Due như sau:
· Gửi lệnh “AT” đầu tiên để kiểm tra giao tiếp, kết nối với module ESP-01
· Gửi lệnh “AT+CWMODE=2” để module ESP-01 hoạt động như 1 Access Point
· Gửi lệnh “AT+CWSAP=\”ESP_HTelectronics\”,\”\”,5,0″ đẻ tạo mạng Wifi tên là “ESP_HTelectronics”, không security và không password
· Gửi lệnh “AT+CIPMUX=1” để cho phép các kết nối TCP/UDP
· Gửi lệnh “AT+CIPSTART=0,\”UDP\”,\”255.255.255.255\”,1234,1234,2″ để tạo 1 UDP server, port 1234 trên module ESP-01
· Liên tục kiểm tra dữ liệu nhận được từ port 1234 gửi lên từ ESP-01 và xử lý
dữ liệu tương ứng
Các lệnh AT commands truyền từ board ATmega2560 như sau:
Trang 24· Gửi lệnh “AT” đầu tiên để kiểm tra giao tiếp, kết nối với module ESP-01
· Gửi lệnh “AT+CWMODE=1” để module ESP-01 hoạt động như 1 thiết bị Wifi
· Gửi lệnh “AT+CWJAP=\”ESP_HTelectronics\”,\”\”” để kết nối vào mạng Wifi “ESP_HTelectronics” được tạo bởi thiết bị bên board Due Sau lệnh này chúng
ta cần đợi vài giây để module ESP-01 kết nối vào mạng Wifi Chúng ta sẽ liên tục nhận dữ liệu từ ESP8266 đến khi nhận được “OK”
· Gửi lệnh “AT+CIPMUX=1” để cho phép các kết nối TCP/UDP
· Gửi lệnh “AT+CIPSTART=0,\”UDP\”,\”192.168.4.1\”,1234,1234,2″ để kết nối vào UDP server, port 1234 trên server có địa chỉ IP là 192.168.4.1 Lưu ý địa chỉ IP mặc định của ESP8266 là 192.168.4.1, do đó chúng ta có thể hardcode trong code của UDP client Nếu ESP8266 bên UDP Server thay đổi địa chỉ IP thì chúng ta cần thay đổi bên UDP client để 2 module ESP-01 có thể kết nối UDP với nhau
· Gửi dữ liệu là text “Who are you” vào UDP port đã kết nối
· Nhận dữ liệu truyền lại từ UDP server bên board Due
Dưới đây là cửa sổ COM của board Due và board ATmega2560 khi hoạt động:
Hình 2.8 Lệnh AT kết nối hai esp8266
Done! Chúng ta đã demo quá trình nạp firmware cung cấp sẵn cho ESP8266
để hoạt động như 1 wifi độc lập và thực hiện 3 demo cho việc sử dụng AT commands để điều khiển module ESP-01 trong các ứng dụng giao tiếp qua mạng Wifi Thông qua các demo, chúng ta có thể dùng ESP8266 để kết nối web server
Trang 25trên internet thông qua 1 wireless router trong nhà, hoặc giao tiếp trực tiếp với smartphone, hoặc giao tiếp lẫn nhau trong 1 mạng wireless network Tất cả chức năng trên có thể được thực hiện bằng cách gửi các lệnh AT commands đơn giản, dễ hiểu Nếu chúng ta muốn thêm tính năng giao tiếp wifi cho 1 thiết bị có sẵn thì sử dụng firmware có sẵn của ESP8266 là tối ưu và tiết kiệm thời gian nhất; nhưng nếu chúng ta muốn sử dụng ESP8266 vừa giao tiếp wifi, vừa điều khiển thiết bị thì cần phải lập trình 1 firmware mới dùng bộ thư viện SDK của Espressif
2.3 GIỚI THIỆU VỀ BOARD ARDUINO
2.3.1 Cấu tạo phần cứng
Một mạch Arduino bao gồm một vi điều khiển AVR với nhiều linh kiện bổ sung giúp dễ dàng lập trình và có thể mở rộng với các mạch khác Một khía cạnh quan trọng của Arduino là các kết nối tiêu chuẩn của nó, cho phép người dùng kết nối với CPU của board với các module thêm vào có thể dễ dàng chuyển đổi, được
gọi là shield Vài shield truyền thông với board Arduino trực tiếp thông qua các
chân khách nhau, nhưng nhiều shield được định địa chỉ thông qua serial bus nhiều shield có thể được xếp chồng và sử dụng dưới dạng song song Arduino chính thức thường sử dụng các dòng chip megaAVR, đặc biệt là ATmega8, ATmega168, ATmega328, ATmega1280, và ATmega2560 Một vài các bộ vi xử lý khác cũng được sử dụng bởi các mạch Aquino tương thích Hầu hết các mạch gồm một bộ điều chỉnh tuyến tính 5V và một thạch anh dao động 16 MHz (hoặc bộ cộng hưởng ceramic trong một vài biến thể), mặc dù một vài thiết kế như LilyPad chạy tại
I²C-8 MHz và bỏ qua bộ điều chỉnh điện áp onboard do hạn chế về kích cỡ thiết bị Một
vi điều khiển Arduino cũng có thể được lập trình sẵn với một boot loader cho phép đơn giản là upload chương trình vào bộ nhớ flash on-chip, so với các thiết bị khác thường phải cần một bộ nạp bên ngoài Điều này giúp cho việc sử dụng Arduino được trực tiếp hơn bằng cách cho phép sử dụng 1 máy tính gốc như là một bộ nạp chương trình
Theo nguyên tắc, khi sử dụng ngăn xếp phần mềm Arduino, tất cả các board được lập trình thông qua một kết nối RS-232, nhưng cách thức thực hiện lại tùy thuộc vào đời phần cứng Các board Serial Arduino có chứa một mạch chuyển đổi giữa RS232 sang TTL Các board Arduino hiện tại được lập trình thông qua cổng USB, thực hiện thông qua chip chuyển đổi USB-to-serial như là FTDI FT232 Vài biến thể, như Arduino Mini và Boarduino không chính thức, sử dụng một board adapter hoặc cáp nối USB-to-serial có thể tháo rời được, Bluetooth hoặc các
Trang 26phương thức khác (Khi sử dụng một công cụ lập trình vi điều khiển truyền thống thay vì ArduinoIDE, công cụ lập trình AVR ISP tiêu chuẩn sẽ được sử dụng.)
Board Arduino sẽ đưa ra hầu hết các chân I/O của vi điều khiển để sử dụng cho những mạch ngoài Diecimila, Duemilanove, và bây giờ là Uno đưa ra 14 chân I/O kỹ thuật số, 6 trong số đó có thể tạo xung PWM (điều chế độ rộng xung) và 6 chân input analog, có thể được sử dụng như là 6 chân I/O số Những chân này được thiết kế nằm phía trên mặt board, thông qua các header cái 0.10-inch (2.5 mm) Nhiều shield ứng dụng plug-in cũng được thương mại hóa Các board Arduino Nano, và Arduino-compatible Bare Bones Board và Boarduino có thể cung cấp các chân header đực ở mặt trên của board dùng để cắm vào các breadboard
Có nhiều biến thể như Arduino-compatible và Arduino-derived Một vài trong
số đó có chức năng tương đương với Arduino và có thể sử dụng để thay thế qua lại Nhiều mở rộng cho Arduino được thực thiện bằng cách thêm vào các driver đầu ra, thường sử dụng trong các trường học để đơn giản hóa các cấu trúc của các 'con rệp'
và các robot nhỏ Những board khác thường tương đương về điện nhưng có thay đổi
về hình dạng-đôi khi còn duy trì độ tương thích với các shield, đôi khi không Vài biến thể sử dụng bộ vi xử lý hoàn toàn khác biệt, với các mức độ tương thích khác nhau
2.3.2 Môi trường lập trình board mạch Arduino
Thiết kế board mạch nhỏ gọn, trang bị nhiều tính năng thông dụ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 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à cực kỳ lớn
Môi trường lập trình Arduino IDE có thể chạy trên ba nền tảng phổ biến nhất hiện nay là Windows, Macintosh OSX 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 ngôn 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 C vào chương trình nếu muốn
2.3.3 Các loại Board mạch Arduino
Arduino Uno.Nó có 14 chân dữ liệu số, có thế cấu hình làm chân lấy tín hiệu
Trang 27vào hoặc xuất tín hiệu ra là tùy bạn 6 chân tương tự đầu vào 5V, độ phân giải 1024 mức Tốc độ 16MHz, điện áp vào từ 7~12V, chân số có thể cấp điện áp ra 5V và 1A, nếu bạn điều khiển chân số ra tiêu tốn quá 1A thì Board sẽ bị hỏng.Kích thước broad5,5x7cm
Arduino Micro Board này có thiết kế nhỏ, dành cho các không gian lắp đặt nhỏ, nhẹ kích thước khoảng 5x2cm Board này giống với Arduino Uno Có 20
chân số, trong đó có 7 chân có thể phát xung PWM 12 chân tương tự
Arduino Pro/Pro Micro Nhìn chung thiết kế giúp Arduino Uno Có 2 loại,
3.3V và 5V Nó không được thiết kế chân sẵn nên khi sử dụng bạn có thể hàn trực
tiếp nhằm tiết kiệm không gian
Arduino Nano Board này có kích thước nhỏ nhất gồm 14 chân số (6 chân
PWM) và 8 chân tương tự Kích thước khoảng 2x4cm Nhỏ gọn, dễ lắp đặt ở bất kỳ
đâu
Sau đây là các Board có thiết kế cao cấp hơn:
Arduino Mega Có thiết kế hoạt động tương tự Arduino UNO, tuy nhiên có số
lượng chân vào ra lớn với 54 chân Số (14 chân PWM), 16 chân tương tự và 4 cổng truyền nối tiếp (RS232) dễ dàng giao tiếp với các board, thiết bị khác Kích thước
5x10cm
Arduino Leonardo Đây là board có thiết kế giống Arduino Micro, sự khác
biệt lớn nhất giữa nó và các board khác là nó không có cổng USB dành cho việc lập trình Mọi thứ được đặt trong 1 chip điều khiển, cho phép giao tiếp thông qua cổng COM ảo và cho phép nó giao tiếp với chuột và phím máy tính dễ dàng Không giống như các Board khác, khi cổng nối tiếp mở thì nó sẽ không bị reset, để gỡ rối cho chương trình thì bạn cần giao tiếp qua lệnh Serial.prints() trong hàm Setup()
Arduino Due Đây là Board có thiết kế lớn và xấu nhất trong tất cả các Board,
nó hoạt động ở điện áp 3.3V Các chân số có mức logic ở 3,3V nên khi giao tiếp bạn cần phải nâng áp để có thể giao tiếp bình thường Gồm 54 chân số ( 12 chân tương tự) 4 cổng nối tiếp tương tự Arduino Mega Nó chạy bộ xử lý 32bit, 84MHz
nó xử lý nhanh hơn gấp 5 lần so với các Board arduino khác Xử lý chương trình nhanh hơn 10 lần Vì vậy nó đọc các chân đầu vào và đáp ứng nhanh hơn
Arduino Ethernet Như tên của nó, nó là 1 Arduino giống chức năng với
UNO tuy nhiên nó được tích hợp Module Ethernet trong nó có tích hợp thẻ SD
Trang 282.3.4 Khả năng ghép nối của Arduino
2.3.4.1 Ghép nối với các cảm biến
Tất cả những cảm biến ghép nối được với vi điều khiển thì cũng ghép nối được với Arduino Các cảm biến phổ biến gồm:
Cảm biến nước, cảm biến nhiệt đô/ độ ẩm, cảm biến hồng ngoại/ ánh sáng, cảm biến màu, cảm biến rung, cảm biến âm thanh, cảm biến siêu âm, cảm biến khí, cảm biến áp suất, cảm biến chuyển động, cảm biến khoảng cách, cảm biến dòng điện, cảm biến góc/ gia tốc, cảm biến Hall, cảm biến từ trường, cảm biến quang điện
2.3.4.2 Ghép nối với các module chức năng
Nếu có kiến thức và kỹ năng về thiết kế mạch điện tử người sử dụng có thể tự thiết kế các module chức năng ghép nối với Arduino Tuy nhiên việc này đòi hỏi tốn thời gian chưa tính đến việc thiết kế bị lỗi phải thực chỉnh sửa và làm mới lại gây lãng phí
Cộng đồng phát triển Arduino thiết kế và sản xuất hàng loạt các module chuẩn
để kết nối với các Board mạch Arduino Điều này giúp cho người thiết kế phần cứng "nhàn rỗi" hơn trong việc thiết kế và làm mạch in cho các ứng dụng và người
sử dụng không phải bận tâm về các sai sót trong thiết kế phần cứng Hiện nay có các module phổ biến sau:
Trang 292.3.5 Sơ đồ chân board arduino uno
Hình 2.9 Sơ chân board Arduino Uno R3
Trang 30Hình 2.10 Hình dạng thực tế board Arduino Uno R3
2.3.6 Các thông số của board arduino uno
2.3.6.1 Thông số kỹ thuật
Điện áp hoạt động 5V DC (chỉ được cấp qua cổng USB)
Điện áp vào khuyên dùng 7-12V DC
Số chân Digital I/O 14 (6 chân hardware PWM)
Dòng tối đa trên mỗi chân I/O 30 mA
Trang 312.3.6.2 I/O Pins
Sơ đồ chân của vi điều khiển ATmega328P
Hình 2.11 Sơ đồ chân của Atmega328
· Digital: Các chân I/O digital (chân số 2 – 13 ) được sử dụng làm chân nhập,
xuất tín hiệu số thông qua các hàm chính : pinMode(), digitalWrite(), digitalRead() Điện áp hoạt động là 5V, dòng điện qua các chân này ở chế độ bình thường là 20mA, cấp dòng quá 40mA sẽ phá hỏng vi điều khiển
· Analog :Uno có 6 chân Input analog (A0 – A5), độ phân giải mỗi chân là 10
bit (0 – 1023 ) Các chân này dùng để đọc tín hiệu điện áp 0 – 5V (mặc định) tương ứng với 1024 giá trị, sử dụng hàm analogRead()
· PWM : các chân được đánh số 3, 5, 6, 9, 10, 11; có chức năng cấp xung
PWM (8 bit) thông qua hàm analogWrite()
· UART: Atmega328P cho phép truyền dữ liệu thông qua hai chân 0 (RX) và
chân 1 (TX)
Trang 322.3.6.3 Bộ nhớ
Vi điều khiển Atmega328 tiêu chuẩn cung cấp cho người dùng:
32KB bộ nhớ Flash: những đoạn lệnh bạn lập trình sẽ được lưu trữ trong bộ
nhớ Flash của vi điều khiển Thường thì sẽ có khoảng vài KB trong số này sẽ được dùng cho bootloader nhưng đừng lo, bạn hiếm khi nào cần quá 20KB bộ nhớ này đâu
2KB cho SRAM (Static Random Access Memory): giá trị các biến bạn khai
báo khi lập trình sẽ lưu ở đây Bạn khai báo càng nhiều biến thì càng cần nhiều bộ nhớ RAM Tuy vậy, thực sự thì cũng hiếm khi nào bộ nhớ RAM lại trở thành thứ
mà bạn phải bận tâm Khi mất điện, dữ liệu trên SRAM sẽ bị mất
1KB cho EEPROM (Electrically Eraseble Programmable Read Only Memory):
đây giống như một chiếc ổ cứng mini – nơi bạn có thể đọc và ghi dữ liệu của mình vào đây mà không phải lo bị mất khi cúp điện giống như dữ liệu trên SRAM
2.3.6.4 Các cổng vào ra
Arduino UNO có 14 chân digital dùng để đọc hoặc xuất tín hiệu Chúng chỉ có
2 mức điện áp là 0V và 5V với dòng vào/ra tối đa trên mỗi chân là 40mA Ở mỗi chân đều có các điện trở pull-up từ được cài đặt ngay trong vi điều khiển ATmega328 (mặc định thì các điện trở này không được kết nối)
Một số chân digital có các chức năng đặc biệt như sau:
· 2 chân Serial: 0 (RX) và 1 (TX): dùng để gửi (transmit – TX) và nhận
(receive – RX) dữ liệu TTL Serial Arduino Uno có thể giao tiếp với thiết bị khác thông qua 2 chân này Kết nối bluetooth thường thấy nói nôm na chính là kết nối Serial không dây Nếu không cần giao tiếp Serial, bạn không nên sử dụng 2 chân này nếu không cần thiết
· Chân PWM (~): 3, 5, 6, 9, 10, và 11: cho phép bạn xuất ra xung PWM với
độ phân giải 8bit (giá trị từ 0 → 28-1 tương ứng với 0V → 5V) bằng hàm analogWrite() Nói một cách đơn giản, bạn có thể điều chỉnh được điện áp ra ở chân này từ mức 0V đến 5V thay vì chỉ cố định ở mức 0V và 5V như những chân khác
· Chân giao tiếp SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK) Ngoài các chức năng thông thường, 4 chân này còn dùng để truyền phát dữ liệu bằng giao thức SPI với các thiết bị khác
· LED 13: trên Arduino UNO có 1 đèn led màu cam (kí hiệu chữ L) Khi bấm
nút Reset, bạn sẽ thấy đèn này nhấp nháy để báo hiệu Nó được nối với chân số 13 Khi chân này được người dùng sử dụng, LED sẽ sáng
Trang 33Arduino UNO có 6 chân analog (A0 → A5) cung cấp độ phân giải tín hiệu 10bit (0 → 210-1) để đọc giá trị điện áp trong khoảng 0V → 5V Với
chân AREF trên board, bạn có thể để đưa vào điện áp tham chiếu khi sử dụng các
chân analog Tức là nếu bạn cấp điện áp 2.5V vào chân này thì bạn có thể dùng các chân analog để đo điện áp trong khoảng từ 0V → 2.5V với độ phân giải vẫn là 10bit
Đặc biệt, Arduino UNO có 2 chân A4 (SDA) và A5 (SCL) hỗ trợ giao tiếp I2C/TWI với các thiết bị khác
2.3.6.5 Nguồn
Có hai cách cấp nguồn chính cho bo mạch Uno: cổng USB và jack DC
Giới hạn điện áp cấp cho Uno là 6 – 20V Tuy nhiên, dải điện áp khuyên dùng
là 7 – 12 V (tốt nhất là 9V) Lý do là nếu nguồn cấp dưới 7V thì điện áp ở ‘chân 5V’ có thể thấp hơn 5V và mạch có thể hoạt động không ổn định; nếu nguồn cấp lớn hơn 12V có thể gấy nóng bo mạch hoặc phá hỏng
Các chân nguồn trên Uno:
- Vin : chúng ta có thể cấp nguồn cho Uno thông qua chân này Cách cấp nguồn này ít được sử dụng
- 5V : Chân này có thể cho nguồn 5V từ bo mạch Uno Việc cấp nguồn vào chân này hay chân 3.3 V đều có thể phá hỏng bo mạch
- 3.3V : Chân này cho nguồn 3.3 V và dòng điện maximum là 50mA
- GND: chân đất
2.3.6.6 Trương trình arduino IDE
2.3.6.6.1 Cài đặt chương trình Arduino IDE
Các bạn truy cập vào trang web http://arduino.cc/en/Main/Software và tải về chương trình Arduino IDE phù hợp với hệ điều hành của máy mình bao gồm Windown, Mac OS hay Linux Đối với Windown có bản cài đặt (.exe) và bản Zip, đối với Zip thì chỉ cần giải nén và chạy chương trình không cần cài đặt
Sau khi cài đặt xong thì giao diện chương trình như sau:
Trang 34Hình 2.12 Arduino 2.3.6.6.2 Cài đặt Driver
Sử dụng cáp USB kết nối Arduino với máy tính, lúc này bạn sẽ thấy đèn led power của bo sáng Máy tính sẽ nhận dạng thiết bị và bạn sẽ nhận được thông báo:
“Device driver software was not successfully installed”
Hình 2.13 Driver Software Installation
Bây giờ bạn click vào Start Menu chọn Control Panel kế đến chúng ta chọn System and Security, click System và sau đó chọn Device Manager
Trang 35Hình 2.14 Device Manager
Chúng ta sẽ thấy cảnh báo màu vàng thiếu driver trên Arduino Click chuột phải trên Arduino Uno icon sau đó chọn “Update Driver Software”
Hình 2.15 Right click và chọn ”Update Driver Software”
Chọn “Browse my computer for driver software”
Hình 2.16 Click chọn “Browse my computer for driver software”
Trang 36Chọn đường dẫn tới folder “driver” nơi mà phần mềm Arduino được lưu trữ
Trang 37Arduino Toolbar: có một số button và chức năng của chúng như sau :
Hình 2.19 Arduino Toolbar
Verify : kiểm tra code có lỗi hay không
Upload: nạp code đang soạn thảo vào Arduino
New, Open, Save : Tạo mới, mở và Save sketch
Serial Monitor : Đây là màn hình hiển thị dữ liệu từ Arduino gửi lên máy tính
Arduino IDE Menu:
Hình 2.20 IDE Menu
File menu:
Hình 2.21 File menu
Trang 38Trong file menu chúng ta quan tâm tới mục Examples đây là nơi chứa code mẫu ví dụ như: cách sử dụng các chân digital, analog, sensor … Hình 11: Click Examples
Hình 2.22 Click Examples
Edit menu:
Hình 2.23 Edit menu
Trang 39Sketch menu
Hình 2.24 Sketch menu
Trong Sketch menu :
Verify/ Compile : chức năng kiểm tra lỗi code
Show Sketch Folder : hiển thị nơi code được lưu
Add File : thêm vào một Tap code mới
Import Library : thêm thư viện cho IDE
Tool memu:
Hình 2.25 Tool menu
Trong Tool menu ta quan tâm các mục Board và Serial Port
Mục Board : các bạn cần phải lựa chọn bo mạch cho phù hợp với loại bo mà bạn sử dụng nếu là Arduino Uno thì phải chọn như hình:
Trang 402.3.6.6.1 Các nhóm hàm cơ bản
Một chương trình hiển thị trên cửa sổ giao diện được gọi là sketch.Sketch được
tạo từ hai hàm cơ bản là setup () và loop () :
- Setup() : Hàm này được gọi khi một sketch khởi động, được sử dụng để khởi tạo biến, đặt các chế độ chân ( nhận hay xuất
tín hiệu ), khởi động một thư viện … Hàm setup() chỉ chạy một lần, sau khi cấp nguồn hoặc reset mạch
- Loop(): Sau khi khởi tạo hàm setup(), hàm loop() sẽ được khởi tạo và thiết lập các giá trị ban đầu Như tên gọi,
hàm loop tạo các vòng lặp liên tục, có cho phép sự thay đổi và đáp ứng Chức năng tương tự như vòng lặp while() trong C,
hàm loop() sẽ điều khiển toàn bộ mạch