الخميس، 27 يونيو 2013

صنع جهاز mp3 من غير برمجة

صنع جهاز mp3 بسيط  من غير برمجة


في هذه التدوينة سأتحدث عن كيفية بناء جهاز MP3 بسيط بدون برمجة و بقطع قليلة , حيث يمكنك تحميل الملفات الموسيقيه على SD Card و تشغيلها منه .

الفكرة الرئيسية للمشروع مرتكزة على القطعة  wtv020SD-16P التي تستخدم في العديد من ال التطبيقات العملية كقارئ ملفات صوتية من الsd card  , يستخدم في انظمة الملاحة GPS و في السيارات الحديثة و في تطبيقات المنازل الذكية , في الألعاب الحديثة مثل الxbox , و في المصاعد و نظم التحكم الألي التفاعلي .


                  
النشرة الفنية لهذه القطعة يمكن تحميلها  من هنا .

هذه القطعة تتيح نمط برمجي و أخر غير برمجي , في هذا الجزء سأتحدث عن الجزء الغير برمجي لتناسب المبتدئين في الألكترونيات .


ما سنعمل عليه هو وضع ال mp3 mode و الذي يمكننا من خلاله التحكم بالمقاطع الصوتية عن طريق الpush Button


ما ستحتاجه لتنفيذ التجربة :

1) القطعة wtv020SD-16P
2) breadBoard
3)اسلاك توصيل 
4) وحدة تغذية 3.3V  .
5)مقاومة 470 اوم
6)Push Button عدد 4 
7) ذاكرة Sd card سعة 1GB
8)سماعة Speaker
9)LED باعث ضوئي
10) مصدر تغذية "بطارية 9V "


لمن لا يملك مصدر 3.3 فولت هناك طريقه, الأولى ان يقوم بوضع zener diode ديود  3.1 فولت يقوم بتقليل الفولتية , كما يوجد في هذه القطعة خيار تفعيل ال5 فولت عن طريق تغيير لحام صغير في مقدمة القطعة .



طريقة التوصيل :

طريقة التوصيل سهلة ,هذا المخطط الرسمي المعتمد .



في هذه التجربة لم استخدم الازرار التي تقوم بزيادة او انقاص الصوت Vol+ , -Vol  , يمكنك اضافتها لو احببت .

انا جربت تشغيل ملفات من النوع WAV و من النوع ad4 ,و أُفضل استخدام الملفات من النوع الأخير .





كشرط لهذه القطعة يجب ان يكون ال Sample rate مساويا ل 32000Hz و من الملفات PCM Format 16bit يمكن ضبط هذه الأعدادات من خلال اي برنامج صوتيات .


  انا استخدمت برنامج مفتوح المصدر هو Audacity , عدّل الصيغ 

كل ما عليك في النهاية هو تخزين الملفات في ال sd card و ترتيبها من حيث التسمية من 4 خانات كالآتي 
0000.wav , 0001.wav, 0002.wav ...etc 
قم بوضع ال SD Card في الدارة و شغل الملفات الصوتية التي خزنتها و استمتع :) 


هذا الفيديو يوضح العملية .

تحياتي 


الأحد، 23 يونيو 2013

مقالة جديدة لي على موقع Instructables


مقالة جديدة لي على موقع Instructables


اليوم رفعت مقالة جديدة على موقع Instructables بعنوان 




بالأضافة لطريقة التحكم بالمحركات الكهربائية بتقنية PWM رقمياً باستخدامها و استخدام 555Timer 


اتمنى منكم زيارة المقال و اعطائي تقيمكم .

الجمعة، 21 يونيو 2013

محركات السيرفو الجزء الثاني Servo Motor

محركات السيرفو الجزء الثاني Servo Motor 2 


Full rotational 360Deg


في الجزء الاول من حديثي عن محركات السيرفو شرحت المبادئ الاساسية في مكتبة السيرفو التي تحتاجها للتحكم في هذا النوع من المحركات , كما عرضت طريقة التحكم في محركات السيرفو ذات الدوران نصف الكامل 180deg و الشق الثاني في حديثنا عن محركات السيرفو هو المحركات ذات الدوران المتواصل 360deg .


هذه المحركات تستطيع بناء روبوت بسهولة عن طريقها ,هناك طريقتين لبرمجتها , باستخدام المؤقتات Timer و تفعيل اوامر ال delayMicroseconds , و طريقة أخرى سهلة من نفس مكتبة الأردوينو الرسمية للسيرفو , و هي ما سأتطرق به هنا لسهوله التحكم به من خلالها  .

اولاً ما ستحتاج إليه لتنفيذ هذه التجربة :


1) بطاقة أردوينو "استعملت هنا بطاقة Arduino Leonardo Micro Pro الرائعة " .
2) محرك سيرفو 360 درجة 
3) مقاومة متغيرة 
4) اسلاك توصيل .
5) مصدر جهد خارجي لتغذية السيرفو .

تحذير : يجب الحذر عند تغذية محركات السيرفو مباشرة من مخرج ال 5 فولت الخاص بالأردوينو لان تيار السيرفو العالي قد يتسبب في اتلاف بطاقة الأردوينو , لذلك يفضل ان تستخدم مصدر جهد خارجي ذو تيار كافي " 5 فولت -1 أمبير " .


طريقة التوصيل : 


البرمجة :

لاحظ فقط أن تغيير الزوايا في للمحرك تتحكم فقط هنا بسرعة دورانه "للزاوية من 0 - 94 " يلتف المحرك عكس عقارب الساعة و من 96 - 180 يلتف مع عقارب الساعة و عند 95 تقريباً يكون في حالة توقف " .





هذا الفيديو يوضح هذا البرنامج .



يمكنك أيضاً التحكم بمحرك السيرفو باستخدام الأردوينو و اللاب فيو Labview 



يمكنك تحميل البرنامج
من هنا Servo.exe "طبعاً ستحتاج لتحميل ال real time engine لديك لنسخدة متوافقة مع Labview2010 او أعلى . من هنا 

الخميس، 20 يونيو 2013

المقاومة المتغيرة الرقمية Digital Potentiometer

المقاومة المتغيرة الرقمية Digital Potentiometer

MCP41100 Digital Poteniometer


المقاومة المتغيرة potentiometer هي عنصر الكتروني غير فعّال نستطيع تغيير المقاومة عبرها , و لها استخدامات واسعة جداً حتى أننا لا نجد جهاز واحد يخلو منه هذا العنصر .

من أكثر استعمالات الشائعة للمقاومة المتغيرة :
1) تحديد التيار المار في الدوائر الكهربائية ..
2) التحكم في المضخمات العملياتية Amplifier .
3) كوحدة ادخال للتحكم بوظائف معينة اعتماداً على قراءتها , كالتحكم بالمحركات الكهربائية , او التحكم بشدة اضاءة باعث ضوئي LED .
قد يكون الشكل المألوف للمقاومة المتغيرة هو الشكل التماثلي Analoge  كما في الصورة .



لكن لو اردنا مثلاً عن طريق المتحكم الأصغري Microcontroller التحكم في قيمة هذه المقاومة المتغيرة ؟! فهذا سيكون صعباً مع  المقاومات المتغيرة التماثلية .

الحل يكون هنا باستخدام مقاومة متغيرة رقمية , شكلها على شكل دارة متكاملة IC .



توزيع ارجلها كالآتي 



يمكنك الأطلاع على النشرة الفنية Datasheet لهذه القطعة من هنا حيث ستجد فيها الكثير من المعلومات المفيدة .

من أهم الامور التي يجب معرفتها لهذه القطعة أن الحساسية Sensitivity هي 8bit اي ممكن ان تعطينا 255 قيمة مختلفة للمقاومة المتغيرة ! هذا ممتاز للغاية .

يتم برمجة هذه القطعة باستخدام البروتوكول SPI يمكنك الاطلاع عليه من هذا الرابط .

ما سنحتاجه لتنفيذ هذه التجربة :

1) بطاقة اردوينو 
2) المقاومة المتغيرة الرقمية MCP41100 
3) اسلاك توصيل .
4) مقاومة 100 اوم
5)باعث ضوئي LED .
6) BreadBoard .

طريقة التوصيل :



كيفية حساب المقاومة الناتجة ؟ 

هذا الجدول يبين كيفية حساب المقاومة الناتجة .

مثلاً لو كان الأمر الذي اعطيناه من الأردوينو هو 0xDE او 222 بالنظام العشري , و على اعتبار اننا نستخدم MCP41100 الذي مقاومته العظمى 100K ohm ومقاومة المنزلفة wiper  هو 125 اوم فسيكون المقاومة الناتجة هي تقريباً 13.41 كيلو اوم .




الكود :




سنكتب الآن كود يقوم على تقليل المقاومة تدريجياً الى  صفر تقريباً ثم زيادتها مرة أخرى , و الباعث الضوئي LED المربوط مع المقاومة الرقمية المتغيرة ستزيد شدة اضاءته و تخفت حسب قيمة المقاومة الرقمية المتغيرة. 
الخرج على جهاز راسم الاشارة Oscillscope .

و هذا الفيديو يوضح نتيجة تطبيق البرنامج .



السبت، 15 يونيو 2013

لوحة الأدخال Keypad 4*4

لوحة الإدخال KeyPad





لوحة الإدخال Keypad 4*4 هي احدى التطبيقات التي تمكننا من ادخال الارقام و الرموز و التحكم بالعديد من التطبيقات المختلفة , كالحساب و الحماية و غيرها الكثير 

تأتي لوحات الادخال Keypad باشكال و توصيلات مختلفة 









لوحة الإدخال التي سأستعملها هي Keypad4*4 و التي تحتوي على ستة عشر زراً 16 button  و مقسم لأربعة صفوف و أربعة أعمدة .

                                                        

ما ستحتاجه لتقوم بتجربة اليوم :

1) بطاقة أردوينو 

2) لوحة ادخال Keypad 4*4 
3)اسلاك توصيل solderless Jumper
4)Breadboard  

الفكرة العامة للوحة ادخال Keypad 4*4 :

الفكرة العامة التي ترتكز عليها  لوحة ادخال Keypad 4*4 في انها تتكون من مصفوفة من الصفوف Rows و الأعمدة Columns  التي يربط صفوفها لتكون كمصدر تغذية و اعمدتها كمصرف لتيار التغذية " يجوز العكس" , و يعمل كل زر في هذه المصفوفةButton عمل المفتاح Switch , و في حالة الضغط على الزر فأنه يسمح للتيار بالمرور .



سنقوم بتوصيل 
لوحة ادخال Keypad 4*4 مع 8 مداخل من الأردوينو .
الفكرة أن المداخل المربوطة مع الصفوف Rows تكون كمصدر للتيار أما الأعمدة columns فتكون كمصرف للتيار

طريقة التوصيل :


طريقة التوصيل موجودة في المخطط التالي :



طريقة التوصيل سهلة أليس كذلك ؟

الان ننتقل للبرمجة ,الكود موجود ادناه :







في البداية نقوم بتعريف الصفوف R ابتداءاً من D2-D5 ومن ثم نقوم بتعريف الاعمدة C من D6-D9 و نعرف الصفوف كمخرج" مصدر تيار" و الاعمدة كمدخل INPUT "مصرف للتيار , السؤال لماذا عرفنا المداخل و اعطيناها الأمر 

digitalWrite(C1,HIGH);
digitalWrite(C2,HIGH);
digitalWrite(C3,HIGH);
digitalWrite(C4,HIGH);


هنا فعّلنا مقاومات داخلية تسمى مقاومات رفع Pull_up resistor  و التي تفعّل مقاومات داخلية قيمتها 10 كيلو اوم , يمكن القراءة عنها أكثر هنا 


فقط طبق البرنامج و افتح شاشة ال Serial Monitor لترى رقم الزر الذي ضغطت عليه .

هذا هو كل شيء يلزم لبرمجة لوحة الأدخال , تحياتي 

الخميس، 13 يونيو 2013

مقالة جديدة لي على موقع Instructables

مقالة جديدة لي على موقع Instructables


اليوم رفعت مقالة جديدة على موقع Instructables  بعنوان 
Build Your FM transmission Station with Arduino


حيث يمكنك بناء محطة راديو خاصة بك , و تستمع للموسيقى التي على الجهاز الحاسوب الخاص لك مثلاً عن طريقة اي راديو و على اي قناة تريد ايضاً 

للمزيد حول هذا المقال يمكنكم زيارة الرابط هنا 

و اتمنى منكم الدعم بالتصويت لي في التحدي الذي اشترك فيه على نفس الموقع عن نفس الموضوع " Mohannad Rawashdeh " 

للتصويت يرجى زيارة هذا الرابط "قد يتطلب منك التوصيت وجود حساب لك على الموقع , فتح الحساب مجاني





الأربعاء، 12 يونيو 2013

محركات السيرفو Servo motor الجزء الاول

محركات السيرفو  Servo motor


 الجزء الأول 


موضوع محركات السيرفو من المواضيع المتكررة التي طالما يسأل عنها المهتمين بعلوم الالكترونيات و الروبوتات , و لذلك احببت عرض سلسلة محركات السيرفو و كيفية التحكم بها ضمن بيئة أردوينو البرمجية Arduino IDE .

في البداية ما هو محرك السيرفو ؟

محرك السيرفو هو عبارة عن محرك يأتي مع علبة تروس Gear و ناقل حركة Shaft يعطي الحركة عزماً أكبر و دقة كبيرة , و يستطيع هذا المحرك الألتفاف 180درجة و في بعض الأنواع 360 درجة .


سأتكلم في الجزء الأول عن طريقة التحكم في المحرك ذو ال180 درجة .

طريقة التحكم :

يتكون محرك السيرفو داخلياً من دارة تحكم "تكون في الغالب مايكروكنترولر " , و عندما نعطي المحرك نبضات Pulses بثابت زمني معين يدور المحرك للزاوية حسب هذا الثابت الزمني .

في كل نوع يختلف الثابت الزمني من محرك إلى الآخر حسب جهة التصنيع و النشرة الفنية التي تأتي مع محرك السيرفو .



في بيئة أردوينو البرمجية هناك مكتبة تسمى Servo Library مثبتة في البرنامج , هذه المكتبة تعطينا الإمكانية للتحكم في أغلب محركات السيرفو ذو ال180درجة , و مع نهاية هذه التدوينة ستكون لديك القدرة على استخدام اوامر هذه المكتبة عن طريق الأمثلة العملية .



ما ستحتاجه لتنفيذ هذه التجربة :




1)بطاقة أردوينو.

2)محرك سيرفو .
3)اسلاك توصيل.
4)مصدر تغذية خارجي" Power supply,battery "

طريقة التوصيل :



تذكر إذا كان محرك السيرفو الذي تملكه كبير أو يحتاج لتيار عالي , يجب توصيله مع مصدر جهد خارجي كالبطارية "و هو أفضل و أكثر أماناً 





لمحرك السيرفو الذي نستخدمه 3 اسلاك و هي :

1) مدخل تغذية Vcc "و يكون بين 4.8 - 6 فولت"
2) مدخل الأرضي Gnd
3) مدخل التحكم Data و الذي نرسل الأوامر عبره لمحرك السيرفو .


بعد هذا سنبدأ بالبرمجة :


هذا البرنامج البسيط يقوم بتدوير المحرك بمقدار 9 درجات كل مرة بثابت زمني 200ملي ثانية مع و عكس عقارب الساعة 





لنتذكر أمراً مهماً جداً هو أن السيرفو يحتاج لنبضات دقيقة للتحكم به , و ليست كل مداخل المتحكم مؤهلة للتعامل مع محرك السيرفو .
يمكنك استخدام أي مدخل من المداخل التناظرية Analoge (A0-A5)  و استخدام المداخل الرقمية التي تدعم التعديل النبضي PWM و هي (D3,D5,D6,D9,D10,D11) " في بطاقات الأردوينو التي تستخدم المتحكم ATMEGA328 مثل الUNO  "

حتى تبدأ استخدام أي مكتبة يجب عليك وضع هذا الكود

#include<lib.h>


بالنسبة لمكتبة السيرفو نحمّل المكتبة عن طريق الكود

#include <Servo.h>

الآن نستطيع التعامل مع اوامر هذه المكتبة .
ثم يجب أن ننشئ اسماً لمحرك السيرفو لنتعامل معاه في البرنامج , يكتب الأمر على الصورة 

Servo Name;

Name: هو اي اسم تختاره للتعامل مع محرك السيرفو

لكي نُعرّف المدخل pin الذي اوصلنا محرك السيرفو معاه , نكتب الكود :

Name.attach(Pin Number);


Name: هو اسم محرك السيرفو الذي وضعناه في بداية البرنامج

Pin number: رقم المدخل الموصول معه محرك السيرفو 


لكي نرسل أمر للمحرك بالدوران , هذا الأمر بسيط و يكون بالشكل التالي :

Name.write(val)

Name: هو اسم محرك السيرفو الذي وضعناه في بداية البرنامج

val : قيمة صحيحة محصورة بين 0 – 180

لنتذكر أمراً مهماً جداً هو أن السيرفو يحتاج لنبضات دقيقة للتحكم به , و ليست كل مداخل المتحكم مؤهلة للتعامل مع محرك السيرفو .

يمكنك استخدام أي مدخل من المداخل التناظرية Analoge (A0-A5) و استخدام المداخل الرقمية التي تدعم التعديل النبضي PWM و هي (D3,D5,D6,D9,D10,D11) " في بطاقات الأردوينو التي تستخدم المتحكم ATMEGA328 مثل الUNO " 


في الجزء الثاني سنتحدث فيه عن محركات السيرفو ذات الدوران الكامل 360 درجة , الى اللقاء 

الأحد، 9 يونيو 2013

البلوتوث Bluetooth و ربطه بالأردوينو

البلوتوث Bluetooth

في كثير من التطبيقات الحياتية المختلفة , نهتم في موضوع التحكم بالأجهزة عن بُعد لاسلكياً Wirless  , كالتحكم بالبيوت الذكية Smart Home و الروبوتات Robot و غيرها الكثير .


تتعد طرق التحكم عن بعد , فهناك التحكم بواسطة الأشعة تحت الحمراء IR  او موجات الراديو RF أو عن طريق الايثرنت Ethernet أو GSM , xbee و غيرها .

سأتناول بالتفصيل كل نوع على حدا , و سأبدأ بطريقة تندرج تحت بند RF ألا و هي البلوتوث Bluetooth .

 في البداية ما هو البلوتوث Bluetooth ؟ 




هي تقنية اتصالات  في نطاق الموجات الراديو  القصيرة صممت لنقل البيانات لمسافات قصيرة من المتر الواحد إلى المائة متر وبأستهلاك كميات ضئيلة من الطاقة وتستخدم هذه التقنية بشكل كبير في نقل البيانات بين الأجهزة المحمولة وفى الملحقات الطرفية للحاسب

ما سنقوم به اليوم هو ربط الأردوينو بالبلوتوث و جعل الأردوينو ينقل البيانات من و إلى الحاسوب  .

ماذا سنحتاج في هذه التجربة ؟ 

المعدات :

سنحتاج لتنفيذ هذه التجربة إلى :
1) بطاقة اردوينو 
2)قطعة بلوتوث Bluetooth module HC-05 
3)مصدر تغذية خارجي "بطارية 9فولت "
4) بلوتوث usb "اختياري في الأجهزة التي لا تمتلك بلوتوث "
5) اسلاك توصيل Solderless jumper
6) BreadBoard

البرمجيات :

ستحتاج لتنفيذ هذه التجربة لبرمجية الأردوينو الأصدار 1.0.1 او أعلى .

برمجية  Tera Term أو Putty  


في البداية طريقة التوصيل :

هذا المخطط ادناه يوضح طريقة التوصيل .

يمكن ان تكون التغذية اما 3.3 فولت أو 5 فولت حسب الموديل المستخدم 

سنقوم في البداية بتعريف جهاز البلوتوث HC-05 المربوط مع الأردوينو مع جهاز الحاسوب .



اسم الجهاز هو HC-05 و الpairing code هو 1234 

بعد ان تتم عملية الربط Pairing بنجاح , يأتي دور البرنامج tera term 

قم بفتح برنامج Tera Term و حدد خيار Serial  الموجود اسفل الشاشة .

يجب عليك معرفة الcom port  الخاص بالبلوتوث في جهاز الحاسوب , و يمكن معرفته عبر الضغط على اجهزة البلوتوث في لوحة التحكم و فتح اعدادات البلوتوث 



بعد ان تحدد رقم الCom port  في لوحة Tera term الرئيسة اضغط OK ستلاحظ أن الLED  الموجود على قطعة البلوتوث توقف عن الترميش المستمر السريع fast blink و اصبح يضيء بشكل ابطئ , و ستظهر لك شاشة البرنامج و يمكنك رؤية البيانات المرسلة و المستقبلة ظاهرة عليها .

سيظهر تطبيق البرنامج على شاشة المخرجات كما في الشكل :

  



كما يمكن ربط البلوتوث بجهاز يعمل على نظام الأندرويد بسهولة , قم بتحميل برنامج Arduino bluetooth  و عرف اسم الجهاز HC 05 و من ثم قم بعملية الربط .

الفيديو التالي يوضح الفكرة .




 
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.