Orodha ya maudhui:

ColourPicker: Hatua 10
ColourPicker: Hatua 10

Video: ColourPicker: Hatua 10

Video: ColourPicker: Hatua 10
Video: Семья Грабовенко (часть 1). Хата на тата. Сезон 6. Выпуск 11 от 20.11.2017 2024, Oktoba
Anonim
ColourPicker
ColourPicker

Lengo la mradi huu ni kupima rangi, na kuzitafsiri kwa mifumo mingine ya rangi. Kutumia tu maadili ya RGB yaliyotolewa na sensor, unaweza kutafsiri kwa HSL, CYMK, HEX na pia nambari ya RAL iliyo karibu (kiwango kinachotumika kwa rangi). Mradi huu unahitaji ujuzi wa kimsingi wa Python, MySQL, Linux na Javascript.

Ikiwa unajua pia mfumo wa Flask na SocketIO, basi nambari ya mradi huu inapaswa kuwa rahisi kuelewa kwako.

Mradi huu unaweza kutumiwa na wachoraji, wabuni wa mambo ya ndani au tu na mtu yeyote anayehitaji kupima rangi.

Mradi huu sio ghali sana, na hugharimu makadirio ya _ euro, usafirishaji haujumuishwa.

Vifaa

Tunaweza kugawanya sehemu hii katika sehemu mbili:

  • Vifaa
  • Programu

Vifaa

Tunatumia vifaa vifuatavyo

  • HC04: sensa ya umbali, ni umbali gani tunapima kutoka kwa kitu
  • Kuonyesha LCD 2x16
  • Moduli ya LCD I2C (HW061)
  • Moduli ya sensa ya rangi ya TCS34725 (Adafruit)
  • LED nyeupe
  • Raspberry Pi 3 (Pi yoyote ya Raspberry inapaswa kufanya kazi)
  • 5x 1k Ohm kupinga
  • 1x 220 au 330 Ohm kupinga
  • Kadi ya SD 16GB (14.4GB)

Programu

  • IDE ya chatu, kama Nambari ya kuona au Pycharm (Pycharm iliyotumika hapa)
  • Workbench ya MySQL
  • Putty (Pakua Putty)
  • Rufo au mwandishi mwingine yeyote wa kadi ya SD (Pakua Rufus)

Bei

Mradi huu ni wa bei rahisi kabisa, ikiwa tayari unayo Rapsberry Pi.

  • HC04: Kuanzia karibu euro 2.5 (China) na hadi € 6 kwa maduka zaidi ya hapa.
  • LCD: Karibu euro 6-8.
  • Moduli ya I2C: Kama bei rahisi chini ya € 1 (China), lakini hadi € 4 kwa maduka zaidi ya hapa.
  • TCS34725: Karibu € 9-12 euro. Sehemu ghali zaidi (Ukiondoa RPi)
  • Nyeupe iliongozwa: Imenunuliwa kwa wingi, 20 LEDS chini kama € 1
  • Raspberry Pi: Kulingana na toleo gani, karibu euro 40
  • Kizuizi: € 0.10 kwa kontena moja
  • Kadi ya SD: karibu € 8

Adapta ya nguvu ya Raspberry Pi imetengwa kwa gharama ya bei, kwani adapta hii ni ya kawaida.

Kiwango cha bei kadhaa: karibu € 70, ikiwa umejumuisha Raspberry Pi na kesi ya mradi huo.

Ili kujenga kesi hiyo, nilitumia kuni nyembamba nyepesi. Nilisindika kuni hii kutoka kwa fanicha. Nyenzo za kesi hiyo ni juu yako.

Hatua ya 1: Hatua ya 1: Kuweka RPi OS, Kusanidi SSH na Upataji wa Mtandao

Hatua ya 1: Kuweka RPi OS, Kusanidi SSH na Ufikiaji wa Mtandao
Hatua ya 1: Kuweka RPi OS, Kusanidi SSH na Ufikiaji wa Mtandao
Hatua ya 1: Kuweka RPi OS, Kusanidi SSH na Ufikiaji wa Mtandao
Hatua ya 1: Kuweka RPi OS, Kusanidi SSH na Ufikiaji wa Mtandao
Hatua ya 1: Kuweka RPi OS, Kusanidi SSH na Ufikiaji wa Mtandao
Hatua ya 1: Kuweka RPi OS, Kusanidi SSH na Ufikiaji wa Mtandao
Hatua ya 1: Kuweka RPi OS, Kusanidi SSH na Ufikiaji wa Mtandao
Hatua ya 1: Kuweka RPi OS, Kusanidi SSH na Ufikiaji wa Mtandao

Hatua 1.1: Kusanikisha picha

Pakua picha kutoka kwa tovuti rasmi ya Raspberry Pi. Haijalishi ni picha gani unayoweka. Kwa mradi huu, GUI haihitajiki, kwani tutaunganisha tu kwa kutumia SSH.

Andika picha kwenye kadi ya SD (tupu) (Faili zote kwenye kadi zitafutwa).

Kuandika kila kitu kwenye kadi ya SD, tutatumia zana inayoitwa 'Rufus'. Baada ya kupakua picha, fungua Rufo na uchague faili ya picha. Chagua gari lengwa na andika picha kwenye gari. Hii inaweza kuchukua muda.

> Rufo

Hatua ya 1.2: Kuweka SSH

Hatua inayofuata ni kuunda unganisho kwa kadi ya SD. Ili kufanya hivyo, tunahitaji kuwezesha SSH.

Ili kufanya hivyo bila kutumia mfuatiliaji, fungua kichunguzi chako cha faili na ufungue kizigeu cha buti cha kadi ya SD. Unda faili tupu iitwayo "ssh", bila ugani wa faili.

Pia, fungua "cmdline.txt"

Ongeza "169.254.10.1" mwishoni mwa faili na uihifadhi.

Punguza kadi ya SD na uiingize kwenye Raspberry Pi.

Sasa tunaweza kuunganisha Raspberry Pi kwenye chanzo cha nguvu na kuanza na kuungana kwa kutumia SSH.

Ili kuunganisha kwa kutumia SSH, tunatumia programu "Putty". Unganisha RPi yako na PC kwa kutumia kebo ya ehternet kabla ya kufanya hivyo. Fungua Putty na uende kwenye kichupo cha SSH, na ujaze IP hii: 169.254.10.1. Bonyeza 'unganisha' na utaunganishwa.

> Putty

Kuingia kwa chaguo-msingi kutumiwa na Raspberry Pi ni 'pi' kama jina la mtumiaji na 'rasipiberi' kwa nenosiri.

Hatua ya 1.3: Uunganisho wa waya

Pi yako ya Raspberry sasa imewashwa.

Tunataka pia kuungana na RPi kwa kutumia Wifi, kwa hivyo hatuhitaji kebo ya ethernet tena.

Tekeleza mstari ufuatao:

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

Hii itafungua kihariri cha maandishi cha 'nano' na haki zilizoinuliwa.

Ongeza mistari ifuatayo kwenye faili:

mtandao = {

ssid = "SSID"

psk = "Nenosiri"

}

Badilisha "SSID" na SSID ya mtandao wako wa Wifi

Badilisha "Nywila" na nywila yako.

Kisha fanya Ctrl + X na uchague chaguo la 'ndio'. Faili sasa itahifadhiwa.

Sasa tunahitaji kuanzisha tena huduma ya mitandao

Tekeleza amri zifuatazo:

  • 'sudo -i'
  • 'Sudo systemctl kuanzisha tena mitandao'

Unaweza kujaribu unganisho lako la mtandao ukitumia amri ya wget.

Mfano: 'wget google.com'

> Wget amri

Hatua ya 2: Hatua ya 2: Kufunga Programu kwenye RPi

Kwa mradi huu tunahitaji kufunga maktaba kadhaa.

  • Mariadb: Hifadhidata ya MySQL (Sudo apt-get install mariadb-server)
  • Maktaba ya Adafruit ya sensa ya rangi: Kupima rangi (pip3 sakinisha adafruit-circuitpython-tcs34725)
  • PHPmyAdmin: ('sudo apt phpmyadmin', chagua apache webserver)

Pia funga maktaba zifuatazo za bomba:

  • flask_socketio
  • chupa
  • flask_cors
  • bodi
  • busio
  • nyavu

Hatua ya 3: Hatua ya 3: Kuunganisha kwenye Hifadhidata ya MySQL, Kuunda Hifadhidata

Hatua ya 3: Kuunganisha kwenye Hifadhidata ya MySQL, Kuunda Hifadhidata
Hatua ya 3: Kuunganisha kwenye Hifadhidata ya MySQL, Kuunda Hifadhidata
Hatua ya 3: Kuunganisha kwenye Hifadhidata ya MySQL, Kuunda Hifadhidata
Hatua ya 3: Kuunganisha kwenye Hifadhidata ya MySQL, Kuunda Hifadhidata
Hatua ya 3: Kuunganisha kwenye Hifadhidata ya MySQL, Kuunda Hifadhidata
Hatua ya 3: Kuunganisha kwenye Hifadhidata ya MySQL, Kuunda Hifadhidata

Hatua inayofuata, ni kuungana na hifadhidata ya MySQL ukitumia benchi ya kazi ya MySQL.

> IP a

Tekeleza amri 'ip a', kama inavyoonyeshwa kwenye picha hapo juu (Bonyeza kiungo)

Katika hali nyingi, kutakuwa na maonyesho 3. Tunahitaji kuingia kwa 'wlan0'. Nakili IP karibu na 'inet', au kwa mfano huu '192.168.1.44'

. >> Unda muunganisho mpya

Kama inavyoonyeshwa kwenye picha hapo juu, tengeneza unganisho mpya na vigezo vifuatavyo (Picha hapa chini kwa vifungu)

Vigezo vya uunganisho

Bonyeza mara mbili kiunganishi kipya ili kuunganisha.

Ikiwa kuna onyesho la haraka, bonyeza 'Ndio'.

Hii bado ni hifadhidata tupu, kwa hivyo wacha tuongeze meza kadhaa.

Kwanza tengeneza schema, kufanya hivyo, upande wa kushoto 'bonyeza kulia' na uchague 'unda schema'.

Ipe jina schema na uthibitishe.

Sasa tunahitaji kuongeza meza. Panua schema na 'bonyeza-kulia', 'meza'.

Unda schema ifuatayo:

Jedwali 1: RALcolors

Jedwali 2: Aina za sensorer

Jedwali 3: Vipimo (Kwenye picha, 'metingen' hutumiwa, Uholanzi kwa vipimo)

Jedwali 4: Tovuti_data || Jedwali 4 chini

MySQL ni mfumo wa hifadhidata ya uhusiano, hiyo inamaanisha tunaweza kuunda uhusiano kati ya meza.

Uhusiano wa kwanza ambao tunapaswa kuunda ni kati ya 'sensor_type' na 'vipimo'.

Kama inavyoonyeshwa kwenye picha, unganisha funguo mbili.

> Hariri meza na funguo za kiungo

Usisahau kuhifadhi mabadiliko kwa kubofya 'Weka' kwenye kona ya chini.

Pia hariri meza ya "tovuti_data" na unganisha 'MetingID'.

Sasa tumemaliza na kuunda meza na kuunda uhusiano.

Inaongeza data:

Jedwali la RALcolors ni meza iliyowekwa, ambapo maadili hayatabadilika kamwe. Tunaweza kuongeza maadili haya

kwa urahisi sana.

> Pakua faili ya Excel

Pakua faili bora kuliko zote hapo juu na uchague data yote na 'nakili'. Fanya kama kwenye picha

> Onyesha meza

'bonyeza-kulia' kwenye meza na uchague 'Bandika safuwima'. 'bonyeza' 'kuomba' kwenye kona ya chini ili kuongeza data.

Sasa RALcolors zote zimehifadhiwa kwenye hifadhidata.

Tunahitaji tu kuongeza sensor_type kwenye hifadhidata sasa.

Data ya aina

Kumbuka: Maelezo ya sensa iko katika 'Kiholanzi'

Hatua ya 4: Hatua ya 4: Filezilla

Hatua ya 4: Filezilla
Hatua ya 4: Filezilla

Ili kuunganisha kwa urahisi kwenye Raspberry Pi na kuhamisha faili, tunaweza kutumia Filezilla.

> Pakua Filezilla

Faili katika maelezo ya unganisho na unganisha. Kwenye upande wa kulia sasa unaweza kuhamisha faili kwa kuziingiza.

Chanzo cha Github

Pakua faili kutoka kwa chanzo cha github hapo juu.

Hatua ya 5: Hatua ya 5: Kuunda Wavuti

Hatua ya 5: Kuunda Wavuti
Hatua ya 5: Kuunda Wavuti
Hatua ya 5: Kuunda Wavuti
Hatua ya 5: Kuunda Wavuti

Kwa mwenyeji wa wavuti, tunatumia PHPmyAdmin na Apache2.

Mtandao kwenye Raspberry Pi hutumia saraka ya '/ var / www / html' kama mizizi.

Ikiwa utaweka faili zako hapo, zitashikiliwa kwenye IP ya Raspberry Pi. (IP = tazama 'ip a')

Unaweza kupakua faili zinazohitajika kutoka kwa github repo yangu (hatua ya awali)

Katika '/ var / www / html /', weka faili zote kutoka kwa folda ya 'Frontend'.

> / var / www / html /

Hatua ya 6: Hatua ya 6: Kuunda Backend (Flask)

Backend ya wavuti inategemea Flask.

Faili zote zinaweza kupatikana kwenye repo ya github.

Nakili faili zote kwa saraka yoyote kwenye Raspberry Pi.

Kwa mfano '/ home / pi / colorpicker.

Ili kuunda saraka, nenda kwenye saraka ya marudio ukitumia 'cd', na kisha fanya 'mkdir'.

Hiyo ni yote kwa sasa. Nambari hiyo itaelezewa katika hatua zifuatazo.

Hatua ya 7: Hatua ya 7: Vifaa

> Pakua mpango

Unda mpango kama ilivyoonyeshwa kwenye hati hapo juu.

KUMBUKA: Pia ongeza LED moja nyeupe, na kontena moja (220 au 330 Ohms).

Kuelezea vifaa

HC04

Sensor ya HC04 hutoa mawimbi, ambayo huakisi na hupokelewa tena na sensa.

Kwa kuhesabu wakati wa delta kati ya kutoa na kupokea, tunaweza kuhesabu umbali.

Umbali = ((Timestamp_recieve - Timestamp_emit) / kasi ya sauti) / 2

Tunagawanyika kwa mbili kwa sababu wimbi linaonyesha, ikimaanisha linasafiri umbali mara mbili.

LCD

Tunatumia onyesho la LCD kuonyesha RGB na HEX, kama wel IP wakati mpango unapoanza.

Kwa LCD hii, nilinunua moduli ya I2C. Tunahitaji tu waya 4 sasa. SDA, SCL, GND, VCC

Kutumia LCD hii, niliandika darasa la chatu, ili iwe rahisi kutumia.

TCS34725

Sensor hii hukuruhusu kupima rangi. Tunatumia maktaba kupima thamani ya RGB.

Hatua ya 8: Hatua ya 8: Kanuni Imefafanuliwa

Hatua ya 8: Kanuni Imefafanuliwa
Hatua ya 8: Kanuni Imefafanuliwa
Hatua ya 8: Kanuni Imefafanuliwa
Hatua ya 8: Kanuni Imefafanuliwa
Hatua ya 8: Kanuni Imefafanuliwa
Hatua ya 8: Kanuni Imefafanuliwa
Hatua ya 8: Kanuni Imefafanuliwa
Hatua ya 8: Kanuni Imefafanuliwa

Mbele

Mbele iko nje ya sehemu kuu tatu.

Kwanza ni faili za html, ambazo zinaunda muundo wa wavuti yetu, lakini hazina mpangilio mdogo.

Pili tuna faili za css, au faili za mtindo, ambayo mtindo na mpangilio wa wavuti yetu.

Hizi mbili ni rahisi kusoma na kuelewa, ndiyo sababu sitawaelezea.

Mwisho tuna Javascript, na maktaba mbili.

Maktaba mawili yaliyotumiwa ni SocketIO na URLSearchParams.

SocketIO hukuruhusu kutuma ujumbe kutoka nyuma kwenda mbele, na kinyume chake.

Ujumbe unaweza kutumwa kwa mteja mmoja, lakini pia wateja wengi (Broadcast)

> Tundu IO Javascript

> Tundu IO Chatu

Katika picha zilizo hapo juu, unaweza kuona moja ya unganisho la Soketi lililotengenezwa katika mradi huu.

Amri ya kutuma ujumbe ni 'emit', kupokea kunafanywa na 'on'.

Utafutaji wa URLParms hukuruhusu kupata maadili kutoka kwa hoja kwa urahisi.

Mfano kuuliza: example.com/index.html?id=1

Utafutaji wa URL utakupa: {'id' = '1'}

> URL SearchParams Mfano

Nyuma

Backend imeandikwa kikamilifu katika Python, na kundi la maktaba.

Maktaba ya kwanza tunayoingiza ni 'Flask'. Maktaba hii inahitajika kuunda API, kufanya vitendo vyote vya CRUD kwa hifadhidata ya MySQL. CRUD inasimamia Fanya Sasisha Futa Sasisho.

> chupa

Picha hapo juu inaonyesha 'Njia' kadhaa za Flask. Kwa kutumia njia, moja kwa moja utafanya njia ya 'GET', nambari itatekelezwa na utapokea thamani kutoka kwa njia ya kurudi. Pia kuna njia zingine, kama 'POST' na 'DELETE'. Ili kujaribu njia kama hizo, utahitaji programu kama Postman.

Maktaba inayofuata ya kuagiza ni SocketIO, ambayo nilielezea tayari katika sehemu ya mwisho wa mbele.

Ifuatayo ni GPIO.

Hii hukuruhusu kudhibiti pini za GPIO za Rapsberry Pi.

Amri muhimu zaidi ni:

  • GPIO.setmode (GPIO. BCM) Chagua usanidi wa pini.
  • Pato la GPIO (, GPIO. LOW au GPIO. HIGH) Andika LOW au HIGH kwa pini.
  • Seti ya GPIO (,) Fafanua PIN kama pembejeo au pato, au kushuka chini au kusukuma

Ifuatayo tuna uzi.

Amri pekee tunayotumia ni:

  • Thread (lengo =)
  • anza ()

Kutumia nyuzi, tunaweza kuendesha visa kadhaa vya nambari kwa wakati mmoja. Kwa njia hii tunaweza kupima umbali na wakati huo huo, sikiliza ujumbe unaokuja wa tundu.

Amri ya kwanza Thread (target =) itaunda darasa la Thread, ambalo litaanza kutumia 'start ()', itaendesha kazi hiyo katika neno kuu 'lengo', ambalo lilipewa juu ya uundaji wa darasa.

Ifuatayo tuna maktaba ya sensa ya rangi, ambayo iko sawa mbele. Sitaelezea maktaba hii, kwa sababu njia ziko wazi na zinaelezewa katika nambari.

Mwisho tuna nyavu. Hii inatuwezesha kupata anwani ya IP tunayotumia kwa muunganisho wa Wired na Wired.

Mwishowe nilifanya madarasa kadhaa kwa sensorer ya umbali, LED na LCD.

Sitaelezea jinsi kazi hizo.

Hatua ya 9: Hatua ya 9: Kuunda Kesi

Hatua ya 9: Kuunda Kesi
Hatua ya 9: Kuunda Kesi
Hatua ya 9: Kuunda Kesi
Hatua ya 9: Kuunda Kesi
Hatua ya 9: Kuunda Kesi
Hatua ya 9: Kuunda Kesi

Kwa mradi huu, niliunda kesi ya mbao.

Mbao ni nyepesi, nyembamba na haina gharama kubwa.

Kama vipimo nilivyotumia:

  • Urefu: 5 cm
  • Upana: 10.5cm
  • Urefu: 12.5cm

Kwa sensorer, unahitaji kuongeza mashimo 2 na kuiweka karibu na kila mmoja.

Baada ya kuunda kesi, weka sensorer, LED na LCD.

Hatua ya 10: Hatua za Mwisho

Kila kitu kimsingi kinafanywa.

Sasa tunapaswa tu kuhakikisha kuwa nambari yetu ya simu inaanza, wakati tunapoingia kwenye chanzo chetu cha nguvu.

Kuna njia nyingi za kufanya hivyo.

> Mifano

Tutatumia njia ya kwanza:

Tekeleza mstari huu: 'sudo nano /etc/rc.local'

Ongeza amri yako ya kutumia nambari: 'sudo python3'

Hifadhi faili ukitumia Ctrl-X.

Ikiwa una shida kuhariri. Fanya tena hatua hii, lakini kwanza fanya 'sudo -i'.

Ilipendekeza: