Là mạng kết nối các đồ vật và thiết bị thông qua cảm biến, phần mềm và các công nghệ khác, cho phép các đồ vật và thiết bị thu thập và trao đổi dữ liệu với nhau.. • Các thiết bị IoT có t
GIỚI THIỆU CHUNG
Giới thiệu chung về IoT (Internet of Things)
• IoT (Internet of Things) nghĩa là Internet vạn vật Là mạng kết nối các đồ vật và thiết bị thông qua cảm biến, phần mềm và các công nghệ khác, cho phép các đồ vật và thiết bị thu thập và trao đổi dữ liệu với nhau
Internet vạn vật (IoT) mở rộng sức mạnh của internet đến bất kỳ vật thể kết nối nào, không chỉ giới hạn trên máy tính Một khi được kết nối, những vật thể này sẽ trở nên thông minh hơn nhờ khả năng gửi hoặc nhận thông tin và thực hiện hành động tự động dựa trên thông tin đó.
• Các thiết bị IoT có thể là đồ vật được gắn thêm cảm biến để thu thập dữ liệu về môi trường xung quanh (giống như các giác quan), các máy tính/bộ điều khiển tiếp nhận dữ liệu và ra lệnh cho các thiết bị khác, hoặc cũng có thể là các đồ vật được tích hợp cả hai tính năng trên
• Tiềm năng ứng dụng của internet vạn vật (IoT) trải rộng trên mọi lĩnh vực Tuy nhiên, mọi hệ thống IoT hoàn chỉnh đều có đủ 4 bước: thu thập dữ liệu, chia sẻ dữ liệu, xử lý dữ liệu và đưa ra quyết định
➢ Cấu trúc của một hệ thống IoT
• Với một hệ thống IoT chúng sẽ bao gồm 4 thành phần chính đó là thiết bị (Things), trạm kết nối (Gateways), hạ tầng mạng (Network and Cloud) và bộ phân tích và xử lý dữ liệu (Services-creation and Solution Layers)
Hình 1 Cấu trúc của hệ thống IOT
• Các cảm biến sẽ có nhiệm vụ cảm nhận các tín hiệu từ môi trường như nhiệt độ, áp suất, ánh sáng,… và chuyển chúng thành các dạng dữ liệu trong môi trường Internet Sau đó các tín hiệu sẽ được xử lý và đưa ra các thay đổi theo ý của người tiêu dùng Hiện nay chúng thường được ứng dụng thông qua các ứng dụng trên điện thoại hay trên máy tính,…
Ứng dụng của IoT trong các lĩnh vực
➢ Nhà và văn phòng thông minh
Nhà thông minh là minh chứng điển hình của IoT, tích hợp các thiết bị điện tử gia dụng như đèn, quạt, máy lạnh thông qua kết nối internet, cho phép điều khiển từ xa Nhờ sự kết nối này, ngôi nhà thông minh có khả năng điều khiển chiếu sáng, quản lý năng lượng và cho phép mở rộng, truy cập từ xa.
• Hiện tại, ứng dụng IoT này không được sử dụng rộng rãi do chi phí lắp đặt quá cao, khó có khả năng chi trả
➢ Thiết bị đeo được (Wearable)
• Đồng hồ thông minh là ví dụ tiêu biểu về các thiết bị đeo tay thông minh Đồng hồ thông minh có khả năng đọc tin nhắn văn bản, hiển thị thông báo về các ứng dụng khác, theo dõi vị trí, theo dõi trạng thái tập luyện, nhắc nhở lịch trình và liên tục theo dõi tình
8 | P a g e trạng sức khỏe Ngoài ra còn có một số thiết bị đeo được khác như: Kính thực tế ảo, vòng đeo thông minh, tai nghe không dây…
• IoT giúp dự đoán và quản lý các thảm họa thiên nhiên Lấy ví dụ về cháy rừng Để tránh sự hỗn loạn và tàn phá do cháy rừng, nhiều cảm biến khác nhau có thể được lắp đặt xung quanh ranh giới của các khu rừng Các cảm biến này liên tục theo dõi nhiệt độ và hàm lượng carbon trong khu vực Báo cáo chi tiết sẽ được gửi đến trung tâm giám sát chung một cách thường xuyên Trong trường hợp xảy ra cháy rừng, một cảnh báo được gửi đến phòng kiểm soát, đồn cảnh sát và đội cứu hỏa Do đó, IoT giúp các cơ quan chức năng lập kế hoạch và phản ứng nhanh chóng trong trường hợp khẩn cấp
• Ô tô tự lái là một trong những dòng ô tô thông minh đã và đang phát triển với việc ứng dụng trí tuệ nhân tạo (AI) và công nghệ cảm biến thông minh trong IoT Một trong những thành phần quan trọng của IoT trong ô tô là các cảm biến thông minh liên tục thu thập các thông tin về xe, tình trạng giao thông, các phương tiện khác và các đối tượng khác trên đường đi
• Hệ thống bao gồm các đơn vị camera, cảm biến khoảng cách, RADAR, mảng anten RF để thu thập thông tin và giúp xe đưa ra quyết định dựa trên những thay đổi đột ngột trên đường Các phương tiện và đồ vật thông minh có thể chia sẻ thông tin với nhau bằng công nghệ RF
• Khi dữ liệu khổng lồ được thu thập, AI có thể dự đoán được các tình huống nhất định trên đường đi, cảnh báo tình trạng trên đường và phương tiện, hỗ trợ người lái xe an toàn, tránh va chạm
• Ví dụ: Hỗ trợ kiểm soát hành trình, quản lý nhiên liệu, thông báo có tai nạn trên tuyến đường, tình trạng giao thông đông đúc ở một tuyến đường cụ thể…
➢ Phân tích dữ liệu lớn (Big Data Analytics)
• Một trong những thành phần cơ bản của phân tích dữ liệu lớn (Big data) chính là bản thân của dữ liệu đó; nhiều tổ chức coi dữ liệu là tài sản quý giá nhất để phát triển chiến lược kinh doanh của họ Nguồn dữ liệu có thể từ bất kỳ đâu như máy móc, môi trường, thực vật, con người hoặc thậm chí động vật
• Internet of Things sử dụng hàng trăm loại cảm biến được thiết kế để thu thập dữ liệu từ nhiều loại ứng dụng Lượng dữ liệu khổng lồ từ hàng triệu cảm biến thông minh sẽ giúp cho việc phân tích dữ liệu cần sử dụng trí tuệ nhân tạo và máy học cải thiện được các thuật toán ra quyết định
➢ Máy đọc mã vạch thông minh
• Máy đọc mã vạch IoT có thể giúp quản lý hàng tồn kho tốt hơn cho các nhà bán lẻ Các đầu đọc hỗ trợ xử lý tín hiệu kỹ thuật số dựa trên AI Những thiết bị này có thể tối ưu hóa hoạt động của nhiều lĩnh vực bao gồm bán lẻ, hậu cần, kho hàng…
• Đầu đọc thẻ thanh toán dựa trên IoT có tính năng kết nối dữ liệu đám mây để kết nối với các hệ thống khác như phần mềm ERP, có tích hợp QRCode, Barcode Sử dụng đầu đọc mã vạch được kết nối sẽ giúp doanh nghiệp dễ dàng hơn trong quá trình quản lý hàng tồn kho
• Nếu như trước đây toàn bộ quá trình nông nghiệp đều phụ thuộc vào sức lao động con người thì giờ đây được đơn giản hóa nhờ sự xuất hiện của máy móc và công nghệ Ứng dụng IoT trong ngành trồng trọt giúp nông dân có thể kiểm soát và nắm bắt những thông tin cần thiết như thời điểm tốt nhất thu hoạch, độ dinh dưỡng của đất, lượng phân bón phù hợp, độ ẩm của đất…
• Những mô hình trang trại chăn nuôi thông minh cũng dần ra đời với những tiến bộ của IoT giúp cho người chủ kiểm soát và thu thập các dữ liệu cần thiết về nhiệt độ chuồng,
10 | P a g e độ ẩm không khí hoặc dữ liệu sức khỏe của vật nuôi… từ đó tiết kiệm sức lao động và nâng cao năng suất
Công nghiệp sản xuất là một trong những ngành sớm áp dụng IoT, nó đã thay đổi hoàn toàn một số giai đoạn của chu kỳ phát triển sản phẩm IoT công nghiệp sẽ giúp tối ưu hóa các công đoạn sản xuất khác nhau của sản phẩm như:
• Giám sát chuỗi cung ứng và quản lý hàng tồn kho
• Tối ưu hóa trong phát triển sản phẩm
• Tự động hóa quy trình sản xuất hàng loạt
• Kiểm tra chất lượng và cải tiến sản phẩm
• Cải thiện việc đóng gói và quản lý
• Tối ưu hóa quy trình bằng cách sử dụng dữ liệu được thu thập từ số lượng lớn các mạng cảm biến
• Giải pháp hiệu quả về chi phí để quản lý tổng thể nhà máy.
Ứng dụng của IoT trong khu vường thông minh
• Cảm biến đặt trong các trang trại sẽ theo dõi sự thay đổi của cây trồng khi chịu ảnh hưởng bởi những yếu tố như ánh sáng, độ ẩm, nhiệt độ, hình dạng và kích thước
• Bất kỳ sự bất thường nào được cảm biến phát hiện đều được phân tích và thông báo cho người nông dân Do đó, viễn thám giúp ngăn ngừa sự lây lan của bệnh tật và theo dõi sự phát triển của cây trồng
➢ Thu thập điều kiện thời tiết
Dữ liệu thu thập từ các cảm biến về độ ẩm, nhiệt độ, lượng mưa và phát hiện sương đóng vai trò rất quan trọng trong việc xác định mô hình thời tiết tại trang trại Những dữ liệu này cung cấp các thông số chi tiết về điều kiện thời tiết, giúp nông dân phân tích và đưa ra các quyết định đúng đắn trong canh tác, bao gồm việc lựa chọn giống cây trồng phù hợp và tối ưu hóa năng suất vụ mùa.
➢ Giám sát chất lượng đất
Phân tích đất cung cấp thông tin quan trọng về giá trị dinh dưỡng, độ tơi xốp, khả năng thoát nước và độ pH của đất Những thông số này giúp xác định nhu cầu tưới tiêu phù hợp và lựa chọn loại cây trồng có lợi nhất cho trang trại, tối ưu hóa tiềm năng canh tác và đảm bảo năng suất cao.
Dữ liệu tình trạng đất thúc đẩy canh tác tái sinh bằng cách cung cấp thông tin về thời điểm và cách tăng hàm lượng hữu cơ, cải thiện cấu trúc đất và mở ra hướng đi cho nông nghiệp thông minh.
• Cảm biến độ ẩm đất có thể gửi dữ liệu về hệ thống tưới tiêu tự động, giúp điều chỉnh lượng nước cần thiết cho từng khu vực của trang trại dựa trên điều kiện thực tế Điều này giúp tiết kiệm nước và tối ưu hóa quá trình tưới tiêu
• Các cảm biến có thể giám sát sự xuất hiện của sâu bệnh hoặc dấu hiệu của chúng trên cây trồng Thông tin này có thể được sử dụng để đưa ra các biện pháp phòng trừ hoặc điều trị đúng lúc, giúp giảm thiểu tổn thất và tăng năng suất
➢ Quản lý điều hòa nhiệt độ
• Hệ thống IoT có thể được sử dụng để giám sát và điều chỉnh nhiệt độ trong nhà kính hoặc khu vườn Điều này giúp tạo ra môi trường ổn định cho cây trồng phát triển, đặc biệt quan trọng trong việc canh tác cây trồng nhạy cảm với biến đổi nhiệt độ
• IoT có thể được sử dụng để giám sát chất lượng và lượng nước trong các hồ chứa, giúp quản lý nguồn nước một cách hiệu quả hơn và đảm bảo rằng các cây trồng luôn được cung cấp đủ nước
➢ Phân tích dữ liệu để tối ưu hóa sản xuất
Thu thập dữ liệu từ các cảm biến đóng vai trò quan trọng trong việc phân tích xu hướng sản xuất cây trồng Bằng cách sử dụng thông tin thu được, người nông dân có thể tối ưu hóa các quy trình canh tác, quản lý hiệu quả các nguồn lực và nâng cao năng suất sản xuất.
➢ Theo dõi chất lượng sản phẩm
• Cảm biến có thể được sử dụng để giám sát chất lượng của các loại cây trồng, từ việc đo lường độ chín của trái cây đến kiểm tra độ tươi của rau cải Thông tin này có thể được sử dụng để đảm bảo rằng sản phẩm đạt tiêu chuẩn chất lượng và an toàn cho người tiêu dùng.
CƠ SỞ LÝ THUYẾT
Các thiết bị sử dụng
Hình 2 Sơ đồ chân của STM32F103C8T6
■ Core :CPU ARM 32-bit Cortex™-M3
– 72 MHz, 90 DMIPS với 1,25 DMIPS/MHz
– Phép nhân chu kỳ đơn và phân chia phần cứng
– Bộ điều khiển ngắt lồng nhau với 43 kênh ngắt có thể che được
– Xử lý ngắt (giảm xuống 6 chu kỳ CPU) ) với chuỗi đuôi
– Bộ nhớ Flash 32 đến 128 Kbyte
■ Đồng hồ, thiết lập lại và quản lý nguồn cung cấp
– Nguồn cấp ứng dụng 2,0 đến 3,6 V và I/O
– POR, PDR và có thể lập trình máy dò điện áp (PVD)
– Bộ tạo dao động thạch anh 4 đến 16 MHz
– RC cắt tại nhà máy 8 MHz bên trong
– PLL cho xung nhịp CPU
– Bộ tạo dao động 32 kHz chuyên dụng cho RTC có hiệu chuẩn
– Ngủ, Dừng và Chờ các chế độ
– Cung cấp VBAT cho RTC và các thanh ghi dự phòng
■ Bộ chuyển đổi A/D 2 x 12-bit, 1 às (16 kờnh)
– Phạm vi chuyển đổi: 0 đến 3,6 V
– Khả năng giữ và lấy mẫu kép
– Có thể đồng bộ hóa với bộ hẹn giờ điều khiển nâng cao
– Bộ điều khiển DMA 7 kênh
– Hỗ trợ các thiết bị ngoại vi: bộ hẹn giờ, ADC, SPI, I2C và USART
Hình 3 Sơ đồ chân của ESP32 38 pin
ESP32 là một bộ vi điều khiển và hệ thống trên chip không dây (SoC) phổ biến được phát triển bởi Espressif Systems Nó được sử dụng rộng rãi trong các ứng dụng IoT (Internet of Things) và các hệ thống nhúng khác nhau ESP32 là phiên bản kế thừa của ESP8266 và mang đến những cải tiến đáng kể về sức mạnh xử lý, tùy chọn kết nối và tính linh hoạt Dưới đây là một số tính năng và thông số kỹ thuật chính của ESP32:
• Bộ xử lý lõi kép: ESP32 có bộ vi điều khiển Xtensa LX6 lõi kép, mang lại hiệu suất và khả năng đa nhiệm tốt hơn so với bộ vi điều khiển lõi đơn
• Tốc độ CPU: Mỗi lõi có thể chạy ở tốc độ lên tới 240 MHz, khiến nó phù hợp với nhiều ứng dụng
• Kết nối không dây: ESP32 cung cấp nhiều tùy chọn giao tiếp không dây, bao gồm Wi-Fi (802.11 b/g/n), Bluetooth (BLE và Classic) và hỗ trợ cả chế độ máy khách và điểm truy cập
• Bộ nhớ: ESP32 thường bao gồm 520KB SRAM và 4 MB bộ nhớ flash, cung cấp dung lượng lưu trữ lớn cho mã chương trình và dữ liệu
• Chân GPIO: ESP32 cung cấp một số lượng đáng kể các chân GPIO (Đầu vào/Đầu ra cho mục đích chung), cho phép nó giao tiếp với nhiều loại cảm biến, màn hình và thiết bị bên ngoài
• Chuyển đổi tương tự sang số (ADC): Nó có ADC SAR 12 bit với nhiều kênh để giao tiếp cảm biến tương tự
• Chuyển đổi kỹ thuật số sang tương tự (DAC): ESP32 bao gồm hai kênh DAC 8 bit
• Thiết bị ngoại vi: Nó có nhiều loại thiết bị ngoại vi, bao gồm UART, I2C, SPI,PWM, v.v., giúp nó phù hợp với các yêu cầu giao tiếp khác nhau
• Cảm biến tích hợp: Một số mô-đun ESP32 đi kèm với cảm biến tích hợp, chẳng hạn như cảm biến nhiệt độ và độ ẩm
• Chế độ năng lượng thấp: ESP32 cung cấp nhiều chế độ năng lượng thấp khác nhau để giảm mức tiêu thụ năng lượng trong các ứng dụng chạy bằng pin
• Môi trường phát triển: ESP32 có thể được lập trình bằng Arduino IDE, PlatformIO v
• Khung phát triển IoT Espressif (ESP-IDF)
Hình 4 Cảm biến nhiệt độ và độ ẩm DHT11
DHT11 là cảm biến nhiêt độ và độ ẩm giao tiếp với 1 chân dữ liệu, DHT11 đo được giá trị độ ẩm từ 20% đến 90%RH và nhiệt độ từ 0oC đến 50oC, độ chính xác: ± 5%RH và ±2oC
Cảm biến nhiệt độ và độ ẩm DHT11 có cấu tạo gồm hai thành phần chính: điện trở nhiệt và cảm biến độ ẩm điện dung Điện trở nhiệt có nhiệm vụ đo nhiệt độ, trong khi cảm biến độ ẩm điện dung đo độ ẩm Ngoài ra, module còn bao gồm các mạch chuyển đổi tín hiệu tương tự sang tín hiệu số để có thể tương thích với các vi điều khiển hoặc các thiết bị khác.
16 | P a g e hợp bộ tiền xử lý giúp cho dữ liệu nhận về được chính xác mà không cần phải qua bất kỳ khâu phân tích hay tính toán nào
• Điện áp hoạt động: 5VDC
• Chuẩn giao tiếp: TTL, 1 wire
• Khoảng đo độ ẩm: 20%-80%RH sai số ± 5%RH
• Khoảng đo nhiệt độ: 0-50°C sai số ± 2°C
• Tần số lấy mẫu tối đa 1Hz (1 giây / lần)
• DHT11 có 4 chân: VCC, DATA, NC, GND
• Module DHT11 đã được gắn sẵn điện trở và led báo nguồn, nên có 3 chân
• GND: Nối đất, cực âm
MODULE CẢM BIẾN ĐỘ ẨM ĐẤT
Hình 5 Cảm biến độ ẩm đất
Mô-đun cảm biến độ ẩm đất ứng dụng IC LM393 là một cảm biến độ ẩm đất kỹ thuật số dễ dùng Khi cắm cảm biến vào đất, nó có khả năng đo lường hàm lượng độ ẩm hoặc mực nước trong đất Khi độ ẩm cao, cảm biến sẽ cho ra mức điện áp đầu ra kỹ thuật số là 5V; ngược lại, khi độ ẩm thấp, điện áp đầu ra sẽ là 0V.
• Cảm biến bao gồm một biến trở để đặt ngưỡng độ ẩm mong muốn Đầu ra kỹ thuật số có thể được kết nối với một bộ điều khiển vi mô để cảm nhận mức độ ẩm Cảm biến cũng xuất ra một đầu ra tương tự có thể được kết nối với ADC của bộ điều khiển vi mô để có được mức độ ẩm chính xác trong đất, phù hợp để thực hiện các dự án làm vườn bằng nước, cảm biến nước, v.v
• Trạng thái đầu ra mức thấp (0V), khi đất thiếu nước đầu ra sẽ là mức cao (5V), độ nhạy cao chúng ta có thể điều chỉnh được bằng biến trở Cảm biến độ ẩm đất có thể sử dung tưới hoa tự động khi không có người quản lý khu vườn của bạn hoặc dùng trong những ứng dụng tương tự như trồng cây
• Độ nhạy của cảm biến độ ẩm đất có thể tùy chỉnh được (bằng cách điều chỉnh chiết áp màu xanh trên board mạch) Phần đầu DO được cắm vào đất để phát hiện độ ẩm của
18 | P a g e đất, khi độ ầm của đất đạt ngưỡng thiết lập, đầu ra DO sẽ chuyển trạng thái từ mức thấp lên mức cao
+ Có lỗ cố định để lắp đặt thuận tiện
+ Sử dung chip LM393 để so sánh, ổn định làm việc
+ Đầu kết nối sừ dung 3 dây
GND GND của nguồn ngoài
DO Đầu ra tín hiệu số (mức cao hoặc mức thấp)
AO Đầu ra tín hiệu tương tự (Analog)
MODULE CẢM BIẾN ÁNH SÁNG
Hình 6 Cảm biến ánh sáng
• Khi mức ánh sáng xung quanh chưa đạt đến ngưỡng, DO ở mức cao Khi mức ánh sáng xung quanh vượt quá ngưỡng được thiết lập, đầu ra DO ở mức thấp
• Đầu ra DO có thể được kết nối trực tiếp với vi điều khiển hoặc các module khác (có thể là các mạch điều khiển ánh sáng)
• Đầu ra AO có thể được kết nối với vi điều khiển thông qua chức năng ADC, bạn có thể nhận được các giá trị cường độ ánh sáng xung quanh chính xác hơn
• Kích thước PCB: 3cm x 1.6cm
• Led xanh báo nguồn và ánh sáng
• DO: Đầu ra tín hiệu số (0 và 1)
• Mô tả sơ đồ chân của module cảm biến ánh sáng
+ DO: Tín hiệu ra digital
+ GND: Nối Mass - Cực âm
Hình 7 Màn hình hiển thị LCD 16x2 Thông số kỹ thuật LCD 16×2
LCD 16×2 được sử dụng để hiển thị trạng thái hoặc các thông số
• LCD 16×2 có 16 chân trong đó 8 chân dữ liệu (D0 – D7) và 3 chân điều khiển (RS,
• 5 chân còn lại dùng để cấp nguồn và đèn nền cho LCD 16×2
• Các chân điều khiển giúp ta dễ dàng cấu hình LCD ở chế độ lệnh hoặc chế độ dữ liệu
• Chúng còn giúp ta cấu hình ở chế độ đọc hoặc ghi
LCD 16×2 có thể sử dụng ở chế độ 4 bit hoặc 8 bit tùy theo ứng dụng ta đang làm
Hình 8 Module I2C giao tiếp với màn hình LCD 16x2
LCD có quá nhiều nhiều chân gây khó khăn trong quá trình đấu nối và chiếm dụng nhiều chân trên vi điều khiển
Module I2C LCD ra đời và giải quyết vấn để này
Thay vì phải mất 6 chân vi điều khiển để kết nối với LCD 16×2 (RS, EN, D7, D6, D5 và D4) thì module IC2 bạn chỉ cần tốn 2 chân (SCL, SDA) để kết nối
Module I2C hỗ trợ các loại LCD sử dụng driver HD44780(LCD 16×2, LCD 20×4, …) và tương thích với hầu hết các vi điều khiển hiện nay Ưu điểm :
• Tiết kiệm chân cho vi điều khiển
• Dễ dàng kết nối với LCD
• Điện áp hoạt động: 2.5-6V DC
• Hỗ trợ màn hình: LCD1602,1604,2004 (driver HD44780)
• Địa chỉ mặc định: 0X27 (có thể điều chỉnh bằng ngắn mạch chân A0/A1/A2)
• Tích hợp Jump chốt để cung cấp đèn cho LCD hoặc ngắt
• Tích hợp biến trở xoay điều chỉnh độ tương phản cho LCD
Relay sử dụng dòng điện để đóng hoặc mở các tiếp điểm của công tắc Điều này thường được thực hiện bằng cách sử dụng sự trợ giúp của một cuộn dây hút các tiếp điểm của công tắc và kéo chúng lại với nhau khi được kích hoạt, đồng thời một lò xo sẽ đẩy chúng ra xa nhau khi cuộn dây không được cấp điện
Có hai ưu điểm của hệ thống này – Thứ nhất, dòng điện cần thiết để kích hoạt rơle nhỏ hơn nhiều so với dòng điện mà các tiếp điểm rơle có khả năng chuyển mạch, và thứ hai, cuộn dây và các tiếp điểm được cách ly về mặt điện, nghĩa là không có kết nối điện giữa chúng Điều này có nghĩa là rơle có thể được sử dụng để chuyển đổi dòng điện lưới thông qua hệ thống kỹ thuật số điện áp thấp bị cô lập giống như bộ vi điều khiển
CÁC CÔNG NGHỆ SỬ DỤNG
Hình 10 Cấu tạo của hệ điều hành thời gian thực
FreeRTOS là một hệ điều hành nhúng thời gian thực (Real Time Operating System) mã nguồn mở được phát triển bởi Real Time Engineers Ltd, sáng lập và sở hữu bởi Richard Barry FreeRTOS được thiết kế phù hợp cho nhiều hệ nhúng nhỏ gọn vì nó chỉ triển khai rất ít các chức năng như: cơ chế quản lý bộ nhớ và tác vụ cơ bản, các hàm API quan trọng cho cơ chế đồng bộ Nó không cung cấp sẵn các giao tiếp mạng, drivers, hay hệ thống quản lý tệp (file system) như những hệ điều hành nhúng cao cấp khác Tuy vậy, FreeRTOS có nhiều ưu điểm, hỗ trợ nhiều kiến trúc vi điều khiển khác nhau, kích thước nhỏ gọn (4.3 Kbytes sau khi biên dịch trên ARM7), được viết bằng ngôn ngữ C và có thể sử dụng, phát triển với nhiều trình biên dịch C khác nhau (GCC, OpenWatcom, Keil, IAR, Eclipse, …), cho phép không giới hạn các tác vụ chạy đồng thời, không hạn chế quyền ưu tiên thực thi, khả năng khai thác phần cứng Ngoài ra, nó cũng cho phép triển khai các cơ chế điều độ giữa các tiến trình như: queues, counting semaphore, mutexes
Hệ điều hành thời gian thực được chia làm 2 loại:
• Soft-realtime: Sử dụng cho các ứng dụng cruise control (điều khiển hành trình) trong ô tô và các ứng dụng viễn thông
• Hard-realtime: Sử dụng trong các ứng dụng điều khiển máy bay, động cơ điện
Scheduler Đây là 1 thành phần của kernel quyết định task nào được thực thi Có một số luật cho scheduling như:
• Cooperative: Giống với lập trình thông thường, mỗi task chỉ có thể thực thi khi task đang chạy dừng lại, nhược điểm của cơ chế này là task này có thể dùng hết tất cả tài nguyên của CPU
• Round-robin: Mỗi task được thực hiện trong thời gian định trước (time slice) và không có ưu tiên
Hình 11 Sơ đồ phân chia thời gian thực thi các tác vụ
• Priority base: Task được phân quyền cao nhất sẽ được thực hiện trước, nếu các task có cùng quyền như nhau thì sẽ giống với round-robin, các task có mức ưu tiên thấp hơn sẽ được thực hiện cho đến cuối time slice
Hình 12 Sơ đồ phân chia thời gian thực thi các tác vụ dựa trên sự ưu tiên cao nhất
• Priority-based pre-emptive: Các task có mức ưu tiên cao nhất luôn nhường các task có mức ưu tiên thấp hơn thực thi trước
Hình 13 Sơ đồ phân chia thời gian thực hiên các tác vụ dựa trên sự ưu tiên thấp
Message queue là cơ chế cho phép các task có thể kết nối với nhau, nó là một FIFO buffer được định nghĩa bởi độ dài (số phần tử mà buffer có thể lưu trữ) và kích thước dữ
225 liệu (kích thước của các thành phần trong buffer) Một ứng dụng tiêu biểu là buffer cho Serial I/O, buffer cho lệnh được gửi tới task
Hình 14 Hàng đợi tác vụ
Task có thể ghi vào hàng đợi (queue)
• Task sẽ bị khóa (block) khi gửi dữ liệu tới một message queue đầy đủ
• Task sẽ hết bị khóa (unblock) khi bộ nhớ trong message queue trống
• Trường hợp nhiều task mà bị block thì task với mức ưu tiên cao nhất sẽ được unblock trước
Task có thể đọc từ hàng đợi (queue)
• Task sẽ bị block nếu message queue trống
• Task sẽ được unblock nếu có dữ liệu trong message queue
• Tương tự ghi thì task được unblock dựa trên mức độ ưu tiên
Semaphore Được sử dụng để đồng bộ task với các sự kiện khác trong hệ thống
Có 2 loại là: Binary và Counting
• Trường hợp đặc biệt của counting semaphore
• Chỉ có 1 hoạt động đồng bộ
• Có nhiều hoạt động đồng bộ
Hình 16 Sơ đồ mô tả cách hoạt động của hai loại semaphore
• AJAX là từ viết tắt của từ Asynchronous JavaScript And XML - Bất đồng bộ trong Javascript và XML
• Asynchoronous (Bất đồng bộ): Bất đồng bộ có nghĩa là một chương trình có thể xử lý không theo tuần tự các hàm, không có quy trình, có thể nhảy đi bỏ qua bước nào đó Ích lợi dễ thấy nhất của bất đồng bộ là chương trình có thể xử lý nhiều công việc một lúc
JavaScript là một ngôn ngữ lập trình phổ biến được biết đến với khả năng quản lý nội dung động trên trang web, tạo nên trải nghiệm tương tác cho người dùng.
• XML: Đây là một dạng ngôn ngữ gần giống với HTML, tên đầy đủ là eXtensible Markup Language Nếu HTML được dùng để hiển thị dữ liệu, XML được thiết kế để chứa dữ liệu
Với AJAX, máy khách (trình duyệt) có thể gửi yêu cầu đến máy chủ web để lấy dữ liệu Sau đó, máy khách sẽ xử lý phản hồi từ máy chủ và cập nhật giao diện trang web mà không cần phải tải lại toàn bộ trang.
AJAX không phải dùng một công nghệ duy nhất, cũng không phải ngôn ngữ lập trình AJAX là một bộ kỹ thuật phát triển web Bộ hệ thống này bao gồm:
• HTML/XHTML làm ngôn ngữ chính và CSS để tạo styles
• The Document Object Model (DOM) để hiển thị dữ liệu động và tạo tương tác
• XML để trao đổi dự liệu nội bộ và XSLT để xử lý nó Nhiều lập trình viên đã thay thế bằng JSON vì nó gần với JavaScript hơn
• XMLHttpRequest object để giao tiếp bất đồng bộ
• Cuối cùng, JavaScript làm ngôn ngữ lập trình để kết nối toàn bộ các công nghệ trên lại
Có thể bạn cần có kiến thức kỹ thuật để hiểu về nó hoàn toàn Tuy nhiên, quy trình cơ bản của AJAX lại rất đơn giản Bạn hãy nhìn qua sơ đồ sau:
Hình 15 Các quy trình cơ bản của AJAX
2.3 Các chuẩn giao tiếp sử dụng
UART hay bộ thu-phát không đồng bộ đa năng là một trong những hình thức giao tiếp kỹ thuật số giữa thiết bị với thiết bị đơn giản và lâu đời nhất Bạn có thể tìm thấy các thiết bị UART trong một phần của mạch tích hợp (IC) hoặc dưới dạng các thành phần riêng lẻ Các UART giao tiếp giữa hai nút riêng biệt bằng cách sử dụng một cặp dẫn và một nối đất chung
Chân Tx (truyền) của một chip kết nối trực tiếp với chân Rx (nhận) của chip kia và ngược lại Thông thường, quá trình truyền sẽ diễn ra ở 3.3V hoặc 5V UART là một giao thức một master, một slave, trong đó một thiết bị được thiết lập để giao tiếp với duy nhất một thiết bị khác
Dữ liệu truyền đến và đi từ UART song song với thiết bị điều khiển (ví dụ: CPU) Khi gửi trên chân Tx, UART đầu tiên sẽ dịch thông tin song song này thành nối tiếp và truyền đến thiết bị nhận
UART thứ hai nhận dữ liệu này trên chân Rx của nó và biến đổi nó trở lại thành song song để giao tiếp với thiết bị điều khiển của nó.UART truyền dữ liệu nối tiếp, theo một trong ba chế độ:
• Full duplex: Giao tiếp đồng thời đến và đi từ mỗi master và slave
• Half duplex: Dữ liệu đi theo một hướng tại một thời điểm
• Simplex: Chỉ giao tiếp một chiều
Dữ liệu truyền qua UART được tổ chức thành các gói Mỗi gói chứa 1 bit bắt đầu, 5 đến 9 bit dữ liệu (tùy thuộc vào UART), một bit chẵn lẻ tùy chọn và 1 hoặc 2 bit dừng
Hình 17 Cấu trúc của một gói dữ liệu và khung dữ liệu trong giao tiếp UART
TRIỂN KHAI XÂY DỰNG HỆ THỐNG
Sơ đồ phần cứng
Hình 22 Sơ đồ khối phần cứng
Nguyên lý hoạt động
Khối cảm biến: Gồm các cảm biến như cảm biến nhiệt độ, độ ẩm (DHT11), cảm biến ánh sáng, cảm biến độ ẩm đất Sau khi thu dữ liệu từ các cảm biến, các dữ liệu này sẽ được gửi về cho STM32 theo các chuẩn giao tiếp như OneWire và ADC
Khối xử lý: STM32 có nhiệm vụ nhận dữ liệu từ cảm biến sau đó chuyển qua cho
ESP32 bằng giao thức UART và hiển thị dữ liệu lên LCD qua giao thức I2C
Khối điều khiển: ESP32 có nhiệm vụ nhận dữ liệu từ khối STM32 và sau đó gửi thông tin lên Web sever và đợi tín hiệu điều khiển từ Webser để bật tắt các thiết bị ngoại vi
Khối thiết bị ngoại vi: Gồm các thiết bị như máy bơm, đèn và được điều khiển bởi ESP32
Hình 23 Mặt trước của mạch Mặt sau:
Hình 24 Mặt sau của mạch in
Mạch thực tế
Hình 25 Mạch cắm thực nghiệm trên boardtest