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

منتقي الألوان: 10 خطوات
منتقي الألوان: 10 خطوات

فيديو: منتقي الألوان: 10 خطوات

فيديو: منتقي الألوان: 10 خطوات
فيديو: دورة الفوتوشوب | 15 الألوان في البرنامج -Colors 2024, يوليو
Anonim
أداة انتقاء اللون
أداة انتقاء اللون

الهدف من هذا المشروع هو قياس الألوان وترجمتها إلى أنظمة ألوان أخرى. باستخدام قيم RGB التي قدمها المستشعر فقط ، يمكنك الترجمة إلى HSL و CYMK و HEX وأيضًا أقرب رمز RAL (المعيار المستخدم للطلاء). يتطلب هذا المشروع معرفة أساسية بلغة Python و MySQL و Linux و Javascript.

إذا كنت معتادًا أيضًا على Flask framework و SocketIO ، فيجب أن يكون رمز هذا المشروع سهل الفهم بالنسبة لك.

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

هذا المشروع ليس مكلفًا للغاية ، وتقدر تكلفته بـ _ يورو ، ولا يشمل الشحن.

اللوازم

يمكننا تقسيم هذا القسم إلى جزأين:

  • المعدات
  • برمجة

المعدات

نحن نستخدم المكونات التالية

  • HC04: مستشعر المسافة ، كم يبعدنا عن الجسم
  • شاشة LCD 2x16
  • وحدة LCD I2C (HW061)
  • وحدة مستشعر اللون TCS34725 (Adafruit)
  • الصمام الأبيض
  • Raspberry Pi 3 (يجب أن يعمل أي Raspberry Pi)
  • 5x 1 كيلو أوم المقاوم
  • 1x 220 أو 330 أوم المقاوم
  • بطاقة SD 16 جيجابايت (14.4 جيجابايت)

برمجة

  • Python IDE ، مثل Visual Code أو Pycharm (تُستخدم Pycharm هنا)
  • طاولة عمل MySQL
  • المعجون (تحميل المعجون)
  • روفوس أو أي كاتب بطاقة SD آخر (تنزيل Rufus)

التسعير

هذا المشروع رخيص جدًا ، إذا كان لديك بالفعل Rapsberry Pi.

  • HC04: يبدأ من حوالي 2.5 يورو (الصين) ويصل إلى 6 يورو لمزيد من المتاجر المحلية.
  • شاشة LCD: حوالي 6-8 يورو.
  • وحدة I2C: بسعر رخيص أقل من 1 يورو (الصين) ، ولكن حتى 4 يورو لمزيد من المتاجر المحلية.
  • TCS34725: حوالي 9-12 يورو. الجزء الأغلى (باستثناء RPi)
  • الصمام الأبيض: تم شراؤه بكميات كبيرة ، 20 LEDS بسعر منخفض يصل إلى 1 يورو
  • Raspberry Pi: اعتمادًا على الإصدار ، حوالي 40 يورو
  • المقاومات: 0.10 يورو لمقاوم واحد
  • بطاقة SD: حوالي 8 يورو

محول الطاقة الخاص بـ Raspberry Pi مستثنى من تكلفة السعر ، لأن هذا المحول شائع جدًا.

نطاق السعر الزائد: حوالي 70 يورو ، إذا قمت بتضمين Raspberry Pi والحالة الخاصة بالمشروع.

لبناء العلبة ، استخدمت خشبًا رقيقًا وخفيف الوزن. أعدت تدوير هذا الخشب من الأثاث. المواد الخاصة بالقضية متروكة لك.

الخطوة 1: الخطوة 1: تثبيت RPi OS ، وتكوين SSH والوصول إلى الإنترنت

الخطوة 1: تثبيت نظام تشغيل RPi ، وتكوين SSH والوصول إلى الإنترنت
الخطوة 1: تثبيت نظام تشغيل RPi ، وتكوين SSH والوصول إلى الإنترنت
الخطوة 1: تثبيت نظام تشغيل RPi ، وتكوين SSH والوصول إلى الإنترنت
الخطوة 1: تثبيت نظام تشغيل RPi ، وتكوين SSH والوصول إلى الإنترنت
الخطوة 1: تثبيت نظام تشغيل RPi ، وتكوين SSH والوصول إلى الإنترنت
الخطوة 1: تثبيت نظام تشغيل RPi ، وتكوين SSH والوصول إلى الإنترنت
الخطوة 1: تثبيت نظام تشغيل RPi ، وتكوين SSH والوصول إلى الإنترنت
الخطوة 1: تثبيت نظام تشغيل RPi ، وتكوين SSH والوصول إلى الإنترنت

الخطوة 1.1: تثبيت الصورة

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

اكتب الصورة على بطاقة SD (الفارغة) (سيتم مسح جميع الملفات الموجودة على البطاقة).

لكتابة كل شيء على بطاقة SD ، سنستخدم أداة تسمى "Rufus". بعد تنزيل الصورة ، افتح Rufus وحدد ملف الصورة. حدد محرك الأقراص الهدف واكتب الصورة على محرك الأقراص. سوف يأخذ هذا بعض الوقت.

> روفوس

الخطوة 1.2: تثبيت SSH

الخطوة التالية هي إنشاء اتصال ببطاقة SD. للقيام بذلك ، نحتاج إلى تمكين SSH.

للقيام بذلك دون استخدام شاشة ، افتح مستكشف الملفات وافتح قسم التمهيد لبطاقة SD. قم بإنشاء ملف فارغ يسمى "ssh" ، بدون امتداد الملف.

أيضًا ، افتح "cmdline.txt"

أضف "169.254.10.1" في نهاية الملف واحفظه.

قم بإلغاء تحميل بطاقة SD وإدخالها في Raspberry Pi.

يمكننا الآن توصيل Raspberry Pi بمصدر طاقة وتشغيله والاتصال باستخدام SSH.

للاتصال باستخدام SSH ، نستخدم برنامج "المعجون". قم بتوصيل RPi والكمبيوتر الشخصي باستخدام كابل ehternet قبل القيام بذلك. افتح Putty وانتقل إلى علامة التبويب SSH ، واملأ عنوان IP هذا: 169.254.10.1. انقر فوق "اتصال" وستكون متصلاً.

> معجون

تسجيل الدخول الافتراضي الذي يستخدمه Raspberry Pi هو "pi" كاسم مستخدم و "raspberry" لكلمة المرور.

الخطوة 1.3: التوصيل اللاسلكي

يتم الآن تشغيل Raspberry Pi الخاص بك.

نريد أيضًا الاتصال بـ RPi باستخدام Wifi ، وبهذه الطريقة لا نحتاج إلى كابل إيثرنت بعد الآن.

قم بتنفيذ السطر التالي:

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

سيؤدي هذا إلى فتح محرر نصوص "nano" بحقوق مرتفعة.

أضف الأسطر التالية في الملف:

الشبكة = {

ssid = "SSID"

psk = "كلمة المرور"

}

استبدل "SSID" بمعرف SSID الخاص بشبكة Wifi الخاصة بك

استبدل "Password" بكلمة المرور الخاصة بك.

ثم قم باستخدام Ctrl + X وحدد خيار "نعم". سيتم الآن حفظ الملف.

الآن نحن بحاجة إلى إعادة تشغيل خدمة الشبكات

قم بتنفيذ الأوامر التالية:

  • "sudo -i"
  • "sudo systemctl إعادة تشغيل الشبكات"

يمكنك اختبار اتصالك بالإنترنت باستخدام الأمر wget.

مثال: "wget google.com"

> الأمر Wget

الخطوة 2: الخطوة 2: تثبيت البرنامج على RPi

بالنسبة لهذا المشروع ، نحتاج إلى تثبيت بعض المكتبات.

  • Mariadb: قاعدة بيانات MySQL (sudo apt-get install mariadb-server)
  • مكتبة Adafruit لمستشعر اللون: قياس الألوان (Pip3 قم بتثبيت adafruit-Circpython-tcs34725)
  • PHPmyAdmin: ('sudo apt install phpmyadmin' ، اختر خادم ويب apache)

قم أيضًا بتثبيت مكتبات النقاط التالية:

  • flask_socketio
  • قارورة
  • flask_cors
  • مجلس
  • بوسيو
  • نتيفاس

الخطوة 3: الخطوة 3: الاتصال بقاعدة بيانات MySQL وإنشاء قاعدة بيانات

الخطوة 3: الاتصال بقاعدة بيانات MySQL وإنشاء قاعدة بيانات
الخطوة 3: الاتصال بقاعدة بيانات MySQL وإنشاء قاعدة بيانات
الخطوة 3: الاتصال بقاعدة بيانات MySQL وإنشاء قاعدة بيانات
الخطوة 3: الاتصال بقاعدة بيانات MySQL وإنشاء قاعدة بيانات
الخطوة 3: الاتصال بقاعدة بيانات MySQL وإنشاء قاعدة بيانات
الخطوة 3: الاتصال بقاعدة بيانات MySQL وإنشاء قاعدة بيانات

الخطوة التالية هي الاتصال بقاعدة بيانات MySQL باستخدام طاولة عمل MySQL.

> IP أ

قم بتنفيذ الأمر ip a كما هو موضح بالصورة أعلاه (اضغط على الرابط)

في معظم الحالات ، سيتم عرض 3 إدخالات. نحتاج إلى إدخال "wlan0". انسخ عنوان IP بجوار "inet" ، أو في هذا المثال "192.168.1.44"

. >> إنشاء اتصال جديد

كما هو موضح في الصورة أعلاه ، قم بإنشاء اتصال جديد بالمعلمات التالية (الصورة أدناه للمعلمات)

> معلمات الاتصال

انقر نقرًا مزدوجًا فوق الموصل الذي تم إنشاؤه حديثًا للاتصال.

إذا ظهرت مطالبة ، فانقر فوق "نعم".

لا تزال هذه قاعدة بيانات فارغة ، لذا دعنا نضيف بعض الجداول.

قم أولاً بإنشاء مخطط ، للقيام بذلك ، انقر بزر الماوس الأيمن على الجانب الأيسر واختر "إنشاء مخطط".

امنح اسمًا للمخطط وقم بالتأكيد.

الآن نحن بحاجة إلى إضافة الجداول. قم بتوسيع المخطط و "انقر بزر الماوس الأيمن" ، "الجداول".

قم بإنشاء المخطط التالي:

> الجدول 1: RALcolors

> الجدول 2: أنواع أجهزة الاستشعار

> الجدول 3: القياسات (في الصورة ، تُستخدم كلمة "metingen" ، الهولندية للقياسات)

> الجدول 4: Website_data || الجدول 4 أسفل

MySQL هو نظام قاعدة بيانات علائقية ، وهذا يعني أنه يمكننا إنشاء علاقات بين الجداول.

العلاقة الأولى التي يتعين علينا إنشاؤها هي بين "نوع المستشعر" و "القياسات".

كما هو موضح في الصورة ، قم بربط المفتاحين.

> تحرير الجدول ومفاتيح الارتباط

لا تنس حفظ التغييرات بالنقر فوق "تطبيق" في الزاوية السفلية.

قم أيضًا بتحرير جدول "website_data" ورابط "MetingID".

لقد انتهينا الآن من إنشاء الجداول وإنشاء العلاقات.

إضافة البيانات:

جدول RALcolors هو جدول ثابت ، حيث لن تتغير القيم أبدًا. يمكننا إضافة هذه القيم

سهل جدا.

> قم بتنزيل ملف Excel

قم بتنزيل ملف Excel أعلاه وحدد جميع البيانات و "نسخ". افعل مثل في الصورة

> عرض الجدول

"انقر بزر الماوس الأيمن" على الجدول واختر "لصق الصفوف". انقر فوق "تطبيق" في الزاوية السفلية لإضافة البيانات.

الآن يتم حفظ جميع RALcolors في قاعدة البيانات.

نحتاج فقط إلى إضافة نوع sensor_type إلى قاعدة البيانات الآن.

> بيانات Sensortype

ملاحظة: وصف المستشعر باللغة الهولندية.

الخطوة 4: الخطوة 4: Filezilla

الخطوة 4: Filezilla
الخطوة 4: Filezilla

للاتصال بسهولة بـ Raspberry Pi ونقل الملفات ، يمكننا استخدام Filezilla.

> تحميل Filezilla

ملف في تفاصيل الاتصال والاتصال. في الجانب الأيمن ، يمكنك الآن نقل الملفات عن طريق سحبها إلى الداخل.

> مصدر جيثب

قم بتنزيل الملفات من مصدر github أعلاه.

الخطوة 5: الخطوة 5: إنشاء موقع الويب

الخطوة الخامسة: إنشاء الموقع
الخطوة الخامسة: إنشاء الموقع
الخطوة الخامسة: إنشاء الموقع
الخطوة الخامسة: إنشاء الموقع

لاستضافة الموقع ، نستخدم PHPmyAdmin و Apache2.

يستخدم خادم الويب الموجود على Raspberry Pi الدليل "/ var / www / html" كجذر.

إذا وضعت ملفاتك هناك ، فسيتم استضافتها على IP الخاص بـ Raspberry Pi. (IP = انظر "ip a")

يمكنك تنزيل الملفات المطلوبة من github repo (الخطوة السابقة)

في "/ var / www / html /" ، الصق جميع الملفات من مجلد "الواجهة الأمامية".

> / var / www / html /

الخطوة 6: الخطوة 6: إنشاء الواجهة الخلفية (القارورة)

تعتمد الواجهة الخلفية لموقع الويب على Flask.

يمكن العثور على جميع الملفات في github repo.

انسخ جميع الملفات إلى أي دليل على Raspberry Pi.

على سبيل المثال '/ home / pi / colorpicker.

لإنشاء دليل ، انتقل إلى دليل الوجهة باستخدام "cd" ، ثم قم بتنفيذ "mkdir".

هذا كل شئ حتى الان. سيتم شرح الكود في الخطوات التالية.

الخطوة 7: الخطوة 7: الأجهزة

> تحميل المخطط

قم بإنشاء المخطط كما هو موضح في المستند أعلاه.

ملاحظة: أضف أيضًا مؤشر LED أبيض واحد ، بمقاوم واحد (220 أو 330 أوم).

شرح الأجهزة

HC04

يصدر مستشعر HC04 موجات تنعكس ويستقبلها المستشعر مرة أخرى.

من خلال حساب دلتا الوقت بين الانبعاث والاستلام ، يمكننا حساب المسافة.

المسافة = ((Timestamp_recieve - Timestamp_emit) / سرعة الصوت) / 2

نقسم على اثنين لأن الموجة تنعكس ، مما يعني أنها تقطع المسافة مرتين.

شاشة LCD

نستخدم شاشة LCD لإظهار RGB و HEX ، وكذلك IP عند بدء تشغيل البرنامج.

بالنسبة لشاشة LCD هذه ، اشتريت وحدة I2C. نحتاج فقط إلى 4 أسلاك الآن. SDA ، SCL ، GND ، VCC

لاستخدام شاشة LCD هذه ، قمت بكتابة فصل دراسي في لغة Python لتسهيل استخدامه.

TCS34725

يسمح لك هذا المستشعر بقياس الألوان. نستخدم مكتبة لقياس قيمة RGB.

الخطوة 8: الخطوة 8: شرح الكود

الخطوة 8: شرح الكود
الخطوة 8: شرح الكود
الخطوة 8: شرح الكود
الخطوة 8: شرح الكود
الخطوة 8: شرح الكود
الخطوة 8: شرح الكود
الخطوة 8: شرح الكود
الخطوة 8: شرح الكود

الواجهة

الواجهة الأمامية موجودة من ثلاثة أجزاء رئيسية.

أولاً ، ملفات html ، التي تبني هيكل موقعنا على الإنترنت ، ولكنها لا تحتوي على تصميم أو أدنى حد منه.

ثانيًا ، لدينا ملفات css ، أو ملفات النمط ، التي تعمل على تصميم وتصميم موقع الويب الخاص بنا.

كلاهما سهل القراءة والفهم ، ولهذا لن أشرحهما.

أخيرًا لدينا جافا سكريبت ، مع مكتبتين.

المكتبتان المستخدمتان هما SocketIO و URLSearchParams.

يسمح لك SocketIO بإرسال الرسائل من الواجهة الخلفية إلى الواجهة الأمامية ، والعكس صحيح.

يمكن إرسال الرسائل إلى عميل واحد ، ولكن أيضًا إلى عدة عملاء (البث)

> Socket IO Javascript

> Socket IO Python

في الصور أعلاه ، يمكنك رؤية أحد اتصالات Socket التي تم إجراؤها في هذا المشروع.

أمر إرسال الرسائل هو "emit" ، ويتم الاستلام بواسطة "on".

URLSearchParms يسمح لك بالحصول على القيم من سلسلة الاستعلام بسهولة.

مثال على سلسلة الاستعلام: example.com/index.html؟id=1

سيعيدك URLSearchParams: {'id' = '1'}

> مثال URLSearchParams

الخلفية

الواجهة الخلفية مكتوبة بالكامل بلغة بايثون ، مع مجموعة من المكتبات.

أول مكتبة نستوردها هي "Flask". هذه المكتبة ضرورية لإنشاء واجهة برمجة تطبيقات ، للقيام بجميع إجراءات CRUD لقاعدة بيانات MySQL. CRUD لتقف على إنشاء قراءة تحديث حذف.

> قارورة

توضح الصورة أعلاه بعض "مسارات" القارورة. من خلال التصفح إلى مسار ما ، ستقوم تلقائيًا بطريقة "GET" ، وسيتم تنفيذ الكود وستتلقى القيمة من طريقة الإرجاع. هناك أيضًا طرق أخرى ، مثل "POST" و "DELETE". لاختبار هذه الأساليب ، ستحتاج إلى برنامج مثل Postman.

مكتبة الاستيراد التالية هي SocketIO ، والتي شرحتها بالفعل في قسم الواجهة الأمامية.

التالي هو GPIO.

يتيح لك ذلك التحكم في دبابيس GPIO الخاصة بـ Rapsberry Pi.

أهم الأوامر هي:

  • GPIO.setmode (GPIO. BCM) اختر تكوين الدبابيس.
  • GPIO.output (، GPIO. LOW أو GPIO. HIGH) اكتب منخفضًا أو مرتفعًا للدبوس.
  • GPIO.setup (،) حدد PIN كمدخل أو إخراج ، أو سحب أو سحب

المقبل لدينا خيوط.

الأوامر الوحيدة التي نستخدمها هي:

  • الموضوع (الهدف =)
  • .بداية()

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

سيقوم الأمر الأول Thread (الهدف =) بإنشاء فئة Thread ، والتي عند البدء باستخدام 'start ()' ، ستقوم بتشغيل الوظيفة في الكلمة الرئيسية 'target' ، والتي تم تقديمها عند إنشاء الفئة.

بعد ذلك ، لدينا مكتبة مستشعر الألوان ، وهي مستقيمة تمامًا للأمام. لن أشرح هذه المكتبة ، لأن الطرق واضحة للغاية وموضحة في الكود.

الماضي لدينا netifaces. يتيح لنا ذلك استرداد عنوان IP الذي نستخدمه للاتصال اللاسلكي والسلكي.

آخر مرة قمت بعمل بعض الفئات بنفسي لمستشعر المسافة ومصباح LED وشاشة LCD.

لن أشرح كيف تعمل هذه.

الخطوة 9: الخطوة 9: إنشاء حالة

الخطوة 9: إنشاء حالة
الخطوة 9: إنشاء حالة
الخطوة 9: إنشاء حالة
الخطوة 9: إنشاء حالة
الخطوة 9: إنشاء حالة
الخطوة 9: إنشاء حالة

بالنسبة لهذا المشروع ، قمت بإنشاء صندوق خشبي.

الخشب خفيف الوزن ورقيق ولا يكلف الكثير.

كأبعاد استخدمتها:

  • الإرتفاع: 5 سم
  • العرض: 10.5 سم
  • الطول: 12.5 سم

بالنسبة لأجهزة الاستشعار ، تحتاج إلى إضافة فتحتين ووضعهما بجوار بعضهما البعض.

بعد إنشاء العلبة ، قم بتثبيت المستشعرات و LED و LCD.

الخطوة 10: الخطوات النهائية

كل شيء يتم بشكل أساسي.

الآن علينا فقط التأكد من أن الكود الخاص بنا يبدأ ، في اللحظة التي نقوم فيها بتوصيل مصدر الطاقة لدينا.

هناك الكثير من الطرق للقيام بذلك.

> أمثلة

سنستخدم الطريقة الأولى:

نفّذ هذا السطر: 'sudo nano /etc/rc.local'

أضف الأمر الخاص بك لتشغيل الكود: 'sudo python3'

احفظ الملف باستخدام Ctrl-X.

إذا كان لديك مشاكل في التحرير. أعد تنفيذ هذه الخطوة ، ولكن قم أولاً بتنفيذ sudo -i.

موصى به: