آموزش آردوینوپروژه های آردوینو

آموزش ساخت اسیلوسکوپ با آردوینو و پایتون

سلام. ساخت اسیلوسکوپ با آردوینو و پایتون (آموزش کامل پروژه راه اندازی Oscilloscope با Arduino) را آماده کردیم.

ساخت اسیلوسکوپ با Arduino و Python

آموزش ساخت اسیلوسکوپ با آردوینو و پایتون

اسیلوسکوپ یکی از مهمترین ابزار هایی است که شما روی میز کار هر مهندس الکترونیک یا … پیدا خواهید کرد. این وسیله در درجه اول برای مشاهده شکل موج و تعیین سطح ولتاژ ، فرکانس ، نویز و … استفاده میشود. همچنین توسط توسعه دهندگان نرم افزار برای رفع اشکال کد و تکنسین ها از آن برای عیب یابی دستگاه های الکترونیکی هنگام تعمیر استفاده می کنند. اسیلوسکوپ ها می توانند بسیار گران قیمت باشند ، اسیلوسکوپ هایی که اساسی ترین عملکردها را با کمترین دقت انجام می دهند می توانند به عنوان 45 تا 100 دلار قیمت داشته باشند و انواع پیشرفته تر آن بیش از 150 دلار قیمت دارند.

پیشنهاد میکنم مقاله اسیلوسکوپ چیست را مشاهده کنید.

برای یادگیری آردوینو (برنامه نویسی، ساخت ربات، ارتباط با اندروید) روی دوره آموزش آردوینو کلیک کنید.
برای یادگیری کامل الکترونیک روی دوره آموزش الکترونیک کلیک کنید.

در این پروژه آردوینو با استفاده از برد Arduino Uno (یا هر برد آردوینوی دیگری) و نرم افزاری که با زبان برنامه نویسی پایتون ساخته میشود ما یک اسیلوسکوپ 4 کاناله میسازیم که دارای قابلیت نمایش شکل موج ها ، سطح ولتاژ سیگنال ها است.

نحوه کار پروژه اسیلوسکوپ با آردوینو

ابتدا باید سیگنال را از آنالوگ به دیجیتال تبدیل کرده و سپس داده ها را ترسیم کنیم. برای تبدیل ، ما بر روی ADC (مبدل آنالوگ به دیجیتال) داده ها را اعمال می کنیم. پس از تبدیل ، مقدار ها از طریق UART از Arduino به کامپیوتر ارسال می شود که در آن نرم افزار پلاتر (که توسط پایتون آن را میسازیم)، با ترسیم داده ها در برابر زمان ، جریان ورودی را به شکل موج تبدیل می کند.

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

  1. برد آردوینو Uno (یا هر برد دیگری)
  2. مقاومت 1 کیلو اهم
  3. سنسور LDR

نرم افزار های مورد نیاز

  1. نرم افزار آردوینو (دانلود آردوینو)
  2. نرم افزار پایتون
  3. کتابخانه های پایتون: Pyserial ، Matplotlib ، Drawnow

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

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

توضیحات کد پروژه Oscilloscope

تصویر اسیلوسکوپ ساخته شده با آردوینو و پایتون

این پروژه به دو بخش تقسیم میشود. یک بخش ساخت نرم افزار با پایتون و یک بخش نوشتن کد آردوینو.

توضیحات کد پایتون پروژه

کد کامل پایتون در فایل دانلودی قرار داده شده است. ما از سه کتابخانه Drawnow ، Matplotlib و Pyserial استفاده خواهیم کر. Pyserial به ما امکان ایجاد اسکریپت پایتون را می دهد که بتواند از طریق پورت سریال ارتباط برقرار کند ، Matplotlib به ما امکان تولید پلات ها از داده های دریافت شده از طریق پورت سریال را می دهد و Drawnow ابزاری را برای ما فراهم می کند تا بتوانیم طرح را در زمان واقعی به روز کنیم.

روش های مختلفی برای نصب این کتابخانه ها بر روی رایانه شخصی شما وجود دارد که ساده ترین آنها از طریق پیپ است. پیپ را می توان از طریق CMD بر روی ویندوز یا دستگاه لینوکس نصب کرد. PIP با python3 بسته بندی شده است بنابراین به شما توصیه می کنم python3 را نصب کنید. با نصب پیپ ، اکنون می توان کتابخانه های دیگر مورد نیاز خود را نصب ;kdn.

در منوی استارت CMD را سرچ کنید و عبارات زیر را تایپ کنید.

pip install pyserial
pip install matplotlib
pip install drawnow

پس از وارد کردن کتابخانه های مورد نیاز نوشتن کد را شروع می کنیم.

در ابتدا کتابخانه های مورد نیاز را فراخوانی میکنیم :

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

import pyserial

در مرحله بعد متغیرهایی را که در طول کد استفاده می شود را ایجاد می کنیم. از آرایه val برای ذخیره داده های دریافت شده از درگاه سریال استفاده می شود و برای شمارش از cnt استفاده می شود. داده ها بعد از هر 50 شمارش حذف می شوند. این کار برای نگه داشتن اطلاعات در اسیلوسکوپ انجام می شود.

همچنین اگر در مورد این مطلب سوالی داشتید در انتهای صفحه در قسمت نظرات بپرسید
val = [ ]
cnt = 0

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

port = serial.Serial('COM4', 115200, timeout=0.5)

سپس ما نقشه را میسازیم :

plt.ion() 

ما برای ایجاد طرح از داده های دریافت شده ، باید یک تابع ایجاد کنیم و حد و مرز حداکثر و حداقل را ایجاد کنیم ، که در این حالت 1023 بر اساس رزولوشن ADC Arduino است.

def makeFig():
    plt.ylim(-1023,1023)
    plt.title('Osciloscope')
    plt.grid(True)
    plt.ylabel('ADC outputs')
    plt.plot(val, 'ro-', label='Channel 0')
    plt.legend(loc='lower right')

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

while (True):
    port.write(b's')
    if (port.inWaiting()):# اگر آردوینو جواب داد
        value = port.readline()
        print(value)#print so we can monitor it
        number = int(value) 
        print('Channel 0: {0}'.format(number))
        time.sleep(0.01)
        val.append(int(number))
        drawnow(makeFig)#آپدیت پلات
        plt.pause(.000001)
        cnt = cnt+1
    if(cnt>50):
        val.pop(0)#تازه نگه داشتن نمودار و آپدیت

توضیحات کد آردوینو پروژه

کد کامل آردوینو در فایل دانلودی قرار داده شده است. شروع می کنیم با اعلام پین آنالوگ پین آردوینو که سیگنال در آن اعمال می شود. در ابتدا پین آنالوگ برای دریافت جریان را معرفی می کنیم.

int sensorpin = A0;

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

void setup() {
  Serial.begin(115200);
}

سرانجام، کد تابع voidloop () که خواندن داده ها را بر عهده دارد و داده ها را به صورت سریال به پلاتر ارسال می کند را مینویسیم.

void loop() {
  float sensorValue = analogRead(sensorpin);
  byte data = Serial.read();
  if (data == 's')
  {
    Serial.println(sensorValue);
    delay(10);      
  }
} 
موارد موجود در فایل : شماتیک مدار ، کد کامل پایتون ، فایل Hex ، فایل آردوینو و …

دانلود فایل های پروژه

میخواهید برنامه نویسی STM32 را یاد بگیرید؟

دوره آموزش STM32

میخواهید الکترونیک را یاد بگیرید؟

دوره آموزش الکترونیک
دوره آموزش آردوینو

میخواهید آردوینو را به صورت پروژه محور یاد بگیرید؟ برای مشاهده توضیحات روی دوره مورد نظر کلیک کنید

برای دریافت مطالب جدید در کانال تلگرام یا پیج اینستاگرام آیرنکس عضو شوید.

محمد رحیمی

محمد رحیمی

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

4 نظر

  1. سلام جناب مهندس رحیمی
    ممنون بابت آموزشای خوبتون
    مهندس رحیمی ببخشید با این اسیلوسکوپ میتونیم شکل های دیگه موج هارو ببینیم؟؟؟

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

  2. آموزش بسیار خوبی بود . ممنون از این که علمتون را در اختیار بقیه می گذارید . ان شاءالله همیشه سلامت شاد و موفق باشید.

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

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