Isi kandungan:

ColorPicker: 10 Langkah
ColorPicker: 10 Langkah

Video: ColorPicker: 10 Langkah

Video: ColorPicker: 10 Langkah
Video: best software to pick color on screen : Just Color Picker 2024, November
Anonim
Pemilih Warna
Pemilih Warna

Matlamat projek ini adalah untuk mengukur warna, dan menerjemahkannya ke sistem warna lain. Dengan hanya menggunakan nilai RGB yang diberikan oleh sensor, anda boleh menterjemahkan ke HSL, CYMK, HEX dan juga kod RAL terdekat (standard yang digunakan untuk cat). Projek ini memerlukan pengetahuan asas mengenai Python, MySQL, Linux dan Javascript.

Sekiranya anda juga biasa dengan kerangka kerja Flask dan SocketIO, maka kod untuk projek ini semestinya mudah difahami untuk anda.

Projek ini boleh digunakan oleh pelukis, pereka interiour atau hanya oleh sesiapa sahaja yang perlu mengukur warna.

Projek ini tidak begitu mahal, dan berharga _ €, penghantaran tidak termasuk.

Bekalan

Kita boleh membahagikan bahagian ini dalam dua bahagian:

  • Perkakasan
  • Perisian

Perkakasan

Kami menggunakan komponen berikut

  • HC04: Sensor jarak, sejauh mana kita mengukur dari objek
  • Paparan LCD 2x16
  • Modul LCD I2C (HW061)
  • Modul sensor warna TCS34725 (Adafruit)
  • LED Putih
  • Raspberry Pi 3 (Mana-mana Raspberry Pi mesti berfungsi)
  • Perintang Ohm 5x 1k
  • Perintang 1x 220 atau 330 Ohm
  • Kad SD 16GB (14.4GB)

Perisian

  • Python IDE, seperti Visual Code atau Pycharm (Pycharm digunakan di sini)
  • Meja Kerja MySQL
  • Putty (Muat turun Putty)
  • Rufus atau penulis kad SD lain (Muat turun Rufus)

Harga

Projek ini agak murah, jika anda sudah mempunyai Rapsberry Pi.

  • HC04: Bermula sekitar € 2.5 euro (China) dan hingga € 6 untuk lebih banyak kedai tempatan.
  • LCD: Sekitar 6-8 euro.
  • Modul I2C: Murah di bawah € 1 (China), tetapi sehingga € 4 untuk lebih banyak kedai tempatan.
  • TCS34725: Sekitar € 9-12 euro. Bahagian paling mahal (Tidak termasuk RPi)
  • Putih dipimpin: Dibeli secara pukal, 20 LED dengan harga serendah € 1
  • Raspberry Pi: Bergantung pada versi mana, sekitar € 40 euro
  • Perintang: € 0.10 untuk satu perintang
  • Kad SD: sekitar € 8

Penyesuai kuasa untuk Raspberry Pi tidak termasuk dalam kos harga, kerana penyesuai ini agak biasa.

Julat harga keseluruhan: sekitar € 70, jika anda memasukkan Raspberry Pi dan sarung untuk projek tersebut.

Untuk membina sarung itu, saya menggunakan kayu nipis ringan. Saya mengitar semula kayu ini dari perabot. Bahan untuk kes itu terpulang kepada anda.

Langkah 1: Langkah 1: Memasang RPi OS, Mengkonfigurasi SSH dan Akses Internet

Langkah 1: Memasang RPi OS, Mengkonfigurasi SSH dan Akses Internet
Langkah 1: Memasang RPi OS, Mengkonfigurasi SSH dan Akses Internet
Langkah 1: Memasang RPi OS, Mengkonfigurasi SSH dan Akses Internet
Langkah 1: Memasang RPi OS, Mengkonfigurasi SSH dan Akses Internet
Langkah 1: Memasang RPi OS, Mengkonfigurasi SSH dan Akses Internet
Langkah 1: Memasang RPi OS, Mengkonfigurasi SSH dan Akses Internet
Langkah 1: Memasang RPi OS, Mengkonfigurasi SSH dan Akses Internet
Langkah 1: Memasang RPi OS, Mengkonfigurasi SSH dan Akses Internet

Langkah 1.1: Memasang gambar

Muat turun gambar dari laman rasmi Raspberry Pi. Tidak kira imej yang anda pasang. Untuk projek ini, GUI tidak diperlukan, kerana kami hanya akan berhubung menggunakan SSH.

Tulis gambar ke kad SD (kosong) (Semua fail pada kad akan dipadamkan).

Untuk menulis semuanya ke kad SD, kami akan menggunakan alat yang dipanggil 'Rufus'. Setelah memuat turun gambar, buka Rufus dan pilih fail gambar. Pilih pemacu sasaran dan tulis gambar ke pemacu. Ini boleh mengambil masa sedikit.

> Rufus

Langkah 1.2: Memasang SSH

Langkah seterusnya ialah membuat sambungan ke kad SD. Untuk melakukan itu, kita perlu mengaktifkan SSH.

Untuk melakukannya tanpa menggunakan monitor, buka penjelajah fail anda dan buka partisi but kad SD. Buat fail kosong yang disebut "ssh", tanpa perluasan fail.

Buka juga "cmdline.txt"

Tambahkan "169.254.10.1" di akhir fail dan simpan.

Lepaskan kad SD dan masukkan ke dalam Raspberry Pi.

Sekarang kita dapat menyambungkan Raspberry Pi ke sumber kuasa dan boot dan sambungkan menggunakan SSH.

Untuk berhubung menggunakan SSH, kami menggunakan program "Putty". Sambungkan RPi dan PC anda menggunakan kabel ehternet sebelum melakukannya. Buka Putty dan pergi ke tab SSH, dan isikan IP ini: 169.254.10.1. Klik 'sambung' dan anda akan dihubungkan.

> Dempul

Log masuk lalai yang digunakan oleh Raspberry Pi adalah 'pi' sebagai nama pengguna dan 'raspberry' untuk kata laluan.

Langkah 1.3: Sambungan tanpa wayar

Raspberry Pi anda kini dihidupkan.

Kami juga ingin menyambung ke RPi menggunakan Wifi, dengan cara itu kami tidak lagi memerlukan kabel ethernet.

Jalankan baris berikut:

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

Ini akan membuka editor teks 'nano' dengan hak tinggi.

Tambahkan baris berikut dalam fail:

rangkaian = {

ssid = "SSID"

psk = "Kata Laluan"

}

Ganti "SSID" dengan SSID rangkaian Wifi anda

Ganti "Kata Laluan" dengan kata laluan anda.

Kemudian lakukan Ctrl + X dan pilih pilihan 'ya'. Fail sekarang akan disimpan.

Sekarang kita perlu memulakan semula perkhidmatan rangkaian

Laksanakan perintah berikut:

  • 'sudo -i'
  • 'sudo systemctl mulakan semula rangkaian'

Anda boleh menguji sambungan internet anda menggunakan perintah wget.

Contoh: 'wget google.com'

> Wget arahan

Langkah 2: Langkah 2: Memasang Perisian pada RPi

Untuk projek ini, kita perlu memasang beberapa perpustakaan.

  • Mariadb: Pangkalan data MySQL (sudo apt-get install mariadb-server)
  • Perpustakaan Adafruit untuk sensor warna: Mengukur warna (pip3 memasang adafruit-circuitpython-tcs34725)
  • PHPmyAdmin: ('sudo apt install phpmyadmin', pilih server web apache)

Pasang juga perpustakaan pip berikut:

  • kelalang_socketio
  • kelalang
  • termos_cors
  • papan
  • busio
  • muka jaring

Langkah 3: Langkah 3: Menyambung ke Pangkalan Data MySQL, Membuat Pangkalan Data

Langkah 3: Menyambung ke Pangkalan Data MySQL, Membuat Pangkalan Data
Langkah 3: Menyambung ke Pangkalan Data MySQL, Membuat Pangkalan Data
Langkah 3: Menyambung ke Pangkalan Data MySQL, Membuat Pangkalan Data
Langkah 3: Menyambung ke Pangkalan Data MySQL, Membuat Pangkalan Data
Langkah 3: Menyambung ke Pangkalan Data MySQL, Membuat Pangkalan Data
Langkah 3: Menyambung ke Pangkalan Data MySQL, Membuat Pangkalan Data

Langkah seterusnya, adalah menyambung ke pangkalan data MySQL menggunakan meja kerja MySQL.

> IP a

Jalankan perintah 'ip a', seperti yang ditunjukkan pada gambar di atas (Klik pautan)

Dalam kebanyakan situasi, akan ditunjukkan 3 entri. Kami memerlukan entri 'wlan0'. Salin IP di sebelah 'inet', atau dalam contoh ini '192.168.1.44'

. >> Buat sambungan baru

Seperti yang ditunjukkan dalam gambar di atas, buat sambungan baru dengan parameter berikut (Gambar di bawah untuk param)

> Parameter sambungan

Klik dua kali connecton yang baru dibuat untuk menyambung.

Sekiranya terdapat arahan, klik 'Ya'.

Ini masih merupakan pangkalan data kosong, jadi mari kita tambahkan beberapa jadual.

Pertama buat skema, untuk melakukannya, di sebelah kiri 'klik kanan' dan pilih 'buat skema'.

Beri nama skema dan sahkan.

Sekarang kita perlu menambah jadual. Kembangkan skema dan 'klik kanan', 'jadual'.

Buat skema berikut:

> Jadual 1: Warna RAL

> Jadual 2: Jenis sensor

> Jadual 3: Pengukuran (Dalam gambar, 'metingen' digunakan, Belanda untuk pengukuran)

> Jadual 4: Data_data laman web || Jadual 4 bawah

MySQL adalah sistem pangkalan data hubungan, yang bermaksud kita dapat menjalin hubungan antara jadual.

Hubungan pertama yang harus kita buat adalah antara 'sensor_type' dan 'pengukuran'.

Seperti yang ditunjukkan dalam gambar, pautkan dua kekunci.

> Edit jadual & kunci pautan

Jangan lupa menyimpan perubahan dengan mengklik 'Terapkan' di sudut bawah.

Edit juga jadual 'website_data' dan pautkan 'MetingID'.

Sekarang kita selesai dengan membuat jadual dan menjalin hubungan.

Menambah data:

Jadual RALcolors adalah jadual tetap, di mana nilainya tidak akan pernah berubah. Kita boleh menambah nilai-nilai ini

sangat mudah.

> Muat turun fail Excel

Muat turun fail excel di atas dan pilih semua data dan 'salin'. Suka seperti dalam gambar

> Tunjukkan jadual

'klik kanan' di atas meja dan pilih 'Tampal baris'. 'klik' 'terapkan' di sudut bawah untuk menambahkan data.

Sekarang semua RALcolors disimpan dalam pangkalan data.

Kita hanya perlu menambahkan jenis sensor_ ke pangkalan data sekarang.

> Data sensortype

Catatan: Keterangan sensor terdapat dalam 'Belanda'

Langkah 4: Langkah 4: Filezilla

Langkah 4: Filezilla
Langkah 4: Filezilla

Untuk menyambung ke Raspberry Pi dan memindahkan fail dengan mudah, kita dapat menggunakan Filezilla.

> Muat turun Filezilla

Failkan dalam maklumat sambungan dan sambungkan. Di sebelah kanan anda kini boleh memindahkan fail dengan menyeretnya masuk.

> Sumber Github

Muat turun fail dari sumber github di atas.

Langkah 5: Langkah 5: Membuat Laman Web

Langkah 5: Membuat Laman Web
Langkah 5: Membuat Laman Web
Langkah 5: Membuat Laman Web
Langkah 5: Membuat Laman Web

Untuk hosting laman web, kami menggunakan PHPmyAdmin dan Apache2.

Pelayan laman web pada Raspberry Pi menggunakan direktori '/ var / www / html' sebagai root.

Sekiranya anda meletakkan fail anda di sana, fail tersebut akan dihoskan di IP Raspberry Pi. (IP = lihat 'ip a')

Anda boleh memuat turun fail yang diperlukan dari repo github saya (langkah sebelumnya)

Di '/ var / www / html /', tampal semua fail dari folder 'Frontend'.

> / var / www / html /

Langkah 6: Langkah 6: Membuat Backend (Flask)

Backend laman web berdasarkan Flask.

Semua fail boleh didapati di repo github.

Salin semua fail ke mana-mana direktori di Raspberry Pi.

Contohnya '/ home / pi / colorpicker.

Untuk membuat direktori, arahkan ke direktori tujuan menggunakan 'cd', dan kemudian jalankan 'mkdir'.

Itu sahaja buat masa ini. Kodnya akan dijelaskan pada langkah seterusnya.

Langkah 7: Langkah 7: Perkakasan

> Skema muat turun

Buat skema seperti yang ditunjukkan dalam dokumen di atas.

CATATAN: Juga tambahkan satu LED putih, dengan satu perintang (220 atau 330 Ohms).

Menjelaskan perkakasan

HC04

Sensor HC04 memancarkan gelombang, yang memantulkan dan diterima semula oleh sensor.

Dengan mengira delta masa antara emit dan penerimaan, kita dapat mengira jaraknya.

Jarak = ((Cap Tim_recieve - Cap Waktu_emit) / kelajuan bunyi) / 2

Kami membahagi dua kerana gelombang memantulkan, yang bermaksud jarak perjalanan dua kali.

LCD

Kami menggunakan paparan LCD untuk menunjukkan RGB dan HEX, sebagai IP ketika program bermula.

Untuk LCD ini, saya membeli modul I2C. Kami hanya memerlukan 4 wayar sekarang. SDA, SCL, GND, VCC

Untuk menggunakan LCD ini, saya menulis kelas Python, untuk memudahkan penggunaannya.

TCS34725

Sensor ini membolehkan anda mengukur warna. Kami menggunakan perpustakaan untuk mengukur nilai RGB.

Langkah 8: Langkah 8: Terangkan Kod

Langkah 8: Kod Dijelaskan
Langkah 8: Kod Dijelaskan
Langkah 8: Kod Diterangkan
Langkah 8: Kod Diterangkan
Langkah 8: Kod Diterangkan
Langkah 8: Kod Diterangkan
Langkah 8: Kod Diterangkan
Langkah 8: Kod Diterangkan

Bahagian depan

Bahagian depan wujud daripada tiga bahagian utama.

Pertama adalah fail html, yang membina struktur laman web kami, tetapi tidak mengandungi atau susun atur yang minimum.

Kedua, kita mempunyai fail css, atau file gaya, yang gaya dan susun atur laman web kita.

Kedua-duanya cukup mudah dibaca dan difahami, sebab itulah saya tidak akan menerangkannya.

Terakhir kami mempunyai Javascript, dengan dua perpustakaan.

Dua perpustakaan yang digunakan adalah SocketIO dan URLSearchParams.

SocketIO membolehkan anda menghantar mesej dari backend ke frontend, dan sebaliknya.

Mesej boleh dihantar kepada satu pelanggan, tetapi juga beberapa pelanggan (Siaran)

> Soket IO Javascript

> Soket IO Python

Dalam gambar di atas, anda dapat melihat salah satu sambungan Socket yang dibuat dalam projek ini.

Perintah untuk menghantar mesej adalah 'emit', penerimaan dilakukan oleh 'on'.

URLSearchParms membolehkan anda mendapatkan nilai dari querystring dengan mudah.

Contoh pertanyaan: contoh.com/index.html?id=1

URLSearchParams akan memberi anda kembali: {'id' = '1'}

> Contoh URLSearchParams

Bahagian belakang

Bahagian belakang ditulis sepenuhnya dalam Python, dengan banyak perpustakaan.

Perpustakaan pertama yang kami import adalah 'Flask'. Perpustakaan ini diperlukan untuk membuat API, untuk melakukan semua tindakan CRUD untuk pangkalan data MySQL. CRUD bermaksud Buat Hapus Kemas kini Baca Baca.

> Kelalang

Gambar di atas menunjukkan beberapa 'laluan' Flask. Dengan melayari ke laluan, anda secara automatik akan melakukan kaedah 'GET', kod akan dilaksanakan dan anda akan menerima nilai dari kaedah kembali. Terdapat juga kaedah lain, seperti 'POST' dan 'DELETE'. Untuk menguji kaedah tersebut, anda memerlukan program seperti Postman.

Perpustakaan import seterusnya adalah SocketIO, yang saya jelaskan sudah ada di bahagian hujung depan.

Seterusnya adalah GPIO.

Ini membolehkan anda mengawal pin GPIO dari Rapsberry Pi.

Perintah yang paling penting adalah:

  • GPIO.setmode (GPIO. BCM) Pilih konfigurasi pin.
  • GPIO.output (, GPIO. LOW atau GPIO. HIGH) Tulis RENDAH atau TINGGI ke pin.
  • GPIO.setup (,) Tentukan PIN sebagai input atau output, atau pulldown atau pullup

Seterusnya kita mempunyai threading.

Satu-satunya arahan yang kami gunakan adalah:

  • Benang (sasaran =)
  • mulakan ()

Dengan menggunakan utas, kita dapat menjalankan beberapa contoh kod pada masa yang sama. Dengan cara ini kita dapat mengukur jarak dan pada masa yang sama, mendengar mesej io soket masuk.

Perintah pertama Thread (target =) akan membuat kelas Thread, yang setelah mula menggunakan 'start ()', akan menjalankan fungsi dalam kata kunci 'target', yang diberikan pada penciptaan kelas.

Seterusnya kita mempunyai perpustakaan sensor warna, yang agak lurus ke hadapan. Saya tidak akan menjelaskan perpustakaan ini, kerana kaedahnya sangat jelas dan dijelaskan dalam kodnya.

Terakhir kami mempunyai netifaces. Ini membolehkan kami mendapatkan semula alamat IP yang kami gunakan untuk sambungan Tanpa Wayar dan Berwayar.

Terakhir saya membuat beberapa kelas sendiri untuk sensor jarak, LED dan LCD.

Saya tidak akan menerangkan bagaimana ia berfungsi.

Langkah 9: Langkah 9: Membuat Kes

Langkah 9: Membuat Kes
Langkah 9: Membuat Kes
Langkah 9: Membuat Kes
Langkah 9: Membuat Kes
Langkah 9: Membuat Kes
Langkah 9: Membuat Kes

Untuk projek ini, saya membuat sarung kayu.

Kayu itu ringan, nipis dan tidak memerlukan banyak kos.

Sebagai dimensi yang saya gunakan:

  • Tinggi: 5 cm
  • Lebar: 10.5cm
  • Panjang: 12.5cm

Untuk sensor, anda perlu menambah 2 lubang dan meletakkannya di sebelah satu sama lain.

Setelah membuat casing, pasang sensor, LED dan LCD.

Langkah 10: Langkah Akhir

Semuanya dilakukan secara asas.

Sekarang kita hanya perlu memastikan bahawa kod kita bermula, pada saat kita memasangkan sumber kuasa kita.

Terdapat banyak kaedah untuk melakukan ini.

> Contoh

Kami akan menggunakan kaedah pertama:

Jalankan baris ini: 'sudo nano /etc/rc.local'

Tambahkan arahan anda untuk menjalankan kod: 'sudo python3'

Simpan fail menggunakan Ctrl-X.

Sekiranya anda menghadapi masalah menyunting. Lakukan semula langkah ini, tetapi jalankan terlebih dahulu 'sudo -i'.

Disyorkan: