سنسور رطوبت خاک YL-100 و سنسور تشخیص سطح آب دارای پایه آنالوگ هستند و ارتباط با میکروکنترلرها از طریق پایه های ADC فراهم است. برد رزبری پای Raspberry Pi فاقد پایههای آنالوگ ADC است و عملا امکان اتصال سنسورهای رطوبت خاک و سطح آب به GPIO برد رزبری پای وجود ندارد. در این آموزش به معرفی این دو سنسور و نحوه ی ارتباط با مبدل ADS1115 با برد رزبری پای میپردازیم. در ادامه این آموزش با مرجع تخصصی رزبری پای به زبان فارسی دیجی اسپارک همراه باشید.
رزبری پای و پایههای GPIO
برد رزبری پای Raspberry Pi تا الان که در سال ۲۰۲۰ هستیم نسخه ۴ و برد Raspberry Pi 400 را معرفی کرده است و تغییرات اساسی در هر نسخه لحاظ کرده است. یکی از بردهای کاربردی و کوچک خانواده رزبری پای برد رزبری پای A Plus است که با ظاهری بسیار متفاوت در سال ۲۰۱۸ معرفی شد. برد رزبری پای در پایههای GPIO همیشه یکسان است و هیچ زمان تفاوتی در عملکرد این پایهها رخ نداده است. انتخاب نوع رزبری پای در تمامی پروژههای سایت دلخواه است و سازگاری دارد. کافیست طبق آموزش اتصالات را انجام دهید. در ادامه تصویر GPIO جهت برقراری اتصالات قرار گرفته شده است.
در این آموزش از رزبری پای ۳ مدل A Plus استفاده شده است. برخی از ویژگی های این برد در ادامه ضمیمه شده است.
- دارای پردازنده BCM2837B0, Cortex-A5
- دارای حافظه داخلی ۵۱۲MB
- دارای پردازنده با فرکانس۲٫۴GHz
- دارای بلوتوث Bluetooth
- دارای وای فای ۵GHz IEEE 802.11.b/g/n/ac wireless LAN
- دارای ۴۰ پایه GPIO
مبدل ADS1115/ADS1110
ماژول مبدل آنالوگ به دیجیتال ADC مدل ADS1115 و ADS1015 در ابعاد بسیار کوچک و راحت برای تست و استفاده طراحی شده است. مبدل ADS1115 ازدقت بالایی بهره میبرد و به همین دلیل در بسیاری از پروژه ها با اطمینان استفاده میشود. دقت اندازه گیری مبدل ۱۶ بیت در ۸۶۰ نمونه در هر ثانیه است که از طریق پروتکل I2C ارتباط برقرار میشود. ولتاژ مورد نیاز جهت راه اندازی ماژول بین ۲ تا ۵٫۵ ولت DC و جریان در کمترین زمان مصرف در حدود ۱۵۰ میکرو آمپر میباشد. نرخ دقت اندازه گیری مبدل بین ۸SPS to 860SPS میباشد. همچنین دارای اسیلاتور و PGA یا همان تقویت کننده گین برنامه پذیر programmable-gain amplifier داخلی میباشد. دارای رابط I2C با ظرفیت ۷ بیتی با آدرس ۰X48 و ۰X4B است. مبدل ADS1115 دارای ۴ پایه آنالوگ جهت اتصال سنسورهای آنالوگ به مبدل است. مبدل ADS1x15 4 کاناله است و میتوانید ۴ سنسور آنالوگ را به آن متصل کرده و مقایر ولتاژ ADC را از هر کانال خوانده و با گین تنظیم کنید. برای اطلاعات بیشتر در ابتدا آموزش زیر را مطالعه کنید و نحوه ی نصب پکیج ADS1115 را انجام دهید.
سنسور رطوبت خاک YL-100
سنسور رطوبت خاک دارای رابط آنالوگ Analog است و با استفاده از پایه های آنالوگ Analog میکروکنترلرها راه اندازی شده و میتوانیم دیتا را در هر لحظه بر اساس تغییرات ولتاژ بخوانیم. ولتاژ کاری سنسور بین ۳٫۳ تا ۵ ولت DC است. با استفاده از ماژول تشخیص رطوبت خاک یا Soil Moisture به همراه تجهیزات جانبی دیگر از جمله آردوینو و یک شیر برقی، میتوانید سیستم آبیاری اتوماتیک بسازید. در این سیستم دقت آبیاری بسیار زیاد است، چرا که توسط سنسور رطوبت خاک که در نزدیکی ریشه گیاه قرار دارد، دقیقا در زمانی که گیاه به آب نیاز دارد، عملیات آبیاری توسط مدار انجام میشود. همچنن میتوانید برای مواقعی که به سفر میروید از این سیستم برای نگهداری گیاهان منزل استفاده کنید. سنسور تشخیص رطوبت خاک، با استفاده از تنظیمات اولیه میزان رطوبت را از طریق اختلاف ولتاژ بین الکترودها میسنجد و به مدار آردوینو اطلاعات رطوبت خاک را ارسال میکند. سپس مدار آردوینو به شیر برقی فرمان میدهد و گیاه آبیاری میشود. این سنسور از دو بخش تشکیل شده است. برند راه انداز دارای یک مولتی ترن است که با چرخاندن مولتی ترین در جهت ساعتگرد حساسیت افزایش و در خلاف جهت حساسیت کاهش پیدا میکند. با قرار گرفتن سنسور در یک نمونه خاک، مقادیر سنسور از ۰ تا ۱۰۲۴ تغییر کرده و بر روی سریال مانیتور مقادیر خوانده شده از سنسور نمایش داده میشود. به همین ترتیب میتوانید دیتای مورد نظر را یادداشت کرده و در کد اصلی برنامه جایگزین کنید.
سنسور سطح آب Water Level
سنسور تشخیص سطح آب از جمله سنسورهای بیومتریک است که توانایی تشخیص سطح آب را دارد. ولتاژ کاری سنسور ۵ ولت DC است. جریان کاری سنسور تشخیص سطح آب کمتر از ۲۰ میلی آمپر میباشد. نوع سنسور آب آنالوگ است و با تمامی میکروکنترلها قابل راه اندازی خواهد بود. محدوده تشخیص این سنسور ۱۶mm * 44mm میباشد. دمای کاری سنسور تشخیص سطح آب ۱۰ تا ۳۰ درجه سانتی گراد و رطوبت هم بین ۱۰% تا ۹۰% میباشد. وزن سنسور در حدود ۳ گرم است. ابعاد سنسور تشخیص آب ۶۵ * ۲۰ * ۸ میلی متر میباشد. سنسور تشخیص سطح آب دارای سه پایه به ترتیب سیگنال (آنالوگ), GND, Vcc میباشد. سنسور تشخیص سطح آب، قابلیت راه اندازی آن بسیار ساده و سبک وزن است. این سنسور دارای ۱۰ خطوط موازی بر روی خود است که میزان قطرات آب قرار گرفته شده بر روی سنسور را تشخیص میدهد.
اتصالات به رزبری پای
سوال بسیاری از کاربران این است که اتصال سنسور آنالوگ با مبدل ADC و برد رزبری پای Raspberry Pi به چه صورت است؟ همانطور که در معرفی مبدل ADS1115 گفته شد، مبدل از پروتکل I2C جهت ارتباط با میکروکنترلر ها بهره میبرد. پس جهت برقراری ارتباط و ارسال دیتا از پروتکل I2C استفاده خواهیم کرد. برد رزبری پای Raspberry Pi توسط پایه های GPIO2 و GPIO3 از پروتکل I2C پشتیبانی کرده و این دو پایه در اخیتار ما قرار گرفته شده است. جهت اتصال سنسورهای آنالوگ به رزبری پای کافیست طبق مراحل زیر پیش روید.
اتصال مبدل ADS1115 به رزبری پای
- پایه V مبدل آنالوگ به دیچیتال ADS1115 را به پایه ۵ ولت رزبری پای اتصال دهید.
- پایه G مبدل آنالوگ به دیچیتال ADS1115 را به پایه GND رزبری پای اتصال دهید.
- پایه SCL مبدل آنالوگ به دیچیتال ADS1115 را به پایه GPIO3 رزبری پای اتصال دهید.
- پایه SDA مبدل آنالوگ به دیچیتال ADS1115 را به پایه GPIO2 رزبری پای اتصال دهید.
- پایه های تغذیه سنسور آنالوگ را به برد رزبری پای متصل کنید.
- سپس پایه آنالوگ سنسور را به یکی از پایه های آنالوگ مبدل ADS1115 اتصال دهید.
اتصال سنسور رطوبت خاک
- پایه آنالوگ سنسور رطوبت خاک را به پایه A0 مبدل ADS1115 اتصال دهید.
- پایه VCC سنسور رطوبت خاک را به پایه ۵ ولت GPIO رزبری پای اتصال دهید.
- پایه GND سنسور رطوبت خاک را به پایه Ground GPIO رزبری پای اتصال دهید.
اتصال سنسور سطح آب
- پایه آنالوگ سنسور سطح آب را به پایه A1 مبدل ADS1115 اتصال دهید.
- پایه VCC سنسور سطح آب را به پایه ۵ ولت GPIO رزبری پای اتصال دهید.
- پایه GND سنسور سطح آب را به پایه Ground GPIO رزبری پای اتصال دهید.
نصب کتابخانه ADS1x15
جهت ارتباط با ماژول ADS1115، به کتابخانه Adfruit ADS1X15 نیاز داریم. آموزش نصب کتابخانه ADS1115 قبلا در آموزش جداگانه توضیح داده شده است. مراحل نصب به صورت زیر است.
sudo apt-get update sudo apt-get install build-essential python-dev python-smbus git cd ~ git clone https://github.com/adafruit/Adafruit_Python_ADS1x15.git cd Adafruit_Python_ADS1x15 sudo python setup.py install
در صورت نصب از طریق پکیج پایتون از کامندهای زیر استفاده کنید.
sudo apt-get update sudo apt-get install build-essential python-dev python-smbus python-pip sudo pip3 install adafruit-ads1x15
در مرحله بعد پس از نصب پکیج، کامند اجرای برنامه Example را وارد کنید.
cd ~/Adafruit_Python_ADS1x15/examples
در ادامه خط آبی رنگ، دستور زیر را وارد نمایید.
nano simpletest.py
با وارد کردن دستور simpletest در ترمینال Termianl پنجره زیر باز میشود.
در این تصویر، در صورتیکه از تراشه ADS1115 استفاده میکنید، خط adc = Adafruit_ADS1X15.ADS1115 فاقد کامنت است. در صورتیکه از تراشه ADS1015 استفاده میکنید، خط adc = Adafruit_ADS1X15.ADS1015 را از کامنت خارج کرده و برنامه را ادامه دهید. جهت ذخیره تنظیمات ابتد ctrl+o و سپس Enter و در نهایت ctrl+x را تایپ کنید. در مرحله بعد دستور زیر را وارد نمایید تا مقادیر آنالوگ هر کانال نمایش داده شود. تا این مرحله کتابخانه ها و پکیج های پایتون نصب شده است.
دریافت دیتا از سنسورها
هر دو سنسور رطوبت خاک و سنسور سطح آب دارای رابط آنالوگ هستند و به همین دلیل بدون مبدل ADS1115 قابلیت اتصال به برد رزبری پای Raspberry Pi را ندارند. مبدل ADS1115 دارای ۴ پایه انالوگ است که به این معنی است که قابلیت دریافت همزمان ۴ دیتا از سنسورهای آنالوگ را دارد. در این آموزش هر دو سنسور را به پایه های آنالوگ مبدل ADS1115 وصل کرده و سپس در نهایت دستور اجرای برنامه را صادر میکنیم 🙂 مرحله آخر وارد کردن دستور پایتون با اسم دلخواه برای برنامه است که در اینجا از simpletest استفاده شده است. دستور زیر را در ادامه کامند sudo simpletest.py اجرا کنید.
python3 simpletest.py
همانطور که مشاهده میکنید، مقادیر Values مبدل ADS1X15 در حال دریافت و نمایش است. به ترتیب ۴ داده به صورت ستونی نمایش داده شده است.
- شماره ۰ پایه A0 مبدل ADS1115 است.
- شماره ۱ پایه A1 مبدل ADS1115 است.
- شماره ۲ پایه A2 مبدل ADS1115 است.
- شماره ۳ پایه A3 مبدل ADS1115 است.
به همین ترتیب با اتصال هر سنسور به پایه مبدل ADS1115 میتوانید دیتای دریافتی از سنسور را در ستون مخصوص به آن رصد کنید.
مبدل ADS1115، از عدد -۳۲۷۶۸ تا ۳۲۷۶۷ با توجه به ۱۶ بیتی بودن تراشه مقادیر را دریافت و در این بازه تغییر میکند. این عدد برای تراشه ADS1015 بین -۲۰۴۸ تا ۲۰۴۷ میباشد. مقدار ۰ نمایشگر رسیدن سیگنال به سطح GND و یا همان صفر است و عدد ۳۲۷۶۷ و یا عدد ۲۰۴۷ برای ADS1015 نمایانگر بالاترین مقادیر ولتاژ در سطح جریان گین میباشد. اعداد منفی در این بازه به معنی خارج شدن از بازه ولتاژ مرجع است. توسط گین Gain میتوانید سیگنال های مختلف ADC را خوانده و حتی ضعیف ترین سیگنال ها را به کمک گین بخوانید. همچنین توسط گین مقادیر دامنه ولتاژی را که از تراشه خوانده میشود،کنترل کنید.
- در گین ۱ ولتاژ برابر با ۴٫۰۹۶ ولت است. این عدد به آن معنا است که تراشه میتواند مقادیر را در بازه -۴٫۰۹۶ تا +۴٫۰۹۶ بخواند.
در این صورت میتوانید گین بالاتری جهت خواندن دقیق فرکانس های ضعیف انتخاب نمایید. انتخاب عدد گین بسیار مهم است و بر اساس ولتاژ مورد نیاز بایستی انتخاب شود.
دریافت دیتا از سنسور رطوبت خاک
برای دریافت دیتا از سنسورهای رطوبت خاک پایه آنالوگ سنسور را به پایه A0 مبدل آنالوگ به دیجیتال ADS1115 متصل میکنیم. سپس با وارد کردن کامند زیر در ترمینال دیتای دریافتی در ستون A0 را میخوانیم. با توجه به اینکه مبدل ۱۶ بیتی است عدد دریافتی بین بازه – ۳۲۷۶۸ تا + ۳۲۷۶۸ تغییر میکند و ولتاژ ورودی که بر روی پایه ADC قرار دارد عدد ۴٫۰۹۶ است. با قرار دادن سنسور در محیط مرطوب این عدد تغیییر خواهد کرد.
دریافت دیتا از سنسور سطح آب
مثل مرحله قبل جهت دریافت دیتا از سنسور سطح آب Water level پایه آنالوگ سنسور را به پایه A1 مبدل آنالوگ به دیجیتال ADS1115 متصل میکنیم. سپس با وارد کردن کامند زیر در ترمینال دیتای دریافتی در ستون A1 را میخوانیم. با توجه به اینکه مبدل ۱۶ بیتی است عدد دریافتی بین بازه – ۳۲۷۶۸ تا + ۳۲۷۶۸ تغییر میکند و ولتاژ ورودی که بر روی پایه ADC قرار دارد عدد ۴٫۰۹۶ است. با قرار دادن سنسور در محیط مرطوب این عدد تغیییر خواهد کرد.
وسایل مورد نیاز
ماژول مبدل آنالوگ به دیجیتال با تراشه ADS1115 سرعت ۱۶ بیت ۴ کانال
چنانچه در مراحل راه اندازی و انجام این پروژه با مشکل مواجه شدید، بدون هیچ نگرانی در انتهای همین پست، به صورت ثبت نظر سوالتان را مطرح کنید. من در سریعترین زمان ممکن پاسخ رفع مشکل شما را خواهم داد. همچنین اگر ایرادی در کدها و یا مراحل اجرایی وجود دارند میتوانید از همین طریق اطلاع رسانی کنید.
سلام و وقت بخیر
آیا با برد آردوینو یونو نیز میتوان سنسور رطوبت خاک را راه اندازی کرد.
با تشکر
با سلام
بله در این خصوص از آموزش زیر استفاده کنید.
رطوبت خاک با آردوینو
همزمان رزبری پای چند سنسور انالوگ را پشتیبانی میکند؟؟؟؟؟
سلام
همانطور که اعلام شده است، برد رزبری پای به صورت مستقیم از وردی و خروجی آنالوگ پشتیبانی نمیکند و بایستی از مبدل های چند کاناله استفاده کنید.
سلام. خسته نباشید
برای اجرای پروژه کنترل وسایل برقی نیاز به یک مینی کامپیوتر دارم
میخواستم بدون شما کدوم مدل از رزبری پای یا اورنج پای رو پیشنهاد میدین هم از نظر کارایی هم قیمت.
حداقل ۱۵ تا ۲۰ پین رو برای لامپ ها و یک پین رو برای کنترل دماو رطوبت استفاده میکنم
با سلام
در این خصوص میتوانید از بردهای آردوینو استفاده کنید و سپس توسط تراشه وای فای برای ارتباط از طریق وای فای ارتقا دهید. به عنوان مثال برد آردوینو mega2560 در دو مدل ساده و وایفای در فروشگاه موجود است که در ادامه لینک آن ضمیمه شده است. در خصوص رزبری پای تعداد پایه های gpio کمتری قابل استفاده است.
برد آردوینو mega2560 wifi
برد آردوینو mega2560
سلام
توی سایت رزبری نوشته از هر gpio میتوان تا ۱۶ میلی آمپر جریان کشید و برای کل آنها ۵۰ میلی آمپر.
اگر من تغذیه ی سنسور ها را از جای دیگری تامین کنم این محدودیت برطرف میشود؟
با سلام
خیر ولتاژ پایه ها دقیقا مشابه دیتاشیت است و نمیتوانید ولتاژ بیشتری اعمال کنید.
سلام و وقت بخیر
من تمام مراحل رو مشابه آموزش پیش میرم ولی در نهایت به جای دیتا خطاهای زیر رو دریافت میکنم
Traceback (most recent call last):
File “/home/pi/Adafruit_Python_ADS1x15/examples/simpletest.py”, line 12, in
adc = Adafruit_ADS1x15.ADS1115()
File “/usr/local/lib/python3.9/dist-packages/Adafruit_ADS1x15-1.0.2-py3.9.egg/Adafruit_ADS1x15/ADS1x15.py”, line 319, in __init__
File “/usr/local/lib/python3.9/dist-packages/Adafruit_ADS1x15-1.0.2-py3.9.egg/Adafruit_ADS1x15/ADS1x15.py”, line 82, in __init__
File “/usr/local/lib/python3.9/dist-packages/Adafruit_GPIO-1.0.4-py3.9.egg/Adafruit_GPIO/I2C.py”, line 66, in get_i2c_device
File “/usr/local/lib/python3.9/dist-packages/Adafruit_GPIO-1.0.4-py3.9.egg/Adafruit_GPIO/I2C.py”, line 99, in __init__
File “/usr/local/lib/python3.9/dist-packages/Adafruit_PureIO-1.1.9-py3.9.egg/Adafruit_PureIO/smbus.py”, line 125, in __init__
File “/usr/local/lib/python3.9/dist-packages/Adafruit_PureIO-1.1.9-py3.9.egg/Adafruit_PureIO/smbus.py”, line 151, in open
FileNotFoundError: [Errno 2] No such file or directory: ‘/dev/i2c-1’
با سلام
تا زمانیکه پکیج ها نصب نشود، با این ارور رو به رو هستید. از برقراری ارتباط اینترنت مطمئن شوید.