ماژول سنسور عضله EMG Muscle Sensor
ماژول عصب و عضله EMG به انگلیسی Electromyography یک ماژول سنسوری است که برای اندازهگیری سیگنالهای الکتریکی موجود در عضلات بدن کاربرد دارد. این ماژول معمولاً شامل یک یا چند الکترود است که بر روی پوست قرار میگیرد و سیگنالهای الکتریکی عضلانی را که در حین فعالیت عضلات تولید میشود را به صورت آنالوگ یا دیجیتال از طریق پایههای ماژول خروجی میدهد. این ماژول به طور گستردهای در تحقیقات علوم پزشکی، بازسازی حرکتی، رباتیک پزشکی و بسیاری از کاربردهای دیگر در زمینههای مهندسی و علوم پایه استفاده میشود. به عنوان مثال، محققان از این ماژول برای بررسی نحوه کارکرد عضلات در بدن انسان استفاده میکنند، و با تحلیل سیگنالهای EMG، میتوانند بیماریهای مربوط به عضلات را تشخیص دهند. از دیگر کاربردهای ماژول EMG میتوان به کنترل پروتزهای عضو بدن، ایجاد واسط کاربری مغز-ماشین (Brain-Computer Interface)، تحلیل حرکات عضلانی در ورزش و تمرینات بدنی، آموزش رباتها و ارتقاء کیفیت راهبری رباتیکی اشاره کرد.
ماژول EMG T084 شامل یک ترانزیستور تقویت کننده، فیلترهای پایین گذر و rectifier برای تقویت و پردازش سیگنالهای EMG است. این ماژول از ولتاژ کاری ۳ تا ۵ ولت DC پشتیبانی میکند و میتواند سیگنالهای EMG را با دقت بالا به دست آورد. همچنین، این ماژول با استفاده از پایههای خروجی خود میتواند به آردوینو (Arduino)، میکروکنترلرها و سایر دستگاههای الکترونیکی وصل شود.
مشخصات فنی ماژول سنسور عضله EMG Muscle Sensor
ولتاژ کاری: 3 تا 5 ولت DC
جریان مصرفی: کمتر از 1 میلیآمپر
دامنه فرکانس: 20 تا 500 هرتز
دامنه ولتاژ ورودی: ±300 میلیوات
نویز خروجی: کمتر از 10 میلیولت
نوع خروجی: آنالوگ یا دیجیتال
پایههای خروجی: تکی یا دوتایی
ابعاد: 28.2 × 14.5 × 7.2 میلیمتر
لازم به ذکر است که این مشخصات تنها برخی از مشخصات این ماژول هستند و ممکن است برای ماژولهای مختلفی از EMG T084، مشخصات متفاوتی اعمال شود.
بررسی پایههای pinOut ماژول EMG T084
VCC: ورودی تغذیه با ولتاژ بین ۳ تا ۵ ولت DC است که توسط منبع تغذیه به ماژول ارائه میشود.
GND: پایه مربوط به زمین مدار است که به منظور اتصال به منبع تغذیه و دیگر اجزای مدار به کار میرود.
V-: این پایه برای اتصال به منبع تغذیه منفی یا Negative Voltage استفاده میشود. برای استفاده در برخی از اعمال الکتروفیزیولوژیکی نیاز است که ولتاژ منفی همراه با ولتاژ مثبت به ماژول تغذیه شود.
SIG: خروجی سیگنال EMG که از طریق آن میتوان دادههای الکترومایوگرافی (EMG) را برای پردازش و نمایش توسط سایر اجزای سیستم استفاده کرد. این سیگنال به صورت آنالوگ است و باید توسط مبدل آنالوگ به دیجیتال به سیگنال دیجیتال تبدیل شود.
GND: پایه مربوط به زمین مدار است که برای اتصال به منبع تغذیه منفی و دیگر اجزای مدار به کار میرود.
به همراه ماژول EMG عصب و عضله چه اقلامی باید خریداری شود؟
1- میکروکنترلر: برای پردازش سیگنالهای خروجی ماژول و کنترل سایر بخشهای سیستم، به یک میکروکنترلر نیاز دارید. بردهای میکروکنترلرهایی مانند آردوینو (Arduino)، رزبری پای (Raspberry Pi) و STM32 و ESP32 و... میتوانند برای این منظور استفاده شوند.
2- منبع تغذیه: برای تامین برق مورد نیاز ماژول، به یک منبع تغذیه نیاز دارید. معمولا منبع تغذیههای ۳ تا ۵ ولت DC مناسب برای این منظور هستند.
3- الکترودها: برای اندازهگیری سیگنالهای EMG، به الکترودهای مناسبی نیاز دارید. این الکترودها معمولا شامل الکترودهای سطحی یا سوزنی هستند که باید به منطقهای از بدن که میخواهید سیگنال آنرا اندازهگیری کنید، متصل شوند. البته همراه این کالا همانطور که در تصویر مشخص است، 3 عدد الکترود ارسال میشود.
4- کابلها و محافظ کابل: برای اتصال الکترودها به ماژول و انتقال سیگنال، به کابلهای مناسب و محافظ کابل نیز نیاز دارید.
نمونه برنامه ماژول EMG عصب و عضله با آردوینو توسط نمایشگر OLED
برای برنامهنویسی ماژول EMG با برد آردوینو و نمایشگر OLED SSD1306، ابتدا باید کتابخانههای مربوط به EMG و نمایشگر OLED را در آردوینو نصب کنید. برای این کار، میتوانید از کتابخانههای OpenEMG و Adafruit_SSD1306 استفاده کنید. سپس میتوانید کد زیر را برای نمونه برنامهنویسی ماژول EMG با برد آردوینو و نمایشگر OLED SSD1306 استفاده کنید.
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <OpenEMG.h>
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
OpenEMG emg;
void setup() {
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
display.display();
delay(2000);
display.clearDisplay();
display.setTextColor(WHITE);
display.setTextSize(1);
display.setCursor(0,0);
display.println("EMG Sensor Demo");
display.display();
emg.begin();
}
void loop() {
float emg_value = emg.read();
display.setCursor(0,10);
display.print("EMG: ");
display.println(emg_value);
display.display();
}
در این برنامه، ابتدا کتابخانههای مورد نیاز را به کد اضافه کرده و سپس پایههای نمایشگر OLED را تعریف میکنیم. سپس ماژول EMG را با استفاده از کتابخانه OpenEMG راهاندازی کرده و در داخل حلقه اصلی برنامه، مقدار خوانده شده از ماژول EMG را دریافت کرده و به صورت متنی روی نمایشگر OLED نمایش میدهیم. در انتهای حلقه، مقدار مطلوب برای دیگر کاربردها اعلام شده است. این کد به صورت سادهای میتواند شروعی برای پروژههای بزرگتر باشد. برای بهبود کارایی و دقت بیشتر، میتوانید از الگوریتمهای پیشرفتهتر برای پردازش دادههای EMG استفاده کنید.
راه اندازی EMG با میکروپایتون و برد esp32 با OLED ssd1306
برای نوشتن برنامهای برای ماژول EMG با استفاده از برد ESP32 و نمایشگر OLED SSD1306 در محیط میکروپایتون، ابتدا باید کتابخانههای مورد نیاز را نصب کنید. برای این کار میتوانید از مدیریت بسته pip استفاده کنید.
نصب کتابخانه Micropython-ssd1306 به کمک pip install micropython-ssd1306
نصب کتابخانه utime به کمک دستور pip install utime
نصب کتابخانه machine به کمک دستور pip install machine
حالا میتوانید کد برنامه را با استفاده از ویرایشگر کد پایتون خود بنویسید. یک نمونه کد به شرح زیر است.
import machine
import utime
from ssd1306 import SSD1306_I2C
# تعریف پایه های ارتباطی
pin_vplus = machine.Pin(2, machine.Pin.OUT)
pin_gnd = machine.Pin(4, machine.Pin.OUT)
pin_vminus = machine.Pin(5, machine.Pin.OUT)
pin_sig = machine.Pin(34, machine.Pin.IN)
# تنظیمات نمایشگر
i2c = machine.I2C(scl=machine.Pin(22), sda=machine.Pin(21))
oled = SSD1306_I2C(128, 64, i2c, addr=0x3c)
# راه اندازی پایه ها
pin_vplus.value(1)
pin_gnd.value(0)
pin_vminus.value(0)
# تابع خواندن مقدار از ماژول EMG
def read_emg():
emg_value = pin_sig.read()
return emg_value
# حلقه اصلی برنامه
while True:
emg = read_emg()
oled.fill(0)
oled.text("EMG value: {}".format(emg), 0, 0)
oled.show()
utime.sleep_ms(100)
این برنامه ابتدا پایه های ارتباطی را تعریف کرده و سپس آنها را راه اندازی میکند. سپس تابعی به نام read_emg تعریف شده است که مقدار خوانده شده از ماژول EMG را بازگردانده و در حلقه اصلی برنامه این مقدار به همراه متن "EMG value" در نمایشگر OLED نمایش داده میشود.
راه اندازی ماژول EMG با میکروپایتون و برد rp2040 و نمایشگر OLED ssd1306
برای راهاندازی ماژول EMG با برد RP2040 و نمایشگر OLED SSD1306 با استفاده از میکروکنترلر میکروپایتون، میتوانید از کتابخانههای موجود استفاده کنید. ابتدا باید کتابخانههای مورد نیاز را نصب کنید. برای این کار، میتوانید از دستورات pip install adafruit-blinka و pip install adafruit-circuitpython-ssd1306 استفاده کنید. سپس کد زیر را در محیط مایکروپایتون خود قرار دهید.
import board
import busio
import adafruit_ssd1306
import time
import analogio
# تعریف پایه ها
EMG_PIN = board.A1
# تعریف نمایشگر
i2c = busio.I2C(board.GP1, board.GP0)
oled = adafruit_ssd1306.SSD1306_I2C(128, 32, i2c)
# پاک کردن نمایشگر
oled.fill(0)
oled.show()
# تعریف مقدار حداقل و حداکثر مقدار خوانده شده از EMG
EMG_MIN_VALUE = 0
EMG_MAX_VALUE = 65535
# تعریف شیء ADC برای خواندن مقدار EMG
emg_pin = analogio.AnalogIn(EMG_PIN)
# تعریف تابع برای محاسبه مقدار EMG نرمال شده
def get_normalized_emg():
emg_value = emg_pin.value
normalized_emg = (emg_value - EMG_MIN_VALUE) / (EMG_MAX_VALUE - EMG_MIN_VALUE)
return normalized_emg
# حلقه اصلی
while True:
# خواندن مقدار EMG و نمایش آن روی نمایشگر
emg_value = get_normalized_emg()
oled.fill(0)
oled.text("EMG: {:.2f}".format(emg_value), 0, 0)
oled.show()
time.sleep(0.1)
در این کد، پایه ارتباطی ماژول EMG به پایه A1 برد RP2040 وصل شده است. همچنین برای ارتباط با نمایشگر OLED SSD1306 از رابط I2C و پایه های GP0 و GP1 برد RP2040 استفاده شده است.
کاربردهای ماژول سنسور عضله EMG Muscle Sensor
طراحی و پیاده سازی گجت های ورزشی
استفاده در پروژه های تحقیقاتی
امکان راه اندازی چند سنسور DHT با ESP8266 با استفاده از MicroPython وجود دارد. سنسورهای DHT با پروتکل دیجیتال و از طریق پایههای GPIO قابل اتصال به میکروکنترلرها هستند.
برای ساخت یک سیستم کنترل دما با برد میکروکنترلر ESP32، به موارد زیر نیاز دارید:
یک برد میکروکنترلر ESP32
یک سنسور دما مثل DHT DS18B20
یک المان سرد کننده
با استفاده از کتابخانه DHT.h، میتوانید از سنسور دما برای خواندن دمای محیط استفاده کنید. سپس، میتوانید از این دما برای کنترل المان گرمایشی یا سرمایشی استفاده کنید.
در خصوص برنامه نویسی از کتابخانه DHT و در صورت نیاز کتابخانه وای فای برای ارسال دادهها به پلتفرم IoT باید استفاده کنید.