- تدفق المشروع:
- متطلبات المشروع
- مخطط الرسم البياني:
- تثبيت التبعيات لـ Raspberry Pi Oscilloscope:
- كود Python لـ Raspberry Pi Oscilloscope:
- راسبري باي راسم الذبذبات أثناء العمل:
مرحبا شباب ، مرحبا بكم في منشور اليوم. من أكثر الأشياء الرائعة في كونك صانعًا هو معرفة كيفية تطوير أدوات مؤقتة ، فلن تتعثر أبدًا في العمل في أي مشروع عندما يكون لديك هذا النوع من التنوع. لذا ، سأشارك اليوم كيفية إنشاء نسخة مؤقتة تعتمد على Raspberry Pi لواحدة من أهم الأدوات في الهندسة الكهربائية / الإلكترونية ؛ راسم الذبذبات.
راسم الذبذبات هو أداة اختبار إلكترونية تسمح بتصور ومراقبة الفولتية المتغيرة للإشارة ، عادةً كمخطط ثنائي الأبعاد مع إشارة واحدة أو أكثر مع مرور الوقت. سيسعى مشروع اليوم إلى تكرار إمكانات تصور الإشارة في مرسمة الذبذبات باستخدام Raspberry Pi ووحدة المحول التناظري إلى الرقمي.
تدفق المشروع:
سيتطلب تكرار تصور إشارة الذبذبات باستخدام Raspberry Pi الخطوات التالية ؛
1. قم بإجراء التحويل الرقمي إلى التناظري لإشارة الإدخال
2. تحضير البيانات الناتجة عن التمثيل
3. ارسم البيانات على رسم بياني للوقت الحي
مخطط كتلة مبسط لهذا المشروع سيبدو مثل الرسم البياني أدناه.
متطلبات المشروع
يمكن تصنيف متطلبات هذا المشروع إلى قسمين:
- متطلبات الأجهزة
- متطلبات البرنامج
متطلبات الأجهزة
لبناء هذا المشروع ، المكونات / الأجزاء التالية مطلوبة ؛
- Raspberry Pi 2 (أو أي طراز آخر)
- بطاقة SD 8 أو 16 جيجابايت
- كابل LAN / Ethernet
- مزود الطاقة أو كابل USB
- ADS1115 ADC
- LDR (اختياري كما هو معناه للاختبار)
- 10 كيلو أو 1 كيلو المقاوم
- أسلاك توصيل
- اللوح
- المراقبة أو أي طريقة أخرى لرؤية سطح مكتب باي (بما في ذلك VNC)
متطلبات البرنامج
متطلبات البرنامج لهذا المشروع هي في الأساس وحدات بيثون ( matplotlib و drawnow ) التي سيتم استخدامها لتصور البيانات ووحدة Adafruit للتفاعل مع شريحة ADS1115 ADC. سأوضح كيفية تثبيت هذه الوحدات على Raspberry Pi أثناء المضي قدمًا.
بينما سيعمل هذا البرنامج التعليمي بغض النظر عن نظام التشغيل raspberry pi المستخدم ، سأستخدم Raspberry Pi stretch OS وسأفترض أنك على دراية بإعداد Raspberry Pi مع نظام التشغيل Raspbian stretch OS ، وأنت تعرف كيفية استخدام SSH في التوت pi باستخدام برنامج طرفي مثل المعجون. إذا كانت لديك مشاكل مع أي من هذا ، فهناك الكثير من دروس Raspberry Pi التعليمية على هذا الموقع والتي يمكن أن تساعدك.
مع وجود جميع مكونات الأجهزة في مكانها الصحيح ، فلنقم بإنشاء المخططات وربط المكونات معًا.
مخطط الرسم البياني:
لتحويل إشارات الإدخال التناظرية إلى إشارات رقمية يمكن تصورها باستخدام Raspberry Pi ، سنستخدم شريحة ADS1115 ADC. تصبح هذه الشريحة مهمة لأن Raspberry Pi ، على عكس Arduino ومعظم وحدات التحكم الدقيقة ، لا يحتوي على محول تناظري رقمي (ADC) على اللوحة. بينما كان بإمكاننا استخدام أي شريحة ADC متوافقة مع raspberry pi ، إلا أنني أفضل هذه الشريحة نظرًا لدقتها العالية (16 بت) وورقة البيانات الموثقة جيدًا وتعليمات الاستخدام من Adafruit. يمكنك أيضًا التحقق من البرنامج التعليمي Raspberry Pi ADC الخاص بنا لمعرفة المزيد حول هذا الموضوع.
يعد ADC جهازًا قائمًا على I2C ويجب توصيله بـ Raspberry Pi كما هو موضح في المخططات أدناه.
من أجل الوضوح ، يتم أيضًا وصف اتصال الدبوس بين المكونين أدناه.
ADS1115 واتصالات Raspberry Pi:
VDD - 3.3 فولت
GND - GND
SDA - SDA
SCL - SCL
مع الانتهاء من جميع الاتصالات ، قم بتشغيل pi الخاص بك وتابع تثبيت التبعيات المذكورة أدناه.
تثبيت التبعيات لـ Raspberry Pi Oscilloscope:
قبل أن نبدأ في كتابة نص Python لسحب البيانات من ADC ورسمها على رسم بياني مباشر ، نحتاج إلى تمكين واجهة اتصال I2C الخاصة بـ raspberry pi وتثبيت متطلبات البرنامج التي تم ذكرها سابقًا. سيتم القيام بذلك في الخطوات التالية لذلك من السهل اتباعها:
الخطوة 1: تفعيل واجهة Raspberry Pi I2C
لتمكين I2C ، من المحطة ، قم بتشغيل ؛
sudo raspi-config
عند فتح لوحات التكوين ، حدد خيارات الواجهة ، وحدد I2C وانقر فوق تمكين.
الخطوة الثانية: تحديث Raspberry pi
أول شيء أفعله قبل البدء في أي مشروع هو تحديث Pi. من خلال هذا ، أنا متأكد من أن كل شيء على نظام التشغيل محدث ولن أواجه مشكلة في التوافق مع أي برنامج آخر أختار تثبيته على Pi. للقيام بذلك ، قم بتشغيل أدناه أمرين:
sudo apt-get update sudo apt-get Upgrade
الخطوة 3: قم بتثبيت مكتبة Adafruit ADS1115 لـ ADC
بعد إجراء التحديث ، نحن الآن جاهزون لتثبيت التبعيات بدءًا من وحدة Adafruit python لشريحة ADS115. تأكد من أنك في الدليل الرئيسي Raspberry Pi عن طريق التشغيل ؛
مؤتمر نزع السلاح ~
ثم قم بتثبيت أساسيات البناء عن طريق التشغيل ؛
sudo apt-get install build-basic python-dev python-smbus git
بعد ذلك ، قم باستنساخ مجلد Adafruit للمكتبة عن طريق التشغيل ؛
استنساخ بوابة https://github.com/adafruit/Adafruit_Python_ADS1x15.git
التغيير إلى دليل الملف المستنسخ وتشغيل ملف الإعداد ؛
cd Adafruit_Python_ADS1x1z sudo python setup.py install
بعد التثبيت ، يجب أن تبدو شاشتك مثل الصورة أدناه.
الخطوة 4: اختبر المكتبة واتصال 12 ج.
قبل المضي قدمًا في بقية المشروع ، من المهم اختبار المكتبة والتأكد من أن ADC يمكنه التواصل مع raspberry pi عبر I2C. للقيام بذلك ، سنستخدم مثالًا على البرنامج النصي الذي يأتي مع المكتبة.
أثناء وجودك في المجلد Adafruit_Python_ADS1x15 ، قم بتغيير الدليل إلى دليل الأمثلة عن طريق التشغيل ؛
أمثلة على القرص المضغوط
بعد ذلك ، قم بتشغيل مثال sampletest.py الذي يعرض قيمة القنوات الأربع على ADC في نموذج جدولي.
قم بتشغيل المثال باستخدام:
بيثون أبسط
إذا تم تمكين وحدة I2C وكانت الاتصالات جيدة ، يجب أن ترى البيانات كما هو موضح في الصورة أدناه.
في حالة حدوث خطأ ، تحقق للتأكد من اتصال ADC جيدًا بـ PI وتم تمكين اتصال I2C على Pi.
الخطوة 5: تثبيت Matplotlib
لتصور البيانات ، نحتاج إلى تثبيت وحدة matplotlib التي تُستخدم لرسم جميع أنواع الرسوم البيانية في Python. يمكن القيام بذلك عن طريق الجري ؛
sudo apt-get install python-matplotlib
يجب أن ترى نتيجة مثل الصورة أدناه.
الخطوة 6 : قم بتثبيت وحدة Drawnow python
أخيرًا ، نحتاج إلى تثبيت وحدة drawnow python. تساعدنا هذه الوحدة في توفير تحديثات حية لمخطط البيانات.
سنقوم بتثبيت drawnow عبر مثبت حزمة python ؛ نقطة ، لذلك نحن بحاجة إلى التأكد من تثبيته. يمكن القيام بذلك عن طريق الجري ؛
sudo apt-get install python-pip
يمكننا بعد ذلك استخدام النقطة لتثبيت حزمة drawnow عن طريق تشغيل:
sudo pip تثبيت drawnow
يجب أن تحصل على نتيجة مثل الصورة أدناه بعد تشغيلها.
بعد تثبيت جميع التبعيات ، نحن الآن جاهزون لكتابة الكود.
كود Python لـ Raspberry Pi Oscilloscope:
يعد رمز الثعبان الخاص بـ Pi Oscilloscope بسيطًا إلى حد ما خاصة إذا كنت معتادًا على وحدة python matplotlib . قبل أن أعرض علينا الكود بالكامل ، سأحاول تقسيمه إلى جزء وشرح ما يفعله كل جزء من الكود حتى تتمكن من الحصول على معرفة كافية لتوسيع الكود للقيام بمزيد من الأشياء.
في هذه المرحلة ، من المهم التبديل إلى شاشة أو استخدام عارض VNC ، أي شيء يمكنك من خلاله رؤية سطح مكتب Raspberry Pi الخاص بك ، حيث لن يظهر الرسم البياني الذي يتم رسمه على الجهاز.
باستخدام الشاشة كواجهة ، افتح ملف بيثون جديد. يمكنك تسميته بأي اسم تريده ، لكنني سأطلق عليه نطاق.
sudo نانو نطاق
مع إنشاء الملف ، فإن أول شيء نقوم به هو استيراد الوحدات التي سنستخدمها ؛
استيراد وقت الاستيراد matplotlib.pyplot كما PLT من استيراد drawnow * استيراد Adafruit_ADS1x15
بعد ذلك ، نقوم بإنشاء مثيل لمكتبة ADS1x15 تحدد ADS1115 ADC
adc = Adafruit_ADS1x15.ADS1115 ()
بعد ذلك ، حددنا مكاسب ADC. هناك نطاقات مختلفة للكسب ويجب اختيارها بناءً على الجهد الذي تتوقعه عند إدخال ADC. في هذا البرنامج التعليمي ، نحن نقدر 0 - 4.09 فولت لذا سنستخدم مكسبًا قدره 1. لمزيد من المعلومات حول الكسب ، يمكنك التحقق من ورقة بيانات ADS1015 / ADS1115.
كسب = 1
بعد ذلك ، نحتاج إلى إنشاء متغيرات الصفيف التي سيتم استخدامها لتخزين البيانات المراد رسمها ومتغيرات أخرى لتكون بمثابة عدد.
Val = cnt = 0
بعد ذلك ، نتعرف على نوايانا في جعل الحبكة تفاعلية معروفة لتمكيننا من رسم البيانات مباشرة.
plt.ion ()
بعد ذلك ، نبدأ تحويل ADC المستمر مع تحديد قناة ADC ، وفي هذه الحالة ، القناة 0 ونحدد أيضًا الكسب.
وتجدر الإشارة إلى أنه يمكن قراءة جميع قنوات ADC الأربعة على ADS1115 في نفس الوقت ، ولكن قناة واحدة كافية لهذا العرض التوضيحي.
adc.start_adc (0 ، كسب = كسب)
بعد ذلك نقوم بإنشاء دالة def makeFig ، لإنشاء وتعيين سمات الرسم البياني الذي سيحمل مخططنا المباشر. نقوم أولاً بتعيين حدود المحور y باستخدام ylim ، وبعد ذلك نقوم بإدخال عنوان المخطط ، واسم التسمية قبل تحديد البيانات التي سيتم رسمها ونمط الرسم واللون باستخدام plt.plot (). يمكننا أيضًا تحديد القناة (كما تم ذكر القناة 0) حتى نتمكن من تحديد كل إشارة عند استخدام القنوات الأربع لـ ADC. يستخدم plt.legend لتحديد المكان الذي نريد فيه عرض المعلومات حول تلك الإشارة (مثل القناة 0) على الشكل.
plt.ylim (-5000،5000) plt.title ('Osciloscope') plt.grid (True) plt.ylabel ('ADC outputs ') plt.plot (val، 'ro-'، label = 'lux') plt.legend (loc = 'أسفل اليمين')
بعد ذلك نكتب حلقة while التي سيتم استخدامها لقراءة البيانات باستمرار من ADC وتحديث المؤامرة وفقًا لذلك.
أول شيء نقوم به هو قراءة قيمة تحويل ADC
القيمة = adc.get_last_result ()
بعد ذلك نقوم بطباعة القيمة على الجهاز فقط لإعطائنا طريقة أخرى لتأكيد البيانات المرسومة. ننتظر بضع ثوان بعد الطباعة ثم نلحق البيانات بالقائمة (val) التي تم إنشاؤها لتخزين البيانات لهذه القناة.
print ('Channel 0: {0}'. format (value)) time.sleep (0.5) val.append (int (value))
ثم نسمي drawnow لتحديث الحبكة.
drawnow (makeFig)
للتأكد من أن أحدث البيانات هي المتوفرة على قطعة الأرض ، نقوم بحذف البيانات في الفهرس 0 بعد كل 50 حسابًا للبيانات.
cnt = cnt + 1 إذا (cnt> 50): val.pop (0)
هذا كل شئ!
يتم تقديم كود Python الكامل في نهاية هذا البرنامج التعليمي.
راسبري باي راسم الذبذبات أثناء العمل:
انسخ كود python الكامل والصقه في ملف python الذي أنشأناه سابقًا ، وتذكر أننا سنحتاج إلى شاشة لعرض المؤامرة ، لذا يجب أن يتم كل هذا إما بواسطة VNC أو باستخدام جهاز عرض أو شاشة متصلة.
احفظ الكود وتشغيله باستخدام ؛
نطاق sudo python.py
إذا كنت تستخدم اسمًا مختلفًا غير range.py ، فلا تنس تغييره ليتطابق.
بعد بضع دقائق ، من المفترض أن ترى بيانات ADC تتم طباعتها على الجهاز. من حين لآخر ، قد تتلقى تحذيرًا من matplotlib (كما هو موضح في الصورة أدناه) والذي يجب قمعه ولكنه لا يؤثر على البيانات التي يتم عرضها أو المؤامرة بأي حال. لمنع التحذير مع ذلك ، يمكن إضافة سطور التعليمات البرمجية التالية بعد خطوط الاستيراد في التعليمات البرمجية الخاصة بنا
استيراد تحذيرات الاستيراد matplotlib.cbook warnings.filterwarnings (“ignore”، category = matplotlib.cbook.mplDeprecation)
هذا كل شيء في هذا البرنامج التعليمي ، لاختبار راسم الذبذبات الخاص بك بالكامل ، يمكنك توصيل جهاز تناظري مثل مقياس الجهد بقناة على ADC وسترى تغير البيانات مع كل دورة من مقياس الجهد. أو يمكنك إدخال موجة جيبية أو موجة مربعة لاختبار الإخراج.
شكرًا على القراءة ، إذا كان لديك أي سؤال (أسئلة) أو أي شيء تريد مني إضافته ، فما عليك سوى ترك تعليق.
حتى المرة القادمة ، استمر في العمل!