Kiedy urządzenia, takie jak silniki, zaczynają się psuć, wzrasta ich hałas i zużycie energii, czemu towarzyszą zmienne wibracje. Wiedząc o takich mikrozmianach, możemy przewidzieć prawdopodobieństwo awarii różnych maszyn, a tym samym naprawiać, konserwować i chronić je przed wystąpieniem jakichkolwiek innych usterek.
Aby rozwiązać powyższy problem, opracujemy model ML, który będzie monitorował dźwięki i wibracje wytwarzane przez maszynę, wykrywał drobne zmiany i przewidywał usterki w celu przeprowadzenia konserwacji predykcyjnej. Z czasem model ML nauczy się różnic w dźwiękach wytwarzanych przez maszynę w normalnych i niesprawnych warunkach. Przetwarzając wynik, wydedukuje, czy zmiana wskazuje na jakiekolwiek nieprawidłowe działanie. Jeśli tak, to alert zostanie wysłany z wyprzedzeniem, aby podjąć niezbędne kroki w celu zapobieżenia uszkodzeniom.
Uwaga: Moduł głosowy można zastąpić dowolnym mikrofonem Bluetooth lub USB.
Szkolenie modelu ML
Możesz wybrać spośród różnych platform takich jak TensorFlow, SensiML, Edge Impulse itp. do stworzenia modelu ML. W tym projekcie używany jest Edge Impulse do szkolenia modelu ML. Aby dowiedzieć się jak utworzyć model ML i wytrenować go, zapoznaj się z poniższym artykułem: "Wykrywanie Covid w oparciu o promienie X".
Wytrenuj model ML tak, aby wykrywał wszelkie drobne zmiany w dźwięku i wibracjach używając sygnałów audio. W tym celu zainstaluj zależności EDGE Impulse na Raspberry Pi (zapoznaj się z powyższym artykułem, aby poznać procedurę instalacji).
Uruchom następujące komendy aby zainstalować zależności:
curl -sL https://deb.nodesource.com/setup_12.x | sudo bash -
sudo apt install -y gcc g++ make build-essential nodejs sox gstreamer1.0-tools gstreamer1.0-plugins-good gstreamer1.0-plugins-base gstreamer1.0-plugins-base-apps
npm config set user root && sudo npm install edge-impulse-linux -g -unsafe-perm
Następnie tworzymy nowy projekt i łączymy projekt Raspberry Pi z EDGE Impulse za pomocą
edge-impulse-linux
Niniejszy projekt został nazwany 'Digital Twin and IoT Predictive Maintenance’. Możesz jednak nadać mu dowolną inną nazwę według własnego uznania.
Następnie otwórz odebrany adres URL w terminalu Linux lub przeglądarce internetowej. Zobaczysz wtedy opcję przesyłania danych do szkolenia modelu ML. Wybierz opcję "mikrofon" i prześlij dźwięk z silnika. Oznacz go jako "normalny" lub "uszkodzony", w zależności od stanu faktycznego. Pod etykietą "normalny", załaduj dźwięk działającego silnika. W przypadku etykiety "uszkodzony", załaduj dźwięk silnika, który nie był odpowiednio naoliwiony i pracował w stanie przeciążenia. Dźwięk został nagrany dla silnika, gdy doświadczał on niskich i wysokich napięć oraz w stanie ssania wału.
Następnie wybierz parametr, przetwarzanie i blok uczenia dla modelu ML, aby wykonać klasyfikację i przetwarzanie dźwięku. Wybierz Spectrogram do przetwarzania dźwięku i sieć neuronową Keras do uczenia ML.
W Spectrogramie wybierz te części z zebranych danych audio, które chcesz ustawić jako parametry dla dźwięku uszkodzonej maszyny.
Następnie przejdź do klasyfikatora NN i dodaj warstwy dla parametrów, aby wytrenować model ML.
Wdrażanie modelu ML
Po uzyskaniu satysfakcjonującej dokładności modelu ML (autor uzyskał dokładność około 90%), można pomyśleć o jego wdrożeniu, do czego należy wybrać odpowiedni mikrokontroler w zależności od miejsca wdrożenia.
Wybierz płytkę z Linuksem, otwórz terminal Linuksa na Raspberry, a następnie pobierz plik modelu ML uruchamiając w terminalu
edge-impulse-linux-runner –download modelfile.eim
Kodowanie
Przed rozpoczęciem kodowania należy zainstalować zależności i bibliotekę Edge Impulse na Raspberry Pi. Upewnij się także, że sklonowałeś Edge Impulse SDK.
Aby to zrobić, wykonaj następujące czynności w terminalu
sudo apt-get install libatlas-base-dev libportaudio0 libportaudio2 libportaudiocpp0 portaudio19-dev
pip3 install edge_impulse_linux -i https://pypi.python.org/simple
pip3 install edge_impulse_linux
git clone https://github.com/edgeimpulse/linux-sdk-python
Teraz otwórz sklonowany folder Python SDK z Edge Impulse. Przejdź do przykładów, otwórz folder audio i utwórz nowy plik skryptu Pythona o wybranej przez siebie nazwie (np. DigitalTwinpredict.py).
Następnie otwórz plik classify.py Pythona (znajdujący się w tym samym folderze SDK) i skopiuj kod classify.py do DigitalTwinpredict.py (w twoim przypadku inna nazwa pliku). Teraz zaimportuj tutaj piny AIY i inne funkcje do korzystania z modułu głosowego AIY.
Następnie użyj warunku if, aby ustawić wynik dla etykiet dźwiękowych, czyli normalny lub uszkodzony. Jeśli wykryty wynik jest większy niż 70%, gdy model ML przetwarza dźwięk, to ustaw w kodzie funkcję, która wysyła alert za pomocą oświetlenia LED i alarmu informującego, że silnik zbliża się do usterki.
Testowanie
Po wykonaniu tych czynności należy skopiować model w pliku .eim do folderu, w którym znajduje się kod. Następnie otwórz terminal i uruchom kod w Pythonie ze ścieżką do pliku modelu .eim ML. Potem posłuchaj próbki audio. Jeśli masz wiele urządzeń wejściowych audio, może zapytać Cię o numer portu audio. W takich przypadkach wybierz jako domyślne systemowe, a następnie uruchom dźwięk silnika, który może mieć pewne zmiany wskazujące na możliwą usterkę.
Model, który stworzyłem, przetwarza różne dźwięki silnika pracującego w normalnych warunkach, bez smaru i z wałem ciernym, kiedy jest przeciążony, itp. Kiedy więc ML wykryje dźwięk, który jest podobny do dźwięku wytwarzanego przez przeciążony silnik lub gdy zmiana w dźwięku pojawia się, gdy wał doświadcza tarcia, wysyłany jest alert informujący, że naprawa może być potrzebna w przyszłości.