Wykrywanie przedmiotów przy użyciu ESP32CAM oraz sterowanie paskiem Led na podstawie obrazu

Typ_projektu
microPython
Zdjecie główne
Krótki opis projektu

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.

Niezbędne elementy

 

1. Płytka ESP32 CAM

2. Pasek led 

3. Kabel USB typu B

 

 

Sprzęt

1. Komputer z programem thonny.

2. Środowisko obsługujące pythona np. visual studio.

3. Wgrane rozszerzenia pythonowe flask oraz openCV 

 

Opis projektu

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.

kod programu

zip poniżej

Pliki_projektu
Tagi
esp mikrokontrolek pasekled wykrywanieobiektow espcam