Mundarija:
- Ta'minotlar
- 1 -qadam: 1 -qadam: RPi OS ni o'rnatish, SSH va Internetga kirishni sozlash
- 2 -qadam: 2 -qadam: RPi -ga dasturiy ta'minotni o'rnatish
- 3 -qadam: 3 -qadam: MySQL ma'lumotlar bazasiga ulanish, ma'lumotlar bazasini yaratish
- 4 -qadam: 4 -qadam: Filezilla
- 5 -qadam: 5 -qadam: veb -sayt yaratish
- 6 -qadam: 6 -qadam: orqa panelni yaratish (kolba)
- 7 -qadam: 7 -qadam: Uskuna
- 8 -qadam: 8 -qadam: Kod tushuntirilgan
- 9 -qadam: 9 -qadam: Case yaratish
- 10 -qadam: Yakuniy qadamlar
Video: ColorPicker: 10 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:24
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.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
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
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
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
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
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:
To'g'ridan-to'g'ri raqamli sintez (DDS) chipli MIDI tomonidan boshqariladigan qadam dvigateli: 3 qadam
To'g'ridan-to'g'ri raqamli sintez (DDS) chipli MIDI tomonidan boshqariladigan qadamli dvigatel: Siz hech qachon mini-loyihaga aylanishingiz kerak degan yomon fikrga keldingizmi? Xo'sh, men AD9833 to'g'ridan -to'g'ri raqamli sintez (DDS) moduli yordamida musiqa yaratishga qaratilgan Arduino Due uchun chizgan eskiz bilan o'ynab yurardim … va bir paytlar men o'yladim
Arduino uchun qadam tezligini boshqarish menyusi: 6 qadam
Arduino uchun qadam tezligini boshqarish menyusi: Bu SpeedStepper kutubxonasi qadam dvigatelining tezligini nazorat qilish uchun AccelStepper kutubxonasining qayta yozilishi. SpeedStepper kutubxonasi sizga belgilangan dvigatel tezligini o'zgartirishga imkon beradi, so'ngra xuddi shu algoritm yordamida yangi belgilangan tezlikka tezlashadi/sekinlashadi
Qanday qilib qadam taymerini yasash mumkin?: 3 qadam (rasmlar bilan)
Qanday qilib qadam taymerini yasash mumkin ?: Men ko'plab sport turlarida yaxshi qatnashardim: yurish, yugurish, velosiped haydash, badminton o'ynash va hokazo. Men tez orada sayohat qilishni yaxshi ko'raman. Xo'sh, qorin qornimga qarang …… Xo'sh, baribir, men mashg'ulotlarni qaytadan boshlashga qaror qildim. Qanday uskunani tayyorlashim kerak?
Arduino UNO bilan qadam motor: 3 qadam
Arduino UNO bilan qadam dvigateli: Bosqichli motorlar - bu alohida bosqichlarda harakatlanadigan shahar motorlari. Ularda "fazalar" deb nomlangan guruhlarga bo'lingan bir nechta rulon bor. Har bir fazani ketma -ket quvvatlantirganda, dvigatel birma -bir aylanadi, zinapoyali dvigatellar juda foydali
Kompyuteringizni qadam dvigateli bilan boshqaring!: 9 qadam (rasmlar bilan)
Kompyuteringizni qadam dvigateli bilan boshqaring!: Oldingi ko'rsatmalarimdan birida men sizga step motorini aylanuvchi kodlovchi sifatida qanday ishlatishni ko'rsatdim. Bu yo'riqnomada keling, undan kompyuterni boshqarish uchun qanday foydalanish kerakligini bilib olaylik. Shunday qilib, ko'p vaqt sarflamasdan, boshlaylik