آموزش Espآموزش ESP32آموزش اینترنت اشیاپروژه های Esp

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

اسیلسکوپ یک ابزار تست بسیار ضروری برای هر مهندس الکترونیکی به شمار می آید. از اسیلوسکوپ برای نمایش دوبعدی سیگنال های متغیر با زمان استفاده میکنیم. نمودارهای ما بر حسب زمان رسم شده اند و میتوانیم یک یا دو سیگنال را در یک نمودار نشان داده و آن ها را با هم مقایسه کنیم. این دستگاه در طراحی و اشکال یابی دستگاه های الکترونیکی که در مشاهده و مقایسه شکل موج ها کاربرد دارند، استفاده میشود. همچنین از این دستگاه برای تعیین ولتاژ، فرکانس، نویز و پارامترهای دیگر سیگنال ورودی که با گذشت زمان تغییر میکنند، استفاده میشود. تمام این امکانات، اسیلسکوپ را به یک ابزار بسیار مهم بر میز هر سازنده یا مهندس الکترونیکی تبدیل میکنند. اما در نظر داشته باشید که این دستگاه گران است. قیمت مدل های ارزان تر این دستگاه که مناسب استفاده تازه کاران است، بین 500 تا 2000 دلار بوده و اسیلسکوپ های پیشرفته هم چندهزار دلار قیمت دارند. درنتیجه ممکن است کاربران عادی قادر به تهیه آن نباشند. اما چه میشود اگر بتوانیم با یک روش آسان اسیلسکوپی بسازیم که ارزان تر و فشرده باشد؟ این سوال ما را به آموزش امروز رساند.

امکانات اسیلسکوپ ساخته شده با ESP32

  • تک کاناله بودن
  • Msps 1 (با نرخ نمونه برداری 1 میلیون نمونه در هر ثانیه)
  • 50000 نمونه در بافر 16 بیتی- به مدت 50 میلی ثانیه با نرخ نمونه برداری 1 Msps داده را نمونه برداری میکند.
  • قدرت مقیاس بندی از 10us/DIV تا  5ms/DIV   با نرخ نمونه برداری 1Msps
  • نمایش ولتاژ ماکزیمم پیک تا پیک (VPP) 3.3 ولت در 1X و 33 ولت در 10X
  • کنترل واکنشگرا و سریع با استفاده از کلیدهای لمسی
  • محاسبه فرکانس ( باتوجه به سایز پافر، تا 20hz min)
  • فیلتر میانگین گیر ON/OFF ساده
  • نمایش ولتاژ ماکزیمم، مینیمم، متوسط و پیک تا پیک ( فاصله دو قله یا دو قعر متوالی)
  • تنظیم آفست زمان و ولتاژ
  • مد آنالوگ،دیجیتال/داده
  • مد single trigger یا تریگر تکی
  • Autoscale  یا مقیاس بندی خودکار

مدار اتصال اسیلوسکوپ با ESP32

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

مدار اتصال اسیلوسکوپ با ESP32

قطعات لازم برای ساخت اسیلوسکوپ با ESP32

  1. برد ESP32 Dev
  2. نمایشگر TFT لبه گرد 1.69 اینچی با رزولوشن 280*240  و راه انداز ST7789S
  3. سوئیچ های لمسی
  4. سوئیچ SPDT
  5. مقاومت 100 کیلویی
  6. مقاومت 10 کیلویی
  7. خازن 100 نانو فارادی
  8. پرف بورد یا روکش مسی
  9. ابزار لحیم کاری

ESP32 به عنوان کنترل کننده داده های دریافتی استفاده میشود. ما بافر داخلی I2S را برای ذخیره و دستکاری سیگنال ها راه اندازی میکنیم. در این پروژه از میکروکنترلر 38 پایه ای استفاده شده اما شما میتوانید از ماژول های توسعه دیگر نیز استفاده کنید.

مدار اتصال اسیلوسکوپ با ESP32

برای نمایش سیگنال ها، از یک ماژول نمایشگر TFT 1.69 اینچی استفاده میکنیم. این نمایشگر دارای رزولوشن 280*240  است. کنترل کننده نمایشگر، ماژول ST7789S بوده و به کمک ارتباط SPI آن را درایو میکنیم.

مدار اتصال اسیلوسکوپ با ESP32

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

مدار اتصال اسیلوسکوپ با ESP32

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

در مطالب گذشته، درباره وقفه های ESP32 توضیح داده ایم که برای مطالعه بیشتر میتوانید به آن ها مراجعه کنید.

مدار اتصال اسیلوسکوپ با ESP32

قسمت ورودی آنالوگ نسبتا ساده است. این بخش شامل دو سوئیچ SPDT برای انتخاب محدوده و همچنین یکی از مدهای کاری AC/DC coupling است. ( AC coupling قسمت DC سیگنال را حذف کرده و تنها قسمت ac آن را نشان میدهد و DC coupling سیگنال DC و ac را باهم نشان میدهد. در این حالت میتوان آفست DC را هم دید.)

در قسمت انتخاب محدوده از یک تقسیم کننده ولتاژ استفاده کردیم که وظیفه آن تغذیه ولتاژ هایی است که پیک آن ها بیشتر از 3.3 ولت است.

تقسیم کننده ولتاژ، سیگنال را با نسبت 10:1 تقسیم میکند.

اگر در مورد این مطلب سوالی دارید در قسمت نظرات بپرسید

مدار اتصال اسیلوسکوپ با ESP32

ساخت و تست مدار

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

ساخت و تست مدار

در تصویر زیر هم نمای PCB پروژه را مشاهده میکنید.

ساخت و تست مدار

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

ساخت و تست مدار

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

کد کامل این پروژه را از لینکی که در انتهای این مطلب قرار داده شده دانلود کنید. میتوانید در همین سایت یک فایل آرشیوی به نام TFT_eSPI بیابید. استفاده از این کتابخانه تغییر یافته برای راه اندازی و درایو کردن نمایشگر ضروری است. آن را در پوشه Arduino library اکسترکت کرده و از حالت فشرده خارج کنید. اگر قبلا کتابخانه TFT_eSPI را نصب کرده اید، حتما قبل از اکسترکت کردن نسخه تغییر یافته، آن را حذف کنید.

بعد از انجام این کار در قسمت board manager میکروکنترلر esp32 را انتخاب کنید. سپس کد را کامپایل کرده و روی میکروکنترلر آپلود کنید. کار ما تمام شد. اسیلوسکوپ ما آماده کار است.

میتوانید اسیلوسکوپ را با استفاده از پورت Micro USB در قسمت پایینی، روشن کنید. این پورت تنها برای تغذیه استفاده میشود.

موارد موجود در فایل : سورس کامل

4 (4 نفر)

برای دریافت مطالب جدید کانال تلگرام یا پیج اینستاگرام ما را دنبال کنید.

محمد رحیمی

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

2 نظر

  1. سلام
    موقع کامپایل کردن این ارور را میده:
    C:\Users\Denaj\Desktop\ESP32-Oscilloscope-main\ESP32_Oscilloscope\i2s.ino: In function ‘void ADC_Sampling(uint16_t*)’:
    C:\Users\Denaj\Desktop\ESP32-Oscilloscope-main\ESP32_Oscilloscope\i2s.ino:29:5: error: ‘i2s_read_bytes’ was not declared in this scope
    i2s_read_bytes(I2S_NUM_0, (char*)&i2s_buff[i * NUM_SAMPLES], NUM_SAMPLES * sizeof(uint16_t), portMAX_DELAY);
    ^~~~~~~~~~~~~~
    C:\Users\Denaj\Desktop\ESP32-Oscilloscope-main\ESP32_Oscilloscope\i2s.ino:29:5: note: suggested alternative: ‘pgm_read_byte’
    i2s_read_bytes(I2S_NUM_0, (char*)&i2s_buff[i * NUM_SAMPLES], NUM_SAMPLES * sizeof(uint16_t), portMAX_DELAY);
    ^~~~~~~~~~~~~~
    pgm_read_byte

    exit status 1

    Compilation error: ‘i2s_read_bytes’ was not declared in this scope
    مشکل در بخش i2s.ino هست.

    1. با سلام و خسته نباشید نمایشگر با درایور st7789s پیدا نکردم بلکه با درایور st7789v پیدا کردم چه تفاوتی بین این دو درایور وجود دارد و آیا میتوانم در این پروژه از st7789v استفاده کنم

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

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