- LoRaWAN yêu cầu một cổng kết nối được cấu hình đúng cách (tần số, mạng IP, máy chủ) và được đăng ký với TTN để các nút có thể giao tiếp.
- Các thiết bị đầu cuối được đăng ký trong ứng dụng TTN bằng cách sử dụng DevEUI, JoinEUI/AppEUI và AppKey (OTAA) hoặc NWKSKEY/APPSKEY/DEVADDR (ABP).
- Có thể sử dụng các cảm biến thương mại (SenseCAP, Decentlab, Dragino, Tabs) hoặc các module tự chế với ESP32/Arduino và thư viện LMIC để gửi dữ liệu đến TTN.
- TTN hỗ trợ tích hợp với Node-RED và các nền tảng bên ngoài để trực quan hóa và khai thác dữ liệu IoT được thu thập bởi mạng LoRaWAN.
Nếu bạn đã đọc đến đây, đó là vì bạn muốn biết cách kết nối một nút LoRaWAN với TTN từ đầu đến cuối , không bỏ sót bất cứ bước nào: cổng kết nối, các nút, cảm biến, thư viện, khóa và cấu hình mạng. Tin tốt là bạn không cần phải là chuyên gia viễn thông; với một hướng dẫn được cấu trúc tốt và một chút kiên nhẫn, bạn có thể thiết lập mạng LoRaWAN hoạt động của riêng mình một cách nhanh chóng.
Trong những dòng tiếp theo, bạn sẽ thấy từng bước cách thiết lập cổng kết nối, đăng ký nó trên The Things Network, thêm ứng dụng và thiết bị đầu cuối, và lập trình các nút LoRaWAN dựa trên bo mạch ESP32 hoặc Arduino, cũng như các ví dụ với các cảm biến thương mại (SenseCAP, Decentlab, Dragino, Tabs Browan). Chúng ta cũng sẽ đề cập đến các chi tiết thực tế không phải lúc nào cũng có trong sách hướng dẫn: các sự cố thường gặp về khóa, lựa chọn tần số, kết nối chân vật lý và các thủ thuật để xác minh rằng mọi thứ thực sự đang giao tiếp với TTN.
LoRa và LoRaWAN là gì, và tại sao lại sử dụng TTN?
LoRa và LoRaWAN là hai khái niệm có liên quan nhưng không giống nhau . LoRa là công nghệ điều chế tần số vô tuyến tầm xa, công suất thấp độc quyền của Semtech. LoRaWAN là giao thức mạng dựa trên LoRa để quản lý cách các thiết bị đầu cuối (các nút) giao tiếp với các cổng và máy chủ mạng.
Trong một mạng LoRaWAN điển hình, có hai thành phần chính: cổng (gateway) và các nút (node ). Cổng hoạt động như "cầu nối" giữa thế giới LoRa (vô tuyến) và thế giới IP (internet), chuyển tiếp các gói dữ liệu đến máy chủ LoRaWAN. Các nút là các cảm biến hoặc thiết bị chấp hành gửi và nhận thông tin bằng LoRa đến và từ các cổng này.
Để kết nối tất cả những thứ này, bạn cần một máy chủ LoRaWAN. Bạn có thể trả phí cho một dịch vụ tư nhân (các nhà mạng như Movistar, Vodafone, hoặc các nền tảng như Loriot, Actility, Kerlink) hoặc sử dụng mạng lưới cộng đồng The Things Network (TTN), một mạng lưới công cộng, mở được duy trì bởi cộng đồng.
TTN có ưu điểm là tôn trọng quản trị dữ liệu, trung lập và cho phép bạn đóng góp các cổng kết nối vào mạng . Tại nhiều thành phố, người dân đang tự nguyện lắp đặt các cổng kết nối, và bất kỳ ai cũng có thể hưởng lợi từ vùng phủ sóng này mà không mất phí nào ngoài chi phí phần cứng của các nút mạng.
Tần số, kênh và giới hạn của LoRaWAN
Trước khi mua bất kỳ thiết bị nào, điều quan trọng là phải đảm bảo tần số LoRa tương thích với khu vực của bạn . Hoạt động ở châu Âu không giống như hoạt động ở Hoa Kỳ hoặc châu Á; nếu bạn chọn sai băng tần, thiết bị có thể trở nên vô dụng hoặc thậm chí bất hợp pháp.
Tại châu Âu, băng tần 868 MHz (EU868) được sử dụng chủ yếu . Tại Hoa Kỳ, băng tần thông dụng là 915 MHz (US915). Các nhà bán lẻ Trung Quốc cung cấp nhiều loại mô-đun 433 MHz, có thể hấp dẫn bởi giá cả, nhưng chúng không phải lúc nào cũng tương thích với LoRaWAN hoặc hệ điều hành của quốc gia bạn.
Ngoài tần số, LoRaWAN còn được tổ chức theo kênh, hệ số trải phổ (SF) và kế hoạch tần số . SF xác định tốc độ và phạm vi: SF càng cao thì phạm vi càng rộng nhưng cũng tốn nhiều thời gian hơn trên không, dẫn đến tiêu thụ nhiều năng lượng hơn và chiếm nhiều không gian kênh hơn.
Tại châu Âu, quy tắc "1%" nổi tiếng được áp dụng : mỗi thiết bị chỉ được phép chiếm dụng kênh vô tuyến trong một tỷ lệ thời gian nhỏ, thường là khoảng 1%. Điều này giới hạn tần suất gửi dữ liệu và là một trong những lý do tại sao các cảm biến LoRaWAN thường truyền dữ liệu vài phút một lần, chứ không phải vài giây một lần.
Chuẩn bị và lựa chọn phần cứng cho cổng và các nút mạng
Để thiết lập một mạng lưới hoạt động hiệu quả, bạn sẽ cần ít nhất một cổng LoRaWAN và một hoặc nhiều nút (cảm biến) . Bạn có thể kết hợp phần cứng từ các nhà sản xuất khác nhau, miễn là chúng tuân thủ tiêu chuẩn LoRaWAN và hoạt động trên cùng một dải tần số.
Một mẫu gateway trong nhà phổ biến là Dragino LPS8 , tích hợp bộ tập trung SX1308 và hỗ trợ tối đa 10 kênh song song. Thiết bị được cấu hình sẵn với các kế hoạch tần số khác nhau tùy thuộc vào quốc gia, và ở châu Âu, nó hoạt động ở tần số 868 MHz. Thiết bị được cấp nguồn 5V qua USB-C và kết nối với mạng IP qua RJ-45 hoặc Wi-Fi.
Một số ví dụ khác về các thiết bị cổng kết nối hoạt động tốt với TTN bao gồm RAK7289 (dành cho ngoài trời, bền chắc và có tùy chọn LTE/4G) hoặc các thiết bị cổng kết nối TTN-GW-868 MHz chính thức, được thiết kế để triển khai vùng phủ sóng trong các thành phố hoặc các dự án Thành phố Thông minh. Cũng có thể xây dựng một thiết bị cổng kết nối đơn cell với bo mạch ESP32 và mô-đun LoRa SX1262 , như đã được thực hiện với bộ kit Wio-SX1262 và Xiaomi ESP32S3.
Với vai trò là các nút mạng, bạn có hai lựa chọn: sử dụng các cảm biến thương mại đã sẵn sàng cho LoRaWAN (SenseCAP S210x, Tabs Browan TBHH100, Dragino TrackerD, Decentlab, v.v.) hoặc tự xây dựng các nút mạng của riêng mình bằng các bo mạch phát triển như TTGO LoRa32 V2.0, ESP32 + RMF95, Arduino + mô-đun LoRa, v.v.
Cấu hình cổng LoRaWAN và kết nối nó với TTN.
Bước quan trọng đầu tiên trong dự án là thiết lập và vận hành cổng kết nối, đồng thời hiển thị trạng thái "Đã kết nối" trên TTN . Mặc dù mỗi nhà sản xuất có bảng điều khiển riêng, nhưng các bước thực hiện về cơ bản rất giống nhau.
Ví dụ, với Dragino LPS8, bạn có thể quản lý nó qua SSH hoặc HTTP . Nếu kết nối bằng cáp RJ-45, bạn cần tìm địa chỉ IP được máy chủ DHCP cấp phát (sử dụng phần mềm quét IP hoặc thông qua bộ định tuyến). Nếu bạn muốn thiết lập ban đầu qua Wi-Fi, LPS8 sẽ tạo mạng riêng với SSID dạng “dragino-xxxxx” và mật khẩu mặc định dạng “dragino+dragino”. Truy cập địa chỉ IP 10.130.1.1 sẽ đưa bạn đến bảng điều khiển web, nơi tên người dùng và mật khẩu ban đầu thường là “admin/dragino”.
Khi vào hệ thống, bạn sẽ thấy một menu với nhiều mục, và một số tùy chọn có thể có dấu chéo màu đỏ cho biết cấu hình bị thiếu . Bước đầu tiên là chọn gói tần số phù hợp với khu vực của bạn trong tab LoRa; ở châu Âu, đó là EU868 (khoảng 868 MHz).
Tiếp theo, chạm vào tab LoRaWAN hoặc Network Server . Tại đây, bạn sẽ xác định máy chủ LoRaWAN mà gateway sẽ kết nối đến. Đối với TTN, hãy chọn "TTN" làm nhà cung cấp và nhập địa chỉ của máy chủ châu Âu (ví dụ: eu1.cloud.thethings.network), giữ nguyên các cổng UDP (thường là 1700 cho cả tải lên và tải xuống). Trong cùng phần đó, bạn sẽ thấy Gateway ID hoặc EUI, mà chúng ta sẽ cần sau này trong TTN.
Trong mục Mạng, bạn cấu hình cách thiết bị gateway kết nối với internet : LAN, WAN hoặc Wi-Fi WAN. Đối với giao diện WAN, bạn có thể chọn địa chỉ IP tĩnh hoặc DHCP; nếu có thể, nên sử dụng địa chỉ IP tĩnh qua kết nối có dây để có kết nối ổn định hơn và dễ quản lý hơn. Mục LAN thường được sử dụng cho mạng điểm truy cập nội bộ của gateway; tốt nhất là không nên thay đổi cài đặt này nếu chưa hiểu rõ những gì mình đang làm, vì nó có thể gây ra sự cố nghiêm trọng nếu có vấn đề xảy ra.
Trong phần WiFi, bạn có thể điều chỉnh cả điểm truy cập do chính thiết bị gateway tạo ra và kết nối của nó với mạng WiFi bên ngoài . Để đảm bảo an toàn, bạn nên thay đổi SSID và mật khẩu mặc định của điểm truy cập được cài đặt sẵn từ nhà sản xuất.
Trên các gateway RAK7289, quy trình tương tự: truy cập bảng điều khiển web, cấu hình địa chỉ IP (tĩnh hoặc DHCP) thông qua Mạng → Giao diện WAN , sau đó, trong Mạng LoRa → Cài đặt mạng → Bộ chuyển tiếp gói, nhập thông tin chi tiết máy chủ TTN và ghi lại EUI của Gateway để đăng ký với TTN sau này. Nếu bạn đang ở phía sau bộ định tuyến cung cấp DHCP, bạn có thể xác định địa chỉ IP của gateway bằng cách xem bảng cho thuê (theo tên máy chủ, ví dụ: "RAK7289") hoặc sử dụng các công cụ như nmap.
Đăng ký cổng thanh toán trên The Things Network
Sau khi cổng kết nối có truy cập internet, bạn cần đăng ký nó với TTN . Nếu bạn chưa có tài khoản, trước tiên hãy đăng ký trên trang web The Things Network và sau đó truy cập Bảng điều khiển trong khu vực tương ứng (ví dụ: https://eu1.cloud.thethings.network/).
Trong bảng điều khiển, chọn mục Gateways và nhấp vào “Register gateway” . TTN sẽ yêu cầu ID Gateway (một tên duy nhất trong tài khoản của bạn) và, tùy thuộc vào loại gateway, Gateway EUI. Đối với các gateway Dragino LPS8 sử dụng bộ chuyển tiếp gói cổ điển, bạn phải chọn tùy chọn “I’m using the legacy packet forwarder”.
Ngoài ra, bạn sẽ chỉ định gói tần số (EU868 cho Châu Âu) , khu vực hoặc bộ định tuyến tương ứng, và tùy chọn, vị trí (tọa độ, trong nhà/ngoài trời, v.v.). Trên các thiết bị gateway như thiết bị một cell sử dụng XIAO ESP32S3 và Wio-SX1262, phần mềm có thể hiển thị ID Gateway thông qua cổng nối tiếp khi khởi động; chỉ cần sao chép ID này và sử dụng nó trong biểu mẫu đăng ký.
Sau khi hoàn tất thông tin này và đăng ký cổng, TTN sẽ hiển thị bộ kiểm tra trạng thái (“Đã kết nối” hoặc “Đã ngắt kết nối”) và phần “Lưu lượng” nơi bạn có thể xem luồng gói tin theo thời gian thực. Nếu mọi thứ được cấu hình chính xác trên cả cổng và TTN, bạn sẽ thấy trạng thái chuyển sang “Đã kết nối” trong vòng một hoặc hai phút và bắt đầu thấy lưu lượng khi các nút đang truyền dữ liệu.
Điều này có nghĩa là cơ sở hạ tầng (cổng kết nối + máy chủ) hiện đã hoạt động . Từ đây, việc cấu hình các ứng dụng và thiết bị đầu cuối sẽ được thực hiện.
Tạo ứng dụng và đăng ký nút trong TTN
Trong TTN, các thiết bị không được đăng ký trực tiếp ở cấp độ gốc của tài khoản, mà được đăng ký trong các ứng dụng . Một ứng dụng nhóm một hoặc nhiều thiết bị gửi dữ liệu liên quan, ví dụ: tất cả các cảm biến môi trường trong một tòa nhà, hoặc một số thiết bị theo dõi GPS trong một dự án giáo dục.
Trong giao diện TTN, hãy vào mục Ứng dụng và tạo một ứng dụng mới . Đặt cho ứng dụng một ID duy nhất, có thể thêm mô tả (nếu muốn) và chọn khu vực phù hợp. Trong ứng dụng đó, bạn sẽ đăng ký từng nút LoRaWAN với thông tin xác thực của nó (DevEUI, JoinEUI/AppEUI và AppKey hoặc các khóa khác tùy thuộc vào phương thức kích hoạt).
Đối với các cảm biến thương mại như cảm biến nhiệt độ và độ ẩm Browan TBHH100-868 , thường có một nhãn dán kèm theo các thông tin DevEUI, AppEUI và AppKey. Chúng thường sử dụng phương pháp OTAA (Kích hoạt qua mạng không dây), tạo ra các phiên khóa mỗi khi kết nối mạng, giúp bảo mật hơn so với ABP.
Với OTAA, trong TTN, bạn chọn đăng ký thiết bị đầu cuối mới, nhập JoinEUI (AppEUI), DevEUI và AppKey , xác minh dữ liệu và xác nhận. Sau khi lưu, nếu thiết bị được cấu hình chính xác và nằm trong phạm vi của cổng, nó sẽ nhận diện các tín hiệu mạng, thực hiện quy trình tham gia và bạn sẽ bắt đầu thấy các thông báo đường lên cùng với các phép đo của chúng trong bảng điều khiển.
Điều tương tự cũng áp dụng cho các cảm biến như cảm biến độ cao và nhiệt độ của Decentlab : nhà sản xuất cung cấp ID, DevEUI, AppEUI và AppKey, nhưng không biết trước bạn sẽ sử dụng máy chủ nào. Bạn chịu trách nhiệm đăng ký thông tin này với TTN (hoặc máy chủ khác) để cảm biến có thể được đăng ký. Nhiều thiết bị Decentlab đã được đăng ký sẵn với TTN nếu bạn yêu cầu, điều này giúp đơn giản hóa quy trình hơn nữa.
Cấu hình các cảm biến LoRaWAN thương mại
Hãy cùng xem xét một số ví dụ cụ thể về cách chuẩn bị và đăng ký các cảm biến LoRaWAN thương mại , sau đó chúng sẽ giao tiếp với TTN thông qua cổng kết nối của bạn.
Trong dòng sản phẩm SenseCAP S210x (ví dụ: cảm biến môi trường), quy trình làm việc thông thường là sử dụng ứng dụng SenseCraft của nhà sản xuất . Đầu tiên, bạn tải ứng dụng xuống, bật cảm biến bằng nút bấm (bằng cách giữ nút trong vài giây cho đến khi đèn LED nhấp nháy mỗi giây), sau đó trong ứng dụng, bạn chọn "Quét" để đọc mã QR của thiết bị.
Trong ứng dụng, có chế độ "Cấu hình nâng cao" nơi bạn chọn "The Things Network" làm nền tảng . Bạn phải chọn cùng gói tần số với cổng kết nối của mình (ví dụ: EU868) và xác minh rằng chế độ tham gia là OTAA. Ứng dụng sẽ hiển thị Device EUI, AppEUI (JoinEUI) và AppKey; bạn nên ghi lại những thông tin này vì bạn sẽ cần nhập chúng vào TTN khi đăng ký thiết bị.
Đối với cảm biến Tabs Browan TBHH100-868 , các khóa đã được cấu hình sẵn từ nhà máy. Cảm biến này đo nhiệt độ và độ ẩm, được cấp nguồn bằng pin 3,6V và truyền dữ liệu theo các quy tắc sau: cứ sau 60 phút nếu không có thay đổi, hoặc sớm hơn nếu nhiệt độ thay đổi ±2°C hoặc độ ẩm thay đổi ±5%. Để đăng ký, chỉ cần nhập APPKey, APPEUI và DevEUI do nhà sản xuất cung cấp vào máy chủ LoRaWAN của bạn (ví dụ: TTN). Đôi khi có thể xảy ra sự cố với định dạng hoặc thứ tự byte (msb/lsb), vì vậy điều quan trọng là phải kiểm tra điều này nếu nó không kết nối được lần đầu tiên.
Các thiết bị Dragino TrackerD được sử dụng như thiết bị theo dõi GPS có nút báo động khẩn cấp. Mỗi thiết bị có bộ khóa LoRaWAN riêng. Trong TTN, các khóa này thường được đăng ký trong cùng một ứng dụng (ví dụ: "course-tracking"), và thiết bị được cấu hình, nếu cần, thông qua cổng nối tiếp (USB) bằng các lệnh AT. Tài liệu mô tả chi tiết các lệnh để điều chỉnh tốc độ truyền, hành vi báo động, v.v. Quan trọng: Nhiều firmware của Dragino yêu cầu phải dán toàn bộ lệnh AT vào terminal, chứ không phải gõ từng ký tự một.
Đối với các cảm biến như cảm biến mức, áp suất hoặc môi trường của Decentlab , nguyên tắc hoạt động cũng tương tự: DevEUI, AppEUI và AppKey được sử dụng để kết nối chúng với TTN (hoặc mạng khác). Decentlab thường thiết lập khoảng thời gian truyền dữ liệu là 10 phút vì đây là sự thỏa hiệp đã được chứng minh giữa mức tiêu thụ dữ liệu và độ phân giải, mặc dù điều này có thể được sửa đổi theo yêu cầu hoặc thông qua cấu hình. Người dùng có thể xem dữ liệu trên nền tảng đám mây của nhà sản xuất hoặc tích hợp thiết bị vào các nền tảng của bên thứ ba (MyDevices, ResIoT, WMW, v.v.) bằng cách thêm bộ giải mã tải trọng phù hợp.
Tự xây dựng nút LoRaWAN của riêng bạn với phần cứng mã nguồn mở.
Nếu bạn thích mày mò, điều thú vị nhất thường là tự xây dựng và lập trình nút LoRaWAN của riêng mình . Một sự kết hợp rất phổ biến là sử dụng bo mạch dựa trên ESP32 tích hợp LoRa, chẳng hạn như TTGO LoRa32 V2.0 868 MHz, và thêm một cảm biến đơn giản, ví dụ như cảm biến nhiệt độ DS18B20.
Phương pháp này yêu cầu bốn thành phần: bo mạch điều khiển (ESP32, Arduino, v.v.), mô-đun radio LoRa (ví dụ: loại RFM95 SX1276/78), cảm biến cần đo và tùy chọn thêm các thiết bị ngoại vi như màn hình OLED để hiển thị dữ liệu cục bộ.
TTGO LoRa32 V2.0 tích hợp bộ thu phát LoRa và, tùy thuộc vào phiên bản, có thêm màn hình OLED nhỏ. Dựa trên ESP32, nó cung cấp WiFi và Bluetooth, và trong nhiều trường hợp, nó cũng hoàn hảo để xây dựng một cổng mini một kênh khi kết nối với internet. Tuy nhiên, trên bo mạch này và các bo mạch tương tự, một số tín hiệu từ mô-đun LoRa (DIO1, DIO2) không được nối dây sẵn đến vi điều khiển , và bạn sẽ phải tự nối dây chúng.
Ví dụ, TTGO LoRa32 V2.0 thường sử dụng sơ đồ chân sau cho LoRa: SCK trên GPIO5, MISO trên GPIO19, MOSI trên GPIO27, CS trên GPIO18, RESET trên GPIO14 và DIO0 trên GPIO26 . DIO1 và DIO2 thường được kết nối vật lý với GPIO33 và GPIO32 tương ứng, nằm đối diện nhau trên hàng đối diện, giúp việc sử dụng cầu nối trực tiếp rất dễ dàng.
Có ba cách thông thường để thực hiện các kết nối này: hàn dây trực tiếp vào các chân (để lắp ráp cuối cùng), sử dụng dây nối nếu bo mạch được đặt trên bảng mạch thử nghiệm , hoặc dẫn các kết nối lên một bo mạch in chuyên dụng mà TTGO được cắm vào. Phương án sử dụng dây nối thường là thuận tiện nhất cho việc thử nghiệm.
Phần mềm nút mạng: Thư viện LMIC, tần số và khóa TTN
Để lập trình một nút LoRaWAN trên Arduino/ESP32, thư viện MCCI LoRaWAN LMIC được sử dụng rộng rãi , thư viện này triển khai ngăn xếp LoRaWAN và quản lý mọi thứ liên quan đến kênh, tham gia, thử lại, cửa sổ nhận, v.v.
Đầu tiên, hãy cài đặt thư viện từ Trình quản lý thư viện của Arduino IDE bằng cách tìm kiếm "LMIC" và chọn "Thư viện MCCI LoRaWAN LMIC". Sau khi cài đặt xong, có một chi tiết quan trọng: theo mặc định, nó được cấu hình cho US915 (Hoa Kỳ), vì vậy nếu bạn ở Châu Âu, bạn phải thay đổi nó thành EU868.
Để thực hiện việc này, hãy tìm tệp lmic_project_config.h trong thư mục thư viện (ví dụ: /Arduino/libraries/MCCI_LoRaWAN_LMIC_library/project_config/) và chỉnh sửa các định nghĩa. Bỏ chú thích CFG_us915 và bật CFG_eu868, đồng thời đảm bảo loại radio chính xác được bật (ví dụ: CFG_sx1276_radio cho module SX1276/78). Đây là thay đổi một lần duy nhất áp dụng cho tất cả các dự án LMIC của bạn.
Sau đó, bạn mở một trong các ví dụ đi kèm, chẳng hạn như ttn-abp , ví dụ này định kỳ gửi "Hello, world!" làm dữ liệu. Ví dụ này đóng vai trò là cơ sở để bạn điều chỉnh cho phù hợp với bo mạch và thông tin đăng nhập TTN của mình.
Trong mã nguồn, bạn sẽ thấy cấu trúc lmic_pinmap chỉ định các chân NSS (CS), RST và DIO . Theo mặc định, nó thường được ánh xạ cho Feather M0 LoRa, vì vậy nếu bạn đang sử dụng TTGO LoRa32 V2.0, bạn cần thay đổi cấu trúc này để sử dụng .nss = 18, .rst = 14 và .dio = {26, 33, 32} (giả sử bạn đã nối DIO1 với GPIO33 và DIO2 với GPIO32). Nếu phần cứng của bạn khác, bạn cần tham khảo tài liệu của nó hoặc tìm một ví dụ cụ thể.
Sau khi xác định đúng sơ đồ chân, đã đến lúc cấu hình các khóa xác định nút của bạn trong TTN . Trong ví dụ ttn-abp, các biến NWKSKEY, APPSKEY và DEVADDR xuất hiện cùng với từ FILLMEIN để bạn có thể điền giá trị của mình vào.
Bạn nhận được dữ liệu này từ bảng điều khiển TTN khi tạo thiết bị với kích hoạt ABP. TTN cung cấp cho bạn Khóa phiên mạng (NWKSKEY), Khóa phiên ứng dụng (APPSKEY) và Địa chỉ thiết bị (DEVADDR) . Trong giao diện, các khóa này được ẩn vì lý do bảo mật, nhưng bạn có thể hiển thị chúng và, hữu ích hơn, sao chép trực tiếp giá trị dưới dạng mảng C (sử dụng nút "<>") với thứ tự byte chính xác (msb). Nhấp vào biểu tượng sao chép sẽ sao chép mảng vào clipboard, và bạn chỉ cần dán nó vào mã của mình tại vị trí của mỗi FILLMEIN.
Đối với NWKSKEY và APPSKEY, bạn sẽ sử dụng định dạng mảng byte do TTN cung cấp , trong khi đối với DEVADDR, bạn sẽ đặt giá trị thập lục phân dưới dạng một số nguyên duy nhất thuộc loại u4_t, ví dụ: `static const u4_t DEVADDR = 0x26011111;`. Với cách này, nút của bạn sẽ có thể xác thực và định tuyến các gói tin của nó đến ứng dụng TTN của bạn.
Tích hợp các cảm biến vào mã nút.
Sau khi hệ thống LoRaWAN hoạt động, đã đến lúc thay thế câu lệnh "Hello, world!" thông thường bằng dữ liệu cảm biến thực tế . Tiếp tục với ví dụ về TTGO LoRa32 và DS18B20, bạn sử dụng bus OneWire và thư viện DallasTemperature.
Ở đầu đoạn mã, hãy bao gồm các tệp tiêu đề và định nghĩa chân bus: `#include <OneWire.h>`, `#include <DallasTemperature.h>`, và `#define ONE_WIRE_BUS X` , trong đó X là chân GPIO mà bạn đã kết nối cảm biến. Tạo đối tượng `OneWire` `oneWire(ONE_WIRE_BUS)` và đối tượng `DallasTemperature` `sensor(&oneWire). Nếu bạn chưa cài đặt thư viện DS18B20, hãy thêm nó từ trình quản lý thư viện.
Trong hàm setup(), bạn khởi tạo cảm biến bằng sensor.begin() và, nếu muốn, thiết lập độ phân giải (ví dụ: sensor.setResolution(11)) . Từ đó trở đi, cảm biến đã sẵn sàng để đọc nhiệt độ khi bạn cần.
Chức năng chính trong LMIC để gửi dữ liệu là `do_send(osjob_t* j)`. Bên trong, bạn sẽ thấy một kiểm tra xem có đang diễn ra quá trình truyền dữ liệu nào không (`OP_TXRXPEND`). Nếu không có, bạn gọi `sensor.requestTemperatures()`, lấy giá trị bằng `sensor.getTempCByIndex(0)` và lưu trữ nó trong mảng `mydata`. Ví dụ, bạn có thể sử dụng `mydata[0] = (uint8_t)sensor.getTempCByIndex(0);` để chỉ gửi phần nguyên.
Sau đó, bạn gọi hàm LMIC_setTxData2(1, mydata, sizeof(mydata), 0) , trong đó tham số đầu tiên là cổng LoRaWAN (1 trong trường hợp này), tham số thứ hai là bộ đệm, tham số thứ ba là kích thước, và tham số cuối cùng cho biết liệu thông báo đã được xác nhận (1) hay chưa được xác nhận (0). Thư viện sau đó sẽ lên lịch truyền tải trong khe thời gian khả dụng tiếp theo.
Có rất nhiều cải tiến khả thi: mở rộng tải trọng để bao gồm dữ liệu thập phân, thêm các cảm biến khác, đóng gói dữ liệu ở định dạng nhị phân hiệu quả , v.v. Nhưng ngay cả trong phiên bản đơn giản này, bạn đã có một nút mạng định kỳ gửi các phép đo thời gian thực đến TTN, hiển thị trên bảng điều khiển và sẵn sàng tích hợp với các hệ thống khác.
Kích hoạt OTAA, bảo mật và kinh nghiệm thực tiễn
Cho đến nay, chúng ta chủ yếu thảo luận về ABP cho các ví dụ mã, nhưng trong môi trường sản xuất, việc sử dụng OTAA (Kích hoạt qua mạng) được khuyến nghị mạnh mẽ . OTAA là phương pháp được sử dụng bởi, ví dụ, các cảm biến Decentlab và nhiều cảm biến SenseCAP, vì nó tăng cường bảo mật.
Với OTAA, phiên LoRaWAN được thiết lập "trên không" mỗi khi thiết bị tham gia mạng . Khi thiết bị bị tắt nguồn, khởi động lại hoặc mất kết nối, các khóa phiên mới sẽ được tạo ra vào lần kết nối tiếp theo, khiến việc sao chép thiết bị bằng cách sao chép các khóa tĩnh trở nên khó khăn hơn.
Trong bảng điều khiển TTN, khi bạn chọn OTAA cho một thiết bị, thay vì các khóa tĩnh NWKSKEY và APPSKEY, bạn sẽ thấy DevEUI, JoinEUI/AppEUI và AppKey . Các khóa phiên được tạo ra mỗi lần từ các giá trị này và quá trình trao đổi với máy chủ, và bạn chỉ thấy các khóa được tạo ra trong suốt thời gian phiên hoạt động.
Trên thực tế, những người dùng mới bắt đầu sử dụng LoRaWAN nhận thấy rằng với một gateway được đăng ký với TTN và một cảm biến OTAA được cấu hình đúng cách, quá trình đăng ký có thể rất đơn giản : tạo tài khoản trên TTN, kích hoạt gateway, đăng ký cảm biến bằng các khóa do nhà sản xuất cung cấp, và chỉ trong vài phút có thể xem dữ liệu trên nền tảng web (cho dù đó là nền tảng của Decentlab, SenseCAP hay các bảng điều khiển của bên thứ ba).
Các yếu tố như vị trí đặt hộp LoRa của cảm biến (tốt nhất là ở vị trí thẳng đứng, giúp tối ưu hóa kiểu bức xạ của ăng-ten bên trong) , môi trường sóng vô tuyến và chiều cao của cổng kết nối ảnh hưởng rất lớn đến phạm vi phủ sóng thực tế, nhưng quy trình thiết lập khá đơn giản sau khi đã hiểu rõ.
Từ TTN đến các ứng dụng của bạn: tích hợp và trực quan hóa
Sau khi các node đã tải dữ liệu lên TTN, bước tiếp theo là đưa thông tin đó vào các ứng dụng, bảng điều khiển hoặc quy trình tự động hóa của riêng bạn . TTN cung cấp các tích hợp mạnh mẽ và API cho việc này.
Một phương pháp rất phổ biến là sử dụng Node-RED để nhận dữ liệu từ TTN và xử lý dữ liệu theo yêu cầu . Bạn cấu hình kết nối MQTT hoặc HTTP với thông tin đăng nhập ứng dụng TTN của mình, giải mã dữ liệu (theo định dạng của cảm biến), và từ đó bạn có thể làm hầu hết mọi thứ: lưu vào cơ sở dữ liệu, hiển thị biểu đồ, kích hoạt cảnh báo, v.v.
Một lựa chọn khác là sử dụng các nền tảng của bên thứ ba đã tích hợp sẵn với TTN , chẳng hạn như Datacake, MyDevices, ResIoT, WMW và các nền tảng khác. Nhiều nền tảng trong số này đã có các mẫu cụ thể cho các thiết bị như cảm biến Decentlab hoặc một số mẫu Dragino, vì vậy bạn chỉ cần chọn loại thiết bị, liên kết nó với ứng dụng TTN của mình và bắt đầu xem dữ liệu trên các bảng điều khiển thân thiện với người dùng.
Ví dụ, trong các dự án giáo dục, TTN đã được sử dụng kết hợp với các thiết bị định vị RAK7289 và thiết bị theo dõi Dragino TrackerD để định vị người hoặc phương tiện. Quy trình làm việc như sau: thiết bị định vị được đăng ký, thiết bị theo dõi được đăng ký trong TTN, dữ liệu được xem trên bảng điều khiển, và sau đó được hiển thị theo thời gian thực trên bảng điều khiển Datacake công khai với bản đồ và biểu đồ hiển thị vị trí, mức pin, v.v.
Điều quan trọng cần hiểu là TTN hoạt động như một lớp mạng LoRaWAN và bộ định tuyến dữ liệu ; bạn quyết định lớp ứng dụng và lớp hiển thị: từ một kịch bản Python sử dụng API đến một nền tảng dữ liệu IoT công nghiệp.
Tóm lại, việc kết nối một nút LoRaWAN với TTN bao gồm một số bước (tần số chính xác, cấu hình cổng đúng cách, đăng ký TTN, khóa nút, kích hoạt OTAA hoặc ABP, phần mềm thiết bị và, nếu muốn, các tích hợp tiếp theo), nhưng mỗi phần đều có thể thực hiện được ngay cả khi không có kinh nghiệm trước đó nếu tuân theo đúng hướng dẫn. Sau khi thiết lập ban đầu hoàn tất, việc triển khai thêm các nút hoặc cổng trở thành một quy trình có tính lặp lại và khả năng mở rộng cao, hoàn hảo cho các dự án cảm biến quy mô lớn, các sáng kiến Thành phố Thông minh hoặc đơn giản là để học hỏi và thử nghiệm với IoT tầm xa.