A large number of diseases involve coughing as one of their primary symptoms, but none are quite as concerning as chronic obstructive pulmonary disease (COPD), which causes airflow blockages and other breathing problems in those afflicted by it. Consistently monitoring the frequency and intensity of coughing is vital for tracking how well the disease is being treated, yet current solutions are impractical outside of a hospital setting.
Eivind Holt had the idea to use an Arduino Nano 33 BLE Sense running a custom tinyML model to automatically classify sounds as either a cough or non-cough and report them to a cloud service. Once a total of 647 audio samples had been collected, Eivind trained a Keras neural networking using Edge Impulse that could correctly identify the sound about 99% of the time. The program he wrote for the Nano creates a custom BLE service with a single cough counting characteristic that is incremented for each detection.
Getting the number of coughs from the local device to the cloud for later analysis and display was accomplished by using the nRF Android app to receive BLE data and transmit it to the nRF Cloud. Meanwhile, a pair of 500mAh batteries were connected and everything was placed into a 3D-printed case that could easily sit near a person’s neck.
To see more about how Eivind designed and built this valuable project, check out the Edge Impulse docs page.