Mündəricat:

ColorPicker: 10 addım
ColorPicker: 10 addım

Video: ColorPicker: 10 addım

Video: ColorPicker: 10 addım
Video: 10 Apples On My Head | Kids Songs | Super Simple Songs 2024, Oktyabr
Anonim
ColorPicker
ColorPicker

Bu layihənin məqsədi rəngləri ölçmək və digər rəng sistemlərinə tərcümə etməkdir. Sensor tərəfindən verilən yalnız RGB dəyərlərindən istifadə edərək, HSL, CYMK, HEX və həmçinin ən yaxın RAL kodunu (boya üçün istifadə olunan standart) tərcümə edə bilərsiniz. Bu layihə üçün Python, MySQL, Linux və Javascript haqqında əsas biliklər tələb olunur.

Flask çərçivəsi və SocketIO ilə də tanışsınızsa, bu layihənin kodu sizin üçün asan başa düşülməlidir.

Bu layihə rəssamlar, interiour dizaynerlər və ya rəngləri ölçmək ehtiyacı olan hər kəs tərəfindən istifadə edilə bilər.

Bu layihə o qədər də bahalı deyil və çatdırılma daxil deyil, təxminən _ avroya başa gəlir.

Təchizat

Bu bölməni iki hissəyə bölmək olar:

  • Avadanlıq
  • Proqram təminatı

Avadanlıq

Aşağıdakı komponentlərdən istifadə edirik

  • HC04: Məsafə sensoru, cisimdən nə qədər uzaqda olduğumuzu ölçürük
  • LCD ekran 2x16
  • LCD I2C modulu (HW061)
  • TCS34725 Rəng sensoru modulu (Adafruit)
  • Ağ LED
  • Raspberry Pi 3 (İstənilən Raspberry Pi işləməlidir)
  • 5x 1k Ohm müqavimət
  • 1x 220 və ya 330 Ohm müqavimət
  • SD kart 16GB (14.4GB)

Proqram təminatı

  • Python IDE, Visual Code və ya Pycharm kimi (burada istifadə olunan Pycharm)
  • MySQL Workbench
  • Macun (Macunu yükləyin)
  • Rufus və ya başqa bir SD kart yazıcısı (Rufus'u yükləyin)

Qiymətləndirmə

Rapsberry Pi varsa, bu layihə olduqca ucuzdur.

  • HC04: 2.5 avrodan başlayaraq (Çin) və daha çox yerli mağaza üçün 6 avroya qədər.
  • LCD: təxminən 6-8 avro.
  • I2C modulu: 1 avrodan aşağı (Çin), lakin daha çox yerli mağaza üçün 4 avroya qədər.
  • TCS34725: 9-12 avro ətrafında. Ən bahalı hissə (RPi istisna olmaqla)
  • Ağ led: Toplu olaraq alınıb, 1 avroya qədər olan 20 LED
  • Raspberry Pi: Hansı versiyadan asılı olaraq, təxminən 40 avro
  • Rezistorlar: bir müqavimət üçün 0,10 avro
  • SD kart: təxminən 8 avro

Raspberry Pi üçün güc adapteri qiymətə daxil deyil, çünki bu adapter olduqca yaygındır.

Aşırı qiymət aralığı: Raspberry Pi və layihə üçün qabı daxil etsəniz, təxminən 70 avro.

Çantanı qurmaq üçün yüngül nazik ağacdan istifadə etdim. Bu taxtanı mebeldən geri qaytardım. Davanın materialı sizə aiddir.

Addım 1: Adım 1: RPi OS -nin quraşdırılması, SSH və İnternetə girişin konfiqurasiyası

Addım 1: RPi OS qurmaq, SSH və İnternetə daxil olmaq
Addım 1: RPi OS qurmaq, SSH və İnternetə daxil olmaq
Addım 1: RPi OS qurmaq, SSH və İnternetə daxil olmaq
Addım 1: RPi OS qurmaq, SSH və İnternetə daxil olmaq
Addım 1: RPi OS qurmaq, SSH və İnternetə daxil olmaq
Addım 1: RPi OS qurmaq, SSH və İnternetə daxil olmaq
Addım 1: RPi OS qurmaq, SSH və İnternetə daxil olmaq
Addım 1: RPi OS qurmaq, SSH və İnternetə daxil olmaq

Addım 1.1: Şəklin quraşdırılması

Şəkili Raspberry Pi rəsmi saytından yükləyin. Hansı görüntünün quraşdırılmasının əhəmiyyəti yoxdur. Bu layihə üçün bir GUI lazım deyil, çünki yalnız SSH istifadə edərək əlaqə quracağıq.

Şəkli (boş) SD karta yazın (Kartdakı bütün fayllar silinəcəkdir).

Hər şeyi SD karta yazmaq üçün 'Rufus' adlı bir vasitədən istifadə edəcəyik. Şəkli yüklədikdən sonra Rufus -u açın və şəkil faylını seçin. Hədəf sürücüsünü seçin və sürücüyə şəkil yazın. Bu bir müddət çəkə bilər.

> Rufus

Addım 1.2: SSH quraşdırın

Növbəti addım SD karta bir əlaqə yaratmaqdır. Bunu etmək üçün SSH -ni aktivləşdirməliyik.

Bunu bir monitor istifadə etmədən etmək üçün fayl araşdırıcınızı və SD kartın açılış hissəsini açın. Fayl uzantısı olmadan "ssh" adlı boş bir fayl yaradın.

Ayrıca "cmdline.txt" açın

Faylın sonuna "169.254.10.1" əlavə edin və qeyd edin.

SD kartı ayırın və Raspberry Pi -yə daxil edin.

İndi Raspberry Pi -ni bir enerji mənbəyinə bağlaya və SSH -dən istifadə edərək aça və qoşula bilərik.

SSH istifadə edərək qoşulmaq üçün "Putty" proqramından istifadə edirik. Bunu etməzdən əvvəl bir İnternet kabelindən istifadə edərək RPi və PC -ni bağlayın. Putty açın və SSH sekmesine keçin və bu IP -ni doldurun: 169.254.10.1. 'Bağlan' düyməsini vurun və bağlı olacaqsınız.

> Macun

Raspberry Pi tərəfindən istifadə edilən standart giriş istifadəçi adı olaraq 'pi' və parol üçün 'moruq' dur.

Addım 1.3: Simsiz əlaqə

Sizin Raspberry Pi artıq işə salınmışdır.

Wifi istifadə edərək RPi -yə qoşulmaq istəyirik, beləliklə artıq bir Ethernet kabelinə ehtiyacımız yoxdur.

Aşağıdakı sətri icra edin:

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

Bu, yüksək hüquqlara malik 'nano' mətn redaktorunu açacaq.

Faylı aşağıdakı sətirləri əlavə edin:

şəbəkə = {

ssid = "SSID"

psk = "Şifrə"

}

"SSID" ni Wifi şəbəkənizin SSID ilə əvəz edin

"Şifrə" ni parolunuzla əvəz edin.

Sonra Ctrl+X düyməsini basın və 'bəli' seçimini seçin. İndi fayl saxlanılacaq.

İndi şəbəkə xidmətini yenidən başlatmalıyıq

Aşağıdakı əmrləri yerinə yetirin:

  • 'sudo -i'
  • 'sudo systemctl şəbəkəni yenidən başladın'

Wget əmrindən istifadə edərək internet bağlantınızı yoxlaya bilərsiniz.

Məsələn: 'wget google.com'

> Wget əmri

Addım 2: Adım 2: RPi üzərində Proqram Quraşdırma

Bu layihə üçün bir neçə kitabxana qurmalıyıq.

  • Mariadb: MySQL verilənlər bazası (sudo apt-get install mariadb-server)
  • Rəng sensoru üçün Adafruit kitabxanası: Rənglərin ölçülməsi (pip3 qurmaq adafruit-circuitpython-tcs34725)
  • PHPmyAdmin: ('sudo apt install phpmyadmin', apache veb serverini seçin)

Aşağıdakı pip kitabxanalarını da quraşdırın:

  • flask_socketio
  • balon
  • flask_cors
  • lövhə
  • busio
  • netfaces

Addım 3: Adım 3: MySQL Verilənlər Bazasına qoşulmaq, Veritabanı Yaratmaq

Addım 3: MySQL verilənlər bazasına qoşulmaq, verilənlər bazası yaratmaq
Addım 3: MySQL verilənlər bazasına qoşulmaq, verilənlər bazası yaratmaq
Addım 3: MySQL verilənlər bazasına qoşulmaq, verilənlər bazası yaratmaq
Addım 3: MySQL verilənlər bazasına qoşulmaq, verilənlər bazası yaratmaq
Addım 3: MySQL verilənlər bazasına qoşulmaq, verilənlər bazası yaratmaq
Addım 3: MySQL verilənlər bazasına qoşulmaq, verilənlər bazası yaratmaq

Növbəti addım, MySQL iş masası istifadə edərək MySQL verilənlər bazasına qoşulmaqdır.

> IP a

Yuxarıdakı şəkildə göstərildiyi kimi 'ip a' əmrini yerinə yetirin (linki vurun)

Əksər hallarda 3 giriş göstəriləcək. 'Wlan0' girişinə ehtiyacımız var. IP -ni "inet" in yanına kopyalayın və ya bu nümunədə '192.168.1.44'

. >> Yeni əlaqə yaradın

Yuxarıdakı şəkildə göstərildiyi kimi, aşağıdakı parametrlərlə yeni bir əlaqə yaradın (Parametrlər üçün aşağıdakı şəkil)

> Bağlantı parametrləri

Qoşulmaq üçün yeni yaradılan bağlantıya iki dəfə vurun.

Bir təklif varsa, 'Bəli' düyməsini basın.

Bu hələ boş bir verilənlər bazasıdır, buna görə bəzi cədvəllər əlavə edək.

Əvvəlcə bir sxem yaradın, bunu etmək üçün sol tərəfdə 'sağ klikləyin' və 'Şema yarat' seçin.

Şemaya bir ad verin və təsdiq edin.

İndi cədvəllər əlavə etməliyik. Şemanı genişləndirin və 'sağ klikləyin', 'masalar'.

Aşağıdakı sxemləri yaradın:

> Cədvəl 1: RALcolors

> Cədvəl 2: Sensor növləri

> Cədvəl 3: Ölçmələr (Şəkildə 'metingen' istifadə olunur, ölçülər üçün Hollandiya)

> Cədvəl 4: Veb sayt_dataları || Cədvəl 4 alt

MySQL, əlaqəli bir verilənlər bazası sistemidir, yəni cədvəllər arasında əlaqələr yarada bilərik.

Yaratmamız lazım olan ilk əlaqə 'sensor_type' və 'ölçmələr' arasındadır.

Şəkildə göstərildiyi kimi iki düyməni bağlayın.

> Cədvəl və keçid düymələrini redaktə edin

Alt küncdəki 'Tətbiq et' düyməsini basaraq dəyişiklikləri saxlamağı unutmayın.

Ayrıca 'website_data' cədvəlini düzəldin və 'MetingID' bağlantısını yaradın.

İndi cədvəllər yaratmaq və əlaqələr qurmaqla işimiz bitdi.

Məlumat əlavə olunur:

RALcolors cədvəli, dəyərlərin heç vaxt dəyişməyəcəyi sabit bir cədvəldir. Bu dəyərləri əlavə edə bilərik

çox asan.

> Excel faylını yükləyin

Yuxarıdakı excel faylını yükləyin və bütün məlumatları seçin və 'kopyalayın'. Şəkildəki kimi edin

> Cədvəli göstər

masada 'sağ basın' və 'Satırları yapışdır' seçin. Məlumatları əlavə etmək üçün alt küncdəki 'tətbiq' düyməsini basın.

İndi bütün RALcolors verilənlər bazasında saxlanılır.

İndi verilənlər bazasına sensor_type əlavə etməliyik.

> Sensortype məlumatları

Qeyd: Sensorun təsviri 'Holland dilindədir'

Addım 4: Adım 4: Filezilla

Addım 4: Filezilla
Addım 4: Filezilla

Raspberry Pi -yə asanlıqla qoşulmaq və faylları köçürmək üçün Filezilla'dan istifadə edə bilərik.

> Filezilla yükləyin

Bağlantı detallarını daxil edin və əlaqə qurun. Sağ tərəfdə faylları sürükləyərək köçürə bilərsiniz.

> Github mənbəyi

Faylları yuxarıdakı github mənbəyindən yükləyin.

Adım 5: Adım 5: Veb saytın yaradılması

Addım 5: Veb saytın yaradılması
Addım 5: Veb saytın yaradılması
Addım 5: Veb saytın yaradılması
Addım 5: Veb saytın yaradılması

Veb saytın yerləşdirilməsi üçün PHPmyAdmin və Apache2 istifadə edirik.

Raspberry Pi üzərindəki veb serveri '/var/www/html' qovluğunu kök olaraq istifadə edir.

Fayllarınızı ora yerləşdirsəniz, onlar Raspberry Pi -nin IP ünvanında yerləşdiriləcək. (IP = bax 'ip a')

Github repo -dan lazımi faylları yükləyə bilərsiniz (əvvəlki addım)

'/Var/www/html/' üzərinə 'Frontend' qovluğundakı bütün faylları yapışdırın.

>/var/www/html/

Addım 6: Adım 6: Arxa planın yaradılması (Şüşə)

Veb saytın arxa tərəfi Flask -a əsaslanır.

Bütün faylları github repo -da tapa bilərsiniz.

Bütün faylları Raspberry Pi üzərindəki hər hansı bir qovluğa kopyalayın.

Məsələn '/home/pi/colorpicker.

Bir kataloq yaratmaq üçün 'cd' istifadə edərək təyinat qovluğuna gedin və 'mkdir' əmrini yerinə yetirin.

Hələlik hamısı budur. Kod növbəti addımlarda izah ediləcək.

Adım 7: Adım 7: Avadanlıq

> Proqramı yükləyin

Yuxarıdakı sənəddə göstərildiyi kimi sxem yaradın.

Qeyd: Bir rezistorlu (220 və ya 330 Ohm) bir ağ LED əlavə edin.

Avadanlıqların izahı

HC04

HC04 sensoru, əks etdirən və yenidən sensor tərəfindən qəbul edilən dalğalar yayır.

Emitasiya və alma arasındakı zaman deltasını hesablayaraq, məsafəni hesablaya bilərik.

Məsafə = ((Timestamp_recieve - Timestamp_emit) / səs sürəti) / 2

Dalğanı əks etdirdiyi üçün məsafəni iki dəfə qət etdiyi üçün ikiyə bölürük.

LCD

Proqram başlayanda RGB və HEX -i IP kimi göstərmək üçün LCD ekrandan istifadə edirik.

Bu LCD üçün I2C modulu aldım. İndi yalnız 4 telə ehtiyacımız var. SDA, SCL, GND, VCC

Bu LCD -dən istifadə etmək üçün istifadə etməyi asanlaşdırmaq üçün Python sinfi yazdım.

TCS 34725

Bu sensor rəngləri ölçməyə imkan verir. RGB dəyərini ölçmək üçün kitabxanadan istifadə edirik.

Adım 8: Adım 8: Kod izah edildi

Addım 8: Kod izah edildi
Addım 8: Kod izah edildi
Addım 8: Kod izah edildi
Addım 8: Kod izah edildi
Addım 8: Kod izah edildi
Addım 8: Kod izah edildi
Addım 8: Kod izah edildi
Addım 8: Kod izah edildi

Ön cəbhə

Ön uç üç əsas hissədən ibarətdir.

Birincisi, veb saytımızın quruluşunu quran, lakin ehtiva etməyən və ya minimum düzeni olmayan html fayllarıdır.

İkincisi, veb saytımızı tərtib edən və tərtib edən CSS faylları və ya stil faylları var.

İkisini oxumaq və başa düşmək olduqca asandır, buna görə izah etməyəcəyəm.

Son olaraq iki kitabxanamız olan Javascript -ə sahibik.

İstifadə olunan iki kitabxana SocketIO və URLSearchParamsdır.

SocketIO, arxa ucdan ön tərəfə və əksinə mesaj göndərməyə imkan verir.

Mesajlar bir müştəriyə, eyni zamanda birdən çox müştəriyə göndərilə bilər (Yayım)

> Soket IO Javascript

> Soket IO Python

Yuxarıdakı şəkillərdə bu proyektdə edilən Socket bağlantılarından birini görə bilərsiniz.

Mesaj göndərmək əmri 'yay', qəbulu 'on' ilə edilir.

URLSearchParms bir sorğu sətrindən dəyərləri asanlıqla əldə etməyə imkan verir.

Nümunə sorğu sətri: example.com/index.html?id=1

URLSearchParams sizə geri verəcək: {'id' = '1'}

> URLSearchParams nümunəsi

Arxa tərəf

Arxa plan bir çox kitabxana ilə birlikdə Python -da yazılmışdır.

İdxal etdiyimiz ilk kitabxana 'Flask' dır. Bu kitabxana bir API yaratmaq, MySQL verilənlər bazası üçün bütün CRUD hərəkətlərini etmək üçün lazımdır. CRUD, Oxu Yeniləmə Silmək Yaratmaq deməkdir.

> Şüşə

Yuxarıdakı şəkil bir neçə Flask 'marşrutu' göstərir. Bir marşrutda gəzərək avtomatik olaraq 'GET' metodu edəcəksiniz, kod icra ediləcək və dəyəri metodu geri qaytaracaqsınız. 'POST' və 'SİL' kimi başqa üsullar da var. Bu cür üsulları sınamaq üçün Postman kimi bir proqrama ehtiyacınız olacaq.

Növbəti idxal kitabxanası, SocketIO -dur, bunu artıq ön hissədə izah etmişəm.

Sonrakı GPIO.

Bu, Rapsberry Pi -nin GPIO sancaqlarını idarə etməyə imkan verir.

Ən vacib əmrlər bunlardır:

  • GPIO.setmode (GPIO. BCM) Sancaqlar konfiqurasiyasını seçin.
  • GPIO.output (, GPIO. LOW və ya GPIO. HIGH) Bir pin üçün LOW və ya HIGH yazın.
  • GPIO.setup (,) Bir PIN -i giriş və ya çıxış, ya da açılan və ya açılan kimi təyin edin

Sonrakı işimiz var.

İstifadə etdiyimiz tək əmrlər bunlardır:

  • Mövzu (hədəf =)
  • .başlamaq()

Mövzulardan istifadə edərək eyni anda birdən çox kod nümunəsi işlədə bilərik. Bu şəkildə məsafəni ölçə bilərik və eyni zamanda gələn yuva io mesajlarını dinləyə bilərik.

Thread (target =) ilk əmri, 'start ()' istifadə etməyə başladıqdan sonra, sinifin yaradılmasında verilən 'target' açar sözündəki funksiyanı işlədəcək bir Thread sinfi yaradacaq.

Daha sonra olduqca düz olan rəng sensoru kitabxanasına sahibik. Bu kitabxananı izah etməyəcəyəm, çünki metodlar çox aydındır və kodda izah edilmişdir.

Son olaraq netifaces var. Bu, Simsiz və Simli əlaqə üçün istifadə etdiyimiz IP ünvanını əldə etməyimizi təmin edir.

Son olaraq məsafə sensoru, LED və LCD üçün bir neçə dərs hazırladım.

Bunun necə işlədiyini izah etməyəcəyəm.

Addım 9: Adım 9: Dava Yarat

Addım 9: Dava Yarat
Addım 9: Dava Yarat
Addım 9: Dava Yarat
Addım 9: Dava Yarat
Addım 9: Dava Yarat
Addım 9: Dava Yarat

Bu layihə üçün taxta bir qutu hazırladım.

Ağac yüngül, incədir və çox xərc tələb etmir.

İstifadə etdiyim ölçülər kimi:

  • Hündürlük: 5 sm
  • Genişlik: 10.5 sm
  • Uzunluq: 12.5 sm

Sensorlar üçün 2 deşik əlavə etməli və onları bir -birinin yanında yerləşdirməlisiniz.

Çantanı yaratdıqdan sonra sensorlar, LED və LCD quraşdırın.

Addım 10: Son addımlar

Əsasən hər şey edilir.

İndi yalnız kodumuzun güc mənbəyimizi bağladığımız anda başladığından əmin olmalıyıq.

Bunu etmək üçün bir çox üsul var.

> Nümunələr

Birinci üsuldan istifadə edəcəyik:

Bu sətri icra edin: 'sudo nano /etc/rc.local'

Kodu çalıştırmak üçün əmrinizi əlavə edin: 'sudo python3'

Ctrl-X istifadə edərək faylı qeyd edin.

Redaktə etməkdə probleminiz varsa. Bu addımı təkrarlayın, amma əvvəlcə 'sudo -i' icra edin.

Tövsiyə: