Projekt polega na wykorzystaniu ESP32-CAM do wykonania zdjęcia, które następnie jest analizowane w celu znalezienia konturów przedmiotu widocznego na fotografii. Następnie odpowiednie diody LED na pasku są zapalane w miejscach, które odpowiadają lokalizacji przedmiotu na zdjęciu.
1. Płytka ESP32 CAM
2. Pasek led
3. Kabel USB typu B
1. Komputer z programem thonny.
2. Środowisko obsługujące pythona np. visual studio.
3. Wgrane rozszerzenia pythonowe flask oraz openCV
Program polega na wykonaniu zdjęcia dowolnego przedmiotu, jego analizie oraz zapaleniu diod LED w miejscach odpowiadających lokalizacji wykrytego przedmiotu. Do wykonania zdjęcia wykorzystano moduł ESP32-CAM, który przesyła je przez Wi-Fi na serwer napisany w Pythonie. Na serwerze, przy użyciu biblioteki OpenCV, stosowany jest algorytm Canny'ego w celu wykrycia konturów obiektu.
Następnie obraz dzielony jest na osiem poziomych stref, z których każda odpowiada jednemu pikselowi na pasku LED. Program sprawdza, czy w danej strefie znajdują się kontury przedmiotu. Jeśli kontury zostaną wykryte, w tablicy przypisana jest wartość 1, w przeciwnym razie 0. Po analizie wszystkich stref serwer przesyła informację zwrotną do ESP32, gdzie funkcja odpowiedzialna za sterowanie diodami LED zapala odpowiednie światła.
Aby wykonać nowe zdjęcie, należy ponownie uruchomić program w środowisku Thonny. Natomiast serwer może działać w tle i nie wymaga restartowania przy każdym wykonaniu nowego zdjęcia.
Do zaimplementowania tego projektu potrzebny będzie kod na microkontroler o nazwie "kod na esp.py" oraz "kod od serwera.py" czyli kod od serwera. W plikach poniżej zamieszczam również plik tekstowy requirements.txt ,w którym znajdują się wszystkie zainstalowane biblioteki i ich wersji w aktualnym środowisku.
Użytkownik chcący stworzyć podobny projekt na swoim komputerze w terminalu programu z pythonem musi wpisać komendę :
"-pip install -r requirements.txt"
GŁÓWNE FUNKCJE UŻYTE W PROGRAMACH
kod na esp
connect_to_wifi()- funkcja łacząca mikrokontroler z internetem
update_leds()- funkcja zapalająca poszególne ledy w zależności od znalezionych konturów
take_photo() - funkcja opowiedzialna za zrobienie zdjecia
process_photo() - funkcja wysyłająca zdjęcie na serwer
handle_request() - funkcja odbierająca informacje zwrotne z serwera
start_server() - uruchamia esp jako serwer
kod do serwera
divide_into_zones()-funkcja dzieląca obraz na 8 równych części
detect_zones_with_objects ()- sprawdza czy kontury są znalezione w poszczególnej strefie
upload_image() -odbiera zdjęcie oraz rysuje jego kontury.
zip poniżej