|
4 weeks ago | |
---|---|---|
.. | ||
code-notebook | 4 weeks ago | |
README.md | 4 weeks ago | |
assignment.md | 4 weeks ago | |
pi-temp.md | 4 weeks ago | |
single-board-computer-temp-publish.md | 4 weeks ago | |
virtual-device-temp.md | 4 weeks ago | |
wio-terminal-temp-publish.md | 4 weeks ago | |
wio-terminal-temp.md | 4 weeks ago |
README.md
پیشبینی رشد گیاه با IoT
اسکچنوت توسط نیتیا ناراسیمهان. برای مشاهده نسخه بزرگتر روی تصویر کلیک کنید.
آزمون پیش از درس
مقدمه
گیاهان برای رشد به چیزهایی مانند آب، دیاکسید کربن، مواد مغذی، نور و گرما نیاز دارند. در این درس، یاد میگیرید که چگونه با اندازهگیری دمای هوا، نرخ رشد و بلوغ گیاهان را محاسبه کنید.
در این درس به موضوعات زیر میپردازیم:
- کشاورزی دیجیتال
- چرا دما در کشاورزی مهم است؟
- اندازهگیری دمای محیط
- روزهای درجه رشد (GDD)
- محاسبه GDD با استفاده از دادههای حسگر دما
کشاورزی دیجیتال
کشاورزی دیجیتال در حال تغییر نحوه کشاورزی است و از ابزارهایی برای جمعآوری، ذخیره و تحلیل دادههای کشاورزی استفاده میکند. ما در دورهای هستیم که توسط مجمع جهانی اقتصاد به عنوان "انقلاب صنعتی چهارم" توصیف شده است و ظهور کشاورزی دیجیتال به عنوان "انقلاب کشاورزی چهارم" یا "کشاورزی 4.0" شناخته میشود.
🎓 اصطلاح کشاورزی دیجیتال شامل کل "زنجیره ارزش کشاورزی" نیز میشود، یعنی کل مسیر از مزرعه تا سفره. این شامل ردیابی کیفیت محصولات غذایی در حین حمل و فرآوری، سیستمهای انبارداری و تجارت الکترونیک، حتی اپلیکیشنهای اجاره تراکتور است!
این تغییرات به کشاورزان اجازه میدهد تا بازدهی را افزایش دهند، از کودها و آفتکشها کمتر استفاده کنند و آب را به صورت بهینهتری مصرف کنند. اگرچه این فناوریها عمدتاً در کشورهای ثروتمند استفاده میشوند، اما حسگرها و دستگاههای دیگر به تدریج ارزانتر میشوند و در کشورهای در حال توسعه نیز قابل دسترستر میشوند.
برخی از تکنیکهایی که توسط کشاورزی دیجیتال ممکن شدهاند عبارتند از:
- اندازهگیری دما - اندازهگیری دما به کشاورزان کمک میکند تا رشد و بلوغ گیاهان را پیشبینی کنند.
- آبیاری خودکار - اندازهگیری رطوبت خاک و روشن کردن سیستمهای آبیاری زمانی که خاک خیلی خشک است، به جای آبیاری زمانبندیشده. آبیاری زمانبندیشده میتواند منجر به کمآبیاری در دورههای گرم و خشک یا بیشآبیاری در زمان بارندگی شود. با آبیاری فقط زمانی که خاک به آن نیاز دارد، کشاورزان میتوانند مصرف آب خود را بهینه کنند.
- کنترل آفات - کشاورزان میتوانند از دوربینهای رباتهای خودکار یا پهپادها برای بررسی آفات استفاده کنند و سپس فقط در مناطقی که نیاز است آفتکشها را اعمال کنند، که این کار باعث کاهش استفاده از آفتکشها و کاهش ورود آنها به منابع آب محلی میشود.
✅ تحقیق کنید. چه تکنیکهای دیگری برای بهبود بازدهی کشاورزی استفاده میشود؟
🎓 اصطلاح "کشاورزی دقیق" برای تعریف مشاهده، اندازهگیری و پاسخ به محصولات در سطح هر مزرعه یا حتی بخشهایی از یک مزرعه استفاده میشود. این شامل اندازهگیری سطح آب، مواد مغذی و آفات و پاسخ دقیق به آنها، مانند آبیاری فقط یک بخش کوچک از مزرعه است.
چرا دما در کشاورزی مهم است؟
هنگام یادگیری درباره گیاهان، بیشتر دانشآموزان درباره نیاز به آب، نور، دیاکسید کربن و مواد مغذی آموزش میبینند. گیاهان همچنین برای رشد به گرما نیاز دارند - به همین دلیل است که گیاهان در بهار با افزایش دما شکوفا میشوند، چرا گلهای برفی یا نرگسها میتوانند به دلیل یک دوره کوتاه گرما زودتر جوانه بزنند و چرا گلخانهها و گرمخانهها برای رشد گیاهان بسیار مفید هستند.
🎓 گلخانهها و گرمخانهها کار مشابهی انجام میدهند، اما با یک تفاوت مهم. گرمخانهها به صورت مصنوعی گرم میشوند و به کشاورزان اجازه میدهند دما را دقیقتر کنترل کنند، در حالی که گلخانهها به گرمای خورشید متکی هستند و معمولاً تنها کنترل موجود، پنجرهها یا دریچههایی برای خروج گرما است.
گیاهان دارای دمای پایه یا حداقل، دمای بهینه و دمای حداکثر هستند که همگی بر اساس دمای متوسط روزانه تعیین میشوند.
- دمای پایه - این حداقل دمای متوسط روزانهای است که برای رشد گیاه لازم است.
- دمای بهینه - این بهترین دمای متوسط روزانه برای دستیابی به بیشترین رشد است.
- دمای حداکثر - این حداکثر دمایی است که یک گیاه میتواند تحمل کند. بالاتر از این دما، گیاه رشد خود را متوقف میکند تا آب را حفظ کرده و زنده بماند.
💁 این دماها میانگین هستند، یعنی میانگین دماهای روز و شب. گیاهان همچنین به دماهای مختلف در روز و شب نیاز دارند تا بتوانند به طور مؤثرتری فتوسنتز کنند و در شب انرژی ذخیره کنند.
هر گونه گیاه مقادیر متفاوتی برای دمای پایه، بهینه و حداکثر خود دارد. به همین دلیل است که برخی گیاهان در کشورهای گرم و برخی دیگر در کشورهای سرد رشد میکنند.
✅ تحقیق کنید. برای هر گیاهی که در باغ، مدرسه یا پارک محلی خود دارید، ببینید آیا میتوانید دمای پایه آن را پیدا کنید.
نمودار بالا یک مثال از نمودار نرخ رشد نسبت به دما را نشان میدهد. تا دمای پایه، هیچ رشدی وجود ندارد. نرخ رشد تا دمای بهینه افزایش مییابد و سپس پس از رسیدن به این اوج کاهش مییابد. در دمای حداکثر، رشد متوقف میشود.
شکل این نمودار از گونهای به گونه دیگر متفاوت است. برخی از گیاهان کاهش شدیدی بالاتر از دمای بهینه دارند، در حالی که برخی دیگر افزایش کندتری از دمای پایه تا بهینه دارند.
💁 برای اینکه یک کشاورز بهترین رشد را داشته باشد، باید سه مقدار دما و شکل نمودارهای مربوط به گیاهانی که میکارد را بداند.
اگر یک کشاورز کنترل دما را داشته باشد، مثلاً در یک گرمخانه تجاری، میتواند شرایط را برای گیاهان خود بهینه کند. یک گرمخانه تجاری که گوجهفرنگی پرورش میدهد، مثلاً دما را در روز حدود 25 درجه سانتیگراد و در شب 20 درجه سانتیگراد تنظیم میکند تا سریعترین رشد را داشته باشد.
🍅 ترکیب این دماها با نور مصنوعی، کودها و کنترل سطح دیاکسید کربن به کشاورزان تجاری اجازه میدهد که در تمام طول سال محصولات خود را پرورش داده و برداشت کنند.
اندازهگیری دمای محیط
حسگرهای دما میتوانند با دستگاههای IoT برای اندازهگیری دمای محیط استفاده شوند.
وظیفه - اندازهگیری دما
راهنمای مربوطه را دنبال کنید تا دما را با استفاده از دستگاه IoT خود نظارت کنید:
روزهای درجه رشد
روزهای درجه رشد (که به عنوان واحدهای درجه رشد نیز شناخته میشوند) روشی برای اندازهگیری رشد گیاهان بر اساس دما هستند. فرض بر این است که یک گیاه آب، مواد مغذی و دیاکسید کربن کافی دارد و دما نرخ رشد را تعیین میکند.
روزهای درجه رشد یا GDD به صورت روزانه به عنوان میانگین دمای روزانه بالاتر از دمای پایه گیاه محاسبه میشوند. هر گیاه برای رشد، گلدهی یا تولید و بلوغ محصول به تعداد مشخصی GDD نیاز دارد. هرچه GDD روزانه بیشتر باشد، گیاه سریعتر رشد میکند.
🇺🇸 برای آمریکاییها، روزهای درجه رشد میتوانند با استفاده از فارنهایت نیز محاسبه شوند. 5 GDD (در سانتیگراد) معادل 9 GDD (در فارنهایت) است.
فرمول کامل برای GDD کمی پیچیده است، اما یک معادله سادهتر وجود دارد که اغلب به عنوان یک تقریب خوب استفاده میشود:
- GDD - این تعداد روزهای درجه رشد است
- T max - این دمای حداکثر روزانه به درجه سانتیگراد است
- T min - این دمای حداقل روزانه به درجه سانتیگراد است
- T base - این دمای پایه گیاه به درجه سانتیگراد است
💁 تغییراتی وجود دارد که به T max بالای 30°C یا T min زیر T base میپردازد، اما فعلاً این موارد را نادیده میگیریم.
مثال - ذرت 🌽
بسته به نوع، ذرت (یا ذرت شیرین) برای بلوغ به بین 800 تا 2700 GDD نیاز دارد، با دمای پایه 10°C.
در اولین روزی که دما بالاتر از دمای پایه بود، دماهای زیر اندازهگیری شدند:
اندازهگیری | دما °C |
---|---|
حداکثر | 16 |
حداقل | 12 |
با جایگذاری این اعداد در محاسبه:
- T max = 16
- T min = 12
- T base = 10
این محاسبه به صورت زیر است:
ذرت در آن روز 4 GDD دریافت کرد. با فرض اینکه نوعی از ذرت به 800 GDD برای بلوغ نیاز دارد، هنوز به 796 GDD دیگر نیاز دارد تا به بلوغ برسد.
✅ تحقیق کنید. برای هر گیاهی که در باغ، مدرسه یا پارک محلی خود دارید، ببینید آیا میتوانید تعداد GDD مورد نیاز برای بلوغ یا تولید محصول را پیدا کنید.
محاسبه GDD با استفاده از دادههای حسگر دما
گیاهان در تاریخهای مشخصی رشد نمیکنند - به عنوان مثال، نمیتوانید یک بذر بکارید و بدانید که گیاه دقیقاً 100 روز بعد میوه میدهد. در عوض، به عنوان یک کشاورز میتوانید ایده تقریبی از مدت زمان رشد گیاه داشته باشید و سپس روزانه بررسی کنید که آیا محصولات آماده برداشت هستند یا خیر.
این کار تأثیر زیادی بر نیروی کار در یک مزرعه بزرگ دارد و خطر از دست دادن محصولاتی که به طور غیرمنتظره زود آماده شدهاند را به همراه دارد. با اندازهگیری دما، کشاورز میتواند GDD دریافتی یک گیاه را محاسبه کند و فقط زمانی که نزدیک به بلوغ است آن را بررسی کند.
با جمعآوری دادههای دما با استفاده از یک دستگاه IoT، کشاورز میتواند به طور خودکار زمانی که گیاهان نزدیک به بلوغ هستند مطلع شود. یک معماری معمول برای این کار این است که دستگاههای IoT دما را اندازهگیری کنند و سپس این دادههای تلهمتری را از طریق اینترنت با استفاده از چیزی مانند MQTT ارسال کنند. کد سرور سپس به این دادهها گوش میدهد و آنها را در جایی مانند یک پایگاه داده ذخیره میکند. این بدان معناست که دادهها میتوانند بعداً تحلیل شوند، مثلاً یک کار شبانه برای محاسبه GDD روز، جمعآوری کل GDD برای هر محصول تا کنون و هشدار دادن در صورت نزدیک بودن یک گیاه به بلوغ.
کد سرور همچنین میتواند دادهها را با افزودن اطلاعات اضافی تکمیل کند. به عنوان مثال، دستگاه IoT میتواند یک شناسه ارسال کند تا نشان دهد کدام دستگاه است و کد سرور میتواند از این شناسه برای جستجوی مکان دستگاه و محصولاتی که نظارت میکند استفاده کند. همچنین میتواند دادههای پایهای مانند زمان فعلی را اضافه کند، زیرا برخی از دستگاههای IoT سختافزار لازم برای پیگیری زمان دقیق را ندارند یا نیاز به کد اضافی برای خواندن زمان فعلی از طریق اینترنت دارند.
✅ چرا فکر میکنید دماهای مختلفی در مزارع مختلف وجود دارد؟
وظیفه - ارسال اطلاعات دما
راهنمای مربوطه را دنبال کنید تا دادههای دما را از طریق MQTT با استفاده از دستگاه IoT خود ارسال کنید تا بعداً تحلیل شوند:
وظیفه - ضبط و ذخیره اطلاعات دما
پس از اینکه دستگاه IoT تلهمتری را ارسال کرد، کد سرور میتواند نوشته شود تا به این دادهها گوش دهد و آنها را ذخیره کند. به جای ذخیره در یک پایگاه داده، کد سرور دادهها را در یک فایل مقادیر جدا شده با کاما (CSV) ذخیره میکند. فایلهای CSV دادهها را به صورت ردیفهایی از مقادیر به صورت متن ذخیره میکنند، به طوری که هر مقدار با یک کاما جدا شده و هر رکورد در یک خط جدید قرار میگیرد. این فایلها یک روش مناسب، قابل خواندن توسط انسان و به خوبی پشتیبانی شده برای ذخیره دادهها به صورت فایل هستند.
فایل CSV دو ستون خواهد داشت - تاریخ و دما. ستون تاریخ به عنوان تاریخ و زمان فعلی که پیام توسط سرور دریافت شده تنظیم میشود و دما از پیام تلهمتری میآید.
-
مراحل درس 4 را برای ایجاد کد سرور برای گوش دادن به تلهمتری تکرار کنید. نیازی به افزودن کد برای ارسال دستورات ندارید.
مراحل این کار عبارتند از:
-
پیکربندی و فعالسازی یک محیط مجازی پایتون
-
نصب بسته pip به نام paho-mqtt
-
نوشتن کدی برای گوش دادن به پیامهای MQTT که در موضوع تلهمتری منتشر میشوند
⚠️ میتوانید به دستورالعملهای درس 4 برای ایجاد یک برنامه پایتون برای دریافت تلهمتری در صورت نیاز مراجعه کنید.
پوشه این پروژه را
temperature-sensor-server
نامگذاری کنید. -
-
مطمئن شوید که
client_name
منعکسکننده این پروژه است:client_name = id + 'temperature_sensor_server'
-
واردات زیر را به بالای فایل، زیر واردات موجود اضافه کنید:
from os import path import csv from datetime import datetime
این کتابخانهای برای خواندن فایلها، کتابخانهای برای تعامل با فایلهای CSV و کتابخانهای برای کمک به تاریخ و زمان وارد میکند.
-
کد زیر را قبل از تابع
handle_telemetry
اضافه کنید:temperature_file_name = 'temperature.csv' fieldnames = ['date', 'temperature'] if not path.exists(temperature_file_name): with open(temperature_file_name, mode='w') as csv_file: writer = csv.DictWriter(csv_file, fieldnames=fieldnames) writer.writeheader()
این کد برخی از ثابتها را برای نام فایل برای نوشتن و نام سرستونهای ستونهای فایل CSV اعلام میکند. اولین ردیف یک فایل CSV به طور سنتی شامل سرستونهای ستونها است که با کاما جدا شدهاند.
سپس کد بررسی میکند که آیا فایل CSV از قبل وجود دارد یا خیر. اگر وجود نداشته باشد، با سرستونهای ستونها در اولین ردیف ایجاد میشود.
-
کد زیر را به انتهای تابع
handle_telemetry
اضافه کنید:with open(temperature_file_name, mode='a') as temperature_file: temperature_writer = csv.DictWriter(temperature_file, fieldnames=fieldnames) temperature_writer.writerow({'date' : datetime.now().astimezone().replace(microsecond=0).isoformat(), 'temperature' : payload['temperature']})
این کد فایل CSV را باز میکند و سپس یک سطر جدید به انتهای آن اضافه میکند. این سطر شامل تاریخ و زمان فعلی به فرمتی قابلخواندن برای انسان است، بههمراه دمایی که از دستگاه IoT دریافت شده است. دادهها در فرمت ISO 8601 با منطقه زمانی ذخیره میشوند، اما بدون میکروثانیه.
-
این کد را مانند قبل اجرا کنید و مطمئن شوید که دستگاه IoT شما در حال ارسال داده است. یک فایل CSV به نام
temperature.csv
در همان پوشه ایجاد خواهد شد. اگر آن را مشاهده کنید، تاریخ/زمانها و اندازهگیریهای دما را خواهید دید:date,temperature 2021-04-19T17:21:36-07:00,25 2021-04-19T17:31:36-07:00,24 2021-04-19T17:41:36-07:00,25
-
این کد را برای مدتی اجرا کنید تا دادهها جمعآوری شوند. ایدهآل این است که این کد را برای یک روز کامل اجرا کنید تا دادههای کافی برای محاسبات GDD جمعآوری شود.
💁 اگر از دستگاه IoT مجازی استفاده میکنید، گزینه تصادفی (random) را انتخاب کنید و یک بازه تنظیم کنید تا از دریافت دمای یکسان در هر بار بازگشت مقدار دما جلوگیری شود.
> 💁 اگر میخواهید این کد را برای یک روز کامل اجرا کنید، باید مطمئن شوید که کامپیوتری که کد سرور شما روی آن اجرا میشود به حالت خواب نمیرود. این کار را میتوانید با تغییر تنظیمات توان یا اجرای چیزی مانند [این اسکریپت پایتون برای فعال نگه داشتن سیستم](https://github.com/jaqsparow/keep-system-active) انجام دهید.
💁 میتوانید این کد را در پوشه code-server/temperature-sensor-server پیدا کنید.
وظیفه - محاسبه GDD با استفاده از دادههای ذخیرهشده
وقتی سرور دادههای دما را جمعآوری کرد، میتوان GDD برای یک گیاه را محاسبه کرد.
مراحل انجام این کار به صورت دستی عبارتند از:
-
دمای پایه برای گیاه را پیدا کنید. بهعنوان مثال، دمای پایه برای توتفرنگی ۱۰ درجه سانتیگراد است.
-
از فایل
temperature.csv
، بالاترین و پایینترین دماهای روز را پیدا کنید. -
از فرمول محاسبه GDD که قبلاً داده شده است برای محاسبه GDD استفاده کنید.
برای مثال، اگر بالاترین دمای روز ۲۵ درجه سانتیگراد و پایینترین دما ۱۲ درجه سانتیگراد باشد:
- ۲۵ + ۱۲ = ۳۷
- ۳۷ / ۲ = ۱۸.۵
- ۱۸.۵ - ۱۰ = ۸.۵
بنابراین، توتفرنگیها ۸.۵ GDD دریافت کردهاند. توتفرنگیها به حدود ۲۵۰ GDD نیاز دارند تا میوه بدهند، بنابراین هنوز زمان باقی است.
🚀 چالش
گیاهان برای رشد به چیزی بیش از گرما نیاز دارند. چه چیزهای دیگری مورد نیاز است؟
برای این موارد، بررسی کنید که آیا حسگرهایی وجود دارند که بتوانند آنها را اندازهگیری کنند. در مورد عملگرهایی که میتوانند این سطوح را کنترل کنند چطور؟ چگونه میتوانید یک یا چند دستگاه IoT را برای بهینهسازی رشد گیاهان کنار هم قرار دهید؟
آزمون پس از درس
مرور و مطالعه شخصی
- درباره کشاورزی دیجیتال بیشتر بخوانید در صفحه ویکیپدیا کشاورزی دیجیتال. همچنین درباره کشاورزی دقیق بیشتر بخوانید در صفحه ویکیپدیا کشاورزی دقیق.
- محاسبه کامل روزهای درجه رشد (GDD) پیچیدهتر از فرمول سادهای است که اینجا داده شده است. درباره فرمول پیچیدهتر و نحوه برخورد با دماهای زیر خط پایه بیشتر بخوانید در صفحه ویکیپدیا روزهای درجه رشد.
- ممکن است در آینده غذا کمیاب شود اگر همچنان از روشهای فعلی کشاورزی استفاده کنیم. درباره تکنیکهای کشاورزی پیشرفته بیشتر بدانید در این ویدئوی مزارع پیشرفته آینده در یوتیوب.
تکلیف
بصریسازی دادههای GDD با استفاده از Jupyter Notebook
سلب مسئولیت:
این سند با استفاده از سرویس ترجمه هوش مصنوعی Co-op Translator ترجمه شده است. در حالی که ما تلاش میکنیم دقت را حفظ کنیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است شامل خطاها یا نادرستیها باشند. سند اصلی به زبان اصلی آن باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حساس، توصیه میشود از ترجمه انسانی حرفهای استفاده کنید. ما مسئولیتی در قبال سوء تفاهمها یا تفسیرهای نادرست ناشی از استفاده از این ترجمه نداریم.