اپلیکیشن شروع به اجرا میکند و در مرورگر وب شما باز میشود:


این اپلیکیشن به عنوان *Disconnected* علامتگذاری شده است و LED در گوشه بالا-راست خاموش است.
@ -224,7 +224,7 @@
1. در این ترمینال جدید، فایل `app.py` را همانند قبل اجرا کنید. وضعیت CounterFit به **Connected** تغییر خواهد کرد و LED روشن خواهد شد.


> 💁 میتوانید این کد را در پوشه [code/virtual-device](../../../../../1-getting-started/lessons/1-introduction-to-iot/code/virtual-device) پیدا کنید.


> اسکچنوت توسط [نیتیا ناراسیمهان](https://github.com/nitya). برای مشاهده نسخه بزرگتر روی تصویر کلیک کنید.
@ -38,7 +38,7 @@
این دستگاهها با دنیای فیزیکی تعامل دارند، یا با استفاده از حسگرها برای جمعآوری داده از محیط اطراف خود، یا با کنترل خروجیها یا عملگرها برای ایجاد تغییرات فیزیکی. مثال معمول این موضوع یک ترموستات هوشمند است - دستگاهی که دارای حسگر دما، وسیلهای برای تنظیم دمای مطلوب مانند یک صفحه لمسی یا دکمه، و یک اتصال به سیستم گرمایش یا سرمایش است که میتواند زمانی که دمای تشخیص داده شده خارج از محدوده مطلوب است، روشن شود. حسگر دما تشخیص میدهد که اتاق خیلی سرد است و یک عملگر گرمایش را روشن میکند.


انواع بسیار متنوعی از دستگاهها میتوانند به عنوان دستگاههای اینترنت اشیا عمل کنند، از سختافزارهای اختصاصی که یک چیز خاص را حس میکنند، تا دستگاههای چندمنظوره، حتی گوشی هوشمند شما! یک گوشی هوشمند میتواند از حسگرها برای تشخیص دنیای اطراف خود استفاده کند و از عملگرها برای تعامل با دنیا - برای مثال، استفاده از حسگر GPS برای تشخیص موقعیت مکانی شما و یک بلندگو برای ارائه دستورالعملهای مسیریابی به مقصد.
@ -54,7 +54,7 @@
در مثال یک ترموستات هوشمند، ترموستات از طریق WiFi خانگی به یک سرویس ابری متصل میشود. این دستگاه دادههای دما را به این سرویس ابری ارسال میکند و از آنجا به یک پایگاه داده نوشته میشود که به صاحب خانه اجازه میدهد دماهای فعلی و گذشته را با استفاده از یک اپلیکیشن تلفن همراه بررسی کند. یک سرویس دیگر در ابر میداند که صاحب خانه چه دمایی را میخواهد و پیامهایی را از طریق سرویس ابری به دستگاه اینترنت اشیا ارسال میکند تا سیستم گرمایش را روشن یا خاموش کند.


نسخهای حتی هوشمندتر میتواند از هوش مصنوعی در ابر با دادههای حسگرهای دیگر متصل به دستگاههای اینترنت اشیا مانند حسگرهای اشغال که تشخیص میدهند کدام اتاقها استفاده میشوند، و همچنین دادههایی مانند وضعیت آب و هوا و حتی تقویم شما استفاده کند تا تصمیماتی در مورد تنظیم دما به صورت هوشمندانه بگیرد. برای مثال، میتواند گرمایش شما را خاموش کند اگر از تقویم شما بخواند که در تعطیلات هستید، یا گرمایش را به صورت اتاق به اتاق خاموش کند بسته به اینکه از کدام اتاقها استفاده میکنید، و با یادگیری از دادهها به مرور زمان دقیقتر شود.
@ -94,7 +94,7 @@
> 💁 پردازندهها برنامهها را با استفاده از [چرخه واکشی-رمزگشایی-اجرا](https://wikipedia.org/wiki/Instruction_cycle) اجرا میکنند. برای هر تیک ساعت، پردازنده دستورالعمل بعدی را از حافظه واکشی میکند، آن را رمزگشایی میکند و سپس اجرا میکند، مانند استفاده از واحد منطق حسابی (ALU) برای جمع دو عدد. برخی اجراها ممکن است چندین تیک طول بکشند، بنابراین چرخه بعدی در تیک بعدی پس از تکمیل دستورالعمل اجرا میشود.


میکروکنترلرها سرعت ساعت بسیار کمتری نسبت به کامپیوترهای رومیزی یا لپتاپها، یا حتی اکثر گوشیهای هوشمند دارند. برای مثال، Wio Terminal دارای پردازندهای است که با سرعت ۱۲۰ مگاهرتز یا ۱۲۰,۰۰۰,۰۰۰ چرخه در ثانیه کار میکند.
@ -182,7 +182,7 @@ RAM حافظهای است که برنامه برای اجرا از آن اس
شما کد تنظیمات خود را در تابع `setup` مینویسید، مانند اتصال به WiFi و خدمات ابری یا مقداردهی اولیه پینها برای ورودی و خروجی. کد حلقه شما سپس شامل کد پردازش میشود، مانند خواندن از یک حسگر و ارسال مقدار به ابر. معمولاً در هر حلقه یک تأخیر اضافه میکنید، برای مثال، اگر فقط میخواهید دادههای حسگر هر ۱۰ ثانیه ارسال شود، در انتهای حلقه یک تأخیر ۱۰ ثانیهای اضافه میکنید تا میکروکنترلر بخوابد، انرژی ذخیره کند، و سپس حلقه را دوباره اجرا کند.


✅ این معماری برنامه بهعنوان یک *حلقه رویداد* یا *حلقه پیام* شناخته میشود. بسیاری از برنامهها در پشت صحنه از این معماری استفاده میکنند و این استاندارد برای اکثر برنامههای دسکتاپی است که روی سیستمعاملهایی مانند ویندوز، macOS یا لینوکس اجرا میشوند. حلقه `loop` پیامها را از اجزای رابط کاربری مانند دکمهها یا دستگاههایی مانند صفحهکلید گوش میدهد و به آنها پاسخ میدهد. میتوانید در این [مقاله درباره حلقه رویداد](https://wikipedia.org/wiki/Event_loop) بیشتر بخوانید.


> اسکچنوت توسط [نیتیا ناراسیمهان](https://github.com/nitya). برای مشاهده نسخه بزرگتر روی تصویر کلیک کنید.
@ -92,7 +92,7 @@
سادهترین حسگر دیجیتال یک دکمه یا سوئیچ است. این یک حسگر با دو حالت است، روشن یا خاموش.


پینهای دستگاههای IoT مانند پینهای GPIO میتوانند این سیگنال را مستقیماً به عنوان ۰ یا ۱ اندازهگیری کنند. اگر ولتاژ ارسال شده همان ولتاژ بازگشتی باشد، مقدار خوانده شده ۱ است، در غیر این صورت مقدار خوانده شده ۰ است. نیازی به تبدیل سیگنال نیست، فقط میتواند ۱ یا ۰ باشد.
@ -125,7 +125,7 @@
راهنمای مربوطه را دنبال کنید تا یک عملگر به دستگاه IoT خود اضافه کنید که توسط حسگر کنترل شود تا یک چراغ شب IoT بسازید. این چراغ سطح نور را از حسگر نور جمعآوری کرده و از یک عملگر به شکل LED برای انتشار نور زمانی که سطح نور تشخیص داده شده خیلی کم است استفاده میکند.


عملگرهای آنالوگ یک سیگنال آنالوگ را گرفته و آن را به نوعی تعامل تبدیل میکنند، جایی که تعامل بر اساس ولتاژ ارائه شده تغییر میکند.
یک مثال چراغ قابل تنظیم است، مانند چراغهایی که ممکن است در خانه خود داشته باشید. مقدار ولتاژ ارائه شده به چراغ تعیین میکند که چقدر روشن باشد.


مانند حسگرها، دستگاههای واقعی اینترنت اشیا (IoT) با سیگنالهای دیجیتال کار میکنند، نه آنالوگ. این بدان معناست که برای ارسال یک سیگنال آنالوگ، دستگاه اینترنت اشیا نیاز به یک مبدل دیجیتال به آنالوگ (DAC) دارد، یا بهصورت مستقیم روی دستگاه اینترنت اشیا یا روی یک برد اتصال. این مبدل، 0 و 1های دستگاه اینترنت اشیا را به ولتاژ آنالوگ تبدیل میکند که عملگر بتواند از آن استفاده کند.
@ -187,7 +187,7 @@
یک عملگر دیجیتال ساده، LED است. وقتی یک دستگاه سیگنال دیجیتال 1 ارسال میکند، یک ولتاژ بالا ارسال میشود که LED را روشن میکند. وقتی یک سیگنال دیجیتال 0 ارسال میشود، ولتاژ به 0 ولت کاهش مییابد و LED خاموش میشود.


✅ چه عملگرهای ساده دو حالته دیگری میتوانید تصور کنید؟ یک مثال، سلونوئید است که یک آهنربای الکتریکی است که میتواند فعال شود تا کارهایی مانند حرکت دادن یک قفل درب برای قفل کردن یا باز کردن درب انجام دهد.
@ -26,7 +26,7 @@ LED Grove به صورت یک ماژول با مجموعهای از LEDها
LED را وصل کنید.


1. LED مورد علاقه خود را انتخاب کنید و پایههای آن را در دو سوراخ روی ماژول LED قرار دهید.
@ -40,7 +40,7 @@ LED را وصل کنید.
1. با خاموش بودن رزبری پای، سر دیگر کابل Grove را به سوکت دیجیتال علامتگذاری شده **D5** روی Grove Base hat متصل به پای وصل کنید. این سوکت دومین سوکت از سمت چپ در ردیف سوکتهای کنار پینهای GPIO است.




1. یک سر کابل Grove را به سوکت روی ماژول حسگر نور وارد کنید. این کابل فقط از یک جهت وارد میشود.
1. با خاموش بودن رزبری پای، سر دیگر کابل Grove را به سوکت آنالوگ با علامت **A0** روی کلاهک پایه Grove که به رزبری پای متصل است، وصل کنید. این سوکت دومین سوکت از سمت راست در ردیف سوکتهای کنار پینهای GPIO است.


حسگر نور ایجاد خواهد شد و در لیست حسگرها ظاهر میشود.




> اسکچنوت توسط [نیتیا ناراسیمهان](https://github.com/nitya). برای مشاهده نسخه بزرگتر روی تصویر کلیک کنید.
@ -47,7 +47,7 @@ MQTT محبوبترین پروتکل ارتباطی برای دستگاه
MQTT دارای یک بروکر و چندین کلاینت است. تمام کلاینتها به بروکر متصل میشوند و بروکر پیامها را به کلاینتهای مربوطه هدایت میکند. پیامها با استفاده از موضوعات نامگذاری شده هدایت میشوند، نه اینکه مستقیماً به یک کلاینت خاص ارسال شوند. یک کلاینت میتواند به یک موضوع پیام ارسال کند و هر کلاینتی که به آن موضوع اشتراک کرده باشد پیام را دریافت خواهد کرد.


✅ تحقیق کنید. اگر تعداد زیادی دستگاه IoT داشته باشید، چگونه میتوانید اطمینان حاصل کنید که بروکر MQTT شما قادر به مدیریت تمام پیامها است؟
@ -69,7 +69,7 @@ MQTT دارای یک بروکر و چندین کلاینت است. تمام کل
> 💁 این بروکر آزمایشی عمومی و غیرامن است. هر کسی میتواند به آنچه شما منتشر میکنید گوش دهد، بنابراین نباید با دادههایی که نیاز به حفظ حریم خصوصی دارند استفاده شود.


مراحل مربوطه زیر را دنبال کنید تا دستگاه خود را به بروکر MQTT متصل کنید:
@ -350,7 +350,7 @@ MQTT همچنین از یک عملکرد نگهداری اتصال پشتیبا
طراحان دستگاههای IoT همچنین باید در نظر بگیرند که آیا دستگاه IoT میتواند در طول قطعی اینترنت یا از دست دادن سیگنال ناشی از مکان استفاده شود یا خیر. یک ترموستات هوشمند باید بتواند برخی تصمیمات محدود برای کنترل گرمایش بگیرد اگر نتواند تلهمتری را به ابر ارسال کند به دلیل قطعی.
[](https://twitter.com/internetofshit/status/1315736960082808832)
[](https://twitter.com/internetofshit/status/1315736960082808832)
برای اینکه MQTT بتواند از دست دادن اتصال را مدیریت کند، کد دستگاه و سرور باید مسئول اطمینان از تحویل پیامها در صورت نیاز باشند، به عنوان مثال با الزام اینکه تمام پیامهای ارسال شده توسط پیامهای اضافی در یک موضوع پاسخ پاسخ داده شوند، و اگر نه، آنها به صورت دستی صفبندی شوند تا بعداً بازپخش شوند.
@ -358,7 +358,7 @@ MQTT همچنین از یک عملکرد نگهداری اتصال پشتیبا
دستورات پیامهایی هستند که از ابر به یک دستگاه ارسال میشوند و به آن دستور میدهند کاری انجام دهد. بیشتر اوقات این شامل دادن نوعی خروجی از طریق یک عملگر است، اما میتواند یک دستور برای خود دستگاه باشد، مانند راهاندازی مجدد یا جمعآوری تلهمتری اضافی و بازگرداندن آن به عنوان پاسخ به دستور.


یک ترموستات میتواند دستوری از ابر دریافت کند تا گرمایش را روشن کند. بر اساس دادههای تلهمتری از تمام حسگرها، اگر سرویس ابری تصمیم گرفته باشد که گرمایش باید روشن شود، دستور مربوطه را ارسال میکند.


> اسکچنوت توسط [نیتیا ناراسیمهان](https://github.com/nitya). برای مشاهده نسخه بزرگتر روی تصویر کلیک کنید.
@ -90,7 +90,7 @@
فرمول کامل برای GDD کمی پیچیده است، اما یک معادله سادهتر وجود دارد که اغلب به عنوان یک تقریب خوب استفاده میشود:


* **GDD** - این تعداد روزهای درجه رشد است
* **T max** - این دمای حداکثر روزانه به درجه سانتیگراد است
@ -118,7 +118,7 @@
این محاسبه به صورت زیر است:


ذرت در آن روز 4 GDD دریافت کرد. با فرض اینکه نوعی از ذرت به 800 GDD برای بلوغ نیاز دارد، هنوز به 796 GDD دیگر نیاز دارد تا به بلوغ برسد.
@ -239,7 +239,7 @@
برای مثال، اگر بالاترین دمای روز ۲۵ درجه سانتیگراد و پایینترین دما ۱۲ درجه سانتیگراد باشد:


Jupyter شروع به کار میکند و دفترچه را در مرورگر شما باز میکند. دستورالعملهای موجود در دفترچه را دنبال کنید تا دماهای اندازهگیری شده را نمایش دهید و روزهای درجه رشد را محاسبه کنید.
1. یک سر کابل Grove را به سوکت روی حسگر رطوبت و دما وارد کنید. این کابل فقط به یک جهت وارد میشود.
1. با خاموش بودن رزبری پای، سر دیگر کابل Grove را به سوکت دیجیتال با علامت **D5** روی کلاهک پایه Grove که به پای متصل است، وصل کنید. این سوکت دومین سوکت از سمت چپ در ردیف سوکتهای کنار پینهای GPIO است.


حسگر رطوبت ایجاد شده و در لیست حسگرها ظاهر خواهد شد.


1. یک حسگر دما ایجاد کنید:
@ -54,11 +54,11 @@
1. دکمه **Add** را انتخاب کنید تا حسگر دما روی پین 6 ایجاد شود.
حسگر دما ایجاد شده و در لیست حسگرها ظاهر خواهد شد.


@ -13,7 +13,7 @@ I²C دارای گذرگاهی است که از 2 سیم اصلی، همراه
| VCC | جمعکننده ولتاژ مشترک | منبع تغذیه برای دستگاهها. این سیم به سیمهای SDA و SCL متصل است تا از طریق مقاومت کششی، توان آنها را تأمین کند و سیگنال را زمانی که هیچ دستگاهی کنترلکننده نیست خاموش کند. |
| GND | زمین | این سیم زمین مشترک برای مدار الکتریکی فراهم میکند. |


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


* W
- وزن خاک مرطوب
@ -29,7 +29,7 @@
برای مثال، فرض کنید یک نمونه خاک دارید که وزن آن در حالت مرطوب 212 گرم و در حالت خشک 197 گرم است.
1. یک سر کابل Grove را به سوکت روی حسگر رطوبت خاک وارد کنید. این کابل فقط به یک شکل وارد میشود.
1. با خاموش بودن رزبری پای، سر دیگر کابل Grove را به سوکت آنالوگ با علامت **A0** روی Grove Base Hat متصل به رزبری پای وصل کنید. این سوکت دومین سوکت از سمت راست در ردیف سوکتهای کنار پینهای GPIO است.


1. حسگر رطوبت خاک را در خاک قرار دهید. این حسگر دارای یک "خط بالاترین موقعیت" است - یک خط سفید روی حسگر. حسگر را تا این خط وارد کنید اما از آن عبور نکنید.
حسگر رطوبت خاک ایجاد شده و در لیست حسگرها ظاهر میشود.




> اسکچنوت توسط [نیتیا ناراسیمهان](https://github.com/nitya). برای مشاهده نسخه بزرگتر روی تصویر کلیک کنید.
@ -32,7 +32,7 @@
راهحل این است که پمپ به یک منبع تغذیه خارجی متصل شود و از یک عملگر برای روشن کردن پمپ استفاده شود، مشابه اینکه چگونه یک چراغ را روشن میکنید. مقدار کمی انرژی (به شکل انرژی در بدن شما) برای انگشت شما کافی است تا یک کلید را فشار دهد، و این کلید چراغ را به برق اصلی متصل میکند که با ولتاژ 110v/240v کار میکند.


> 🎓 [برق اصلی](https://wikipedia.org/wiki/Mains_electricity) به برق تحویلی به خانهها و کسبوکارها از طریق زیرساخت ملی در بسیاری از نقاط جهان اشاره دارد.
@ -72,7 +72,7 @@
الکترومغناطیس برای فعال شدن و کشیدن اهرم به مقدار زیادی برق نیاز ندارد، میتوان آن را با خروجی 3.3V یا 5V از یک کیت توسعه IoT کنترل کرد. مدار خروجی میتواند برق بیشتری حمل کند، بسته به رله، از جمله ولتاژ اصلی یا حتی سطوح توان بالاتر برای استفاده صنعتی. به این ترتیب یک کیت توسعه IoT میتواند یک سیستم آبیاری را کنترل کند، از یک پمپ کوچک برای یک گیاه واحد تا یک سیستم صنعتی عظیم برای یک مزرعه تجاری کامل.


تصویر بالا یک رله Grove را نشان میدهد. مدار کنترل به یک دستگاه IoT متصل میشود و رله را با استفاده از 3.3V یا 5V روشن یا خاموش میکند. مدار خروجی دارای دو ترمینال است، هر کدام میتوانند برق یا زمین باشند. مدار خروجی میتواند تا 250V با 10A را تحمل کند، که برای طیف وسیعی از دستگاههای تغذیهشده با برق اصلی کافی است. شما میتوانید رلههایی تهیه کنید که حتی سطوح توان بالاتری را تحمل کنند.
1. یک سر کابل Grove را به سوکت روی رله وارد کنید. کابل فقط از یک جهت وارد میشود.
1. با خاموش بودن رزبری پای، سر دیگر کابل Grove را به سوکت دیجیتال با علامت **D5** روی Grove Base Hat که به پای متصل است وصل کنید. این سوکت دومین سوکت از سمت چپ در ردیف سوکتهای کنار پینهای GPIO است. سنسور رطوبت خاک را به سوکت **A0** متصل نگه دارید.


1. سنسور رطوبت خاک را در خاک قرار دهید، اگر قبلاً از درس قبلی در خاک قرار داده نشده است.


> اسکچنوت توسط [نیتیا ناراسیمهان](https://github.com/nitya). برای مشاهده نسخه بزرگتر روی تصویر کلیک کنید.
@ -46,8 +46,8 @@
فضای ابری اغلب به شوخی به عنوان "کامپیوتر شخص دیگری" نامیده میشود. ایده اولیه ساده بود - به جای خرید کامپیوتر، شما کامپیوتر شخص دیگری را اجاره میکنید. شخص دیگری، یک ارائهدهنده خدمات فضای ابری، مراکز داده عظیمی را مدیریت میکند. آنها مسئول خرید و نصب سختافزار، مدیریت برق و خنککننده، شبکهسازی، امنیت ساختمان، بهروزرسانی سختافزار و نرمافزار و همه چیز هستند. به عنوان مشتری، شما کامپیوترهایی را که نیاز دارید اجاره میکنید، در زمان افزایش تقاضا بیشتر اجاره میکنید و در زمان کاهش تقاضا تعداد اجارهها را کاهش میدهید. این مراکز داده ابری در سراسر جهان قرار دارند.




این مراکز داده میتوانند چندین کیلومتر مربع وسعت داشته باشند. تصاویر بالا چند سال پیش در یک مرکز داده ابری مایکروسافت گرفته شدهاند و اندازه اولیه و برنامه توسعه را نشان میدهند. منطقهای که برای توسعه پاکسازی شده است بیش از ۵ کیلومتر مربع وسعت دارد.
@ -108,11 +108,11 @@ Azure ابر توسعهدهندگان مایکروسافت است و این
دستگاههای IoT به یک سرویس ابری یا از طریق یک SDK دستگاه (کتابخانهای که کدی برای کار با ویژگیهای سرویس ارائه میدهد) یا مستقیماً از طریق یک پروتکل ارتباطی مانند MQTT یا HTTP متصل میشوند. SDK دستگاه معمولاً سادهترین مسیر است زیرا همه چیز را برای شما مدیریت میکند، مانند دانستن اینکه چه موضوعاتی باید منتشر یا مشترک شوند و چگونه امنیت را مدیریت کند.


دستگاه شما سپس از طریق این سرویس با سایر بخشهای برنامه شما ارتباط برقرار میکند - مشابه نحوه ارسال دادههای تلهمتری و دریافت دستورات از طریق MQTT. این معمولاً با استفاده از یک SDK سرویس یا کتابخانه مشابه انجام میشود. پیامها از دستگاه شما به سرویس ارسال میشوند، جایی که سایر اجزای برنامه شما میتوانند آنها را بخوانند، و پیامها میتوانند به دستگاه شما ارسال شوند.


این خدمات امنیت را با دانستن همه دستگاههایی که میتوانند متصل شوند و داده ارسال کنند، اجرا میکنند، یا با ثبتنام قبلی دستگاهها در سرویس یا با دادن کلیدهای مخفی یا گواهینامههایی به دستگاهها که میتوانند هنگام اولین اتصال خود را در سرویس ثبت کنند. دستگاههای ناشناخته نمیتوانند متصل شوند، اگر تلاش کنند سرویس اتصال را رد میکند و پیامهای ارسالشده توسط آنها را نادیده میگیرد.
@ -124,7 +124,7 @@ Azure ابر توسعهدهندگان مایکروسافت است و این
حالا که اشتراک Azure دارید، میتوانید برای یک سرویس IoT ثبتنام کنید. سرویس IoT مایکروسافت به نام Azure IoT Hub شناخته میشود.


> اسکچنوت توسط [نیتیا ناراسیمهان](https://github.com/nitya). برای مشاهده نسخه بزرگتر روی تصویر کلیک کنید.
@ -28,7 +28,7 @@
بدون سرور، یا محاسبات بدون سرور، شامل ایجاد بلوکهای کوچک کدی است که در پاسخ به انواع مختلف رویدادها در فضای ابری اجرا میشوند. وقتی رویدادی رخ میدهد، کد شما اجرا شده و دادههای مربوط به رویداد به آن ارسال میشود. این رویدادها میتوانند از منابع مختلفی باشند، از جمله درخواستهای وب، پیامهای قرار داده شده در صف، تغییرات داده در یک پایگاه داده، یا پیامهای ارسال شده به یک سرویس IoT توسط دستگاههای IoT.


> 💁 اگر قبلاً از تریگرهای پایگاه داده استفاده کردهاید، میتوانید این را مشابه همان بدانید، کدی که با یک رویداد مانند درج یک ردیف فعال میشود.
@ -54,7 +54,7 @@
سرویس محاسبات بدون سرور مایکروسافت به نام Azure Functions شناخته میشود.


> اسکچنوت توسط [نیتیا ناراسیمهان](https://github.com/nitya). برای مشاهده نسخه بزرگتر روی تصویر کلیک کنید.
@ -52,11 +52,11 @@
وقتی یک دستگاه به یک سرویس اینترنت اشیا متصل میشود، از یک شناسه برای شناسایی خود استفاده میکند. مشکل این است که این شناسه میتواند کپی شود - یک هکر میتواند یک دستگاه مخرب راهاندازی کند که از همان شناسه یک دستگاه واقعی استفاده میکند اما دادههای جعلی ارسال میکند.


راهحل این مشکل تبدیل دادههای ارسالی به یک فرمت رمزگذاریشده است، با استفاده از مقداری که فقط دستگاه و ابر آن را میدانند. این فرآیند *رمزگذاری* نامیده میشود و مقداری که برای رمزگذاری دادهها استفاده میشود *کلید رمزگذاری* نام دارد.


سرویس ابری سپس میتواند دادهها را به یک فرمت قابل خواندن تبدیل کند، با استفاده از فرآیندی به نام *رمزگشایی*، با استفاده از همان کلید رمزگذاری یا یک *کلید رمزگشایی*. اگر پیام رمزگذاریشده توسط کلید رمزگشایی نشود، دستگاه هک شده و پیام رد میشود.


> اسکچنوت توسط [نیتیا ناراسیمهان](https://github.com/nitya). برای مشاهده نسخه بزرگتر روی تصویر کلیک کنید.
@ -63,13 +63,13 @@ IoT در حال تغییر نحوه حملونقل کالاها با ایجا
> 💁 هیچکس واقعاً دلیل اصلی تقسیم دایرهها به 360 درجه را نمیداند. صفحه [درجه (زاویه) در ویکیپدیا](https://wikipedia.org/wiki/Degree_(angle)) برخی از دلایل احتمالی را پوشش میدهد.


عرض جغرافیایی با خطوطی اندازهگیری میشود که زمین را دور میزنند و موازی با استوا هستند، نیمکرههای شمالی و جنوبی را به 90° تقسیم میکنند. استوا در 0° قرار دارد، قطب شمال در 90°، که به عنوان 90° شمال نیز شناخته میشود، و قطب جنوب در -90°، یا 90° جنوب قرار دارد.
طول جغرافیایی به عنوان تعداد درجههای اندازهگیری شده شرق و غرب اندازهگیری میشود. مبدأ 0° طول جغرافیایی *نصفالنهار مبدأ* نامیده میشود و در سال 1884 به عنوان خطی از قطب شمال به قطب جنوب که از [رصدخانه سلطنتی بریتانیا در گرینویچ، انگلستان](https://wikipedia.org/wiki/Royal_Observatory,_Greenwich) عبور میکند، تعریف شد.


> 🎓 نصفالنهار یک خط مستقیم خیالی است که از قطب شمال به قطب جنوب میرود و یک نیمدایره تشکیل میدهد.
@ -100,7 +100,7 @@ IoT در حال تغییر نحوه حملونقل کالاها با ایجا
* عرض جغرافیایی 47.6423109 (47.6423109 درجه شمال استوا)
* طول جغرافیایی -122.1390293 (122.1390293 درجه غرب نصفالنهار مبدأ).


## سیستمهای موقعیتیابی جهانی (GPS)
@ -112,7 +112,7 @@ IoT در حال تغییر نحوه حملونقل کالاها با ایجا
> 💁 حسگرهای GPS به آنتنهایی برای شناسایی امواج رادیویی نیاز دارند. آنتنهای تعبیه شده در کامیونها و ماشینها با GPS داخلی به گونهای قرار داده شدهاند که سیگنال خوبی دریافت کنند، معمولاً روی شیشه جلو یا سقف. اگر از یک سیستم GPS جداگانه، مانند گوشی هوشمند یا دستگاه IoT استفاده میکنید، باید اطمینان حاصل کنید که آنتن تعبیه شده در سیستم GPS یا گوشی دید واضحی از آسمان دارد، مانند نصب شدن روی شیشه جلو.


ماهوارههای GPS در حال چرخش به دور زمین هستند، نه در یک نقطه ثابت بالای حسگر، بنابراین دادههای موقعیت شامل ارتفاع از سطح دریا علاوه بر عرض جغرافیایی و طول جغرافیایی است.


1. یک سر کابل Grove را به سوکت حسگر GPS وارد کنید. کابل فقط از یک جهت وارد میشود.
1. با خاموش بودن رزبری پای، سر دیگر کابل Grove را به سوکت UART که با **UART** روی Grove Base hat متصل به رزبری پای مشخص شده است، وصل کنید. این سوکت در ردیف وسط، در سمت نزدیک به شیار کارت SD قرار دارد، در طرف مقابل پورتهای USB و سوکت اترنت.


1. حسگر GPS را در موقعیتی قرار دهید که آنتن متصل به آن دید به آسمان داشته باشد - ترجیحاً کنار یک پنجره باز یا در فضای باز. دریافت سیگنال واضحتر زمانی آسانتر است که چیزی جلوی آنتن نباشد.


## برنامهنویسی حسگر GPS
@ -102,17 +102,17 @@
* مقدار **Source** را روی `Lat/Lon` تنظیم کنید و یک عرض جغرافیایی، طول جغرافیایی و تعداد ماهوارههای استفادهشده برای دریافت موقعیت GPS مشخص کنید. این مقدار فقط یک بار ارسال میشود، بنابراین گزینه **Repeat** را علامت بزنید تا دادهها هر ثانیه تکرار شوند.


* مقدار **Source** را روی `NMEA` تنظیم کنید و چند جمله NMEA در کادر متن وارد کنید. تمام این مقادیر ارسال میشوند، با تأخیری ۱ ثانیهای قبل از هر جمله GGA (موقعیتیابی).


میتوانید از ابزاری مانند [nmeagen.org](https://www.nmeagen.org) برای تولید این جملات با کشیدن روی نقشه استفاده کنید. این مقادیر فقط یک بار ارسال میشوند، بنابراین گزینه **Repeat** را علامت بزنید تا دادهها یک ثانیه پس از ارسال کامل تکرار شوند.
* مقدار **Source** را روی فایل GPX تنظیم کنید و یک فایل GPX با موقعیتهای مسیر بارگذاری کنید. میتوانید فایلهای GPX را از سایتهای محبوب نقشهبرداری و کوهنوردی مانند [AllTrails](https://www.alltrails.com/) دانلود کنید. این فایلها شامل چندین موقعیت GPS به صورت یک مسیر هستند و حسگر GPS هر موقعیت جدید را با فاصله ۱ ثانیه بازمیگرداند.


این مقادیر فقط یک بار ارسال میشوند، بنابراین گزینه **Repeat** را علامت بزنید تا دادهها یک ثانیه پس از ارسال کامل تکرار شوند.


> اسکچنوت توسط [نیتیا ناراسیمهان](https://github.com/nitya). برای مشاهده نسخه بزرگتر روی تصویر کلیک کنید.
@ -75,7 +75,7 @@
> 💁 با وجود نامشان، برخی از پایگاههای داده NoSQL به شما اجازه میدهند از SQL برای جستجوی دادهها استفاده کنید.


پایگاههای داده NoSQL طرحواره از پیش تعریفشدهای ندارند که نحوه ذخیره دادهها را محدود کند، بلکه میتوانید هر داده غیرساختاریافتهای را وارد کنید، معمولاً با استفاده از اسناد JSON. این اسناد میتوانند در پوشهها سازماندهی شوند، مشابه فایلها در رایانه شما. هر سند میتواند فیلدهای متفاوتی از سایر اسناد داشته باشد - برای مثال، اگر دادههای IoT از وسایل نقلیه مزرعه خود را ذخیره کنید، برخی ممکن است فیلدهایی برای دادههای شتابسنج و سرعت داشته باشند، در حالی که برخی دیگر ممکن است فیلدهایی برای دمای داخل تریلر داشته باشند. اگر بخواهید نوع جدیدی از کامیون، مانند کامیونی با ترازوهای داخلی برای ردیابی وزن محصولات حملشده، اضافه کنید، دستگاه IoT شما میتواند این فیلد جدید را اضافه کند و بدون هیچ تغییری در پایگاه داده ذخیره شود.
@ -89,7 +89,7 @@
در درس قبلی، دادههای GPS را از یک حسگر GPS متصل به دستگاه IoT خود ثبت کردید. برای ذخیره این دادههای IoT در فضای ابری، باید آنها را به یک سرویس IoT ارسال کنید. بار دیگر از Azure IoT Hub، همان سرویس IoT ابری که در پروژه قبلی استفاده کردید، استفاده خواهید کرد.


پس از جریان یافتن دادهها به IoT Hub، میتوانید کدی بدون سرور بنویسید تا به رویدادهایی که به نقطه پایانی سازگار با Event Hub منتشر میشوند گوش دهد. این مسیر گرم است - این دادهها ذخیره میشوند و در درس بعدی برای گزارشگیری از مسیر استفاده خواهند شد.


### وظیفه - مدیریت رویدادهای GPS با استفاده از کد بدون سرور
حسابهای ذخیرهسازی Azure یک سرویس ذخیرهسازی چندمنظوره است که میتواند دادهها را به روشهای مختلف ذخیره کند. شما میتوانید دادهها را به صورت blob، در صفها، در جداول یا به صورت فایل ذخیره کنید و همه اینها به طور همزمان امکانپذیر است.


> اسکچنوت توسط [نیتیا ناراسیمهان](https://github.com/nitya). برای مشاهده نسخه بزرگتر روی تصویر کلیک کنید.
@ -64,11 +64,11 @@
درک این دادهها به عنوان یک انسان میتواند دشوار باشد. این فقط یک دیوار از اعداد است که معنای خاصی ندارد. به عنوان اولین قدم برای بصریسازی این دادهها، میتوان آن را روی یک نمودار خطی رسم کرد:


این نمودار میتواند با اضافه کردن یک خط برای نشان دادن زمانی که سیستم آبیاری خودکار در خوانش رطوبت خاک ۴۵۰ روشن شده است، بهبود یابد:


این نمودار به سرعت نشان میدهد که سطح رطوبت خاک چه بوده و نقاطی که سیستم آبیاری روشن شده است.
@ -84,7 +84,7 @@
کار با نقشهها یک تمرین جالب است و گزینههای زیادی برای انتخاب وجود دارد، مانند Bing Maps، Leaflet، Open Street Maps، و Google Maps. در این درس، شما با [Azure Maps](https://azure.microsoft.com/services/azure-maps/?WT.mc_id=academic-17441-jabenn) آشنا خواهید شد و یاد خواهید گرفت که چگونه دادههای GPS خود را نمایش دهید.
Azure Maps مجموعهای از خدمات جغرافیایی و SDKهایی است که از دادههای نقشهبرداری تازه برای ارائه زمینه جغرافیایی به برنامههای وب و موبایل استفاده میکند. توسعهدهندگان ابزارهایی برای ایجاد نقشههای زیبا و تعاملی دریافت میکنند که میتوانند کارهایی مانند ارائه مسیرهای ترافیکی پیشنهادی، اطلاعات درباره حوادث ترافیکی، ناوبری داخلی، قابلیتهای جستجو، اطلاعات ارتفاع، خدمات آب و هوا و موارد دیگر انجام دهند.
@ -185,7 +185,7 @@ Azure Maps مجموعهای از خدمات جغرافیایی و SDKهایی
اگر صفحه `index.html` خود را در یک مرورگر وب باز کنید، باید یک نقشه بارگذاری شده و متمرکز بر منطقه سیاتل را ببینید.


✅ با پارامترهای زوم و مرکز آزمایش کنید تا نمایش نقشه خود را تغییر دهید. میتوانید مختصات مختلف مربوط به عرض و طول جغرافیایی دادههای خود را اضافه کنید تا نقشه را دوباره متمرکز کنید.
@ -319,7 +319,7 @@ Azure Maps مجموعهای از خدمات جغرافیایی و SDKهایی
1. صفحه HTML را در مرورگر خود بارگذاری کنید. نقشه بارگذاری میشود، سپس تمام دادههای GPS از ذخیرهسازی بارگذاری شده و روی نقشه نمایش داده میشود.


> 💁 شما میتوانید این کد را در [پوشه کد](../../../../../3-transport/lessons/3-visualize-location-data/code) پیدا کنید.


> اسکچنوت توسط [نیتیا ناراسیمهان](https://github.com/nitya). برای مشاهده نسخه بزرگتر روی تصویر کلیک کنید.
@ -35,7 +35,7 @@
حصار جغرافیایی یک محیط مجازی برای یک منطقه جغرافیایی واقعی است. حصارهای جغرافیایی میتوانند دایرههایی باشند که به عنوان یک نقطه و شعاع تعریف شدهاند (برای مثال یک دایره به عرض ۱۰۰ متر اطراف یک ساختمان)، یا یک چندضلعی که منطقهای مانند محدوده مدرسه، مرزهای شهری، یا پردیس دانشگاه یا دفتر را پوشش میدهد.


> 💁 ممکن است قبلاً بدون اینکه بدانید از حصارهای جغرافیایی استفاده کرده باشید. اگر با استفاده از اپلیکیشن یادآوری iOS یا Google Keep بر اساس یک مکان یادآوری تنظیم کردهاید، از حصار جغرافیایی استفاده کردهاید. این اپلیکیشنها بر اساس مکان دادهشده یک حصار جغرافیایی تنظیم میکنند و هنگامی که تلفن شما وارد حصار جغرافیایی میشود، به شما هشدار میدهند.
@ -212,7 +212,7 @@ Azure Maps، سرویسی که در درس قبلی برای نمایش داده
برای مثال، تصور کنید قرائتهای GPS نشان میدهند که یک وسیله نقلیه در حال رانندگی در امتداد جادهای است که در نهایت در کنار یک حصار جغرافیایی قرار دارد. اگر یک مقدار GPS منفرد نادرست باشد و وسیله نقلیه را داخل حصار جغرافیایی قرار دهد، با وجود اینکه دسترسی وسایل نقلیه وجود ندارد، میتوان آن را نادیده گرفت.


در تصویر بالا، یک محدوده جغرافیایی (Geofence) بر روی بخشی از پردیس مایکروسافت قرار دارد. خط قرمز نشاندهنده حرکت یک کامیون در امتداد بزرگراه 520 است، و دایرهها نشاندهنده دادههای GPS هستند. بیشتر این دادهها دقیق بوده و در امتداد بزرگراه 520 قرار دارند، اما یک داده نادرست در داخل محدوده جغرافیایی ثبت شده است. این داده نمیتواند درست باشد - هیچ جادهای وجود ندارد که کامیون بتواند ناگهان از بزرگراه 520 به داخل پردیس منحرف شود و سپس دوباره به بزرگراه 520 بازگردد. کدی که این محدوده جغرافیایی را بررسی میکند، باید دادههای قبلی را در نظر بگیرد قبل از اینکه بر اساس نتایج آزمایش محدوده جغرافیایی عمل کند.
✅ چه دادههای اضافی نیاز دارید تا بررسی کنید که آیا یک داده GPS میتواند صحیح در نظر گرفته شود؟
@ -284,7 +284,7 @@ Azure Maps، سرویسی که در درس قبلی برای نمایش داده
پاسخ این است که نمیتواند! در عوض، میتوانید چندین اتصال جداگانه برای خواندن رویدادها تعریف کنید و هر کدام میتوانند مدیریت بازپخش پیامهای خواندهنشده را انجام دهند. اینها به عنوان *گروههای مصرفکننده* شناخته میشوند. وقتی به نقطه پایانی متصل میشوید، میتوانید مشخص کنید که به کدام گروه مصرفکننده میخواهید متصل شوید. هر جزء از برنامه شما به یک گروه مصرفکننده متفاوت متصل خواهد شد.


در تئوری، حداکثر 5 برنامه میتوانند به هر گروه مصرفکننده متصل شوند و همه آنها پیامها را هنگام رسیدن دریافت خواهند کرد. بهترین روش این است که فقط یک برنامه به هر گروه مصرفکننده دسترسی داشته باشد تا از پردازش تکراری پیامها جلوگیری شود و اطمینان حاصل شود که هنگام راهاندازی مجدد، همه پیامهای صفشده به درستی پردازش میشوند. برای مثال، اگر برنامه Functions خود را به صورت محلی اجرا کنید و همچنین آن را در فضای ابری اجرا کنید، هر دو پیامها را پردازش میکنند که منجر به ذخیرهسازی تکراری در حساب ذخیرهسازی میشود.


> اسکچنوت توسط [نیتیا ناراسیمهان](https://github.com/nitya). برای مشاهده نسخه بزرگتر روی تصویر کلیک کنید.
@ -38,7 +38,7 @@
افزایش برداشت خودکار، دستهبندی محصولات را از زمان برداشت به کارخانه منتقل کرد. مواد غذایی روی نوارهای نقاله طولانی حرکت میکردند و تیمهایی از افراد محصولات را بررسی کرده و هر چیزی که کیفیت لازم را نداشت حذف میکردند. برداشت به لطف ماشینآلات ارزانتر شد، اما هنوز هزینهای برای دستهبندی دستی مواد غذایی وجود داشت.


تکامل بعدی استفاده از ماشینها برای دستهبندی بود، چه در داخل دستگاه برداشت یا در کارخانههای فرآوری. نسل اول این ماشینها از حسگرهای نوری برای تشخیص رنگها استفاده میکردند و با کنترل عملگرها، گوجهفرنگیهای سبز را با اهرمها یا پفهای هوا به داخل سطل زباله پرتاب میکردند و گوجهفرنگیهای قرمز را به مسیر نوار نقاله ادامه میدادند.
@ -62,7 +62,7 @@
> 🎓 نتایج مدلهای یادگیری ماشین *پیشبینی* نامیده میشوند.


مدلهای یادگیری ماشین پاسخهای دودویی نمیدهند، بلکه احتمالها را ارائه میدهند. به عنوان مثال، یک مدل ممکن است یک تصویر از موز دریافت کند و پیشبینی کند `رسیده` با 99.7% و `نارس` با 0.3%. کد شما سپس بهترین پیشبینی را انتخاب کرده و تصمیم میگیرد که موز رسیده است.
@ -90,7 +90,7 @@
Custom Vision یک ابزار مبتنی بر ابر برای آموزش طبقهبندهای تصویر است. این ابزار به شما امکان میدهد با استفاده از تعداد کمی تصویر یک طبقهبند را آموزش دهید. شما میتوانید تصاویر را از طریق یک پورتال وب، API وب یا SDK آپلود کنید و به هر تصویر یک *برچسب* بدهید که طبقهبندی آن تصویر را مشخص میکند. سپس مدل را آموزش میدهید و آن را آزمایش میکنید تا ببینید چقدر خوب عمل میکند. وقتی از مدل راضی شدید، میتوانید نسخههایی از آن را منتشر کنید که از طریق API وب یا SDK قابل دسترسی باشند.
> 💁 شما میتوانید یک مدل Custom Vision را با حداقل 5 تصویر برای هر طبقهبندی آموزش دهید، اما تعداد بیشتر بهتر است. با حداقل 30 تصویر میتوانید نتایج بهتری بگیرید.
@ -146,7 +146,7 @@ Custom Vision بخشی از مجموعه ابزارهای AI مایکروساف
هنگام ایجاد پروژه، مطمئن شوید که از منبع `fruit-quality-detector-training` که قبلاً ایجاد کردهاید استفاده میکنید. از نوع پروژه *Classification*، نوع طبقهبندی *Multiclass* و دامنه *Food* استفاده کنید.


✅ زمانی را برای بررسی رابط کاربری Custom Vision برای طبقهبند تصویر خود اختصاص دهید.
@ -164,7 +164,7 @@ Custom Vision بخشی از مجموعه ابزارهای AI مایکروساف
* با استفاده از ۲ موز رسیده، از هر کدام چند عکس از زوایای مختلف بگیرید، حداقل ۷ عکس (۵ برای آموزش، ۲ برای آزمایش)، اما ترجیحاً بیشتر.


* همین فرآیند را برای ۲ موز نارس تکرار کنید.
@ -174,7 +174,7 @@ Custom Vision بخشی از مجموعه ابزارهای AI مایکروساف
1. بخش [آپلود و برچسبگذاری تصاویر در سریعالعمل ساخت دستهبند در مستندات مایکروسافت](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/getting-started-build-a-classifier?WT.mc_id=academic-17441-jabenn#upload-and-tag-images) را دنبال کنید تا تصاویر آموزشی خود را آپلود کنید. میوه رسیده را با برچسب `ripe` و میوه نارس را با برچسب `unripe` برچسبگذاری کنید.


1. بخش [آموزش دستهبند در سریعالعمل ساخت دستهبند در مستندات مایکروسافت](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/getting-started-build-a-classifier?WT.mc_id=academic-17441-jabenn#train-the-classifier) را دنبال کنید تا دستهبند تصویر را بر اساس تصاویر آپلود شده خود آموزش دهید.
@ -192,7 +192,7 @@ Custom Vision بخشی از مجموعه ابزارهای AI مایکروساف
1. بخش [آزمایش مدل خود در مستندات مایکروسافت](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/test-your-model?WT.mc_id=academic-17441-jabenn#test-your-model) را دنبال کنید تا دستهبند تصویر خود را آزمایش کنید. از تصاویر آزمایشی که قبلاً ایجاد کردهاید استفاده کنید، نه هیچیک از تصاویر مورد استفاده برای آموزش.


1. تمام تصاویر آزمایشی که در دسترس دارید را امتحان کنید و احتمالات را مشاهده کنید.


> اسکچنوت توسط [نیتیا ناراسیمهان](https://github.com/nitya). برای مشاهده نسخه بزرگتر روی تصویر کلیک کنید.
@ -26,7 +26,7 @@
حسگرهای دوربین، همانطور که از نامشان پیداست، دوربینهایی هستند که میتوانید به دستگاه IoT خود متصل کنید. این دوربینها میتوانند تصاویر ثابت بگیرند یا ویدئوهای استریم ضبط کنند. برخی از آنها دادههای خام تصویر را ارائه میدهند، در حالی که برخی دیگر دادههای تصویر را به فایلهایی مانند JPEG یا PNG فشرده میکنند. معمولاً دوربینهایی که با دستگاههای IoT کار میکنند، بسیار کوچکتر و با وضوح پایینتر از آنچه که ممکن است به آن عادت داشته باشید هستند، اما میتوانید دوربینهای با وضوح بالا تهیه کنید که با گوشیهای پیشرفته رقابت میکنند. همچنین میتوانید لنزهای قابل تعویض، تنظیمات چند دوربینه، دوربینهای حرارتی مادون قرمز یا دوربینهای UV تهیه کنید.


بیشتر حسگرهای دوربین از حسگرهای تصویری استفاده میکنند که در آن هر پیکسل یک فوتودیود است. لنز تصویر را روی حسگر تصویر متمرکز میکند و هزاران یا میلیونها فوتودیود نور را که به هر یک میتابد تشخیص داده و آن را به عنوان داده پیکسل ثبت میکنند.
1. در دیالوگ *Publish Model*، منبع *Prediction resource* را به منبع `fruit-quality-detector-prediction` که در درس قبلی ایجاد کردید تنظیم کنید. نام را به صورت `Iteration2` بگذارید و دکمه **Publish** را انتخاب کنید.
@ -88,7 +88,7 @@
همچنین مقدار *Prediction-Key* را کپی کنید. این یک کلید امن است که باید هنگام فراخوانی مدل ارسال شود. فقط برنامههایی که این کلید را ارسال میکنند اجازه استفاده از مدل را دارند و سایر برنامهها رد میشوند.


✅ وقتی یک تکرار جدید منتشر میشود، نام متفاوتی خواهد داشت. چگونه فکر میکنید میتوانید تکرار مورد استفاده دستگاه IoT را تغییر دهید؟
@ -109,7 +109,7 @@
برای دریافت بهترین نتایج از یک دستهبندیکننده تصویر، باید مدل را با تصاویری که تا حد ممکن مشابه تصاویر مورد استفاده برای پیشبینی هستند آموزش دهید. اگر از دوربین گوشی خود برای ثبت تصاویر برای آموزش استفاده کردهاید، به عنوان مثال، کیفیت تصویر، وضوح و رنگ با دوربین متصل به دستگاه IoT متفاوت خواهد بود.


در تصویر بالا، تصویر موز سمت چپ با استفاده از دوربین Raspberry Pi گرفته شده است، و تصویر سمت راست از همان موز در همان مکان با استفاده از آیفون گرفته شده است. تفاوت کیفیت قابل توجه است - تصویر آیفون واضحتر، با رنگهای روشنتر و کنتراست بیشتر است.
میتوانید یک انیمیشن که نحوه باز کردن گیره و قرار دادن کابل را نشان میدهد در [مستندات شروع کار با ماژول دوربین رزبری پای](https://projects.raspberrypi.org/en/projects/getting-started-with-picamera/2) پیدا کنید.


1. کلاهک Grove Base را از رزبری پای جدا کنید.
1. کابل نواری را از شکاف دوربین در کلاهک Grove Base عبور دهید. مطمئن شوید که سمت آبی کابل به سمت پورتهای آنالوگ با برچسب **A0**، **A1** و غیره باشد.


1. کابل نواری را در پورت دوربین روی رزبری پای قرار دهید. دوباره، گیره پلاستیکی مشکی را بالا بکشید، کابل را وارد کنید، سپس گیره را به جای خود فشار دهید. سمت آبی کابل باید به سمت پورتهای USB و اترنت باشد.


1. کلاهک Grove Base را دوباره نصب کنید.
@ -101,7 +101,7 @@
خط `camera.rotation = 0` چرخش تصویر را تنظیم میکند. کابل نواری از پایین دوربین وارد میشود، اما اگر دوربین شما برای راحتتر نشانهگیری به سمت شیء مورد نظر چرخانده شده باشد، میتوانید این خط را به تعداد درجههای چرخش تغییر دهید.


برای مثال، اگر کابل نواری را از بالای چیزی آویزان کنید تا در بالای دوربین قرار گیرد، چرخش را به 180 تنظیم کنید:
شما میتوانید تصویری که گرفته شده است را ببینید و این مقادیر را در تب **Predictions** در Custom Vision مشاهده کنید.


> 💁 میتوانید این کد را در پوشه [code-classify/pi](../../../../../4-manufacturing/lessons/2-check-fruit-from-device/code-classify/pi) یا [code-classify/virtual-iot-device](../../../../../4-manufacturing/lessons/2-check-fruit-from-device/code-classify/virtual-iot-device) پیدا کنید.


## برنامهنویسی دوربین
@ -103,7 +103,7 @@
1. تصویری که دوربین در CounterFit میگیرد را پیکربندی کنید. میتوانید *Source* را به *File* تنظیم کنید، سپس یک فایل تصویر آپلود کنید، یا *Source* را به *WebCam* تنظیم کنید و تصاویر از وبکم شما گرفته شوند. مطمئن شوید که پس از انتخاب تصویر یا وبکم، دکمه **Set** را انتخاب کنید.


1. یک تصویر گرفته شده و بهعنوان `image.jpg` در پوشه فعلی ذخیره میشود. این فایل را در کاوشگر VS Code خواهید دید. فایل را انتخاب کنید تا تصویر را مشاهده کنید. اگر نیاز به چرخش دارد، خط `camera.rotation = 0` را بهطور مناسب بهروزرسانی کنید و دوباره عکس بگیرید.
1. پینهای پایه ArduCam باید به پینهای GPIO روی Wio Terminal متصل شوند. برای راحتتر پیدا کردن پینهای درست، برچسب پین GPIO که همراه Wio Terminal است را دور پینها بچسبانید:
@ -35,7 +35,7 @@ ArduCam سوکت Grove ندارد و به جای آن از طریق پینه
| SDA | 3 (I2C1_SDA) | داده سریال I2C |
| SCL | 5 (I2C1_SCL) | ساعت سریال I2C |


اتصالات GND و VCC منبع تغذیه ۵ ولت را به ArduCam ارائه میدهند. این دوربین با ۵ ولت کار میکند، برخلاف حسگرهای Grove که با ۳ ولت کار میکنند. این توان مستقیماً از اتصال USB-C که دستگاه را تغذیه میکند تأمین میشود.
@ -456,7 +456,7 @@ Wio Terminal فقط از کارتهای microSD با حداکثر ظرفیت
1. کارت microSD را خاموش کرده و با فشار دادن کمی و رها کردن آن را خارج کنید، و کارت بیرون میآید. ممکن است نیاز باشد از یک ابزار نازک برای این کار استفاده کنید. کارت microSD را به کامپیوتر خود متصل کنید تا تصاویر را مشاهده کنید.


💁 ممکن است چند تصویر طول بکشد تا تراز سفیدی دوربین تنظیم شود. شما این را بر اساس رنگ تصاویر گرفته شده متوجه خواهید شد، چند تصویر اول ممکن است رنگ غیرعادی داشته باشند. شما همیشه میتوانید با تغییر کد برای گرفتن چند تصویر که در تابع `setup` نادیده گرفته میشوند، این مشکل را حل کنید.
شما میتوانید تصویری که گرفته شده و این مقادیر را در تب **Predictions** در Custom Vision مشاهده کنید.


> 💁 میتوانید این کد را در پوشه [code-classify/wio-terminal](../../../../../4-manufacturing/lessons/2-check-fruit-from-device/code-classify/wio-terminal) پیدا کنید.


> اسکچنوت توسط [نیتیا ناراسیمهان](https://github.com/nitya). برای مشاهده نسخه بزرگتر روی تصویر کلیک کنید.
@ -33,11 +33,11 @@
محاسبات لبه شامل داشتن کامپیوترهایی است که دادههای IoT را تا حد ممکن نزدیک به جایی که دادهها تولید میشوند پردازش میکنند. به جای اینکه این پردازش در فضای ابری انجام شود، به لبه فضای ابری - شبکه داخلی شما - منتقل میشود.


در درسهای قبلی، شما دستگاههایی داشتید که دادهها را جمعآوری کرده و برای تجزیه و تحلیل به فضای ابری ارسال میکردند، و در آنجا توابع بدون سرور یا مدلهای هوش مصنوعی اجرا میشدند.


محاسبات لبه شامل انتقال برخی از خدمات ابری به کامپیوترهایی است که در همان شبکه دستگاههای IoT اجرا میشوند و فقط در صورت نیاز با فضای ابری ارتباط برقرار میکنند. به عنوان مثال، میتوانید مدلهای هوش مصنوعی را بر روی دستگاههای لبه اجرا کنید تا میوهها را از نظر رسیده بودن تحلیل کنید و فقط تحلیلها را به فضای ابری ارسال کنید، مانند تعداد میوههای رسیده در مقابل نارس.
Azure IoT Edge یک سرویس است که میتواند به شما کمک کند تا بارهای کاری را از فضای ابری به لبه منتقل کنید. شما یک دستگاه را به عنوان دستگاه لبه تنظیم میکنید و از فضای ابری میتوانید کد را به آن دستگاه لبه مستقر کنید. این امکان را به شما میدهد تا قابلیتهای فضای ابری و لبه را ترکیب کنید.
@ -99,7 +99,7 @@ IoT Edge در IoT Hub ساخته شده است، بنابراین میتوا
IoT Edge کد را از *کانتینرها* اجرا میکند - برنامههای خودکفایی که به صورت جداگانه از سایر برنامههای کامپیوتر شما اجرا میشوند. هنگامی که یک کانتینر اجرا میشود، مانند یک کامپیوتر جداگانه است که در داخل کامپیوتر شما اجرا میشود، با نرمافزار، خدمات و برنامههای خاص خود. بیشتر اوقات کانتینرها نمیتوانند به چیزی در کامپیوتر شما دسترسی داشته باشند مگر اینکه انتخاب کنید چیزی مانند یک پوشه را با کانتینر به اشتراک بگذارید. کانتینر سپس خدمات را از طریق یک پورت باز ارائه میدهد که میتوانید به آن متصل شوید یا آن را به شبکه خود ارائه دهید.


به عنوان مثال، میتوانید یک کانتینر با یک وبسایت که بر روی پورت 80 اجرا میشود، پورت پیشفرض HTTP، داشته باشید و سپس آن را از کامپیوتر خود نیز بر روی پورت 80 ارائه دهید.
@ -195,11 +195,11 @@ IoT Edge کد را از *کانتینرها* اجرا میکند - برنام
## آمادهسازی کانتینر برای استقرار


پس از دانلود مدل، باید آن را به یک کانتینر تبدیل کنید و سپس به یک رجیستری کانتینر ارسال کنید - مکانی آنلاین که میتوانید کانتینرها را ذخیره کنید. IoT Edge سپس کانتینر را از رجیستری دانلود کرده و به دستگاه شما ارسال میکند.
رجیستری کانتینری که در این درس استفاده خواهید کرد Azure Container Registry است. این سرویس رایگان نیست، بنابراین برای صرفهجویی در هزینه مطمئن شوید که پس از اتمام کار [پروژه خود را پاک کنید](../../../clean-up.md).
نمودار بالا برخی از اجزا و خدماتی که تاکنون در این درسها پوشش داده شدهاند و نحوه ارتباط آنها در یک معماری مرجع IoT را نشان میدهد.
@ -89,7 +89,7 @@
### نمونهسازی برنامه شما


نمودار بالا یک معماری مرجع برای این برنامه نمونه اولیه را نشان میدهد.
@ -124,7 +124,7 @@
نمونه اولیه تشخیص میوه شامل چندین مؤلفه است که با یکدیگر ارتباط برقرار میکنند.


* یک حسگر مجاورت که فاصله تا یک میوه را اندازهگیری کرده و آن را به IoT Hub ارسال میکند
* فرمان کنترل دوربین که از IoT Hub به دستگاه دوربین ارسال میشود


1. یک سر کابل Grove را به سوکت روی حسگر Time of Flight وارد کنید. این کابل فقط به یک جهت وارد میشود.
حسگر فاصله ایجاد خواهد شد و در لیست حسگرها ظاهر میشود.




1. یک سر کابل Grove را به سوکت روی حسگر Time of Flight وارد کنید. این کابل فقط از یک جهت وارد میشود.


> طراحی توسط [نیتیا ناراسیمهان](https://github.com/nitya). برای مشاهده نسخه بزرگتر روی تصویر کلیک کنید.
@ -36,7 +36,7 @@
طبقهبندی تصویر به معنای طبقهبندی کل تصویر است - اینکه احتمال تطابق کل تصویر با هر برچسب چقدر است. شما احتمالها را برای هر برچسبی که مدل با آن آموزش دیده است دریافت میکنید.


در مثال بالا، دو تصویر با استفاده از مدلی که برای طبقهبندی قوطیهای بادام هندی یا رب گوجهفرنگی آموزش دیده است، طبقهبندی شدهاند. تصویر اول یک قوطی بادام هندی است و نتایج زیر را از طبقهبندی تصویر دارد:
@ -60,7 +60,7 @@
> 🎓 *جعبههای محدودکننده* جعبههایی هستند که دور یک شیء کشیده میشوند.


تصویر بالا شامل یک قوطی بادام هندی و سه قوطی رب گوجهفرنگی است. تشخیصدهنده اشیا بادام هندی را شناسایی کرده و جعبه محدودکنندهای که شامل بادام هندی است را با احتمال 97.6% ارائه داده است. همچنین سه قوطی رب گوجهفرنگی شناسایی شدهاند و سه جعبه محدودکننده جداگانه برای هر قوطی ارائه شده است، هر کدام با احتمال تطابق با قوطی رب گوجهفرنگی.
@ -111,7 +111,7 @@
هنگام ایجاد پروژه، مطمئن شوید که از منبع `stock-detector-training` که قبلاً ایجاد کردهاید استفاده میکنید. نوع پروژه را *تشخیص اشیا* و دامنه را *محصولات روی قفسهها* انتخاب کنید.


✅ دامنه محصولات روی قفسهها بهطور خاص برای شناسایی موجودی روی قفسههای فروشگاه طراحی شده است. درباره دامنههای مختلف در [مستندات انتخاب دامنه در Microsoft Docs](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/select-domain?WT.mc_id=academic-17441-jabenn#object-detection) بیشتر بخوانید.
@ -133,11 +133,11 @@
1. بخش [آپلود و برچسبگذاری تصاویر در مستندات Microsoft](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/get-started-build-detector?WT.mc_id=academic-17441-jabenn#upload-and-tag-images) را دنبال کنید تا تصاویر آموزشی خود را آپلود کنید. برچسبهای مرتبط را بسته به نوع اشیایی که میخواهید شناسایی کنید ایجاد کنید.


هنگام کشیدن جعبههای محدودکننده برای اشیا، آنها را دقیقاً دور شیء بکشید. ممکن است کشیدن جعبهها برای همه تصاویر زمانبر باشد، اما ابزار تشخیص میدهد که جعبههای محدودکننده کجا باید باشند، که این کار را سریعتر میکند.
> 💁 اگر بیش از 15 تصویر برای هر شیء دارید، میتوانید پس از 15 تصویر آموزش دهید و از ویژگی **برچسبهای پیشنهادی** استفاده کنید. این ویژگی از مدل آموزشدیده برای شناسایی اشیا در تصاویر بدون برچسب استفاده میکند. سپس میتوانید اشیای شناساییشده را تأیید یا رد کنید و جعبههای محدودکننده را دوباره بکشید. این کار میتواند زمان زیادی را صرفهجویی کند.
@ -155,7 +155,7 @@
1. از دکمه **آزمایش سریع** برای آپلود تصاویر آزمایشی و تأیید شناسایی اشیا استفاده کنید. از تصاویری که قبلاً برای آموزش استفاده کردهاید استفاده نکنید.


1. همه تصاویر آزمایشی که در دسترس دارید را امتحان کنید و احتمالها را مشاهده کنید.
1. در دیالوگ *Publish Model*، منبع *Prediction resource* را به منبع `stock-detector-prediction` که در درس قبلی ایجاد کردهاید تنظیم کنید. نام را به صورت `Iteration2` باقی بگذارید و دکمه **Publish** را انتخاب کنید.
@ -76,7 +76,7 @@
همچنین مقدار *Prediction-Key* را کپی کنید. این یک کلید امن است که باید هنگام فراخوانی مدل ارسال شود. فقط برنامههایی که این کلید را ارسال کنند اجازه استفاده از مدل را دارند و سایر برنامهها رد میشوند.


✅ وقتی یک نسخه جدید منتشر میشود، نام متفاوتی خواهد داشت. فکر میکنید چگونه میتوانید نسخهای که دستگاه IoT استفاده میکند را تغییر دهید؟
@ -95,7 +95,7 @@
نتایج پیشبینی در تب **Predictions** در Custom Vision دارای جعبههای محدودکنندهای هستند که روی تصویر ارسال شده برای پیشبینی ترسیم شدهاند.


در تصویر بالا، ۴ قوطی رب گوجهفرنگی شناسایی شدهاند. در نتایج، یک مربع قرمز برای هر شیء شناسایی شده در تصویر ترسیم شده است که جعبه محدودکننده برای تصویر را نشان میدهد.
@ -103,7 +103,7 @@
جعبههای محدودکننده با ۴ مقدار تعریف میشوند - بالا، چپ، ارتفاع و عرض. این مقادیر در مقیاس ۰-۱ هستند و موقعیتها را به عنوان درصدی از اندازه تصویر نشان میدهند. مبدا (موقعیت ۰,۰) گوشه بالا سمت چپ تصویر است، بنابراین مقدار بالا فاصله از بالا است و پایین جعبه محدودکننده برابر با بالا به علاوه ارتفاع است.


تصویر بالا ۶۰۰ پیکسل عرض و ۸۰۰ پیکسل ارتفاع دارد. جعبه محدودکننده از ۳۲۰ پیکسل پایین شروع میشود، که مقدار بالا برابر با ۰.۴ است (۸۰۰ x 0.4 = 320). از سمت چپ، جعبه محدودکننده از ۲۴۰ پیکسل عرض شروع میشود، که مقدار چپ برابر با ۰.۴ است (۶۰۰ x 0.4 = 240). ارتفاع جعبه محدودکننده ۲۴۰ پیکسل است، که مقدار ارتفاع برابر با ۰.۳ است (۸۰۰ x 0.3 = 240). عرض جعبه محدودکننده ۱۲۰ پیکسل است، که مقدار عرض برابر با ۰.۲ است (۶۰۰ x 0.2 = 120).
@ -118,7 +118,7 @@
میتوانید از جعبههای محدودکننده همراه با احتمالات برای ارزیابی دقت شناسایی استفاده کنید. برای مثال، یک مدل تشخیص اشیا میتواند چندین شیء را که با هم همپوشانی دارند شناسایی کند، مانند شناسایی یک قوطی داخل دیگری. کد شما میتواند جعبههای محدودکننده را بررسی کند، بفهمد که این غیرممکن است و هر شیء که همپوشانی قابل توجهی با سایر اشیا دارد را نادیده بگیرد.


در مثال بالا، یک جعبه محدودکننده یک قوطی رب گوجهفرنگی را با احتمال ۷۸.۳٪ شناسایی کرده است. یک جعبه محدودکننده دوم کمی کوچکتر است و داخل جعبه اول با احتمال ۶۴.۳٪ قرار دارد. کد شما میتواند جعبههای محدودکننده را بررسی کند، ببیند که کاملاً همپوشانی دارند و احتمال پایینتر را نادیده بگیرد زیرا امکان ندارد یک قوطی داخل دیگری باشد.
شما میتوانید تصویری که گرفته شده و این مقادیر را در تب **Predictions** در Custom Vision مشاهده کنید.


> 💁 میتوانید این کد را در پوشه [code-detect/pi](../../../../../5-retail/lessons/2-check-stock-device/code-detect/pi) یا [code-detect/virtual-iot-device](../../../../../5-retail/lessons/2-check-stock-device/code-detect/virtual-iot-device) پیدا کنید.
شما قادر خواهید بود تصویری که گرفته شده و این مقادیر را در تب **Predictions** در Custom Vision مشاهده کنید.


> 💁 میتوانید این کد را در پوشه [code-detect/wio-terminal](../../../../../5-retail/lessons/2-check-stock-device/code-detect/wio-terminal) پیدا کنید.


> اسکچنوت توسط [نیتیا ناراسیمهان](https://github.com/nitya). برای مشاهده نسخه بزرگتر روی تصویر کلیک کنید.
@ -51,7 +51,7 @@
میکروفونهای داینامیک برای کار کردن به برق نیاز ندارند، سیگنال الکتریکی کاملاً توسط میکروفون ایجاد میشود.


* ریبون - میکروفونهای ریبون مشابه میکروفونهای داینامیک هستند، با این تفاوت که به جای دیافراگم یک نوار فلزی دارند. این نوار در یک میدان مغناطیسی حرکت میکند و جریان الکتریکی ایجاد میکند. مانند میکروفونهای داینامیک، میکروفونهای ریبون برای کار کردن به برق نیاز ندارند.
@ -59,11 +59,11 @@
* کندانسور - میکروفونهای کندانسور دارای یک دیافراگم فلزی نازک و یک صفحه پشتی فلزی ثابت هستند. برق به هر دوی اینها اعمال میشود و با ارتعاش دیافراگم، بار استاتیک بین صفحات تغییر میکند و سیگنال تولید میشود. میکروفونهای کندانسور برای کار کردن به برق نیاز دارند - که به آن *Phantom power* گفته میشود.


* MEMS - میکروفونهای سیستمهای میکروالکترومکانیکی، یا MEMS، میکروفونهایی روی یک تراشه هستند. آنها دارای یک دیافراگم حساس به فشار هستند که روی یک تراشه سیلیکونی حک شده و مشابه یک میکروفون کندانسور کار میکنند. این میکروفونها میتوانند بسیار کوچک باشند و در مدارها ادغام شوند.


در تصویر بالا، تراشهای که با **LEFT** برچسبگذاری شده است یک میکروفون MEMS است، با یک دیافراگم کوچک که کمتر از یک میلیمتر عرض دارد.
@ -159,7 +159,7 @@
## تبدیل گفتار به متن


مانند طبقهبندی تصویر در پروژه قبلی، خدمات هوش مصنوعی از پیش ساختهای وجود دارند که میتوانند گفتار را به عنوان یک فایل صوتی دریافت کرده و به متن تبدیل کنند. یکی از این خدمات، سرویس گفتار است که بخشی از خدمات شناختی، خدمات هوش مصنوعی از پیش ساختهای است که میتوانید در برنامههای خود استفاده کنید.
1. یک سر کابل Grove را به سوکت روی ماژول دکمه وارد کنید. کابل فقط به یک جهت وارد میشود.
1. با خاموش بودن رزبری پای، سر دیگر کابل Grove را به سوکت دیجیتال با علامت **D5** روی هت پایه Grove که به پای متصل است وصل کنید. این سوکت دومین سوکت از سمت چپ در ردیف سوکتهای کنار پینهای GPIO است.


1. اگر از ReSpeaker 2-Mics Pi HAT استفاده میکنید، میتوانید پایه Grove را بردارید و سپس HAT ReSpeaker را جایگزین کنید.


شما در ادامه این درس به یک دکمه Grove نیاز خواهید داشت، اما یکی از این دکمهها در این HAT تعبیه شده است، بنابراین پایه Grove لازم نیست.
✅ اطلاعات بیشتر درباره DMA را در [صفحه دسترسی مستقیم به حافظه در ویکیپدیا](https://wikipedia.org/wiki/Direct_memory_access) بخوانید.


DMAC میتواند صدا را از ADC در فواصل ثابت ضبط کند، مانند 16,000 بار در ثانیه برای صدای 16KHz. این دادههای ضبطشده را میتواند به یک بافر حافظه از پیش تخصیصیافته بنویسد، و وقتی این بافر پر شد، آن را برای پردازش در اختیار کد شما قرار دهد. استفاده از این حافظه ممکن است ضبط صدا را به تأخیر بیندازد، اما میتوانید چندین بافر تنظیم کنید. DMAC به بافر 1 مینویسد، سپس وقتی پر شد، کد شما را برای پردازش بافر 1 مطلع میکند، در حالی که DMAC به بافر 2 مینویسد. وقتی بافر 2 پر شد، کد شما را مطلع میکند و دوباره به نوشتن در بافر 1 بازمیگردد. به این ترتیب، تا زمانی که هر بافر را در زمانی کمتر از زمان پر شدن آن پردازش کنید، هیچ دادهای از دست نخواهد رفت.
شما میتوانید مدلهای درک زبان را با استفاده از LUIS، یک سرویس درک زبان از مایکروسافت که بخشی از خدمات شناختی است، ایجاد کنید.
@ -169,7 +169,7 @@
1. همانطور که هر مثال را وارد میکنید، LUIS شروع به شناسایی موجودیتها میکند و هر موجودیتی که پیدا کند را زیرخط و برچسبگذاری میکند.


سرویس گفتاری که در درسهای گذشته استفاده کردهاید، قابلیتهای ترجمه برای تشخیص گفتار دارد. هنگامی که گفتار را تشخیص میدهید، میتوانید نه تنها متن گفتار را به همان زبان درخواست کنید، بلکه به زبانهای دیگر نیز.
سرویس مترجم یک سرویس ترجمه اختصاصی است که میتواند متن را از یک زبان به یک یا چند زبان هدف ترجمه کند. علاوه بر ترجمه، از طیف گستردهای از ویژگیهای اضافی مانند ماسک کردن کلمات نامناسب پشتیبانی میکند. همچنین به شما اجازه میدهد ترجمه خاصی برای یک کلمه یا جمله خاص ارائه دهید، برای کار با اصطلاحاتی که نمیخواهید ترجمه شوند یا ترجمه شناختهشده خاصی دارند.
> برای مثال، اگر LUIS را به زبان انگلیسی آموزش دادهاید اما میخواهید از زبان فرانسوی بهعنوان زبان کاربر استفاده کنید، میتوانید جملاتی مانند "set a 2 minute and 27 second timer" را از انگلیسی به فرانسوی با استفاده از Bing Translate ترجمه کنید، سپس از دکمه **Listen translation** برای گفتن ترجمه به میکروفون خود استفاده کنید.
>
> 
> 
1. کلید API مترجم را زیر `speech_api_key` اضافه کنید:
> برای مثال، اگر LUIS را به زبان انگلیسی آموزش دادهاید اما میخواهید از زبان فرانسوی بهعنوان زبان کاربر استفاده کنید، میتوانید جملاتی مانند "set a 2 minute and 27 second timer" را از انگلیسی به فرانسوی با استفاده از Bing Translate ترجمه کنید، سپس از دکمه **Listen translation** برای گفتن ترجمه به میکروفون خود استفاده کنید.
>
> 
> 
1. اعلانهای `recognizer_config` و `recognizer` را با موارد زیر جایگزین کنید:
> برای مثال، اگر LUIS را به زبان انگلیسی آموزش دادهاید اما میخواهید از زبان فرانسوی بهعنوان زبان کاربر استفاده کنید، میتوانید جملاتی مانند "set a 2 minute and 27 second timer" را از انگلیسی به فرانسوی با استفاده از Bing Translate ترجمه کنید، سپس از دکمه **Listen translation** برای گفتن ترجمه به میکروفون خود استفاده کنید.
>
> 
> 
1. کلید API مترجم و مکان آن را زیر `SPEECH_LOCATION` اضافه کنید:
اگر در ساخت برنامههای هوش مصنوعی گیر کردهاید یا سوالی دارید، به جمع یادگیرندگان و توسعهدهندگان با تجربه در بحثهای مربوط به MCP بپیوندید. این یک جامعه حمایتی است که در آن سوالات پذیرفته میشوند و دانش به صورت آزادانه به اشتراک گذاشته میشود.
اگر گیر کردهاید یا سوالی درباره ساخت برنامههای هوش مصنوعی دارید، به همراه یادگیرندگان و توسعهدهندگان باتجربه در بحثهای پیرامون MCP بپیوندید. این یک جامعه حمایتی است که در آن پرسشها استقبال میشوند و دانش به صورت آزادانه به اشتراک گذاشته میشود.
برای شروع استفاده از این منابع، مراحل زیر را دنبال کنید:
1. **کتابخانه را فورک کنید**: روی [](https://GitHub.com/microsoft/IoT-For-Beginners/fork) کلیک کنید
2. **کتابخانه را کلون کنید**: `git clone https://github.com/microsoft/IoT-For-Beginners.git`
3. [**به Discord Microsoft Foundry بپیوندید و با کارشناسان و توسعهدهندگان همفکر ملاقات کنید**](https://discord.com/invite/ByRwuEEgH4)
برای شروع استفاده از این منابع مراحل زیر را دنبال کنید:
1. **شاخهای از مخزن بسازید**: کلیک کنید [](https://GitHub.com/microsoft/IoT-For-Beginners/fork)
2. **مخزن را کلون کنید**: `git clone https://github.com/microsoft/IoT-For-Beginners.git`
3. [**به Discord مایکروسافت فاندری بپیوندید و با کارشناسان و توسعهدهندگان همسطح خود ملاقات کنید**](https://discord.com/invite/ByRwuEEgH4)
### 🌐 پشتیبانی چندزبانه
@ -29,123 +29,133 @@
#### پشتیبانی شده از طریق GitHub Action (خودکار و همیشه بهروز)
> این مخزن شامل بیش از ۵۰ ترجمه زبان است که اندازه دانلود را به طور قابل توجهی افزایش میدهد. برای کلون کردن بدون ترجمهها، از sparse checkout استفاده کنید:
> **ترجیح میدهید محلی کلون کنید؟**
>
> این مخزن شامل بیش از ۵۰ ترجمه زبان است که حجم دانلود را بهشدت افزایش میدهد. برای کلون کردن بدون ترجمهها، از sparse checkout استفاده کنید:
> git sparse-checkout set --no-cone "/*" "!translations" "!translated_images"
> ```
>
> این به شما همه چیز مورد نیاز برای انجام دوره را با دانلودی بسیار سریعتر میدهد.
<!-- CO-OP TRANSLATOR LANGUAGES TABLE END -->
# اینترنت اشیاء برای مبتدیان - یک برنامه درسی
# IoT برای مبتدیان - یک برنامه آموزشی
مدافعان ابر Azure در مایکروسافت خوشحالند که یک برنامه درسی 12 هفتهای و 24 درس را درباره اصول اینترنت اشیاء ارائه دهند. هر درس شامل کوییزهای قبل و بعد از درس، دستورالعملهای مکتوب برای تکمیل درس، یک راهحل، یک تکلیف و موارد بیشتر است. روش آموزشی مبتنی بر پروژه ما به شما اجازه میدهد همزمان با ساختن یاد بگیرید، که روشی اثبات شده برای تثبیت مهارتهای جدید است.
مدافعان ابری آزور در مایکروسافت خوشحالند یک دوره آموزشی ۱۲ هفتهای شامل ۲۴ درس درباره مبانی اینترنت اشیاء ارائه دهند. هر درس شامل آزمونهای قبل و بعد از درس، دستورالعملهای نوشتاری برای تکمیل درس، یک راهحل، یک تمرین و موارد دیگر است. روش آموزش مبتنی بر پروژه ما به شما امکان میدهد در حین ساخت یاد بگیرید، روشی اثبات شده برای «پایدار شدن» مهارتهای جدید.
پروژهها سفر غذا را از مزرعه تا میز پوشش میدهند. این شامل کشاورزی، لجستیک، تولید، خردهفروشی و مصرفکننده - همه حوزههای محبوب صنعت برای دستگاههای اینترنت اشیاء است.
پروژهها جریان غذا را از مزرعه تا میز بررسی میکنند. این شامل کشاورزی، لجستیک، تولید، فروش و مصرفکننده است - همه حوزههای محبوب صنعتی برای دستگاههای IoT.


> یادداشت تصویری توسط [Nitya Narasimhan](https://github.com/nitya). برای نسخه بزرگتر روی تصویر کلیک کنید.
> یادداشت طرح توسط [Nitya Narasimhan](https://github.com/nitya). برای نسخه بزرگتر روی تصویر کلیک کنید.
**از نویسندگان ما، [Jen Fox](https://github.com/jenfoxbot)، [Jen Looper](https://github.com/jlooper)، [Jim Bennett](https://github.com/jimbobbennett)، و هنرمند یادداشت تصویری ما [Nitya Narasimhan](https://github.com/nitya) صمیمانه سپاسگزاریم.**
**از نویسندگان ما، [Jen Fox](https://github.com/jenfoxbot)، [Jen Looper](https://github.com/jlooper)، [Jim Bennett](https://github.com/jimbobbennett)، و هنرمند یادداشت طرح ما [Nitya Narasimhan](https://github.com/nitya) صمیمانه تشکر میکنیم.**
**همچنین از تیم ما از [دانشجویان سفیر مایکروسافت](https://studentambassadors.microsoft.com?WT.mc_id=academic-17441-jabenn) که این برنامه درسی را مرور و ترجمه کردهاند سپاسگزاریم - [Aditya Garg](https://github.com/AdityaGarg00), [Anurag Sharma](https://github.com/Anurag-0-1-A), [Arpita Das](https://github.com/Arpiiitaaa), [Aryan Jain](https://www.linkedin.com/in/aryan-jain-47a4a1145/), [Bhavesh Suneja](https://github.com/EliteWarrior315), [Faith Hunja](https://faithhunja.github.io/), [Lateefah Bello](https://www.linkedin.com/in/lateefah-bello/), [Manvi Jha](https://github.com/Severus-Matthew), [Mireille Tan](https://www.linkedin.com/in/mireille-tan-a4834819a/), [Mohammad Iftekher (Iftu) Ebne Jalal](https://github.com/Iftu119), [Mohammad Zulfikar](https://github.com/mohzulfikar), [Priyanshu Srivastav](https://www.linkedin.com/in/priyanshu-srivastav-b067241ba), [Thanmai Gowducheruvu](https://github.com/innovation-platform), و [Zina Kamel](https://www.linkedin.com/in/zina-kamel/).**
**همچنین از تیم ما از [سفیران دانشجویی مایکروسافت](https://studentambassadors.microsoft.com?WT.mc_id=academic-17441-jabenn) که این دوره را بازبینی و ترجمه کردهاند نیز سپاسگزاریم - [Aditya Garg](https://github.com/AdityaGarg00)، [Anurag Sharma](https://github.com/Anurag-0-1-A)، [Arpita Das](https://github.com/Arpiiitaaa)، [Aryan Jain](https://www.linkedin.com/in/aryan-jain-47a4a1145/)، [Bhavesh Suneja](https://github.com/EliteWarrior315)، [Faith Hunja](https://faithhunja.github.io/)، [Lateefah Bello](https://www.linkedin.com/in/lateefah-bello/)، [Manvi Jha](https://github.com/Severus-Matthew)، [Mireille Tan](https://www.linkedin.com/in/mireille-tan-a4834819a/)، [Mohammad Iftekher (Iftu) Ebne Jalal](https://github.com/Iftu119)، [Mohammad Zulfikar](https://github.com/mohzulfikar)، [Priyanshu Srivastav](https://www.linkedin.com/in/priyanshu-srivastav-b067241ba)، [Thanmai Gowducheruvu](https://github.com/innovation-platform)، و [Zina Kamel](https://www.linkedin.com/in/zina-kamel/).**
> 🎥 روی تصویر بالا برای دیدن یک ویدئو درباره پروژه کلیک کنید!
> 🎥 برای دیدن ویدئو درباره پروژه روی تصویر بالا کلیک کنید!
> **معلمان**، ما [پیشنهاداتی ارائه دادهایم](for-teachers.md) در مورد نحوه استفاده از این برنامه درسی. اگر میخواهید درسهای خود را ایجاد کنید، قالب درسی نیز اضافه کردهایم [lesson template](lesson-template/README.md).
> **معلمان**، ما [برخی پیشنهادات](for-teachers.md) را درباره نحوه استفاده از این دوره ارائه دادهایم. اگر میخواهید درسهای خود را ایجاد کنید، ما همچنین یک [قالب درس](lesson-template/README.md) را وارد کردهایم.
> **[دانشآموزان](https://aka.ms/student-page)**، برای استفاده از این برنامه درسی به تنهایی، کل مخزن را فورک کنید و تمرینها را خودتان انجام دهید، ابتدا با یک کوییز قبل از درس شروع کنید، سپس درس را بخوانید و بقیه فعالیتها را کامل کنید. سعی کنید پروژهها را با درک درسها بسازید، نه کپی کردن کد راهحل؛ با این حال کد راهحل در پوشههای /solutions هر درس پروژهمحور موجود است. ایده دیگر این است که یک گروه مطالعه با دوستان تشکیل دهید و با هم محتوا را مرور کنید. برای مطالعه بیشتر، مایکروسافت لرن را توصیه میکنیم [Microsoft Learn](https://docs.microsoft.com/users/jimbobbennett/collections/ke2ehd351jopwr?WT.mc_id=academic-17441-jabenn).
> **[دانشآموزان](https://aka.ms/student-page)**، برای استفاده مستقل از این دوره، کل مخزن را شاخه گرفته و تمرینها را به تنهایی انجام دهید، شروع با یک آزمون پیش از درس، سپس مطالعه درس و انجام سایر فعالیتها. سعی کنید پروژهها را با درک درسها بسازید نه صرفا کپی کردن کد راهحل؛ هر چند آن کد در پوشههای /solutions در هر درس متمرکز بر پروژه موجود است. ایده دیگر تشکیل یک گروه مطالعه با دوستان و مرور محتوا بهصورت گروهی است. برای مطالعه بیشتر، ما [Microsoft Learn](https://docs.microsoft.com/users/jimbobbennett/collections/ke2ehd351jopwr?WT.mc_id=academic-17441-jabenn) را توصیه میکنیم.
برای دریافت نمای کلی ویدیویی این دوره، این ویدئو را ببینید:
> 🎥 روی تصویر بالا برای دیدن یک ویدئو درباره پروژه کلیک کنید!
> 🎥 برای دیدن ویدئو درباره پروژه روی تصویر بالا کلیک کنید!
## روش آموزشی
## روش آموزش
ما دو اصل آموزشی را در ساخت این برنامه درسی انتخاب کردهایم: اطمینان از مبتنی بودن آن بر پروژه و اینکه شامل کوییزهای مکرر باشد. تا پایان این سری، دانشآموزان یک سیستم مانیتورینگ و آبیاری گیاه، ردیاب وسیله نقلیه، یک سیستم کارخانه هوشمند برای پیگیری و بررسی غذا، و تایمر آشپزی کنترلشده با صدا ساختهاند و اصول اولیه اینترنت اشیاء از جمله نحوه نوشتن کد دستگاه، اتصال به ابر، تحلیل تلمتری و اجرای هوش مصنوعی در لبه را یاد گرفتهاند.
در ساخت این دوره، دو اصل آموزشی را انتخاب کردهایم: اطمینان از اینکه مبتنی بر پروژه است و شامل آزمونهای مکرر میباشد. در پایان این سری، دانشآموزان سیستمی برای مانیتورینگ و آبیاری گیاه، ردیاب وسیله نقلیه، تنظیم هوشمند کارخانه برای بررسی و ردگیری غذا، و تایمر آشپزی با کنترل صوتی ساختهاند و اصول اولیه اینترنت اشیاء از جمله نحوه نوشتن کد دستگاه، اتصال به ابر، تحلیل تلماتری و اجرای هوش مصنوعی در لبه را یاد گرفتهاند.
با اطمینان از هماهنگی محتوا با پروژهها، فرایند یادگیری برای دانشآموزان جذابتر شده و حفظ مفاهیم افزایش مییابد.
اطمینان از هماهنگی محتوا با پروژهها، فرآیند یادگیری را برای دانشآموزان جذابتر میکند و حفظ مفاهیم را افزایش میدهد.
علاوه بر این، یک کوییز کمفشار قبل از کلاس نیت دانشآموز برای یادگیری موضوع را تنظیم میکند، در حالی که کوییز دوم بعد از کلاس به حفظ بیشتر کمک میکند. این برنامه درسی طوری طراحی شده که انعطافپذیر و سرگرمکننده باشد و میتوان آن را کامل یا بخش به بخش طی کرد. پروژهها کوچک شروع شده و تا پایان دوره ۱۲ هفتهای به طور فزایندهای پیچیده میشوند.
علاوه بر این، یک آزمون کماسترس پیش از کلاس نیت دانشآموز را برای یادگیری موضوع تنظیم میکند، در حالی که آزمون دوم پس از کلاس موجب حفظ بیشتر میشود. این دوره به گونهای طراحی شده که منعطف و سرگرمکننده باشد و بتوان آن را بهطور کامل یا بخشی از آن را گذراند. پروژهها از کوچک شروع شده و تا پایان چرخه ۱۲ هفتهای به تدریج پیچیدهتر میشوند.
هر پروژه مبتنی بر سختافزار واقعی در دسترس دانشآموزان و علاقمندان است. هر پروژه به حوزه مخصوص خودش نگاه میکند و دانش زمینهای مرتبط ارائه میدهد. برای موفقیت به عنوان توسعهدهنده، درک حوزهای که در آن مشکل حل میکنید مفید است، ارائه این دانش زمینهای به دانشآموزان اجازه میدهد درباره راهحلها و یادگیریهای اینترنت اشیاء خود در زمینه نوع واقعی از مشکلی که ممکن است به عنوان توسعهدهنده اینترنت اشیاء از آنها خواسته شود فکر کنند. دانشآموزان دلیل «چرا»ی راهحلهایی را که میسازند میآموزند و به کاربر نهایی نیز احترام میگذارند.
هر پروژه بر اساس سختافزار واقعی در دسترس دانشآموزان و علاقهمندان استوار است. هر پروژه به حوزه خاص پروژه میپردازد و دانش پسزمینه مرتبط را فراهم میکند. برای موفقیت در توسعه، درک حوزهای که در آن مشکلات حل میکنید کمککننده است؛ فراهم کردن این دانش پسزمینه به دانشآموزان اجازه میدهد تا درباره راهحلهای IoT و یادگیری خود در زمینه نوع مشکلات واقعی که ممکن است از آنها خواسته شود به عنوان توسعهدهنده IoT حل کنند، فکر کنند. دانشآموزان «چرایی» راهحلهایی که میسازند را میآموزند و قدرشناسی نسبت به کاربر نهایی پیدا میکنند.
## سختافزار
ما دو انتخاب سختافزاری اینترنت اشیا برای استفاده در پروژهها داریم که بسته به ترجیح شخصی، دانش زبان برنامهنویسی یا علایق، اهداف یادگیری و دسترسی متفاوت هستند. همچنین نسخهای به نام «سختافزار مجازی» را برای کسانی که به سختافزار دسترسی ندارند یا میخواهند قبل از خرید، بیشتر یاد بگیرند ارائه دادهایم. شما میتوانید اطلاعات بیشتر را در صفحه [hardware](./hardware.md) بخوانید، که شامل فهرست خرید و لینکهایی برای خرید کیتهای کامل از دوستان ما در Seeed Studio است.
ما دو انتخاب سختافزاری اینترنت اشیاء برای استفاده در پروژهها داریم که بستگی به ترجیحات شخصی، دانش زبان برنامهنویسی، اهداف یادگیری و دسترسی دارد. نسخهای از سختافزار «مجازی» نیز برای کسانی که به سختافزار دسترسی ندارند یا میخواهند قبل از خرید بیشتر یاد بگیرند ارائه شده است. شما میتوانید بیشتر بخوانید و فهرست خرید را در [صفحه سختافزار](./hardware.md) پیدا کنید، شامل لینکهایی برای خرید کیتهای کامل از دوستان ما در Seeed Studio.
> 💁 راهنمای [رفتار](CODE_OF_CONDUCT.md)، [مشارکت](CONTRIBUTING.md)، و [ترجمه](TRANSLATIONS.md) ما را بیابید. ما از بازخورد سازنده شما استقبال میکنیم!
> 💁 دستورالعملهای [قوانین رفتاری](CODE_OF_CONDUCT.md)، [مشارکت](CONTRIBUTING.md) و [ترجمه](TRANSLATIONS.md) ما را بیابید. ما از بازخورد سازنده شما استقبال میکنیم!
>
> 🔧 مشکلی دارید؟ راهنمای [عیبیابی](TROUBLESHOOTING.md) ما را برای راهحلهای مشکلات رایج بررسی کنید.
> 🔧 مشکلی دارید؟ راهنمای [عیبیابی](TROUBLESHOOTING.md) ما را برای حل مشکلات رایج بررسی کنید.
## هر درس شامل:
## هر درس شامل موارد زیر است:
- اسکچنوت
- ویدئوی تکمیلی اختیاری
- آزمون گرمکردن پیش از درس
- درس کتبی
- برای درسهای مبتنی بر پروژه، راهنمای گام به گام ساخت پروژه
- بررسی دانش
- نکات کلیدی بصورت طرح یادداشت
- ویدیوی تکمیلی اختیاری
- آزمون گرمکننده قبل از درس
- درس مکتوب
- برای درسهای پروژهمحور، راهنمای گامبهگام ساخت پروژه
- ارزیابیهای دانش
- یک چالش
- مطالعه تکمیلی
- مطالعات تکمیلی
- تمرین
- [آزمون پس از درس](https://ff-quizzes.netlify.app/en/)
> **نکتهای درباره آزمونها**: تمامی آزمونها در پوشه quiz-app قرار دارند، با مجموع ۴۸ آزمون که هر کدام شامل سه سؤال است. این آزمونها از درسها پیوند داده شدهاند اما میتوان اپلیکیشن آزمون را به صورت محلی اجرا کرد یا در Azure مستقر نمود؛ دستورالعملها در پوشه `quiz-app` آمده است. این آزمونها به تدریج بومیسازی میشوند.
> **تذکری درباره آزمونها**: تمام آزمونها در پوشه quiz-app قرار دارند، که شامل ۴۸ آزمون هر کدام با سه سوال هستند. آنها از داخل درسها لینک شدهاند، اما اپلیکیشن آزمون میتواند به صورت محلی اجرا یا روی Azure مستقر شود؛ دستورالعمل را در پوشه `quiz-app` دنبال کنید. این آزمونها به تدریج محلیسازی میشوند.
## دروس
| | نام پروژه | مفاهیم تدریس شده | اهداف یادگیری | درس مرتبط |
| ۰۱ | [شروع به کار](./1-getting-started/README.md) | مقدمهای بر اینترنت اشیا | اصول پایه اینترنت اشیا و اجزای اصلی راهحلهای اینترنت اشیا مانند حسگرها و خدمات ابری را بیاموزید در حالی که دستگاه اینترنت اشیای خود را راهاندازی میکنید | [مقدمهای بر اینترنت اشیا](./1-getting-started/lessons/1-introduction-to-iot/README.md) |
| ۰۲ | [شروع به کار](./1-getting-started/README.md) | بررسی عمیقتر اینترنت اشیا | درباره اجزای یک سیستم اینترنت اشیا، میکروکنترلرها و کامپیوترهای تک برد بیشتر بیاموزید | [بررسی عمیقتر اینترنت اشیا](./1-getting-started/lessons/2-deeper-dive/README.md) |
| ۰۳ | [شروع به کار](./1-getting-started/README.md) | تعامل با دنیای فیزیکی با حسگرها و عملگرها | درباره حسگرها برای جمعآوری دادهها از دنیای فیزیکی و عملگرها برای ارسال بازخورد بیاموزید، در حالی که یک چراغ شبتاب میسازید | [تعامل با دنیای فیزیکی با حسگرها و عملگرها](./1-getting-started/lessons/3-sensors-and-actuators/README.md) |
| ۰۴ | [شروع به کار](./1-getting-started/README.md) | اتصال دستگاه به اینترنت | درباره نحوه اتصال دستگاه اینترنت اشیا به اینترنت برای ارسال و دریافت پیامها با اتصال چراغ شبتاب خود به یک کارگزار MQTT بیاموزید | [اتصال دستگاه به اینترنت](./1-getting-started/lessons/4-connect-internet/README.md) |
| ۰۵ | [مزرعه](./2-farm/README.md) | پیشبینی رشد گیاه | یاد بگیرید چگونه رشد گیاه را با استفاده از دادههای دمایی که توسط دستگاه اینترنت اشیا ثبت شده پیشبینی کنید | [پیشبینی رشد گیاه](./2-farm/lessons/1-predict-plant-growth/README.md) |
| ۰۶ | [مزرعه](./2-farm/README.md) | تشخیص رطوبت خاک | یاد بگیرید چگونه رطوبت خاک را تشخیص دهید و حسگر رطوبت خاک را کالیبره کنید | [تشخیص رطوبت خاک](./2-farm/lessons/2-detect-soil-moisture/README.md) |
| ۰۷ | [مزرعه](./2-farm/README.md) | آبیاری خودکار گیاه | یاد بگیرید چگونه آبیاری را با استفاده از رله و MQTT زمانبندی و خودکار کنید | [آبیاری خودکار گیاه](./2-farm/lessons/3-automated-plant-watering/README.md) |
| ۰۸ | [مزرعه](./2-farm/README.md) | مهاجرت گیاه خود به ابر | درباره ابر و خدمات اینترنت اشیا میزبانی شده در ابر و نحوه اتصال گیاه خود به یکی از این خدمات به جای کارگزار عمومی MQTT بیاموزید | [مهاجرت گیاه خود به ابر](./2-farm/lessons/4-migrate-your-plant-to-the-cloud/README.md) |
| ۰۹ | [مزرعه](./2-farm/README.md) | مهاجرت منطق برنامهنویسی خود به ابر | یاد بگیرید چگونه میتوانید منطق برنامهنویسی در ابر بنویسید که به پیامهای اینترنت اشیا پاسخ میدهد | [مهاجرت منطق برنامهنویسی به ابر](./2-farm/lessons/5-migrate-application-to-the-cloud/README.md) |
| ۱۰ | [مزرعه](./2-farm/README.md) | محافظت از گیاه خود | درباره امنیت در اینترنت اشیا و نحوه محافظت از گیاه خود با کلیدها و گواهینامهها بیاموزید | [محافظت از گیاه خود](./2-farm/lessons/6-keep-your-plant-secure/README.md) |
| ۱۱ | [حمل و نقل](./3-transport/README.md) | ردیابی موقعیت مکانی | درباره ردیابی موقعیت GPS برای دستگاههای اینترنت اشیا بیاموزید | [ردیابی موقعیت مکانی](./3-transport/lessons/1-location-tracking/README.md) |
| ۱۲ | [حمل و نقل](./3-transport/README.md) | ذخیره دادههای موقعیت | یاد بگیرید چگونه دادههای اینترنت اشیا را ذخیره کنید تا بعداً قابل مشاهده یا تحلیل باشند | [ذخیره دادههای موقعیت](./3-transport/lessons/2-store-location-data/README.md) |
| ۱۳ | [حمل و نقل](./3-transport/README.md) | تجسم دادههای موقعیت | درباره تجسم دادههای موقعیت روی نقشه و چگونگی نمایش نقشهها از دنیای واقعی سهبعدی به صورت دو بعدی بیاموزید | [تجسم دادههای موقعیت](./3-transport/lessons/3-visualize-location-data/README.md) |
| ۱۴ | [حمل و نقل](./3-transport/README.md) | حصارهای جغرافیایی| درباره حصارهای جغرافیایی و اینکه چگونه میتوانند برای هشدار هنگام نزدیک شدن خودروها در زنجیره تامین به مقصدشان استفاده شوند بیاموزید | [حصارهای جغرافیایی](./3-transport/lessons/4-geofences/README.md) |
| ۱۵ | [تولید](./4-manufacturing/README.md) | آموزش تشخیص کیفیت میوه | درباره آموزش یک طبقهبند تصویر در ابر برای تشخیص کیفیت میوه بیاموزید| [آموزش تشخیص کیفیت میوه](./4-manufacturing/lessons/1-train-fruit-detector/README.md) |
| ۱۶ | [تولید](./4-manufacturing/README.md) | بررسی کیفیت میوه از دستگاه اینترنت اشیا | درباره استفاده از دستگاه تشخیص کیفیت میوه خود از دستگاه اینترنت اشیا بیاموزید | [بررسی کیفیت میوه از دستگاه اینترنت اشیا](./4-manufacturing/lessons/2-check-fruit-from-device/README.md) |
| ۱۷ | [تولید](./4-manufacturing/README.md) | اجرای دستگاه تشخیص میوه روی لبه شبکه | درباره اجرای دستگاه تشخیص میوه روی یک دستگاه اینترنت اشیا در لبه شبکه بیاموزید | [اجرای دستگاه تشخیص میوه روی لبه شبکه](./4-manufacturing/lessons/3-run-fruit-detector-edge/README.md) |
| ۱۸ | [تولید](./4-manufacturing/README.md) | فعالسازی تشخیص کیفیت میوه از حسگر | درباره فعالسازی تشخیص کیفیت میوه از طریق حسگر بیاموزید | [فعالسازی تشخیص کیفیت میوه از حسگر](./4-manufacturing/lessons/4-trigger-fruit-detector/README.md) |
| ۱۹ | [خردهفروشی](./5-retail/README.md) | آموزش تشخیص موجودی | یاد بگیرید چگونه از تشخیص شیء برای آموزش یک تشخیصدهنده موجودی برای شمارش موجودی در فروشگاه استفاده کنید | [آموزش تشخیص موجودی](./5-retail/lessons/1-train-stock-detector/README.md) |
| ۲۰ | [خردهفروشی](./5-retail/README.md) | بررسی موجودی از دستگاه اینترنت اشیا | یاد بگیرید چگونه با استفاده از یک مدل تشخیص شیء، موجودی را از دستگاه اینترنت اشیا بررسی کنید | [بررسی موجودی از دستگاه اینترنت اشیا](./5-retail/lessons/2-check-stock-device/README.md) |
| ۲۱ | [مصرفکننده](./6-consumer/README.md) | تشخیص گفتار با یک دستگاه اینترنت اشیا | یاد بگیرید چگونه از دستگاه اینترنت اشیا برای تشخیص گفتار به منظور ساخت یک تایمر هوشمند استفاده کنید | [تشخیص گفتار با دستگاه اینترنت اشیا](./6-consumer/lessons/1-speech-recognition/README.md) |
| ۲۲ | [مصرفکننده](./6-consumer/README.md) | درک زبان | یاد بگیرید چگونه جملاتی که به دستگاه اینترنت اشیا گفته میشود را درک کنید | [درک زبان](./6-consumer/lessons/2-language-understanding/README.md) |
| ۲۳ | [مصرفکننده](./6-consumer/README.md) | تنظیم تایمر و ارائه بازخورد گفتاری | یاد بگیرید چگونه تایمر را روی دستگاه اینترنت اشیا تنظیم کنید و بازخورد گفتاری درباره زمان تنظیم و پایان تایمر ارائه دهید | [تنظیم تایمر و ارائه بازخورد گفتاری](./6-consumer/lessons/3-spoken-feedback/README.md) |
| ۲۴ | [مصرفکننده](./6-consumer/README.md) | پشتیبانی از چند زبان | یاد بگیرید چگونه از چند زبان پشتیبانی کنید، هم در هنگام صحبت شدن به تایمر هوشمند و هم پاسخهایی که ارائه میدهد | [پشتیبانی از چند زبان](./6-consumer/lessons/4-multiple-language-support/README.md) |
| | نام پروژه | مفاهیم تدریس شده | اهداف یادگیری | درس مرتبط |
| ۰۱ | [شروع کار](./1-getting-started/README.md) | مقدمهای بر اینترنت اشیا | اصول پایه اینترنت اشیا و اجزای اصلی راهکارهای اینترنت اشیا مانند حسگرها و سرویسهای ابری را یاد بگیرید در حالی که دستگاه اینترنت اشیا اول خود را راهاندازی میکنید | [مقدمهای بر اینترنت اشیا](./1-getting-started/lessons/1-introduction-to-iot/README.md) |
| ۰۲ | [شروع کار](./1-getting-started/README.md) | بررسی عمیقتر اینترنت اشیا | با اجزای یک سیستم اینترنت اشیا و همچنین میکروکنترلرها و کامپیوترهای تکبردی بیشتر آشنا شوید | [بررسی عمیقتر اینترنت اشیا](./1-getting-started/lessons/2-deeper-dive/README.md) |
| ۰۳ | [شروع کار](./1-getting-started/README.md) | تعامل با دنیای فیزیکی با حسگرها و عملگرها | با حسگرها برای جمعآوری داده از دنیای فیزیکی و عملگرها برای ارسال بازخورد آشنا شوید، ضمن ساخت یک چراغ خواب | [تعامل با دنیای فیزیکی با حسگرها و عملگرها](./1-getting-started/lessons/3-sensors-and-actuators/README.md) |
| ۰۴ | [شروع کار](./1-getting-started/README.md) | اتصال دستگاهتان به اینترنت | نحوه اتصال دستگاه اینترنت اشیا به اینترنت برای ارسال و دریافت پیامها را یاد بگیرید؛ در حالی که چراغ خواب خود را به یک کارگزار MQTT متصل میکنید | [اتصال دستگاه به اینترنت](./1-getting-started/lessons/4-connect-internet/README.md) |
| ۰۵ | [کشاورزی](./2-farm/README.md) | پیشبینی رشد گیاه | نحوه پیشبینی رشد گیاه با استفاده از داده دما که توسط دستگاه اینترنت اشیا ضبط شده است را یاد بگیرید | [پیشبینی رشد گیاه](./2-farm/lessons/1-predict-plant-growth/README.md) |
| ۰۷ | [کشاورزی](./2-farm/README.md) | آبیاری خودکار گیاه | نحوه خودکارسازی و زمانبندی آبیاری با استفاده از رله و MQTT را یاد بگیرید | [آبیاری خودکار گیاه](./2-farm/lessons/3-automated-plant-watering/README.md) |
| ۰۸ | [کشاورزی](./2-farm/README.md) | مهاجرت گیاه خود به فضای ابری | با خدمات ابری و سرویسهای میزبانی شده اینترنت اشیا در ابر آشنا شوید و یاد بگیرید چگونه به جای کارگزار MQTT عمومی، گیاهتان را به یکی از این سرویسها متصل کنید | [مهاجرت گیاه به فضای ابری](./2-farm/lessons/4-migrate-your-plant-to-the-cloud/README.md) |
| ۰۹ | [کشاورزی](./2-farm/README.md) | انتقال منطق برنامه به فضای ابری | یاد بگیرید چگونه میتوانید منطق برنامه را در فضای ابری بنویسید که به پیامهای اینترنت اشیا پاسخ دهد | [انتقال منطق برنامه به فضای ابری](./2-farm/lessons/5-migrate-application-to-the-cloud/README.md) |
| ۱۰ | [کشاورزی](./2-farm/README.md) | ایمن نگه داشتن گیاه | با امنیت در اینترنت اشیا آشنا شوید و یاد بگیرید چگونه با کلیدها و گواهیها گیاه خود را ایمن نگه دارید | [ایمن نگه داشتن گیاه](./2-farm/lessons/6-keep-your-plant-secure/README.md) |
| ۱۲ | [حملونقل](./3-transport/README.md) | ذخیره اطلاعات موقعیت | نحوه ذخیره دادههای اینترنت اشیا برای مشاهده یا تحلیل بعدی را یاد بگیرید | [ذخیره اطلاعات موقعیت](./3-transport/lessons/2-store-location-data/README.md) |
| ۱۳ | [حملونقل](./3-transport/README.md) | تجسم دادههای موقعیت| درباره تجسم دادههای موقعیت روی نقشه و نحوه نمایش دنیای سهبعدی واقعی روی نقشههای دو بعدی بیاموزید | [تجسم دادههای موقعیت](./3-transport/lessons/3-visualize-location-data/README.md) |
| ۱۴ | [حملونقل](./3-transport/README.md) | حصارهای جغرافیایی | درباره حصارهای جغرافیایی و نحوه استفاده از آنها برای هشدار هنگام نزدیک شدن خودروهای زنجیره تأمین به مقصد آشنا شوید | [حصارهای جغرافیایی](./3-transport/lessons/4-geofences/README.md) |
| ۱۵ | [تولید](./4-manufacturing/README.md) | آموزش یک تشخیصدهنده کیفیت میوه | درباره آموزش یک طبقهبند تصویر در فضای ابری برای تشخیص کیفیت میوه بیاموزید | [آموزش تشخیصدهنده کیفیت میوه](./4-manufacturing/lessons/1-train-fruit-detector/README.md) |
| ۱۶ | [تولید](./4-manufacturing/README.md) | بررسی کیفیت میوه از دستگاه اینترنت اشیا | درباره استفاده از دستگاه تشخیص کیفیت میوه تان از یک دستگاه اینترنت اشیا یاد بگیرید | [بررسی کیفیت میوه از دستگاه اینترنت اشیا](./4-manufacturing/lessons/2-check-fruit-from-device/README.md) |
| ۱۷ | [تولید](./4-manufacturing/README.md) | اجرای تشخیصدهنده میوه روی لبه | درباره اجرای دستگاه تشخیص میوه روی دستگاه اینترنت اشیا روی لبه بیاموزید | [اجرای تشخیصدهنده میوه روی لبه](./4-manufacturing/lessons/3-run-fruit-detector-edge/README.md) |
| ۱۸ | [تولید](./4-manufacturing/README.md) | تحریک تشخیص کیفیت میوه از حسگر | درباره تحریک تشخیص کیفیت میوه از یک حسگر آشنا شوید | [تحریک تشخیص کیفیت میوه از حسگر](./4-manufacturing/lessons/4-trigger-fruit-detector/README.md) |
| ۱۹ | [خردهفروشی](./5-retail/README.md) | آموزش تشخیص موجودی | نحوه استفاده از تشخیص اشیاء برای آموزش تشخیصدهنده موجودی برای شمارش موجودی در یک فروشگاه یاد بگیرید | [آموزش تشخیصدهنده موجودی](./5-retail/lessons/1-train-stock-detector/README.md) |
| ۲۰ | [خردهفروشی](./5-retail/README.md) | بررسی موجودی از دستگاه اینترنت اشیا | نحوه بررسی موجودی از دستگاه اینترنت اشیا با استفاده از مدل تشخیص اشیاء را یاد بگیرید | [بررسی موجودی از دستگاه اینترنت اشیا](./5-retail/lessons/2-check-stock-device/README.md) |
| ۲۱ | [مصرفکننده](./6-consumer/README.md) | شناخت گفتار با دستگاه اینترنت اشیا | نحوه شناخت گفتار از دستگاه اینترنت اشیا برای ساخت یک تایمر هوشمند را یاد بگیرید | [شناخت گفتار با دستگاه اینترنت اشیا](./6-consumer/lessons/1-speech-recognition/README.md) |
| ۲۲ | [مصرفکننده](./6-consumer/README.md) | درک زبان | نحوه درک جملات گفتاری به یک دستگاه اینترنت اشیا را بیاموزید | [درک زبان](./6-consumer/lessons/2-language-understanding/README.md) |
| ۲۳ | [مصرفکننده](./6-consumer/README.md) | تنظیم تایمر و ارائه بازخورد گفتاری | نحوه تنظیم تایمر روی دستگاه اینترنت اشیا و ارائه بازخورد گفتاری درباره زمان شروع و پایان تایمر را یاد بگیرید | [تنظیم تایمر و ارائه بازخورد گفتاری](./6-consumer/lessons/3-spoken-feedback/README.md) |
| ۲۴ | [مصرفکننده](./6-consumer/README.md) | پشتیبانی از زبانهای متعدد | نحوه پشتیبانی از زبانهای متعدد، هم در دریافت و هم در پاسخهای تایمر هوشمند خود را یاد بگیرید | [پشتیبانی از زبانهای متعدد](./6-consumer/lessons/4-multiple-language-support/README.md) |
## دسترسی آفلاین
شما میتوانید این مستندات را به صورت آفلاین با استفاده از [Docsify](https://docsify.js.org/#/) اجرا کنید. این مخزن را فورک کنید، [Docsify را نصب کنید](https://docsify.js.org/#/quickstart) روی ماشین محلی خود، سپس در پوشه ریشه این مخزن، دستور `docsify serve` را اجرا کنید. وبسایت روی پورت ۳۰۰۰ روی لوکالهاست شما سرو میشود: `localhost:3000`.
میتوانید این مستندات را به صورت آفلاین با استفاده از [Docsify](https://docsify.js.org/#/) اجرا کنید. این مخزن را فورک کرده، [Docsify را نصب کنید](https://docsify.js.org/#/quickstart) روی سیستم محلی خود و سپس در پوشه ریشه این مخزن دستور `docsify serve` را اجرا کنید. سایت روی پورت ۳۰۰۰ روی لوکالهاست شما در دسترس خواهد بود: `localhost:3000`.
## آزمون
از جامعه ممنونیم که آزمون تعاملی را میزبانی میکند که دانش شما را در هر فصل میسنجد. شما میتوانید دانش خود را [اینجا](https://ff-quizzes.netlify.app/en/) بسنجید
از جامعه بخاطر میزبانی آزمون تعاملی که دانش شما را در هر فصل میسنجد تشکر میکنیم. دانش خود را [در اینجا](https://ff-quizzes.netlify.app/en/) امتحان کنید.
### PDF
اگر نیاز دارید، میتوانید یک فایل PDF از این محتوا برای دسترسی آفلاین ایجاد کنید. برای این کار، مطمئن شوید که [npm را نصب کردهاید](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) و دستورات زیر را در پوشه ریشه این مخزن اجرا کنید:
اگر نیاز دارید میتوانید نسخه PDF این محتوا را برای استفاده آفلاین ایجاد کنید. برای این کار مطمئن شوید [npm نصب شده است](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) و دستورات زیر را در پوشه ریشه این مخزن اجرا کنید:
```sh
npm i
@ -154,60 +164,59 @@ npm run convert
### اسلایدها
برای برخی از دروس، مجموعه اسلاید در پوشه [slides](../../slides) موجود است.
برای برخی از دروس مجموعه اسلایدهایی در پوشه [slides](../../slides) وجود دارد.
## دروس دیگر
## برنامههای درسی دیگر
تیم ما برنامههای درسی دیگری نیز تولید میکند! ببینید:
تیم ما دروس دیگری نیز تولید میکند! نگاهی بیندازید به:
<!-- CO-OP TRANSLATOR OTHER COURSES START -->
### LangChain
[](https://aka.ms/langchain4j-for-beginners)
[](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin)
[](https://aka.ms/langchain4j-for-beginners)
[](https://aka.ms/langchainjs-for-beginners?WT.mc_id=m365-94501-dwahlin)
[](https://github.com/microsoft/langchain-for-beginners?WT.mc_id=m365-94501-dwahlin)
---
### Azure / Edge / MCP / Agents
[](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/AZD-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/edgeai-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/mcp-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/ai-agents-for-beginners?WT.mc_id=academic-105485-koreyst)
---
### سری هوش مصنوعی مولد
[](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/generative-ai-for-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung)
[](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst)
### یادگیری پایهای
[](https://aka.ms/ml-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/datascience-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/ai-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/Security-101?WT.mc_id=academic-96948-sayoung)
[](https://aka.ms/webdev-beginners?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/iot-beginners?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/xr-development-for-beginners?WT.mc_id=academic-105485-koreyst)
---
### سری کاپایلوت
[](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst)
[](https://aka.ms/GitHubCopilotAI?WT.mc_id=academic-105485-koreyst)
[](https://github.com/microsoft/mastering-github-copilot-for-dotnet-csharp-developers?WT.mc_id=academic-105485-koreyst)
شما میتوانید تمام اعتبارها برای تصاویر استفاده شده در این آموزش را در جای لازم در [اعتبارها](./attributions.md) بیابید.
شما میتوانید تمام نسبتها برای تصاویر استفاده شده در این برنامه آموزشی را در صورت نیاز در [نسبتها](./attributions.md) پیدا کنید.
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**سلب مسئولیت**:
این سند با استفاده از خدمات ترجمه ماشینی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما در تلاش برای دقت هستیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است حاوی خطاها یا نادرستیهایی باشند. سند اصلی در زبان بومی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حیاتی، توصیه میشود از ترجمه حرفهای انسانی استفاده شود. ما مسئول هیچ گونه سوءتفاهم یا برداشت نادرستی که ناشی از استفاده از این ترجمه باشد، نمیباشیم.
این سند با استفاده از سرویس ترجمه هوش مصنوعی [Co-op Translator](https://github.com/Azure/co-op-translator) ترجمه شده است. در حالی که ما در تلاش برای دقت هستیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است شامل اشتباهات یا نادقیقگیهایی باشند. سند اصلی به زبان بومی خود باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حیاتی، ترجمه حرفهای انسانی توصیه میشود. ما مسئول هیچ گونه سو تفاهم یا سوء تعبیر ناشی از استفاده از این ترجمه نیستیم.
@ -26,7 +26,7 @@ Seeed Studios بهطور سخاوتمندانهای تمام سختاف
**[IoT برای مبتدیان با Seeed و Microsoft - کیت شروع Raspberry Pi 4](https://www.seeedstudio.com/IoT-for-beginners-with-Seeed-and-Microsoft-Raspberry-Pi-Starter-Kit-p-5004.html)**
[](https://www.seeedstudio.com/IoT-for-beginners-with-Seeed-and-Microsoft-Raspberry-Pi-Starter-Kit-p-5004.html)
[](https://www.seeedstudio.com/IoT-for-beginners-with-Seeed-and-Microsoft-Raspberry-Pi-Starter-Kit-p-5004.html)
@ -203,7 +203,7 @@ Python ورچوئل ماحول کو کنفیگر کریں اور CounterFit کے
ایپ چلنا شروع ہو جائے گی اور آپ کے ویب براؤزر میں کھل جائے گی:


یہ *Disconnected* کے طور پر نشان زد ہوگی، اور اوپر دائیں کونے میں ایل ای ڈی بند ہوگی۔
@ -224,7 +224,7 @@ Python ورچوئل ماحول کو کنفیگر کریں اور CounterFit کے
1. اس نئے ٹرمینل میں، پہلے کی طرح `app.py` فائل چلائیں۔ CounterFit کی اسٹیٹس **Connected** میں تبدیل ہو جائے گی اور ایل ای ڈی روشن ہو جائے گی۔


> 💁 آپ اس کوڈ کو [code/virtual-device](../../../../../1-getting-started/lessons/1-introduction-to-iot/code/virtual-device) فولڈر میں تلاش کر سکتے ہیں۔


> خاکہ از [نیتیا نرسمہن](https://github.com/nitya)۔ بڑی تصویر دیکھنے کے لیے تصویر پر کلک کریں۔
@ -38,7 +38,7 @@
یہ ڈیوائسز فزیکل دنیا کے ساتھ تعامل کرتی ہیں، یا تو سینسرز کے ذریعے اپنے ارد گرد کے ماحول سے ڈیٹا اکٹھا کر کے یا آؤٹ پٹس یا ایکچیویٹرز کو کنٹرول کر کے فزیکل تبدیلیاں کر کے۔ اس کی ایک عام مثال ایک اسمارٹ تھرموسٹیٹ ہے - ایک ڈیوائس جس میں ایک درجہ حرارت سینسر، ایک ڈائل یا ٹچ اسکرین کے ذریعے مطلوبہ درجہ حرارت سیٹ کرنے کا ذریعہ، اور ایک ہیٹنگ یا کولنگ سسٹم سے کنکشن ہوتا ہے جو اس وقت آن ہو سکتا ہے جب سینسر کا پتہ لگایا گیا درجہ حرارت مطلوبہ حد سے باہر ہو۔


آئی او ٹی ڈیوائسز کے طور پر کام کرنے والی چیزوں کی ایک وسیع رینج موجود ہے، جو مخصوص ہارڈویئر سے لے کر جو صرف ایک چیز کو سینس کرتا ہے، عام مقصد کے ڈیوائسز تک، حتیٰ کہ آپ کا اسمارٹ فون بھی! ایک اسمارٹ فون سینسرز کا استعمال کرتے ہوئے اپنے ارد گرد کی دنیا کا پتہ لگا سکتا ہے، اور ایکچیویٹرز کا استعمال کرتے ہوئے دنیا کے ساتھ تعامل کر سکتا ہے - مثال کے طور پر، جی پی ایس سینسر کا استعمال کرتے ہوئے آپ کی لوکیشن کا پتہ لگانا اور اسپیکر کا استعمال کرتے ہوئے آپ کو منزل تک نیویگیشن ہدایات دینا۔
@ -54,7 +54,7 @@
اسمارٹ تھرموسٹیٹ کی مثال میں، تھرموسٹیٹ گھر کے وائی فائی کا استعمال کرتے ہوئے کلاؤڈ میں چلنے والی کلاؤڈ سروس سے جڑے گا۔ یہ درجہ حرارت کا ڈیٹا اس کلاؤڈ سروس کو بھیجے گا، اور وہاں سے یہ کسی قسم کے ڈیٹا بیس میں لکھا جائے گا تاکہ گھر کا مالک فون ایپ کے ذریعے موجودہ اور پچھلے درجہ حرارت کو چیک کر سکے۔ کلاؤڈ میں موجود ایک اور سروس یہ جانتی ہو گی کہ گھر کے مالک کو کیا درجہ حرارت چاہیے، اور کلاؤڈ سروس کے ذریعے آئی او ٹی ڈیوائس کو پیغامات بھیجے گی تاکہ ہیٹنگ سسٹم کو آن یا آف کرنے کو کہا جا سکے۔


ایک اور زیادہ اسمارٹ ورژن کلاؤڈ میں موجود اے آئی کا استعمال کر سکتا ہے جو دیگر سینسرز سے جڑے دیگر آئی او ٹی ڈیوائسز جیسے کہ قبضے کے سینسرز سے ڈیٹا استعمال کرتا ہے جو یہ پتہ لگاتے ہیں کہ کون سے کمرے استعمال ہو رہے ہیں، نیز موسم اور یہاں تک کہ آپ کے کیلنڈر جیسے ڈیٹا کا استعمال کرتے ہوئے اسمارٹ طریقے سے درجہ حرارت سیٹ کرنے کے فیصلے کرتا ہے۔ مثال کے طور پر، یہ آپ کی کیلنڈر سے پڑھ کر آپ کی غیر موجودگی میں ہیٹنگ بند کر سکتا ہے، یا کمرے کے استعمال کے مطابق کمرے بہ کمرے ہیٹنگ بند کر سکتا ہے، اور وقت کے ساتھ ڈیٹا سے سیکھ کر مزید درست ہوتا جاتا ہے۔
@ -94,7 +94,7 @@
> 💁 سی پی یوز پروگرامز پر عمل درآمد [فیچ-ڈیکوڈ-ایگزیکیوٹ سائیکل](https://wikipedia.org/wiki/Instruction_cycle) کا استعمال کرتے ہوئے کرتے ہیں۔ ہر گھڑی کے ٹِک کے لیے، سی پی یو میموری سے اگلی ہدایت کو حاصل کرے گا، اسے ڈیکوڈ کرے گا، پھر اس پر عمل کرے گا جیسے کہ دو نمبروں کو شامل کرنے کے لیے ایک ارتھمیٹک لاجک یونٹ (ALU) کا استعمال۔ کچھ عمل درآمد کو چلانے کے لیے متعدد ٹِکس کی ضرورت ہوگی، اس لیے اگلا سائیکل اس ہدایت کے مکمل ہونے کے بعد اگلے ٹِک پر چلے گا۔


مائیکرو کنٹرولرز کی گھڑی کی رفتار ڈیسک ٹاپ یا لیپ ٹاپ کمپیوٹرز، یا یہاں تک کہ زیادہ تر اسمارٹ فونز سے بھی کم ہوتی ہے۔ مثال کے طور پر، وائیو ٹرمینل میں ایک سی پی یو ہے جو 120MHz یا 120,000,000 سائیکلز فی سیکنڈ پر چلتا ہے۔
@ -166,7 +166,7 @@ Arduino بورڈز کو C یا C++ میں کوڈ کیا جاتا ہے۔ C/C++ ک
آپ اپنے `setup` کوڈ کو `setup` فنکشن میں لکھیں گے، جیسے WiFi اور کلاؤڈ سروسز سے کنیکٹ کرنا یا ان پٹ اور آؤٹ پٹ کے لیے پنز کو انیشیلائز کرنا۔ آپ کا `loop` کوڈ پھر پروسیسنگ کوڈ پر مشتمل ہوگا، جیسے سینسر سے پڑھنا اور ویلیو کو کلاؤڈ پر بھیجنا۔ آپ عام طور پر ہر لوپ میں ایک ڈیلے شامل کریں گے، مثال کے طور پر، اگر آپ چاہتے ہیں کہ سینسر ڈیٹا ہر 10 سیکنڈ میں بھیجا جائے تو آپ لوپ کے آخر میں 10 سیکنڈ کا ڈیلے شامل کریں گے تاکہ مائیکرو کنٹرولر پاور بچا سکے، پھر 10 سیکنڈ بعد دوبارہ لوپ چلائے۔


✅ اس پروگرام آرکیٹیکچر کو *ایونٹ لوپ* یا *میسج لوپ* کہا جاتا ہے۔ بہت سی ایپلیکیشنز اس کو اندرونی طور پر استعمال کرتی ہیں اور یہ زیادہ تر ڈیسک ٹاپ ایپلیکیشنز کے لیے معیاری ہے جو OS جیسے Windows، macOS یا Linux پر چلتی ہیں۔ `loop` یوزر انٹرفیس کے اجزاء جیسے بٹن یا ڈیوائسز جیسے کی بورڈ سے میسجز سنتا ہے اور ان کا جواب دیتا ہے۔ آپ اس کے بارے میں مزید [ایونٹ لوپ پر ویکیپیڈیا کے آرٹیکل](https://wikipedia.org/wiki/Event_loop) میں پڑھ سکتے ہیں۔
# سینسرز اور ایکچوایٹرز کے ذریعے جسمانی دنیا کے ساتھ تعامل کریں


> خاکہ [نیتیا نرسمہن](https://github.com/nitya) کی طرف سے۔ بڑی تصویر دیکھنے کے لیے تصویر پر کلک کریں۔
@ -92,7 +92,7 @@ IoT ڈیوائسز ڈیجیٹل ہوتی ہیں - وہ اینالاگ قدروں
سب سے آسان ڈیجیٹل سینسر ایک بٹن یا سوئچ ہے۔ یہ ایک سینسر ہے جس کی دو حالتیں ہیں، آن یا آف۔


IoT ڈیوائسز کے پنز جیسے GPIO پنز اس سگنل کو براہ راست 0 یا 1 کے طور پر ماپ سکتے ہیں۔ اگر بھیجا گیا وولٹیج واپس آنے والے وولٹیج کے برابر ہے، تو پڑھی گئی قدر 1 ہے، ورنہ پڑھی گئی قدر 0 ہے۔ سگنل کو تبدیل کرنے کی ضرورت نہیں ہے، یہ صرف 1 یا 0 ہو سکتا ہے۔
@ -125,12 +125,12 @@ IoT ڈیوائسز کے پنز جیسے GPIO پنز اس سگنل کو براہ
اپنے IoT ڈیوائس میں ایکچوایٹر شامل کرنے کے لیے نیچے دی گئی متعلقہ گائیڈ پر عمل کریں، جو سینسر کے ذریعے کنٹرول کیا جائے گا، تاکہ IoT نائٹ لائٹ بنائی جا سکے۔ یہ لائٹ سینسر سے روشنی کی سطحوں کو جمع کرے گا، اور ایکچوایٹر کے طور پر LED کا استعمال کرے گا تاکہ جب پتہ لگائی گئی روشنی کی سطح بہت کم ہو تو روشنی خارج کرے۔




جیسے سینسرز کے ساتھ ہوتا ہے، اصل IoT ڈیوائس ڈیجیٹل سگنلز پر کام کرتی ہے، نہ کہ اینالاگ پر۔ اس کا مطلب ہے کہ اینالاگ سگنل بھیجنے کے لیے، IoT ڈیوائس کو ڈیجیٹل سے اینالاگ کنورٹر (DAC) کی ضرورت ہوتی ہے، یا تو براہ راست IoT ڈیوائس پر یا کنیکٹر بورڈ پر۔ یہ IoT ڈیوائس کے 0s اور 1s کو اینالاگ وولٹیج میں تبدیل کرے گا جسے ایکچوایٹر استعمال کر سکتا ہے۔
@ -177,7 +177,7 @@ IoT ڈیوائس سے ڈیجیٹل سگنلز کو اینالاگ سگنل می
ایک سادہ ڈیجیٹل ایکچوایٹر LED ہے۔ جب ایک ڈیوائس 1 کا ڈیجیٹل سگنل بھیجتی ہے، تو ایک ہائی وولٹیج بھیجا جاتا ہے جو LED کو روشن کرتا ہے۔ جب 0 کا ڈیجیٹل سگنل بھیجا جاتا ہے، تو وولٹیج 0V پر گر جاتا ہے اور LED بند ہو جاتا ہے۔


✅ آپ کون سے دوسرے سادہ 2-اسٹیٹ ایکچوایٹرز کے بارے میں سوچ سکتے ہیں؟ ایک مثال سولینائیڈ ہے، جو ایک الیکٹرو میگنیٹ ہے جو دروازے کی چٹخنی کو حرکت دے کر دروازے کو لاک/انلاک کرنے جیسے کام انجام دے سکتا ہے۔


1. اپنی پسندیدہ ایل ای ڈی منتخب کریں اور اس کے پاؤں ایل ای ڈی ماڈیول کے دو سوراخوں میں ڈالیں۔
@ -40,7 +40,7 @@ Otherwise
1. راسپبیری پائی کو بند حالت میں رکھتے ہوئے، گروو کیبل کے دوسرے سرے کو گروو بیس ہیٹ پر **D5** نشان والے ڈیجیٹل ساکٹ سے جوڑیں۔ یہ ساکٹ جی پی آئی او پنز کے ساتھ والی قطار میں بائیں سے دوسرا ہے۔


@ -16,13 +16,13 @@ Grove روشنی سینسر، جو روشنی کی سطح کا پتہ لگانے
روشنی سینسر کو جوڑیں۔


1. Grove کیبل کے ایک سرے کو روشنی سینسر ماڈیول کے ساکٹ میں ڈالیں۔ یہ صرف ایک ہی سمت میں جائے گا۔
1. راسپبیری پائی کو بند حالت میں رکھتے ہوئے، Grove کیبل کے دوسرے سرے کو Grove Base hat پر موجود اینالاگ ساکٹ **A0** میں جوڑیں۔ یہ ساکٹ GPIO پنز کے ساتھ والی قطار میں دائیں سے دوسرا ہے۔


@ -36,11 +36,11 @@ CounterFit ایپ میں LED شامل کریں۔
1. **Add** بٹن کو منتخب کریں تاکہ Pin 5 پر LED بنایا جا سکے۔


LED بن جائے گا اور ایکچیویٹرز کی فہرست میں ظاہر ہوگا۔


ایک بار جب LED بن جائے، تو آپ *Color* پکّر کا استعمال کرتے ہوئے اس کا رنگ تبدیل کر سکتے ہیں۔ رنگ منتخب کرنے کے بعد **Set** بٹن کو منتخب کریں تاکہ رنگ تبدیل ہو جائے۔
@ -28,11 +28,11 @@ CounterFit ایپ میں لائٹ سینسر شامل کریں۔
1. **Add** بٹن منتخب کریں تاکہ Pin 0 پر لائٹ سینسر بنایا جا سکے۔


لائٹ سینسر بنایا جائے گا اور سینسرز کی فہرست میں ظاہر ہوگا۔




> خاکہ [نیتیا نرسمہن](https://github.com/nitya) کی طرف سے۔ تصویر پر کلک کریں تاکہ بڑا ورژن دیکھ سکیں۔
@ -47,7 +47,7 @@ MQTT IoT ڈیوائسز کے لیے سب سے زیادہ مقبول کمیونی
MQTT میں ایک بروکر اور متعدد کلائنٹس ہوتے ہیں۔ تمام کلائنٹس بروکر سے جڑتے ہیں، اور بروکر پیغامات کو متعلقہ کلائنٹس تک پہنچاتا ہے۔ پیغامات کو نامزد موضوعات کے ذریعے پہنچایا جاتا ہے، بجائے اس کے کہ انہیں براہ راست کسی کلائنٹ کو بھیجا جائے۔ ایک کلائنٹ کسی موضوع پر پبلش کر سکتا ہے، اور جو کلائنٹس اس موضوع کو سبسکرائب کرتے ہیں وہ پیغام وصول کریں گے۔


✅ تحقیق کریں۔ اگر آپ کے پاس بہت زیادہ IoT ڈیوائسز ہوں، تو آپ کیسے یقینی بنائیں گے کہ آپ کا MQTT بروکر تمام پیغامات کو سنبھال سکتا ہے؟
@ -69,7 +69,7 @@ MQTT میں ایک بروکر اور متعدد کلائنٹس ہوتے ہیں۔
> 💁 یہ ٹیسٹ بروکر عوامی اور غیر محفوظ ہے۔ جو کچھ آپ پبلش کرتے ہیں اسے کوئی بھی سن سکتا ہے، لہذا اسے کسی ایسے ڈیٹا کے ساتھ استعمال نہیں کیا جانا چاہیے جسے نجی رکھنا ضروری ہو۔


اپنے ڈیوائس کو MQTT بروکر سے کنیکٹ کرنے کے لیے نیچے دیے گئے متعلقہ مرحلے پر عمل کریں:
@ -342,7 +342,7 @@ Python ورچوئل ماحول کو ترتیب دیں اور MQTT pip پیکجز
IoT ڈیوائس ڈیزائنرز کو یہ بھی غور کرنا چاہیے کہ آیا IoT ڈیوائس انٹرنیٹ آؤٹج یا مقام کی وجہ سے سگنل کے نقصان کے دوران استعمال کیا جا سکتا ہے۔ ایک سمارٹ تھرموسٹیٹ کو کچھ محدود فیصلے کرنے کے قابل ہونا چاہیے تاکہ اگر یہ کلاؤڈ کو ٹیلیمیٹری بھیجنے کے قابل نہ ہو تو ہیٹنگ کو کنٹرول کر سکے۔
[](https://twitter.com/internetofshit/status/1315736960082808832)
[](https://twitter.com/internetofshit/status/1315736960082808832)
MQTT کے لیے کنیکٹیویٹی کے نقصان کو ہینڈل کرنے کے لیے، ڈیوائس اور سرور کوڈ کو یہ یقینی بنانے کے لیے ذمہ دار ہونا پڑے گا کہ اگر پیغام کی ترسیل ضروری ہو تو وہ یقینی بنائی جائے، مثال کے طور پر تمام بھیجے گئے پیغامات کے لیے جواب میں اضافی پیغامات کی ضرورت ہو تاکہ اگر جواب نہ ملے تو وہ دستی طور پر قطار میں رکھے جائیں اور بعد میں دوبارہ بھیجے جائیں۔
@ -350,7 +350,7 @@ MQTT کے لیے کنیکٹیویٹی کے نقصان کو ہینڈل کرنے
کمانڈز وہ پیغامات ہیں جو کلاؤڈ سے ڈیوائس کو بھیجے جاتے ہیں تاکہ اسے کچھ کرنے کی ہدایت دی جا سکے۔ زیادہ تر وقت یہ کسی ایکچوئیٹر کے ذریعے کچھ آؤٹپٹ دینے سے متعلق ہوتا ہے، لیکن یہ خود ڈیوائس کے لیے بھی ہدایت ہو سکتی ہے، جیسے کہ ریبوٹ کرنا، یا اضافی ٹیلیمیٹری اکٹھا کرنا اور اسے کمانڈ کے جواب کے طور پر واپس بھیجنا۔


ایک تھرموسٹیٹ کلاؤڈ سے کمانڈ وصول کر سکتا ہے تاکہ ہیٹنگ کو آن کرے۔ تمام سینسرز سے ٹیلیمیٹری ڈیٹا کی بنیاد پر، اگر کلاؤڈ سروس نے فیصلہ کیا ہے کہ ہیٹنگ آن ہونی چاہیے، تو یہ متعلقہ کمانڈ بھیجتا ہے۔


> خاکہ [نیتیا نرسمہن](https://github.com/nitya) کی طرف سے۔ بڑی تصویر کے لیے تصویر پر کلک کریں۔
@ -102,7 +102,7 @@
مثال کے طور پر، اگر دن کے لیے سب سے زیادہ درجہ حرارت 25°C ہے، اور سب سے کم 12°C:


جے یوپیٹر شروع ہوگا اور نوٹ بک کو آپ کے براؤزر میں کھولے گا۔ نوٹ بک میں موجود ہدایات پر عمل کریں تاکہ ماپے گئے درجہ حرارت کو بصری بنایا جا سکے اور بڑھتے ہوئے ڈگری دنوں کا حساب لگایا جا سکے۔
@ -38,11 +38,11 @@ CounterFit ایپ میں نمی اور درجہ حرارت سینسرز شامل
1. **Add** بٹن منتخب کریں تاکہ Pin 5 پر نمی سینسر بنایا جا سکے۔


نمی سینسر بنایا جائے گا اور سینسرز کی فہرست میں ظاہر ہوگا۔


1. درجہ حرارت سینسر بنائیں:
@ -54,11 +54,11 @@ CounterFit ایپ میں نمی اور درجہ حرارت سینسرز شامل
1. **Add** بٹن منتخب کریں تاکہ Pin 6 پر درجہ حرارت سینسر بنایا جا سکے۔


درجہ حرارت سینسر بنایا جائے گا اور سینسرز کی فہرست میں ظاہر ہوگا۔


@ -13,7 +13,7 @@ I²C بس میں 2 اہم وائرز کے ساتھ 2 پاور وائرز شام
| VCC | وولٹیج کامن کلیکٹر | ڈیوائسز کے لیے پاور سپلائی۔ یہ SDA اور SCL وائرز سے جڑی ہوتی ہے تاکہ پل-اپ ریزسٹر کے ذریعے ان کو پاور فراہم کرے، جو سگنل کو اس وقت بند کر دیتا ہے جب کوئی ڈیوائس کنٹرولر نہ ہو۔ |
| GND | گراؤنڈ | یہ الیکٹریکل سرکٹ کے لیے ایک کامن گراؤنڈ فراہم کرتی ہے۔ |


ڈیٹا بھیجنے کے لیے، ایک ڈیوائس اسٹارٹ کنڈیشن جاری کرے گی تاکہ ظاہر ہو کہ یہ ڈیٹا بھیجنے کے لیے تیار ہے۔ یہ پھر کنٹرولر بن جائے گی۔ کنٹرولر اس ڈیوائس کا ایڈریس بھیجے گی جس کے ساتھ یہ بات چیت کرنا چاہتی ہے، اور یہ بھی بتائے گی کہ یہ ڈیٹا پڑھنا چاہتی ہے یا لکھنا۔ ڈیٹا منتقل ہونے کے بعد، کنٹرولر اسٹاپ کنڈیشن جاری کرے گی تاکہ ظاہر ہو کہ یہ ختم ہو چکا ہے۔ اس کے بعد کوئی اور ڈیوائس کنٹرولر بن سکتی ہے اور ڈیٹا بھیج یا وصول کر سکتی ہے۔
وزنی مٹی کی نمی کا حساب درج ذیل فارمولے سے لگایا جاتا ہے:


* W
- گیلی مٹی کا وزن
@ -29,7 +29,7 @@
مثال کے طور پر، فرض کریں کہ آپ کے پاس ایک مٹی کا نمونہ ہے جس کا وزن 212g گیلا اور 197g خشک ہے۔


@ -34,11 +34,11 @@ CounterFit ایپ میں مٹی نمی سینسر شامل کریں۔
1. **Add** بٹن کو منتخب کریں تاکہ Pin 0 پر *Soil Moisture* سینسر بنایا جا سکے۔


مٹی نمی سینسر بنایا جائے گا اور سینسرز کی فہرست میں ظاہر ہوگا۔


@ -18,7 +18,7 @@ Grove soil moisture sensor کو Wio Terminal کے قابل ترتیب اینال
مٹی کی نمی کے سینسر کو جوڑیں۔


1. Grove کیبل کے ایک سرے کو مٹی کی نمی کے سینسر کے ساکٹ میں ڈالیں۔ یہ صرف ایک ہی سمت میں جائے گا۔


> خاکہ نگاری: [نیتیا نرسمہن](https://github.com/nitya)۔ بڑی تصویر دیکھنے کے لیے تصویر پر کلک کریں۔
@ -32,7 +32,7 @@ IoT ڈیوائسز کم وولٹیج استعمال کرتی ہیں۔ یہ سی
اس مسئلے کا حل یہ ہے کہ پمپ کو ایک بیرونی پاور سپلائی سے جوڑا جائے، اور ایک ایکچوئیٹر کے ذریعے پمپ کو آن کیا جائے، بالکل اسی طرح جیسے آپ ایک لائٹ کو آن کرتے ہیں۔ آپ کی انگلی کے ذریعے سوئچ کو پلٹنے کے لیے تھوڑی سی توانائی درکار ہوتی ہے، اور یہ لائٹ کو مین بجلی سے جوڑ دیتا ہے جو 110v/240v پر چلتی ہے۔


> 🎓 [مینز بجلی](https://wikipedia.org/wiki/Mains_electricity) وہ بجلی ہے جو گھروں اور کاروباروں کو قومی انفراسٹرکچر کے ذریعے فراہم کی جاتی ہے۔
@ -72,7 +72,7 @@ IoT ڈیوائسز کم وولٹیج استعمال کرتی ہیں۔ یہ سی
الیکٹرو میگنیٹ کو لیور کو کھینچنے اور فعال کرنے کے لیے زیادہ پاور کی ضرورت نہیں ہوتی، اسے 3.3V یا 5V آؤٹ پٹ کے ذریعے IoT ڈیوائس سے کنٹرول کیا جا سکتا ہے۔ آؤٹ پٹ سرکٹ زیادہ پاور لے جا سکتا ہے، ریلے پر منحصر ہے، بشمول مینز وولٹیج یا صنعتی استعمال کے لیے اس سے بھی زیادہ پاور لیولز۔ اس طرح ایک IoT ڈیوائس ایک آبپاشی کے نظام کو کنٹرول کر سکتی ہے، چاہے وہ ایک پودے کے لیے چھوٹا پمپ ہو یا ایک بڑے تجارتی فارم کے لیے ایک وسیع صنعتی نظام۔


اوپر دی گئی تصویر میں ایک گروو ریلے دکھایا گیا ہے۔ کنٹرول سرکٹ IoT ڈیوائس سے جڑتا ہے اور 3.3V یا 5V کا استعمال کرتے ہوئے ریلے کو آن یا آف کرتا ہے۔ آؤٹ پٹ سرکٹ میں دو ٹرمینلز ہیں، جن میں سے کوئی بھی پاور یا گراؤنڈ ہو سکتا ہے۔ آؤٹ پٹ سرکٹ 250V تک 10A کو ہینڈل کر سکتا ہے، جو مختلف مینز پاورڈ ڈیوائسز کے لیے کافی ہے۔ آپ ایسے ریلے بھی حاصل کر سکتے ہیں جو اس سے بھی زیادہ پاور لیولز کو ہینڈل کر سکتے ہیں۔
@ -18,13 +18,13 @@ Grove ریلے کو راسپبیری پائی سے جوڑا جا سکتا ہے۔
ریلے کو جوڑیں۔


1. Grove کیبل کے ایک سرے کو ریلے کے ساکٹ میں ڈالیں۔ یہ صرف ایک ہی سمت میں جائے گا۔
1. راسپبیری پائی کو بند حالت میں رکھتے ہوئے، Grove کیبل کے دوسرے سرے کو Grove Base Hat پر **D5** کے نشان والے ڈیجیٹل ساکٹ سے جوڑیں جو پائی سے منسلک ہے۔ یہ ساکٹ GPIO پنز کے ساتھ والی ساکٹوں کی قطار میں بائیں طرف سے دوسرا ہے۔ مٹی کی نمی کے سینسر کو **A0** ساکٹ سے جڑا رہنے دیں۔


1. مٹی کی نمی کے سینسر کو مٹی میں ڈالیں، اگر یہ پچھلے سبق سے پہلے ہی نہیں ڈالا گیا ہے۔


> خاکہ از [نیتیا نرسمہن](https://github.com/nitya)۔ بڑی تصویر دیکھنے کے لیے تصویر پر کلک کریں۔
@ -46,8 +46,8 @@
کلاؤڈ کو اکثر مذاق میں 'کسی اور کا کمپیوٹر' کہا جاتا ہے۔ بنیادی خیال سادہ تھا - کمپیوٹر خریدنے کے بجائے، آپ کسی اور کا کمپیوٹر کرائے پر لیں۔ کوئی اور، یعنی کلاؤڈ کمپیوٹنگ فراہم کنندہ، بڑے ڈیٹا سینٹرز کا انتظام کرے گا۔ وہ ہارڈویئر خریدنے اور انسٹال کرنے، بجلی اور کولنگ کا انتظام کرنے، نیٹ ورکنگ، عمارت کی حفاظت، ہارڈویئر اور سافٹ ویئر اپ ڈیٹس، سب کچھ سنبھالیں گے۔ بطور صارف، آپ کو صرف ضرورت کے مطابق کمپیوٹر کرائے پر لینے ہوں گے، جب مانگ بڑھے تو زیادہ کرائے پر لیں، اور جب مانگ کم ہو تو کم کرائے پر لیں۔ یہ کلاؤڈ ڈیٹا سینٹرز دنیا بھر میں موجود ہیں۔

یہ ڈیٹا سینٹرز کئی مربع کلومیٹر کے رقبے پر محیط ہو سکتے ہیں۔ اوپر دی گئی تصاویر چند سال پہلے ایک مائیکروسافٹ کلاؤڈ ڈیٹا سینٹر میں لی گئی تھیں، اور ابتدائی سائز کے ساتھ ساتھ منصوبہ بند توسیع کو دکھاتی ہیں۔ توسیع کے لیے صاف کیا گیا علاقہ 5 مربع کلومیٹر سے زیادہ ہے۔
@ -108,11 +108,11 @@ Azure سبسکرپشن کے دو مختلف مفت اقسام ہیں جن کے
IoT ڈیوائسز کلاؤڈ سروس سے یا تو ڈیوائس SDK (ایک لائبریری جو سروس کی خصوصیات کے ساتھ کام کرنے کے لیے کوڈ فراہم کرتی ہے) یا براہ راست کسی مواصلاتی پروٹوکول جیسے MQTT یا HTTP کے ذریعے جڑتی ہیں۔ ڈیوائس SDK عام طور پر سب سے آسان راستہ ہوتا ہے کیونکہ یہ سب کچھ آپ کے لیے سنبھالتا ہے، جیسے کہ کون سے موضوعات پر شائع کرنا یا سبسکرائب کرنا، اور سیکیورٹی کو کیسے سنبھالنا۔


آپ کا ڈیوائس پھر آپ کی ایپلیکیشن کے دوسرے حصوں کے ساتھ اس سروس کے ذریعے بات چیت کرتا ہے - بالکل اسی طرح جیسے آپ نے MQTT کے ذریعے ٹیلیمیٹری بھیجی اور کمانڈز وصول کیں۔ یہ عام طور پر سروس SDK یا اسی طرح کی لائبریری کا استعمال کرتے ہوئے کیا جاتا ہے۔ پیغامات آپ کے ڈیوائس سے سروس تک آتے ہیں جہاں آپ کی ایپلیکیشن کے دوسرے اجزاء انہیں پڑھ سکتے ہیں، اور پیغامات آپ کے ڈیوائس کو واپس بھیجے جا سکتے ہیں۔


یہ سروسز سیکیورٹی کو نافذ کرتی ہیں، یہ جان کر کہ کون سے ڈیوائسز جڑ سکتے ہیں اور ڈیٹا بھیج سکتے ہیں، یا تو ڈیوائسز کو سروس کے ساتھ پہلے سے رجسٹر کر کے، یا ڈیوائسز کو خفیہ کلیدیں یا سرٹیفکیٹس دے کر تاکہ وہ پہلی بار سروس سے جڑنے پر خود کو رجسٹر کر سکیں۔ نامعلوم ڈیوائسز جڑ نہیں سکتیں، اگر وہ کوشش کریں تو سروس کنکشن کو مسترد کر دیتی ہے اور ان کے بھیجے گئے پیغامات کو نظر انداز کر دیتی ہے۔
@ -124,7 +124,7 @@ IoT ڈیوائسز کلاؤڈ سروس سے یا تو ڈیوائس SDK (ایک
اب جب کہ آپ کے پاس Azure سبسکرپشن ہے، آپ IoT سروس کے لیے سائن اپ کر سکتے ہیں۔ Microsoft کی IoT سروس کو Azure IoT Hub کہا جاتا ہے۔


نیچے دی گئی ویڈیو Azure IoT Hub کا مختصر جائزہ پیش کرتی ہے:


> خاکہ [نیتیا نرسمہن](https://github.com/nitya) کی طرف سے۔ بڑی تصویر دیکھنے کے لیے تصویر پر کلک کریں۔
@ -28,7 +28,7 @@
سرور لیس، یا سرور لیس کمپیوٹنگ، چھوٹے کوڈ بلاکس بنانے کا عمل ہے جو مختلف قسم کے ایونٹس کے جواب میں کلاؤڈ میں چلتے ہیں۔ جب ایونٹ ہوتا ہے تو آپ کا کوڈ چلتا ہے اور ایونٹ کے بارے میں ڈیٹا اسے فراہم کیا جاتا ہے۔ یہ ایونٹس مختلف چیزوں سے ہو سکتے ہیں، جیسے ویب ریکویسٹ، قطار میں رکھے گئے پیغامات، ڈیٹا بیس میں ڈیٹا میں تبدیلیاں، یا IoT ڈیوائسز کے ذریعے IoT سروس کو بھیجے گئے پیغامات۔


> 💁 اگر آپ نے پہلے ڈیٹا بیس ٹرگرز استعمال کیے ہیں، تو آپ اسے اسی طرح سمجھ سکتے ہیں، کوڈ ایونٹ جیسے کہ ایک قطار شامل کرنے پر ٹرگر ہوتا ہے۔
@ -54,7 +54,7 @@
Microsoft کی سرور لیس کمپیوٹنگ سروس کو Azure Functions کہا جاتا ہے۔


نیچے دی گئی مختصر ویڈیو میں Azure Functions کا جائزہ دیا گیا ہے۔


> خاکہ [نیتیا نرسمہن](https://github.com/nitya) کی طرف سے۔ بڑی تصویر دیکھنے کے لیے تصویر پر کلک کریں۔
@ -52,11 +52,11 @@ IoT سیکیورٹی کا مطلب یہ ہے کہ صرف متوقع آلات آ
جب کوئی آلہ IoT سروس سے جڑتا ہے، تو یہ اپنی شناخت کے لیے ایک ID استعمال کرتا ہے۔ مسئلہ یہ ہے کہ اس ID کو کلون کیا جا سکتا ہے - ایک ہیکر ایک بدنیتی پر مبنی آلہ سیٹ کر سکتا ہے جو ایک حقیقی آلے کی طرح ID استعمال کرتا ہے لیکن جعلی ڈیٹا بھیجتا ہے۔


اس کا حل یہ ہے کہ بھیجے جانے والے ڈیٹا کو ایک خفیہ شکل میں تبدیل کیا جائے، جس کے لیے ایک ایسی ویلیو استعمال کی جائے جو صرف آلے اور کلاؤڈ کو معلوم ہو۔ اس عمل کو *انکرپشن* کہا جاتا ہے، اور ڈیٹا کو انکرپٹ کرنے کے لیے استعمال ہونے والی ویلیو کو *انکرپشن کی* کہا جاتا ہے۔


کلاؤڈ سروس پھر ڈیٹا کو ایک قابلِ پڑھائی شکل میں تبدیل کر سکتی ہے، جسے *ڈی کرپشن* کہا جاتا ہے، اور یہ یا تو وہی انکرپشن کی استعمال کر کے یا ایک *ڈی کرپشن کی* کے ذریعے کیا جاتا ہے۔ اگر انکرپٹڈ پیغام کو کی کے ذریعے ڈی کرپٹ نہ کیا جا سکے، تو آلہ ہیک ہو چکا ہے اور پیغام مسترد کر دیا جاتا ہے۔


> خاکہ نگاری: [نیتیا نرسمہن](https://github.com/nitya)۔ تصویر پر کلک کریں تاکہ بڑا ورژن دیکھ سکیں۔
@ -63,13 +63,13 @@ IoT سامان کی نقل و حمل کے طریقے کو تبدیل کر رہا
> 💁 کوئی بھی اصل وجہ نہیں جانتا کہ دائرے کو 360 ڈگری میں کیوں تقسیم کیا گیا۔ [ویکیپیڈیا پر ڈگری (زاویہ) کا صفحہ](https://wikipedia.org/wiki/Degree_(angle)) ممکنہ وجوہات کا احاطہ کرتا ہے۔


عرض البلد ان لکیروں کا استعمال کرتے ہوئے ماپا جاتا ہے جو زمین کو گھیرتی ہیں اور خط استوا کے متوازی چلتی ہیں، شمالی اور جنوبی نصف کرہ کو 90° میں تقسیم کرتی ہیں۔ خط استوا 0° پر ہے، شمالی قطب 90° پر ہے، جسے 90° شمال بھی کہا جاتا ہے، اور جنوبی قطب -90° پر ہے، یا 90° جنوب۔
طول البلد مشرق اور مغرب میں ماپی جانے والی ڈگریوں کی تعداد کے طور پر ماپا جاتا ہے۔ طول البلد کا 0° نقطہ آغاز *پرائم میریڈین* کہلاتا ہے، اور اسے 1884 میں شمالی قطب سے جنوبی قطب تک ایک لکیر کے طور پر بیان کیا گیا تھا جو [گرین وچ، انگلینڈ میں برٹش رائل آبزرویٹری](https://wikipedia.org/wiki/Royal_Observatory,_Greenwich) سے گزرتی ہے۔


> 🎓 میریڈین ایک خیالی سیدھی لکیر ہے جو شمالی قطب سے جنوبی قطب تک جاتی ہے، ایک نیم دائرہ بناتی ہے۔
@ -100,7 +100,7 @@ IoT سامان کی نقل و حمل کے طریقے کو تبدیل کر رہا
* عرض البلد 47.6423109 (خط استوا کے شمال میں 47.6423109 ڈگری)
* طول البلد -122.1390293 (پرائم میریڈین کے مغرب میں 122.1390293 ڈگری)۔
@ -112,7 +112,7 @@ GPS نظام اس طرح کام کرتے ہیں کہ متعدد سیٹلائٹس
> 💁 GPS سینسرز کو ریڈیو لہروں کا پتہ لگانے کے لیے اینٹینا کی ضرورت ہوتی ہے۔ ٹرکوں اور گاڑیوں میں موجود GPS کے ساتھ نصب اینٹینا کو اچھا سگنل حاصل کرنے کے لیے پوزیشن میں رکھا جاتا ہے، عام طور پر ونڈشیلڈ یا چھت پر۔ اگر آپ ایک علیحدہ GPS نظام استعمال کر رہے ہیں، جیسے کہ اسمارٹ فون یا IoT ڈیوائس، تو آپ کو یہ یقینی بنانا ہوگا کہ GPS نظام یا فون میں موجود اینٹینا آسمان کا واضح نظارہ رکھتا ہو، جیسے کہ ونڈشیلڈ پر نصب ہو۔


GPS سیٹلائٹس زمین کے گرد چکر لگا رہے ہیں، سینسر کے اوپر کسی مقررہ مقام پر نہیں ہیں، اس لیے مقام کے ڈیٹا میں سمندر کی سطح سے بلندی کے ساتھ ساتھ عرض البلد اور طول البلد بھی شامل ہوتا ہے۔
@ -18,13 +18,13 @@ Grove GPS سینسر کو راسپبیری پائی کے ساتھ جوڑا جا
جی پی ایس سینسر کو جوڑیں۔


1. Grove کیبل کے ایک سرے کو جی پی ایس سینسر کے ساکٹ میں ڈالیں۔ یہ صرف ایک ہی سمت میں داخل ہوگا۔
1. راسپبیری پائی کو بند کر کے، Grove کیبل کے دوسرے سرے کو Grove Base Hat پر موجود **UART** کے نشان والے ساکٹ میں جوڑیں۔ یہ ساکٹ درمیانی قطار میں ہے، ایس ڈی کارڈ سلاٹ کے قریب، یو ایس بی پورٹس اور ایتھرنیٹ ساکٹ کے مخالف سمت۔


1. جی پی ایس سینسر کو اس طرح رکھیں کہ جڑا ہوا اینٹینا آسمان کو دیکھ سکے - مثالی طور پر کھڑکی کے قریب یا باہر۔ اینٹینا کے راستے میں کسی چیز کے نہ ہونے سے سگنل زیادہ واضح طور پر ملتا ہے۔
1. **Add** بٹن کو منتخب کریں تاکہ پورٹ `/dev/ttyAMA0` پر جی پی ایس سینسر بنایا جا سکے۔


جی پی ایس سینسر بنایا جائے گا اور سینسرز کی فہرست میں ظاہر ہوگا۔


## جی پی ایس سینسر کو پروگرام کریں
@ -102,17 +102,17 @@
* **Source** کو `Lat/Lon` پر سیٹ کریں، اور ایک واضح لاٹیٹیوڈ، لانگیٹیوڈ اور سیٹلائٹس کی تعداد سیٹ کریں جو جی پی ایس فکس حاصل کرنے کے لیے استعمال ہو۔ یہ ویلیو صرف ایک بار بھیجی جائے گی، لہذا **Repeat** باکس کو چیک کریں تاکہ ڈیٹا ہر سیکنڈ دہرایا جائے۔


* **Source** کو `NMEA` پر سیٹ کریں اور این ایم ای اے جملے ٹیکسٹ باکس میں شامل کریں۔ یہ تمام ویلیوز بھیجی جائیں گی، ہر نئے جی جی اے (پوزیشن فکس) جملے کو پڑھنے سے پہلے 1 سیکنڈ کی تاخیر کے ساتھ۔


آپ [nmeagen.org](https://www.nmeagen.org) جیسے ٹول کا استعمال کر سکتے ہیں تاکہ نقشے پر ڈرائنگ کر کے یہ جملے تیار کیے جا سکیں۔ یہ ویلیوز صرف ایک بار بھیجی جائیں گی، لہذا **Repeat** باکس کو چیک کریں تاکہ ڈیٹا ایک سیکنڈ بعد دہرایا جائے۔
* **Source** کو GPX فائل پر سیٹ کریں، اور ایک جی پی ایکس فائل اپلوڈ کریں جس میں ٹریک کے مقامات ہوں۔ آپ جی پی ایکس فائلز کو کئی مشہور میپنگ اور ہائکنگ سائٹس جیسے [AllTrails](https://www.alltrails.com/) سے ڈاؤنلوڈ کر سکتے ہیں۔ ان فائلز میں متعدد جی پی ایس مقامات بطور ٹریل شامل ہوتے ہیں، اور جی پی ایس سینسر ہر نئے مقام کو 1 سیکنڈ کے وقفے پر واپس کرے گا۔


یہ ویلیوز صرف ایک بار بھیجی جائیں گی، لہذا **Repeat** باکس کو چیک کریں تاکہ ڈیٹا ایک سیکنڈ بعد دہرایا جائے۔


> خاکہ نگاری: [نیتیا نرسمہن](https://github.com/nitya)۔ بڑی تصویر دیکھنے کے لیے تصویر پر کلک کریں۔
@ -75,7 +75,7 @@ NoSQL ڈیٹا بیس کو NoSQL کہا جاتا ہے کیونکہ ان میں S
> 💁 ان کے نام کے باوجود، کچھ NoSQL ڈیٹا بیس آپ کو ڈیٹا پر سوالات کرنے کے لیے SQL استعمال کرنے کی اجازت دیتے ہیں۔


NoSQL ڈیٹا بیس میں پہلے سے متعین اسکیمہ نہیں ہوتا جو ڈیٹا کو محفوظ کرنے کے طریقے کو محدود کرے، بلکہ آپ کسی بھی غیر ساختہ ڈیٹا کو داخل کر سکتے ہیں، عام طور پر JSON دستاویزات کا استعمال کرتے ہوئے۔ ان دستاویزات کو فولڈرز میں منظم کیا جا سکتا ہے، جیسے آپ کے کمپیوٹر پر فائلز۔ ہر دستاویز میں دوسرے دستاویزات سے مختلف فیلڈز ہو سکتے ہیں - مثال کے طور پر، اگر آپ اپنے فارم کی گاڑیوں سے IoT ڈیٹا محفوظ کر رہے ہیں، تو کچھ میں ایکسیلرومیٹر اور رفتار کے ڈیٹا کے لیے فیلڈز ہو سکتے ہیں، جبکہ دیگر میں ٹریلر کے درجہ حرارت کے لیے فیلڈز ہو سکتے ہیں۔ اگر آپ کسی نئے ٹرک کی قسم شامل کرتے ہیں، جیسے ایک ایسا ٹرک جس میں وزن کو ٹریک کرنے کے لیے بلٹ ان اسکیلز ہوں، تو آپ کا IoT ڈیوائس اس نئے فیلڈ کو شامل کر سکتا ہے اور اسے ڈیٹا بیس میں کسی تبدیلی کے بغیر محفوظ کیا جا سکتا ہے۔
@ -89,7 +89,7 @@ NoSQL ڈیٹا بیس میں پہلے سے متعین اسکیمہ نہیں ہو
پچھلے سبق میں آپ نے اپنے IoT ڈیوائس سے GPS سینسر کے ذریعے GPS ڈیٹا حاصل کیا۔ اس IoT ڈیٹا کو کلاؤڈ میں محفوظ کرنے کے لیے، آپ کو اسے IoT سروس پر بھیجنا ہوگا۔ ایک بار پھر، آپ Azure IoT Hub استعمال کریں گے، وہی IoT کلاؤڈ سروس جو آپ نے پچھلے پروجیکٹ میں استعمال کی تھی۔


### کام - GPS ڈیٹا کو IoT ہب پر بھیجیں
@ -171,7 +171,7 @@ IoT ڈیوائس سے کلاؤڈ تک ڈیٹا ہمیشہ حقیقی وقت می
ایک بار جب ڈیٹا آپ کے IoT ہب میں آنا شروع ہو جائے، تو آپ کچھ سرور لیس کوڈ لکھ سکتے ہیں جو ایونٹس کو سننے کے لیے Event-Hub کے ہم آہنگ اینڈ پوائنٹ پر شائع کرے۔ یہ وارم راستہ ہے - یہ ڈیٹا محفوظ کیا جائے گا اور اگلے سبق میں سفر کی رپورٹنگ کے لیے استعمال ہوگا۔


### کام - GPS ایونٹس کو سرور لیس کوڈ کے ذریعے ہینڈل کریں
@ -193,7 +193,7 @@ IoT ڈیوائس سے کلاؤڈ تک ڈیٹا ہمیشہ حقیقی وقت می
## Azure اسٹوریج اکاؤنٹس


Azure اسٹوریج اکاؤنٹس ایک عمومی مقصد کا اسٹوریج سروس ہے جو مختلف طریقوں سے ڈیٹا کو محفوظ کر سکتا ہے۔ آپ ڈیٹا کو blobs، queues، tables، یا files کی صورت میں محفوظ کر سکتے ہیں، اور یہ سب ایک ساتھ ممکن ہے۔


> خاکہ [نیتیا نرسمہن](https://github.com/nitya) کی تخلیق کردہ۔ بڑی تصویر دیکھنے کے لیے تصویر پر کلک کریں۔
@ -64,11 +64,11 @@
ایک انسان کے لیے اس ڈیٹا کو سمجھنا مشکل ہو سکتا ہے۔ یہ صرف نمبروں کی ایک دیوار ہے جس کا کوئی مطلب نہیں۔ اس ڈیٹا کو بصری بنانے کے پہلے قدم کے طور پر، اسے لائن چارٹ پر پلاٹ کیا جا سکتا ہے:


اسے مزید بہتر بنایا جا سکتا ہے، جیسے کہ ایک لائن شامل کر کے یہ دکھایا جائے کہ مٹی کی نمی کی ریڈنگ 450 پر پہنچنے پر خودکار پانی دینے کا نظام کب آن ہوا:


یہ چارٹ بہت جلدی یہ ظاہر کرتا ہے کہ مٹی کی نمی کی سطح کیا تھی اور پانی دینے کا نظام کب آن ہوا۔
@ -84,7 +84,7 @@ GPS ڈیٹا کے ساتھ کام کرتے وقت، سب سے واضح بصری
نقشوں کے ساتھ کام کرنا ایک دلچسپ مشق ہے، اور انتخاب کے لیے بہت سے اختیارات ہیں جیسے Bing Maps، Leaflet، Open Street Maps، اور Google Maps۔ اس سبق میں، آپ [Azure Maps](https://azure.microsoft.com/services/azure-maps/?WT.mc_id=academic-17441-jabenn) کے بارے میں سیکھیں گے اور یہ کہ وہ آپ کے GPS ڈیٹا کو کیسے ظاہر کر سکتے ہیں۔


Azure Maps "جغرافیائی خدمات اور SDKs کا ایک مجموعہ ہے جو تازہ نقشہ سازی کے ڈیٹا کا استعمال کرتے ہوئے ویب اور موبائل ایپلیکیشنز کو جغرافیائی سیاق و سباق فراہم کرتا ہے۔" ڈویلپرز کو خوبصورت، انٹرایکٹو نقشے بنانے کے لیے ٹولز فراہم کیے جاتے ہیں جو ٹریفک کے تجویز کردہ راستے فراہم کر سکتے ہیں، ٹریفک کے واقعات کے بارے میں معلومات دے سکتے ہیں، اندرونی نیویگیشن، تلاش کی صلاحیتیں، بلندی کی معلومات، موسم کی خدمات اور بہت کچھ کر سکتے ہیں۔
@ -185,7 +185,7 @@ Azure Maps "جغرافیائی خدمات اور SDKs کا ایک مجموعہ
اگر آپ اپنے `index.html` صفحے کو ویب براؤزر میں کھولیں، تو آپ کو ایک نقشہ لوڈ ہوتا ہوا نظر آنا چاہیے، جو سیئٹل کے علاقے پر مرکوز ہے۔


✅ زوم اور سینٹر پیرامیٹرز کے ساتھ تجربہ کریں تاکہ اپنے نقشے کی ظاہری شکل کو تبدیل کریں۔ آپ اپنے ڈیٹا کے طول البلد اور عرض البلد کے مطابق مختلف کوآرڈینیٹس شامل کر کے نقشے کو دوبارہ مرکز کر سکتے ہیں۔
@ -317,7 +317,7 @@ Azure Maps "جغرافیائی خدمات اور SDKs کا ایک مجموعہ
1. HTML صفحہ اپنے براؤزر میں لوڈ کریں۔ یہ نقشہ لوڈ کرے گا، پھر اسٹوریج سے تمام GPS ڈیٹا لوڈ کرے گا اور نقشے پر پلاٹ کرے گا۔


> 💁 آپ اس کوڈ کو [code](../../../../../3-transport/lessons/3-visualize-location-data/code) فولڈر میں تلاش کر سکتے ہیں۔


> خاکہ [نیتیا نرسمہن](https://github.com/nitya) کی طرف سے۔ بڑی تصویر دیکھنے کے لیے تصویر پر کلک کریں۔
@ -35,7 +35,7 @@
جیو فینس ایک حقیقی دنیا کے جغرافیائی علاقے کے لیے ایک ورچوئل حد ہے۔ جیو فینسز دائرے کی شکل میں ہو سکتے ہیں، جو ایک نقطہ اور رداس سے متعین کیے جاتے ہیں (مثال کے طور پر کسی عمارت کے ارد گرد 100 میٹر چوڑا دائرہ)، یا ایک پولیگون کی شکل میں، جیسے اسکول زون، شہر کی حدود، یا یونیورسٹی یا دفتر کیمپس۔


> 💁 آپ نے شاید پہلے ہی جیو فینسز کا استعمال کیا ہو، بغیر جانے۔ اگر آپ نے iOS ریمائنڈرز ایپ یا Google Keep میں کسی مقام کی بنیاد پر یاد دہانی سیٹ کی ہے، تو آپ نے جیو فینس کا استعمال کیا ہے۔ یہ ایپس دیے گئے مقام کی بنیاد پر جیو فینس سیٹ کرتی ہیں اور جب آپ کا فون جیو فینس میں داخل ہوتا ہے تو آپ کو الرٹ کرتی ہیں۔
@ -212,7 +212,7 @@ Azure Maps میں جیو فینس استعمال کرنے کے لیے، پہلے
مثال کے طور پر، تصور کریں کہ GPS ریڈنگز ایک گاڑی کو دکھاتی ہیں جو ایک سڑک پر چل رہی ہے جو جیو فینس کے ساتھ چلتی ہے۔ اگر ایک GPS قدر غلط ہے اور گاڑی کو جیو فینس کے اندر رکھتی ہے، حالانکہ وہاں گاڑیوں کی رسائی نہیں ہے، تو اسے نظر انداز کیا جا سکتا ہے۔


مندرجہ بالا تصویر میں، مائیکروسافٹ کیمپس کے ایک حصے پر ایک جیو فینس دکھایا گیا ہے۔ سرخ لائن ایک ٹرک کو 520 کے ساتھ چلتے ہوئے دکھاتی ہے، اور دائرے GPS ریڈنگز کو ظاہر کرتے ہیں۔ ان میں سے زیادہ تر درست ہیں اور 520 کے ساتھ ہیں، لیکن ایک غلط ریڈنگ جیو فینس کے اندر ہے۔ یہ ریڈنگ درست نہیں ہو سکتی - 520 سے کیمپس پر اچانک مڑنے اور پھر واپس 520 پر جانے کے لیے کوئی سڑکیں نہیں ہیں۔ جیو فینس کو چیک کرنے والا کوڈ نتائج پر عمل کرنے سے پہلے پچھلی ریڈنگز کو مدنظر رکھنا ہوگا۔
✅ آپ کو کون سے اضافی ڈیٹا کی ضرورت ہوگی تاکہ یہ چیک کیا جا سکے کہ آیا GPS ریڈنگ کو درست سمجھا جا سکتا ہے؟
@ -284,7 +284,7 @@ Azure Maps میں جیو فینس استعمال کرنے کے لیے، پہلے
جواب یہ ہے کہ یہ نہیں جان سکتا! اس کے بجائے آپ ایونٹس کو پڑھنے کے لیے متعدد الگ الگ کنیکشنز ڈیفائن کر سکتے ہیں، اور ہر ایک ان ریڈ میسجز کے دوبارہ چلانے کا انتظام کر سکتا ہے۔ انہیں *کنزیومر گروپس* کہا جاتا ہے۔ جب آپ اینڈ پوائنٹ سے کنیکٹ کرتے ہیں، تو آپ یہ اسپیسفائی کر سکتے ہیں کہ آپ کس کنزیومر گروپ سے کنیکٹ کرنا چاہتے ہیں۔ آپ کی ایپلیکیشن کے ہر کمپوننٹ ایک مختلف کنزیومر گروپ سے کنیکٹ کرے گا۔


نظریہ میں، ہر کنزیومر گروپ سے 5 ایپلیکیشنز تک کنیکٹ ہو سکتی ہیں، اور وہ سب میسجز وصول کریں گی جب وہ آئیں گے۔ بہترین عمل یہ ہے کہ ہر کنزیومر گروپ تک صرف ایک ایپلیکیشن کو رسائی دی جائے تاکہ ڈپلیکیٹ میسجز پروسیسنگ سے بچا جا سکے، اور یہ یقینی بنایا جا سکے کہ جب دوبارہ شروع کیا جائے تو تمام قطار میں موجود میسجز درست طریقے سے پروسیس ہوں۔ مثال کے طور پر، اگر آپ نے اپنی Functions ایپ کو لوکل طور پر لانچ کیا اور اسے کلاؤڈ میں بھی چلایا، تو وہ دونوں میسجز پروسیس کریں گے، جس سے اسٹوریج اکاؤنٹ میں ڈپلیکیٹ blobs محفوظ ہوں گے۔


> خاکہ [نیتیا نرسمہن](https://github.com/nitya) کی تخلیق کردہ۔ بڑی تصویر دیکھنے کے لیے تصویر پر کلک کریں۔
@ -38,7 +38,7 @@
خودکار کٹائی کے بڑھتے ہوئے رجحان نے پیداوار کی ترتیب کو کھیت سے فیکٹری میں منتقل کر دیا۔ خوراک لمبی کنویئر بیلٹس پر سفر کرتی، جہاں لوگوں کی ٹیمیں پیداوار کو چن کر غیر معیاری اشیاء کو ہٹا دیتیں۔ مشینری کی بدولت کٹائی سستی ہو گئی، لیکن خوراک کو دستی طور پر ترتیب دینے کی لاگت اب بھی موجود تھی۔


اگلا ارتقاء مشینوں کا استعمال تھا جو یا تو کٹائی کرنے والی مشین میں شامل تھیں یا پروسیسنگ پلانٹس میں۔ ان مشینوں کی پہلی نسل نے رنگوں کا پتہ لگانے کے لیے آپٹیکل سینسرز کا استعمال کیا، جو لیورز یا ہوا کے جھونکوں کے ذریعے سبز ٹماٹروں کو فضلہ کے ڈبے میں دھکیلتے تھے، جبکہ سرخ ٹماٹر کنویئر بیلٹس کے نیٹ ورک پر چلتے رہتے تھے۔
@ -62,7 +62,7 @@
> 🎓 ML ماڈلز کے نتائج کو *پیش گوئیاں* کہا جاتا ہے۔


ML ماڈلز بائنری جواب نہیں دیتے، بلکہ امکانات دیتے ہیں۔ مثال کے طور پر، ایک ماڈل کو ایک کیلے کی تصویر دی جا سکتی ہے اور یہ `پکا` 99.7% اور `کچا` 0.3% پیش گوئی کر سکتا ہے۔ آپ کا کوڈ پھر بہترین پیش گوئی کا انتخاب کرے گا اور فیصلہ کرے گا کہ کیلا پکا ہے۔
@ -90,7 +90,7 @@ ML ماڈلز بائنری جواب نہیں دیتے، بلکہ امکانات
کسٹم وژن ایک کلاؤڈ بیسڈ ٹول ہے جو تصویر کے درجہ بندی کرنے والے ماڈلز کو تربیت دینے کے لیے استعمال ہوتا ہے۔ یہ آپ کو صرف چند تصاویر کے ساتھ ایک ماڈل کو تربیت دینے کی اجازت دیتا ہے۔ آپ تصاویر کو ویب پورٹل، ویب API یا SDK کے ذریعے اپ لوڈ کر سکتے ہیں، ہر تصویر کو ایک *ٹیگ* دے کر جو اس تصویر کی درجہ بندی کی نمائندگی کرتا ہے۔ آپ پھر ماڈل کو تربیت دیتے ہیں، اور اس کی کارکردگی کو جانچتے ہیں۔ جب آپ ماڈل سے مطمئن ہو جائیں، تو آپ اس کے ورژنز کو شائع کر سکتے ہیں جو ویب API یا SDK کے ذریعے قابل رسائی ہوں۔


> 💁 آپ کم از کم 5 تصاویر فی درجہ بندی کے ساتھ ایک کسٹم وژن ماڈل کو تربیت دے سکتے ہیں، لیکن زیادہ بہتر ہے۔ کم از کم 30 تصاویر کے ساتھ آپ کو بہتر نتائج مل سکتے ہیں۔
@ -146,7 +146,7 @@ ML ماڈلز بائنری جواب نہیں دیتے، بلکہ امکانات
جب آپ اپنا پروجیکٹ بنائیں، تو اس بات کو یقینی بنائیں کہ آپ نے پہلے بنائے گئے `fruit-quality-detector-training` ریسورس کا استعمال کیا ہے۔ *Classification* پروجیکٹ ٹائپ، *Multiclass* درجہ بندی کی قسم، اور *Food* ڈومین استعمال کریں۔


✅ اپنے تصویر کے درجہ بندی کرنے والے ماڈل کے لیے کسٹم وژن UI کو دریافت کرنے کے لیے کچھ وقت نکالیں۔
@ -164,7 +164,7 @@ ML ماڈلز بائنری جواب نہیں دیتے، بلکہ امکانات
* 2 پکے ہوئے کیلے استعمال کرتے ہوئے، ہر ایک کی مختلف زاویوں سے کچھ تصاویر لیں، کم از کم 7 تصاویر (5 تربیت کے لیے، 2 جانچ کے لیے)، لیکن ترجیحاً زیادہ۔


* یہی عمل 2 کچے کیلے کے ساتھ دہرائیں۔
@ -174,7 +174,7 @@ ML ماڈلز بائنری جواب نہیں دیتے، بلکہ امکانات
1. [Microsoft Docs پر ماڈل بنانے کے فوری آغاز کے اپلوڈ اور ٹیگ تصاویر کے سیکشن](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/getting-started-build-a-classifier?WT.mc_id=academic-17441-jabenn#upload-and-tag-images) کی پیروی کریں تاکہ اپنی تربیتی تصاویر اپلوڈ کریں۔ پکے ہوئے پھل کو `ripe` اور کچے پھل کو `unripe` کے طور پر ٹیگ کریں۔


1. [Microsoft Docs پر ماڈل بنانے کے فوری آغاز کے ماڈل کو تربیت دینے کے سیکشن](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/getting-started-build-a-classifier?WT.mc_id=academic-17441-jabenn#train-the-classifier) کی پیروی کریں تاکہ اپنی اپلوڈ کردہ تصاویر پر ماڈل کو تربیت دیں۔
@ -192,7 +192,7 @@ ML ماڈلز بائنری جواب نہیں دیتے، بلکہ امکانات
1. [Microsoft Docs پر ماڈل کی جانچ کے دستاویزات](https://docs.microsoft.com/azure/cognitive-services/custom-vision-service/test-your-model?WT.mc_id=academic-17441-jabenn#test-your-model) کی پیروی کریں تاکہ اپنے ماڈل کی جانچ کریں۔ وہ تصاویر استعمال کریں جو آپ نے پہلے جانچ کے لیے بنائی تھیں، نہ کہ وہ تصاویر جو تربیت کے لیے استعمال کی گئی تھیں۔


1. تمام جانچ کی تصاویر آزمائیں جو آپ کے پاس دستیاب ہیں اور امکانات کا مشاہدہ کریں۔


> خاکہ نگاری: [نیتیا نرسمہن](https://github.com/nitya)۔ بڑی تصویر دیکھنے کے لیے تصویر پر کلک کریں۔
@ -26,7 +26,7 @@
کیمرہ سینسرز، جیسا کہ نام سے ظاہر ہے، وہ کیمرے ہیں جنہیں آپ اپنے آئی او ٹی ڈیوائس سے جوڑ سکتے ہیں۔ یہ اسٹِل تصاویر لے سکتے ہیں یا ویڈیو اسٹریم کر سکتے ہیں۔ کچھ کیمرے خام امیج ڈیٹا واپس کرتے ہیں، جبکہ کچھ امیج ڈیٹا کو JPEG یا PNG فائل میں کمپریس کر دیتے ہیں۔ عام طور پر آئی او ٹی ڈیوائسز کے ساتھ کام کرنے والے کیمرے چھوٹے اور کم ریزولوشن والے ہوتے ہیں، لیکن آپ اعلیٰ ریزولوشن والے کیمرے بھی حاصل کر سکتے ہیں جو اعلیٰ درجے کے فونز کا مقابلہ کر سکتے ہیں۔ آپ مختلف قسم کے لینز، ملٹیپل کیمرہ سیٹ اپس، انفراریڈ تھرمل کیمرے، یا یو وی کیمرے بھی حاصل کر سکتے ہیں۔


زیادہ تر کیمرہ سینسرز امیج سینسرز استعمال کرتے ہیں، جہاں ہر پکسل ایک فوٹوڈائیوڈ ہوتا ہے۔ ایک لینز تصویر کو امیج سینسر پر مرکوز کرتا ہے، اور ہزاروں یا لاکھوں فوٹوڈائیوڈز اس پر پڑنے والی روشنی کو پکڑتے ہیں اور اسے پکسل ڈیٹا کے طور پر ریکارڈ کرتے ہیں۔
@ -74,7 +74,7 @@
1. ورژن کے لیے **Publish** بٹن کو منتخب کریں۔


1. *Publish Model* ڈائیلاگ میں، *Prediction resource* کو `fruit-quality-detector-prediction` ریسورس پر سیٹ کریں جو آپ نے پچھلے سبق میں بنایا تھا۔ نام کو `Iteration2` پر چھوڑ دیں، اور **Publish** بٹن کو منتخب کریں۔
@ -88,7 +88,7 @@
*Prediction-Key* ویلیو کی بھی ایک کاپی لیں۔ یہ ایک محفوظ کلید ہے جسے آپ کو ماڈل کو کال کرتے وقت پاس کرنا ہوگا۔ صرف وہ ایپلیکیشنز جو اس کلید کو پاس کرتی ہیں ماڈل کو استعمال کرنے کی اجازت دی جاتی ہیں، باقی تمام ایپلیکیشنز کو مسترد کر دیا جاتا ہے۔


✅ جب ایک نیا ورژن شائع کیا جاتا ہے، تو اس کا نام مختلف ہوتا ہے۔ آپ کے خیال میں آپ آئی او ٹی ڈیوائس کو استعمال کرنے والے ورژن کو کیسے تبدیل کریں گے؟
@ -109,7 +109,7 @@
ایک امیج کلاسیفائر کے بہترین نتائج حاصل کرنے کے لیے، آپ ماڈل کو ان تصاویر کے ساتھ تربیت دینا چاہتے ہیں جو پیش گوئی کے لیے استعمال ہونے والی تصاویر سے زیادہ سے زیادہ مشابہ ہوں۔ اگر آپ نے تربیت کے لیے اپنے فون کے کیمرے کا استعمال کیا، تو مثال کے طور پر، تصویر کا معیار، شارپنس، اور رنگ آئی او ٹی ڈیوائس سے جڑے کیمرے سے مختلف ہوں گے۔


اوپر دی گئی تصویر میں، بائیں طرف کیلے کی تصویر Raspberry Pi کیمرے سے لی گئی ہے، جبکہ دائیں طرف کی تصویر اسی کیلے کی اسی جگہ پر iPhone سے لی گئی ہے۔ معیار میں واضح فرق ہے - iPhone کی تصویر زیادہ شارپ، روشن رنگوں اور زیادہ کنٹراسٹ کے ساتھ ہے۔
آپ [راسپبیری پائی کیمرہ ماڈیول کے ساتھ شروعات کی دستاویزات](https://projects.raspberrypi.org/en/projects/getting-started-with-picamera/2) میں کلپ کو کھولنے اور کیبل ڈالنے کا اینیمیشن دیکھ سکتے ہیں۔


1. پائی سے گروو بیس ہیٹ کو ہٹا دیں۔
1. ربن کیبل کو گروو بیس ہیٹ کے کیمرہ سلاٹ سے گزاریں۔ اس بات کو یقینی بنائیں کہ کیبل کا نیلا حصہ اینالاگ پورٹس **A0**, **A1** وغیرہ کی طرف ہو۔


1. ربن کیبل کو پائی کے کیمرہ پورٹ میں ڈالیں۔ ایک بار پھر، سیاہ پلاسٹک کلپ کو اوپر کھینچیں، کیبل ڈالیں، پھر کلپ کو واپس دھکیل دیں۔ کیبل کا نیلا حصہ USB اور ایتھرنیٹ پورٹس کی طرف ہونا چاہیے۔


1. گروو بیس ہیٹ کو دوبارہ لگائیں۔
@ -101,7 +101,7 @@
`camera.rotation = 0` لائن تصویر کی روٹیشن سیٹ کرتی ہے۔ ربن کیبل کیمرہ کے نیچے آتی ہے، لیکن اگر آپ نے کیمرہ کو گھمایا تاکہ وہ آسانی سے اس چیز کی طرف اشارہ کرے جسے آپ کلاسیفائی کرنا چاہتے ہیں، تو آپ اس لائن کو روٹیشن کے ڈگریز کے مطابق تبدیل کر سکتے ہیں۔


مثال کے طور پر، اگر آپ ربن کیبل کو کسی چیز کے اوپر معلق کریں تاکہ وہ کیمرہ کے اوپر ہو، تو روٹیشن کو 180 پر سیٹ کریں:
آپ لی گئی تصویر اور یہ اقدار **Predictions** ٹیب میں کسٹم وژن میں دیکھ سکیں گے۔


> 💁 آپ اس کوڈ کو [code-classify/pi](../../../../../4-manufacturing/lessons/2-check-fruit-from-device/code-classify/pi) یا [code-classify/virtual-iot-device](../../../../../4-manufacturing/lessons/2-check-fruit-from-device/code-classify/virtual-iot-device) فولڈر میں تلاش کر سکتے ہیں۔
Some files were not shown because too many files have changed in this diff
Show More