Hiện nay, xã hội đang bước vào thời đại 4.0 hay nói đúng hơn là Cuộc cách mạng công nghiệp lần thứ tư. Đây là cuộc cách mạng được đặc trưng bởi việc kết nối thông qua truy cập dữ liệu thời gian thực, giới thiệu các hệ thống vật lý không gian mạng... Nói một cách đơn giản đó chính là việc áp dụng các tiến bộ khoa học kỹ thuật cho đa số các ngành nghề và lĩnh vực, từ đó cải thiện năng suất lên gấp nhiều lần. Và một trong những công nghệ được nhắc đến trong cuộc cách mạng này đó là Internet of Things hay IoT là một thuật ngữ chỉ sự kết nối của các vật thể với nhau và với con người thông qua Internet. Khi mà cuộc sống càng ngày càng trở nên hiện đại và công nghệ được áp dụng rất nhiều vào đời sống. Sự kết nối của các vật thể với nhau và với con người thông qua Internet là điều cần thiết. Và cụ thể, em muốn nói đến một ứng dụng của IoT đó là SmartHome. Đây là một mà sẽ gắn liền với cuộc sống đời thưởng tại chính căn nhà của chúng ta. Hãy thử tưởng tượng xem sẽ thấy thích như thế nào nếu có thể bật điều hòa trước khi về đến nhà hoặc tắt đèn ngay cả khi đã rời khỏi nhà. Chỉ cần một app trên điện thoại là điều khiển được mọi thiết bị gia dụng. Tùy vào từng hoạt cảnh cài đặt do chủ nhà chọn lựa (ví dụ: “Vắng nhà”, “Tiếp khách”, “Đi ngủ”, Giải trí” hay “Xem phim”). Các thiết bị như hệ thống âm thanh, máy điều hòa, tivi, nhà bếp, hệ thống cửa, nhà xe… sẽ tự động phối hợp với nhau. Không chỉ vậy, khi chủ nhân ngôi nhà muốn thay đổi hoạt động của thiết bị nào. Hay tạo ra một chế độ hoạt cảnh mới, ngôi nhà sẽ ghi nhớ và lưu giữ các thông số này và tự động phục vụ trong lần sử dụng sau. Và đừng ngạc nhiên với việc IoT đang hình thành nên các công ty xây dựng các sản phẩm để làm cho cuộc sống của trở nên thuận tiện và đơn giản hơn. SmartHome đã mang đến cho cư dân một chất lượng cuộc sống tốt hơn và người ta dự đoán SmartHome sẽ trở nên phổ biến như Smartphone. Xuất phát từ những điều trên, em đã thiết kế và thực hiện mạch ứng dụng nhỏ của IoT trong SmartHome: “Mạch điều khiển bậttắt thiết bị điện dùng Kit RF Thu Phát Wifi ESP8266 NodeMCU Lua V3 CH340 và sử dụng Blynk, Google Assistant trên Smartphone”.
TÌM HIỂU CÁC KHÁI NIỆM LIÊN QUAN
Internet of Things
Mạng lưới vạn vật kết nối Internet (IoT) là một kịch bản trong đó mỗi đồ vật và con người đều có định danh riêng và có khả năng trao đổi dữ liệu qua một mạng duy nhất mà không cần sự tương tác trực tiếp IoT phát triển từ sự hội tụ của công nghệ không dây và công nghệ vi cơ điện tử, mở ra một thế giới kết nối thông minh và tự động hóa.
Internet Nói đơn giản là một tập hợp các thiết bị có khả năng kết nối với nhau, với Internet và với thế giới bên ngoài để thực hiện một công việc nào đó.
Hình 1 Giới thiệu về IoT
Hay hiểu một cách đơn giản IoT là tất cả các thiết bị có thể kết nối với nhau Việc kết nối thì có thể thực hiện qua Wi-Fi, mạng viễn thông băng rộng (3G, 4G), Bluetooth, ZigBee, hồng ngoại… Các thiết bị có thể là điện thoại thông minh, máy pha cafe, máy giặt, tai nghe, bóng đèn, và nhiều thiết bị khác Cisco, nhà cung cấp giải pháp và thiết bị mạng hàng đầu hiện nay dự báo: Đến năm 2020, sẽ có khoảng
Internet of Things (IoT) dự kiến kết nối hơn 50 tỷ vật thể và con số này còn tăng lên theo thời gian IoT sẽ tạo thành một mạng lưới khổng lồ, liên kết mọi thứ, từ con người đến thiết bị, xây dựng các mối quan hệ giữa người và người, người và thiết bị, cũng như thiết bị và thiết bị Một mạng lưới IoT có thể chứa từ 50 đến 100 nghìn tỷ đối tượng được kết nối, có khả năng theo dõi chính xác sự di chuyển của từng đối tượng Trong cuộc sống ở thành phố, mỗi con người có thể bị bao quanh bởi từ 1.000 đến 5.000 thiết bị có khả năng theo dõi và thu thập dữ liệu liên tục.
Tính kết nối liên thông (Interconnectivity) trong IoT cho phép mọi thiết bị, từ thiết bị gia dụng đến hệ thống công nghiệp, có thể kết nối và chia sẻ dữ liệu qua mạng lưới thông tin một cách dễ dàng Nhờ đó, các thiết bị thông minh có thể giao tiếp và hoạt động phối hợp hiệu quả, tạo nên một hệ sinh thái interconnected đa dạng và tiện ích hơn Điều này giúp nâng cao hiệu suất vận hành, tối ưu hóa cuộc sống hàng ngày và thúc đẩy sự đổi mới trong các lĩnh vực khác nhau dựa trên hạ tầng liên lạc ổn định và hiện đại.
- Những dịch vụ liên quan đến “Things”: hệ thống IoT có khả năng cung cấp các dịch vụ liên quan đến “Things”, chẳng hạn như bảo vệ sự riêng tư và nhất quán giữa Physical Thing và Virtual Thing Để cung cấp được dịch vụ này, cả công nghệ phần cứng và công nghệ thông tin (phần mềm) sẽ phải thay đổi.
Trong hệ sinh thái IoT, tính không đồng nhất của các thiết bị đóng vai trò quan trọng, vì chúng sử dụng phần cứng và mạng khác nhau Mặc dù các thiết bị thuộc các mạng khác nhau có thể không tương tác trực tiếp, nhưng nhờ vào sự liên kết của các mạng, chúng vẫn có khả năng trao đổi dữ liệu và phối hợp với nhau hiệu quả Điều này giúp tăng tính linh hoạt và khả năng mở rộng của hệ thống IoT, phù hợp với nhiều ứng dụng đa dạng.
Thiết bị tự động có khả năng thay đổi trạng thái linh hoạt, như chuyển đổi giữa chế độ ngủ và thức dậy, kết nối hoặc ngắt kết nối một cách tự động, đồng thời vị trí và tốc độ của thiết bị cũng có thể thay đổi theo điều kiện vận hành Hơn nữa, số lượng thiết bị trong hệ thống có thể tự điều chỉnh phù hợp với nhu cầu sử dụng, giúp tối ưu hóa hiệu suất và vận hành một cách linh hoạt và hiệu quả.
- Quy mô lớn: Sẽ có một số lượng rất lớn các thiết bị được quản lý và giao tiếp với nhau Số lượng này lớn hơn nhiều so với số lượng máy tính kết nối Internet hiện nay Số lượng các thông tin được truyền bởi thiết bị sẽ lớn hơn nhiều so với được truyền bởi con người.
1.1.3 Yêu cầu ở mức high-level đối với một hệ thống IoT
Một hệ thống IoT phải thoả mãn các yêu cầu sau:
- Kết nối dựa trên sự nhận diện: Nghĩa là các “Things” phải có ID riêng biệt
Hệ thống IoT cần hỗ trợ các kết nối giữa các “Things”, và kết nối được thiết lập dựa trên định danh (ID) của Things.
- Khả năng cộng tác: hệ thống IoT khả năng tương tác qua lại giữa các Network và Things.
- Khả năng tự quản của Network: Bao gồm tự quản lý, tự cấu hình, tự chữa bệnh, tự tối ưu hóa và tự có cơ chế bảo vệ Điều này cần thiết để Network có thể thích ứng với các domains ứng dụng khác nhau, môi trường truyền thông khác nhau, và nhiều loại thiết bị khác nhau.
- Dịch vụ thoả thuận: dịch vụ này để có thể được cung cấp bằng cách thu thập, giao tiếp và xử lý tự động các dữ liệu giữa các “Things” dựa trên các quy tắc (rules) được thiết lập bởi người vận hành hoặc tùy chỉnh bởi các người dùng.
Các khả năng dựa vào vị trí (Location-based capabilities) cho phép hệ thống IoT tự động biết và theo dõi vị trí của các thiết bị và người dùng, từ đó cung cấp các dịch vụ liên quan phù hợp với vị trí đó Tuy nhiên, việc cung cấp dịch vụ dựa trên vị trí có thể bị giới hạn bởi các quy định pháp luật và yêu cầu về an ninh, đòi hỏi các hệ thống phải tuân thủ các quy định này để đảm bảo bảo mật và quyền riêng tư của người dùng.
Trong IoT, các thiết bị ("Things") kết nối với nhau ngày càng phổ biến, tuy nhiên điều này làm gia tăng nguy cơ về bảo mật, như rò rỉ thông tin bí mật, xác thực sai, hoặc dữ liệu bị thay đổi và làm giả Việc đảm bảo an toàn cho hệ thống IoT là vô cùng quan trọng để bảo vệ dữ liệu và duy trì tính toàn vẹn của các thiết bị kết nối.
Bảo vệ tính riêng tư là yếu tố quan trọng, khi tất cả các “Things” đều có chủ sở hữu và người sử dụng, và dữ liệu thu thập từ chúng có thể chứa thông tin cá nhân liên quan Các hệ thống IoT cần đảm bảo an toàn trong quá trình truyền, tập hợp, lưu trữ, khai thác và xử lý dữ liệu để bảo vệ quyền riêng tư của người dùng Việc bảo vệ sự riêng tư không nên gây cản trở đến quá trình xác thực nguồn dữ liệu, đảm bảo an toàn mà vẫn duy trì hiệu quả hoạt động của hệ thống.
- Plug and play: các Things phải được plug-and-play một cách dễ dàng và tiện dụng.
- Khả năng quản lý: hệ thống IoT cần phải hỗ trợ tính năng quản lý các
“Things” để đảm bảo Network hoạt động bình thường Ứng dụng IoT thường làm việc tự động mà không cần sự tham gia người, nhưng toàn bộ quá trình hoạt động của họ nên được quản lý bởi các bên liên quan.
Hình 2 Các lĩnh vực ứng dụng của IoT
IoT có ứng dụng rộng vô cùng, có thể kể ra một số thư như sau:
Quản lí và lập kế hoạch quản lí đô thị
Phản hồi trong các tinh huống khẩn cấp
Quản lí các thiết bị cá nhân
Đồng hồ đo thông minh
Tự động hóa ngôi nhà
Blynk
Blynk là một nền tảng với các ứng dụng iOS và Android để điều khiển Arduino, Raspberry Pi và các ứng dụng tương tự qua Internet Blynk cũng là một trình xây dựng ứng dụng không mã đơn giản và mạnh mẽ, nơi có thể tạo mẫu, triển khai và quản lý các thiết bị điện tử được kết nối ở mọi quy mô - từ các dự án cá nhân của đến hàng triệu sản phẩm được khách hàng của sử dụng
Nó là một bảng điều khiển kỹ thuật số nhờ đó có thể xây dựng giao diện đồ họa cho dự án của mình bằng cách kéo và thả các widget Việc thiết lập mọi thứ rất đơn giản và sẽ bắt đầu sau chưa đầy 5 phút.
Blynk cũng là một ứng dụng IoT rất thân thiện với người dùng Sau khi thiết bị được kích hoạt, người dùng có thể:
Dễ dàng kết nối các thiết bị được hỗ trợ
Điều khiển từ xa các thiết bị được hỗ trợ từ mọi nơi trên thế giới
Thêm và kiểm soát nhiều thiết bị với một ứng dụng duy nhất
Nhận thông báo đẩy và email theo thời gian thực
Tạo tự động hóa: Làm cho thiết bị thông minh hơn bằng cách tạo kịch bản cho một hoặc giữa nhiều thiết bị Dựa trên trạng thái thiết bị, ngày, giờ, hoàng hôn hoặc bình minh, v.v.
Quản lý quyền truy cập vào thiết bị của người khác
Tương tác với các trợ lý giọng nói như Amazon Echo và Google Home
Blynk linh hoạt không bị giới hạn bởi các bo mạch hoặc shield cụ thể, hỗ trợ nhiều phần cứng như ESP32, Arduino, Raspberry Pi, Seeed, Particle, SparkFun, Adafruit, TI và các thiết bị khác Nền tảng này tích hợp đám mây để dễ dàng xây dựng giao diện người dùng, sử dụng các tiện ích như nút, thanh trượt và biểu đồ, giúp trực quan hóa dữ liệu cảm biến và kiểm soát mọi thiết bị điện tử một cách linh hoạt và hiệu quả.
1.2.2 Cách hoạt động của Blynk
Blynk được thiết kế đặc biệt cho IoT, cho phép điều khiển phần cứng từ xa một cách dễ dàng và hiệu quả Nền tảng này còn hỗ trợ hiển thị dữ liệu cảm biến trực tiếp, giúp người dùng theo dõi trạng thái thiết bị một cách rõ ràng Ngoài ra, Blynk còn có khả năng lưu trữ dữ liệu, trực quan hóa thông tin và thực hiện nhiều chức năng hữu ích khác để tối ưu hóa các dự án IoT.
Đám mây miễn phí, được lưu trữ, bảo mật và sẵn sàng lắng nghe các thiết bị của
Blynk.Edgent is our open-source hardware library that supports over 400 development boards, including ESP32, Arduino, Particle, Texas Instruments, Seeed WIO, and many others, enabling versatile application development.
Blynk.360 - cổng web mạnh mẽ để quản lý thiết bị, người dùng và tổ chức
Cấp phép WiFI cho thiết bị
Bất kỳ hình ảnh hóa dữ liệu cảm biến nào
Điều khiển từ xa mọi thiết bị điện tử
Cập nhật chương trình cơ sở qua mạng
Cảnh báo thông minh và thông báo
Có ba thành phần chính trong nền tảng:
Ứng dụng Blynk - cho phép tạo giao diện cho các dự án của mình bằng cách sử dụng các widget khác nhau.
Blynk Server - chịu trách nhiệm về tất cả các giao tiếp giữa điện thoại thông minh và phần cứng Có thể sử dụng Blynk Cloud hoặc chạy cục bộ máy chủ Blynk riêng của mình Nó là mã nguồn mở, có thể dễ dàng xử lý hàng nghìn thiết bị và thậm chí có thể được khởi chạy trên Raspberry Pi.
Thư viện Blynk là giải pháp lý tưởng cho các nền tảng phần cứng phổ biến, giúp thiết bị của bạn dễ dàng giao tiếp với máy chủ từ xa Blynk cho phép xử lý tất cả các lệnh đến và đi một cách hiệu quả, tối ưu hóa khả năng điều khiển và giám sát hệ thống IoT Với thư viện Blynk, việc phát triển các dự án tự động hóa trở nên đơn giản và linh hoạt hơn bao giờ hết.
Mỗi khi nhấn một nút trong ứng dụng Blynk, thông điệp sẽ truyền đến không gian của đám mây Blynk, và tìm đường đến phần cứng.
Hình 3 Cách thức hoạt động của Blynk
API và giao diện người dùng tương tự cho tất cả phần cứng và thiết bị được hỗ trợ Kết nối với đám mây bằng cách sử dụng: Wifi, Bluetooth, BLE, Ethernet, USB (Nối tiếp), GSM….
Thuật ngữ “Internet of things” (viết tắt là IoT) dạo gần đây xuất hiện khá nhiều và thu hút không ít sự quan tâm chú ý của thế giới công nghệ Vì sự bùng nổ của IoT trong tương lai sẽ có tác động mãnh mẽ tới cuộc sống, công việc và xã hội loài người.
Thực tế, Internet of things đã manh nha từ nhiều thập kỹ trước Tuy nhiên mãi đến năm 1999 cụm từ IoT mới được đưa ra bởi Kevin Ashton, ông là một nhà khoa học đã sáng lập ra Trung tâm Auto-ID ở đại học MIT, nơi thiết lập các quy chuẩn toàn cầu cho RFID (một phương thức giao tiếp không dây dùng sóng radio) cũng như một số loại cảm biến khác.
Giới thiệu NodeMCU
NodeMCU là firmware dựa trên mã nguồn mở LUA được phát triển cho chip wifi ESP8266 Firmware NodeMCU đi kèm với bo ESP8266, tức là bo Dev
Vì NodeMCU là một nền tảng mã nguồn mở, thiết kế phần cứng của nó có thể mở để chỉnh sửa hoặc sửa đổi hoặc xây dựng thêm.
Bo NodeMCU Dev Kit gồm chip hỗ trợ wifi ESP8266 ESP8266 là chip Wi-
Fi giá rẻ do Espressif Systems phát triển với giao thức TCP / IP Hiện tại đã có phiên bản 2 (V2) của NodeMCU Dev Kit có màu đen.
NodeMCU Dev Kit có các chân Arduino như Analog (tức là A0) và Digital (D0-D8) trên bo mạch Nó hỗ trợ các giao thức truyền thông nối tiếp như UART, SPI, I2C,
Sử dụng các giao thức nối tiếp, chúng ta có thể kết nối nó với các thiết bị nối tiếp như màn hình LCD hỗ trợ I2C, Từ kế HMC5883, Máy đo Gyro MPU-6050 + Gia tốc kế, chip RTC, module GPS, màn hình cảm ứng, thẻ SD, v.v.
1.3.2 Làm thế nào để sử dụng NodeMCU
NodeMCU nổi bật với khả năng phát WiFi, có chân analog, chân kỹ thuật số và các giao thức truyền thông nối tiếp phù hợp cho các ứng dụng IoT Để bắt đầu sử dụng NodeMCU trong các dự án IoT, quan trọng là bạn cần nắm vững cách viết hoặc tải về firmware NodeMCU cho bo mạch Dev NodeMCU, đảm bảo hoạt động hiệu quả và ổn định.
1.3.3 Làm thế nào để viết mã cho NodeMCU
Sau khi cài đặt ESP8266 với chương trình cơ sở NodeMCU, cần sử dụng các môi trường phát triển tích hợp (IDE) phù hợp để lập trình Các tập lệnh Lua thường được sử dụng để viết mã cho NodeMCU, là một ngôn ngữ lập trình mã nguồn mở, nhẹ và nhúng được dựa trên C Ngoài ra, Arduino IDE cũng là một lựa chọn phổ biến để phát triển NodeMCU, giúp lập trình dễ dàng hơn so với việc học một ngôn ngữ và IDE mới Việc sử dụng Arduino IDE mang lại lợi ích về sự quen thuộc và đơn giản trong quá trình phát triển các ứng dụng IoT với NodeMCU.
1.3.4 Sự khác biệt trong việc sử dụng ESPlorer và Arduino IDE
Có một sự khác biệt về ngôn ngữ lập trình khi phát triển ứng dụng cho NodeMCU bằng cách sử dụng ESPlorer IDE và Arduino IDE.
Để phát triển các ứng dụng NodeMCU, bạn nên viết mã bằng ngôn ngữ lập trình C hoặc C++ khi sử dụng Arduino IDE Trong khi đó, nếu bạn sử dụng IDE ESPlorer, ngôn ngữ Lua là lựa chọn phù hợp để lập trình cho NodeMCU Việc chọn đúng ngôn ngữ lập trình phù hợp với từng môi trường phát triển giúp tối ưu hóa quá trình lập trình và cải thiện hiệu suất của dự án IoT của bạn.
NodeMCU là trình biên dịch của Lua, giúp dễ dàng hiểu và thực thi các tập lệnh Lua trên thiết bị Khi viết và tải các tập lệnh Lua lên NodeMCU, chúng sẽ thực thi các lệnh theo trình tự, không yêu cầu xây dựng tệp firmware nhị phân của mã nguồn Điều này giúp quá trình lập trình với NodeMCU trở nên đơn giản và linh hoạt hơn.
Nó sẽ gửi tập lệnh Lua đến NodeMCU để thực thi.
Trong Arduino IDE khi chúng ta viết và biên dịch mã, chuỗi công cụ
ESP8266 sẽ tạo ra một tệp firmware nhị phân của mã mà chúng ta đã viết, sau đó giúp tải lên và flash toàn bộ firmware mới cho NodeMCU Quá trình này khiến NodeMCU không còn chấp nhận thêm các tập lệnh hoặc mã Lua sau khi đã được flash bằng Arduino IDE, vì nó đã trở thành một firmware hoàn chỉnh Khi NodeMCU được flash bằng Arduino sketch hoặc mã, nó không còn là trình biên dịch Lua nữa, dẫn đến lỗi nếu cố gắng tải lên các tập lệnh Lua mới Để bắt đầu lại với tập lệnh Lua, bạn cần phải flash lại NodeMCU với firmware NodeMCU gốc.
Vì Arduino IDE biên dịch và tải lên hoặc ghi firmware hoàn chỉnh, nên mất nhiều thời gian hơn so với IDE ESPlorer.
Giới thiệu về ESP8266
ESP8266 là một vi mạch trong gói QFN tích hợp cả bộ TCP/IP và vi điều khiển, mang đến giải pháp WiFi hiệu quả cho các ứng dụng IoT Với khả năng chi phí thấp, tiêu thụ năng lượng hiệu quả và thiết kế nhỏ gọn, ESP8266 đáp ứng các yêu cầu về hiệu suất đáng tin cậy cho các thiết bị IoT Sản phẩm do Espressif Systems tại Thượng Hải, Trung Quốc sản xuất, góp phần thúc đẩy sự phát triển của các thiết bị kết nối thông minh.
ESP8266 là module WiFi hoàn chỉnh, có khả năng kết nối mạng và hoạt động như một thiết bị trung gian cho bộ vi điều khiển chủ hoặc như một thiết bị độc lập Khi dùng làm thiết bị trung gian, nó có thể cung cấp chức năng WiFi cho các vi điều khiển thông qua giao tiếp SPI hoặc UART Ngoài ra, ESP8266 còn có khả năng hoạt động độc lập, thực hiện các chức năng của một bộ vi điều khiển và mạng WiFi tích hợp, mang lại sự linh hoạt cho các dự án IoT.
ESP8266 dựa trên dòng L106 Diamond của Tensilica, là bộ xử lý 32-bit và có SRAM trên chip Đồng thời tích hợp module nguồn, balun RF, bộ thu và phát
RF, bộ thu và phát tương tự, băng tần số, bộ khuếch đại, bộ lọc và một số thành phần tối thiểu khác.
ESP8266 có nhiều phiên bản khác nhau như được thể hiện trong hình bên dưới Hiện nay, NodeMCU ESP-12E là phiên bản phổ biến nhất vì nó dễ kết nối, lập trình và có nhiều chân GPIO.
Hình 4 Các phiên bản của ESP8266
Các tính năng của chip ESP8266EX bao gồm:
Bộ xử lý: Lõi vi xử lý L106 32-bit RISC dựa trên Tiêu chuẩn Tensilica Xtensa Diamond, hoạt động ở tần số 80 MHz và SRAM trên chip.
Bộ nhớ nội của ESP8266EX gồm có SRAM và ROM, trong đó SRAM có dung lượng nhỏ hơn 36kB khi thiết bị hoạt động ở chế độ station ESP8266EX truy xuất bộ nhớ nội qua các giao diện iBus, dBus và AHB, giúp cải thiện hiệu suất hoạt động ROM của ESP8266EX không thể lập trình lại, do đó chương trình cần được lưu trữ trên bộ nhớ Flash ngoài để đảm bảo khả năng vận hành linh hoạt và cập nhật.
ESP8266EX sử dụng bộ nhớ flash ngoại để lưu trữ chương trình và boot trực tiếp từ bus SPI, với kích thước flash khác nhau tùy thuộc vào từng loại module như ESP-01 (1MB) và ESP-12E (16MB) Nếu chương trình yêu cầu dung lượng lớn hơn kích thước flash mặc định, người dùng cần chọn bộ flash ngoại có dung lượng lớn hơn, tối đa là 16MB theo lý thuyết Kích thước bộ nhớ flash nhỏ nhất có thể là 512KB (khi tắt chế độ OTA) hoặc 1MB (khi bật chế độ OTA), đảm bảo phù hợp với yêu cầu của ứng dụng.
Tích hợp TR switch, balun, LNA, bộ khuếch đại công suất và mạng kết hợp
Xác thực WEP hoặc WPA/WPA2 hoặc mạng mở không có password.
17 chân GPIO: Các chân có thể được dồn kênh cho các chức năng I2C, I2S, UART, PWM, IR - điều khiển từ xa,
2 hardware timer 23 bit: FRC1 và FRC2
3 SPI: general Slave/Master SPI, Slave SDIO/SPI và general
I2C: Hỗ trợ 1 I2C hoạt động được ở cả chế độ master và slave Vì các GPIO đều có thể được cấu hình ở chế độ cực máng hở nên các GPIO đều có thể được cấu hình cho các chân SDA hay SCL của I²C bằng phần mềm.
Giao diện I2S với DMA (sử dụng chung chân với GPIO)
Chưa rõ thông tin đầy đủ về UART1 trong bài viết Tuy nhiên, UART0 hỗ trợ hai chân GPIO3 (RX) và GPIO1 (TX), trong khi UART1 sử dụng GPIO2 (TX) và GPIO8 (TX) Lưu ý rằng GPIO8 thường được dùng để kết nối bộ nhớ flash của chip, hạn chế khả năng sử dụng cho các mục đích khác.
UART1 chỉ sử dụng được GPIO2 để truyền dữ liệu.
Hình 5 Sơ đồ khối của ESP8266 Đặc biệt, bộ vi điều khiển ESP8266 có vùng nhớ Flash để mô phỏng
EEPROM của Arduino Đây là vị trí bộ nhớ đặc biệt trong vi điều khiển, nơi dữ liệu vẫn còn trong bộ nhớ ngay cả sau khi bo mạch đã tắt Một điều quan trọng cần lưu ý là EEPROM có kích thước và tuổi thọ hạn chế Các ô nhớ có thể được đọc nhiều lần nếu cần nhưng số chu kỳ ghi bị giới hạn ở 100.000 Bạn nên chú ý đến kích thước của dữ liệu được lưu trữ và tần suất bạn muốn cập nhật nó Kích thước bộ nhớ flash tổng thể thường là 4MB EEPROM của ESP8266 có kích thước 4kB Nếu bạn muốn ghi dữ liệu thời gian thực từ một nhóm cảm biến để vẽ các đường cong, tốt nhất là bạn nên sử dụng mô-đun thẻ SD để lưu trữ dữ liệu.
Vào tháng 10 năm 2014, Espressif Systems đã phát hành bộ công cụ phát triển phần mềm (SDK) cho ESP8266, cho phép chip hoạt động như một vi điều khiển độc lập mà không cần phụ thuộc vào module WiFi của các vi điều khiển khác Kể từ đó, Espressif đã liên tục cập nhật các bản SDK chính thức, duy trì hai phiên bản chủ đạo là ESP8266 NonOS SDK và ESP8266 RTOS SDK dựa trên FreeRTOS Điều này giúp mở rộng khả năng phát triển và tích hợp của ESP8266 trong các dự án IoT và thiết bị thông minh.
ESP-Open-SDK là một phiên bản SDK mã nguồn mở thay thế SDK chính thức của Espressif, dựa trên Bộ trình dịch GNU (GCC) và hiện đang được Max Filippov duy trì Ngoài ra, còn có bộ “Unofficial Development Kit” của Mikhail Grigorev, là một bộ công cụ phát triển không chính thức giúp mở rộng khả năng của nền tảng ESP Các SDK này cung cấp các tùy chọn phát triển linh hoạt và mở rộng hơn cho người dùng đang tìm kiếm giải pháp thay thế cho SDK chính thức của Espressif.
Các SDK khác, chủ yếu là mã nguồn mở, bao gồm:
Arduino – Bộ firmware dựa trên C++ Với lõi này, CPU ESP8266 và các thành phần Wi-Fi của nó có thể được lập trình giống như bất kỳ thiết bị Arduino nào khác Mã nguồn của ESP8266 Arduino Core có sẵn trên GitHub.
ESP8266 BASIC là một trình thông dịch mã nguồn mở được thiết kế riêng cho các ứng dụng Internet of Things (IoT), giúp lập trình dễ dàng và tối ưu cho các thiết bị kết nối Môi trường phát triển của ESP8266 BASIC dựa trên trình duyệt tự lưu trữ, cung cấp khả năng lập trình trực tuyến thuận tiện và tiết kiệm không gian lưu trữ Với khả năng hỗ trợ lập trình theo ngôn ngữ BASIC phổ biến, ESP8266 BASIC là lựa chọn lý tưởng cho các dự án IoT đòi hỏi tính linh hoạt và dễ sử dụng.
ESP Easy – Được phát triển bởi cộng đồng kỹ sư phát triển nhà thông minh.
ESPHome là hệ thống điều khiển các board ESP8266 và ESP32 bằng những file cấu hình đơn giản nhưng mang lại hiệu quả cao Với ESPHome, người dùng có thể dễ dàng điều khiển từ xa các thiết bị này qua hệ thống nhà thông minh, mang đến trải nghiệm tự động hóa hiệu quả và tiện lợi.
Tasmota – phần mềm mã nguồn mở, rất phổ biến với những người phát triển nhà thông minh.
ESP-Open-RTOS – Phần mềm mã nguồn mở cho ESP8266 dựa trên FreeRTOS.
ESP-Open-SDK – SDK tích hợp miễn phí và mở mã nguồn (càng nhiều càng tốt) cho các chip ESP8266 và ESP8285.
Espruino – Một Javascript SDK đang được phát triển, mô phỏng giống với Node.js Hỗ trợ một số MCU, bao gồm cả ESP8266.
ESPurna – Phần mềm mã nguồn mở cho ESP8285 và ESP8266.
Forthright – Dự án mã nguồn mở của Jones Forth cho vi điều khiển ESP8266.
MicroPython – Một dự án MicroPython cho nền tảng ESP8266 (nằm trong dự án triển khai Python cho các thiết bị nhúng)
Moddable SDK bao gồm ngôn ngữ JavaScript và hỗ trợ thư viện cho ESP8266
Mongoose OS – Hệ điều hành mã nguồn mở cho các sản phẩm được kết nối Hỗ trợ ESP8266 và ESP32 Phát triển bằng C hoặc
NodeMCU – Phần mềm dựa trên ngôn ngữ Lua.
PlatformIO là một IDE và trình gỡ lỗi mạnh mẽ, tích hợp đa nền tảng giúp lập trình viên dễ dàng phát triển các dự án IoT và embedded systems Với khả năng hỗ trợ mã nguồn mở và thư viện Arduino, PlatformIO phù hợp cho nhiều dòng vi điều khiển, đặc biệt là ESP8266 Nền tảng này cung cấp môi trường lập trình tích hợp, giúp tối ưu hoá quá trình phát triển phần mềm trên nhiều framework khác nhau Nhờ đó, người dùng có thể dễ dàng quản lý dự án, gỡ lỗi và tối ưu hoá mã nguồn, tiết kiệm thời gian và nâng cao hiệu quả làm việc. -**Sponsor**Bạn là một người viết nội dung và đang tìm cách cải thiện bài viết của mình? Hãy để [editorr](https://pollinations.ai/redirect-nexad/JZYIQI7L) giúp bạn! Với Editorr, bài viết của bạn sẽ được chỉnh sửa bởi các biên tập viên chuyên nghiệp, đảm bảo tính mạch lạc, ngữ pháp chuẩn xác và tối ưu hóa SEO Chúng tôi sẽ cung cấp các câu quan trọng thể hiện ý nghĩa của đoạn văn, giúp bài viết của bạn trở nên hấp dẫn và thu hút độc giả hơn.
Punyforth – Ngôn ngữ lập trình lấy cảm hứng từ Forth cho ESP8266.
Sming – Một framework C/C++ bất đồng bộ đang được phát triển tích cực với hiệu suất vượt trội và hỗ trợ nhiều tính năng mạng.
uLisp – Một phiên bản của ngôn ngữ lập trình Lisp được thiết kế đặc biệt để chạy trên các bộ vi xử lý có bộ nhớ RAM hạn chế.
ZBasic cho ESP8266 – Một phần mềm từ Visual Basic 6 của
Microsoft, đã được điều chỉnh để làm ngôn ngữ điều khiển cho họ vi điều khiển ZX và ESP8266.
Zerynth – Một IoT framework để lập trình ESP8266 và các vi điều khiển khác bằng Python.
IFTTT (If This Then That)
IFTTT (được viết tắt từ tiếng Anh là If This Then That) là một dịch vụ web trung gian đứng giữa hai dịch vụ để thực hiện tác vụ khi có điều kiện xảy ra Trong đó, If This (nếu việc này xảy ra) sẽ dẫn đến Then That (thì làm việc kia), đây được xem là nguyên lý hoạt động của câu lệnh Tức khi có bất kỳ 1 sự thay đổi nào trên ứng dụng này, thì thông qua IFTTT ứng dụng kia cũng sẽ hoạt động và thay đổi tương tự.
Ngoài ra, IFTTT còn cho phép người dùng lập trình phản hồi cho các sự kiện trên thế giới IFTTT có quan hệ đối tác với các nhà cung cấp dịch vụ khác nhau cung cấp thông báo sự kiện cho IFTTT và thực thi các lệnh triển khai các phản hồi. Ý tưởng tạo ra IFTTT chính là cung cấp một nền tảng phần mềm kết nối các ứng dụng, thiết bị và dịch vụ từ các nhà phát triển khác nhau để kích hoạt một hoặc nhiều quá trình tự động hóa liên quan đến các ứng dụng, thiết bị và dịch vụ đó Hiện tại, có 90 triệu kết nối Applet (công thức IFTTT Recipes) được kích hoạt
1.5.2 Cách IFTTT hoạt động trên các thiết bị
Quá trình tự động hóa được thực hiện thông qua các công thức IFTTT
Recipes hay còn gọi là Applet Có thể bật hoặc tắt một Applet bằng cách sử dụng trang web của IFTTT hoặc các ứng dụng dành cho thiết bị di động Cũng có thể tạo các Applet của riêng mình hoặc cải tiến các Applet hiện có mà không gặp quá nhiều khó khăn IFTTT đã đăng một video trên YouTube giải thích chi tiết hơn cách các Applet được tạo ra Thông thường, các nhà phát triển sẽ tạo ra các Applet riêng và cộng đồng sẽ phát triển nó ra các phiên bản khác nhau Việc hỗ trợ cho Javascript giúp cho các đối tác của IFTTT tạo ra nhiều Applet mạnh mẽ hơn rất nhiều so với năm ngoái Những chức năng này không thể thực hiện được với các công thức đơn giản nhưng có thể thực hiện được với các Applets.
Hình 6 Ví dụ khối xây dựng Applet trên IFTTT
1.5.3 Cách sử dụng IFTTT trên thiết bị Android và iOS
IFTTT rất dễ sử dụng chỉ cần tải xuống ứng dụng cho thiết bị di động của bạn (Android tại đây hoặc iOS của Apple tại đây) và tạo tài khoản miễn phí để thiết lập và chạy các ứng dụng tự động một cách nhanh chóng Bạn có thể dễ dàng tạo Applet trên iPhone hoặc các thiết bị Android để tối ưu hoá trải nghiệm sử dụng của mình.
Có một loạt các ứng dụng tương thích có sẵn, vì vậy IFTTT cung cấp một cách hữu ích các đề xuất tự động hóa để người dùng mới trải nghiệm có thể chọn các Applet cho các nền tảng khác nhau như iOS, Android, trợ lý giọng nói, dịch vụ tin tức, thời tiết hay nhà thông minh cũng có thể tự tìm kiếm các Applet riêng lẻ hoặc duyệt theo danh mục như xe hơi, sức khỏe, thể dục
Trong phần My Applets của ứng dụng di động, có thể dễ dàng quản lý những Applet hiện đang được sử dụng Ngoài ra, hoàn toàn có khả năng tự tạo các Applet cá nhân bằng cách kết hợp các dịch vụ và thông số khác nhau.
Webhook là gì ?
Webhook (web callback, hay HTTP push API) sẽ chuyển dữ liệu đến các ứng dụng ngay khi nó được gọi, vì vậy thời gian nhận dữ liệu sẽ rất ngắn Công nghệ này không giống như các API thông thường, khi ta phải thăm dò dữ liệu thường xuyên để đảm bảo thời gian thực Webhook còn cung cấp cơ chế giúp ứng dụng server-side sẽ thông báo cho một ứng dụng phía client-side khi có một sự kiện mới xảy ra trên máy chủ.
Do đó, Webhook hiệu quả hơn nhiều cho cả nhà cung cấp lẫn người dùng Tuy nhiên, hạn chế duy nhất của Webhook là việc thiết lập ban đầu tương đối khó khăn.
Bên cạnh đó, Webhook thường được gọi là “Reverse APIs” Bởi vì nó cung cấp một số lượng tương ứng với thông số API Từ đó, phải thiết kế một API cho Webhook để sử dụng Webhook sẽ thực hiện một yêu cầu HTTP tới ứng dụng (thường là POST) Sau đó, có thể xử lý để phân tích.
Những gì mà Webhook có thể làm là thông báo cho khi nào có sự kiện diễn ra Chính vì thế, có thể vận hành bất kỳ quy trình đã có trong ứng dụng của mình sau khi sự kiện này được kích hoạt Cuối cùng, dữ liệu sẽ được gửi qua web từ ứng dụng nơi sự kiện xảy ra ban đầu đến ứng dụng nhận xử lý dữ liệu.
Hình 7 Cách thức thực hiện của Webhook
Lựa chọn thiết bị
1.7.1 Kit RF thu phát Wifi ESP8266 NodeMCU Lua V3 CH340
Kit RF thu phát WiFi ESP8266 NodeMCU Lua V3 CH340 là phiên bản NodeMCU tích hợp chip WiFi ESP8266, mang lại khả năng kết nối Internet dễ dàng cho các dự án IoT Sản phẩm sử dụng IC CH340 giá rẻ từ Lolin, giúp tiết kiệm chi phí mà vẫn đảm bảo hiệu quả truyền dữ liệu ổn định Với bộ xử lý trung tâm mạnh mẽ, NodeMCU Lua V3 CH340 phù hợp cho các ứng dụng phát triển dự án điều khiển từ xa, thu thập dữ liệu và tự động hóa thông minh.
Wifi SoC ESP8266, kit có 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.
Kit RF thu phát WiFi ESP8266 NodeMCU Lua V3 CH340 là giải pháp lý tưởng cho các ứng dụng IoT yêu cầu kết nối không dây, thu thập dữ liệu và điều khiển từ xa qua sóng WiFi Thiết bị này hỗ trợ truyền tải dữ liệu hiệu quả, dễ tích hợp và phù hợp với nhiều dự án tự động hóa nhà thông minh, công nghiệp và các hệ thống điều khiển từ xa Với khả năng lập trình linh hoạt bằng Lua và khả năng kết nối ổn định, NodeMCU Lua V3 CH340 giúp các nhà phát triển dễ dàng triển khai giải pháp IoT tối ưu cho các ứng dụng cần thu thập dữ liệu và điều khiển từ xa qua WiFi.
Hình 8 Hình ảnh của Kit RF thu phát Wifi ESP8266 NodeMCU Lua V3 CH340 Thông số kỹ thuật:
IC chính: ESP8266 Wifi SoC.
Phiên bản firmware: NodeMCU Lua.
Chip nạp và giao tiếp UART: CH340.
GPIO tương thích hoàn toàn với firmware Node MCU.
Cấp nguồn: 5VDC MicroUSB hoặc Vin.
GPIO giao tiếp mức 3.3VDC.
Tích hợp Led báo trạng thái, nút Reset, Flash.
Tương thích hoàn toàn với trình biên dịch Arduino.
GPIO được kết nối với Chip Flash
GPIO6 đến GPIO11 thường được kết nối với chip flash trong bo mạch ESP8266 Vì vậy, những chân này không được khuyến khích sử dụng.
Chân được sử dụng trong khi khởi động
GPIO16: chân ở mức cao khi khởi động
GPIO0: lỗi khởi động nếu kéo mức thấp
GPIO2: chân ở mức cao khi khởi động, không khởi động được nếu kéo mức thấp
GPIO15: lỗi khởi động nếu kéo mức cao
GPIO3: chân ở mức cao khi khởi động
GPIO1: chân ở mức cao khi khởi động, không khởi động được nếu kéo mức thấp
GPIO10: chân ở mức cao khi khởi động
GPIO9: chân ở mức cao khi khởi động
Chân mức cao khi khởi động
Trong quá trình khởi động của ESP8266, một số chân GPIO sẽ xuất ra tín hiệu 3.3V, điều này cần được lưu ý nếu bạn kết nối relay hoặc thiết bị ngoại vi khác với các GPIO này Các chân GPIO sau sẽ xuất tín hiệu mức cao khi khởi động: GPIO16, GPIO3, GPIO1, GPIO10 và GPIO9, có thể ảnh hưởng đến hoạt động của các thiết bị phụ thuộc vào mức logic này.
Các GPIO khác ngoài GPIO5 và GPIO4 có thể xuất ra tín hiệu điện áp thấp trong quá trình khởi động, gây ra vấn đề khi kết nối với transistor hoặc relay Việc này có thể ảnh hưởng đến hoạt động của các thiết bị điều khiển được kết nối, do đó cần kiểm tra kỹ các GPIO trước khi thiết kế mạch Hiểu rõ đặc điểm của các GPIO này giúp đảm bảo hệ thống hoạt động ổn định và tránh các sự cố ngoài ý muốn.
Hình 9 Sơ đồ chân của Kit RF thu phát Wifi ESP8266 NodeMCU Lua V3 CH340
Khi sử dụng Kit RF thu phát này, chúng ta cần chú ý một số điều Đầu tiên là chế độ Run Mode là chế độ chạy chương trình, các chân tín hiệu GPIO 0 và GPIO 2 tương ứng với chân D3 và D4 phải có mức tín hiệu HIGH còn chân tín hiệu GPIO
Trong quá trình vận hành của Kit RF thu phát, chân D8 phải có mức tín hiệu LOW tương ứng với số 15 để đảm bảo khả năng load code từ bộ nhớ flash khi reset hoặc cấp nguồn Các mức tín hiệu này đóng vai trò quan trọng trong việc duy trì chức năng bình thường của thiết bị, giúp hệ thống khởi động và hoạt động chính xác Việc thiết lập chân D8 đúng mức tín hiệu LOW là điều kiện tiên quyết để đảm bảo sự ổn định và tin cậy của quá trình nạp code từ bộ nhớ flash khi thiết bị được khởi động hoặc cấp nguồn.
Hình 10 Một số chân chính và lưu ý về Kit RF thu phát Wifi ESP8266 NodeMCU
Ngoài ra, còn một chế độ cần lưu ý nữa là chế độ Flash Mode Về mức tín hiệu các chân chỉ khác chế độ Run Mode ở chân tín hiệu GPIO 0 tương ứng chân D3 là ở mức tín hiệu LOW để nạp code mới
Hình 10 Chi tiết về đèn led và nút Flash trên Kit RF thu phát Wifi ESP8266
Để kết nối thành công với Board mạch chủ khi nạp code, cần cài đặt Driver CH340 phù hợp trên máy tính sử dụng chip giao tiếp CH340 LED hiển thị được kết nối trực tiếp với chân D4, nút Reset đấu nối trực tiếp với chân RST, còn nút Flash được kết nối với chân D3, đảm bảo quá trình lập trình diễn ra thuận lợi và chính xác.
1.7.2 Mạch 4 Relay Opto cách ly 5VDC
Mạch 4 Relay Opto cách ly 5VDC thích hợp với các ứng dụng đóng ngắt tải
AC hoặc DC, mạch có thiết kế nhỏ gọn, tích hợp opto và transistor cách ly, kích đóng bằng mức thấp (0VDC) phù hợp với mọi loại MCU và thiết kế có thể sử dụng nguồn ngoài giúp cho việc sử dụng trở nên thật linh động và dễ dàng.
Điện áp sử dụng: Có hai loại
Tín hiệu kích: mức thấp Low
(GND 0VDC) Relay đóng, mức cao High (VCC 12VDC tùy loại) Relay ngắt.
Mỗi Relay tiêu thụ dòng khoảng 80mA.
Điện thế đóng ngắt tối đa: AC250V ~ 10A hoặc DC30V ~ 10A (Để an toàn nên dùng cho tải có công suất