ورکشاپ آموزشی - آیسی مدار
رفتن به محتوا

دستکش هوشمند آیرون‌من با سنسور حرکتی و حلقه LED

ابزار و گجت
۰ نظر
۴۰ نفر
کد ۴۳۰۹

دنیای مارول و لباس‌های جذاب تونی استارک همیشه پر از ایده‌های خفن برای پروژه‌های الکترونیکی بوده. یکی از جذاب‌ترین بخش‌های این لباس، همون دستکش معروفشه که با بالا آوردن دست روشن میشه و شلیک می‌کنه. خبر خوب اینه که برای داشتن این دستکش نیازی نیست حتما یک میلیاردر نابغه باشی؛ با چند تا قطعه ساده و در دسترس می‌تونی نسخه خودت رو بسازی و حسابی لذت ببری.

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

قطعات پرینت سه‌بعدی به همراه یه دستکش پارچه‌ای ساده پایه‌های اصلی کارمون هستن. بخش الکترونیک هم با استفاده از یک برد توسعه کوچک اونقدر جمع‌وجور طراحی شده که راحت روی دستت جا می‌گیره. پس وسایل و قطعاتت رو آماده کن تا بریم سراغ ساخت این گجت ابرقهرمانی جذاب.

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

  • قطعات پرینت سه‌بعدی دستکش
  • برد XIAO nRF52840 Sense (با سنسور حرکتی)
  • حلقه ال‌ای‌دی نئوپیکسل 12 تایی
  • پاوربانک و کابل USB بلند
  • دستکش مشکی ساده
  • باتری لیتیوم پلیمر کوچک
  • ماژول پخش صدای DFPlayer (اختیاری)
  • باتری لیپو
  • اسپیکر کوچک یا پیزو (برای صدا)
  • کلید قطع و وصل
مرحله ۱

آماده‌سازی قطعات پرینت سه‌بعدی

اول از همه باید بریم سراغ بدنه اصلی دستکش که با پرینتر سه‌بعدی ساخته میشه. فایل‌های استاندارد زیادی برای این کار وجود داره که می‌تونی دانلود کنی. اگر راست‌دست هستی، پیشنهاد می‌کنم فایل‌ها رو توی نرم‌افزار اسلایسر قرینه (Mirror) کنی تا قطعات برای دست چپت پرینت بشن و موقع کار کردن با ابزارهای دیگه راحت باشی.

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

مرحله ۲

نصب و سیم‌کشی حلقه نئوپیکسل

حالا نوبت به قلب تپنده و درخشان این دستکش می‌رسه. برای بخش نورپردازی کف دست، به یک حلقه ال‌ای‌دی نئوپیکسل 12 تایی نیاز داریم که باید دقیقا وسط کف دستکش جاسازی بشه. سه تا سیم بلند برای پایه‌های مثبت، منفی (GND) و دیتای (Data) این حلقه لحیم کن تا بعدا به راحتی به میکروکنترلر وصل بشن.

برای رنگ نور، رنگ سفید یخی یک انتخاب کلاسیک و عالیه، اما اگر توی کدنویسی کمی رنگ آبی هم بهش اضافه کنی، افکت نهایی خیلی خفن‌تر و به واقعیت نزدیک‌تر میشه.

مرحله ۳

مغز متفکر پروژه؛ برد XIAO

برای اینکه سیستم متوجه بشه کی دستت رو بالا آوردی، باید از یک برد توسعه کوچیک و قدرتمند استفاده کنیم. انتخاب ما برای این پروژه برد XIAO nRF52840 Sense هست. بزرگترین مزیت این برد اینه که سنسور حرکتی (IMU) به صورت داخلی روش تعبیه شده و دیگه نیازی به ماژول‌های جداگانه و سیم‌کشی‌های اضافه برای شلوغ کردن مدار نداریم. اینطوری کل بخش الکترونیک خیلی جمع‌وجور و تمیز روی دستت سوار میشه.

مرحله ۴

برنامه‌نویسی و تشخیص حرکت دست

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

افکت نوری شامل چهار حالت مختلف میشه: روشن شدن تدریجی (Fade in)، خاموش شدن تدریجی (Fade out)، روشن موندن کامل و خاموشی کامل.

Arduino
// XIAO nRF sense
// Iron Man Glove
// Markus opitz 2025, instructables.com
// ====================================
#include "LSM6DS3.h"
#include "Wire.h"
//Create a instance of class LSM6DS3
LSM6DS3 myIMU(I2C_MODE, 0x6A); //I2C device address 0x6A
int flag = 0;
float value;
int newValue;
int trigger = 100; //value for beginning light (and sound)
// LED ring
#include <Adafruit_NeoPixel.h>
#define PIN D0 // or D2
#define NUMPIXELS 12 // How many NeoPixels are attached to the Arduino?
Adafruit_NeoPixel pixels = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
int x,y,z;
//DF Player //optional
#include <SoftwareSerial.h>
#include "Arduino.h"
#include "DFRobotDFPlayerMini.h"
SoftwareSerial mySoftwareSerial(D8,D9); // or 13, 14
DFRobotDFPlayerMini myDFPlayer;
void setup() {
Serial.begin(115200);
pinMode(LED_BLUE, OUTPUT); // LED init
digitalWrite(LED_BLUE, LOW); //blue LED on
//IMU sensor configuration
if (myIMU.begin() != 0) {
Serial.println("Device error");
} else {
Serial.println("Device OK!");
}
//mySoftwareSerial.begin(115200); //DF Player
delay(10);
// DF Player init (optional!)
Serial.println();
Serial.println(F("Initializing DFPlayer ... (may take 3-5 seconds)"));
if (!myDFPlayer.begin(mySoftwareSerial)) { //Use SoftwareSerial to communicate with player.
Serial.println(F("Unable to begin:"));
Serial.println(F("1.Please recheck the connection!"));
Serial.println(F("2.Please insert the SD card!"));
while(true){
delay(0); // Code to compatible with ESP8266 watch dog.
}
}
Serial.println(F("DFPlayer Mini online."));
myDFPlayer.volume(25); //Set volume value from 0 to 30
Serial.println(F("df player ready"));
pixels.begin(); //LED
Serial.println("setup done");
}
void loop() { // checking the IMU value (here:X) and deciding the action
// fade in, fade out, hold light, light off
getValue();
Serial.println(newValue); // Printing Sensor value on Serial monitor
if ((newValue > trigger) && (flag == 0)) { // start LED light
//myDFPlayer.play(1);
lightfadeon();
flag = 1;
}
if ((newValue > trigger) && (flag == 1)) { // hold LED light
lighton();
}
if ((newValue < trigger) && (flag == 1)) { // fade out light
//myDFPlayer.play(2);
lightfadeoff();
flag = 0;
}
if ((newValue < trigger) && (flag == 0)) { // off
lightoff();
flag = 0;
}
delay(5);
}
void getValue() {
digitalWrite(LED_GREEN, HIGH);
digitalWrite(LED_BLUE, HIGH); //blue LED on
digitalWrite(LED_GREEN, LOW); //green LED on
value = myIMU.readFloatAccelX(); delay(10); //according to installation use X, Y or Z
value = value * 100;
newValue = map(value, -100, 100, 180,0);
Serial.println(newValue);
digitalWrite(LED_GREEN, HIGH);
digitalWrite(LED_BLUE, LOW);
}
void lightfadeon() { //repulsor fade on
//Serial.println(" + + + + + ON + + + + + +");
for(z=0; z<256; z=z+5)
{
for(int p=0; p<12; p++) {
x = z; y = z;
if (x>225) x = 225; if (y>225) y = 225;
pixels.setPixelColor(p, pixels.Color(x,y,z));
pixels.show();
}
//Serial.print(x);Serial.print(", ");Serial.print(y);Serial.print(", ");Serial.println(z);
}
}
void lightfadeoff() { //repulsor fade off
//Serial.println(" - - - - OFF - - - - - ");
for(z=255; z>=0; z=z-5)
{
for(int p=0; p<12; p++) {
x = z; y = z;
pixels.setPixelColor(p, pixels.Color(x,y,z));
pixels.show();
}
//Serial.print(x);Serial.print(", ");Serial.print(y);Serial.print(", ");Serial.println(z);
}
}
void lighton() { //repulsor on
for(int p=0; p<12; p++) {
pixels.setPixelColor(p, pixels.Color(235,235,255));
pixels.show();
}
}
void lightoff() { //repulsor off
for(int p=0; p<12; p++) {
pixels.setPixelColor(p, pixels.Color(0,0,0));
pixels.show();
}
}

یه نکته خیلی مهم رو فراموش نکن؛ بسته به اینکه برد XIAO رو توی چه جهتی روی دستکش نصب می‌کنی، ممکنه محور حرکتی عوض بشه. پس اگر دیدی سیستم درست واکنش نشون نمیده، کافیه توی کد محور رو از X به Y یا Z تغییر بدی تا عملکردش اصلاح بشه.

مرحله ۵

مونتاژ نهایی دستکش

بریم سراغ سرهم کردن قطعات. یک دستکش کار مشکی به عنوان پایه کارت انتخاب کن. قطعات پلاستیکی که پرینت کردی رو دونه‌دونه روی دستکش بکش. وقتی مطمئن شدی همه چیز سر جای خودشه، با استفاده از یک چسب انعطاف‌پذیر، قطعات رو به پارچه دستکش بچسبون.

یادت باشه استفاده از چسب منعطف خیلی مهمه تا موقع باز و بسته کردن دستت مشکلی پیش نیاد. حتما نوک انگشت‌ها رو محکم‌تر بچسبون تا بقیه قطعات لیز نخورن. اینطوری راحت می‌تونی دستکش رو بپوشی یا دربیاری.

جا دادن برد میکروکنترلر روی دستکش به سلیقه و طراحی خودت بستگی داره. فقط حواست باشه که پورت USB برد در دسترس باشه تا هر وقت خواستی بتونی باتری رو شارژ کنی یا کدت رو تغییر بدی. طراحی مسیر سیم‌ها هم باید طوری باشه که زیر قطعات پلاستیکی مخفی بشن و ظاهر دستکش رو خراب نکنن.

بعد از محکم کردن قطعات الکترونیکی و اطمینان از درست بودن محور سنسور حرکتی، کافیه دستکش رو بپوشی، مدار رو روشن کنی و با بالا آوردن دستت، شلیک نوری آیرون‌من رو شبیه‌سازی کنی!

مرحله ۶

اضافه کردن افکت صوتی و جمع‌بندی

اگر دوست داری دستکشت رو از این هم خفن‌تر کنی، می‌تونی به مدارت یک ماژول DFPlayer و یه اسپیکر کوچیک هم اضافه کنی. کافیه فایل‌های صوتی شلیک آیرون‌من رو با فرمت MP3 روی یه مموری کارت بریزی و به ماژول وصل کنی. نرم‌افزار به صورت خودکار با هر بار روشن شدن ال‌ای‌دی‌ها، افکت صوتی رو هم پخش می‌کنه و حس واقعی‌تری بهت میده.

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

فایل‌های پیوست

INO IronManGlove.ino
INO IronManGlove_2.ino

تو میتونی اولین سازنده باشی!

اگه پروژه رو ساختی به اشتراک بزار و اعتبار هدیه بگیر

این آموزش با استانداردهای اختصاصی آیسی‌مدار بازنویسی و بهینه‌سازی شده و تمامی حقوق انتشار آن متعلق به این مجموعه است و در صورت کپی یا بازنشر پیگرد قانونی خواهد داشت.

آموزش‌های مشابه

گفتگو‌های کاربران

هنوز نظری ثبت نشده؛ تو شروع کن!