monsieurvechai gửi vào
- 80573 lượt xem
Đây là bài dẫn nhập cho các bạn giới thiệu về Internet của Vạn Vật (IW) và đề xuất cho cộng đồng Arduino của chúng ta
Dẫn nhập: Internet của Vạn Vật (IW) là gì?
Theo wikipedia: “The internet of things (IoT) is the network of physical devices, vehicles, buildings and other items—embedded with electronics, software,sensors, actuators, and network connectivity that enable these objects to collect and exchange data.”
"Internet của Vạn Vật (IW) là một mạng lưới các thiết bị, xe cộ, tòa nhà, và các thứ khác - được gắn nhúng với linh kiện điện tử, cảm biến, truyền động, và giao tiếp mạng - để chúng có thể thu thập vào trao đổi thông tin."
Theo như định nghĩa trên thì IW giống như một mạng xã hội facebook dành riêng cho các vật dụng xung quanh ta. Các vật dụng này rất đa dạng, chúng có thể tương tác với nhau góp phần phục vụ cuộc sống con người. Quan trọng nhất là 2 yếu tố:
-
Mạng: các vật thể phải được kết nối và giao tiếp 2 chiều với nhau. Tuy nhiên không nhất thiết phải là qua internet, mà có thể qua radio, bluetooth, etc.
-
Vạn: phải là số lượng lớn. IW dọn đường cho một thế giới mà phần lớn các vật dụng xung quanh ta đều nối mạng với nhau. Điều này có nghĩa là từ chiếc áo cho đến bóng đèn xung quanh bạn đều gắn được gắn chip. Các chuyên gia ước tính rằng tiêu chuẩn IW sẽ là khoảng 4,5 thiết bị mỗi đầu người. Nhà bạn có ba mẹ và anh chị em thì cần ít nhất là 20 thiết bị như vậy.
Bây giờ ta quay lại với việc phát triển IW ở Việt Nam, và tiêu biểu là ở cộng đồng Arduino chúng ta. Giả sử bạn ở 1 mình và sử dụng Arduino điều khiển 5 bóng đèn qua relay. Ta thử áp dụng định nghĩa từ wikipedia trên xem hệ thống này IW đến đâu:
-
Mạng lưới gồm các thiết bị nối với nhau: Ôkê. Dù là theo kiểu master arduino - slave relay thì đây vẫn là 1 mạng hoa thị và hoàn toàn chấp nhận được. Điều kiện 4 thiết bị đầu người cũng được thỏa mãn.
-
Gắn nhúng với linh kiện điện tử, cảm biến, truyền động, và giao tiếp mạng: Ôkê tuốt khỏi bàn. Bạn chơi sang thì gắn thêm ethernet/wifi shield để điều khiển từ mọi nơi trên thế giới.
-
Thu thập vào trao đổi thông tin: Arduino có thể truy xuất các từ chân IO để truy xuất thông tin bóng đèn. Tuy nhiên, bóng đèn lại hoàn toàn mù tịt thông tin về Arduino. Giả sử Arduino chập mạch thì bóng cũng đi tong. Điều này khác xa với mạng internet: các bạn vẫn có thể truy cập internet khi cá mập cắn cáp ngoài biển Đông, đúng không?
Nếu khắt khe theo đúng định nghĩa thì hệ thống Arduino + 5 relay bóng đèn thực chất chỉ là 1 thiết bị thông minh đơn thuần (Smart device) chứ chưa là IW vì chúng chưa có trao đổi thông tin 2 chiều giữa các phần tử với nhau, và điều kiện “Vạn” chưa được thỏa mãn. Do đó, ta thấy rằng chỉ dùng Arduino thôi thì chưa đủ. Điều quan trọng ở đây là IW cần các thiết bị độc lập hòa vào mạng lưới, chứ không phải là một thiết bị thông minh (Arduino, Pi) quản lý các thiết bị còn lại. Điều này đồng nghĩa với mỗi bóng đèn phải có microcontroller riêng và linh động trong giao tiếp. Nghe có vẻ xa xỉ quá phải không? Nhưng các bạn nên nhớ rằng nếu cáp quang ADSL một thời là xa xỉ phẩm nhưng nay đã được bình dân hóa thì chuyện mỗi bóng đèn gắn chip là điều hoàn toàn có thể trong 5, 10 năm tới đây.
IW để làm gì?
Câu trả lời rất đơn giản: để phục vụ cuộc sống của con người tốt đẹp hơn. Một trong những vấn đề mà loài người chúng ta phải đối mặt là năng lượng, và IW hy vọng là sẽ giúp chúng ta giải quyết vấn đề này một cách thông minh hơn. Ta lại quay lại với ví dụ Arduino và 5 bóng đèn relay. Hệ thống này giúp ta tiết kiệm năng lượng thế nào? Nó giúp cuộc sống ta trở nên thông minh hơn ra sao? Bước khởi đầu bạn có thể lập trình tắt chúng vào các giờ cố định lúc bạn đi học để tiết kiệm điện. Tuy nhiên, cao hơn nữa là bạn có thể “dạy” chúng nhận biết được khi nào bạn đi học về bằng việc thu thập dữ liệu bạn thường bật/tắt đèn khi nào, khoảng thời gian giữa các lần bật tắt là bao lâu, etc.
Ta thấy dữ liệu là một mảng còn phôi thai của IW, đặt biệt là Big Data và Artificial Intelligence (Dữ Liệu Lớn và Trí Tuệ Nhân Tạo). Phần lớn chúng ta vẫn loay hoay tìm cách sử dụng cho có hiệu quả các thông tin ta thu thập được từ các thiết bị, và IW chỉ cất cánh khi phần mềm phát triển kịp với phần cứng. Ta có thể thấy điều này qua Apple huyền thoại: Hệ sinh thái iPhone, iPad chỉ phát triển rực rỡ khi hệ thống phần mềm apps ra đời tận dụng phần cứng touchscreen, camera, accelerometer có sẵn trên thiết bị Apple. Bạn không thể nào tạo nên cuộc cách mạng chỉ với phần cứng được. Sản phẩm sáng tạo trí óc con người mới làm nên tất cả. Trong tương lai, tui hi vọng là cộng đồng chúng ta đi xa với mảng này hơn 1 xí. Khởi đầu rất đơn giản: chỉ cần chia sẻ 1 thuật toán nào đó giúp việc sử dụng Arduino bớt cứng nhắc nhưng lại giao tiếp thông minh hơn.
Cái nhìn thẳng thắn vào IW ở Việt Nam
Công bằng mà nói, việc ứng dụng IW ở Việt Nam vẫn đang loay hoay ở mức prototyping “tiền chế” và proof-of-concept “chứng tỏ sử dụng được”. Việc chúng ta đã phổ cập việc lập trình đóng mở relay nhấp nháy với các board Arduino UNO, MEGA là hết sức đáng mừng. Tuy nhiên tính ứng dụng bền vững IW thì chúng ta còn hạn chế rất nhiều. Bạn cắm Arduino vào tủ điện với hệ thống relay, chẳng lẽ mỗi lần lập trình lại bạn phải bắt thang leo lên cắm cái USB để nạp code? Việc sử dụng ethernet/wifi shield vẫn còn hạn hẹp và các thiết bị chưa thực sự hòa vào mạng internet. Điều này cũng có nghĩa là bạn chưa thể ở trường mà vẫn có thể điều khiển nông/trang trại của mình một cách hiệu quả, và các bài post lên diễn đàn nhắm đến demo lý thuyết, làm xong rồi tháo ra như chơi lego.
Việc kết nối mạng diện rộng năng lượng thấp cũng là một vấn đề chưa được quan tâm. Phần lớn các thiết bị mạng ta quen sử dụng như Wifi, Bluetooth, GPRS là các thiết bị băng thông lớn tiêu thụ rất nhiều điện năng. Nhưng các trụ đèn giao thông, máng nước nông trại không cần phải upload các video hàng trăm MB mỗi ngày mà chỉ cần 1,2 bit trạng thái bật/tắt hoặc 1,2 bytes dữ liệu. Do vậy, một đề xuất mới cho IW là sử dụng LoraWAN nhắm vào các “vật” không cần truyền tải nhiều thông tin, và chỉ cần vài cái router đặc biệt là đã có thể phủ sóng cả Saigon với mạng LoraWAN để cho các ứng dụng IW không tốn nhiều băng thông. Có lẽ phải đợi vài năm nữa thì công nghệ này mới về đến Việt Nam. Hình dưới là 1 UNO có gắn LoraWAN có thể kết nối IW trong bán kính 5-10km mà không dùng đến wifi/bluetooth.
Một ví dụ khác về năng lượng là 1 thiết bị IW khác từ Amazon với giá 5 Mỹ Cành có tên là Amazon Dash ở hình dưới. Hắn chạy core ARM có gắn wifi và chứa thông tin về 1 sản phẩm nào đó có bán trên Amazon. Chỉ cần bạn bấm 1 nút là Amazon sẽ giao hàng (bột giăt Tide chẳng hạn) cho bạn vài ngày sau đó. Mỗi thiết bị như vậy có chương trình quản lý năng lượng thông minh và bạn có thể bấm vài ngàn lần trước khi dùng hết 1 cục pin 3A. Sao bạn không thử chế 1 thiết bị tương tự với pro-micro hoặc pizero?
Ta quay lại với cộng đồng Arduino. Việc sử dụng thành công các board UNO, MEGA nhưng lại không đi xa hơn còn có một hệ lụy khác nguy hiểm hơn nữa, đó là chúng dẫn đến lối mòn tư duy ít tìm hiểu đến khía cạnh kết hợp và mở rộng phần cứng với phần mềm. Việc này thể hiện rất rõ qua các comment bài viết kết hợp giữa Arduino và Raspberry Pi. Ta cứ nghĩ rằng, microcontroller thì dùng Arduino, lập trình xử lí thì dùng thì dùng microprocessor của Raspberry Pi. Nước sông không phạm nước giếng. Đây là suy nghĩ ao làng hoàn toàn sai lầm, vì thực ra Arduino đã có thể chạy Linux và Python trên Arduino Yún từ những năm 2013. IW, xét cho cùng, là một sản phẩm của công nghệ thông tin, và bạn phải khai thác được thông tin mình có. Mà xử lý thông tin thì bạn không thể bắt microcontroller làm được, vì chúng sinh ra là chỉ để điều khiển chứ không để phân tích dữ liệu. Nắm bắt được điều này, các board đời mới của Arduino đều gắn chip ARM/Intel để tăng khả năng thông minh của board lên. Lằn ranh giữa microcontroller và microprocessor sẽ ngày càng thu hẹp. Các board Arduino thế hệ sau đều thường có 2 chip Linux/Intel chạy song song và trong tương lai gần, chắc chắn là Raspberry Pi sẽ có chức năng đọc/xuất analog. Công nghệ sẽ hội tụ để phục vụ IoT đúng nghĩa. Nếu chúng ta chỉ quan tâm đến phần cứng mà bỏ qua ứng dụng mạng và Linux thì khác nào anh thợ điện sửa cầu chì chỉ biết tháo lắp dây điện? Ngược lại, nếu chỉ biết lập trình mà bỏ qua phần cứng thì khác nào anh IT cài Win dạo, hư ổ cứng phải bưng nguyên thùng CPU ra tiệm sửa. Nếu đã chọn nghiệp IW thì phải vừa hồng vừa chuyên, cân hết phần mềm lẫn phần cứng.
Xa hơn nữa, việc chờ vào TQ nhái lại các board để "cứ hàng Tàu mà bốc" là điều hết sức tồi tệ. Chúng ta sẽ phải phụ thuộc vào hàng TQ, và phải đợi các bạn Tàu nhái xong rồi mới mày mò tìm hiểu, dẫn đến việc tụt hậu vài năm so với thế giới. Lỡ như các bạn Tàu nhái không xong thì ta cũng tịt. Với khía cạnh này, việc VNG chế tạo VBLUNO là rất đáng mừng vì chúng ta dần dần thoát khỏi làn sóng Arduino Tàu và tìm hướng đi riêng cho sản phẩm Việt. Các bạn cố gắng viết bài giành giải VBLUNO (hình dưới) trong tuần thứ 3 nha! Người Việt xài hàng Việt.
Một vài gợi ý:
-
Đi khỏi lối mòn: Luôn đặt ra câu hỏi “Tại sao?” và “Động cơ của bạn là gì”. Bạn thấy người ta giải quyết vấn đề bằng phương pháp A thì đặt câu hỏi theo kiểu “Giải quyết theo phương án B được không?”. Tui thấy mấy bạn nói Arduino không thể đi cùng Pi, tui viết liền “Có thể đi chung được không?”.
-
Học về giao tiếp wifi và bluetooth: Đơn giản là hai anh bạn này vẫn sẽ thống trị IW trong tương lai.
-
Quan tâm nhiều hơn đến thuật toán: Sao y code ban đầu không sai. Nhưng đến lúc bạn viết phần mềm cho riêng mình thì nên cũng dành thời gian suy nghĩ 1 chút. Bạn nhìn lại cái hình demo cho đồng hồ neopixel xem, tại sao số 3 và số 9 đổi vị trí? Tui chế lại cho đồng hồ chạy ngược chiều kim đó. Bạn nào tinh mắt nhìn vào đoạn code xem thử chỗ nào là hoán vị chiều kim rồi inbox tui, tui sẽ gửi đến 1 module Neopixel cho bạn trả lời sớm nhất.