Wątek przeniesiony 2021-12-12 12:31 z Edukacja przez cerrato.

Pytanie o projekt — elektronika + programowanie

0

Cześć

Kończę pierwszy semestr studiów informatycznych i poznałem podstawy programowania (język C) oraz podstawy elektroniki. W drugim semestrze będę miał programowanie obiektowe (C++) oraz elektronikę cyfrową. Chciałbym w wolnym czasie pobawić się Arduino lub Raspberry Pi, bo to chyba da mi możliwość stworzenia jakiegoś projektu elektronicznego. No i mam pewien pomysł, ale nie jestem przekonany czy jestem w stanie go zrealizować, brzmi skomplikowanie. Otóż chciałbym zrobić coś w stylu:

  • stworzenie warunków do testów (oświetlenie, itp.) - np.jakaś kabina - tutaj jedynie zadbać o odpowiednie warunki oświetlenia i inne zmienne - do przemyślenia
  • przy pomocy arduino lub raspberry pi stworzyć coś jak system wizyjny, który będzie określał barwę (np.w HEX) - dokładniej barwę lakieru/farby na jakimś materiale, np.szkle(projekt do pracy, ale to tak z własnej woli :D)
  • ze względu na to, że tych barw może być kilkanaście milionów chciałbym, aby system określał z pewną tolerancją czy osiągnięta barwa jest prawidłowa lub określał, że nie jest

Czy np.Arduino oraz język C lub C++ wystarczą do czegoś takiego? W jakim kierunku powinienem się rozwijać, by móc stworzyć taki projekt? Czy to jest osiągalne rozsądnymi kosztami?

Edit. Nawet inaczej - na początek chciałbym, by odróżniało mi np.barwę czerwoną od zielonej czy żółtej - na Arduino. Później najwyżej bym się w to zagłębił - odcienie, itp.

1

A jakiego rodzaju sensor byłby tam zamontowany? Jakich metod badawczych chciałbyś użyć do rozpoznawania tego koloru?

0

Nie wiem, dlatego piszę. Nigdy nie robiłem czegoś takiego więc pewnie wszystko stopniowo będę doczytywał, dopytywał, wyszukiwał.

2

Nie znam żadnych sensownych sensorów do tego. Można spróbować robić zdjęcie aparatem wysokiej klasy i porównywanie zdjęć ale nie wiem czy dokładność będzie wystaczajaca prz takiej ilości kolorów. Może są jakies metody pomiaru widma światła odbijanego przez lakier ale raczej nie będą to proste rozwiązania.

6

Nie używałem i nie korzystałem ale jest coś takiego:
https://botland.com.pl/czujniki-swiatla-i-koloru/4932-czujnik-koloru-przetwornik-swiatlo-czestotliwosc-tcs3200-waveshare-9520.html
Jak tego używać:
https://randomnerdtutorials.com/arduino-color-sensor-tcs230-tcs3200/
Myślę, że na próbę, naukę i zrozumienie jak to może działać wystarczy. Na pewno nie nada się to na żadnego profesjonalne zastosowanie typu badanie koloru lakieru etc.

3

Najpierw musisz ogarnąć teorię. Kolorów w rzeczywistości jest nieskończenie wiele. Światło jakim oświetlasz obiekt składa się z wielu różnych częstotliwości/prążków. Każdy z nich ma jakąś amplitudę/natężenie. Po odbiciu od przedmiotu uzyskujesz inny rozkład amplitud dla poszczególnych częstotliwości. Dowolny sensor np. piksel w przetworniku kamery ma określoną charakterystykę częstotliwościową. Czyli zależność poziomu sygnału wyjściowego od określonej częstotliwości padającego światła. W praktyce na taki przetwornik pada jednak mieszanka różnych częstotliwości. Sygnał wyjściowy jaki uzyskujesz to wypadkowa odpowiedź dla tej mieszanki.
W praktyce w kamerach sprawa się jeszcze dodatkowo komplikuje. Zwykle odpowiedź piksela funkcji natężenia oświetlenia nie jest liniowa. Co więcej tą zależność dynamicznie się modyfikuje różnie dla różnych pikseli RGB (tzw. równowaga bieli).
Oddzielnym zagadnieniem jest widzenie człowieka. Każdy nieco inaczej rozróżnia kolory i zmienia się to w zależności od warunków oświetlenia.

3

Arduino nie polecam jak chcesz uczyć się tego poważnie, bo to imho to dość tandetne zabawki dla hobbystów i kod uczący złych nawyków, kup lepiej jakiś eval board od ST micro/NXP jeżeli chcesz iść w bare metal embedded. Jeśli chodzi o koszta: nie wiem co znaczy "rozsądne", ale dla bezpieczeństwa nastaw się, że na początku coś popsujesz i będzie drożej niż zakładałeś ;)
Co do Raspberry, to w zasadzie jest to mocny komp z Linuxem, tam to możesz nawet w Pythonie kod napisać i też zadziała, mocy nie braknie; pytanie w jakiego typu embedded chcesz iść.

Jeśli chodzi o sensory @jurek1980 podał dobre punkty zaczepienia. W toku prac wyjdzie czy potrzebujesz czegoś lepszego ;)

1

przy pomocy arduino lub raspberry pi stworzyć coś jak system wizyjny, który będzie określał barwę (np.w HEX) - dokładniej barwę lakieru/farby na jakimś materiale, np.szkle(projekt do pracy, ale to tak z własnej woli :D)
ze względu na to, że tych barw może być kilkanaście milionów chciałbym, aby system określał z pewną tolerancją czy osiągnięta barwa jest prawidłowa lub określał, że nie jest

zasadniczo zainteresuj się opencv ja np. kiedyś robiłem taki test dla kolumny świetlnej która miała trzy światła. I musiałem rozpoznać jakiego koloru obecnie jest uruchomione światło. Zrobiłem to ostatecznie tak że wy filtrowałem inne kolory niż taki jaki chciałem. Jak mi się piksele zmieniały na inny kolor niż czarny wiedziałem że uruchomiono światło i wiedziałem jeszcze jaki kolor. to tak zgrubnie robiłem to z rok temu więc średnio pamiętam. Są jeszcze inne sposoby w opencv. Wpisz sobie też w google color histogram opencv

można też uciec się do takich akcji z ML(które i tak bazują na histogramie)
https://www.researchgate.net/figure/Global-feature-Color-histogram-of-RGB-image_fig2_342367884

tu przykład histogramu

edit:
parę ładnych lat temu w elektronice dla wszystkich konstruowali kolorymetr poszukaj.
edit2:
https://www.instructables.com/An-Inexpensive-Photometer-and-Colorimeter/
edit3:
histogram na arduino
https://eloquentarduino.github.io/tag/camera/

0

Zajmuje się podobną tematyką

Dysponuję spektrometrem Dr Lange
https://labstuff.eu/en/hach-lange-spectro-color-d-8-portable-spectral-colorimeter.html

Jest to sprzęt pomiarowy (a to bardzo istotne)
Mogę Ci pokazać jak takie urządzenie jest zbudowane, jednak polecam coś innego:

Na tym kanale jest wątek o budowie respiratora - polecam zobaczyć jak takie urządzenia są zbudowane

Dlaczego nie należy robić zbyt dużego projektu - bo się na tym wyłożysz.
Jak masz problemy z embedded zapraszam na grupę: https://www.facebook.com/groups/programisciembedded

Napisałem aby pokazać że temat za który się zabierasz jest bardzo skomplikowany. Jak chcesz się tym zająć najpierw zrób mniejszy, prostszy projekt aby opanować narzędzia typu język C/C++/Python oraz debugger, komunikacje itd

2

info z dzisiejszego spamu, chyba coś na ten temat w tym numerze
https://ulubionykiosk.pl/wydawnictwo/apa/4501?utm_source=ulubionykiosk.pl

1 użytkowników online, w tym zalogowanych: 0, gości: 1