Professional Documents
Culture Documents
Báo cáo IOT (1)
Báo cáo IOT (1)
Hà Nội, 2024
BAN CƠ YẾU CHÍNH PHỦ
HỌC VIỆN KỸ THUẬT MẬT MÃ
Hà Nội, 2024
MỤC LỤC
DANH MỤC HÌNH ẢNH..............................................................................
LỜI MỞ ĐẦU.................................................................................................
1.4.2. Ứng dụng trong lĩnh vực sản xuất nông nghiệp.............................18
1.5. Các thách thức trong việc nghiên cứu, triển khai IoT..........................20
2.3.1. Services.............................................................................................35
2.3.3. Storage..............................................................................................36
2.3.4. Compute...........................................................................................36
3.1.2. I2C(oled-esp32)................................................................................44
3.1.3. 1-wire(dht22-esp32).........................................................................45
3.2.1. ESP32...............................................................................................45
3.2.2. DHT22..............................................................................................48
KẾT LUẬN...................................................................................................
DANH MỤC HÌNH ẢNH
Hình 1 Internet Of Things.......................................................................8
Hình 2 Sự gia tăng nhanh chóng của giao tiếp máy – máy.....................9
Hình 4 Ví dụ về MQTT.........................................................................12
Hình 5 Ví dụ XMPP..............................................................................13
Hình 11 Theo dõi tình trạng sinh trưởng của cây trồng........................18
Hình 15 Sơ đồ luồng..............................................................................65
Trong bối cảnh phát triển nhanh chóng của công nghệ, Internet of
Things (IoT) đang trở thành một yếu tố then chốt giúp các doanh nghiệp
nâng cao hiệu quả hoạt động và tạo ra các cơ hội kinh doanh mới. Tuy nhiên,
việc kết nối, quản lý và phân tích dữ liệu từ hàng triệu thiết bị IoT có thể là
một thách thức không nhỏ. Đây chính là lý do tại sao Google Cloud IoT
được ra đời.
Google Cloud IoT là một bộ dịch vụ đám mây tiên tiến, cung cấp cho
các doanh nghiệp các công cụ cần thiết để kết nối và quản lý thiết bị IoT một
cách dễ dàng, bảo mật và hiệu quả. Với Google Cloud IoT, bạn không chỉ có
thể giám sát và kiểm soát các thiết bị từ xa, mà còn thu thập và phân tích dữ
liệu một cách chính xác và nhanh chóng. Điều này giúp các doanh nghiệp tối
ưu hóa hoạt động, giảm thiểu chi phí và tận dụng tối đa tiềm năng của công
nghệ IoT.
CHƯƠNG 1 TỔNG QUAN VỀ IOT
Một ví dụ điển hình cho IoT là tủ lạnh thông minh, nó có thể là một chiếc tủ lạnh
bình thường nhưng có gắn thêm các cảm biến bên trong giúp kiểm tra được số lượng
các loại thực phẩm có trong tủ lạnh, cảm biến nhiệt độ, cảm biến phát hiện mở cửa,…
và các thông tin này được đưa lên internet. Với một danh mục thực phẩm được thiết
lập trước bởi người dùng, khi mà một trong các loại thực phẩm đó sắp hết thì nó sẽ
thông báo ngay cho chủ nhân nó biết rằng cần phải bổ sung gấp, thậm chí nếu các loại
sản phẩm được gắn mã ID thì nó sẽ tự động trực tiếp gửi thông báo cần nhập hàng đến
siêu thị và nhân viên siêu thị sẽ gửi loại thực phẩm đó đến tận nhà.
Hình 3 Ứng dụng tủ lạnh trong IoT
1.4. Cơ sở kĩ thuật của IoT
1.3.1. Giao thức chính
Trong IoT, các thiết bị phải giao tiếp được với nhau (D2D). Dữ liệu sau đó
phải được thu thập và gửi tới máy chủ (D2S). Máy chủ cũng có để chia sẻ dữ
liệu với nhau(S2S), có thể cung cấp lại cho các thiết bị, để phân tích các
chương trình, hoặc cho người dùng. Các giao thức có thể dùng trong IoT là:
- MQTT: một giao thức cho việc thu thập dữ liệu và giao tiếp cho các máy
chủ (D2S)
- XMPP: giao thức tốt nhất để kết nối các thiết bị với mọi người, một trường
hợp đặc biệt của mô hình D2S, kể từ khi người được kết nối với các máy chủ
- DDS: giao thức tốc độ cao cho việc tích hợp máy thông minh (D2D)
- AMQP: hệ thống hàng đợi được thiết kế để kết nối các máy chủ với nhau
(S2S)
* MQTT
MQTT(Message Queue Telemetry Transport), mục tiêu thu thập dữ liệu
và giao tiếp D2S. Mục đích là đo đạc từ xa, hoặc giám sát từ xa, thu thập dữ
liệu từ nhiều thiết bị và vận chuyển dữ liệu đó đến máy trạm với ít xung đột
nhất. MQTT nhắm đến các mạng lớn của các thiết bị nhỏ mà cần phải được
theo dõi hoặc kiểm soát từ các đám mây.
Hình 4 Ví dụ về MQTT
MQTT hoạt động đơn giản, cung cấp nhiều lựa chọn điều khiển và QoS.
MQTT không có yêu cầu quá khắt khe về thời gian, tuy nhiên hiều quả của nó
là rất lớn, đáp ứng tính thời gian thực với đơn vị tính bằng giây.
Các giao thức hoạt động trên nền tàng TCP, cung cấp các đáp ứng đơn giản,
đáng tin cậy.
* XMPP
XMPP ban đầu được gọi là "Jabber." Nó được phát triển cho các tin nhắn
tức thời (IM) để kết nối mọi người với những người khác thông qua tin nhắn
văn bản. XMPP là viết tắt của Extensible Messaging và Presence Protocol.
Hình 5 Ví dụ XMPP
XMPP sử dụng định dạng văn bản XML, và cũng tương tự như MQTT
chạy, XMPP chạy trên nền tảng TCP, hoặc có thể qua HTTP trên TCP. Sức
mạnh chính của nó là một chương trình name@domain.comaddressing trong
mạng Internet khổng lồ.
1.3.2. Năng lực truyền thông (Communication Capabilities)
Địa chỉ IP được coi là yếu tố quan trọng trong IoT, khi mà mỗi thiết bị được
gán một địa chỉ IP riêng biệt. Do đó khả năng cấp phát địa chỉ IP sẽ quyết định
đến tương lai của IoT. Hệ thống địa chỉ IPv4 được tạo ra mới mục đích đánh
cho mỗi máy tính kết nối vào mạng internet một con số riêng biệt, giúp cho
thông tin có thể tìm tới đúng nơi cần đến ngay khi nó được chuyển đi từ bất cứ
địa điểm nào trên thế giới. Theo thiết kế, Ipv4 có thể cung cấp 2^32 (tương ứng
với khoảng 4,2 tỉ) địa chỉ IP, một con số lớn không tưởng cách đây 30 năm.
Tuy nhiên, sự bùng nổ mạnh mẽ của Internet đã khiến cho số lượng địa chỉ IP
tự do càng ngày càng khan
hiếm. Mới đây, RIPE NCC - Hiệp hội các tổ chức quản lý mạng Internet khu
vực châu Âu phải đưa ra tuyên bố rằng họ đã sử dụng đến gói địa chỉ IP chưa
cấp phát cuối cùng (khoảng 1,8 triệu địa chỉ).
Và sự ra đời của IPv6 như là một giải pháp cứu sống kịp thời cho sự cạn kiệt
của IPv4. Độ dài bit của là 128. Sự gia tăng mạnh mẽ của IPv6 trong không
gian địa chỉ là một yếu tố quan trọng trong phát triển Internet of Things.
Các tiêu chí hình thức chính của thiết bị khi triển khai một ứng dụng IoT là
phải giá thành thấp, mỏng, nhẹ…và như vậy phần năng lượng nuôi thiết bị
cũng sẽ trở nên nhỏ gọn lại, năng lượng tích trữ cũng sẽ trở nên ít đi. Do đó đòi
hỏi thiết bị phải tiêu tốn một công suất cực nhỏ (Ultra Low Power) để sử dụng
nguồn năng lượng có hạn đó. Bên cạnh đó yêu cầu có những giao thức truyền
thông không dây gọn nhẹ hơn, đơn giản hơn, đòi hỏi ít công suất hơn (Low
Energy Wireless Technologies) như Zigbee, BLE (Bluetooth low energy),
ANT/ANT+, NIKE+,..
Trong Internet of Things, cảm biến đóng vai trò then chốt, nó đo đạt cảm
nhận giá trị từ môi trường xung quanh rồi gửi đến bộ vi xử lý sau đó được gửi
lên mạng. Chúng ta có thể bắt gặp một số loại cảm biến về cảnh báo cháy rừng,
cảnh báo động đất, cảm biến nhiệt độ, cảm biến độ ẩm,..Để giúp cho thiết bị
kéo dài được thời gian sống hơn thì đòi hỏi cảm biến cũng phải tiêu hao một
lượng năng lượng cực kỳ thấp. Bên cạnh đó độ chính xác và thời gian đáp ứng
của cảm biến cũng phải nhanh. Để giá thành của thiết bị thấp thì đòi hỏi giá
cảm biến cũng phải thấp.
Hình 8 Một số loại cảm biến hay gặp
Thời gian đáp ứng phải đảm bảo tính thời gian thực, sao cho hàng ngàn các
node mạng có thể truy cập vào hệ thống mà không xảy ra hiện tượng nghẽn
mạng. Với các ứng dụng D2D, thời gian đáp ứng trong khoảng 10us đến 10ms,
trong khi ứng dụng D2S, thời gian này là 10ms đến 1s. Với các ứng dụng S2S,
không có yêu cầu khắt khe về thời gian đáp ứng, tuy nhiên thông thường yêu
cầu từ 3 đến 5s.
1.5. Các ứng dụng của IOT
Với những hiệu quả thông minh rất thiết thực mà IoT đem đến cho con người,
IoT đã và đang được tích hợp trên khắp mọi thứ, mọi nơi xung quanh thế giới mà
con người đang sống. Từ chiếc vòng đeo tay, những đồ gia dụng trong nhà, những
mãnh vườn đang ươm hạt giống, cho đến những sinh vật sống như động vật hay con
người…đều có sử dụng giải pháp IoT.
Ứ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…
1.4.2. Ứ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 để 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.
Hình 11 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à.
1.4.3. Ứ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.
Ví 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.
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.
1.5. Các thách thức trong việc nghiên cứu, triển khai IoT
Chưa có một ngôn ngữ chung:
Ở mức cơ bản nhất, Internet là một mạng dùng để nối thiết bị này với thiết
bị khác. Nếu chỉ riêng có kết nối không thôi thì không có gì đảm bảo rằng các
thiết bị biết cách nói chuyện nói nhau. Ví dụ, chúng ta có thể đi từ Việt Nam
đến Mỹ, nhưng không đảm bảo rằng chúng ta có thể nói chuyện tới với người
Mỹ. Để các thiết bị có thể giao tiếp với nhau, chúng sẽ cần một hoặc nhiều giao
thức (protocols), có thể xem là một thứ ngôn ngữ chuyên biệt để giải quyết một
tác vụ nào đó. Chắc chắn chúng ta đã ít nhiều sử dụng một trong những giao
thức phổ biến nhất thế giới, đó là HyperText Transfer Protocol (HTTP) để tải
web. Ngoài ra chúng ta còn có SMTP, POP, IMAP dành cho email, FTP
dùng để trao đổi file,
...Những giao thức như thế này hoạt động ổn bởi các máy chủ web, mail và
FTP thường không phải nói với nhau nhiều, khi cần, một phần mềm phiên dịch
đơn giản sẽ đứng ra làm trung gian để hai bên hiểu nhau. Còn với các thiết bị
IoT, chúng phải đảm đương rất nhiều thứ, phải nói chuyện với nhiều loại máy
móc thiết bị khác nhau. Đáng tiếc rằng hiện người ta chưa có nhiều sự đồng
thuận về các giao thức để IoT trao đổi dữ liệu. Nói cách khác, tình huống này
gọi là "giao tiếp thất bại", một bên nói nhưng bên kia không thèm (và không
thể) nghe.
Hàng rào subnetwork:
Như đã nói ở trên, thay vì giao tiếp trực tiếp với nhau, các thiết bị IoT hiện
nay chủ yếu kết nối đến một máy chủ trung tâm do hãng sản xuất một nhà phát
triển nào đó quản lí. Cách này cũng vẫn ổn thôi, những thiết bị vẫn hoàn toàn
nói được với nhau thông qua chức năng phiên dịch của máy chủ rồi. Thế nhưng
mọi chuyện không đơn giản như thế, cứ mỗi một mạng lưới như thế tạo thành
một subnetwork riêng, và buồn thay các máy móc nằm trong subnetwork này
không thể giao tiếp tốt với subnetwork khác.
Lấy ví dụ như xe ô tô chẳng hạn. Một chiếc Ford Focus có thể giao tiếp cực
kì tốt đến các dịch vụ và trung tâm dữ liệu của Ford khi gửi dữ liệu lên mạng.
Nếu một bộ phận nào đó cần thay thế, hệ thống trên xe sẽ thông báo về Ford, từ
đó hãng tiếp tục thông báo đến người dùng. Nhưng trong trường hợp chúng ta
muốn tạo ra một hệ thống cảnh báo kẹt xe thì mọi chuyện rắc rối hơn nhiều bởi
xe Ford được thiết lập chỉ để nói chuyện với server của Ford, không phải với
server của Honda, Audi, Mercedes hay BMW. Lý do cho việc giao tiếp thất
bại? Chúng ta thiếu đi một ngôn ngữ chung. Và để thiết lập cho các hệ thống
này nói chuyện được với nhau thì rất tốn kém, đắt tiền.
Một số trong những vấn đề nói trên chỉ đơn giản là vấn đề về kiến trúc
mạng, về kết nối mà các thiết bị sẽ liên lạc với nhau (Wifi, Bluetooth, NFC,...).
Những thứ này thì tương đối dễ khắc phục với công nghệ không dây ngày nay.
Còn với các vấn đề về giao thức thì phức tạp hơn rất nhiều, nó chính là vật vản
lớn và trực tiếp trên còn đường phát triển của Internet of Things.
Có quá nhiều "ngôn ngữ địa phương":
Bây giờ giả sử như các nhà sản xuất xe ô tô nhận thấy rằng họ cần một giao
thức chung để xe của nhiều hãng có thể trao đổi dữ liệu cho nhau và họ đã phát
triển thành công giao thức đó. Thế nhưng vấn đề vẫn chưa được giải quyết. Nếu
các trạm thu phí đường bộ, các trạm bơm xăng muốn giao tiếp với xe thì sao?
Mỗi một loại thiết bị lại sử dụng một "ngôn ngữ địa phương" riêng thì mục đích
của IoT vẫn chưa đạt được đến mức tối đa. Đồng ý rằng chúng ta vẫn có thể có
một trạm kiểm soát trung tâm, thế nhưng các thiết bị vẫn chưa thật sự nói được
với nhau.
Tiền và chi phí:
Cách duy nhất để các thiết bị IoT có thể thật sự giao tiếp đó là khi có một
động lực kinh tế đủ mạnh khiến các nhà sản xuất đồng ý chia sẻ quyền điều
khiển cũng như dữ liệu mà các thiết bị của họ thu thập được. Hiện tại, các động
lực này không nhiều. Có thể xét đến ví dụ sau: một công ty thu gom rác
muốn kiểm tra
xem các thùng rác có đầy hay chưa. Khi đó, họ phải gặp nhà sản xuất thùng rác,
đảm bảo rằng họ có thể truy cập vào hệ thống quản lí của từng thùng một. Điều
đó khiến chi phí bị đội lên, và công ty thu gom rác có thể đơn giản chọn giải
pháp cho một người chạy xe kiểm tra từng thùng một.
CHƯƠNG 2: GOOGLE CLOUD PLATFORM
2.1. Khái niệm
Google Cloud Platform(GCP) là nền tảng được cung cấp bởi Google, xây
dựng trên cơ sở hạ tầng của điện toán đám mây. Cho phép doanh nghiệp sử
dụng và phát triển các ứng dụng trên hệ sinh thái Google : Google Maps, G
Suite, Youtube,...
Hiện nay, Google Cloud Platform trở thành một người đồng hành thân
thiện trong công tác quản lý hệ thống hạ tầng của các doanh nghiệp. Bởi nó
cung cấp đủ các phần mềm phục vụ từ quá trình lên kế hoạch, phát triển đến
tối ưu hóa hệ thống
2.2. Công cụ
Google Cloud Platform (GCP) bao gồm 3 công cụ : IaaS, PaaS, SaaS
2.2.1. IaaS (Infrastructure as a Service)
IaaS, hay Cơ sở hạ tầng như một dịch vụ, là một trong ba mô hình dịch vụ
điện toán đám mây chính, bên cạnh PaaS (Platform as a Service) và SaaS
(Software as a Service). IaaS cung cấp cơ sở hạ tầng IT trên đám mây, bao
gồm máy chủ, lưu trữ, mạng và các tài nguyên tính toán khác. Thay vì phải
đầu tư vào phần cứng vật lý, doanh nghiệp có thể thuê các tài nguyên này từ
nhà cung cấp dịch vụ đám mây và trả phí dựa trên mức sử dụng.
Thành phần của IaaS
Một dịch vụ IaaS điển hình bao gồm các thành phần sau:
Máy chủ ảo (Virtual Machines - VMs): Các máy chủ ảo cho phép người
dùng chạy các ứng dụng và dịch vụ như trên máy chủ vật lý. Người dùng có
thể cấu hình CPU, RAM, và dung lượng lưu trữ theo nhu cầu.
Lưu trữ (Storage): Dịch vụ lưu trữ đám mây cung cấp không gian lưu trữ
linh hoạt và có thể mở rộng cho dữ liệu và ứng dụng. Có nhiều loại lưu trữ
như lưu trữ đối tượng (object storage), lưu trữ khối (block storage), và lưu
trữ tệp (file storage).
Mạng (Networking): IaaS cung cấp các dịch vụ mạng như IP addresses,
load balancers, và VPN để kết nối và bảo mật hệ thống của người dùng.
Bảo mật (Security): Các công cụ và dịch vụ bảo mật bao gồm tường lửa
(firewalls), bảo mật mạng, và quản lý danh tính và truy cập (IAM).
Các dịch vụ bổ sung: Một số nhà cung cấp IaaS cung cấp thêm các dịch
vụ như quản lý cơ sở dữ liệu, phân tích dữ liệu, và các công cụ phát triển
ứng dụng.
Lợi ích của IaaS
IaaS mang lại nhiều lợi ích đáng kể cho các doanh nghiệp:
Tiết kiệm chi phí: Doanh nghiệp không cần đầu tư vào phần cứng và cơ
sở hạ tầng vật lý, giảm chi phí đầu tư ban đầu và chi phí bảo trì.
Khả năng mở rộng: IaaS cho phép doanh nghiệp mở rộng hoặc thu hẹp tài
nguyên theo nhu cầu, đảm bảo sử dụng tài nguyên hiệu quả và tiết kiệm chi
phí.
Tính linh hoạt và kiểm soát: Doanh nghiệp có toàn quyền kiểm soát cấu
hình và quản lý các tài nguyên IT, từ đó tùy chỉnh hệ thống theo yêu cầu cụ
thể.
Tính sẵn sàng và độ tin cậy cao: Các nhà cung cấp IaaS thường cung cấp
các giải pháp đảm bảo tính sẵn sàng và độ tin cậy cao, với các biện pháp
phòng chống sự cố và khắc phục thảm họa.
Bảo mật: Các nhà cung cấp dịch vụ IaaS đầu tư mạnh vào bảo mật và
tuân thủ các tiêu chuẩn bảo mật quốc tế, đảm bảo dữ liệu và ứng dụng của
doanh nghiệp được bảo vệ.
Ứng dụng của IaaS
IaaS được sử dụng rộng rãi trong nhiều lĩnh vực và trường hợp sử dụng
khác nhau, bao gồm:
Phát triển và kiểm thử phần mềm: Các nhóm phát triển có thể dễ dàng tạo
ra các môi trường phát triển và kiểm thử linh hoạt, nhanh chóng và hiệu quả.
Lưu trữ và sao lưu dữ liệu: IaaS cung cấp các giải pháp lưu trữ an toàn và
có thể mở rộng cho các nhu cầu lưu trữ và sao lưu dữ liệu.
Ứng dụng web và di động: Doanh nghiệp có thể triển khai các ứng dụng
web và di động trên cơ sở hạ tầng đám mây, đảm bảo hiệu suất và khả năng
mở rộng.
Phân tích dữ liệu lớn: IaaS cung cấp tài nguyên tính toán mạnh mẽ và linh
hoạt cho các dự án phân tích dữ liệu lớn, từ đó giúp doanh nghiệp khai thác
dữ liệu để đưa ra quyết định kinh doanh thông minh.
Các nhà cung cấp IaaS hàng đầu
Một số nhà cung cấp dịch vụ IaaS hàng đầu trên thế giới bao gồm:
Amazon Web Services (AWS): Là nhà cung cấp IaaS lớn nhất với một
loạt các dịch vụ và giải pháp đám mây.
Microsoft Azure: Cung cấp các dịch vụ IaaS phong phú và tích hợp tốt
với các sản phẩm và dịch vụ của Microsoft.
Google Cloud Platform (GCP): Cung cấp các dịch vụ IaaS mạnh mẽ và
tích hợp với các dịch vụ dữ liệu và học máy của Google.
IBM Cloud: Cung cấp các dịch vụ IaaS với sự tập trung vào các giải pháp
doanh nghiệp và bảo mật.
2.2.2. PaaS (Platform as a Service)
PaaS, hay Nền tảng như một dịch vụ, là một trong ba mô hình dịch vụ
điện toán đám mây chính, bên cạnh IaaS (Infrastructure as a Service) và
SaaS (Software as a Service). PaaS cung cấp một nền tảng đám mây cho
phép các nhà phát triển xây dựng, triển khai và quản lý các ứng dụng mà
không cần phải quản lý cơ sở hạ tầng phần cứng hoặc phần mềm cơ bản.
Thành phần của PaaS
Một dịch vụ PaaS điển hình bao gồm các thành phần sau:
Môi trường phát triển: Cung cấp các công cụ và môi trường phát triển tích
hợp (IDE) cho phép lập trình viên viết mã, kiểm thử và triển khai ứng dụng
một cách dễ dàng.
Dịch vụ cơ sở dữ liệu: PaaS cung cấp các dịch vụ cơ sở dữ liệu quản lý,
bao gồm các loại cơ sở dữ liệu quan hệ và phi quan hệ, giúp đơn giản hóa
việc lưu trữ và truy xuất dữ liệu.
Quản lý ứng dụng: Bao gồm các công cụ và dịch vụ để triển khai, quản lý
và giám sát các ứng dụng trong môi trường đám mây.
Dịch vụ tích hợp: PaaS cung cấp các dịch vụ tích hợp để kết nối các ứng
dụng với các hệ thống và dịch vụ khác, bao gồm API, dịch vụ nhắn tin và
hàng đợi.
Bảo mật và quản lý: Bao gồm các dịch vụ bảo mật, quản lý danh tính và
quyền truy cập (IAM), và các công cụ quản lý vòng đời ứng dụng (ALM).
Lợi ích của PaaS
PaaS mang lại nhiều lợi ích đáng kể cho các nhà phát triển và doanh
nghiệp:
Tiết kiệm thời gian và chi phí phát triển: PaaS loại bỏ nhu cầu quản lý cơ
sở hạ tầng và các phần mềm cơ bản, giúp các nhà phát triển tập trung vào
việc viết mã và xây dựng các tính năng ứng dụng.
Khả năng mở rộng: PaaS cung cấp khả năng mở rộng linh hoạt, cho phép
các ứng dụng mở rộng hoặc thu hẹp tài nguyên theo nhu cầu thực tế.
Tích hợp dễ dàng: PaaS cung cấp các dịch vụ tích hợp giúp kết nối các
ứng dụng với các hệ thống và dịch vụ khác một cách dễ dàng và hiệu quả.
Bảo mật và quản lý: PaaS cung cấp các công cụ và dịch vụ bảo mật tiên
tiến, giúp bảo vệ ứng dụng và dữ liệu khỏi các mối đe dọa.
Cộng tác và phát triển nhanh chóng: PaaS cung cấp các công cụ và dịch
vụ hỗ trợ cộng tác giữa các nhóm phát triển, giúp đẩy nhanh quá trình phát
triển và triển khai ứng dụng.
Ứng dụng của PaaS
PaaS được sử dụng rộng rãi trong nhiều lĩnh vực và trường hợp sử dụng
khác nhau, bao gồm:
Phát triển ứng dụng web và di động: Các nhà phát triển có thể sử dụng
PaaS để xây dựng, kiểm thử và triển khai các ứng dụng web và di động một
cách nhanh chóng và hiệu quả.
Phát triển và triển khai API: PaaS cung cấp các công cụ và dịch vụ để xây
dựng và triển khai các API, giúp kết nối các ứng dụng và hệ thống khác
nhau.
Phân tích dữ liệu: PaaS cung cấp các dịch vụ phân tích dữ liệu mạnh mẽ,
cho phép các nhà phát triển xây dựng các ứng dụng phân tích và trực quan
hóa dữ liệu.
Tự động hóa quy trình kinh doanh: PaaS cung cấp các công cụ và dịch vụ
để tự động hóa các quy trình kinh doanh, giúp nâng cao hiệu quả hoạt động
và giảm thiểu sai sót.
Các nhà cung cấp PaaS hàng đầu
Một số nhà cung cấp dịch vụ PaaS hàng đầu trên thế giới bao gồm:
Google Cloud Platform (GCP): Cung cấp các dịch vụ PaaS mạnh mẽ và
tích hợp với các dịch vụ dữ liệu và học máy của Google.
Amazon Web Services (AWS): Cung cấp một loạt các dịch vụ PaaS bao
gồm AWS Elastic Beanstalk, AWS Lambda, và Amazon RDS.
Microsoft Azure: Cung cấp các dịch vụ PaaS phong phú và tích hợp tốt
với các sản phẩm và dịch vụ của Microsoft, bao gồm Azure App Service và
Azure Functions.
IBM Cloud: Cung cấp các dịch vụ PaaS với sự tập trung vào các giải pháp
doanh nghiệp và bảo mật, bao gồm IBM Cloud Foundry và IBM Watson.
2.2.3. SaaS (Software as a Service)
SaaS, hay Phần mềm như một dịch vụ, là một mô hình cung cấp phần
mềm qua internet, trong đó các ứng dụng được lưu trữ và quản lý trên đám
mây bởi nhà cung cấp dịch vụ và người dùng truy cập thông qua trình duyệt
web. Mô hình này loại bỏ nhu cầu cài đặt, bảo trì và quản lý phần mềm trên
các máy tính cá nhân hoặc máy chủ nội bộ, giúp người dùng tập trung vào
công việc chính mà không phải lo lắng về hạ tầng kỹ thuật.
Đặc điểm của SaaS
Các đặc điểm chính của mô hình SaaS bao gồm:
Truy cập qua Internet: Người dùng có thể truy cập các ứng dụng SaaS từ
bất kỳ đâu có kết nối internet mà không cần cài đặt phần mềm.
Thanh toán dựa trên sử dụng: Người dùng thường trả phí dựa trên mô
hình đăng ký theo tháng hoặc theo năm, giúp giảm chi phí đầu tư ban đầu.
Cập nhật tự động: Các ứng dụng SaaS được cập nhật tự động bởi nhà
cung cấp dịch vụ, đảm bảo người dùng luôn có phiên bản phần mềm mới
nhất mà không cần thực hiện cập nhật thủ công.
Khả năng mở rộng: SaaS cho phép dễ dàng mở rộng hoặc thu hẹp số
lượng người dùng hoặc tính năng theo nhu cầu.
Tích hợp và API: Các ứng dụng SaaS thường cung cấp các API và khả
năng tích hợp với các hệ thống và dịch vụ khác, giúp kết nối liền mạch với
hạ tầng IT hiện có.
Lợi ích của SaaS
SaaS mang lại nhiều lợi ích đáng kể cho các doanh nghiệp và người dùng
cá nhân:
Tiết kiệm chi phí: SaaS loại bỏ nhu cầu đầu tư vào phần cứng và phần
mềm, giảm chi phí cài đặt, bảo trì và quản lý.
Tính linh hoạt: Người dùng có thể truy cập các ứng dụng SaaS từ bất kỳ
đâu, giúp làm việc linh hoạt và tăng cường khả năng cộng tác.
Tự động hóa cập nhật: Các nhà cung cấp SaaS đảm bảo phần mềm luôn
được cập nhật và bảo mật, giúp người dùng luôn có phiên bản mới nhất mà
không phải lo lắng về các bản vá bảo mật.
Tập trung vào nghiệp vụ: Với SaaS, doanh nghiệp có thể tập trung vào
các hoạt động cốt lõi thay vì lo lắng về hạ tầng IT và quản lý phần mềm.
Khả năng mở rộng nhanh chóng: SaaS cho phép dễ dàng thêm hoặc bớt
người dùng, tính năng và tài nguyên theo nhu cầu thực tế.
Ứng dụng của SaaS
SaaS được sử dụng rộng rãi trong nhiều lĩnh vực và trường hợp sử dụng
khác nhau, bao gồm:
Quản lý quan hệ khách hàng (CRM): Các ứng dụng CRM như Salesforce
giúp doanh nghiệp quản lý quan hệ khách hàng và bán hàng một cách hiệu
quả.
Quản lý tài chính và kế toán: Các ứng dụng như QuickBooks Online và
Xero giúp doanh nghiệp quản lý tài chính và kế toán dễ dàng.
Quản lý dự án và cộng tác: Các công cụ như Asana, Trello và Slack hỗ trợ
quản lý dự án và cộng tác giữa các nhóm làm việc.
Ứng dụng văn phòng: Các bộ ứng dụng văn phòng như Google
Workspace (trước đây là G Suite) và Microsoft Office 365 cung cấp các
công cụ văn phòng trực tuyến như email, xử lý văn bản, bảng tính và lưu trữ
đám mây.
Thương mại điện tử: Các nền tảng như Shopify và BigCommerce giúp
doanh nghiệp thiết lập và quản lý các cửa hàng trực tuyến một cách dễ dàng.
Học trực tuyến: Các nền tảng như Coursera và Udemy cung cấp các khóa
học trực tuyến, giúp người học tiếp cận với kiến thức từ xa.
Các nhà cung cấp SaaS hàng đầu
Một số nhà cung cấp dịch vụ SaaS hàng đầu trên thế giới bao gồm:
Salesforce: Dẫn đầu trong lĩnh vực CRM với các giải pháp quản lý quan
hệ khách hàng mạnh mẽ và đa dạng.
Google Workspace: Cung cấp các công cụ văn phòng trực tuyến như
Gmail, Google Docs, Google Sheets và Google Drive.
Microsoft Office 365: Một bộ công cụ văn phòng trực tuyến và dịch vụ
cộng tác, bao gồm Outlook, Word, Excel, PowerPoint và OneDrive.
Adobe Creative Cloud: Cung cấp các ứng dụng sáng tạo như Photoshop,
Illustrator và Premiere Pro dưới dạng dịch vụ đám mây.
Zoom: Một nền tảng hội nghị trực tuyến và cộng tác video, rất phổ biến
trong bối cảnh làm việc từ xa.
2.3. Tiện ích
Các sản phẩm GCP cung cấp cho người dùng được chia ra thành 4 loại:
Services, Big Data, Storage, Computer.
Hình 13 Tiện ích Google Cloud Platfform
2.3.1. Services
Các dịch vụ trong GCP bao gồm các công cụ và nền tảng giúp quản lý,
bảo mật và phát triển ứng dụng:
Google Cloud Functions: Dịch vụ serverless cho phép chạy các đoạn mã
mà không cần quản lý cơ sở hạ tầng, thường được sử dụng cho các tác vụ tự
động và backend.
Google Cloud Run: Dịch vụ serverless cho phép triển khai và chạy các
container trên cơ sở hạ tầng được quản lý.
Google Kubernetes Engine (GKE): Dịch vụ quản lý Kubernetes, giúp
triển khai, quản lý và mở rộng các ứng dụng container một cách dễ dàng.
Google App Engine: Nền tảng PaaS cho phép phát triển và triển khai các
ứng dụng mà không cần quản lý cơ sở hạ tầng.
2.3.2. Big Data
Các dịch vụ Big Data trong GCP cung cấp các công cụ mạnh mẽ để xử lý,
phân tích và trực quan hóa dữ liệu lớn:
BigQuery: Dịch vụ phân tích dữ liệu lớn, cung cấp khả năng xử lý truy
vấn SQL nhanh chóng và khả năng mở rộng linh hoạt.
Dataflow: Dịch vụ xử lý dữ liệu theo luồng và theo lô, dựa trên Apache
Beam.
Dataproc: Dịch vụ quản lý Hadoop và Spark, giúp triển khai và quản lý
các cụm xử lý dữ liệu lớn.
Pub/Sub: Dịch vụ nhắn tin thời gian thực, cho phép xây dựng các hệ
thống dữ liệu phân tán và xử lý dữ liệu sự kiện.
2.3.3. Storage
Các dịch vụ lưu trữ trong GCP cung cấp các giải pháp lưu trữ linh hoạt và
có khả năng mở rộng cho dữ liệu và ứng dụng:
Google Cloud Storage: Dịch vụ lưu trữ đối tượng, cung cấp khả năng lưu
trữ dữ liệu không cấu trúc với tính sẵn sàng cao và độ bền.
Cloud SQL: Dịch vụ cơ sở dữ liệu quan hệ được quản lý, hỗ trợ MySQL,
PostgreSQL và SQL Server.
Cloud Spanner: Dịch vụ cơ sở dữ liệu quan hệ phân tán, cung cấp tính
nhất quán cao và khả năng mở rộng toàn cầu.
FireStore: Dịch vụ cơ sở dữ liệu NoSQL, cung cấp lưu trữ dữ liệu theo tài
liệu và khả năng đồng bộ hóa thời gian thực.
2.3.4. Compute
Các dịch vụ tính toán trong GCP cung cấp các tài nguyên tính toán mạnh
mẽ và linh hoạt để chạy các ứng dụng và xử lý dữ liệu:
Compute Engine: Dịch vụ máy ảo cho phép chạy các ứng dụng trên hạ
tầng đám mây của Google, với khả năng tùy chỉnh cấu hình tài nguyên.
Google Kubernetes Engine (GKE): Như đã đề cập, dịch vụ quản lý
Kubernetes giúp triển khai và quản lý các ứng dụng container.
App Engine: Nền tảng PaaS cho phép phát triển và triển khai các ứng
dụng mà không cần quản lý cơ sở hạ tầng.
Cloud Functions: Dịch vụ serverless cho phép chạy các đoạn mã mà
không cần quản lý cơ sở hạ tầng.
2.4. Kiến trúc của IoT platform trên Google Cloud
Các sản phẩm nền tảng IoT thường cung cấp kết nối dữ liệu cơ bản bằng
MQTT và HTTPS. Chúng cũng cho phép bạn cấu hình các thiết bị và cung
cấp các tính năng xác thực và quản lý, lưu trữ và trực quan hóa dữ liệu viễn
thông, xử lý dữ liệu và cảnh báo. Các tổ chức thường sử dụng các nền tảng
IoT khi một máy chủ MQTT độc lập không đủ cho một trường hợp sử dụng
và cần một sản phẩm nền tảng IoT hoàn chỉnh hơn. Một nền tảng IoT cung
cấp một giao diện thống nhất để quản lý một tập hợp thiết bị đa dạng. Giao
diện này rất quan trọng đối với nhiều ứng dụng thiết bị kết nối, và đó là sự
khác biệt chính giữa một nền tảng IoT và một máy chủ MQTT độc lập.
Hình 14 Kiến trúc IOT trên Google Cloud Platform
Như minh họa trong sơ đồ trước đó, nền tảng IoT triển khai một MQTT
broker hoặc điểm cuối cho kết nối thiết bị. Nền tảng IoT được kết nối với
một Bộ cân bằng tải mạng Proxy bên ngoài để phân phối lưu lượng từ các
thiết bị ở biên. Các ứng dụng IoT bổ sung có thể kết nối với nền tảng IoT
thông qua Pub/Sub hoặc bằng cách sử dụng đầu nối MQTT của Dataflow.
Nền tảng IoT cung cấp một tập hợp các dịch vụ quản lý thiết bị. Như đã
được trình bày trong sơ đồ, các dịch vụ này bao gồm:
1. Kho lưu trữ thông tin xác thực thiết bị
2. Công cụ quy tắc
3. Xác thực và ủy quyền thiết bị
4. Quản lý cấu hình thiết bị
5. Đăng ký thiết bị
6. Quản lý cập nhật thiết bị
Các sản phẩm nền tảng IoT thường bao gồm các dịch vụ như tính năng
song sinh kỹ thuật số, giao diện phát triển ít mã, khả năng cảnh báo và thông
báo, và các chức năng phân tích khác.
MQTT
Một nền tảng IoT triển khai một điểm cuối MQTT theo một trong các
cách sau:
Một đầu nối giữa MQTT và một dịch vụ thông điệp khác
Một MQTT broker thực hiện đầy đủ các quy cách của MQTT
Trong một số trường hợp, điểm cuối MQTT chỉ kết nối các khách hàng
MQTT với một dịch vụ nhắn tin backend, như Kafka hoặc Pub/Sub. Loại
điểm cuối này thường không thực hiện đầy đủ các quy cách giao thức MQTT
và thường không bao gồm các tính năng như mức QoS 1 và 2 hoặc các đăng
ký chia sẻ. Ưu điểm của cách tiếp cận này là giảm sự phức tạp trong nền tảng
IoT, vì không có ứng dụng MQTT broker riêng biệt. Chi phí vận hành thấp
hơn và bảo trì đơn giản hơn so với việc nền tảng sử dụng một MQTT broker
riêng biệt. Tuy nhiên, do hỗ trợ hạn chế cho các tính năng giao thức MQTT
nâng cao hơn, cách tiếp cận này có nghĩa là ít linh hoạt và chức năng hơn
cho việc truyền tin MQTT so với một MQTT broker độc lập thực hiện đầy
đủ các quy cách của MQTT.
Các nền tảng IoT khác cung cấp một MQTT broker đầy đủ như một phần
của nền tảng, như minh họa trong kiến trúc mẫu trong tài liệu này. Broker
này có thể là một trong những broker mã nguồn mở hiện có hoặc một triển
khai broker độc quyền. Một broker MQTT đầy đủ cung cấp khả năng MQTT
hai chiều đầy đủ như đã mô tả trước đó, nhưng một broker đầy đủ có thể tăng
sự phức tạp và chi phí vận hành cho việc quản lý nền tảng IoT.
HTTPS là một giao thức thay thế phổ biến cho MQTT cho các trường hợp
sử dụng thiết bị kết nối. Nó có chi phí cao hơn MQTT, nhưng được hỗ trợ
rộng rãi hơn bởi các thiết bị di động như điện thoại, và bởi các trình duyệt
web và các ứng dụng khác. Nó thường được sử dụng trong một số ứng dụng
thiết bị kết nối và được hỗ trợ bởi các nền tảng mã nguồn mở như Eclipse
Hono và nhiều sản phẩm thương mại.
Nhiều ứng dụng thiết bị giới hạn sử dụng Giao thức Ứng dụng Giới hạn
(CoAP), được định nghĩa trong RFC 7252, như một sự thay thế cho MQTT.
CoAP nhắm mục tiêu tới các khách hàng có chi phí thấp và dung lượng nhỏ
cho các thiết bị nhúng và cảm biến. Nhiều ứng dụng nền tảng IoT thương
mại cũng cung cấp một điểm cuối CoAP.
Không giống như một MQTT Broker độc lập, một nền tảng IoT cung cấp
các dịch vụ tích hợp để quản lý danh tính và thông tin xác thực của thiết bị.
Hầu hết các nền tảng IoT sử dụng xác thực chứng chỉ khách hàng X.509 cho
xác thực, xác thực dựa trên mã thông báo JWT (thường kết hợp với OAuth
2.0), và xác thực bằng tên người dùng và mật khẩu. Một số nền tảng cũng hỗ
trợ tích hợp với nhà cung cấp xác thực LDAP bên ngoài.
Đối với một số thiết bị giới hạn, xác thực JWT hoặc tên người dùng và
mật khẩu có thể phù hợp hơn, vì các hệ thống này yêu cầu ít tài nguyên hơn
trên thiết bị kết nối. Khi sử dụng xác thực JWT hoặc tên người dùng và mật
khẩu, điều quan trọng là mã hóa kết nối mạng riêng biệt với xác thực mTLS,
vì kết nối mã hóa không được yêu cầu bởi bất kỳ phương pháp xác thực nào
trong số này. Ngược lại, xác thực chứng chỉ X.509 tiêu thụ nhiều tài nguyên
hơn trên thiết bị kết nối, nhưng thường được sử dụng trong kết nối mTLS mã
hóa và do đó cung cấp mức độ bảo mật cao.
Việc cấp phát thông tin xác thực xác thực trên thiết bị biên tại thời điểm
sản xuất cũng là một phần quan trọng của hệ thống xác thực thiết bị kết nối,
nhưng nằm ngoài phạm vi của tài liệu này.
Để biết thêm thông tin về xác thực và quản lý thông tin xác thực, hãy xem
Các phương pháp hay nhất để chạy một backend IoT trên Google Cloud.
Khuyến nghị tổ chức sử dụng một nền tảng IoT có các khả năng sau:
Cập nhật phần mềm và hệ thống: Giao nhận và khôi phục các bản cập
nhật firmware, phần mềm và ứng dụng cho các thiết bị kết nối. Các cập nhật
này thường cũng bao gồm lưu trữ và quản lý các bản cập nhật.
Cập nhật cấu hình: Giao nhận, lưu trữ và khôi phục các bản cập nhật cấu
hình của các ứng dụng được triển khai trên các thiết bị kết nối.
Tạo và quản lý thông tin xác thực: Tạo thông tin xác thực mới cho thiết
bị, giao nhận thông tin xác thực đó đến thiết bị kết nối, kiểm tra các lần thử
truy cập và hoạt động của thiết bị, và thu hồi thông tin xác thực bị xâm phạm
hoặc hết hạn đúng thời điểm.
Công cụ quy tắc và xử lý dữ liệu: Định nghĩa và thực thi các quy tắc dựa
trên dữ liệu và các bước xử lý dữ liệu khác. Khả năng này thường bao gồm
một loại giao diện ít mã để định nghĩa các quy tắc và đường dẫn xử lý dữ
liệu.
Nếu nền tảng IoT có một MQTT broker đầy đủ, các ứng dụng backend
cũng có thể giao tiếp với các thiết bị bằng cách sử dụng khả năng MQTT của
nền tảng. Nếu ứng dụng hỗ trợ MQTT, ứng dụng có thể kết nối với broker
như một người đăng ký. Nếu không có hỗ trợ MQTT, Apache Beam cung
cấp một trình điều khiển MQTT,
CHƯƠNG 3. ỨNG DỤNG IoT ĐIỀU KHIỂN TRUYỀN
DỮ LIỆU NHIỆT ĐỘ ,ĐỘ ẨM THỜI GIAN THỰC LÊN
MÀN HÌNH OLED
3.1. CÁC GIAO THỨC ĐƯỢC SỬ DỤNG
3.1.1. HTTP(đẩy và nhận dữ liệu trên web serve)
HTTP là viết tắt của "Hypertext Transfer Protocol", là một giao thức
truyền tải dữ liệu trên Internet giữa máy chủ và máy khách. Nó được sử dụng
để truyền tải các tài liệu HTML, hình ảnh, video, âm thanh, tệp tin và các tài
nguyên khác từ máy chủ đến máy khách. HTTP hoạt động trên cơ sở giao
tiếp yêu cầu/đáp ứng, nơi mà máy khách gửi một yêu cầu đến máy chủ và
máy chủ sẽ trả lời yêu cầu đó bằng một phản hồi. HTTP hiện tại được sử
dụng phổ biến cho các ứng dụng web và là cơ sở của hầu hết các trang web
và ứng dụng web hiện nay.
3.1.2. I2C(oled-esp32)
Giao thức I2C (Inter-Integrated Circuit) là một giao thức truyền thông
đồng bộ hai chiều dùng để kết nối các vi điều khiển, cảm biến và các linh
kiện điện tử khác trong hệ thống nhúng. Giao thức I2C được phát triển bởi
Philips (nay là NXP Semiconductors) vào năm 1982. Giao thức này sử dụng
hai dây truyền thông là SDA (Serial Data Line) và SCL (Serial Clock Line)
để truyền dữ liệu giữa các thiết bị.
Giao thức I2C cho phép nhiều thiết bị kết nối trên cùng một đường
truyền, mỗi thiết bị có một địa chỉ riêng biệt để xác định. Giao thức này cũng
cho phép truyền dữ liệu trong cả hai hướng, điều này cho phép thiết bị
Master truyền dữ liệu cho thiết bị Slave và ngược lại.
Giao thức I2C có tốc độ truyền dữ liệu khá chậm so với các giao thức
truyền thông khác, tuy nhiên nó vẫn được sử dụng rộng rãi trong các ứng
dụng nhúng do tính đơn giản, hiệu quả và khả năng kết nối nhiều thiết bị trên
cùng một đường truyền.
3.1.3. 1-wire(dht22-esp32)
OneWire là hệ thống bus giao tiếp được thiết kế bởi Dallas
Semiconductor Corp. Giống như tên gọi, hệ thống bus này chỉ sử dụng 1 dây
để truyền nhận dữ liệu.
Chính vì chỉ sử dụng 1 dây nên giao tiếp này có tốc độ truyền thấp nhưng
dữ liệu lại truyền được khoảng cách xa hơn.
OneWire chủ yếu sử dụng để giao tiếp với các thiết bị nhỏ, thu thập và
truyền nhận dữ liệu thời tiết, nhiệt độ,… các công việc không yêu cầu tốc độ
cao.
Giống như các chuẩn giao tiếp khác, 1-Wire cho phép truyền nhận dữ liệu
với nhiều Slave trên đường truyền. Tuy nhiên chỉ có thể có 1 Master
Thông số cơ bản
Điện áp hoạt động: 2.2V - 3.6V
Điện áp vào: 3.3V
Hệ điều hành: FreeRTOS
Các giao diện bao gồm: USB, JTAG, và GPIO
Nhiệt độ hoạt động: -40°C - 85°C
Kích thước: 18mm x 25.5mm x 3.2mm
Ngoại vi
bộ chuyển đổi số sang tương tự (DAC) 8 bit
18 kênh bộ chuyển đổi tương tự sang số (ADC) 12 bit.
cổng giao tiếp I2C
cổng giao tiếp UART
cổng giao tiếp SPI (1 cổng cho chip FLASH )
cổng giao tiếp I2S
10 kênh ngõ ra điều chế độ rộng xung (PWM)
SD card/SDIO/MMC host
Ethernet MAC hỗ trợ chuẩn: DMA và IEEE 1588
CAN bus 2.0
IR (TX/RX)
Các giao diện bao gồm: USB, JTAG, và GPIO
Bộ giải mã video: H.264, VP8, JPEG, MJPEG
Các chế độ tiết kiệm năng lượng: Ngủ sâu, ngủ rời rạc, ngủ điều tiết
CPU
CPU: Xtensa Dual-Core LX6 microprocessor.
Chạy hệ 32 bit
Tốc độ xử lý từ 160 MHz đến 240 MHz
ROM: 4,096KB (4194304 bytes )
Tốc độ xung nhịp từ 40 Mhz ÷ 80 Mhz (có thể tùy chỉnh khi lập
trình)
RAM: 341,25 KB (349248 bytes) SRAM liền chip. Trong đó 8 Kb
RAM RTC tốc độ cao – 8 Kb RAM RTC tốc độ thấp (dùng ở chế
độ DeepSleep).
Kit esp32 sử dụng vi điều khiển Espressif ESP32 gồm 2 nhân chính
là:
Xtensa Dual-Core 32-bit LX6: Đây là bộ xử lý trung tâm của ESP32, bao
gồm hai nhân Xtensa LX6 32-bit với tốc độ xung nhịp cao. Nó được thiết kế
để xử lý các tác vụ đa nhiệm, đảm bảo hiệu suất và tiết kiệm năng lượng.
Co-processor: ESP32 cũng tích hợp một co-processor (vi xử lý phụ) để xử
lý các tác vụ phụ trợ như mã hóa và giải mã, xử lý âm thanh và video, và xử
lý các tác vụ liên quan đến Wi-Fi và Bluetooth. Co-processor này có thể
chạy độc lập với nhân chính hoặc được kết nối với nhân chính để đáp ứng
các yêu cầu tính toán khác nhau.
WIFI
802.11 b/g/n/e/i (WIFI 2,4GHz)
Station mode (STA) ESP32 sẽ kết nối tới các điểm truy cập
Access point mode (AP), ESP32 hoạt động như một điểm truy cập
AP-STA mode, ESP32 sẽ đồng thời là điểm truy cập và truy cập
đến các điểm khác
Bluetooth
Bluetooth: v4.2 BR/EDR và BLE
Việc hỗ trợ Bluetooth khiến ESP32 có thể tương tác với các thiết bị như
bàn phím, chuột, điện thoại khi không có WIFI
3.2.2. DHT22
Giới thiệu chung về DHT22:
DHT22 là một cảm biến đo nhiệt độ và độ ẩm được sử dụng rộng rãi
trong các ứng dụng điện tử như đo nhiệt độ và độ ẩm trong phòng, thiết bị
điều khiển điều hòa, trồng trọt, thủy sản, và hệ thống tự động hóa trong nhà
thông minh.
DHT22 hoạt động dựa trên nguyên lý đo sự thay đổi điện trở của chất bảo
vệ đo nhiệt độ và độ ẩm khi nhiệt độ và độ ẩm thay đổi. Cảm biến này có độ
chính xác cao và độ phân giải tốt, cho phép đo được nhiệt độ và độ ẩm trong
khoảng từ -40 đến 80 độ C và từ 0 đến 100% độ ẩm. Ngoài ra, DHT22 có
tính năng tự động hiệu chỉnh để đảm bảo độ chính xác trong quá trình sử
dụng.
DHT22 là một cảm biến đo độ ẩm và nhiệt độ, còn được gọi là AM2302.
Đây là một số thông số kỹ thuật của DHT22:
Điện áp hoạt động: 3V - 6V DC
Dòng điện tiêu thụ: Dưới 1mA trong thời gian đo, trung bình 50uA
Độ chính xác đo nhiệt độ: ±0.5°C
Độ chính xác đo độ ẩm: ±2%RH Khoảng đo nhiệt độ: -40°C -
125°C Khoảng đo độ ẩm: 0-100%RH
Tần số lấy mẫu: 2 giây
Đầu ra: Digital (Dòng tín hiệu số)
Đầu vào: Single-bus digital input/output (Giao tiếp bus duy nhất)
Sau đó bên Master sẽ gửi 8 bit gồm 7 bit địa chỉ của slave cần trao đổi
thông tin và 1 bit thông báo muốn đọc(bit 1) hoặc muốn ghi (bit 0).
Tiếp đến bên slave sẽ gửi câu trả lời là bit 0 nếu là bên Master gửi đúng
địa chỉ của nó
Rồi bên nhận thông tin sẽ trả lời ack/nack
Cuối cùng khi kết thúc thì bên Master sẽ gửi yêu cầu stop và dừng lại
bằng cách chuyển lần lượt SCL, SDA từ mức 0 lên mức 1.
3.3. Cách truyền dữ liệu qua http
Esp32 kết nối với dht22 tạm gọi là: SERVE
Esp32 kết nối với oled tạm gọi là :ClIENT
Mô hình giao thức
HTTP client thiết lập một kết nối TCP đến server. Nếu thiết lập thành
công, client và server sẽ truyền nhận dữ liệu với nhau thông qua kết nối này,
kết nối được thiết lập còn gọi là socket interface bao gồm các thông tin: địa
chỉ IP, loại giao thức giao vận (chính là TCP), và port (mặc định là 80).
Sau khi kết nối thành công, client gửi một HTTP request đến server thông
qua socket interface vừa được thiết lập. Trong gói tin request sẽ chứa đường
dẫn yêu cầu (path name) là /category/internet-of-thing.
Server sẽ nhận và xử lý request từ client thông qua socket, sau đó đóng
gói dữ liệu tương ứng và gửi một HTTP response về cho client. Dữ liệu trả
về sẽ là một file HTML chứa các loại dữ liệu khác nhau như văn bản, hình
ảnh,…
Server đóng kết nối TCP.
Client nhận được dữ liệu phản hồi từ server và đóng kết nối TCP.
3.4. Giả lập trên wokwi
#include <WiFi.h>
#include <WiFiClientSecure.h>
#include <HTTPClient.h>
#include <Wire.h>
#include "DHT.h"
#include "RTClib.h"
#include <Adafruit_SSD1306.h>
//-----------------------------------------------------------//
//define RTC
RTC_DS3231 rtc;
char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday",
"Thursday", "Friday", "Saturday"};
void setup() {
Serial.begin(115200);
//khai báo DHT22
Serial.println(F("DHTxx test!"));
dht.begin();
if (! rtc.begin()) {
Serial.println("Couldn't find RTC");
Serial.flush();
while (1) delay(10);
}
if (rtc.lostPower()) {
Serial.println("RTC lost power, let's set the time!");
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
// January 21, 2014 at 3am you would call:
//rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
}
// rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
// January 21, 2014 at 3am you would call:
//rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
//Khởi động màn hình oled
if (!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
Serial.println(F("SSD1306 allocation failed"));
for (;;); // Don't proceed, loop forever
}
display.clearDisplay();
display.setTextSize(1);
display.setTextColor(SSD1306_WHITE);
display.setCursor(0,0);
display.println("Connecting to WiFi...");
display.display();
delay(1000);
// Khởi động kết nối wifi
WiFi.begin(ssid, password);
Serial.println("Connecting");
while(WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.print("Connected to WiFi network with IP Address: ");
Serial.println(WiFi.localIP());
}
void dht_sensor();
void RTC_function();
void displayOled();
void getHttp();
//-----------------------------------------------------------//
void loop() {
// Lấy thời gian
RTC_function();
//Đọc giá trị từ cảm biến dht22
dht_sensor();
getHttp();
displayOled();
}
//---------------------//
// Check if any reads failed and exit early (to try again).
if (isnan(Humidity) || isnan(Temperature) || isnan(f)) {
Serial.println(F("Failed to read from DHT sensor!"));
return;
}
Serial.print(F("Humidity: "));
Serial.print(Humidity);
Serial.print(F("% Temperature: "));
Serial.print(Temperature);
Serial.print(F("°C "));
void RTC_function()
{
DateTime now = rtc.now();
Serial.print(now.year(), DEC);
Serial.print('/');
Serial.print(now.month(), DEC);
Serial.print('/');
Serial.print(now.day(), DEC);
Serial.print(" (");
Serial.print(daysOfTheWeek[now.dayOfTheWeek()]);
Serial.print(") ");
Serial.print(now.hour(), DEC);
Serial.print(':');
Serial.print(now.minute(), DEC);
Serial.print(':');
Serial.print(now.second(), DEC);
Serial.println();
}
void displayOled()
{
display.clearDisplay();
display.setCursor(0,0);
display.println("H: " + String(Humidity) +" %");
display.setCursor(65,0);
display.println("T: " + String(Temperature)+" C");
display.setCursor(0,20);
display.display();
}
void getHttp() {
//Check WiFi connection status
if(WiFi.status()== WL_CONNECTED){
String url = "http://esp-weather-station.000webhostapp.com/esp-post-
data.php?api_key=" + apiKeyValue + "&sensor=" + sensorName
+ "&location=" + sensorLocation + "&value1=" +
String(Humidity)
+ "&value2=" + String(Temperature) ;
HTTPClient http;
http.begin(url);
http.end();
delay(2000);
}
}
CHƯƠNG 4 TÍCH HỢP FIREBASE
4.1. Đặc tả hệ thống
Dữ liệu IOT được mô phỏng trên Wokwi theo ảnh dưới đây:
Hình 15 Sơ đồ luồng
HTTP client thiết lập một kết nối TCP đến server. Nếu thiết lập thành
công, client và server sẽ truyền nhận dữ liệu với nhau thông qua kết nối này,
kết nối được thiết lập còn gọi là socket interface bao gồm các thông tin: địa
chỉ IP, loại giao thức giao vận (chính là TCP), và port (mặc định là 80).
Sau khi kết nối thành công, client gửi một HTTP request đến server thông
qua socket interface vừa được thiết lập. Trong gói tin request sẽ chứa đường
dẫn yêu cầu (path name) là /category/internet-of-thing.
Server sẽ nhận và xử lý request từ client thông qua socket, sau đó đóng
gói dữ liệu tương ứng và gửi một HTTP response về cho client. Dữ liệu trả
về sẽ là một file HTML chứa các loại dữ liệu khác nhau như văn bản, hình
ảnh,…
Server đóng kết nối TCP.
Client nhận được dữ liệu phản hồi từ server và đóng kết nối TCP.
4.2. Sơ đồ đấu nối
ESP32
Cảm biến nhiệt độ, độ ẩm DHT22
Màn hình Oled
Module thời gian
4.3. Kết nối Firebase
Sử dụng Realtime Database trong Google Cloud Firebase
Hình 17 Realtime Database
import time
import machine
from machine import Pin
import dht
import network
import ujson
import requests
sensor = dht.DHT22(Pin(15))
# Khởi tạo các giá trị nhiệt độ và độ ẩm trước khi đọc từ cảm biến
prev_temperature = 0
prev_humidity = 0
# Chỉ cập nhật dữ liệu trên Firebase nếu giá trị thay đổi
def update_firebase_data(temperature, humidity):
global prev_temperature, prev_humidity
except Exception as e:
print("Error updating or fetching data from Firebase:", e)
while True:
try:
# Đọc dữ liệu từ cảm biến
sensor.measure()
time.sleep(1)
# Cập nhật giá trị lên Firebase và nhận giá trị sau khi cập nhật từ
Firebase
update_firebase_data(temperature, humidity)
except Exception as e:
print("Error reading sensor data: {}".format(e))
time.sleep(5)
KẾT LUẬN
Trong bối cảnh ngày càng phát triển của công nghệ IoT, Google Cloud
IoT đã chứng tỏ mình là một nền tảng mạnh mẽ và linh hoạt, cung cấp nhiều
giải pháp hiệu quả cho việc quản lý và phân tích dữ liệu từ các thiết bị kết
nối. Với các công cụ như Google Cloud IoT Core, Google Cloud Pub/Sub,
và BigQuery, doanh nghiệp có thể dễ dàng thu thập, xử lý và phân tích dữ
liệu theo thời gian thực, từ đó đưa ra các quyết định kinh doanh thông minh
và kịp thời.
Nền tảng Google Cloud IoT không chỉ hỗ trợ đa dạng các giao thức kết
nối và thiết bị, mà còn cung cấp khả năng mở rộng, bảo mật và tích hợp
mạnh mẽ với các dịch vụ khác của Google Cloud. Điều này giúp doanh
nghiệp tiết kiệm thời gian và nguồn lực trong việc triển khai và quản lý các
hệ thống IoT phức tạp.
Tuy nhiên, để tận dụng tối đa tiềm năng của Google Cloud IoT, các doanh
nghiệp cần có chiến lược rõ ràng, đội ngũ kỹ thuật có kỹ năng và hiểu biết về
IoT, cùng với sự đầu tư hợp lý vào hạ tầng và bảo mật. Ngoài ra, việc liên
tục cập nhật và nắm bắt các xu hướng công nghệ mới cũng là yếu tố quan
trọng giúp duy trì và nâng cao hiệu quả hoạt động của hệ thống IoT.
Tóm lại, Google Cloud IoT là một giải pháp toàn diện và tiên tiến, đáp
ứng được các nhu cầu đa dạng của các doanh nghiệp trong kỷ nguyên số hóa
hiện nay. Với sự hỗ trợ của nền tảng này, các tổ chức có thể mở rộng khả
năng giám sát, quản lý và tối ưu hóa hoạt động, từ đó tạo ra giá trị gia tăng
và cạnh tranh bền vững trên thị trường.