Съдържание:
- Консумативи
- Стъпка 1: Стъпка 1: Инсталиране на RPi OS, Конфигуриране на SSH и достъп до Интернет
- Стъпка 2: Стъпка 2: Инсталиране на софтуер на RPi
- Стъпка 3: Стъпка 3: Свързване към MySQL база данни, създаване на база данни
- Стъпка 4: Стъпка 4: Filezilla
- Стъпка 5: Стъпка 5: Създаване на уебсайт
- Стъпка 6: Стъпка 6: Създаване на бекенда (колба)
- Стъпка 7: Стъпка 7: Хардуер
- Стъпка 8: Стъпка 8: Обяснен код
- Стъпка 9: Стъпка 9: Създаване на случай
- Стъпка 10: Последни стъпки
Видео: ColorPicker: 10 стъпки
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:51
Целта на този проект е да измерва цветовете и да ги превежда в други цветови системи. Използвайки само стойностите на RGB, дадени от сензора, можете да преведете на HSL, CYMK, HEX, а също и най -близкия RAL код (стандарт, използван за боя). Този проект изисква основни познания по Python, MySQL, Linux и Javascript.
Ако също сте запознати с рамката на Flask и SocketIO, тогава кодът за този проект трябва да бъде лесен за разбиране за вас.
Този проект може да бъде използван от художници, интериорни дизайнери или просто от всеки, който трябва да измери цветовете.
Този проект не е толкова скъп и струва приблизително _ евро, без включена доставка.
Консумативи
Можем да разделим този раздел на две части:
- Хардуер
- Софтуер
Хардуер
Използваме следните компоненти
- HC04: Сензор за разстояние, на какво разстояние измерваме от обекта
- LCD дисплей 2x16
- LCD I2C модул (HW061)
- TCS34725 Цветен сензорен модул (Adafruit)
- Бял светодиод
- Raspberry Pi 3 (Всеки Raspberry Pi трябва да работи)
- 5x 1k Ohm резистор
- 1x 220 или 330 ома резистор
- SD карта 16GB (14.4GB)
Софтуер
- Python IDE, като Visual Code или Pycharm (Pycharm се използва тук)
- MySQL Workbench
- Putty (Изтеглете Putty)
- Rufus или друг писател на SD карти (Изтеглете Rufus)
Ценообразуване
Този проект е доста евтин, ако вече имате Rapsberry Pi.
- HC04: Започва около € 2,5 евро (Китай) и до € 6 за повече местни магазини.
- LCD: Около 6-8 евро.
- I2C модул: Най -евтино под 1 евро (Китай), но до 4 евро за повече местни магазини.
- TCS34725: Около 9-12 евро. Най -скъпата част (без RPi)
- Бял светодиод: Купен е насипно, 20 светодиода само за 1 евро
- Raspberry Pi: В зависимост от версията, около 40 евро
- Резистори: 0,10 € за един резистор
- SD карта: около 8 евро
Захранващият адаптер за Raspberry Pi е изключен в цената, тъй като този адаптер е доста често срещан.
Общ ценови диапазон: около 70 евро, ако включите Raspberry Pi и калъфа за проекта.
За изграждането на кутията използвах леко тънко дърво. Рециклирах тази дървесина от мебели. Материалът за делото зависи от вас.
Стъпка 1: Стъпка 1: Инсталиране на RPi OS, Конфигуриране на SSH и достъп до Интернет
Стъпка 1.1: Инсталиране на изображението
Изтеглете изображението от официалния сайт на Raspberry Pi. Всъщност няма значение какво изображение инсталирате. За този проект не е необходим графичен интерфейс, тъй като ще се свързваме само чрез SSH.
Запишете изображението на (празната) SD карта (Всички файлове на картата ще бъдат изтрити).
За да запишем всичко на SD картата, ще използваме инструмент, наречен „Rufus“. След като изтеглите изображението, отворете Rufus и изберете файла с изображението. Изберете целевото устройство и запишете изображението в устройството. Това може да отнеме известно време.
> Руфус
Стъпка 1.2: Инсталиране на SSH
Следващата стъпка е създаване на връзка към SD картата. За да направим това, трябва да активираме SSH.
За да направите това, без да използвате монитор, отворете вашия File Explorer и отворете зареждащия дял на SD картата. Създайте празен файл, наречен "ssh", без разширение на файла.
Също така отворете „cmdline.txt“
Добавете „169.254.10.1“в края на файла и го запазете.
Демонтирайте SD картата и я поставете в Raspberry Pi.
Сега можем да свържем Raspberry Pi към източник на захранване и да стартираме и да се свържем с помощта на SSH.
За да се свържете чрез SSH, използваме програмата "Putty". Свържете вашия RPi и компютър с помощта на ehternet кабел, преди да направите това. Отворете Putty и отидете на раздела SSH и попълнете този IP: 169.254.10.1. Щракнете върху „свързване“и ще бъдете свързани.
> Шпакловка
Входът по подразбиране, използван от Raspberry Pi, е „pi“като потребителско име и „raspberry“за паролата.
Стъпка 1.3: Безжична връзка
Вашият Raspberry Pi вече е включен.
Също така искаме да се свържем с RPi чрез Wifi, по този начин вече не се нуждаем от Ethernet кабел.
Изпълнете следния ред:
'sudo nano /etc/wpa_supplicant/wpa_supplicant.conf'
Това ще отвори „нано“текстовия редактор с повишени права.
Добавете следните редове във файла:
мрежа = {
ssid = "SSID"
psk = "Парола"
}
Заменете „SSID“със SSID на вашата Wifi мрежа
Заменете „Парола“с вашата парола.
След това направете Ctrl+X и изберете опцията „да“. Сега файлът ще бъде запазен.
Сега трябва да рестартираме мрежовата услуга
Изпълнете следните команди:
- "sudo -i"
- 'sudo systemctl рестартирайте мрежата'
Можете да тествате вашата интернет връзка с помощта на командата wget.
Пример: 'wget google.com'
> Wget команда
Стъпка 2: Стъпка 2: Инсталиране на софтуер на RPi
За този проект трябва да инсталираме няколко библиотеки.
- Mariadb: MySQL база данни (sudo apt-get install mariadb-сървър)
- Библиотека Adafruit за сензора за цвят: Измерване на цветовете (pip3 инсталирайте adafruit-circuitpython-tcs34725)
- PHPmyAdmin: ('sudo apt install phpmyadmin', изберете apache уеб сървър)
Също така инсталирайте следните pip библиотеки:
- flask_socketio
- колба
- flask_cors
- дъска
- busio
- мрежови интерфейси
Стъпка 3: Стъпка 3: Свързване към MySQL база данни, създаване на база данни
Следващата стъпка е да се свържете с базата данни MySQL с помощта на работната маса MySQL.
> IP a
Изпълнете командата 'ip a', както е показано на изображението по -горе (Щракнете върху връзката)
В повечето ситуации ще бъдат показани 3 записа. Нуждаем се от записа „wlan0“. Копирайте IP до „inet“или в този пример „192.168.1.44“
. >> Създайте нова връзка
Както е показано на изображението по -горе, създайте нова връзка със следните параметри (Изображение по -долу за параметри)
> Параметри на връзката
Щракнете двукратно върху новосъздадената връзка, за да се свържете.
Ако се покаже подкана, щракнете върху „Да“.
Това все още е празна база данни, така че нека добавим няколко таблици.
Първо създайте схема, за да направите това, в лявата страна 'щракнете с десния бутон' и изберете 'създаване на схема'.
Дайте име на схемата и потвърдете.
Сега трябва да добавим таблици. Разгънете схемата и „щракнете с десния бутон“, „таблици“.
Създайте следната схема:
> Таблица 1: Цветове по RAL
> Таблица 2: Видове сензори
> Таблица 3: Измервания (На снимката се използва „metingen“, холандски за измервания)
> Таблица 4: Уебсайт_данни || Таблица 4 отдолу
MySQL е система за релационни бази данни, което означава, че можем да създаваме отношения между таблиците.
Първата връзка, която трябва да създадем, е между 'sensor_type' и 'измервания'.
Както е показано на снимката, свържете двата клавиша.
> Редактиране на таблица и ключове за връзки
Не забравяйте да запазите промените, като кликнете върху „Приложи“в долния ъгъл.
Редактирайте също таблицата „website_data“и свържете „MetingID“.
Сега приключихме със създаването на таблици и създаването на връзките.
Добавяне на данни:
Таблицата RALcolors е фиксирана таблица, където стойностите никога няма да се променят. Можем да добавим тези стойности
много лесно.
> Изтеглете Excel файл
Изтеглете Excel файла по -горе и изберете всички данни и „копиране“. Направете като в изображението
> Покажи таблица
„щракнете с десния бутон“върху таблицата и изберете „Поставяне на редове“. „щракнете“„приложи“в долния ъгъл, за да добавите данните.
Сега всички RAL цветове се записват в базата данни.
Трябва само да добавим sensor_type към базата данни сега.
> Сензортип данни
Забележка: Описанието на сензора е на „холандски“
Стъпка 4: Стъпка 4: Filezilla
За лесно свързване с Raspberry Pi и прехвърляне на файлове можем да използваме Filezilla.
> Изтеглете Filezilla
Файлът в данните за връзката и се свържете. От дясната страна вече можете да прехвърляте файлове, като ги плъзнете навътре.
> Източник на Github
Изтеглете файловете от източника на github по -горе.
Стъпка 5: Стъпка 5: Създаване на уебсайт
За хостинг на уебсайта използваме PHPmyAdmin и Apache2.
Уеб сървърът на Raspberry Pi използва директорията '/var/www/html' като root.
Ако поставите файловете си там, те ще бъдат хоствани по IP на Raspberry Pi. (IP = вижте „ip a“)
Можете да изтеглите необходимите файлове от моето github репо (предишна стъпка)
В '/var/www/html/' поставете всички файлове от папката 'Frontend'.
>/var/www/html/
Стъпка 6: Стъпка 6: Създаване на бекенда (колба)
Бекендът на уебсайта се основава на Flask.
Всички файлове могат да бъдат намерени в github repo.
Копирайте всички файлове във всяка директория на Raspberry Pi.
Например '/home/pi/colorpicker.
За да създадете директория, отидете до целевата директория с помощта на 'cd' и след това изпълнете 'mkdir'.
Това е всичко за сега. Кодът ще бъде обяснен в следващите стъпки.
Стъпка 7: Стъпка 7: Хардуер
> Изтеглете схемата
Създайте схемата, както е показано в документа по -горе.
ЗАБЕЛЕЖКА: Също така добавете един бял светодиод, с един резистор (220 или 330 ома).
Обясняване на хардуера
HC04
Сензорът HC04 излъчва вълни, които се отразяват и се възприемат отново от сензора.
Изчислявайки делтата на времето между излъчване и приемане, можем да изчислим разстоянието.
Разстояние = ((Timestamp_recieve - Timestamp_emit) / скорост на звука) / 2
Делим на две, защото вълната се отразява, което означава, че изминава разстоянието два пъти.
LCD
Използваме LCD дисплей за показване на RGB и HEX, както и IP при стартиране на програмата.
За този LCD аз си купих I2C модул. Сега имаме нужда само от 4 проводника. SDA, SCL, GND, VCC
За да използвам този LCD, написах клас Python, за да го направя по -лесен за използване.
TCS34725
Този сензор ви позволява да измервате цветовете. Използваме библиотека за измерване на RGB стойността.
Стъпка 8: Стъпка 8: Обяснен код
Интерфейсът
Фронтендът съществува от три основни части.
Първо са html файловете, които изграждат структурата на нашия уебсайт, но не съдържат или минимално оформление.
Второ, имаме css файлове или файлове със стил, които оформят и оформят нашия уебсайт.
Двете са доста лесни за четене и разбиране, поради което няма да ги обяснявам.
Последно имаме Javascript с две библиотеки.
Двете използвани библиотеки са SocketIO и URLSearchParams.
SocketIO ви позволява да изпращате съобщения от бекенда до интерфейса и обратно.
Съобщенията могат да се изпращат до един клиент, но и до няколко клиента (излъчване)
> Socket IO Javascript
> Сокет IO Python
В горните изображения можете да видите една от връзките на Socket, направени в този проект.
Командата за изпращане на съобщения е „emit“, получаването става чрез „on“.
URLSearchParms ви позволява лесно да получавате стойности от низа на заявки.
Примерен низ на заявки: example.com/index.html?id=1
URLSearchParams ще ви върне: {'id' = '1'}
> Пример за URLSearchParams
Бекендът
Бекендът е изцяло написан на Python, с куп библиотеки.
Първата библиотека, която импортираме, е „Flask“. Тази библиотека е необходима за създаване на API, за извършване на всички CRUD действия за базата данни MySQL. CRUD означава Създаване на прочетено актуализиране Изтриване.
> Колба
Изображението по -горе показва няколко „маршрута“на колбата. Като сърфирате до маршрут, автоматично ще направите метод „GET“, кодът ще се изпълни и ще получите стойността от метода за връщане. Има и други методи, като „POST“и „DELETE“. За да тествате такива методи, ще ви е необходима програма като Postman.
Следващата библиотека за импортиране е SocketIO, която обясних вече в предния раздел.
Следващата е GPIO.
Това ви позволява да контролирате GPIO щифтовете на Rapsberry Pi.
Най -важните команди са:
- GPIO.setmode (GPIO. BCM) Изберете конфигурацията на щифтовете.
- GPIO.output (, GPIO. LOW или GPIO. HIGH) Напишете LOW или HIGH към щифт.
- GPIO.setup (,) Определете ПИН като вход или изход, или падащо меню или издърпване
След това имаме нишки.
Единствените команди, които използваме са:
- Нишка (цел =)
- .start ()
Използвайки нишки, можем да изпълняваме няколко екземпляра код едновременно. По този начин можем да измерваме разстоянието и в същото време да слушаме входящите съобщения от сокет io.
Първата команда Thread (target =) ще създаде Thread клас, който след като започне да използва 'start ()', ще изпълнява функцията в ключовата дума 'target', която е дадена при създаването на класа.
След това имаме библиотеката на цветния сензор, която е доста права. Няма да обяснявам тази библиотека, защото методите са много ясни и обяснени в кода.
Последно имаме мрежови интерфейси. Това ни позволява да извлечем IP адреса, който използваме за безжична и жична връзка.
Последно направих някои класове за сензора за разстояние, LED и LCD.
Няма да обяснявам как работят.
Стъпка 9: Стъпка 9: Създаване на случай
За този проект създадох дървен калъф.
Дървесината е лека, тънка и не струва много.
Като размери използвах:
- Височина: 5 см
- Ширина: 10,5 см
- Дължина: 12,5 см
За сензорите трябва да добавите 2 дупки и да ги поставите един до друг.
След като създадете кутията, инсталирайте сензорите, LED и LCD.
Стъпка 10: Последни стъпки
Всичко е направено основно.
Сега остава само да се уверим, че кодът ни стартира, в момента, в който включим източника на захранване.
Има много методи за това.
> Примери
Ще използваме първия метод:
Изпълнете този ред: 'sudo nano /etc/rc.local'
Добавете вашата команда, за да изпълните кода: 'sudo python3'
Запазете файла с помощта на Ctrl-X.
Ако имате проблеми с редактирането. Повторете тази стъпка, но първо изпълнете „sudo -i“.
Препоръчано:
Първи стъпки с безжични сензори за температура и вибрации на дълги разстояния: 7 стъпки
Първи стъпки с безжични сензори за температура и вибрации на дълги разстояния: Понякога вибрациите са причина за сериозни проблеми в много приложения. От валове и лагери на машината до работа на твърдия диск, вибрациите причиняват повреда на машината, ранна подмяна, ниска производителност и нанасят сериозен удар върху точността. Мониторинг
Първи стъпки с STM32f767zi Cube IDE и качване на персонализирана скица: 3 стъпки
Първи стъпки с STM32f767zi Cube IDE и качване на персонализирана скица: КУПЕТЕ (щракнете върху теста, за да закупите/посетете уеб страницата) STM32F767ZISUPPORTED SOFTWARE · STM32CUBE IDE · KEIL MDK ARM µVISION · EWARM IAR EMBEDDED WORKBENCH използва се за програмиране на STM микроконтролери
Как да направите 4G LTE двойна BiQuade антена Лесни стъпки: 3 стъпки
Как да направя 4G LTE двойна BiQuade антена лесни стъпки: През повечето време, с което се сблъсквах, нямам добра сила на сигнала за ежедневните ми работи. Така. Търся и опитвам различни видове антени, но не работи. След загубено време намерих антена, която се надявам да направя и изпробвам, защото тя не градивен принцип
Дизайн на играта с бързо движение в 5 стъпки: 5 стъпки
Дизайн на игра с Flick в 5 стъпки: Flick е наистина прост начин да направите игра, особено нещо като пъзел, визуален роман или приключенска игра
Система за предупреждение за паркиране на автомобил Arduino - Стъпки по стъпка: 4 стъпки
Система за предупреждение за паркиране на автомобил Arduino | Стъпки по стъпка: В този проект ще проектирам обикновена верига за сензори за паркиране на автомобил Arduino, използвайки Arduino UNO и HC-SR04 ултразвуков сензор. Тази базирана на Arduino система за предупреждение за автомобил за заден ход може да се използва за автономна навигация, измерване на роботи и други обхвати