پروژه الکترونیکپروژه های پایتونپروژه های رزبری پای

آموزش طراحی اسیلوسکوپ با رزبری پای و پایتون

سلام. آموزش طراحی اسیلوسکوپ با رزبری پای و پایتون را آماده کردیم.

راه اندازی oscilloscope با Raspberry pi

در این پروژه رزبری پای میخواهیم نحوه ساخت یک اسیلوسکوپ مبتنی بر Raspberry pi را آموزش دهیم. اسیلوسکوپ یکی از مهمترین ابزار های مهندسی برق و الکترونیک است. اسیلوسکوپ یک ابزار تست الکترونیکی است که امکان نموداری کردن و مشاهده ولتاژهای مختلف سیگنال را می دهد ، معمولاً ولتاژ را به صورت یک طرح دو بعدی با یک یا چند سیگنال که در برابر زمان ترسیم شده اند نمایش میدهد. در این پروژه Raspberry pi باز هم مباحث آنالوگ به دیجیتال را مورد استفاده قرار میدهیم.

آموزش طراحی اسیلوسکوپ با رزبری پای و پایتون

در اینجا ما به صورت لحظه ای سیگنال ورودی را از دیجیتال به آنالوگ تبدیل کرده و آن ها را روی نمودار نمایش میدهیم. این پروژه از ماژول های پایتون (matplotlib و drawnow) برای تجسم داده ها استفاده میکند و ماژول Adafruit برای ارتباط با تراشه ADS1115 ADC مورد استفاده قرار می گیرد. نحوه نصب این ماژول ها به طور کامل آموزش داده شده است. من از سیستم عامل Raspberry Pi stretch استفاده می کنم.

توضیحات مدار پروژه اسیلوسکوپ

برای تبدیل سیگنال های ورودی آنالوگ به سیگنال های دیجیتالی که توسط رزبری پای قابل خواندن باشد، ما از تراشه ADS1115 استفاده میکنیم. استفاده از این تراشه اهمیت بسیاری دارد زیرا متاسفانه Raspberry pi برخلاف آردینو و اکثر میروکنترلر ها فاقد مبدل ADC داخلی است. میتوانیم از هر تراشه ADC برای این پروژه استفاده کنیم. با توجه به دقت بالای قطعه ADS1115 که 16 بیت است ما از این قطعه استفاده میکنیم. برای کسب اطلاعات بیشتر در مورد ADC در رزبری پای : آموزش جامع آنالوگ به دیجیتال در رزبری پای با پایتون

تصویر زیر شماتیک مدار این پروژه را نشان میدهد. ADC وسیله ای مبتنی بر I2C است که مانند تصویر زیر باید به Raspberry pi متصل شود.

راه اندازی oscilloscope با Raspberry pi

اتصالات ADS1115 و Raspberry Pi:

VDD – 3.3v

GND – GND

SDA – SDA

SCL – SCL

قطعات مورد نیاز پروژه

  1. رزبری پای 2 یا هر مدل دیگری
  2. IC آنالوگ به دیجیتال ADC1115
  3. سیم های جامپر

نصب بسته های مورد نیاز اسیلوسکوپ روی رزبری پای

قبل از شروع نوشتن اسکریپت پایتون برای بیرون کشیدن داده ها از ADC و ترسیم آن بر روی نمودار مستقیم ، باید ارتباط I2C از raspberry pi را فعال کرده و ملزومات نرم افزاری را که قبلاً ذکر شد نصب کنیم. این کار در مراحل زیر انجام میشود.

مرحله 1: فعال سازی Raspberry Pi I2C

sudo raspi-config

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

حتما ببینید :  هوشمند سازی خانه با پلفترم Particle و رزبری پای

مرحله 2: بروزرسانی رزبری پای

اولین کار قبل از هر پروژه = بروزرسانی سیستم عامل رزبری پای

اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید.
sudo apt-get update
sudo apt-get upgrade

مرحله 3: نصب کتابخانه Adafruit ADS1115

پس از بروزرسانی، ما حالا آماده هستیم کتابخانه Adafruit ADS1115 را نصب کنیم. اطمینان حال کنید که در Home Directory قرار دارید.

cd ~

سپس موارد ضروری را با اجرای دستور زیر نصب کنید؛

sudo apt-get install build-essential python-dev python-smbus git

سپس ، پوشه Adafruit git را برای کتابخانه با اجرای برنامه کلون کنید.

git clone https://github.com/adafruit/Adafruit_Python_ADS1x15.git

به فهرست فهرست فایل کلون شده بروید و پرونده تنظیم را اجرا کنید؛

cd Adafruit_Python_ADS1x1z 
sudo python setup.py install

پس از نصب ، صفحه نمایش شما باید مانند تصویر زیر باشد.

نصب بسته های مورد نیاز اسیلوسکوپ روی رزبری پای

مرحله 4 : کتابخانه و ارتباطات 12C را آزمایش کنید.

قبل از شروع بقیه پروژه ، مهم است كه كتابخانه را آزمایش كنید و اطمینان حاصل كنید كه ADC می تواند با رزبری پای از طریق I2C ارتباط برقرار كند. برای این کار از یک اسکریپت مثال استفاده می کنیم که همراه با کتابخانه است.

در حالی که هنوز در پوشه Adafruit_Python_ADS1x15 هستید ، به مکان Examples بروید.

cd examples

در مرحله بعد ، نمونه sampletest.py را اجرا کنید که مقدار چهار کانال را بر روی ADC به صورت جدولی نشان می دهد.

مثال را با استفاده از دستور زیر اجرا کنید :

python simpletest.py

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

کتابخانه و ارتباطات 12C

اگر خطایی رخ داد ، بررسی کنید که ADC به خوبی به PI وصل شده است و ارتباط I2C در Pi فعال شده است.

مرحله 5: Matplotlib را نصب کنید

برای تجسم داده ها ما نیاز به نصب ماژول matplotlib داریم که برای ترسیم انواع نمودارها در پایتون استفاده می شود. این کار را می توان با دستور زیر انجام داد.

sudo apt-get install python-matplotlib

شما باید نتیجه ای مانند تصویر زیر ببینید.

Matplotlib

مرحله 6 : ماژول Drawnow python را نصب کنید

در آخر ، ما باید ماژول پایتون Drawnow را نصب کنیم. این ماژول به ما کمک می کند تا به روزرسانی های مستقیم در طرح داده ارائه کنیم.

sudo apt-get install python-pip

سپس می توانیم پیپ را برای نصب پکیج Drawover با اجرای برنامه استفاده کنیم :

sudo pip install drawnow

بعد از اجرای آن باید نتیجه ای مانند تصویر زیر بدست آورید.

کد پایتون برای اسیلوسکوپ Raspberry Pi

کد پایتون برای این اسیلوسکوپ کاملاً ساده است به خصوص اگر با ماژول python matplotlib آشنا باشید. کد کامل در انتهای صفحه در فایل دانلودی قرار داده شده است. در اینجا بعضی از قسمت های کد را بررسی میکنیم.

در این مرحله مهم است که از مانیتور استفاده کنید یا  هر چیزی که از طریق آن می توانید دسک تاپ Raspberry Pi خود را مشاهده کنید.

یک فایل پایتون جدید را باز کنید. شما می توانید هر اسمی را که می خواهید بنامید ، اما من آنرا domain.py می نامم.

sudo nano scope.py

با ایجاد پرونده ، اولین کاری که انجام می دهیم وارد کردن ماژول هایی است که ما از آنها استفاده خواهیم کرد.

import time
import matplotlib.pyplot as plt
from drawnow import *
import Adafruit_ADS1x15

در مرحله بعد ، نمونه ای از کتابخانه ADS1x15 را ایجاد می کنیم که ADS1115 ADC را مشخص می کند.

adc = Adafruit_ADS1x15.ADS1115()

بعد ، ما بهره ADC را تعیین می کنیم. دامنه های مختلفی از بهره وجود دارد و باید بر اساس ولتاژ مورد نظر در ورودی ADC انتخاب شود. برای این آموزش ، ما 0 – 4.09v را تخمین می زنیم ، بنابراین از سود 1. استفاده خواهیم کرد.

GAIN = 1

در مرحله بعد ، ما باید متغیرهای آرایه ای را ایجاد کنیم که برای ذخیره سازی داده ها برای ترسیم استفاده می شود .

Val = [ ]
cnt = 0

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

plt.ion()

بعد ، تبدیل آنالوگ به دیجیتال مداوم را با مشخص کردن کانال ADC ، کانال 0 شروع می کنیم و بهره را نیز مشخص می کنیم. لازم به ذکر است که هر چهار کانال ADC موجود در ADS1115 را می توانید همزمان بخوانید ، اما 1 کانال برای این پروژه اسیلوسکوپ کافی است.

adc.start_adc(0, gain=GAIN)

در مرحله بعدی ما یک تابع def makeFig ایجاد می کنیم.

 plt.ylim(-5000,5000)
 plt.title('Osciloscope')
 plt.grid(True)
 plt.ylabel('ADC outputs')
 plt.plot(val, 'ro-', label='lux')
 plt.legend(loc='lower right')

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

value = adc.get_last_result()

بعد ، ما فقط مقدار را در ترمینال چاپ می کنیم. ما چند ثانیه پس از چاپ صبر می کنیم و سپس داده ها را به لیست (val) ایجاد شده برای ذخیره داده های آن کانال اضافه می کنیم.

print('Channel 0: {0}'.format(value))
time.sleep(0.5)
val.append(int(value))

سپس برای به روزرسانی طرح ، با از draw کمک میگیریم.

drawnow(makeFig)

سپس برنامه را طوری تنظیم میکنیم که پس از 50 شمارش داده های قدیمی حذف شوند.

cnt = cnt+1
if(cnt>50):
val.pop(0)

نحوه استفاده از اسیلوسکوپ رزبری پای

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

حتما ببینید :  تشخیص پلاک خودرو با رزبری پای و پردازش تصویر OpenCV

ذخیره کد و اجرا با استفاده از :

sudo python scope.py

اگر از نام دیگری به غیر از  scope.py استفاده کردید کد بالا را متناسب با آن تغییر دهید.

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

نحوه استفاده از اسیلوسکوپ رزبری پای

Import warnings
import matplotlib.cbook
warnings.filterwarnings(“ignore”, category=matplotlib.cbook.mplDeprecation)
موارد موجود در فایل : شماتیک مدار ، کد کامل پایتون
برای دانلود فایل های پروژه ثبت نام کنید، تنها چند ثانیه زمان لازم است. از طریق فرم زیر اقدام کنید.

ایمیل خود را وارد کنید

نظرتان را در مورد این مطلب با ستاره دادن اعلام کنید امیدوارم این مطلب برای شما مفید بوده باشد. نظرات ، مشکلات و پیشنهادات خود را در پایین صفحه اعلام کنید
برچسب ها

محمد رحیمی

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

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

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

دکمه بازگشت به بالا
بستن
بستن