Mundarija:

ColorPicker: 10 qadam
ColorPicker: 10 qadam

Video: ColorPicker: 10 qadam

Video: ColorPicker: 10 qadam
Video: Основные ошибки при возведении перегородок из газобетона #5 2024, Noyabr
Anonim
ColorPicker
ColorPicker

Loyihaning maqsadi ranglarni o'lchash va ularni boshqa rang tizimlariga tarjima qilishdir. Sensor tomonidan berilgan faqat RGB qiymatlari yordamida siz HSL, CYMK, HEX va eng yaqin RAL kodini (bo'yoq uchun ishlatiladigan standart) tarjima qilishingiz mumkin. Ushbu loyiha Python, MySQL, Linux va Javascript haqida asosiy bilimlarni talab qiladi.

Agar siz Flask ramkasi va SocketIO bilan ham tanish bo'lsangiz, bu loyihaning kodi siz uchun oson tushunilishi kerak.

Bu loyihani rassomlar, interyur dizaynerlar yoki ranglarni o'lchashga muhtoj bo'lgan har bir kishi ishlatishi mumkin.

Loyiha unchalik qimmat emas va taxminiy _ evroni tashkil etadi, etkazib berish narxiga kirmagan.

Ta'minotlar

Biz ushbu bo'limni ikki qismga bo'lishimiz mumkin:

  • Uskuna
  • Dasturiy ta'minot

Uskuna

Biz quyidagi komponentlardan foydalanamiz

  • HC04: masofa sensori, biz ob'ektdan qanchalik uzoqmiz
  • LCD displey 2x16
  • LCD I2C moduli (HW061)
  • TCS34725 Rang sensori moduli (Adafruit)
  • Oq LED
  • Raspberry Pi 3 (har qanday Raspberry Pi ishlashi kerak)
  • 5x 1k Ohm qarshilik
  • 1x 220 yoki 330 Ohm qarshilik
  • SD -karta 16 GB (14,4 GB)

Dasturiy ta'minot

  • Python IDE, Visual Code yoki Pycharm kabi (Pycharm bu erda ishlatiladi)
  • MySQL Workbench
  • Putty (Putty -ni yuklab oling)
  • Rufus yoki boshqa SD -karta yozuvchisi (Rufus -ni yuklab oling)

Narxlash

Agar sizda allaqachon Rapsberry Pi bo'lsa, bu loyiha juda arzon.

  • HC04: 2,5 evrodan boshlanadi (Xitoy) va ko'proq mahalliy do'konlar uchun 6 evrogacha.
  • LCD: taxminan 6-8 evro.
  • I2C moduli: 1 evrodan arzonroq (Xitoy), lekin ko'proq mahalliy do'konlar uchun 4 evrogacha.
  • TCS34725: 9-12 evro atrofida. Eng qimmat qismi (RPi bundan mustasno)
  • Oq LED: katta hajmda sotib olingan, 20 evro LED 1 evrogacha
  • Raspberry Pi: qaysi versiyaga qarab, taxminan 40 evro
  • Rezistorlar: bitta qarshilik uchun 0,10 evro
  • SD -karta: taxminan 8 evro

Raspberry Pi uchun quvvat adapteri narxiga kiritilmagan, chunki bu adapter juda keng tarqalgan.

Ortiqcha narx oralig'i: 70 evro atrofida, agar siz Raspberry Pi va loyiha uchun sumkani qo'shsangiz.

Kosonni qurish uchun men engil yupqa yog'ochdan foydalanardim. Men bu yog'ochni mebeldan qayta ishladim. Ish uchun material sizga bog'liq.

1 -qadam: 1 -qadam: RPi OS ni o'rnatish, SSH va Internetga kirishni sozlash

1 -qadam: RPi OS ni o'rnatish, SSH va Internetga kirishni sozlash
1 -qadam: RPi OS ni o'rnatish, SSH va Internetga kirishni sozlash
1 -qadam: RPi OS ni o'rnatish, SSH va Internetga kirishni sozlash
1 -qadam: RPi OS ni o'rnatish, SSH va Internetga kirishni sozlash
1 -qadam: RPi OS ni o'rnatish, SSH va Internetga kirishni sozlash
1 -qadam: RPi OS ni o'rnatish, SSH va Internetga kirishni sozlash
1 -qadam: RPi OS ni o'rnatish, SSH va Internetga kirishni sozlash
1 -qadam: RPi OS ni o'rnatish, SSH va Internetga kirishni sozlash

1.1 -qadam: rasmni o'rnatish

Rasmni Raspberry Pi rasmiy saytidan yuklab oling. Qaysi tasvirni o'rnatganingiz muhim emas. Ushbu loyiha uchun GUI kerak emas, chunki biz faqat SSH yordamida ulanamiz.

Rasmni SD kartaga yozing (kartadagi barcha fayllar o'chiriladi).

Hamma narsani SD -kartaga yozish uchun biz "Rufus" vositasidan foydalanamiz. Rasmni yuklab olgandan so'ng, Rufus -ni oching va rasm faylini tanlang. Maqsadli drayverni tanlang va rasmni diskka yozing. Bu biroz vaqt olishi mumkin.

> Rufus

1.2 -qadam: SSH -ni o'rnatish

Keyingi qadam - SD -kartaga ulanish. Buning uchun biz SSH -ni yoqishimiz kerak.

Buni monitordan foydalanmasdan qilish uchun, faylni o'rganuvchi va SD -kartaning yuklash qismini oching. Fayl kengaytmasi bo'lmagan "ssh" nomli bo'sh fayl yarating.

Shuningdek, "cmdline.txt" ni oching.

Fayl oxiriga "169.254.10.1" qo'shing va saqlang.

SD -kartani ajratib oling va Raspberry Pi -ga joylashtiring.

Endi biz Raspberry Pi -ni quvvat manbaiga ulashimiz va SSH yordamida yuklashimiz va ulashimiz mumkin.

SSH yordamida ulanish uchun biz "Putty" dasturidan foydalanamiz. Buni amalga oshirishdan oldin, Internet kabelidan foydalanib, RPi va shaxsiy kompyuteringizni ulang. Putty -ni oching va SSH yorlig'iga o'ting va ushbu IP -ni to'ldiring: 169.254.10.1. "Ulanish" tugmasini bosing va siz ulanasiz.

> macun

Raspberry Pi tomonidan ishlatiladigan standart login - "pi" foydalanuvchi nomi va "malina" parol uchun.

1.3 -qadam: Simsiz ulanish

Sizning Raspberry Pi endi yoqilgan.

Shuningdek, biz Wi -Fi orqali RPi -ga ulanishni xohlaymiz, shuning uchun bizga endi chekilgan kabel kerak emas.

Quyidagi qatorni bajaring:

sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

Bu yuqori huquqlarga ega "nano" matn muharririni ochadi.

Faylga quyidagi qatorlarni qo'shing:

tarmoq = {

ssid = "SSID"

psk = "Parol"

}

"SSID" ni Wi -Fi tarmog'ining SSID -ga almashtiring

"Parol" ni parol bilan almashtiring.

Keyin Ctrl+X ni bosing va "ha" variantini tanlang. Endi fayl saqlanadi.

Endi biz tarmoq xizmatini qayta ishga tushirishimiz kerak

Quyidagi buyruqlarni bajaring:

  • 'sudo -i'
  • "sudo systemctl tarmoqni qayta ishga tushiradi"

Wget buyrug'i yordamida Internetga ulanishni sinab ko'rishingiz mumkin.

Misol: 'wget google.com'

> Wget buyrug'i

2 -qadam: 2 -qadam: RPi -ga dasturiy ta'minotni o'rnatish

Ushbu loyiha uchun biz bir nechta kutubxonalarni o'rnatishimiz kerak.

  • Mariadb: MySQL ma'lumotlar bazasi (sudo apt-get install mariadb-server)
  • Rang sensori uchun Adafruit kutubxonasi: Ranglarni o'lchash (pip3 o'rnatish adafruit-circuitpython-tcs34725)
  • PHPmyAdmin: ('sudo apt install phpmyadmin', apache veb -serverini tanlang)

Shuningdek, quyidagi pip kutubxonalarini o'rnating:

  • nilufar
  • kolba
  • shohrux_sabirov
  • taxta
  • busio
  • tarmoqlar

3 -qadam: 3 -qadam: MySQL ma'lumotlar bazasiga ulanish, ma'lumotlar bazasini yaratish

3 -qadam: MySQL ma'lumotlar bazasiga ulanish, ma'lumotlar bazasini yaratish
3 -qadam: MySQL ma'lumotlar bazasiga ulanish, ma'lumotlar bazasini yaratish
3 -qadam: MySQL ma'lumotlar bazasiga ulanish, ma'lumotlar bazasini yaratish
3 -qadam: MySQL ma'lumotlar bazasiga ulanish, ma'lumotlar bazasini yaratish
3 -qadam: MySQL ma'lumotlar bazasiga ulanish, ma'lumotlar bazasini yaratish
3 -qadam: MySQL ma'lumotlar bazasiga ulanish, ma'lumotlar bazasini yaratish

Keyingi qadam - MySQL ishchi dastgohi yordamida MySQL ma'lumotlar bazasiga ulanish.

> IP a

Yuqoridagi rasmda ko'rsatilgandek 'ip a' buyrug'ini bajaring (havolani bosing)

Ko'p hollarda 3 ta yozuv ko'rsatiladi. Bizga "wlan0" yozuvi kerak. "Inet" yonidagi IP -ni yoki "192.168.1.44" misolida nusxa ko'chiring.

. >> Yangi ulanish yarating

Yuqoridagi rasmda ko'rsatilgandek, quyidagi parametrlar bilan yangi ulanish yarating (parametrlar uchun pastdagi rasm)

> Ulanish parametrlari

Ulanish uchun yangi yaratilgan ulanish tugmasini ikki marta bosing.

Agar so'rov paydo bo'lsa, "Ha" ni bosing.

Bu hali bo'sh ma'lumotlar bazasi, shuning uchun ba'zi jadvallarni qo'shamiz.

Avval sxema yarating, buning uchun chap tomonda o'ng tugmasini bosing va "sxema yaratish" -ni tanlang.

Sxemaga nom bering va tasdiqlang.

Endi biz jadvallarni qo'shishimiz kerak. Sxemani kengaytiring va "sichqonchaning o'ng tugmachasini bosing", "jadvallar".

Quyidagi sxemalarni yarating:

> 1 -jadval: RALcolors

> 2 -jadval: Sensor turlari

> 3 -jadval: O'lchovlar (rasmda "metingen" ishlatiladi, o'lchovlar uchun gollandcha)

> 4 -jadval: Website_data || 4 -jadval pastki

MySQL - bu ma'lumotlar bazasi bilan bog'liq bo'lgan tizim, ya'ni jadvallar o'rtasida munosabatlar o'rnatishimiz mumkin.

Biz yaratadigan birinchi munosabat "sensor_tipi" va "o'lchovlar" o'rtasida.

Rasmda ko'rsatilgandek, ikkita kalitni bog'lang.

> Jadval va havola kalitlarini tahrirlash

Pastki burchakdagi "Ilova" tugmasini bosish orqali o'zgarishlarni saqlashni unutmang.

Shuningdek, "website_data" jadvalini tahrirlang va "MetingID" ga havola qiling.

Endi biz jadvallarni tuzish va aloqalarni o'rnatish bilan shug'ullanamiz.

Ma'lumot qo'shish:

RALcolors jadvali - bu sobit jadval, bu erda qiymatlar hech qachon o'zgarmaydi. Biz bu qiymatlarni qo'shishimiz mumkin

juda oson.

> Excel faylini yuklab oling

Yuqoridagi Excel faylini yuklab oling va barcha ma'lumotlarni tanlang va "nusxalash". Rasmdagi kabi qiling

> Jadvalni ko'rsatish

stolda "sichqonchaning o'ng tugmachasini bosing" va "Qatorlarni joylashtirish" -ni tanlang. Ma'lumot qo'shish uchun pastki burchakda "qo'llash" tugmasini bosing.

Endi barcha RALcolors ma'lumotlar bazasida saqlanadi.

Sensor_type -ni hozir ma'lumotlar bazasiga qo'shishimiz kerak.

> Sensortype ma'lumotlari

Eslatma: Sensor tavsifi "Gollandiya" da

4 -qadam: 4 -qadam: Filezilla

4 -qadam: Filezilla
4 -qadam: Filezilla

Raspberry Pi -ga osongina ulanish va fayllarni uzatish uchun Filezilla -dan foydalanishimiz mumkin.

> Filezilla -ni yuklab oling

Ulanish tafsilotlarini kiriting va ulaning. O'ng tomonda siz fayllarni sudrab sudrab olib o'tishingiz mumkin.

> Github manbasi

Fayllarni yuqoridagi github manbasidan yuklab oling.

5 -qadam: 5 -qadam: veb -sayt yaratish

5 -qadam: veb -sayt yaratish
5 -qadam: veb -sayt yaratish
5 -qadam: veb -sayt yaratish
5 -qadam: veb -sayt yaratish

Veb -saytni joylashtirish uchun biz PHPmyAdmin va Apache2 dan foydalanamiz.

Raspberry Pi veb -serveri ildiz sifatida '/var/www/html' katalogidan foydalanadi.

Agar siz fayllaringizni u erga joylashtirsangiz, ular Raspberry Pi IP -manzilida joylashadi. (IP = "ip a" ga qarang)

Github repo -dan kerakli fayllarni yuklab olishingiz mumkin (oldingi qadam)

'/Var/www/html/' ga 'Frontend' papkasidagi barcha fayllarni joylashtiring.

>/var/www/html/

6 -qadam: 6 -qadam: orqa panelni yaratish (kolba)

Veb -saytning orqa qismi Flask -ga asoslangan.

Barcha fayllarni github repo -da topish mumkin.

Barcha fayllarni Raspberry Pi -dagi istalgan katalogga nusxalash.

Masalan, '/home/pi/colorpicker.

Katalog yaratish uchun "cd" yordamida manzil katalogiga o'ting va "mkdir" ni bajaring.

Hozircha hammasi shu. Kod keyingi bosqichlarda tushuntiriladi.

7 -qadam: 7 -qadam: Uskuna

> Yuklab olish sxemasi

Yuqoridagi hujjatda ko'rsatilgan sxemani yarating.

QAYD: Shuningdek, bitta rezistorli (220 yoki 330 Ohm) bitta oq LEDni qo'shing.

Uskunani tushuntirish

HC04

HC04 sensori to'lqinlarni chiqaradi, ular aks etadi va yana sensor tomonidan qabul qilinadi.

Emitatsiya va qabul qilish o'rtasidagi delta vaqtini hisoblab, biz masofani hisoblashimiz mumkin.

Masofa = ((Timestamp_recieve - Timestamp_emit) / tovush tezligi) / 2

Biz ikkiga bo'linamiz, chunki to'lqin aks etadi, ya'ni u masofani ikki marta bosib o'tadi.

LCD

RGB va HEXni ko'rsatish uchun biz LCD displeydan foydalanamiz.

Bu LCD uchun men I2C modulini sotib oldim. Hozir bizga faqat 4 ta sim kerak. SDA, SCL, GND, VCC

Ushbu LCD displeydan foydalanish uchun men Python sinfini yozdim, undan foydalanishni osonlashtirish uchun.

TCS 34725

Bu sensor ranglarni o'lchash imkonini beradi. Biz RGB qiymatini o'lchash uchun kutubxonadan foydalanamiz.

8 -qadam: 8 -qadam: Kod tushuntirilgan

8 -qadam: Kod tushuntirilgan
8 -qadam: Kod tushuntirilgan
8 -qadam: Kod tushuntirilgan
8 -qadam: Kod tushuntirilgan
8 -qadam: Kod tushuntirilgan
8 -qadam: Kod tushuntirilgan
8 -qadam: Kod tushuntirilgan
8 -qadam: Kod tushuntirilgan

Old tomondan

Old qism uchta asosiy qismdan iborat.

Birinchidan, bu bizning veb -saytimizning tuzilishini yaratadigan, lekin o'z ichiga olmaydigan yoki minimal tartibli html fayllari.

Ikkinchidan, bizda CSS yoki uslublar fayllari bor, ular bizning veb -saytimizni qanday uslub va tartibda joylashtiradi.

Ikkalasini o'qish va tushunish juda oson, shuning uchun men ularni tushuntirmayman.

Oxirgi bizda ikkita kutubxona bo'lgan Javascript bor.

Amaldagi ikkita kutubxona - SocketIO va URLSearchParams.

SocketIO sizga orqa tomondan old tomonga xabar yuborish imkonini beradi va aksincha.

Xabarlarni bitta mijozga, balki bir nechta mijozga ham yuborish mumkin (Broadcast)

> Soket IO Javascript

> Soket IO Python

Yuqoridagi rasmlarda siz ushbu loyihada o'rnatilgan soket ulanishlardan birini ko'rishingiz mumkin.

Xabar yuborish buyrug'i "emit", qabul qilish "on" orqali amalga oshiriladi.

URLSearchParms sizga so'rovlar satridan qiymatlarni osongina olish imkonini beradi.

Misol so'rovlar satri: example.com/index.html?id=1

URLSearchParams sizga qaytarib beradi: {'id' = '1'}

> URLSearchParams misoli

Orqa qism

Orqa fon to'liq kutubxonalar bilan Python -da yozilgan.

Biz import qiladigan birinchi kutubxona "Flask" dir. Bu kutubxona API yaratish, MySQL ma'lumotlar bazasi uchun barcha CRUD harakatlarini bajarish uchun kerak. CRUD - o'qishni yangilashni o'chirishni yaratish degan ma'noni anglatadi.

> Shisha

Yuqoridagi rasmda Flaskning bir necha marshrutlari ko'rsatilgan. Marshrut bo'ylab sayohat qilib, siz avtomatik ravishda "GET" usulini bajarasiz, kod bajariladi va siz qaytish usulidan qiymat olasiz. "POST" va "O'CHIRISH" kabi boshqa usullar ham mavjud. Bunday usullarni sinab ko'rish uchun sizga Postman kabi dastur kerak bo'ladi.

Keyingi import kutubxonasi - bu SocketIO, men buni oldingi qismda tushuntirdim.

Keyingi - GPIO.

Bu sizga Rapsberry Pi -ning GPIO pinlarini boshqarishga imkon beradi.

Eng muhim buyruqlar:

  • GPIO.setmode (GPIO. BCM) Pim konfiguratsiyasini tanlang.
  • GPIO.output (, GPIO. LOW yoki GPIO. HIGH) PIN kodga LOW yoki HIGH yozing.
  • GPIO.setup (,) PIN -kodni kirish yoki chiqish, ochilish yoki tortish sifatida belgilang

Keyinchalik bizda iplar bor.

Biz ishlatadigan yagona buyruqlar:

  • Mavzu (maqsad =)
  • .start ()

Iplardan foydalanib, biz bir vaqtning o'zida bir nechta kod misollarini ishga tushirishimiz mumkin. Shunday qilib, biz masofani o'lchay olamiz va shu bilan birga kiruvchi io xabarlarini tinglay olamiz.

Thread (target =) birinchi buyrug'i Thread sinfini yaratadi, u 'start ()' ishlatila boshlagach, sinfni yaratishda berilgan 'target' kalit so'zidagi funktsiyani bajaradi.

Keyin bizda ranglar sensori kutubxonasi bor, u juda to'g'ri. Men bu kutubxonani tushuntirmayman, chunki usullar juda aniq va kodda tushuntirilgan.

Oxirgi marta bizda netifaces bor. Bu bizga simsiz va simli ulanish uchun foydalanadigan IP -manzilni olish imkoniyatini beradi.

Oxir -oqibat men masofa sensori, LED va LCD uchun bir nechta darslar qildim.

Men ularning qanday ishlashini tushuntirmayman.

9 -qadam: 9 -qadam: Case yaratish

9 -qadam: Case yaratish
9 -qadam: Case yaratish
9 -qadam: Case yaratish
9 -qadam: Case yaratish
9 -qadam: Case yaratish
9 -qadam: Case yaratish

Ushbu loyiha uchun men yog'och quti yasadim.

Yog'och engil, yupqa va qimmat emas.

Men ishlatgan o'lchamlar sifatida:

  • Balandligi: 5 sm
  • Kengligi: 10,5 sm
  • Uzunligi: 12,5 sm

Datchiklar uchun siz 2 teshik qo'shishingiz va ularni bir -birining yoniga qo'yishingiz kerak.

Kosonni yaratgandan so'ng, datchiklarni, LED va LCD -ni o'rnating.

10 -qadam: Yakuniy qadamlar

Hammasi asosan amalga oshiriladi.

Endi biz faqat bizning kodimiz quvvat manbaiga ulangan paytimiz boshlanishiga ishonch hosil qilishimiz kerak.

Buning uchun juda ko'p usullar mavjud.

> Misollar

Biz birinchi usuldan foydalanamiz:

Bu qatorni bajaring: 'sudo nano /etc/rc.local'

Kodni ishga tushirish uchun buyrug'ingizni qo'shing: 'sudo python3'

Faylni Ctrl-X yordamida saqlang.

Agar tahrir qilishda muammolar bo'lsa. Bu qadamni qayta bajaring, lekin avval "sudo -i" ni bajaring.

Tavsiya: