Difference between revisions of "AudioMoth"

From RevSpace
Jump to navigation Jump to search
(Suggested trigger extension)
Line 50: Line 50:
  
 
Proposed algorithm:
 
Proposed algorithm:
* Apply a high-pass filter at about 10 kHz, this needs not be super-sharp filter. Perhaps just a simple 1-pole IIR (easy to calculate).
+
1) Apply a high-pass filter at about 10 kHz, this needs not be super-sharp filter. Perhaps just a simple 1-pole IIR (easy to calculate).
* Calculate the energy in each millisecond by adding the squared amplitude of the high-pass filtered signal over this millisecond.
+
2) Calculate the energy in each millisecond by adding the squared amplitude of the high-pass filtered signal over this millisecond. Perhaps we can also just calculate variance here and forget about step 1).
* Calculate a running average energy over several (say 500) of these milliseconds values.
+
3) Calculate a running average energy over several (say 500) of these milliseconds values.
* If the millisecond energy exceeds the average energy by a factor X (the sensitivity of the trigger), consider the trigger to be active.
+
4) If the millisecond energy exceeds the average energy by a factor X (the sensitivity of the trigger), consider the trigger to be active.
  
 
=== Running the tools ===
 
=== Running the tools ===

Revision as of 14:21, 14 April 2020

Project AudioMoth
Audiomoth.png
Status In progress
Contact bertrik
Last Update 2020-04-14

What

I have an AudioMoth board, and plan to improve its software:

Ideas:

Hardware

Frequency response

See https://circuithub.com/projects/OpenAcoustics/AudioMoth

The microphone is a SPM0408LE5H. Can't find much about its ultrasonic performance. The official graph shows a hint of resonance above 10k so it does have ultrasonic sensitivity. For frequencies higher than the resonance peak the response of a typical microphone drops off steeply with 6 dB/octave. I have been able to record some pipistrelle bats with it (40 - 50 kHz).

The processor is EFM32WG380F256, link

Software

My fork on github: https://github.com/bertrik/AudioMoth-Project

Suggested trigger extension

A bat specific trigger is desireable because this way we only get "interesting" files.

The idea is that bat signals are, in general:

  • ultrasonic, frequency above 10 kHz
  • organised in short pulses, e.g. 8 pulses per second of 5 ms each for a pipistrelle

Challenges:

  • crickets, sound is also at least partly ultrasonic, overlapping with the calls of some of the larger bats and with social bat calls in general

Proposed algorithm: 1) Apply a high-pass filter at about 10 kHz, this needs not be super-sharp filter. Perhaps just a simple 1-pole IIR (easy to calculate). 2) Calculate the energy in each millisecond by adding the squared amplitude of the high-pass filtered signal over this millisecond. Perhaps we can also just calculate variance here and forget about step 1). 3) Calculate a running average energy over several (say 500) of these milliseconds values. 4) If the millisecond energy exceeds the average energy by a factor X (the sensitivity of the trigger), consider the trigger to be active.

Running the tools

Running the AudioMoth tools (configuration tool, flash tool, etc) requires the --no-sandbox option (at least on my system), for example

 ./AudioMothConfigurationAppSetup1.2.5.AppImage --no-sandbox

IDE for development

A description of all steps to get the firmware compiled is written here: https://github.com/OpenAcousticDevices/AudioMoth-Project/wiki/AudioMoth

Compiling

platformio

It compiles and produces a firmware.bin file, but it's not recognized by the flashing tool as a valid file.

Use this platformio.ini file:

 [platformio]
 src_dir = src,fatfs_src
 include_dir = inc,fatfs_inc
 [env:default]
 framework = zephyr
 platform = siliconlabsefm32
 board = efm32wg_stk3800

Install platformio:

 sudo apt install python3-pip
 sudo pip3 install platformio
 sudo pip3 install -U PyYAML

Compile it:

 pio run