Một thực tế rất gần với con người là trong chính căn nhà của mình, mong muốn được dụng công nghệ tự động hóa càng được rộng rãi, tất cả đồ dùng trong nhà từ phòng ngủ, phòng khách đến to
Trang 1Nhận xét của giáo viên
Trang 2
LỜI CẢM ƠN
……… ………
Để đề tài được hoàn thiện như ngày hôm nay, em đã nhận được sự giúp
đỡ rất tận tình đến từ các thầy cô, bạn bè, đồng nghiệp Qua đây em xin gửi lời cảm ơn đến tất cả các tổ chức, cá nhân đã tạo điều kiện giúp đỡ em hoàn thành đề tài này
Em xin chân thành cảm ơn các thầy cô giáo khoa Điện trường Cao Đẳng Kinh tế - Kỹ thuật, Đại Học Thái Nguyên đã giúp em có cơ sở kiến thức hoàn thành đề tài này Em xin gửi lời cảm ơn đến các anh chị phòng Đào tạo SEVT, các đồng nghiệp đội EQUIPMENT CNC COLOR cùng các bạn
bè đã tạo động lực,sắp xếp thời gian hợp lý để em có thể hoàn thành đề tài này
Đặc biệt, em xin gửi lời cảm ơn chân thành nhất tới Thầy giáo Th.s Vũ Mạnh Thủy đã đặc biệt quan tâm, nhiệt tình giúp đỡ em trong thời gian thực hiện đề tài
Do đặc thù là sinh viên vừa học vừa làm, quỹ thời gian hạn hẹp, cộng thêm kiến thức còn hạn chế, trong đề tài chắc chắn còn nhiều sai sót, mong thầy cô cùng các bạn góp ý để đề tài được hoàn thiện nhất
Em xin chân thành cảm ơn !
Thái Nguyên, tháng 9 năm 2020
Trang 3LỜI MỞ ĐẦU
Ngày nay, xã hội càng hiện đại, khoa học kỹ thuật càng phát triển thì cuộc sống của con người càng có nhu cầu sử dụng đầy đủ các thiết bị thông minh để phục vụ cho sinh hoạt và công việc của mình Một thực tế rất gần với con người
là trong chính căn nhà của mình, mong muốn được dụng công nghệ tự động hóa càng được rộng rãi, tất cả đồ 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 thời gian đúng mong muốn
Nhu cầu về kiểm soát hệ thống thiết bị điện và điều khiển thiết bị thông minh ngày càng phổ biến như kiểm tra trạng thái của đèn, quạt, máy lạnh, các thiết bị khác, có thể mở hay tắt và các thiết bi ̣điện trong nhà từ xa bằng thiết bị điện thoại
di động, thiết bị máy tính thông qua mạng internet
Hiện nay với nền khoa học phát triển với các trợ lý ảo thông minh hỗ trợ AI như: Google Assistant (Google), Alexa (Amazon), Siri (Apple), Cortana (Microsoft), … Các thiết bị trong ngôi nhà thông minh ngoài được điều khiển qua các app trên điện thoại, web,… còn được điều khiển qua trợ lý ảo cũng dần được phát triển Vì vậy, em đã tìm hiểu, nghiên cứu, chọn đề tài: “Dự án IOT – SMART HOME ứng dụng Module Node MCU esp8266” để làm báo cáo tốt nghiệp
Trang 4MỤC LỤC LỜI CẢM ƠN
LỜI MỞ ĐẦU
MỤC LỤC
CHƯƠNG 1 : Mở Đầu 7
1.1 Đặt vấn đề 7
1.2 Phương pháp nghiên cứu 8
1.3 Mục tiêu, nhiệm vụ 8
CHƯƠNG 2: GIỚI THIỆU LÝ THUYẾT 9
2.1 Khái niệm Internet Of Things ( IOT) là gì? 9
2.2 Những ứng dụng thực tế trong cuộc sống 10
2.2.1 Vật dụng mang theo trên người 10
2.2.2 Ứng dụng trong lĩnh vực vận tải 11
2.2.3 Ứng dụng trong lĩnh vực sản xuất nông nghiệp 11
2.2.4 Ứng dụng trong nhà thông minh 12
2.3 Blynk 14
2.3.1 Hệ sinh thái Blynk 14
2.3.2 Tính năng của Blynk 15
2.4 Nhà thông minh ( Smart home) 15
2.4.1 Khái niệm 15
2.4.2 Chức năng 16
2.4.3 Các hệ sinh thái nhà thông minh trên thế giới 17
CHƯƠNG 3: THIẾT BỊ VÀ GIẢI PHÁP CÔNG NGHỆ 18
3.1 Kit Node MCU Lua ESP8266 18
Trang 53.2 Module và Board phát triển của ESP8266 20
3.3 Giới thiệu về module ESP 12E (Node MCU V3) 21
3.4 Sơ đồ chân GPIO và những lưu ý khi sử dụng Node MCU 22
3.5 Phần mềm IDE 24
3.5.1 Cấu trúc một chương trình trong phần mềm IDE 24
3.5.2 Hàm nhập xuất Digital I/O 25
3.5.3 Hàm nhập xuất Analog I/O 28
3.5.4 Hàm thời gian (Delay) 29
3.6 Lập trình ESP 12E bằng Arduino IDE 31
3.6.1 Gới thiệu 31
3.6.2 Chuẩn bị phần cứng 31
3.6.3 Cài đặt phần mềm arduino IDE và thư viện cho ESP8266 31
3.6.4 Hướng dẫn nạp chương trình cho ESP8266 12E 34
CHƯƠNG 4: NỘI DUNG THỰC HIỆN VÀ MÔ HÌNH 37
4.1 Điều khiển LED ma trận Max7219 với module WIFI NodeMCU 37
4.2 Khóa cửa thông minh sử dụng Node MCU và Module RFID Rc 522 40
4.3 Điều khiển các thiết bị điện trong gia đình 55
4.4 Đọc giá trị nhiệt độ, độ ẩm hiển thị lên màn hình oled 0.96” và blynk sử dụngboard NodeMCU 68
4.5 Gửi thông báo về điện thoại khi có trộm bằng cảm biến chuyển động sử dụng board NodeMCU và app BLYNK 75
CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN CỦA ĐỀ TÀI 81
5.1 Kết luận 80
5.1.1 Những mặt đã làm được 80
5.1.2 Những hạn chế tồn đọng 80
Trang 65.2 Hướng phát triển của đề tài 81 5.3 Tài liệu mở rộng 81
5.3.1 Tương lai smart home 81 5.3.2 Xu hướng ngành Smart home – Tương lai các ngôi nhà Việt 84 TÀI LIỆU THAM KHẢO 88
PHỤ LỤC 89
Trang 7là trong chính căn nhà của mình, mong muốn được dụng công nghệ tự động hóa càng được rộng rãi, tất cả đồ 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 thời gian đúng mong muốn
Nhu cầu về kiểm soát hệ thống thiết bị điện và điều khiển thiết bị thông minh ngày càng phổ biến như kiểm tra trạng thái của đèn, quạt, máy lạnh, các thiết bị khác, có thể mở hay tắt và các thiết bi ̣điện trong nhà từ xa bằng thiết bị điện thoại di động, thiết bị máy tính thông qua mạng internet
Hiện nay với nền khoa học phát triển với các trợ lý ảo thông minh hỗ trợ AI như: Google Assistant (Google), Alexa (Amazon), Siri (Apple), Cortana (Microsoft), … Các thiết bị trong ngôi nhà thông minh ngoài được điều khiển qua các app trên điện thoại, web,… còn được điều khiển qua trợ lý ảo cũng dần được phát triển Vì vậy, em đã tìm hiểu, nghiên cứu, chọn đề tài: “Dự án IOT – SMART HOME ứng dụng Module Node MCU esp8266” để làm báo cáo tốt nghiệp cho mình
Kết quả nghiên cứu từ đề tài này sẽ giúp em có nhiều kinh nghiệm để sau khi tốt nghiệp chúng em có đủ khả năng nghiên cứu chế tạo hoàn chỉnh thiết bị
Trang 8điều khiển hệ thống điện cho ngôi nhà thông minh đáp ứng được sử dụng yêu cầu trên thi ̣trường với giá thành hợp ̣lý, chất lượng đảm bảo, phù hợp ̣với điều kiện sống tại Việt Nam
1.2 Phương pháp nghiên cứu
- Nghiên cứu tài liệu qua sách báo về lĩnh vực IOT
- Nghiên cứu cơ sở lý thuyết để thiết kế mạch điều khiển thiết bị với trợ lý ảo Google Assistant của Google
- Tìm hiểu nguyên lý hoạt động của module Node MCU esp 8266 và các module phụ trợ, thiết bị điện ngoại vi
1.3 Mục tiêu, nhiệm vụ
- Tìm hiểu về hệ thống điều khiển thông minh các thiết bị trong nhà
- Tìm hiểu về Google Assistant (Google Home), IOT
- Thiết kế mạch điều khiển thiết bị bằng giong nói qua Google Assistant (Google Home)
- Xây dựng mô hình mẫu SMART HOME thông qua các project cơ bản nhất
- Kiểm tra, đánh giá tính ứng dụng của đề tài
Trang 9CHƯƠNG 2 GIỚI THIỆU LÝ THUYẾT2.1 Khái niệm Internet Of Things ( IOT) là gì?
Internet of Things (IoT) - Mạng lưới vạn vật kết nối Internet 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 điều khiển, 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 đó ( Wikipedia)
Hiểu đơn giản, IoT có thể khiến mọi vật giờ đây có thể giao tiếp với nhau dễ dàng hơn và ưu điểm lớn nhất của “Thông minh” là khả năng phòng ngừa và cảnh báo tại bất kì đâu
Trang 102.2 Những ứng dụng thực tế trong cuộc sống
Những ứng dụng của IoT vào các lĩnh vực trong đời sống là vô cùng phong phú
và đa dạng Chúng ta sẽ cùng điểm qua một số ứng dụng điển hình của IoT: 2.2.1 Vật dụng mang theo trên người
Có thể kể đến một số thiết bị như Dashbon Mask, đây là 1 chiếc smart headphone giúp bạn vừa có thể nghe nhạc với âm thanh có độ trung thực cao vừa
có thể xem phim HD với máy chiếu ảo, hoặc AMPL SmartBag ba lô có pin dự phòng có thể sạc điện cho các thiết bị di động, kể cả máy tính
Trang 112.2.2 Ứng dụng trong lĩnh vực vận tải
Ứng dụng điển hình nhất trong lĩnh vực này là gắn chíp lấy tọa độ GPS lên xe chở hàng, nhằm kiểm soát lộ trình, tốc độ, thời gian đi đến của các xe chở hàng Ứng dụng này giúp quản lý tốt khâu vận chuyển, có những xử lý kịp thời khi xe
đi không đúng lộ trình hoạt bị hỏng hóc trên những lộ trình mà ở đó mạng di động không phủ sóng tới được, kiểm soát được lượng nhiên liệu tiêu hao ứng với lộ trình đã được vạch trước Theo dõi lộ trình đi của xe chở hàng
2.2.3 Ứng dụng trong lĩnh vực sản xuất nông nghiệp
Quá trình sinh trưởng và phát triển của cây trồng trải qua nhiều giai đoạn từ hạt nảy mầm đến ra hoa kết trái Ở mỗi giai đoạn cần có sự chăm sóc khác nhau
về chất dinh dưỡng cũng như chế độ tưới tiêu phù hợp Những yêu cầu này đòi hỏi sự bền bỉ và siêng năng của người nông dân từ ngày này sang ngày khác làm cho họ phải vất vả Nhưng nhờ vào ứng dụng khoa học kỹ thuật, sử dụng cảm biến
Trang 12để lấy thông số nhiệt độ, độ ẩm, độ pH của đất trồng, cùng với bảng dữ liệu về quy trình sinh trưởng của loại cây đó, hệ thống sẽ tự động tưới tiêu bón lót cho
cây trồng phù hợp với từng giai đoạn phát triển của cây trồng Người nông dân bây giờ chỉ kiểm tra, quan sát sự vận hành của hệ thống chăm sóc cây trồng trên một màn hình máy tính có nối mạng Theo dõi tình trạng sinh trưởng của cây trồng Sản phẩm của mỗi loại nông sản sẽ được gắn mã ID, nếu tủ lạnh nhà chúng
ta sắp hết một loại nông sản nào đó thì ngay lập tức nó sẽ tự động gửi thông báo cần mua đến cơ sở dữ liệu của trang trại có trồng loại nông sản đó, và chỉ sau một thời gian nông sản mà bạn cần sẽ được nhân viên đem đến tận nhà
2.2.4 Ứng dụng trong nhà thông minh:
Vài năm trở lại đây, khi thế giới đang dần tiến vào kỷ nguyên Internet of Things, kết nối mọi vật qua Internet, nhà thông minh trở thành một xu hướng công nghệ tất yếu, là tiêu chuẩn của nhà ở hiện đại Trong căn hộ thông minh, tất cả các thiết bị từ rèm cửa, điều hoà, dàn âm thanh, hệ thống ánh sáng, hệ thống an ninh, thiết bị nhà tắm… được kết nối với nhau và hoạt động hoàn toàn tự động theo kịch bản lập trình sẵn, đáp ứng đúng nhu cầu sử dụng của khách hàng
Trang 13Ví dụ, vào buổi sáng, đèn tắt, rèm cửa tự động chuyển tới vị trí thích hợp để giảm bớt những tác động náo nhiệt từ đường phố và nhường không gian cho ánh sáng tự nhiên Tối đến, hệ thống đèn bật sáng, các rèm cửa kéo lên người dùng có thể thưởng ngoạn từ trên cao bức tranh thành phố rực rỡ ánh đèn, đồng thời âm nhạc cũng nhẹ nhàng cất lên các giai điệu yêu thích của gia đình
Hình 2.12: Ví dụ về nhà thông minh Nếu có việc cả nhà phải đi vắng, chế độ "Ra khỏi nhà" sẽ được kích hoạt, toàn
bộ thiết bị điện tử gia dụng sẽ tự động tắt hoặc đóng lại và khi chủ nhân về, chúng cũng sẽ khôi phục lại trạng thái trước đó Thậm chí, nước nóng cũng đã sẵn sàng
từ vài phút trước khi gia chủ về đến cửa Riêng hệ thống an ninh luôn hoạt động 24/24 và sẽ thông báo đến chủ nhà mọi thay đổi "đáng ngờ" trong ngôi nhà, dù đang ở bất cứ đâu
2.3 Blynk
Trang 14Đây là một nền tảng IoT được ưa thích bởi hơn 500.000 kỹ sư trong lĩnh vực
IoT trên toàn thể giới
2.3.1 Hệ sinh thái Blynk
Library Blynk – support cho hầu hết tất cả các nền tảng phần cứng phổ biến cho phép giao tiếp với máy chủ và xử lý tất cả các lệnh đến và đi
Hình 2.13: Sơ đồ hệ sinh thái Blynk Nguyên lý hoạt động của Blynk: mỗi khi ta nhấn một nút trong ứng dụng
Trang 15của chúng ta thông qua library Tương tự thiết bị phần cứng sẽ truyền dữ liệu ngược lại đến server Vì thế chúng ta có thể tự mình xây dụng một hệ sinh thâí nhà thông minh dựa trên nền tảng của Blynk
2.3.2.Tính năng của Blynk
- Cung cấp API & giao diện người dùng tương tự cho tất cả các thiết bị và phần cứng được hỗ trợ
- Kết nối với server bằng cách sử dụng:Wifi, Bluetooth và BLE, Ethernet, USB (Serial), GSM, …
- Các tiện ích trên giao diện được nhà cung cấp dễ sử dụng
- Thao tác kéo thả trực tiếp giao diện mà không cần viết mã
- Dễ dàng tích hợp và thêm chức năng mới bằng cách sử dụng các cổng kết nối
ảo được tích hợp trên blynk app
- Theo dõi lịch sử dữ liệu
- Thông tin liên lạc từ thiết bị đến thiết bị bằng Widget
2.4 Nhà thông minh
2.4.1 Khái niệm
Nhà thông minh là kiểu nhà được lắp đặt các thiết bị điện, điện tử có thể được điều khiển hoặc tự động hoá 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 người dùng thông qua bảng điện tử đặt trong nhà, ứng dụng trên điện thoại di động, máy tính bảng hoặc một giao diện web
Trang 16Hình 2.14: Mô hình nhà thông minh 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 Thêm vào đó, các đồ gia dụng có thể hiểu được ngôn ngữ của nhau và có khả năng tương tác với nhau
2.4.2 Chức năng
- Điều khiển chiếu sáng (on/off, dimmer, scence, timer, logic, )
- Điều khiển mành, rèm, cửa cổng
- Hệ thống an ninh, báo động, báo cháy
- Điều khiển điều hòa, máy lạnh
- Hệ thống âm thanh đa vùng
- Camera, chuông hình
- Hệ thống Bảo vệ nguồn điện
Trang 172.4.3 Các hệ sinh thái nhà thông minh trên thế giới:
Với nhu cầu ngày càng cao về nhà thông minh trên thế giới Các hãng công nghệ
lớn trên thế giới đã phát triển các hệ sinh thái SmartHome cho riêng mình Với
trung tâm là trợ lý ảo tích hợp AI cùng các thiết bị điện thông minh kết nối IoT và
các phần mềm hỗ trợ trên Smart phone Tiêu biểu trong các hệ sinh thái này phải
kể đến: Amazon, Google, Samsung, Xiaomi, GeekLink, …
Trang 18CHƯƠNG 3 THIẾT BỊ VÀ GIẢI PHÁP CÔNG NGHỆ
3.1 Kit NodeMCU Lua ESP8266
Chip ESP8266 được phát triển bởi Espressif để cung cấp giải pháp giao tiếp Wifi cho các thiết bị IoT Điểm đặc biệt của dòng ESP8266 là nó được tích hợp các mạch RF như balun, antenna switches, TX power amplifier và RX filter ngay bên trong chip với kích thước rất nhỏ chỉ 5x5mm nên các board sử dụng ESP8266 không cần kích thước board lớn cũng như không cần nhiều linh kiện xung quanh
Hình 3.1: Module NodeMCU Lua ESP8266
Trang 19Module thu phát Wifi ESP8266 NodeMCU Lua là kit phát triển dựa trên nền
chip Wifi SoC ESP8266 với thiết kế dễ sử dụng và đặc biệt là có thể sử dụng trực
tiếp trình biên dịch của Arduino để lập trình và nạp code, điều này khiến việc sử
dụng và lập trình các ứng dụng trên ESP8266 trở nên rất đơn giản
Module thu phát Wifi ESP8266 NodeMCU Lua là kit phát triển dựa trên nền
chip Wifi SoC ESP8266 với thiết kế dễ sử dụng và đặc biệt là có thể sử dụng trực
tiếp trình biên dịch của Arduino để lập trình và nạp code, điều này khiến việc sử
dụng và lập trình các ứng dụng trên ESP8266 trở nên rất đơn giản
Hình 3.2: Sơ đồ nguyên lý kit NodeMCU
Trang 203.2 Module và Board phát triển của ESP8266
ESP8266 cần một số linh kiện nữa mới có thể hoạt động, trong đó phần khó
nhất là Anten Đòi hỏi phải được sản xuất, kiểm tra với các thiết bị hiện đại Do
đó, trên thị trường xuất hiện nhiều Module và Board mạch phát triển đảm đương hết để người dùng đơn giản nhất trong việc phát triển ứng dụng Một số Module
và Board phát triển phổ biến:
Hiện nay phiên bản sử dụng phổ biến nhất là ESP8266 12E
Hình 3.4: Chip ESP 12E
Trang 213.3 Giới thiệu về module ESP 12E( NodeMCU V1).
NodeMCU v1.0 Lua - ESP8266 ESP12E
Hình 3.5 NODE MCU ESP8266
NodeMCU V1.0 được phát triển dựa trên Chip WiFi ESP8266EX bên trong Module ESP-12E dễ dàng kết nối WiFi với một vài thao tác Board còn tích hợp
IC CP2102, giúp dễ dàng giao tiếp với máy tính thông qua Micro USB để thao tác với board Và có sẳn nút nhấn, led để tiện qua quá trình học, nghiên cứu Với kích thước nhỏ gọn, linh hoạt board dễ dàng liên kết với các thiết bị ngoại vi
để tạo thành project, sản phẩm mẫu một cách nhanh chóng
Trang 22Thông số kỹ thuật:
Chip: ESP8266EX
WiFi: 2.4 GHz hỗ trợ chuẩn 802.11 b/g/n
Điện áp hoạt động: 3.3V
Điện áp vào: 5V thông qua cổng USB
Số chân I/O: 11 (tất cả các chân I/O đều có Interrupt/PWM/I2C/One-wire, trừ chân D0)
Số chân Analog Input: 1 (điện áp vào tối đa 3.3V)
Bộ nhớ Flash: 4MB
Giao tiếp: Cable Micro USB
Hỗ trợ bảo mật: WPA/WPA2
Tích hợp giao thức TCP/IP
Lập trình trên các ngôn ngữ: C/C++, Micropython, NodeMCU – Lua
3.4 Sơ đồ chân GPIO và những lưu ý khi sử dụng:
NodeMCU:
Trang 23Hình 3.6 Sơ đồ chân MODULE Node MCU
Chúng ta biết rằng ở mỗi chân trên vi điều khiển có thể thực hiện nhiều chức năng khác nhau, NodeMCU có tổng cộng 13 chân GPIO tuy nhiên một số chân được dùng cho những mục đích quan trọng khác vì vậy chúng ta phải lưu ý khi sử dụng như sau:
Tất cả các GPIO đều có trở kéo lên nguồn bên trong (ngoại trừ GPIO16 có trở kéo xuống GND) Người dùng có thể cấu hình kích hoạt hoặc không kích hoạt trở kéo này
GPIO1 và GPIO3: hai GPIO này được nối với TX và RX của bộ UART0, NodeMCU nạp code thông qua bộ UART này nên tránh sử dụng 2 chân GPIO này
GPIO0, GPIO2, GPIO15: đây là các chân có nhiệm vụ cấu hình mode cho ESP8266 điều khiển quá trình nạp code nên bên trong NodeMCU (có tên gọi là strapping pins) có các trở kéo để định sẵn mức logic cho chúng như sau: GPIO0: HIGH, GPIO2: HIGH, GPIO15: LOW Vì vậy khi muốn sử dụng các chân này ở
Trang 24vai trò GPIO cần phải thiết kế một nguyên lý riêng để tránh xung đột đến quá trình nạp code.
GPIO9, GPIO10: hai chân này được dùng để giao tiếp với External Flash của ESP8266 vì vậy cũng không thể dùng được (đã test thực nghiệm)
Như vậy, các GPIO còn lại: GPIO 4, 5, 12, 13, 14, 16 có thể sử dụng bình thường
Trang 253.5 Phần mềm IDE
Đây là phần mềm dùng để lập trình nạp code vô kit NodeMCU Lua ESP8266
3.5.1 Cấu trúc một chương trình trong phần mềm IDE:
Phần 1: Khai báo biến
Đây là phần khai báo kiểu biến, tên các biến, định nghĩa các chân trên board một
số kiểu khai báo biến thông dụng:
* #define
Nghĩa của từ define là định nghĩa, hàm #define có tác dụng định nghĩa, hay còn gọi là gán, tức là gán một chân, một ngõ ra nào đó với 1 cái tên Ví dụ #define led
13
Chú ý: sau #define thì không có dấu “,” (dấy phẩy)
*Khai báo các kiểu biến khác như: int (kiểu số nguyên), float,…
Các chúng ta có thể tham khảo thêm các kiểu biến cũng như công dụng tại arduino.cc
Phần 2: Thiết lập (void setup())
Phần này dùng để thiết lập cho chương trình, cần nhớ rõ cấu trúc của nó:
void setup()
{
…
}
Trang 26Cấu trúc của nó có dấu ngoặc nhọn ở đầu và ở cuối, nếu thiếu phần này khi kiểm tra chương trình thì chương trình sẽ báo lỗi Phần này dùng để thiết lập các tốc độ truyền dữ liệu, kiểu chân là chân ra hay chân vào Trong đó:
Serial.begin(9600); Dùng để truyền dữ liệu từ board Arduino lên máy tính pinMode(biến, kiểu vào hoặc ra); Dùng để xác định kiểu chân là vào hay ra
Ví dụ: pinMode(ChanDO, INPUT);
Phần 3: Vòng lặp
Dùng để viết các lệnh trong chương trình để mạch Arduino thực hiện các
nhiệm vụ mà chúng ta mong muốn, thường bắt đầu bằng: void loop()
{
………
}
Một số câu lệnh, cấu trúc thường gặp:
// : Dấu // dùng để giải thích, khi nội dung giải thích nằm trên 1 dòng, khi kiểm tra chương trình thì phần mềm kiểm tra sẽ bỏ qua phần này, không kiêm tra hay biên dịch
#define: Dùng để định nghĩa một chân nào đó, hay gán biến tới 1 chân, địa chỉ ghi đọc tín hiệu Ví dụ: #define LED, 13
3.5.2 Hàm nhập xuất Digital I/O:
a digitalWrite():Miêu tả: Viết một giá trị HIGH hoặc một LOW cho một chân số
của arduino
Trang 27Nếu chân đã được cấu hình như một OUTPUT với pinMode(), điện áp của nó
sẽ được thiết lập với giá trị tương ứng: 5V (hoặc 3.3V trên 3.3V) cho HIGH, 0V cho LOW
Nếu chân được cấu hình như là một INPUT, digitalWrite()sẽ cho phép ( HIGH) hoặc vô hiệu hóa ( LOW) pullup nội bộ trên chân đầu vào Nên thiết
lập pinMode() để INPUT_PULLUP cho phép các điện trở kéo lên bên trong
Cú pháp:
digitalWrite(pin, value);
Thông số:
pin: Số của chân digital mà bạn muốn thiết đặt
value: HIGH hoặc LOW
Trang 28digitalWrite(led, HIGH); // bật led
delay(1000); // dừng chương trình 1 giây
digitalWrite(led, LOW); // tắt led
delay(1000); // dừng chương trình 1 giây
pin: số chân có chế độ bạn muốn thiết lập
mode: INPUT, OUTPUT, Hoặc INPUT_PULLUP
Trả về:
Không có
Ví dụ:
void setup()
Trang 29Điều này có nghĩa là nó sẽ lập bản đồ điện áp đầu vào từ 0 đến 5 volts thành các số nguyên từ 0 đến 1023 Điều này tạo ra độ phân giải giữa các lần đọc: 5 volts / 1024 đơn vị hoặc, 0,0049 volt (4,9 mV) trên một đơn vị Dải đầu vào và độ phân giải có thể được thay đổi bằng cách sử dụng
Hàm analogRead() cần 100 micro giây để thực hiện Khi người ta nói "đọc tín hiệu analog", bạn có thể hiểu đó chính là việc đọc giá trị điện áp
Cú pháp: analogRead (pin) ;
b analogWrite()
Trang 30Miêu tả analogWrite() là lệnh xuất ra từ một chân trên mạch Arduino một mức
tín hiệu analog (phát xung PWM) Người ta thường điều khiển mức sáng tối của đèn LED hay điều chỉnh tốc độ động cơ.Tần số của tín hiệu PWM trên hầu hết các chân khoảng 490 Hz Trên board Node MCU và các board tương tự, chân
PWM có tần số khoảng 980Hz
Bạn không cần gọi hàm pinMode() để đặt chế độ OUTPUT cho chân sẽ dùng để phát xung PWM trên mạch Arduino Cú pháp: analogWrite([chân phát xung PWM], [giá trị xung PWM]); Giá trị mức xung PWM nằm trong khoảng từ
0 đến 255, tương ứng với mức duty cycle từ 0% đến 100% Trả về
Tạm dừng chương trình cho khoảng thời gian (tính bằng mili giây) được chỉ
định là tham số (Có 1000 mili giây = 1 giây.)
Trang 31int ledPin = 13; // LED pin 13
Trang 323.6 Lập trình ESP 12E bằng Arduino IDE
3.6.1 Giới thiệu
Để bắt đầu với những dự án Wifi các bạn
cần ESP8266 với giá thành rẻ, và dễ dàng sử
dụng Đặc biệt ESP8266 12E có thể được lập
trình bằng Arduino IDE Trước khi bắt đầu
những chuỗi dự án với ESP8266, ở bài viết
này, mình sẽ chia sẻ cách cài đặt Arduino
IDE để nạp code cho ESP8266
3.6.2 Chuẩn bị phần cứng:
1 Module ESP8266 V12 hoặc V12E đã tích hợp sẵn mạch nạp
3.6.3 Cài đặt phần mềm arduino IDE và thư viện cho esp8266
Sau khi tải phần mềm Arduino IDE, chúng ta tiến hành cài đặt như bình thường
và mở chương trình lên Cần cài driver để phần mềm nhận diện được module (file driver có sẵn trong file cài)
Trang 33Để tiến hành cài đặt thư viện và chức năng nạp code cho IDE chúng ta làm như sau:
Vào File→ Preferences, vào textbox Additional Board Manager URLs thêm
đường link sau vào
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Click OK để chấp nhận
Trang 34Tiếp theo vào Tool→Board→Boards Manager
Đợi một lát để chương trình tìm kiếm Ta kéo xuống và click vào ESP8266 by ESP8266 Community, click vào Install Chờ phần mềm tự động download và
cài đặt
Trang 35Kết nối mudule ESP8266 -12E vào máy tính Vào Tool→Board→NodeMCU 1.0,chọn cổng COM tương ứng với module tương ứng
Chọn chế độ nạp Arduino as ISP và chọn cổng COM cho đúng nhé.Vậy là ta đã
có môi trường lập trình cho esp8266 rất thân thiện
Trang 36Sau khi kết nối ESP8266 với máy tính, chúng ta sẽ test code ESP8266 ở đây: Code
ở dưới test led trên board esp8266 12E ở chân 13 (D7 ) sáng tắt trong vòng 1 giây
void setup() {
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // bật led sáng 1 giây
delay(1000); // wait for asecond
digitalWrite(LED_BUILTIN, LOW); // tắt led 1 giây
delay(1000); // wait for a
Trang 37CHƯƠNG 4
NỘI DUNG THỰC HIỆN VÀ MÔ HÌNH
4.1 Điều khiển LED ma trận Max7219 với module WIFI NodeMCU.
Mục tiêu:
Lập trình chạy chữ led ma trận Max7219 sử dụng module Wifi
NodeMCU web server
Phần mềm cần chuẩn bị
Cài đặt phần mềm arduino IDE
Phần cứng cần chuẩn bị:
1 Mạch Node MCU
Dây cắm board test
1 module led ma trận Max7219 (32x8) Hình 4.1 ảnh thực tế mô hình
Trang 38
Hình 4.2 Sơ đồ lắp mạch
Trang 39Code chương trình:
#include <LEDMatrixDriver.hpp>
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
const char* ssid = "PHI QUANG"; // Thay đôi tên wifi
const char* password = "88888888"; // Thay đổi pass wifi
// TCP server at port 80 will respond to HTTP requests
WiFiServer server(80);
const uint8_t LEDMATRIX_CS_PIN = 15;
// Define LED Matrix dimensions (0-n) - eg: 32x8 = 31x7
const int LEDMATRIX_WIDTH = 31;
const int LEDMATRIX_HEIGHT = 7;
const int LEDMATRIX_SEGMENTS = 4;
// The LEDMatrixDriver class instance
LEDMatrixDriver lmd(LEDMATRIX_SEGMENTS, LEDMATRIX_CS_PIN);
void displayText ( char * theText)
Trang 40// stop if char is outside visible area
if( x + idx * 8 > LEDMATRIX_WIDTH )