# تشخیص کیفیت میوه با استفاده از حسگر ![نمای کلی درس به صورت اسکچ‌نوت](../../../../../translated_images/lesson-18.92c32ed1d354caa5a54baa4032cf0b172d4655e8e326ad5d46c558a0def15365.fa.jpg) > اسکچ‌نوت توسط [نیتیا ناراسیمهان](https://github.com/nitya). برای مشاهده نسخه بزرگ‌تر روی تصویر کلیک کنید. ## آزمون پیش از درس [آزمون پیش از درس](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/35) ## مقدمه یک برنامه IoT تنها یک دستگاه نیست که داده‌ها را جمع‌آوری کرده و به ابر ارسال کند، بلکه معمولاً شامل چندین دستگاه است که با همکاری یکدیگر داده‌ها را از دنیای فیزیکی با استفاده از حسگرها جمع‌آوری می‌کنند، بر اساس آن داده‌ها تصمیم می‌گیرند و از طریق عملگرها یا نمایش‌ها با دنیای فیزیکی تعامل دارند. در این درس، شما با معماری برنامه‌های پیچیده IoT آشنا خواهید شد، از جمله استفاده از چندین حسگر، خدمات ابری برای تحلیل و ذخیره داده‌ها، و نمایش پاسخ از طریق یک عملگر. همچنین یاد خواهید گرفت که چگونه یک نمونه اولیه سیستم کنترل کیفیت میوه طراحی کنید، از جمله استفاده از حسگرهای مجاورت برای فعال‌سازی برنامه IoT و معماری این نمونه اولیه. در این درس به موضوعات زیر خواهیم پرداخت: * [معماری برنامه‌های پیچیده IoT](../../../../../4-manufacturing/lessons/4-trigger-fruit-detector) * [طراحی سیستم کنترل کیفیت میوه](../../../../../4-manufacturing/lessons/4-trigger-fruit-detector) * [فعال‌سازی بررسی کیفیت میوه با استفاده از حسگر](../../../../../4-manufacturing/lessons/4-trigger-fruit-detector) * [داده‌های مورد استفاده برای تشخیص کیفیت میوه](../../../../../4-manufacturing/lessons/4-trigger-fruit-detector) * [شبیه‌سازی چندین دستگاه IoT با استفاده از دستگاه‌های توسعه‌دهنده](../../../../../4-manufacturing/lessons/4-trigger-fruit-detector) * [انتقال به تولید](../../../../../4-manufacturing/lessons/4-trigger-fruit-detector) > 🗑 این آخرین درس در این پروژه است، بنابراین پس از تکمیل این درس و تکلیف مربوطه، فراموش نکنید که خدمات ابری خود را پاک کنید. برای تکمیل تکلیف به این خدمات نیاز دارید، بنابراین ابتدا تکلیف را کامل کنید. > > در صورت نیاز به دستورالعمل‌ها، به [راهنمای پاک‌سازی پروژه](../../../clean-up.md) مراجعه کنید. ## معماری برنامه‌های پیچیده IoT برنامه‌های IoT از اجزای متعددی تشکیل شده‌اند. این شامل انواع دستگاه‌ها و خدمات اینترنتی مختلف است. برنامه‌های IoT را می‌توان به صورت *اشیاء* (دستگاه‌ها) که داده‌ها را ارسال می‌کنند و *بینش‌ها* ایجاد می‌کنند توصیف کرد. این *بینش‌ها* منجر به *اقداماتی* می‌شوند که یک کسب‌وکار یا فرآیند را بهبود می‌بخشند. به عنوان مثال، یک موتور (شیء) داده‌های دما را ارسال می‌کند. این داده‌ها برای ارزیابی عملکرد موتور (بینش) استفاده می‌شوند. این بینش برای اولویت‌بندی پیشگیرانه برنامه تعمیر و نگهداری موتور (اقدام) استفاده می‌شود. * دستگاه‌های مختلف داده‌های مختلفی را جمع‌آوری می‌کنند. * خدمات IoT بینش‌هایی از این داده‌ها ارائه می‌دهند، گاهی اوقات با داده‌های منابع دیگر ترکیب می‌شوند. * این بینش‌ها اقدامات مختلفی را هدایت می‌کنند، از جمله کنترل عملگرها در دستگاه‌ها یا نمایش داده‌ها. ### معماری مرجع IoT ![یک معماری مرجع IoT](../../../../../translated_images/iot-reference-architecture.2278b98b55c6d4e89bde18eada3688d893861d43507641804dd2f9d3079cfaa0.fa.png) نمودار بالا یک معماری مرجع IoT را نشان می‌دهد. > 🎓 یک *معماری مرجع* نمونه‌ای از معماری است که می‌توانید هنگام طراحی سیستم‌های جدید از آن استفاده کنید. در این مورد، اگر در حال ساخت یک سیستم IoT جدید هستید، می‌توانید از معماری مرجع پیروی کنید و دستگاه‌ها و خدمات خود را در جای مناسب جایگزین کنید. * **اشیاء** دستگاه‌هایی هستند که داده‌ها را از حسگرها جمع‌آوری می‌کنند و ممکن است با خدمات لبه برای تفسیر آن داده‌ها تعامل داشته باشند، مانند طبقه‌بندی‌کننده‌های تصویر برای تفسیر داده‌های تصویری. داده‌های دستگاه‌ها به یک سرویس IoT ارسال می‌شوند. * **بینش‌ها** از برنامه‌های بدون سرور یا تحلیل‌هایی که روی داده‌های ذخیره‌شده اجرا می‌شوند به دست می‌آیند. * **اقدامات** می‌توانند دستورات ارسال‌شده به دستگاه‌ها یا نمایش داده‌ها برای تصمیم‌گیری انسان باشند. ![یک معماری مرجع IoT](../../../../../translated_images/iot-reference-architecture-azure.0b8d2161af924cb18ae48a8558a19541cca47f27264851b5b7e56d7b8bb372ac.fa.png) نمودار بالا برخی از اجزا و خدماتی که تاکنون در این درس‌ها پوشش داده شده‌اند و نحوه ارتباط آن‌ها در یک معماری مرجع IoT را نشان می‌دهد. * **اشیاء** - شما کد دستگاهی نوشته‌اید که داده‌ها را از حسگرها جمع‌آوری می‌کند و تصاویر را با استفاده از Custom Vision تحلیل می‌کند، هم در ابر و هم در یک دستگاه لبه. این داده‌ها به IoT Hub ارسال شدند. * **بینش‌ها** - شما از Azure Functions برای پاسخ به پیام‌های ارسال‌شده به IoT Hub استفاده کرده‌اید و داده‌ها را برای تحلیل بعدی در Azure Storage ذخیره کرده‌اید. * **اقدامات** - شما عملگرها را بر اساس تصمیمات گرفته‌شده در ابر و دستورات ارسال‌شده به دستگاه‌ها کنترل کرده‌اید و داده‌ها را با استفاده از Azure Maps نمایش داده‌اید. ✅ به سایر دستگاه‌های IoT که استفاده کرده‌اید فکر کنید، مانند لوازم خانگی هوشمند. اشیاء، بینش‌ها و اقداماتی که در آن دستگاه و نرم‌افزار آن دخیل هستند چیست؟ این الگو می‌تواند به اندازه نیاز شما کوچک یا بزرگ شود، با افزودن دستگاه‌ها و خدمات بیشتر. ### داده‌ها و امنیت هنگام تعریف معماری سیستم خود، باید به طور مداوم به داده‌ها و امنیت توجه کنید. * دستگاه شما چه داده‌هایی ارسال و دریافت می‌کند؟ * این داده‌ها چگونه باید ایمن و محافظت شوند؟ * دسترسی به دستگاه و خدمات ابری چگونه باید کنترل شود؟ ✅ به امنیت داده‌های دستگاه‌های IoT که دارید فکر کنید. چه مقدار از آن داده‌ها شخصی هستند و باید خصوصی نگه داشته شوند، هم در حین انتقال و هم هنگام ذخیره‌سازی؟ چه داده‌هایی نباید ذخیره شوند؟ ## طراحی سیستم کنترل کیفیت میوه حالا بیایید این ایده اشیاء، بینش‌ها و اقدامات را به تشخیص کیفیت میوه اعمال کنیم تا یک برنامه انتها به انتها طراحی کنیم. تصور کنید وظیفه ساخت یک دستگاه تشخیص کیفیت میوه برای استفاده در یک کارخانه پردازش میوه به شما داده شده است. میوه‌ها روی یک نوار نقاله حرکت می‌کنند که در حال حاضر کارکنان با دست میوه‌ها را بررسی کرده و میوه‌های نارس را جدا می‌کنند. برای کاهش هزینه‌ها، صاحب کارخانه یک سیستم خودکار می‌خواهد. ✅ یکی از روندهای افزایش IoT (و فناوری به طور کلی) این است که مشاغل دستی با ماشین‌ها جایگزین می‌شوند. تحقیق کنید: چند شغل تخمین زده می‌شود که به دلیل IoT از بین بروند؟ چند شغل جدید برای ساخت دستگاه‌های IoT ایجاد خواهد شد؟ شما باید سیستمی بسازید که میوه را هنگام رسیدن به نوار نقاله تشخیص دهد، سپس از آن عکس بگیرد و با استفاده از یک مدل هوش مصنوعی که روی لبه اجرا می‌شود بررسی کند. نتایج به ابر ارسال می‌شوند و اگر میوه نارس باشد، یک اعلان داده می‌شود تا میوه نارس جدا شود. | | | | - | - | | **اشیاء** | حسگر برای تشخیص میوه روی نوار نقاله
دوربین برای عکس‌برداری و طبقه‌بندی میوه
دستگاه لبه برای اجرای طبقه‌بندی‌کننده
دستگاه برای اعلان میوه نارس | | **بینش‌ها** | تصمیم‌گیری برای بررسی رسیدگی میوه
ذخیره نتایج طبقه‌بندی رسیدگی
تعیین نیاز به هشدار برای میوه نارس | | **اقدامات** | ارسال فرمان به دستگاه برای عکس‌برداری و بررسی با طبقه‌بندی‌کننده تصویر
ارسال فرمان به دستگاه برای هشدار میوه نارس | ### نمونه‌سازی برنامه شما ![یک معماری مرجع IoT برای بررسی کیفیت میوه](../../../../../translated_images/iot-reference-architecture-fruit-quality.cc705f121c3b6fa71c800d9630935ac34bc08223a04601e35f41d5e9b5dd5207.fa.png) نمودار بالا یک معماری مرجع برای این برنامه نمونه اولیه را نشان می‌دهد. * یک دستگاه IoT با حسگر مجاورت ورود میوه را تشخیص می‌دهد. این یک پیام به ابر ارسال می‌کند که میوه تشخیص داده شده است. * یک برنامه بدون سرور در ابر فرمانی به دستگاه دیگر ارسال می‌کند تا عکس بگیرد و تصویر را طبقه‌بندی کند. * یک دستگاه IoT با دوربین عکس می‌گیرد و آن را به یک طبقه‌بندی‌کننده تصویر که روی لبه اجرا می‌شود ارسال می‌کند. نتایج سپس به ابر ارسال می‌شوند. * یک برنامه بدون سرور در ابر این اطلاعات را ذخیره می‌کند تا بعداً تحلیل شود که چه درصدی از میوه‌ها نارس هستند. اگر میوه نارس باشد، فرمانی به دستگاه IoT دیگر ارسال می‌کند تا از طریق یک LED به کارگران کارخانه هشدار دهد. > 💁 این برنامه IoT می‌تواند به صورت یک دستگاه واحد پیاده‌سازی شود، با تمام منطق برای شروع طبقه‌بندی تصویر و کنترل LED. این دستگاه می‌تواند از IoT Hub فقط برای ردیابی تعداد میوه‌های نارس تشخیص داده‌شده و پیکربندی دستگاه استفاده کند. در این درس، این برنامه گسترش یافته است تا مفاهیم برنامه‌های IoT در مقیاس بزرگ را نشان دهد. برای نمونه اولیه، شما همه این موارد را روی یک دستگاه پیاده‌سازی خواهید کرد. اگر از یک میکروکنترلر استفاده می‌کنید، از یک دستگاه لبه جداگانه برای اجرای طبقه‌بندی‌کننده تصویر استفاده خواهید کرد. شما قبلاً بیشتر مواردی را که برای ساخت این نیاز دارید یاد گرفته‌اید. ## فعال‌سازی بررسی کیفیت میوه با استفاده از حسگر دستگاه IoT به نوعی محرک نیاز دارد تا نشان دهد میوه آماده طبقه‌بندی است. یکی از این محرک‌ها می‌تواند اندازه‌گیری فاصله میوه تا حسگر باشد تا مشخص شود میوه در موقعیت مناسب روی نوار نقاله قرار دارد. ![حسگرهای مجاورت پرتوهای لیزری به اجسامی مانند موز ارسال می‌کنند و زمان بازگشت پرتو را اندازه‌گیری می‌کنند](../../../../../translated_images/proximity-sensor.f5cd752c77fb62fea000156233b32fd24fad3707ec69b8bdd8d312b7af85156d.fa.png) حسگرهای مجاورت می‌توانند فاصله از حسگر تا یک جسم را اندازه‌گیری کنند. این حسگرها معمولاً یک پرتو از تابش الکترومغناطیسی مانند پرتو لیزر یا نور مادون قرمز ارسال می‌کنند و سپس تابش بازتاب‌شده از جسم را تشخیص می‌دهند. زمان بین ارسال پرتو لیزر و بازگشت سیگنال می‌تواند برای محاسبه فاصله تا حسگر استفاده شود. > 💁 احتمالاً شما بدون اینکه بدانید از حسگرهای مجاورت استفاده کرده‌اید. اکثر گوشی‌های هوشمند هنگام تماس، صفحه‌نمایش را خاموش می‌کنند تا از قطع تصادفی تماس با گوش جلوگیری کنند. این کار با استفاده از حسگر مجاورت انجام می‌شود که یک جسم نزدیک به صفحه را در طول تماس تشخیص داده و قابلیت لمسی را تا زمانی که گوشی در فاصله مشخصی قرار گیرد غیرفعال می‌کند. ### وظیفه - فعال‌سازی تشخیص کیفیت میوه با استفاده از حسگر فاصله راهنمای مربوطه را دنبال کنید تا از یک حسگر مجاورت برای تشخیص یک جسم با استفاده از دستگاه IoT خود استفاده کنید: * [Arduino - Wio Terminal](wio-terminal-proximity.md) * [کامپیوتر تک‌برد - Raspberry Pi](pi-proximity.md) * [کامپیوتر تک‌برد - دستگاه مجازی](virtual-device-proximity.md) ## داده‌های مورد استفاده برای تشخیص کیفیت میوه نمونه اولیه تشخیص میوه شامل چندین مؤلفه است که با یکدیگر ارتباط برقرار می‌کنند. ![مؤلفه‌هایی که با یکدیگر ارتباط برقرار می‌کنند](../../../../../translated_images/fruit-quality-detector-message-flow.adf2a65da8fd8741ac7af11361574de89adc126785d67606bb4d2ec00467e380.fa.png) * یک حسگر مجاورت که فاصله تا یک میوه را اندازه‌گیری کرده و آن را به IoT Hub ارسال می‌کند * فرمان کنترل دوربین که از IoT Hub به دستگاه دوربین ارسال می‌شود * نتایج طبقه‌بندی تصویر که به IoT Hub ارسال می‌شود * فرمان کنترل یک LED برای هشدار در مورد میوه نارس که از IoT Hub به دستگاه دارای LED ارسال می‌شود تعریف ساختار این پیام‌ها از ابتدا، قبل از ساخت برنامه، ایده خوبی است. > 💁 تقریباً هر توسعه‌دهنده باتجربه‌ای در طول حرفه خود زمانی را صرف رفع اشکالاتی کرده است که ناشی از تفاوت داده‌های ارسال‌شده با داده‌های مورد انتظار بوده است. برای مثال - اگر اطلاعات دما را ارسال می‌کنید، JSON را چگونه تعریف می‌کنید؟ می‌توانید یک فیلد به نام `temperature` داشته باشید، یا از اختصار رایج `temp` استفاده کنید. ```json { "temperature": 20.7 } ``` در مقایسه با: ```json { "temp": 20.7 } ``` همچنین باید به واحدها توجه کنید - آیا دما بر حسب °C است یا °F؟ اگر از یک دستگاه مصرف‌کننده برای اندازه‌گیری دما استفاده می‌کنید و کاربر واحد نمایش را تغییر دهد، باید مطمئن شوید که واحدهای ارسال‌شده به ابر ثابت باقی می‌مانند. ✅ تحقیق کنید: مشکلات مربوط به واحدها چگونه باعث سقوط $125 میلیون Mars Climate Orbiter شد؟ به داده‌های ارسال‌شده برای تشخیص کیفیت میوه فکر کنید. هر پیام را چگونه تعریف می‌کنید؟ داده‌ها را کجا تحلیل می‌کنید و تصمیم می‌گیرید که چه داده‌هایی ارسال شوند؟ برای مثال - فعال‌سازی طبقه‌بندی تصویر با استفاده از حسگر مجاورت. دستگاه IoT فاصله را اندازه‌گیری می‌کند، اما تصمیم کجا گرفته می‌شود؟ آیا دستگاه تصمیم می‌گیرد که میوه به اندازه کافی نزدیک است و پیامی ارسال می‌کند تا IoT Hub طبقه‌بندی را فعال کند؟ یا اندازه‌گیری‌های فاصله را ارسال می‌کند و اجازه می‌دهد IoT Hub تصمیم بگیرد؟ پاسخ به این سؤالات این است - بستگی دارد. هر مورد استفاده متفاوت است، به همین دلیل است که به عنوان یک توسعه‌دهنده IoT باید سیستم خود، نحوه استفاده از آن و داده‌های تشخیص داده‌شده را درک کنید. * اگر تصمیم توسط IoT Hub گرفته شود، باید اندازه‌گیری‌های فاصله متعددی ارسال کنید. * اگر پیام‌های زیادی ارسال کنید، هزینه IoT Hub و پهنای باند مورد نیاز دستگاه‌های IoT شما افزایش می‌یابد (به خصوص در یک کارخانه با میلیون‌ها دستگاه). همچنین ممکن است دستگاه شما کند شود. * اگر تصمیم روی دستگاه گرفته شود، باید راهی برای پیکربندی دستگاه برای تنظیم دقیق ماشین فراهم کنید. ## شبیه‌سازی چندین دستگاه IoT با استفاده از دستگاه‌های توسعه‌دهنده برای ساخت نمونه اولیه خود، باید کیت توسعه IoT شما مانند چندین دستگاه عمل کند، داده‌ها را ارسال کرده و به دستورات پاسخ دهد. ### شبیه‌سازی چندین دستگاه IoT روی Raspberry Pi یا سخت‌افزار مجازی IoT هنگام استفاده از یک کامپیوتر تک‌برد مانند Raspberry Pi، می‌توانید چندین برنامه را به طور همزمان اجرا کنید. این بدان معناست که می‌توانید چندین دستگاه IoT را با ایجاد چندین برنامه ش模 💁 توجه داشته باشید که برخی از سخت‌افزارها زمانی که توسط چندین برنامه به طور همزمان استفاده شوند، کار نخواهند کرد. ### شبیه‌سازی چندین دستگاه روی یک میکروکنترلر شبیه‌سازی چندین دستگاه روی میکروکنترلرها پیچیده‌تر است. برخلاف کامپیوترهای تک‌برد، نمی‌توانید چندین برنامه را به‌طور همزمان اجرا کنید؛ بلکه باید تمام منطق مربوط به دستگاه‌های مختلف اینترنت اشیا را در یک برنامه واحد بگنجانید. برخی پیشنهادها برای ساده‌تر کردن این فرآیند عبارتند از: * برای هر دستگاه اینترنت اشیا یک یا چند کلاس ایجاد کنید - به‌عنوان مثال کلاس‌هایی با نام‌های `DistanceSensor`، `ClassifierCamera`، `LEDController`. هر کدام می‌توانند متدهای `setup` و `loop` مخصوص به خود را داشته باشند که توسط توابع اصلی `setup` و `loop` فراخوانی می‌شوند. * دستورات را در یک مکان واحد مدیریت کنید و آن‌ها را به کلاس دستگاه مربوطه هدایت کنید. * در تابع اصلی `loop`، باید زمان‌بندی هر دستگاه مختلف را در نظر بگیرید. به‌عنوان مثال، اگر یک کلاس دستگاه دارید که باید هر ۱۰ ثانیه پردازش شود و دیگری که باید هر ۱ ثانیه پردازش شود، در تابع اصلی `loop` از یک تأخیر ۱ ثانیه‌ای استفاده کنید. هر بار فراخوانی `loop` کد مربوط به دستگاهی که باید هر ثانیه پردازش شود را اجرا می‌کند و از یک شمارنده برای شمارش هر حلقه استفاده کنید و دستگاه دیگر را زمانی که شمارنده به ۱۰ رسید پردازش کنید (و سپس شمارنده را بازنشانی کنید). ## حرکت به سمت تولید نمونه اولیه پایه‌ای برای سیستم نهایی تولید خواهد بود. برخی از تفاوت‌ها هنگام حرکت به سمت تولید عبارتند از: * استفاده از قطعات مقاوم - استفاده از سخت‌افزاری که برای تحمل نویز، گرما، لرزش و فشار در محیط کارخانه طراحی شده است. * استفاده از ارتباطات داخلی - برخی از قطعات به‌طور مستقیم با یکدیگر ارتباط برقرار می‌کنند و از ارسال داده به ابر جلوگیری می‌کنند، و فقط داده‌ها را برای ذخیره‌سازی به ابر ارسال می‌کنند. نحوه انجام این کار به تنظیمات کارخانه بستگی دارد، یا از طریق ارتباط مستقیم یا با اجرای بخشی از سرویس اینترنت اشیا در لبه با استفاده از یک دستگاه دروازه. * گزینه‌های پیکربندی - هر کارخانه و مورد استفاده متفاوت است، بنابراین سخت‌افزار باید قابل پیکربندی باشد. به‌عنوان مثال، حسگر مجاورت ممکن است نیاز داشته باشد میوه‌های مختلف را در فواصل مختلف تشخیص دهد. به‌جای اینکه فاصله برای فعال‌سازی طبقه‌بندی به‌صورت ثابت کدنویسی شود، بهتر است این مقدار از طریق ابر قابل پیکربندی باشد، مثلاً با استفاده از یک دستگاه دوقلو. * حذف خودکار میوه - به‌جای استفاده از LED برای هشدار درباره نارس بودن میوه، دستگاه‌های خودکار میوه را حذف می‌کنند. ✅ تحقیق کنید: چه تفاوت‌های دیگری ممکن است بین دستگاه‌های تولیدی و کیت‌های توسعه وجود داشته باشد؟ --- ## 🚀 چالش در این درس با برخی از مفاهیمی که برای طراحی یک سیستم اینترنت اشیا باید بدانید آشنا شدید. به پروژه‌های قبلی فکر کنید. چگونه می‌توانند در معماری مرجع نشان داده شده در بالا جای بگیرند؟ یکی از پروژه‌های قبلی را انتخاب کنید و طراحی یک راه‌حل پیچیده‌تر را که قابلیت‌های متعددی را فراتر از آنچه در پروژه‌ها پوشش داده شده است، ترکیب می‌کند، در نظر بگیرید. معماری را ترسیم کنید و به تمام دستگاه‌ها و خدماتی که نیاز دارید فکر کنید. برای مثال - یک دستگاه ردیابی وسیله نقلیه که GPS را با حسگرهایی برای نظارت بر مواردی مانند دما در یک کامیون یخچالی، زمان‌های روشن و خاموش شدن موتور و هویت راننده ترکیب می‌کند. چه دستگاه‌هایی درگیر هستند، چه خدماتی مورد نیاز است، چه داده‌هایی منتقل می‌شود و ملاحظات امنیتی و حریم خصوصی چیست؟ ## آزمون پس از درس [آزمون پس از درس](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/36) ## مرور و مطالعه شخصی * درباره معماری اینترنت اشیا بیشتر بخوانید در [مستندات معماری مرجع اینترنت اشیا در Microsoft docs](https://docs.microsoft.com/azure/architecture/reference-architectures/iot?WT.mc_id=academic-17441-jabenn) * درباره دستگاه‌های دوقلو بیشتر بخوانید در [مستندات درک و استفاده از دستگاه‌های دوقلو در IoT Hub در Microsoft docs](https://docs.microsoft.com/azure/iot-hub/iot-hub-devguide-device-twins?WT.mc_id=academic-17441-jabenn) * درباره OPC-UA، یک پروتکل ارتباط ماشین به ماشین که در اتوماسیون صنعتی استفاده می‌شود، در [صفحه OPC-UA در ویکی‌پدیا](https://wikipedia.org/wiki/OPC_Unified_Architecture) مطالعه کنید. ## تکلیف [ساخت یک تشخیص‌دهنده کیفیت میوه](assignment.md) **سلب مسئولیت**: این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما تلاش می‌کنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمه‌های خودکار ممکن است شامل خطاها یا نادرستی‌ها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، توصیه می‌شود از ترجمه حرفه‌ای انسانی استفاده کنید. ما مسئولیتی در قبال سوء تفاهم‌ها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم.