AOI (Automated Optical Inspection) to zautomatyzowana inspekcja optyczna, stosowana w przemyśle do kontroli jakości wytwarzanych produktów na dużą skalę. Systemy tego typu wykorzystują kamerę oraz algorytmy analizy obrazu do wykrywania elementów elektronicznych, sprawdzania poprawności ich montażu i wychwytywania nieprawidłowości, takich jak brakujące komponenty, błędy lutowania czy niepoprawny stan pracy układu. Zastosowanie AOI pozwala przyspieszyć kontrolę, zwiększyć jej powtarzalność i ograniczyć błędy charakterystyczne dla inspekcji ręcznej. W przedstawionym projekcie koncepcja AOI została wykorzystana do lokalizacji komponentów na płytkach drukowanych PCB.

Wykonana makieta stanowi demonstracyjne stanowisko testowe z miniaturowym taśmociągiem, po którym transportowana jest płytka PCB z prostym przerzutnikiem astabilnym, gdzie poprzez zasilanie płytki PCB uzyskano naprzemiennie migające dwie diody. Na podstawie zachowania układu można potwierdzić jego poprawność działania. System umożliwia również sprawdzanie poprawności rozmieszczenia komponentów z wykorzystaniem ROI (Region of Interest), co jest szczególnie przydatne w przypadku układów, które nie posiadają łatwo dostępnych punktów stykowych, jak miało to miejsce w testowych płytkach PCB.
Do realizacji zadania wytrenowano sieć neuronową z wykorzystaniem platformy Roboflow, służącej do oznaczania komponentów oraz przeprowadzania wstępnych treningów w chmurze. Zastosowano gotowy model detekcji obiektów czasu rzeczywistego YOLO v11. Zbiór danych został przygotowany głównie w warunkach odpowiadających rzeczywistej pracy makiety, dlatego obejmował przede wszystkim obrazy uzyskane przy stałym układzie oświetlenia i zbliżonych warunkach akwizycji.

Nad taśmociągiem umieszczono kamerę oraz oświetlenie, aby zapewnić dobre warunki obserwacji obiektu. Raspberry Pi 5 pełni w systemie rolę jednostki nadrzędnej odpowiedzialnej za przetwarzanie obrazu i komunikację, natomiast ESP32 steruje elementami wykonawczymi makiety, takimi jak napęd, oświetlenie oraz zacisk.
Logika systemu po stronie Raspberry Pi została zaimplementowana w języku Python, natomiast sterowanie elementami wykonawczymi makiety napisano w języku C/C++. Komunikację pomiędzy modułami oparto na prostym protokole MQTT typu publish-subscribe, który jest szeroko stosowany w rozwiązaniach IoT ze względu na swoją prostotę oraz łatwość implementacji.
Na bazie mikroframeworka Flask utworzono graficzny interfejs użytkownika umożliwiający sterowanie makietą oraz podgląd pracy układu. W interfejsie pozostawiono również miejsce do testowania różnych formatów splotowych sieci neuronowych (CNN). Aplikacja została zbudowana z wykorzystaniem prostych endpointów poprzez użycie HTML i JavaScript oraz uzupełniona o style CSS.

System zbiera również dane, które następnie są przetwarzane przez algorytm sterowania. W makiecie zastosowano czujnik odległości HC-SR04, służący do wykrywania pojawienia się testowanej płytki na stanowisku pomiarowym. Dodatkowo wykorzystano czujnik temperatury DHT11, rejestrujący temperaturę otoczenia. Początkowo jego zadaniem był także pomiar temperatury w pobliżu silnika, aby kontrolować ryzyko jego przegrzewania się.

Projekt jest kontynuacją projektu opisanego pod linkiem: https://github.com/SNS-Automatyk/ConveyorBelt-mqtt. Więcej szczegółów można znaleźć na Github Repo: https://github.com/KarolFra/PCB_AOI_MQTT.
0 komentarzy