جدول المحتويات:

التحكم الذكي في Raspberry Pi Fan باستخدام Python & Thingspeak: 7 خطوات
التحكم الذكي في Raspberry Pi Fan باستخدام Python & Thingspeak: 7 خطوات

فيديو: التحكم الذكي في Raspberry Pi Fan باستخدام Python & Thingspeak: 7 خطوات

فيديو: التحكم الذكي في Raspberry Pi Fan باستخدام Python & Thingspeak: 7 خطوات
فيديو: How to Remote control your RPI using RaspController 2024, شهر نوفمبر
Anonim
التحكم الذكي في Raspberry Pi Fan باستخدام Python & Thingspeak
التحكم الذكي في Raspberry Pi Fan باستخدام Python & Thingspeak

لمحة موجزة

بشكل افتراضي ، يتم توصيل المروحة مباشرة بـ GPIO - وهذا يعني تشغيلها المستمر. على الرغم من التشغيل الهادئ نسبيًا للمروحة ، فإن تشغيلها المستمر ليس استخدامًا فعالًا لنظام التبريد النشط. في الوقت نفسه ، قد يكون التشغيل المستمر للمروحة أمرًا مزعجًا. أيضًا ، إذا تم إيقاف تشغيل Raspberry Pi ، فستظل المروحة تعمل إذا تم توصيل الطاقة.

ستوضح هذه المقالة كيفية تحويل نظام التبريد الحالي إلى نظام ذكي ، باستخدام معالجات بسيطة وغير معقدة ، ولن يتم تشغيله إلا عندما يحتاجه المعالج حقًا. سيتم تشغيل المروحة فقط في حالة الاستخدام الكثيف ، وبالتالي تقليل استهلاك طاقة المروحة والضوضاء. كما تعمل على إطالة عمر المروحة بإيقاف تشغيلها عند عدم الحاجة إليها.

ماذا ستتعلم

كيفية تنفيذ نص Python للتحكم في المروحة بناءً على درجة الحرارة الحالية لوحدة المعالجة المركزية Raspberry باستخدام التحكم في التشغيل مع التباطؤ في درجة الحرارة. كيفية نقل البيانات من RaspberryPi الخاص بك إلى Things Speak Cloud.

اللوازم

المكونات التي ستكون مطلوبة لهذا المشروع هي كما يلي

  • راسبيري باي 4 كمبيوتر موديل بي 4 جيجا
  • الترانزستور NPN S8050330 أوم المقاوم
  • غلاف من الألومنيوم المعدني من ارمور بمراوح مزدوجة لـ Raspberry Pi
  • كابلات توصيل
  • اللوح

الخطوة 1: بناء الدائرة

بناء الدائرة
بناء الدائرة
بناء الدائرة
بناء الدائرة

الدائرة بسيطة للغاية. يتم قطع الطاقة عن المروحة باستخدام ترانزستور NPN. في هذا التكوين ، يعمل الترانزستور كمفتاح منخفض الجانب. المقاوم مطلوب فقط للحد من التيار من خلال GPIO. يبلغ الحد الأقصى للإنتاج الحالي لـ GPIO الخاص بـ Raspberry Pi 16 مللي أمبير. لقد استخدمت 330 أوم وهو ما يعطينا تيار أساسي يبلغ حوالي (5-0.7) / 330 = 13 مللي أمبير. لقد اخترت ترانزستور NPN S8050 ، لذا لا يمثل تبديل حمولة 400 مللي أمبير من كلا المراوح مشكلة.

الخطوة 2: تسجيل درجة حرارة وحدة المعالجة المركزية باستخدام ThingSpeak

تسجيل درجة حرارة وحدة المعالجة المركزية مع ThingSpeak
تسجيل درجة حرارة وحدة المعالجة المركزية مع ThingSpeak

ThingSpeak هو عبارة عن منصة للمشاريع القائمة على مفهوم إنترنت الأشياء. يتيح لك هذا النظام الأساسي إنشاء تطبيقات بناءً على البيانات التي تم جمعها من أجهزة الاستشعار. تشمل الميزات الرئيسية لـ ThingSpeak ما يلي: جمع البيانات في الوقت الفعلي ومعالجة البيانات والتصور. لا تسمح لك ThingSpeak API بإرسال البيانات وتخزينها والوصول إليها فحسب ، بل توفر أيضًا طرقًا إحصائية متنوعة لمعالجتها.

يمكن لـ ThingSpeak دمج الأجهزة والخدمات الشائعة مثل:

  • اردوينو
  • توت العليق بي
  • oBridge / RealTime.io
  • عفريت كهربائي
  • تطبيقات الجوال والويب
  • الشبكات الاجتماعية
  • تحليل البيانات في MATLAB

قبل أن نبدأ ، أنت بحاجة إلى حساب في ThingSpeak.

  1. انتقل إلى الرابط التالي وقم بالتسجيل في ThingSpeak.
  2. بعد تنشيط حسابك ، قم بتسجيل الدخول.
  3. انتقل إلى القنوات -> قنواتي
  4. انقر على زر قناة جديدة.
  5. أدخل الاسم والوصف وحقول البيانات التي تريد تحميلها
  6. انقر فوق زر حفظ القناة لحفظ جميع الإعدادات الخاصة بك.

نحتاج إلى مفتاح API ، والذي سنضيفه لاحقًا إلى كود Python من أجل تحميل درجة حرارة وحدة المعالجة المركزية الخاصة بنا إلى سحابة Thingspeak.

انقر فوق علامة التبويب API Keys للحصول على Write API Key

بمجرد حصولك على مفتاح Write API ، نكون جاهزين تقريبًا لتحميل بياناتنا.

الخطوة 3: الحصول على درجة حرارة وحدة المعالجة المركزية من Raspberry Pi باستخدام Python

يعتمد البرنامج النصي على استرداد درجة حرارة المعالج ، والتي تحدث كل ثانية. يمكن الحصول عليها من المحطة الطرفية عن طريق تشغيل الأمر vcgencmd مع المعلمة Meas_temp.

قياس vcgencmd

تم استخدام مكتبة Subprocess.check_output () لتنفيذ الأمر ثم استخدام التعبير العادي لاستخراج القيمة الفعلية من السلسلة التي تم إرجاعها.

من check_output استيراد عملية فرعية

من إعادة الاستيراد findalldef get_temp (): temp = check_output (["vcgencmd"، "Meas_temp"]). فك الشفرة () temp = float (findall ('\ d + \. / d +'، temp) [0]) العودة (temp)) طباعة (get_temp ())

بعد جلب قيمة درجة الحرارة ، يجب إرسال البيانات إلى سحابة ThingSpeak. استخدم Write API Key لتغيير متغير myApi في كود Python أدناه.

من طلب استيراد urllib

من إعادة الاستيراد ، تجد الكل من وقت استيراد السكون من استيراد العملية الفرعية check_output myAPI = '################' baseURL = 'https://api.thingspeak.com/update؟api_key=٪ s '٪ myAPIdef get_temp (): temp = check_output (["vcgencmd"، "Meas_temp"]). فك التشفير () temp = float (findall (' / d + \. / d + '، temp) [0]) رجوع (temp)) جرب: while True: temp = get_temp () conn = request.urlopen (baseURL + '& field1 =٪ s'٪ (temp)) print (str (temp)) conn.close () sleep (1) باستثناء KeyboardInterrupt: print ("خروج مع الضغط على Ctrl + C")

الخطوة 4: التحكم في المروحة حسب درجة الحرارة

يقوم نص Python الموضح أدناه بتنفيذ المنطق الذي يقوم بتشغيل المروحة عندما ترتفع درجة الحرارة فوق tempOn وإيقاف تشغيلها فقط عندما تنخفض درجة الحرارة إلى ما دون العتبة. بهذه الطريقة ، لن يتم تشغيل وإيقاف المروحة بسرعة.

استيراد RPi. GPIO كـ GPIO

استيراد النظام من إعادة الاستيراد ، البحث عن كل شيء من وقت استيراد السكون من استيراد العملية الفرعية check_output def get_temp (): temp = check_output (["vcgencmd"، "Meas_temp"]). فك التشفير () temp = float (findall ('\ d + \. / d + '، temp) [0]) العودة (temp) حاول: GPIO.setwarnings (False) tempOn = 50 threshold = 10 controlPin = 14 pinState = False GPIO.setmode (GPIO. BCM) GPIO.setup (controlPin ، GPIO. OUT ، الأولي = 0) بينما صحيح: temp = get_temp () if temp> tempOn وليس pinState أو temp <tempOn - العتبة و pinState: pinState = not pinState GPIO.output (controlPin ، pinState) print (str (temp) + "" + str (pinState)) سكون (1) باستثناء KeyboardInterrupt: print ("خروج الضغط على Ctrl + C") باستثناء: print ("Other Exception") print ("--- بدء بيانات الاستثناء:") traceback.print_exc (limit = 2 ، file = sys.stdout) print ("--- إنهاء بيانات الاستثناء:") أخيرًا: طباعة ("CleanUp") GPIO.cleanup () print ("نهاية البرنامج")

الخطوة 5: كود Python النهائي

يمكن العثور على كود python الرئيسي في حساب GitHub الخاص بي في الرابط التالي. تذكر أن تضع مفتاح API الخاص بك.

  1. قم بتسجيل الدخول إلى لوحة Raspberry PI الخاصة بك
  2. قم بتشغيل الأمر التالي على المحطة

python3 cpu.py

الخطوة 6: مراقبة البيانات عبر Thingspeak Cloud

مراقبة البيانات عبر Thingspeak Cloud
مراقبة البيانات عبر Thingspeak Cloud

بعد فترة ، افتح قناتك على ThingSpeak وسترى تحميل درجة الحرارة في سحابة Thingspeak في الوقت الفعلي.

الخطوة 7: قم بتشغيل Python Script عند بدء التشغيل

للقيام بذلك ، في نهاية الملف /etc/rc.local:

sudo nano /etc/rc.local

تحتاج إلى وضع أمر بدء البرنامج النصي أمام مخرج السطر 0:

sudo python / home/pi/cpu.py &

يعد وجود الرمز & في نهاية الأمر إلزاميًا ، لأنه علامة لبدء العملية في الخلفية. بعد إعادة التشغيل ، سيتم تشغيل البرنامج النصي تلقائيًا وسيتم تشغيل المروحة عند استيفاء الشروط المحددة.

موصى به: