- Microsoft Azure IoT Hub là gì?
- Tạo Trung tâm Azure IoT
- Các thành phần cần thiết để xây dựng mạch thử nghiệm của chúng tôi cho Azure IoT với Raspberry Pi
- Azure IoT với Raspberry Pi - Sơ đồ phần cứng
- Lập trình Raspberry Pi để xuất bản dữ liệu trên Azure IoT Hub
- Xuất bản dữ liệu trên Azure IoT Hub - Thử nghiệm
Azure IoT Hub, dịch vụ điện toán đám mây của Microsoft cho phép các nhà phát triển kết nối, giám sát và quản lý hàng tỷ thiết bị IoT trên một nền tảng duy nhất. Nó đã được sử dụng trong các ứng dụng IoT khác nhau như hệ thống tự động hóa gia đình, hệ thống an ninh, giám sát và giám sát. Để chứng minh khả năng của trung tâm Azure IoT, chúng tôi sẽ xây dựng một mạch nhỏ với Raspberry Pi, Cảm biến nhiệt độ và độ ẩm DHT11, để xử lý dữ liệu cảm biến với nó. Cuối cùng, chúng tôi sẽ xuất bản dữ liệu cảm biến lên máy chủ Azure IoT bằng giao thức MQTT. Trong hướng dẫn này, chúng ta sẽ học cách thiết lập và cấu hình máy chủ Azure và gửi dữ liệu bằng Raspberry Pi.
Microsoft Azure IoT Hub là gì?
Azure IoT Hub là một tập hợp các dịch vụ được quản lý có thể kết nối, giám sát và điều khiển các thiết bị IoT. Nó cũng bao gồm giao tiếp an toàn cho các thiết bị, với trực quan hóa và phân tích dữ liệu giúp các nhà sản xuất thiết bị xây dựng, triển khai và quản lý các ứng dụng IoT với sự trợ giúp của đám mây Azure . Dữ liệu đo từ xa Device-to-Cd của Azure IoT Hub cho phép chúng tôi biết về trạng thái của các thiết bị IoT được kết nối và thông báo Cloud-to-Device cho phép chúng tôi gửi lệnh và thông báo đến các thiết bị được kết nối. Một ví dụ có thể như, bằng cách sử dụng hệ thống tự động hóa nhà thông minh, chúng tôi có thể thu thập các dữ liệu cảm biến khác nhau và gửi chúng đến Azure IoT Hub để trực quan hóa, lưu trữ và quản lý chúng. Chúng tôi cũng có thể kiểm soát các thiết bị đầu ra từ giao diện Azure IoT Hub.
Trung tâm trung tâm để giao tiếp hai chiều cho ứng dụng IoT và các thiết bị hỗ trợ cả giao tiếp thiết bị-đám mây và thiết bị đám mây, nó cũng hỗ trợ nhiều mẫu nhắn tin như thiết bị đo từ xa trên đám mây, tải tệp lên từ thiết bị và các phương thức trả lời yêu cầu và cuối cùng, chúng ta có thể sử dụng phương thức xác thực trên mỗi thiết bị cho phép mỗi thiết bị kết nối an toàn với Trung tâm IoT. Bây giờ, khi bạn đã hiểu cơ bản về Azure IoT Hub, hãy chuyển sang thiết lập hệ thống.
Tạo Trung tâm Azure IoT
Chúng tôi đã sẵn sàng thực hiện tất cả các thiết lập cần thiết được yêu cầu để thiết lập dịch vụ Microsoft Azure nhưng trước đó, hãy đảm bảo rằng bạn có tài khoản Microsoft. Nếu bạn không có điều đó, bạn chỉ cần đăng ký. Sau đó, truy cập cổng Azure bằng cách sử dụng portal.azure.com và đăng nhập.
Sau khi bạn đã đăng nhập, hãy truy cập trang chủ Azure, chọn nút Tạo tài nguyên, sau đó tìm kiếm Trung tâm IoT trong trường Tìm kiếm trên thị trường. Chọn Trung tâm IoT từ kết quả tìm kiếm, sau đó chọn Tạo. Những hình ảnh dưới đây sẽ cho bạn hình dung rõ hơn về quá trình này.
Điền vào Thông tin chi tiết cần thiết để tạo Trung tâm IoT.
Trong phần Đăng ký, bạn cần chọn đăng ký để sử dụng nó cho trung tâm của mình. Trong trường hợp của chúng tôi, chúng tôi đang chọn tài khoản Dùng thử và chúng tôi đã chọn “ Dùng thử miễn phí” .
Tiếp theo, trong Phần Nhóm tài nguyên, hãy chọn nhóm tài nguyên của bạn . Nếu chưa có, bạn cần tạo một tài nguyên mới bằng cách nhấp vào Tạo mới và nhập tên Tài nguyên.
Trong Phần Khu vực, bạn có thể sử dụng menu thả xuống để chọn khu vực ưa thích của mình.
Trong IOT Hub Tên Mục, bạn cần phải e nter tên cho trung tâm của bạn. Điều này phải là duy nhất. Tất cả các giao tiếp cần thiết sẽ xảy ra với tên này.
Trong Tab “Kích thước và tỷ lệ”, chọn “ Bậc miễn phí ” và nhấp vào Tiếp theo. Sau đó nhấp vào “Xem lại + Tạo”. Sẽ mất vài phút để tạo Trung tâm IoT. Nhấp vào tên của Trung tâm IoT mà bạn đã tạo. Ghi lại Tên máy chủ từ cửa sổ như trong hình dưới đây. Sau đó nhấp vào Chính sách truy cập được chia sẻ trong Cài đặt. Các chính sách truy cập được chia sẻ được đánh dấu trong hình ảnh bên dưới. Nhấp vào tùy chọn iothubowner trong Chính sách. Ghi lại khóa chính và khóa chính của chuỗi kết nối để tham khảo trong tương lai. Bây giờ, để Đăng ký một thiết bị mới trong Trung tâm IoT, hãy nhấp vào Thiết bị IoT. Trong ngăn Device Explorer, nhấp vào Thêm để thêm thiết bị vào trung tâm.
Điền thông tin sau vào tab thiết bị mới.
- ID thiết bị: Nhập Id cho thiết bị. Id thiết bị cần phải là duy nhất.
- Loại xác thực: Chọn khóa đối xứng.
- Tự động tạo khóa: Chọn hộp kiểm này.
- Kết nối thiết bị với IoT Hub: Nhấp vào Bật.
Sau khi thiết bị được tạo, bạn có thể tìm thiết bị mới tạo của mình trên phần Device Explorer. Bấm vào tên của thiết bị. Nó sẽ hiển thị các thông tin chi tiết của thiết bị. Ghi lại khóa chính và khóa chính của chuỗi kết nối của Thiết bị. Điều này rất quan trọng vì chúng ta cần nó để giao tiếp.
Bây giờ, khi điều đó được thực hiện, chúng ta có thể chuyển sang khía cạnh phần cứng của mọi thứ.
Các thành phần cần thiết để xây dựng mạch thử nghiệm của chúng tôi cho Azure IoT với Raspberry Pi
Vì phần cứng của mạch này rất đơn giản nên yêu cầu về thành phần cũng rất đơn giản. Dưới đây là danh sách các thành phần bắt buộc.
- Raspberry Pi 3B (Chúng tôi cũng có thể sử dụng bất kỳ mô hình nào khác của Pi)
- Thẻ Micro SD-16 GB
- Cảm biến DHT11
- Nguồn cung cấp Micro USB 5V, 2.4A
Azure IoT với Raspberry Pi - Sơ đồ phần cứng
Sơ đồ mạch hoàn chỉnh cho dự án Azure IoT với Raspberry Pi được hiển thị bên dưới, Nó được xây dựng bằng cách sử dụng fritzing. Làm theo sơ đồ mạch và các kết nối để tự tạo mạch.
Mạch trên gửi dữ liệu Nhiệt độ và Độ ẩm đến Microsoft IoT Hub. Trong mạch này, chúng tôi đã sử dụng cảm biến DHT11 để thu thập dữ liệu Nhiệt độ và Độ ẩm và chúng tôi đang sử dụng Raspberry Pi 3B làm thiết bị xử lý dữ liệu. Cảm biến DHT11 có ba chân. Chân VCC và GND dùng để cấp nguồn 5V DC cho cảm biến và chân đầu ra Dữ liệu của DHT11 được kết nối với GPIO4 của Raspberry Pi. Nếu bạn muốn tìm hiểu cách Giao diện Cảm biến Nhiệt độ và Độ ẩm DHT11 Với Raspberry Pi, bạn có thể xem bài viết trước của chúng tôi về chủ đề này. Chúng tôi cũng đã sử dụng cảm biến này để xây dựng Trạm thời tiết IoT Raspberry Pi.
Lập trình Raspberry Pi để xuất bản dữ liệu trên Azure IoT Hub
Trước khi bắt đầu viết mã cho dự án này, chúng ta cần tạo một vỏ đám mây Azure (CLI) trong cổng Azure. Điều này sẽ có ích theo nhiều cách. Để làm điều đó, hãy nhấp vào nút vỏ đám mây Azure trong cổng như hình dưới đây. Sau đó nhấp vào tùy chọn tạo bộ nhớ, được đánh dấu màu đỏ.
Khi đã xong, bạn có thể mở CLI, và chạy các lệnh sau để cài đặt Azure add-on' s mà sẽ được sử dụng để hiển thị các dữ liệu cảm biến.
az extension add --name azure-cli-iot-ext
Sau khi hoàn tất, chúng ta cần cài đặt các phụ thuộc vào Raspberry Pi để giao tiếp với cảm biến DHT11 và giúp quá trình giao tiếp dễ dàng với các dịch vụ Azure IoT. Đối với điều đó, hãy mở Raspberry Pi Terminal để cài đặt các gói phụ thuộc được sử dụng trong dự án.
Đầu tiên, chúng ta cần tải thư viện DHT cho Raspberry Pi, sau đó giải nén nó từ thư mục gốc và chạy lệnh sau để cài đặt.
sudo python setup.py cài đặt
Sau khi cài đặt thành công, hãy chạy các lệnh sau để cài đặt tất cả các gói phụ thuộc vào Azure IoT Hub.
sudo pip3 install azure-iot-device sudo pip3 install azure-iot-hub sudo pip3 install azure-iothub-service-client sudo pip3 install azure-iothub-device-client
Khi chúng tôi đã hoàn tất cài đặt tất cả các điều kiện tiên quyết, đã đến lúc viết mã bằng Python. Để làm điều đó, trước tiên hãy nhập tất cả các thư viện:
nhập nhập ngẫu nhiên Thời gian nhập Adafruit_DHT từ azure.iot.device import IoTHubDeviceClient, Message
Trong dự án này, chúng tôi đang sử dụng chân 4 của Raspberry Pi để xử lý dữ liệu từ dữ liệu DHT11, vì vậy nó cần được khai báo như hình.
cảm biến = Adafruit_DHT.DHT11 pin = 4
Tiếp theo, chúng tôi xác định chuỗi kết nối của mã. Thay thế nó bằng chuỗi kết nối chính thiết bị của bạn mà chúng tôi đã lưu trước đó.
CONNECTION_STRING = "HostName = sensordata.azure-devices.net; DeviceId = ZZZZZ; SharedAccessKey = ZZZZZZZZZZZZZZZZZZ"
Tiếp theo, chúng tôi tạo một mảng sẽ được sử dụng để gửi dữ liệu đến Azure IoT Hub. Nó có thể được thực hiện như hình dưới đây.
MSG_SND = '{{"nhiệt độ": {nhiệt độ}, "độ ẩm": {độ ẩm}}}'
Tiếp theo, chúng ta đã xác định một vòng lặp while, Trong vòng lặp while, cả dữ liệu độ ẩm và nhiệt độ đều được xử lý bằng cách sử dụng hàm Adafruit_DHT.read_retry . Hơn nữa, chúng tôi xác định hai biến đặc biệt và gán dữ liệu đầu ra cho các biến đó.
trong khi True: độ ẩm, nhiệt độ = Adafruit_DHT.read_retry (cảm biến, pin)
Tiếp theo, một chức năng được viết để kết nối Trung tâm IoT bằng cách sử dụng các tham số kết nối mà chúng tôi đã xác định trước đó.
def iothub_client_init (): client = IoTHubDeviceClient.create_from_connection_string (CONNECTION_STRING) khách hàng trả lại
Cuối cùng, trong bước tiếp theo, cả dữ liệu Nhiệt độ và Độ ẩm đều được gửi đến Azure Hub, sử dụng định dạng như trong đoạn mã bên dưới. Ngoài ra, chúng tôi đã sử dụng phương pháp thử và bắt để xác định xem có bất kỳ lỗi nào trong mã hay không.
def iothub_client_telemetry_sample_run (): try: client = iothub_client_init () print ("Đang gửi dữ liệu đến IoT Hub, nhấn Ctrl-C để thoát") trong khi True: msg_txt_formatted = MSG_SND.format (nhiệt độ = nhiệt độ, độ ẩm = độ ẩm) message = Message (msg_txt_formatted print ("Đang gửi tin nhắn: {}". format (message)) client.send_message (message) print ("Đã gửi tin nhắn thành công") time.sleep (3)
Xuất bản dữ liệu trên Azure IoT Hub - Thử nghiệm
Sau khi viết thành công mã, hãy biên dịch nó và kiểm tra xem có lỗi nào không. Nếu khối mã được biên dịch thành công, sau đó chạy mã. Trong cửa sổ Terminal, bạn sẽ thấy thông báo "Đã gửi tin nhắn thành công". Ảnh chụp màn hình của cửa sổ được hiển thị bên dưới:
Bây giờ, để xem dữ liệu trong Azure IoT Hub, hãy truy cập cổng thông tin và nhấp vào Thiết bị đầu cuối CLI và chạy các lệnh sau thay thế thông tin đăng nhập của bạn trong đó.
az iot hub monitor-event --hub-name XYZ --device-id XYZ
Ghi chú:
Thay thế XYZ bằng tên Hub và Id thiết bị của bạn.
Sau khi chạy lệnh trên, bạn sẽ nhận được dữ liệu như hình dưới đây trên màn hình. Đây cũng là dữ liệu được gửi từ Raspberry Pi.
Điều này đánh dấu sự kết thúc của hướng dẫn này, tôi hy vọng bạn thích bài viết và học được điều gì đó mới. Mọi thắc mắc liên quan đến bài viết bạn có thể để lại ở phần bình luận bên dưới. Hoặc bạn có thể sử dụng Diễn đàn Điện tử của chúng tôi để nhận được phản hồi nhanh hơn và tốt hơn.