ساخت اسیلوسکوپ با برد 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 Dev
- نمایشگر TFT لبه گرد 1.69 اینچی با رزولوشن 280*240 و راه انداز ST7789S
- سوئیچ های لمسی
- سوئیچ SPDT
- مقاومت 100 کیلویی
- مقاومت 10 کیلویی
- خازن 100 نانو فارادی
- پرف بورد یا روکش مسی
- ابزار لحیم کاری
ESP32 به عنوان کنترل کننده داده های دریافتی استفاده میشود. ما بافر داخلی I2S را برای ذخیره و دستکاری سیگنال ها راه اندازی میکنیم. در این پروژه از میکروکنترلر 38 پایه ای استفاده شده اما شما میتوانید از ماژول های توسعه دیگر نیز استفاده کنید.
برای نمایش سیگنال ها، از یک ماژول نمایشگر TFT 1.69 اینچی استفاده میکنیم. این نمایشگر دارای رزولوشن 280*240 است. کنترل کننده نمایشگر، ماژول ST7789S بوده و به کمک ارتباط SPI آن را درایو میکنیم.
این ماژول یک اسلات کارت حافظه هم دارد که ما در این پروژه از آن استفاده نمیکنیم. اما میتوانیم در آپدیت های آینده از حافظه برای ذخیره شکل موج یا کاربردهای مشابه استفاده کرد.
کیبورد یا صفحه کلید را به آسانی و با استفاده از سوئیچ های لمسی به همراه مقاومت های پول آپ میسازیم. برای تشخیص فشرده شدن کلیدها هم از وقفه سخت افزاری استفاده میکنیم که با اینکار به یک کیبورد واکنشگرا میرسیم.
در مطالب گذشته، درباره وقفه های ESP32 توضیح داده ایم که برای مطالعه بیشتر میتوانید به آن ها مراجعه کنید.
قسمت ورودی آنالوگ نسبتا ساده است. این بخش شامل دو سوئیچ SPDT برای انتخاب محدوده و همچنین یکی از مدهای کاری AC/DC coupling است. ( AC coupling قسمت DC سیگنال را حذف کرده و تنها قسمت ac آن را نشان میدهد و DC coupling سیگنال DC و ac را باهم نشان میدهد. در این حالت میتوان آفست DC را هم دید.)
در قسمت انتخاب محدوده از یک تقسیم کننده ولتاژ استفاده کردیم که وظیفه آن تغذیه ولتاژ هایی است که پیک آن ها بیشتر از 3.3 ولت است.
تقسیم کننده ولتاژ، سیگنال را با نسبت 10:1 تقسیم میکند.
ساخت و تست مدار
میتوانید این پروژه را روی یک پرف بورد ساخته یا خودتان به کمک فایل هایی که در انتهای این مطلب قرار داده شده، یک PCB برای آن بسازید. فایل های PDF روش انتقال تونر(اتو) و فایل گربر برای ساخت در این لینک موجود هستند. در اینجا PCB layout اسیلسکوپ را مشاهده میکنید.
در تصویر زیر هم نمای PCB پروژه را مشاهده میکنید.
در اینجا هم تصویری از زیر PCB را مشاهده میکنید.
کد آردوینو برای اسیلسکوپ
کد کامل این پروژه را از لینکی که در انتهای این مطلب قرار داده شده دانلود کنید. میتوانید در همین سایت یک فایل آرشیوی به نام TFT_eSPI بیابید. استفاده از این کتابخانه تغییر یافته برای راه اندازی و درایو کردن نمایشگر ضروری است. آن را در پوشه Arduino library اکسترکت کرده و از حالت فشرده خارج کنید. اگر قبلا کتابخانه TFT_eSPI را نصب کرده اید، حتما قبل از اکسترکت کردن نسخه تغییر یافته، آن را حذف کنید.
بعد از انجام این کار در قسمت board manager میکروکنترلر esp32 را انتخاب کنید. سپس کد را کامپایل کرده و روی میکروکنترلر آپلود کنید. کار ما تمام شد. اسیلوسکوپ ما آماده کار است.
میتوانید اسیلوسکوپ را با استفاده از پورت Micro USB در قسمت پایینی، روشن کنید. این پورت تنها برای تغذیه استفاده میشود.
موارد موجود در فایل : سورس کامل
برای دانلود فایل ها باید حساب کاربری داشته باشید ثبت نام / ورود
سلام
موقع کامپایل کردن این ارور را میده:
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 هست.
با سلام و خسته نباشید نمایشگر با درایور st7789s پیدا نکردم بلکه با درایور st7789v پیدا کردم چه تفاوتی بین این دو درایور وجود دارد و آیا میتوانم در این پروژه از st7789v استفاده کنم