آموزش اینترنت اشیاآموزش رزبری پایپروژه رزبری پایپروژه های اینترنت اشیا

ارتباط رزبری پای با سرور IoT Azure (ارسال دما و فشار به اینترنت)

Azure IoT Hub ، سرویس رایانش ابری است که توسط مایکروسافت ساخته شده و توسعه دهندگان را قادر می سازد تا میلیاردها دستگاه اینترنت اشیا را به یک سیستم عامل متصل ، نظارت و مدیریت کنند. این سیستم در حال حاضر در برنامه های مختلف اینترنت اشیا مانند سیستم های خانه هوشمند ، سیستم های امنیتی ، نظارتی و … مورد استفاده قرار می گیرد.

برای نشان دادن قابلیت های Azure IoT hub ، ما قصد داریم یک مدار کوچک با Raspberry Pi ، یک سنسور دما و رطوبت DHT11 بسازیم تا داده های سنسور را با آن پردازش کنیم. سرانجام ، ما داده های حسگر را با استفاده از پروتکل MQTT در سرور Azure IoT منتشر خواهیم کرد. در این آموزش ، نحوه راه اندازی و پیکربندی سرور Azure و ارسال داده ها با استفاده از رزبری پای را فرا خواهیم گرفت.

Microsoft Azure IoT Hub چیست؟

Azure IoT Hub مجموعه ای از خدمات مدیریت شده است که می تواند دستگاه های اینترنت اشیا را متصل ، نظارت و کنترل کند. این برنامه همچنین شامل ارتباطات ایمن برای دستگاه ها ، با پردازش و تجزیه و تحلیل داده ها است که به تولیدکنندگان دستگاه در ساخت ، استقرار و مدیریت برنامه های اینترنت اشیا با کمک می کند. داده های دورسنجی Azure IoT Hub به ما امکان اطلاع از وضعیت دستگاه های IoT متصل را می دهد و پیام های Cloud-to-Device ما را قادر می سازد دستورات و اعلان ها را به دستگاه های متصل ارسال کنیم.

یک مثال می تواند این باشد که ، با استفاده از سیستم اتوماسیون خانه هوشمند ، می توانیم داده های مختلف حسگر ها را جمع آوری کرده و برای پردازش ، ذخیره و مدیریت آنها به Azure IoT Hub ارسال کنیم. همچنین می توانیم دستگاه های خروجی را از رابط Azure IoT Hub کنترل کنیم. هاب مرکزی از ارتباطات دو جهته برای برنامه های IoT و دستگاه های ارتباطات ابری پشتیبانی می کند.

برای یادگیری آردوینو (برنامه نویسی، ساخت ربات، ارتباط با اندروید) روی دوره آموزش آردوینو کلیک کنید.
برای یادگیری کامل الکترونیک روی دوره آموزش الکترونیک کلیک کنید.

ایجاد Azure IoT Hub

ما آماده انجام کلیه تنظیمات لازم برای راه اندازی سرویس های Microsoft Azure هستیم اما قبل از آن مطمئن شوید که یک حساب Microsoft دارید. اگر چنین چیزی ندارید ، می توانید به راحتی وارد سیستم شوید. پس از آن ، با استفاده از portal.azure.com به درگاه Azure بروید و وارد شوید.

پس از ورود به سیستم ، به صفحه اصلی Azure بروید ، دکمه Create a resource را انتخاب کنید و سپس IoT Hub را در قسمت Search the Marketplace جستجو کنید. IoT Hub را از نتایج جستجو انتخاب کنید و سپس Create را بزنید.

ایجاد Azure IoT Hub

برای ایجاد IoT Hub جزئیات لازم را پر کنید.

آموزش اینترنت اشیا Azure IoT Hub

در بخش Subscription ، باید Subscription را انتخاب کنید تا از آن برای hub خود استفاده کنید. در مورد ما ، ما یک حساب آزمایشی را انتخاب می کنیم و “Free Trial” را انتخاب کرده ایم. در بخش Resource Group ، گروه منابع خود را انتخاب کنید. اگر موردی ندارید ، باید با کلیک بر روی Create new کلیک کنید و یک گروه منابع ایجاد کنید.

در بخش Region Section، می توانید از منوی کشویی برای انتخاب منطقه مورد نظر خود استفاده کنید. در بخش IoT Hub Name ، باید نام هاب خود را وارد کنید. این نام باید منحصر به فرد باشدزیرا تمام ارتباطات لازم با این نام اتفاق می افتد.

در زیر زبانه “Size and Scale” ، “Free Tier” را انتخاب کنید و روی Next کلیک کنید. سپس بر روی “Review+Create” کلیک کنید. چند دقیقه طول می کشد تا IoT Hub ایجاد شود. روی نام IoT Hub که ایجاد کرده اید کلیک کنید. همانطور که در تصویر زیر نشان داده شده است، Hostname را یادداشت کنید. سپس بر روی Shared access policies در تنظیمات کلیک کنید. Shared access policies در تصویر زیر برجسته شده است. روی گزینه iothubowner در بخش Policy کلیک کنید. Primary key و Connection string-primary key را برای منابع بعدی یادداشت کنید. اکنون ، برای ثبت یک دستگاه جدید در IoT Hub ، روی IoT Devices کلیک کنید. در پنجره Device Explorer ، روی Add کلیک کنید تا دستگاهی به هاب اضافه شود.

آموزش کامل ایجاد هاب در Azure

اطلاعات زیر را در صفحه New Devices پر کنید.

  • Device ID: آیدی دستگاه خود را وارد کنید. باید منحصر به فرد باشد.
  • Authentication Type: Symmetric Key.
  • Auto Generate Keys: تیک بزنید.
  • Connect Device to IoT Hub: روی Enable کلیک کنید.

پس از ایجاد دستگاه ، می توانید دستگاه تازه ایجاد شده خود را در قسمت Device Explorer پیدا کنید. روی نام دستگاه کلیک کنید. این جزئیات دستگاه را نشان می دهد. Primary key و Connection string-primary keyدستگاه را یادداشت کنید. ما برای برقراری ارتباط به آن نیاز داریم.

همچنین اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید

اطلاعات مورد نیاز برای هاب Azure

حال ، وقتی این کار تمام شد، می توانیم به سمت سخت افزار برویم.

مدار تست Azure IoT با رزبری پای

بخش سخت افزاری این پروژه بسیار ساده است، لیست زیر قطعات مورد نیاز این پروژه را نشان میدهد.

  • Raspberry Pi 3B (ما می توانیم از هر مدل دیگری از Pi استفاده کنیم)
  • کارت حافظه 16 گیگابایت Micro SD
  • سنسور دما و رطوبت DHT11
  • منبع تغذیه میکرو USB با 5V ، 2.4A

مدار تست Azure IoT با رزبری پای

مدار فوق دما و رطوبت را به Microsoft IoT Hub ارسال می کند. در این مدار ، ما از سنسور DHT11 برای جمع آوری داده های دما و رطوبت استفاده کرده ایم و از Raspberry Pi 3B به عنوان مغز پروژه استفاده می کنیم. سنسور DHT11 دارای سه پایه است. پین های VCC و GND برای تغذیه 5 ولت DC به سنسور و پین خروجی داده DHT11 به GPIO 4 برد Raspberry Pi متصل می شوند.

برنامه نویسی رزبری پای برای ارسال داده به Azure IoT Hub

قبل از شروع کدنویسی این پروژه ، باید یک Azure cloud shell (CLI) در پورتال Azure ایجاد کنیم. همانطور که در زیر نشان داده شده است ، بر روی دکمه Azure cloud shell shell در پورتال کلیک کنید. سپس بر روی گزینه create storage که با رنگ قرمز مشخص شده است کلیک کنید.

برنامه نویسی رزبری پای برای Azure

پس از اتمام ، می توانید CLI را باز کرده و دستورات زیر را برای نصب افزونه Azure که برای نمایش داده های سنسور استفاده می شود ، اجرا کنید.

az extension add --name azure-cli-iot-ext  

پس از اتمام این کار ، ما برای ارتباط با سنسور DHT11 و تسهیل روند ارتباطات برای سرویس های Azure IoT ، باید برخی افزونه ها را در Raspberry Pi نصب کنیم. ترمینال رزبری پای را باز کنید.

ابتدا باید کتابخانه DHT برای Raspberry Pi را بارگیری کنیم ، سپس آن را از پوشه root استخراج کرده و دستور زیر را برای نصب آن اجرا کنیم.

        sudo python setup.py install

پس از نصب موفقیت آمیز ، دستورات زیر را اجرا کنید تا تمام بسته های وابسته را در 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 

پس از نصب همه پیش نیازها ، نوبت به نوشتن کد در پایتون می رسد. برای انجام این کار ، ابتدا همه کتابخانه ها را وارد کنید:

import random  
import Adafruit_DHT
import time
from azure.iot.device import IoTHubDeviceClient, Message

در این پروژه ، ما از پردازنده Raspberry Pi برای پردازش داده های DHT11 استفاده می کنیم.

sensor = Adafruit_DHT.DHT11
pin = 4

سپس، رشته اتصال را تعریف می کنیم.

CONNECTION_STRING = "HostName=sensordata.azure-devices.net;DeviceId=ZZZZZ;SharedAccessKey=ZZZZZZZZZZZZZZZZZZ"  

بعد ، ما یک آرایه ایجاد می کنیم که برای ارسال داده ها به Azure IoT Hub استفاده خواهد شد. مطابق زیر می توان این کار را انجام داد:

MSG_SND = '{{"temperature": {temperature},"humidity": {humidity}}}'  

ما یک حلقه while تعریف میکنیم. در حلقه while ، داده های رطوبت و دما با استفاده از تابع Adafruit_DHT.read_retry پردازش می شوند. علاوه بر این ، ما دو متغیر ویژه تعریف می کنیم و داده های خروجی را به آن متغیرها اختصاص می دهیم.

while True:
    humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)

بعد ، یک تابع برای اتصال IoT Hub با استفاده از پارامترهای اتصال که قبلاً تعریف کرده ایم ، مینویسیم.

    def iothub_client_init():  
        client = IoTHubDeviceClient.create_from_connection_string(CONNECTION_STRING)  
        return client

سرانجام، هر دو داده دما و رطوبت با استفاده از قالبی که در کد زیر نشان داده شده است ، برای Azure Hub ارسال می شوند. همچنین ، ما از روش try and catch برای شناسایی هرگونه خطا در کد استفاده کردیم.

    def iothub_client_telemetry_sample_run():  
        try:  
            client = iothub_client_init()  
            print ( "Sending data to IoT Hub, press Ctrl-C to exit" )  
            while True:  
                msg_txt_formatted = MSG_SND.format(temperature=temperature, humidity=humidity)  
                message = Message(msg_txt_formatted)  
                print( "Sending message: {}".format(message) )  
                client.send_message(message)  
                print ( "Message successfully sent" )  
                time.sleep(3) 

ارسال داده ها به Azure Hub

پس از نوشتن موفقیت آمیز کد ، آن را کامپایل کنید. اگر کد با موفقیت کامپایل شد، کد را اجرا کنید. در پنجره ترمینال ، باید پیام “Message successfully sent” را ببینید. تصویر پنجره در زیر نشان داده شده است:

ارسال داده ها به Azure Hub

اکنون ، برای دیدن داده ها در Azure IoT Hub ، به پورتال بروید و روی ترمینال CLI کلیک کنید و دستورات زیر را جایگزین اعتبار خود در آن کنید.

az iot hub monitor-events --hub-name XYZ --device-id XYZ

XYZ را با نام Hub و شناسه دستگاه جایگزین کنید. پس از اجرای دستور بالا ، باید داده ها را همانطور که در زیر نشان داده شده است ، روی صفحه مشاهده کنید. این همان داده ای است که از Raspberry Pi ارسال شده است.

دریافت داده ها در هاب Azure

موارد موجود در فایل : سورس کامل

دانلود فایل های پروژه

میخواهید برنامه نویسی STM32 را یاد بگیرید؟

دوره آموزش STM32

میخواهید الکترونیک را یاد بگیرید؟

دوره آموزش الکترونیک
دوره آموزش آردوینو

میخواهید آردوینو را به صورت پروژه محور یاد بگیرید؟ برای مشاهده توضیحات روی دوره مورد نظر کلیک کنید

برای دریافت مطالب جدید در کانال تلگرام یا پیج اینستاگرام آیرنکس عضو شوید.

محمد رحیمی

محمد رحیمی

محمد رحیمی هستم. سعی میکنم در آیرنکس مطالب مفید را قرار دهم. (در خصوص سوال در مورد این مطلب از قسمت نظرات همین مطلب اقدام کنید) سعی میکنم تمام نظرات را پاسخ دهم.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *