انجمن‌های فارسی اوبونتو

جامعه کاربران => پروژه‌ها => نویسنده: سید وحید رضا برهانی در 01 اسفند 1393، 12:09 ب‌ظ

عنوان: ارسال سیگنال به کامپیوتر با پورت میکروفون
ارسال شده توسط: سید وحید رضا برهانی در 01 اسفند 1393، 12:09 ب‌ظ
سلام من کار خاصی نکردم ولی گقتم شاید کسی بخواد.
مقدمه :
ما برای اینکه بخواهیم به کامپیوتر دستگاه یا برد الکترونیکی  وصل کنیم و باهاش کارهای باحال انجام بدیم دو راه داریم یکی راه  پیچیده مثل استفاده از یو اس بی یا بلوتوث (که بعد از چندسال هنوزم من نتونستم!) و دیگری راه ساده که این راه های ساده دوتا بود یکی پورت پرینتر (که از بین اش بردند) و یکی هم پورت میکروفن.
--
از اونجایی که من آدم چیز بلدی نیستم ساده ترین راه رو می گم!
اول باید alsa-utils رو نصب کنید ولی به احتمال زیاد الان هم باید نصب باشه
بعد یک فیش صدا (ترجیا یکمی سیم داشته باشه)رو به پورت میکروفون وصل کنید و توی alsamixer فسمت mic-bost رو کاملا ببندین   البته نبندین هم چیزی نمی شه ولی من خوشم نمی یاد!
این برنامه زیر رو با نام ad کامپایل کنید
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <fstream>
using namespace std;
int main(int argc , char *argv[])
{
int sample=atoi(argv[1]);
if (sample < 10) {cerr<<"sample (parameter #1) must be bigger than 10000 (opt=5(sec)*frequency/rate Ex:5*2000)"<<endl;exit(1);}
ifstream file (argv[2],ios::binary);
unsigned int ui;
int i;
char ch;
unsigned char uch;
int st[256]={0};
int sub,begin,last;
//find noise of line 
for (int j=0;j<sample;j++)
{
  file.get(ch);
  uch=ch;
  sub=uch;
  st[sub]++;
}
for (int i=0;i<256;i++)
    if (st[i]>0){
      begin=i; break;}
  for (int i=255;i>-1;i--)
    if (st[i]>0){last=i; break;}
//end find noise of line
cout <<begin<<"-"<<last<<endl;
while (!file.eof())
{
  file.get(ch);
  uch=ch;
  i=uch;
  if (i>=last+10 || i<begin-5) {cout <<"1";}
}
  return 0;
}
حالا این کارها رو انجام بدید
mkfifo /tmp/pipe
arecord -r 10000 -t raw >> /tmp/pipe
حالا این برنامه منتظر می مونه که یکی دیگه هم به فایل pipe وصل بشه پس توی یک پنجره دیگه می زنیم
./ad 40000 /tmp/pipe
حالا برنامه ۴ ثانیه صبر می کنه (۴۰۰۰تقسیم بر ۱۰۰۰۰)تا نویز خط رو حساب کنه بعدش محدوده ی نویز خط رو می نویسه و حالا آماده است که سیگنال رو دریافت کنه برای ارسال سیگنال فقط کافیه شست مبارک ! رو به  سر سیم/فیشی که داخل پورت میکروفون هست بزنید تا سیگنال فرستاده بشه توی برنامه هم هروقت که چیزی رو حس ! کرد مقدار ۱ رو می نویسه که البته می تونید توی برنامه تغییری بدهید که به جای چیزی نوشتن یک دستور را اجرا کنه!
---
اطلاعات اضافی!
۱۰۰۰۰ در arecord -r 10000 به این معنی هست که نرخ نمونه برداری ۱۰کیلو هرتز هست یعنی هر ثانیه ۱۰ هزار تا نمونه می گیره که حداقلش ۲۰۰۰ نمونه در ثانیه هست. هر نمونه هم که می گیره ۲۵۶ حالت داره (اصطلاحا می گن ۸بیتی!) که حالت پیشفرض اش هست و ۱۶ بیتی یا ۲۴ بیتی هم توی بعضی جاها استفاده می شه.
پارامتر اول توی کدی که گذاشتم تعداد کل نمونه هایی است که برای تشخیص محدوده نویز خط به کار می ره که فرمول محاسبه اش اینه: مقدار زمان برای تست(به ثانیه) * سرعت نرخ نمونه برداری
برای اینکه خوشگل تر سیگنال بفرستیم می شه با یک آی سی ۵۵۵ و یک خازن ۱۰ نانو و مقاومت (یا ولوم) فرکانس ایجاد کرد(که توی سایت های الکترونیک می تونید نقشه اش رو پیدا کنید)
---
این کار رو می شه خیلی بهتر هم انجام داد یا شاید هم کسی این کار رو کرده(من جست و جویی نکردم)
عنوان: پاسخ : ارسال سیگنال به کامپیوتر با پورت میکروفون
ارسال شده توسط: v.taghavi68 در 01 اسفند 1393، 01:16 ب‌ظ
 :o :o
آقا چرا لقمه رو دور سرت چرخوندی؟!! پس پورت های سریال این وسط چیکاره اند؟ تو ویندوز بنام com و تو لینوکس به اسم ttys شناخته میشن
عنوان: پاسخ : ارسال سیگنال به کامپیوتر با پورت میکروفون
ارسال شده توسط: سید وحید رضا برهانی در 01 اسفند 1393، 05:11 ب‌ظ
آره خیلی پورت هست ولی اولا لپتاپ من برای ورودی یو اس بی فقط داره با میکروفون! و فکر نکنم که حالاحالا ها پورت میکروفون رو ساقط کنند! نکته ی دیگه اینکه پورت سریال رو به سادگی پورت موازی یا میکروفون نیست خوبی پورت موازی این بود که هر کسی می تونست یک دستگاه رو به کامپیوتر وصل کنه و به کامپیوتر اطلاعات بفرسته ولی بقیه پورتهای دیگه نیاز به مدار واسط دارند که هرکسی نمی تونه راهش بیانداره. کتاب «راه اندازی و کنترل دستگاه های جانبی توسط کامپیوتر-محسن شکیبافر و نفیسه صابری رو ببین! خیلی ها فقط کامپیوتری هستند نه الکترونیکی.
پورت میکروفون هیچکدام  از این مشکلات رو نداره البته برای پروژه های بزرگ مناسب نیست  ولی من که شخصا اکثر کارهایی که انجام می دم کوچیک هستند نه بزرگ!
عنوان: پاسخ : ارسال سیگنال به کامپیوتر با پورت میکروفون
ارسال شده توسط: nixoeen در 01 اسفند 1393، 11:54 ب‌ظ
خوبی پورت موازی این بود که هر کسی می تونست یک دستگاه رو به کامپیوتر وصل کنه و به کامپیوتر اطلاعات بفرسته
چه پورت موازی و چه ورودی میکروفون نباید بدون یک برد واسط به کامپیوتر وصل بشن، وگرنه می‌تونند به کامپیوتر شما صدمه بزنند.
عنوان: پاسخ : ارسال سیگنال به کامپیوتر با پورت میکروفون
ارسال شده توسط: محمد فدوی در 02 اسفند 1393، 01:49 ق‌ظ
سید وحیدرضا برهانی:
منم فکر می‌کنم ممکنه مخرب باشه ولی خیلی ایده‌ی جالبی بود... حتما تستش میکنم. ممنون از انتشارش و خسته نباشی.

پ.ن: شاید قرار دادن یه فیوزالکترونیک ساده سر راهش جلوی آسیب رو هم بتونه بگیره... بهرحال اطلاعاتم کافی نیست بهتره نظر ندم!
عنوان: پاسخ : ارسال سیگنال به کامپیوتر با پورت میکروفون
ارسال شده توسط: سید وحید رضا برهانی در 02 اسفند 1393، 07:30 ق‌ظ
کاری که من نوشتم فکر نکنم خطر داشته باشه
من یادمه یک زمانی می گفتند stk200/300 مادربورد رو می ترکونه! ولی خیلی ها ازش استفاده کردند و نترکید من خودم کلی دستگاه با پورت پرینتر وصل کردم هیچی هم نشد در نهایتش برد آنچنانی نمی خواد یک آی سی بافر می زاری (اونم فقط در پورت پرینتر)
اما درمورد میکروفون و این چیزی که نوشتم اتفاق خاصی فکر نکنم پیش بیاد چون ما فقط سیم رو با پوست بدن تماس می دیم و چون عرق بدن الکترولیت ضعیفی داره یک سیگنال کوچیکی رو تولید می کنه.
حالا اگر واقعا خطرداره می شه بگید کجا خطر داره ؟ شاید من چیزی رو از قلم می اندازم.
در آخر من مسئولیتی رو به عهده نمی گیرم و فقط می تونم بگم که خودمم از این دارم استفاده می کنم
عنوان: پاسخ : ارسال سیگنال به کامپیوتر با پورت میکروفون
ارسال شده توسط: nixoeen در 02 اسفند 1393، 07:38 ب‌ظ
اما درمورد میکروفون و این چیزی که نوشتم اتفاق خاصی فکر نکنم پیش بیاد چون ما فقط سیم رو با پوست بدن تماس می دیم
یک تخلیه الکترواستاتیکی (http://en.wikipedia.org/wiki/Electrostatic_discharge) با پوست بدن می‌تونه ولتاژی بیش از ۳۰۰۰ ولت رو به مدار شما انتقال بده :)
عنوان: پاسخ : ارسال سیگنال به کامپیوتر با پورت میکروفون
ارسال شده توسط: سید وحید رضا برهانی در 02 اسفند 1393، 09:53 ب‌ظ
کجا نوشته بود؟ من ندیدم!
جالب شد!خب من الان چطوری می تونم با پوستم ۳کیلو ولت رو ایجاد کنم؟
عنوان: پاسخ : ارسال سیگنال به کامپیوتر با پورت میکروفون
ارسال شده توسط: Amir Emad در 02 اسفند 1393، 09:57 ب‌ظ
اما درمورد میکروفون و این چیزی که نوشتم اتفاق خاصی فکر نکنم پیش بیاد چون ما فقط سیم رو با پوست بدن تماس می دیم
یک تخلیه الکترواستاتیکی (http://en.wikipedia.org/wiki/Electrostatic_discharge) با پوست بدن می‌تونه ولتاژی بیش از ۳۰۰۰ ولت رو به مدار شما انتقال بده :)
???

اگه اینجوری بود وقتی باهم دست میدادیم که باید جفتمون خشک میشدیم ! ](*,)
عنوان: پاسخ : ارسال سیگنال به کامپیوتر با پورت میکروفون
ارسال شده توسط: سید وحید رضا برهانی در 02 اسفند 1393، 10:16 ب‌ظ
نه بابا ۳ کیلو ولت که هیچی نیست . فقط در حد حس شدنه!
تعمیرکارهای قدیمی تلویزیون (سیاه سفید) دستشون رو روی hi-voltage لامپ تصویر می زاشتن که تست کنن! ولتازش ۱۶ کیلو ولت هست!
البته یکی از فامیلامون برام تعریف کرد. من می ترسم!
جریان خطرناک تر از ولتاز هست
عنوان: پاسخ : ارسال سیگنال به کامپیوتر با پورت میکروفون
ارسال شده توسط: Amir Emad در 02 اسفند 1393، 10:20 ب‌ظ
نه بابا ۳ کیلو ولت که هیچی نیست . فقط در حد حس شدنه!
تعمیرکارهای قدیمی تلویزیون (سیاه سفید) دستشون رو روی hi-voltage لامپ تصویر می زاشتن که تست کنن! ولتازش ۱۶ کیلو ولت هست!
البته یکی از فامیلامون برام تعریف کرد. من می ترسم!
جریان خطرناک تر از ولتاز هست

من سر در نمیارم ! من با برق باتری ماشین یکبار داشتم خشک میشدم ! حدود 24 ولت یا 12 هست نمیدونم ولی خیلی شوک داشت

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

الان 3000 ولت شما میگی چیزی نیست من نمفهمم مگه برق ما 200 ولت نیست ؟ 3000 ولت که خیلی خطرناک تره که !
عنوان: پاسخ : ارسال سیگنال به کامپیوتر با پورت میکروفون
ارسال شده توسط: v.taghavi68 در 02 اسفند 1393، 10:24 ب‌ظ
اما درمورد میکروفون و این چیزی که نوشتم اتفاق خاصی فکر نکنم پیش بیاد چون ما فقط سیم رو با پوست بدن تماس می دیم
یک تخلیه الکترواستاتیکی (http://en.wikipedia.org/wiki/Electrostatic_discharge) با پوست بدن می‌تونه ولتاژی بیش از ۳۰۰۰ ولت رو به مدار شما انتقال بده :)
???

اگه اینجوری بود وقتی باهم دست میدادیم که باید جفتمون خشک میشدیم ! ](*,)
دوست عزیز اختلاف پتانسیل و ولتاژ بالا است ولی میزان انرژی و توانش بالا نیست و در کسری از ثانیه جریان از بدن شما رد میشه و تموم میشه و میزانش اونقدری نیست که بخواد گرمایی تولید کنه (شما اختلاف پتانسیل رو مثل سرعت در نظر بگیر) پس وقتی دست میدی خشک نمیشی
عنوان: پاسخ : ارسال سیگنال به کامپیوتر با پورت میکروفون
ارسال شده توسط: سید وحید رضا برهانی در 02 اسفند 1393، 10:35 ب‌ظ
نه بابا ۳ کیلو ولت که هیچی نیست . فقط در حد حس شدنه!
تعمیرکارهای قدیمی تلویزیون (سیاه سفید) دستشون رو روی hi-voltage لامپ تصویر می زاشتن که تست کنن! ولتازش ۱۶ کیلو ولت هست!
البته یکی از فامیلامون برام تعریف کرد. من می ترسم!
جریان خطرناک تر از ولتاز هست

من سر در نمیارم ! من با برق باتری ماشین یکبار داشتم خشک میشدم ! حدود 24 ولت یا 12 هست نمیدونم ولی خیلی شوک داشت

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

الان 3000 ولت شما میگی چیزی نیست من نمفهمم مگه برق ما 200 ولت نیست ؟ 3000 ولت که خیلی خطرناک تره که !
مدارهای hi-vol و سیم پیچ هاش رو دیدی؟ بعضی هاش با ۴ تا باطری قلمی چندکیلو ولت خروجی می دهند! اشاره کردم که قضیه یک جورایی به انرژی و جریان بستگی داره  بیشتر از این دیگه اینجا جاش نیست توی فروم های برق سرچ کن کامل گفتن.