GEODUINO SKILLS: Development Board Choice
As part of the Sounding Out the River project, we are developing a low cost seismic logger which sits on an arduino that we can use to telemeter data back to Edinburgh over the mobile network. The desire is that we can deploy operationally at reasonably large scale for monitoring in potentially hazardous environments such as during floods, debris flows or volcanic settings.
This requires that we integrate several different technologies within one system. Since power consumption is an issue, we are not going to use a microprocessor, such as on the Raspberry Pi or Pi Zero, for this work. This would have made the coding easier – but we cannot justify the extra power consumption.
Instead we are looking at various microcontrollers and associated development boards. Working with microcontrollers is a new experience for me – and whilst I am a competent programmer, the use of embedded software to program microcontrollers is new.
What I am rapidly learning is that the software and hardware choice are intimately linked. One development board will make some things really easy, but other things harder… Finding the optimal solution will therefore be a process of trial and error…
We are working with three different development boards developed by Adafruit:
- Metro M0 Express (SAMD21 microcontroller)
- Metro M4 Express (SAMD51 microcontroller)
- ESP32-S2 Metro Express (ESP32-S2 microcontroller)
We hope to use the Ultimate GPS Logger shield as it gives us accurate timing, a real time clock and a micro SD card reader to store the data in one piece of hardware.
We will interact with out Seismic Analogue to Digital Converter using the SPI protocol, but all three of our boards support. I am curious about best practice for getting high accuracy of the timing so that data from different loggers can be accurately compared.
The above provides most of the functionality we need for purely logging.
However, if we are to telemeter the data using our telemetry box – we also need a solution to to mount the SD card over USB. This is a bit more of a challenging ask as it is relatively new technology. I would have liked us to use Circuit Python to program the system, but there is not currently a way to mount the SD card (as far as we are aware…) which means we need to use c to program it.
The ESP32-S2 also has a rather annoying feature – the button needed to put it in the mode for programming it is on the middle of the board is really hard to press when there is a shield on – hopefully a new iteration of the board will make this easier…
Over the next wee while, I will post a series of posts about how we solve various components of this roadmap and explore the tradeoffs we are experiencing. I am looking forward to seeing how to get each part working – I am really hoping that these solutions will not conflict with each other…
As we work through these steps, we will work out which development board will work for us before we start to optimise power consumption for that system.