فهرست مطالب:

ColorPicker: 10 مرحله
ColorPicker: 10 مرحله

تصویری: ColorPicker: 10 مرحله

تصویری: ColorPicker: 10 مرحله
تصویری: 60-30-10 Color Rule 2024, اکتبر
Anonim
انتخاب کننده رنگ
انتخاب کننده رنگ

هدف این پروژه اندازه گیری رنگ ها و ترجمه آنها به سایر سیستم های رنگی است. فقط با استفاده از مقادیر RGB داده شده توسط سنسور ، می توانید به HSL ، CYMK ، HEX و همچنین نزدیکترین کد RAL (استاندارد مورد استفاده برای رنگ) ترجمه کنید. این پروژه نیاز به دانش اولیه در مورد Python ، MySQL ، Linux و Javascript دارد.

اگر با چارچوب Flask و SocketIO نیز آشنایی دارید ، پس کد این پروژه باید برای شما آسان باشد.

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

این پروژه چندان گران نیست و هزینه _ یورو برآورد می شود ، هزینه حمل و نقل شامل نمی شود.

تدارکات

ما می توانیم این بخش را به دو قسمت تقسیم کنیم:

  • سخت افزار
  • نرم افزار

سخت افزار

ما از اجزای زیر استفاده می کنیم

  • HC04: سنسور فاصله ، فاصله ما از جسم چقدر است
  • صفحه نمایش LCD 2x16
  • ماژول LCD I2C (HW061)
  • ماژول سنسور رنگ TCS34725 (Adafruit)
  • LED سفید
  • Raspberry Pi 3 (هر Raspberry Pi باید کار کند)
  • مقاومت 5x 1k اهم
  • مقاومت 1x 220 یا 330 اهم
  • کارت SD 16 گیگابایت (14.4 گیگابایت)

نرم افزار

  • Python IDE ، مانند Visual Code یا Pycharm (Pycharm در اینجا استفاده می شود)
  • میز کار MySQL
  • بتونه (دانلود بتونه)
  • Rufus یا هر نویسنده کارت SD دیگری (بارگیری Rufus)

قیمت گذاری

اگر قبلاً Rapsberry Pi دارید ، این پروژه بسیار ارزان است.

  • HC04: شروع از حدود 2.5 یورو (چین) و تا 6 یورو برای مغازه های محلی بیشتر.
  • LCD: حدود 6-8 یورو.
  • ماژول I2C: ارزان زیر 1 یورو (چین) ، اما برای مغازه های محلی بیشتر تا 4 یورو.
  • TCS34725: حدود 9-12 یورو. گران ترین قسمت (بدون احتساب RPi)
  • سفید سفید: به صورت عمده خریداری شده ، 20 عدد LEDS با قیمت 1 یورو
  • رزبری پای: بسته به کدام نسخه ، حدود 40 یورو
  • مقاومت ها: 0.10 یورو برای یک مقاومت
  • کارت SD: حدود 8 یورو

آداپتور برق Raspberry Pi در قیمت محاسبه نمی شود ، زیرا این آداپتور بسیار رایج است.

محدوده قیمت کلی: حدود 70 یورو ، اگر رزبری پای و قاب پروژه را در نظر بگیرید.

برای ساخت قاب ، از چوب نازک سبک استفاده کردم. من این چوب را از مبلمان بازیافت کردم. مواد مورد نظر بستگی به شما دارد.

مرحله 1: مرحله 1: نصب سیستم عامل RPi ، پیکربندی SSH و دسترسی به اینترنت

مرحله 1: نصب RPi OS ، پیکربندی SSH و دسترسی به اینترنت
مرحله 1: نصب RPi OS ، پیکربندی SSH و دسترسی به اینترنت
مرحله 1: نصب سیستم عامل RPi ، پیکربندی SSH و دسترسی به اینترنت
مرحله 1: نصب سیستم عامل RPi ، پیکربندی SSH و دسترسی به اینترنت
مرحله 1: نصب سیستم عامل RPi ، پیکربندی SSH و دسترسی به اینترنت
مرحله 1: نصب سیستم عامل RPi ، پیکربندی SSH و دسترسی به اینترنت
مرحله 1: نصب سیستم عامل RPi ، پیکربندی SSH و دسترسی به اینترنت
مرحله 1: نصب سیستم عامل RPi ، پیکربندی SSH و دسترسی به اینترنت

مرحله 1.1: نصب تصویر

تصویر را از سایت رسمی Raspberry Pi بارگیری کنید. مهم نیست که چه تصویری را نصب می کنید. برای این پروژه ، GUI مورد نیاز نیست ، زیرا ما فقط با استفاده از SSH متصل می شویم.

تصویر را روی کارت SD (خالی) بنویسید (همه پرونده های روی کارت پاک می شوند).

برای نوشتن همه چیز روی کارت SD ، از ابزاری به نام "Rufus" استفاده می کنیم. پس از بارگیری تصویر ، Rufus را باز کرده و فایل تصویر را انتخاب کنید. درایو هدف را انتخاب کرده و تصویر را روی درایو بنویسید. ممکن است مدتی طول بکشد.

> روفوس

مرحله 1.2: نصب SSH

مرحله بعدی ایجاد اتصال به کارت SD است. برای انجام این کار ، ما باید SSH را فعال کنیم.

برای انجام این کار بدون استفاده از مانیتور ، فایل اکسپلورر خود را باز کرده و پارتیشن بوت کارت SD را باز کنید. یک فایل خالی به نام "ssh" ، بدون پسوند فایل ایجاد کنید.

همچنین ، "cmdline.txt" را باز کنید

"169.254.10.1" را در انتهای فایل اضافه کنید و آن را ذخیره کنید.

کارت SD را جدا کرده و در رزبری پای وارد کنید.

اکنون می توانیم Raspberry Pi را به منبع تغذیه متصل کرده و با استفاده از SSH راه اندازی و متصل شویم.

برای اتصال با استفاده از SSH ، ما از برنامه "Putty" استفاده می کنیم. قبل از انجام این کار ، RPi و رایانه خود را با استفاده از کابل ehternet وصل کنید. Putty را باز کرده و به برگه SSH بروید و این IP را پر کنید: 169.254.10.1. روی "اتصال" کلیک کنید و متصل می شوید.

> بتونه

ورود پیش فرض مورد استفاده Raspberry Pi 'pi' به عنوان نام کاربری و 'تمشک' برای رمز عبور است.

مرحله 1.3: اتصال بی سیم

رزبری پای شما اکنون روشن است.

ما همچنین می خواهیم با استفاده از Wifi به RPi متصل شویم ، به این ترتیب دیگر نیازی به کابل اترنت نداریم.

خط زیر را اجرا کنید:

'sudo nano /etc/wpa_supplicant/wpa_supplicant.conf'

با این کار ویرایشگر متن "nano" با حقوق بالا باز می شود.

خطوط زیر را در فایل اضافه کنید:

شبکه = {

ssid = "SSID"

psk = "رمز عبور"

}

"SSID" را با SSID شبکه Wifi خود جایگزین کنید

گذرواژه خود را "Password" جایگزین کنید.

سپس Ctrl+X را انجام دهید و گزینه "yes" را انتخاب کنید. اکنون فایل ذخیره می شود.

اکنون باید سرویس شبکه را راه اندازی مجدد کنیم

دستورات زیر را اجرا کنید:

  • 'sudo -i'
  • راه اندازی مجدد شبکه sudo systemctl '

با استفاده از دستور wget می توانید اتصال اینترنت خود را آزمایش کنید.

مثال: 'wget google.com'

> دستور Wget

مرحله 2: مرحله 2: نصب نرم افزار بر روی RPi

برای این پروژه ما نیاز به نصب چند کتابخانه داریم.

  • Mariadb: پایگاه داده MySQL (sudo apt-get install mariadb-server)
  • کتابخانه Adafruit برای سنسور رنگ: اندازه گیری رنگها (pip3 install adafruit-circuitpython-tcs34725)
  • PHPmyAdmin: ('sudo apt install phpmyadmin' ، وب سرور apache را انتخاب کنید)

همچنین کتابخانه های pip زیر را نصب کنید:

  • flask_socketio
  • فلاسک
  • flask_cors
  • تخته
  • اتوبوس
  • شبکه های خالص

مرحله 3: مرحله 3: اتصال به پایگاه داده MySQL ، ایجاد پایگاه داده

مرحله 3: اتصال به پایگاه داده MySQL ، ایجاد پایگاه داده
مرحله 3: اتصال به پایگاه داده MySQL ، ایجاد پایگاه داده
مرحله 3: اتصال به پایگاه داده MySQL ، ایجاد پایگاه داده
مرحله 3: اتصال به پایگاه داده MySQL ، ایجاد پایگاه داده
مرحله 3: اتصال به پایگاه داده MySQL ، ایجاد پایگاه داده
مرحله 3: اتصال به پایگاه داده MySQL ، ایجاد پایگاه داده

مرحله بعدی ، اتصال به پایگاه داده MySQL با استفاده از میز کار MySQL است.

> IP a

دستور 'ip a' را مطابق تصویر بالا اجرا کنید (روی پیوند کلیک کنید)

در بیشتر موارد ، 3 مدخل نمایش داده می شود. ما به ورودی wlan0 نیاز داریم. IP را در کنار "inet" یا در این مثال "192.168.1.44" کپی کنید

. >> ایجاد اتصال جدید

همانطور که در تصویر بالا نشان داده شده است ، یک اتصال جدید با پارامترهای زیر ایجاد کنید (تصویر زیر برای پارامترها)

> پارامترهای اتصال

برای اتصال ، اتصال جدید ایجاد شده را دوبار کلیک کنید.

اگر پیامی نمایش داده شد ، روی "بله" کلیک کنید.

این هنوز یک پایگاه داده خالی است ، بنابراین اجازه دهید چند جدول اضافه کنیم.

ابتدا یک طرحواره ایجاد کنید ، برای انجام این کار ، در سمت چپ "راست کلیک" کرده و "ایجاد طرح" را انتخاب کنید.

نام طرح را تعیین کرده و تأیید کنید.

حالا باید جداول را اضافه کنیم. طرح و "راست کلیک" ، "جداول" را گسترش دهید.

طرحواره های زیر را ایجاد کنید:

> جدول 1: RALcolors

> جدول 2: انواع سنسور

> جدول 3: اندازه گیری ها (در تصویر از 'metingen' ، برای اندازه گیری از هلندی استفاده شده است)

> جدول 4: داده های وب سایت || جدول 4 پایین

MySQL یک سیستم پایگاه داده رابطه ای است ، به این معنی که ما می توانیم بین جداول روابط ایجاد کنیم.

اولین رابطه ای که باید ایجاد کنیم بین "نوع_حسگر" و "اندازه گیری" است.

همانطور که در تصویر نشان داده شده است ، دو کلید را به هم وصل کنید.

> ویرایش جدول و کلیدهای پیوند

فراموش نکنید که تغییرات را با کلیک روی "اعمال" در گوشه پایین ذخیره کنید.

همچنین جدول 'data_data' و پیوند 'MetingID' را ویرایش کنید.

اکنون ما با ایجاد جداول و ایجاد روابط به پایان رسیده ایم.

افزودن داده ها:

جدول RALcolors یک جدول ثابت است که در آن مقادیر هرگز تغییر نمی کنند. ما می توانیم این مقادیر را اضافه کنیم

خیلی راحت

> دانلود فایل اکسل

فایل اکسل بالا را بارگیری کرده و همه داده ها را انتخاب کرده و "کپی" کنید. مثل تصویر عمل کنید

> نمایش جدول

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

اکنون همه RALcolors در پایگاه داده ذخیره می شوند.

ما فقط باید نوع sensor_type را به پایگاه داده اضافه کنیم.

> اطلاعات سنسورتیپ

توجه: توضیحات سنسور به زبان 'هلندی' است

مرحله 4: مرحله 4: Filezilla

مرحله 4: Filezilla
مرحله 4: Filezilla

برای اتصال آسان به Raspberry Pi و انتقال فایل ها ، می توانیم از Filezilla استفاده کنیم.

> Filezilla را بارگیری کنید

جزئیات اتصال را فایل کنید و وصل شوید. در سمت راست اکنون می توانید فایل ها را با کشیدن آنها به داخل منتقل کنید.

> منبع Github

فایلها را از منبع github بالا بارگیری کنید.

مرحله 5: مرحله 5: ایجاد وب سایت

مرحله 5: ایجاد وب سایت
مرحله 5: ایجاد وب سایت
مرحله 5: ایجاد وب سایت
مرحله 5: ایجاد وب سایت

برای میزبانی وب سایت ، از PHPmyAdmin و Apache2 استفاده می کنیم.

سرور وب Raspberry Pi از پوشه '/var/www/html' به عنوان ریشه استفاده می کند.

اگر فایلهای خود را در آنجا قرار دهید ، آنها بر روی IP رزبری پای میزبانی می شوند. (IP = به 'ip a' مراجعه کنید)

می توانید فایلهای مورد نیاز را از repo github من بارگیری کنید (مرحله قبلی)

در '/var/www/html/' ، همه فایلها را از پوشه 'Frontend' بچسبانید.

>/var/www/html/

مرحله 6: مرحله 6: ایجاد Backend (فلاسک)

وب سایت پشتیبان بر اساس Flask است.

همه فایل ها را می توانید در repo github پیدا کنید.

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

به عنوان مثال '/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 ، کلاس پایتون را نوشتم تا استفاده از آن آسان تر شود.

TCS34725

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

مرحله 8: مرحله 8: کد توضیح داده شده است

مرحله 8: کد توضیح داده شده است
مرحله 8: کد توضیح داده شده است
مرحله 8: کد توضیح داده شده است
مرحله 8: کد توضیح داده شده است
مرحله 8: کد توضیح داده شده است
مرحله 8: کد توضیح داده شده است
مرحله 8: کد توضیح داده شده است
مرحله 8: کد توضیح داده شده است

نمای جلو

نمای جلو از سه قسمت اصلی وجود دارد.

ابتدا فایل های html هستند که ساختار وب سایت ما را ایجاد می کنند ، اما دارای طرح بندی یا حداقل نیستند.

دوم اینکه ما فایل های css یا فایل های سبک داریم که وب سایت ما را سبک بندی و طرح بندی می کند.

خواندن و درک این دو بسیار آسان است ، به همین دلیل من آنها را توضیح نمی دهم.

آخرین مورد ما Javascript است ، با دو کتابخانه.

دو کتابخانه مورد استفاده SocketIO و URLSearchParams هستند.

SocketIO به شما امکان می دهد پیامها را از پشتیبان به قسمت جلو ارسال کنید و بالعکس.

پیامها را می توان به یک سرویس گیرنده ، بلکه چندین مشتری (پخش) ارسال کرد

> سوکت IO Javascript

> سوکت IO پایتون

در تصاویر بالا ، یکی از اتصالات Socket ایجاد شده در این پروژه را مشاهده می کنید.

فرمان ارسال پیامها "emit" است ، دریافت توسط "on" انجام می شود.

URLSearchParms به شما امکان می دهد به راحتی مقادیر را از querystring دریافت کنید.

مثال querystring: example.com/index.html؟id=1

URLSearchParams به شما باز می گرداند: {'id' = '1'}

> URLSearchParams مثال

باطن

پس زمینه به طور کامل در پایتون نوشته شده است ، و دارای تعدادی کتابخانه است.

اولین کتابخانه ای که وارد می کنیم "Flask" است. این کتابخانه برای ایجاد یک API ، برای انجام کلیه اقدامات CRUD برای پایگاه داده MySQL مورد نیاز است. CRUD مخفف کلمه Create Read Update Delete است.

> فلاسک

تصویر بالا چند "مسیر" Flask را نشان می دهد. با گشت و گذار در یک مسیر ، شما به طور خودکار یک روش "GET" انجام می دهید ، کد اجرا می شود و مقدار را از روش بازگشت دریافت می کنید. روشهای دیگری مانند "ارسال" و "حذف" نیز وجود دارد. برای آزمایش چنین روش هایی ، به برنامه ای مانند پستچی نیاز دارید.

کتابخانه واردات بعدی SocketIO است که قبلاً در قسمت جلویی توضیح دادم.

مورد بعدی GPIO است.

این به شما امکان می دهد پین های GPIO Rapsberry Pi را کنترل کنید.

مهمترین دستورات عبارتند از:

  • GPIO.setmode (GPIO. BCM) پیکربندی پین ها را انتخاب کنید.
  • GPIO.output (، GPIO. LOW یا GPIO. HIGH) LOW یا HIGH را روی یک پین بنویسید.
  • GPIO.setup (،) یک پین را به عنوان ورودی یا خروجی ، یا کشش یا کشش تعریف کنید

بعد ما Threading داریم.

تنها دستوراتی که استفاده می کنیم عبارتند از:

  • موضوع (هدف =)
  • . شروع ()

با استفاده از نخ ها ، می توانیم چندین نمونه کد را به طور همزمان اجرا کنیم. به این ترتیب ما می توانیم فاصله را اندازه گیری کرده و در عین حال به پیامهای سوکت io ورودی گوش دهیم.

اولین فرمان Thread (target =) یک کلاس Thread ایجاد می کند که با استفاده از "start ()" شروع به کار می کند ، تابع را در کلمه کلیدی "target" ، که هنگام ایجاد کلاس داده شد ، اجرا می کند.

در مرحله بعد ما کتابخانه حسگر رنگ را داریم که کاملاً مستقیم است. من نمی خواهم این کتابخانه را توضیح دهم ، زیرا روشها بسیار روشن و در کد توضیح داده شده است.

آخرین ما netifaces داریم. این به ما امکان می دهد آدرس IP مورد استفاده برای اتصال بی سیم و سیم را بازیابی کنیم.

آخرین بار برخی از کلاسها را برای سنسور فاصله ، LED و LCD انجام دادم.

من توضیح نمی دهم که آنها چگونه کار می کنند.

مرحله 9: مرحله 9: ایجاد یک مورد

مرحله 9: ایجاد یک مورد
مرحله 9: ایجاد یک مورد
مرحله 9: ایجاد یک مورد
مرحله 9: ایجاد یک مورد
مرحله 9: ایجاد یک مورد
مرحله 9: ایجاد یک مورد

برای این پروژه ، من یک قاب چوبی ایجاد کردم.

چوب سبک ، نازک است و هزینه زیادی ندارد.

به عنوان ابعادی که استفاده کردم:

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

برای سنسورها ، باید 2 سوراخ اضافه کنید و آنها را در کنار یکدیگر قرار دهید.

پس از ایجاد کیس ، سنسورها ، LED و LCD را نصب کنید.

مرحله دهم: مراحل نهایی

همه چیز به طور اساسی انجام می شود.

اکنون ما فقط باید مطمئن شویم که کد ما شروع می شود ، در لحظه ای که منبع تغذیه خود را وصل می کنیم.

روشهای زیادی برای این کار وجود دارد.

> نمونه ها

ما از روش اول استفاده می کنیم:

این خط را اجرا کنید: 'sudo nano /etc/rc.local'

دستور خود را برای اجرای کد اضافه کنید: 'sudo python3'

فایل را با استفاده از Ctrl-X ذخیره کنید.

اگر در ویرایش مشکل دارید. این مرحله را دوباره انجام دهید ، اما ابتدا 'sudo -i' را اجرا کنید.

توصیه شده: