Skip to content

Commit

Permalink
Merge pull request #438 from dtischler/main
Browse files Browse the repository at this point in the history
spelling fixes 6
  • Loading branch information
dtischler authored Jan 7, 2025
2 parents 53a6274 + e9b926c commit d4641c4
Show file tree
Hide file tree
Showing 16 changed files with 58 additions and 45 deletions.
15 changes: 14 additions & 1 deletion .wordlist.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2191,10 +2191,23 @@ Chardev
tera
HailoTracker
Roboflow’s
Roboflow's
Lescaudron
ECR
xNAN
LX
Xtensa
segmenter

neurodegenerative
pronation
supination
paprikas
acmedoge
specular
Lightbulb
exuberating
CrowVision
optain
imread
Sensirion's
data's
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ Deep learning solves this approach by making use of learning algorithms to simpl

The Object Detector functions as the Region of Interest segmenter, while the Classifier then determines if a product is defective or damaged, or passes the quality check. We will proceed to implement such a pipeline together with a custom GUI based app.

Akida Neuramorphic technology is unrivaled in terms of power usage at a given performance level. Neuromorphic also provides unique features not found in other technologies, such as on-device edge learning made possible by the Spiking Neural Network architecture.
Akida Neuromorphic technology is unrivaled in terms of power usage at a given performance level. Neuromorphic also provides unique features not found in other technologies, such as on-device edge learning made possible by the Spiking Neural Network architecture.

## Setting up the Brainchip Akida Developer Kit

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ Public Project Link: [https://studio.edgeimpulse.com/public/283457/latest](https

Nearly all machines require routine maintenance to maintain proper functionality. If not provided, they can break down abruptly. Sometimes, even between routine maintenance being performed, parts of a machine may fail. A failure of a mission-critical or high availability system can be disastrous for an organisation. To avoid such a scenario, a condition monitoring system is recommended for predictive maintenance, to help detect a potential failure in advance to possible reduce downtime.

Most condition monitoring systems are architected similar to the below image:
Most condition monitoring systems have an architecture similar to the below image:

![Conventional Architecture](../.gitbook/assets/condition-monitoring-syntiant-tinyml/conventional_architecture.png)

Expand All @@ -27,15 +27,15 @@ This generally works, but it has few potential problems:

A solution I am proposing focuses on the machine learning part of the conventional condition monitoring architecture. Instead of using cloud services for inferencing of the classification algorithm, we can use a microcontroller and TinyML.

Microcontrollers like the one found on the [Syntiant TinyML board](https://www.syntiant.com/tinyml) are powerful enough to run machine learning models with 3 dense layers, and 256 neurons in each layer. Further, this is acconplished with ultra low power consumption. We can utilise this board to capture data and perform classification locally with the help of Edge Impulse.
Microcontrollers like the one found on the [Syntiant TinyML board](https://www.syntiant.com/tinyml) are powerful enough to run machine learning models with 3 dense layers, and 256 neurons in each layer. Further, this is accomplished with ultra low power consumption. We can utilise this board to capture data and perform classification locally with the help of Edge Impulse.

Other parts of the architecture (e.g. database, dashboard, data ingestion model etc.) can also be replaced with in-house developed solutions, if desired.

![TinyML Architecture](../.gitbook/assets/condition-monitoring-syntiant-tinyml/updated_architecture.png)

## Hardware

To demostrate my solution, I prepared a test setup which requires the following components:
To demonstrate my solution, I prepared a test setup which requires the following components:

- Syntiant TinyML board
- A microSD card - Syntiant TinyML board requires this for IMU data collection.
Expand Down Expand Up @@ -99,7 +99,7 @@ Edge impulse has simplified the machine learning pipeline extensively for TinyML

- To proceed with the IMU data collection using the Syntiant TinyML board and the Edge Impulse, you must flash the [IMU firmware](https://docs.edgeimpulse.com/docs/development-platforms/officially-supported-mcu-targets/syntiant-tinyml-board#connecting-to-edge-impulse) provided in [this documentation](https://docs.edgeimpulse.com/docs/development-platforms/officially-supported-mcu-targets/syntiant-tinyml-board). If it is your first time using the Syntiant TinyML board with the Edge Impulse, then I would recommend following [this documentation](https://docs.edgeimpulse.com/docs/development-platforms/officially-supported-mcu-targets/syntiant-tinyml-board) from the beginning.

> Note: Plese make sure to download and flash the **IMU firmware** and NOT the Audio firmware.
> Note: Please make sure to download and flash the **IMU firmware** and NOT the Audio firmware.
- After flashing the firmware run the below command:

Expand All @@ -109,7 +109,7 @@ edge-impulse-daemon

This will start a wizard, and ask you to login and choose an Edge Impulse project. This is a good time to prepare a project in Edge Impulse if you have not already done so.

- The above step should establish a communication between the Syntiant TinyML board and your Edge Impulse project. To verify that, navigate to the **Devices** tab of the project. You should see the Syntiant TinyML board listed, and the *Remote managment* column should have a green dot in it.
- The above step should establish a communication between the Syntiant TinyML board and your Edge Impulse project. To verify that, navigate to the **Devices** tab of the project. You should see the Syntiant TinyML board listed, and the *Remote management* column should have a green dot in it.

![Devices](../.gitbook/assets/condition-monitoring-syntiant-tinyml/devices_connected.png)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,12 +57,12 @@ The whole principle of operation of a motor pump is based on moving parts. The p

For this application, we will use a condition-based prototyping platform developed by Analog Devices (CN0549) and PSOC 6 Wifi-BT Pioneer Kit by Infineon.

The CN0549 is a condition-based monitoring platform based around the integrated electronic piezoelectric (IEPE) standard, a popular signaling interface standard for high-end microelectronic mechanical systems (MEMS) and piezo sensors that are prevalent in industry today. The kit comes with a mechanical mount optmized for vibration fidelity. For setting up the board with the sensor and to learn more about the hardware, please refer to the links below:
The CN0549 is a condition-based monitoring platform based around the integrated electronic piezoelectric (IEPE) standard, a popular signaling interface standard for high-end microelectronic mechanical systems (MEMS) and piezo sensors that are prevalent in industry today. The kit comes with a mechanical mount optimized for vibration fidelity. For setting up the board with the sensor and to learn more about the hardware, please refer to the links below:

* [Putting together CN0549](https://wiki.analog.com/resources/eval/user-guides/circuits-from-the-lab/cn0549#:~:text=Card%20using%20Linux-,Putting%20together%20the%20CN0549,-Take%20out%20the)
* [Understanding the circuit](https://www.analog.com/en/design-center/reference-designs/circuits-from-the-lab/cn0549.html#rd-functionbenefits)

The anchor of this solution is Infineon's PSOC 6 Wifi-BT Pioneer Kit. The application processor is performance-optimized and runs at 150 MHz, and the co-processor is an Arm M0 core, which can run at 100 MHz. Both cores are power-efficient. It has a floating-point unit (FPU), an 8 KB 2-way associative cache, 1 MB Flash, and 288 KB RAM. The board also has a capacitive sensing block and the capability of programable digital and analog blocks known as PSOC. It is an excellent pick for developing edge ML applications requiring a direct sensor interface. Moreover, board Wi-Fi support and a USB host device can be helpful for high-speed data logging.
The anchor of this solution is Infineon's PSOC 6 Wifi-BT Pioneer Kit. The application processor is performance-optimized and runs at 150 MHz, and the co-processor is an Arm M0 core, which can run at 100 MHz. Both cores are power-efficient. It has a floating-point unit (FPU), an 8 KB 2-way associative cache, 1 MB Flash, and 288 KB RAM. The board also has a capacitive sensing block and the capability of programmable digital and analog blocks known as PSOC. It is an excellent pick for developing edge ML applications requiring a direct sensor interface. Moreover, board Wi-Fi support and a USB host device can be helpful for high-speed data logging.

Here are some pictures of the hardware before and after the assembly. Refer to the CN0549 reference guide for sensor-specific modifications, such as selecting coaxial wire and jumper settings. Switch the `SW7` to position **one** on the MCU board side, ensuring that the sensor board is powered from kitprog2 stable VDD supply. Also, ensure the board is in **daplink** mode for easy debugging in the software section.

Expand Down Expand Up @@ -173,7 +173,7 @@ After building the data set, it's time to create the Impulse. An Impulse is a sy

![](../.gitbook/assets/motor-pump-cypress-cn0549/14.jpg)

For this application, we will be using an input block with a 160ms window size, with a window increase of 80ms at an acquisition frequency of 32000Hz. A **Spectrogram** block is used as our Processing block, and a **Classification** block for our Learning Block, which is good for audio and vibrational data.
For this application, we will be using an input block with a 160ms window size, with a window increase of 80ms at an acquisition frequency of 32000Hz. A **Spectrogram** block is used as our Processing block, and a **Classification** block for our Learning Block, which is good for audio and vibration data.

If you need help determining which blocks to select, you can always try out the [Edge Impulse EON Tuner](https://docs.edgeimpulse.com/docs/edge-impulse-studio/eon-tuner), which can validate different Impulse architectures and give insights on the suitable ones for your specific application.

Expand Down Expand Up @@ -237,15 +237,15 @@ To view the inference results, you must rebuild the code with the inference macr

Run the Jupyter notebook with all the instructions as we did during data logging, except just one step: running the last cell, modified explicitly for data inferencing.

If everything goes well, Hurray!, you should see the streaming data along with classification in your Jupyter notebook.
If everything goes well, Hooray!, you should see the streaming data along with classification in your Jupyter notebook.

![](../.gitbook/assets/motor-pump-cypress-cn0549/21.png)

## Conclusion

![](../.gitbook/assets/motor-pump-cypress-cn0549/22.jpg)

Employing machine learning-based models for predictive maintenance can help us efficiently operate equipment, plan for downtimes, and increase longevity.
Employing machine learning-based models for predictive maintenance can help us efficiently operate equipment, plan for downtime, and increase longevity.

Baking intelligence into the edge and moving computing closer to where data is a paradigm shift from traditional computing, and Edge Impulse is at the forefront.

Expand Down
Loading

0 comments on commit d4641c4

Please sign in to comment.