Professional Documents
Culture Documents
Axaxaaxaxca
Axaxaaxaxca
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
.......................................................................................................................................
Đồ án tốt Trang 1 Hệ Thống Giám Sát Ngôi Nhà Thông
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.
MỤC LỤC
Số hiệu
Tên hình Trang
hình
1.1 Máy in 3D Makerbot điều khiển bằng Arduino Mega2560 7
1.2 Thiết bị UAV 7
Arduino Điều khiển nhà thông minh với Máy tính bảng và
1.3 8
smartphone
2.1 Nguyên tắc hoạt động của wifi 10
2.2 Các chuẩn kết nối wifi 11
2.3 Sơ đồ chân esp8622 15
2.4 Hình ảnh thực tế module esp8622 15
2.5 Kết nối Arduino Due và ESP-01 17
2.6 Kết nối với smartphone 18
2.7 Kết nối hai module esp8266 20
2.8 Lệnh AT kết nối hai esp8266 21
2.9 Sơ chân board Arduino Uno R3 26
2.10 Hình dạng thực tế board Arduino Uno R3 27
2.11 Sơ đồ chân của Atmega328 28
2.12 Arduino 31
2.13 Driver Software Installation. 31
2.14 Device Manager. 32
2.15 Right click và chọn ”Update Driver Software” 32
2.16 Click chọn “Browse my computer for driver software” 32
2.17 Driver 33
2.18 Arduino IDE. 33
2.19 Arduino Toolbar 34
2.20 IDE Menu 34
2.21 File menu. 34
2.22 Click Examples. 35
2.23 Edit menu 35
2.24 Sketch menu 36
2.25 Tool menu. 36
Số hiệu
Tên hình Trang
hình
2.26 Chọn Board 37
2.27 Sơ đồ mạch ví dụ 1 38
2.28 Sơ đồ ví dụ 2 40
2.29. Led sáng dần từ led 1 đến led 10 và ngược lại. 42
2.30 Điều khiển tốc độ động cơ. 44
2.31 PWM 50%. 45
2.32 PWM 25%. 46
2.33 PWM 90%. 46
2.34 Giao diện điều khiển blynk 48
3.1 Sơ đồ tổng quát hệ thống 51
3.2 Hình ảnh thực tế esp8266 v12 52
3.3 Sơ đồ nối chân esp8266 52
3.4 Sơ đồ nối chân arduino 53
3.5 Cảm biến hồng ngoại 54
3.6: Sơ đồ nguyên lý khối thu phát hồng ngoại 56
3.7 Cảm biến DHT22 56
3.8 Module relay thực tế 57
3.9. Động cơ servo ngoài thực tế 59
3.10. Cấu tạo động cơ Servo 59
3.11 Cấu tạo chân vào ra động cơ servo 60
3.12 Đèn còi báo động 60
3.13 Động cơ một chiều 61
3.14 Cấu tạo động cơ một chiều 61
3.14 Nguyên lý hoạt động của động cơ DC 62
3.16 Khối hiển thị LCD 63
3.17 Sơ đồ mạch nguyên lý khối nguồn 65
5.1. Mô hình phần cứng 76
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,
Thiế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
thố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 .
Ư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.
WiFi 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
2.2.3 Sơ đồ chân
thiết.
2.2.5 Các phương pháp kết nối thiết bị với esp8266
2.2.5.1Truyề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:
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
board ATmega2560 và board Due cùng với 2 module ESP-01 như hình bên dưới:
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:
trê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 I²C-
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 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
phươ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
và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.
2.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.
Arduino 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:
Chọn đường dẫn tới folder “driver” nơi mà phần mềm Arduino được lưu trữ.
Arduino Toolbar: có một số button và chức năng của chúng như sau :
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:
Trong 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.
Sketch menu
Tool memu:
- 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
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
hàm loop() sẽ điều khiển toàn bộ mạch.
Hình 2.28 Sơ đồ ví dụ 2
2.3.6.6.2 Các nhóm cấu trúc lệnh cơ bản
Các chương trình Arduino có thể được chia thành : nhóm cấu trúc, nhóm biến
và hằng , nhóm hàm.
Trên trang Arduino.cc có đầy đủ và chi tiết các hàm, lệnh, phép toán cùng cách
thức sử dụng cũng như các ví dụ đi kèm. Chúng ta sẽ tìm hiểu các hàm cơ bản trước :
setup() ; loop () ; pinMode() ; digitalRead(); digitalWrite(); analogWrite() ; …
Một vài ví dụ:
Mỗi hàm, lệnh hay thuật ngữ trong phần này đều được giải thích rất ngắn gọn,
rõ ràng, dễ dàng áp dụng.
- Hàm pinMode(pin, mode):thiết lập một chân cụ thể là chân nhận hay xuất
tín hiệu.
Trong đó: pin là chân sẽ được thiết lập; mode là một trong các chế độ INPUT.
OUTPUT hoặc INPUT_PULLUP (Arduino 1.0.1)
Giá trị trả về : Không có
Ví dụ :
int ledPin = 13 ; // Led được nối với chân số 13
void setup () {
pinMode ( ledPin, OUTPUT);// thiết lập cho chân ledPin là chân
//xuất tín hiệu
}
void loop () {
…
}
}
void loop(){
2.3.6.7 Giao tiếp Arduino với một số linh kiện điện tử.
2.3.6.7.1 Led sáng dần từ led 1 đến led 10 và ngược lại.
Hình 2.29. Led sáng dần từ led 1 đến led 10 và ngược lại.
Code chương trình.
byte ledPin[] = {4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
int direction = 1;
int currentLED = 0;
void setup() {
for (int x=0; x<10; x++)
{ pinMode(ledPin[x], OUTPUT);}
} void loop() {
for (int x=0; x<10; x++)
{ digitalWrite(ledPin[x],
LOW);
}
digitalWrite(ledPin[currentLED], HIGH);
currentLED += direction;
if (currentLED == 9) {direction = -1;}
if (currentLED == 0) {direction = 1;}
delay(500);
}
Giải thích chương trình.
Trong Project này chúng ta sử dụng 10 chân digital để điều khiển 10 led, để
cho chương trình ngắn gọn thì ở đây tôi sử dụng mảng 1 chiều gồm 10 phần tử trong
đó chứa 10 vị trí chân led mà ta sử dụng trong project
byte ledPin[] = {4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
Tiếp tục khai báo 2 biến integer là :
int direction = 1;
int currentLED = 0;
Trong hàm setup() tôi sử dụng một vòng lặp để định nghĩa mode cho các chân
led. Tôi nghĩ là không khó để hiểu được các câu lệnh này.
Tiếp theo là hàm loop(), đầu tiên tôi tắt tất cả các led bằng các câu lệnh:
for (int x=0; x<10; x++)
{ digitalWrite(ledPin[x],
LOW);}
Sau đó cho sáng led đầu tiên bằng câu lệnh :
digitalWrite(ledPin[currentLED], HIGH);
Vì ta đã khai báo currentLED = 0 nên mãng sẽ truy xuất phần tử đầu tiên
trong mãng có giá trị là 4 vì thế led ở vị trí chân digital số 4 sẽ sáng.
currentLED += direction;
Tăng currentLED lên 1 đơn vị ( direction =1 ). Vòng lặp tiếp theo sẽ là led ở
chân digital 5 sáng và cứ như thế cho đến led ở chân số 13 sáng, thì lúc này
currentLED == 9, câu lệnh “ if (currentLED == 9) {direction = -1;}” sẽ thực hiện
và led sẽ sáng ngược lại từ led 10 xuống led thứ 1.
Hai câu lệnh :
if (currentLED == 9) {direction = -1;}
if (currentLED == 0) {direction = 1;}
dùng để quy định chiều sáng của led là tăng dần hay giảm dần. Nếu là Led thứ
10 sang thì tiếp theo sẽ giảm xuống led thứ 9 và ngược lại nếu led thứ 0 sang thì chu
trong các giai đoạn đó chưa được thực hiện rốt ráo.
Bây giờ với Blynk, bạn cần các module phần cứng được hỗ trợ và app này vậy
là xong.Có thể điều khiển thiết bị dựa trên Internet qua mạng LAN, mạng Internet
bất kỳ chổ nào và thậm chí 3G, rồi cả 4G nữa. Tất cả đều không còn là vấn đề, vấn
đề còn lại là bạn làm ra thiết bị để sử dụng vào việc gì.
Blynk hiện hỗ trợ tốt cho 2 hệ phần cứng là Arduino và Raspberry. Các bạn
lần đầu tiên nghiên cứu về Internet Of Things (IOT) hay điều khiển từ Internet nên
bắt đầu với phần cứng Arduino vì giá cả phù hợp
http://www.blynk.cc/getting-started/
Vào đây chọn “DOWNLOAD BLYNK LIBRARY” .
Sau khi tải xong, bạn mở phần mềm viết code cho Arduino để bổ sung gói thư
viện vừa tải về. Vào menu Sketch > Import Library > Add Library, chọn thư viện đã
nén dạng zip vừa tải về để bổ sung thư viện và các ví dụ.
Mở app Blynk trên điện thoại, đăng ký tài khoản và bắt đầu sử dụng. Mỗi tài
khoản miễn phí được 2000 điểm để tạo ứng dụng. Khi sử dụng hết, có thể mua
thêm.
Mỗi dự án tạo ra, app sẽ cho một mã Auth Token, cần gửi email về email của
mình khi đăng ký tài khoản bằng chức năng gửi mail trong app để lấy mã Auth
Token. Dùng mã này để nạp vào chương trình trên Arduino.
Bây giờ tới phần viết code. Ví dụ viết 1 đoạn code điều khiển tắt mở relay.
Relay thường được kích hoạt ở mức thấp (LOW), nếu sử dụng Button trong Blynk
điều khiển trực tiếp nó điều khiển theo hướng từ thấp lên cao và không thể thay đổi
cách điều khiển này. Giải pháp là bạn sử dụng chân ảo (Virtual Pin) để gửi dữ liệu
về module và xử lý nó.
Ví dụ
#define BLYNK_PRINT Serial
#include <SPI.h>
#include <Ethernet.h>
#include <BlynkSimpleEthernet.h>
char auth[] = "auth_token_code";
void setup()
{
Serial.begin(9600);
Blynk.begin(auth);
pinMode(22, OUTPUT);
digitalWrite(22,HIGH);
}
BLYNK_WRITE(22)
{ if (param.asInt())
{ digitalWrite(22,LO
W);
} else {
digitalWrite(22,HIGH);
}
}
void loop()
{
Blynk.run();
}
Có chức năng gửi/nhận thông tin, nhận/thực hiện gửi các thông tin lên sever
Module ESP8622 : Module wifi ESP8266 v12 cung cấp khả năng kết nối
mạng wifi đầy đủ và khép kín, có thể sử dụng nó để tạo một web server đơn giản
hoặc sử dụng như một access point. Giao tiếp với esp8266
Phần cứng: Sử dụng modul esp8266 v12 làm khối xử lý chính trong đề tài,
với các chức năng đã được giới thiệu ở chương trước, modul esp8266 v12 hoàn toàn
có thể đáp ứng được các yêu cầu của đề tài đặt ra.
Sử dụng chân D2,D3 làm ngõ ra role đóng cắt thiết bị.
Sử dụng chân D4 làm ngõ nhận tín hiệu từ cảm biến độ ẩm nhiệt đọ DHT22
Sử dụng chân D6 để truyền tín hiệu với arduino
Sử dụng chân D5 nhận tín hiệu với arduino
3.3 KHỐI XỬ LÝ TRUNG TÂM
Có chức năng thực hiện xử lý khi có tín hiệu qua các cảm biến, khối xử lý
chính thực hiện gửi khi có tín hiệu yêu cầu module esp8622, thực hiện điều khiển
các thiết bị trong nhà.
Phần cứng: Sử dụng arduino nano làm khối xử lý chính trong đề tài, với các
chức năng đã được giới thiệu ở chương trước, arduino nano hoàn toàn có thể đáp
ứng được các yêu cầu của đề tài đặt ra.
Sử dụng các chân D6,D7,D12 cấu hình là các chân output để đưa tín hiệu điều
khiển đóng/ngắt các relay.
Sử dụng chân D9 cấu hình là chân input để nhận tín hiệu từ cảm biến hồng
ngoại
Sử dụng 2 chân D10 và D11 làm 2 chân giao tiếp UART với module sim900.
Sử dụng 2 chân A4 và A5 làm 2 chân giao tiếp I2C để giao tiếp với khối hiển
thị LCD.
Sử dụng chân A1 xuất tín hiệu đến động cơ serve
Phần mềm:
Sử dụng các lệnh cơ bản để cấu hình input hay output cho các chân:
pinMode(pin,mode) :
pin : thứ tự chân arduino
mode: INPUT (cấu hình chân là nhận tín hiệu vào), OUTPUT (cấu hình chân
là gửi tín hiệu ra)Có chức năng thực hiện xử lý khi có tín hiệu qua các cảm biến,
khối xử lý chính thực hiện gửi khi có tín hiệu yêu cầu module esp8622, thực hiện
điều khiển các thiết bị trong nhà.
3.4 KHỐI CẢM BIẾN
3.4.1 Giới thiệu về cảm biến hồng ngoại
Cảm biến là thiết bị dùng để cảm nhận và biến đổi các đại lượng vật lý và các
đại lượng không có tính chất điện cần đo thành các đại lượng có thể đo và xử lý
được.
(khoảng vài trăm kilo ôm ) , khi mắt thu bị tia hồng ngoại chiếu vào thì nội trở của
nó giảm xuống ( khoảng vài chục ôm). Lợi dụng nguyên lý này người ta chế tạo ra
các cảm biến IR. Hình sau biểu diễn nguyên lý hoạt động của cảm biến phát hiện
vật cản IR:
Các đại lượng đo (M) thường không có tính chất điện như (nhiệt độ, áp suất,
trọng lượng…) tác động lên cảm biến cho ta đại lượng đặc trưng (S) mang tính chất
điện như (điện tích, điện áp, dòng điện hay trở kháng) chứa đựng thông tin cho phép
xác định giá trị của đại lượng đó.
Đặc trưng (s) là hàm của đại lượng cần đo (M)
S = F(M)
Người ta gọi (S) là đại lượng đầu ra hoặc phản ứng của cảm biến. (M) là đại
lượng đầu vào hay kích thích (có nguồn gốc đại lượng cần đo). Thông qua đo đạc
(S) cho phép nhận biết giá trị (M).
Một số loại cảm biến
Theo nguyên lý của cảm biến
Cảm biến điện trợ
Cảm biến điện từ
Cảm biến điện tĩnh
Cảm biến hóa điện
Cảm biến nhiệt điện...
Theo tính chất của nguồn điện
Cảm biến phát điện
Cảm biến thông số...
Cảm biến phép đo
Cảm biến biến đổi trục tiếp
Cảm biến bù..
Ưu điểm:
Không tiếp xúc với vật thể cần phát hiện.
Có thể phát hiện vật từ khoảng cách xa.
Không bị hao mòn, có tuổi thọ cao.
Có thời gian đáp ứng nhanh, có thể phát hiện vật thể, vật chất.
Module thu phát hồng ngoại:
- Sử dụng 1 led phát hồng ngoại.
- Module Relay 4 kênh 5V có điện áp hoạt động ở mức 5V DC, chịu được tải
đầu ra 30V/10A đối với điện áp DC và 250V/10A với điện áp AC
Module relay 4 kênh được thiết kế nhỏ gọn và đẹp mắt , khả năng chống nhiễu
tốt và khả năng cách điện tốt nhờ trong mạch sử dụng IC cách ly quang và transistor
giúp cách ly hoàn toàn mạch vi điều khiển với rơ le bảo đảm vi điều khiển hoạt
động ổn định.
Có sẵn header rất tiện dụng khi kết nối với các thiết bị đầu ra và vi điều khiển.
Có các lỗ bắt vít rất tiện lợi dễ lắp đặt trong hệ thống mạch.
– Trạng thái hoạt động:
+ 0 ( 0V): Bật Relay
+ 1 ( 5V): Ngắt Relay
Thông sô module relay 2 kênh 5V:
Kích thước: 76mm ( chiều dài )* 56mm ( chiều rông )* 18,5mm (chiều cao)
Trọng lượng: 61g
Màu sắc: xanh
Bốn lổ để bắt vít cố định có đường kính 3,1mm, dể dàng lắp đặt trong hệ
thống mạch
Có đèn báo đóng ngắt trên relay
Sử dụng điện áp nuôi DC 5v
Đầu ra điện thế đóng ngắt tối đa DC 30V/10A, AC 250V/10A
Thông số điện:
Điện áp cấp 5V DC
Dòng điện hoạt động lớn hơn 100mA
Tải max 250V/10A ( AC ) hoặc ( DC ) 30V/10A
Nối dây Vcc nguồn cung cấp 5V
GND: 0V
3.5.2 Động cơ servo
Động cơ servo là cơ cấu cơ khí làm việc chính trong hệ thống truyền động và
từ động dùng để đóng mở cổng ra vào.
với chân phát xung của Arduino. Ở chân xung cấp một xung từ 1ms-2ms theo để
điều khiển góc quay theo ý muốn.
4 RS Chân chọn thanh ghi (Register select). Nối chân RS với logic “0”
(GND) hoặc logic “1” (VCC) để chọn thanh ghi.
+ Logic “0”: Bus DB0-DB7 sẽ nối với thanh ghi lệnh IR của LCD
(ở chế độ “ghi” - write) hoặc nối với bộ đếm địa chỉ của LCD (ở
chế độ “đọc” - read)
+ Logic “1”: Bus DB0-DB7 sẽ nối với thanh ghi dữ liệu DR bên
trong LCD.
5 R/W Chân chọn chế độ đọc/ghi (Read/Write). Nối chân R/W với logic
“0” để LCD hoạt động ở chế độ ghi, hoặc nối với logic “1” để
LCD ở chế độ đọc.
6 E Chân cho phép (Enable). Sau khi các tín hiệu được đặt lên bus
DB0-DB7, các lệnh chỉ được chấp nhận khi có 1 xung cho phép
của chân E.
+ Ở chế độ ghi: Dữ liệu ở bus sẽ được LCD chuyển vào(chấp
nhận) thanh ghi bên trong nó khi phát hiện một xung (high-to-low
transition) của tín hiệu chân E.
+ Ở chế độ đọc: Dữ liệu sẽ được LCD xuất ra DB0-DB7 khi phát
hiện cạnh lên (low-to-high transition) ở chân E và được LCD giữ ở
bus đến khi nào chân E xuống mức thấp.
7- DB0 - Tám đường của bus dữ liệu dùng để trao đổi thông tin với MPU.
14 DB7 Có 2 chế độ sử dụng 8 đường bus này :
+ Chế độ 8 bit : Dữ liệu được truyền trên cả 8 đường, với bit MSB
là bit DB7.
+ Chế độ 4 bit : Dữ liệu được truyền trên 4 đường từ DB4 tới
DB7, bit MSB là DB7
15 - Nguồn dương cho đèn nền
Phần mềm:
Các lệnh khai báo và điều khiển khối LCD:
#include <LiquidCrystal_I2C.h> // khai báo thư viện LCD I2C
LiquidCrystal_I2C lcd(0x27,16,2); // set the LCD address to 0x20 for a 16
chars and 2 line display
lcd.init(); // thiết lập LCD
lcd.backlight(); // bật đèn nền
lcd.setCursor(x,y); //đặt con trỏ tại vị trí cột x, dòng y
lcd.print("Hello, world!"); // xuất chuỗi ra màn hình
lcd.clear(); //xóa màn hình
3.7 KHỐI NGUỒN
Chức năng:
Cấp nguồn cho toàn bộ hệ thống điều khiển bao gồm: khối xử lý trung tâm,
khối cảm biến, khối hiển thị LCD, khối GSM sim 900, khối relay output.
Thiết kế:
Phần cứng :
Thiết kế khối nguồn cung cấp cho hệ thống như hình 4.9.
void setup()
{ myservo.attach(M_con
g); Serial.begin(9600);
mySerial.begin(4800);
lcd.begin(16,2);
for(int i = 0; i< 3; i++)
{
lcd.backlight();
delay(250);
lcd.noBacklight();
delay(250);
}
lcd.backlight();
lcd.clear();
lcd.setCursor(0,0);
lcd.print(" DO AN ");
lcd.setCursor (1,1);
lcd.print("NHA THONG MINH");
lcd.backlight();
delay(100);
pinMode(S_cong,INPUT);
pinMode(coi,OUTPUT);
pinMode(DH,OUTPUT);
pinMode(bt_reset,INPUT_PULLUP);
pinMode(den_san,OUTPUT);
pinMode(DH,OUTPUT);
pos=90;
myservo.write(pos); // dong cong
delay(15);
digitalWrite(den_san, HIGH); //tat den san
digitalWrite(coi, HIGH); //tat coi
}
void loop() {
//
if (mySerial.available()>0)
{
char kt=char (mySerial.read());
Serial.println(kt);
if(kt=='A') {alarm=1;Serial.println("alarm=1");}
else if (kt=='B') {alarm=0;Serial.println("alarm=0");}
else if (kt=='C') {reset=1;Serial.println("reset=1");}
else if (kt=='D') {auto1=1;Serial.println("auto=1");}
else if (kt=='E') {auto1=0;Serial.println("auto=0");}
else if (kt=='F')
{
if (auto1==1)
{digitalWrite(DH,HIGH);Serial.println("Bat may phun suong"); }// Bat may
phun suong}
else
{digitalWrite(DH,LOW);Serial.println("Tat may phun suong");} // Tat may
phu
}
else if(kt=='G') // nhiet do duoi 30
{ digitalWrite(DH,LOW);Serial.println("Tat may phun suong");}
}
//
if (digitalRead(S_cong)==0) // co nguoi vao cong
{
if (alarm==1)
digitalWrite(coi,LOW); //bat coi
else
{
digitalWrite(coi,HIGH); //tat coi
pos=0;
myservo.write(pos); // mo cong
digitalWrite(den_san, LOW);
delay(4000);
digitalWrite(den_san, HIGH);
}
}
else
{
pos=90;
myservo.write(pos);
delay(15);
}
//
if (digitalRead(bt_reset)==0) {while(digitalRead(bt_reset)==0);reset=1;} //neu
nhan nut reset
if (reset==1)
{
digitalWrite(coi,HIGH); //Reset coi
delay(10);
reset=0;
}
//
void do_nhiet_do()
{
h = dht.readHumidity();
t = dht.readTemperature();
if (isnan(h) || isnan(t) ) {
Serial.println("Loi cam bien DHT22!");
return;
}
Blynk.virtualWrite(10, t); // gui gia tri nhiet do len virtuapl pin 10 cua blynk
Blynk.virtualWrite(11, h); // gui gia tri do am len virtuapl pin 11 cua blynk
if(t>40)
{
swSer.write("F"); // Gui chuoi "F" cho arduino
}
else if(t<40)
{
swSer.write("G"); // Gui chuoi "B" cho arduino
}
}
//
BLYNK_WRITE(V1)
{
int pinValue = param.asInt(); // lay gia tri tu virtual pin V1
Serial.print("V1 value is: ");
Serial.println(pinValue);
if (pinValue==1)
swSer.write("A"); // Gui chuoi "A" cho arduino
if (pinValue==0)
swSer.write("B"); // Gui chuoi "B" cho arduino
}
//
BLYNK_WRITE(V2)
{
if (String("temp") == param.asStr())
{
if (isnan(h) || isnan(t) )
{
terminal.println("Loi cam bien");
terminal.flush();
}
else
{
terminal.print("Nhiet do: ");
terminal.println(t);
}
//
BLYNK_WRITE(V3)
{
int pinValue = param.asInt(); // lay gia tri tu virtual pin V1
Serial.print("V3 value is: ");
Serial.println(pinValue);
if (pinValue==1)
swSer.write("C"); // Gui chuoi "C" cho arduino
}
//
BLYNK_WRITE(V4)
{
int pinValue = param.asInt(); // lay gia tri tu virtual pin V4
Serial.print("V4 value is: ");
Serial.println(pinValue);
if (pinValue==1)
swSer.write("D"); // Gui chuoi "D" cho arduino
else if(pinValue==0)
swSer.write("E"); // Gui chuoi "E" cho arduino
//
void setup()
{
Serial.begin(9600);
swSer.begin(4800);
dht.begin();
Blynk.begin(auth, ssid, pass); //khoi dong thu vien blynk voi auth code, ssid,
pass wifi ket noi
timer.setInterval(1000L, do_nhiet_do);// goi ham do nhiet do sau moi giay
}
//
void loop()
{
Blynk.run();
timer.run();
}
http://arduino.vn/bai-viet/273-arduino-nano-nho-tien-loi-mang-tren-minh-tinh-
hoa-cua-arduino-uno
https://www.arduino.cc/en/main/software
http://luanvan.net.vn/luan-van/dien-tu-vien-thong/#
http://automation.net.vn/The-gioi-cam-bien/blog.html
http://www.electroschematics.com/11276/esp8266-datasheet/