Just recently, I had the pleasure of attending the San Diego ZooHackathon, held at the SD Zoo and Safari Park. Initially, I went with two of my coworkers from the City (Jen L and Alex H), but we were joined by several people we met there (Taiki K and Sufyan S).

The hackathon was focused around conservation, and preventing poaching, with some very explicit problem statements. The issue we hoped to address was to minimize poaching of large animals such as Rhinos and Elephants in wildlife preserves around the world.

Please see the DevPost Project Page for more info about the project, the hackathon and the team.


Endangered species in conservation areas are threatened to the point of extinction by poachers. Local authorities are resource constrained and are not able to monitor an entire conservation area for poaching activity — particularly the interior of a preserve. Humans in general would not be very good at this either because of the high-friction way reporting would have to be done. Our solution was deploy low-cost connected sensors throughout the interior of a conservation area to monitor the area for suspicious activity.

What it Does

Savvy Savanna allows low cost IoT — the sensor and the button — to be deployed in conservation areas and surrounding villages. The system allows people to press a button to report suspicious poaching activity and solar-powered field sensors which automatically report potential poacher problems in the savanna.

Sensors in the savanna detect sounds, such as helicopter noise, that trigger an alert to be sent to the cloud and subsequently to the appropriate authorities.

The system alerts authorities of poacher activity detected by the system. The authorities receive a text message alert and a location of where to respond.


Cellular signal reception and WiFi network coverage is limited in the savanna. The sensors need a way to transmit information to the cloud. To solve this problem, the sensors in the field are part of a mesh network. This is technology currently utilized in “smart cities” with interconnected devices. Field sensors can be networked together with only certain sensors directly connected to the internet network.

Community members may be targeted for attack by organized crime groups if they are seen as reporting poaching activities. To solve this problem, “the button” component of the system is a way that community members can anonymously report potential poaching activity in their neighborhood by simply pushing a button.

Savvy Overview Prezi

Cost Estimation

Our rough estimates are that with the current architecture, deploying one of these one per 0.2 square miles would cost around $20,000. However, as we make changes to the hardware and implement mesh networking, this cost could significantly go down.

How we Built The Sound Sensor


The hardware consists of a Particle Electron Board.
These are Arduino based boards that have a connection to the internet through a 2G network available in over 100 countries in the world.

Particle Electron

They are backed up by Particle’s cloud infrastructure. This allows us to trigger webhooks directly using the firmware on the board. We can also use this architecture to expose different functions on the board as POST requests, allowing us to build an API for our IoT device.

We started by wiring up the Particle board with: * Analog microphone * LED for monitoring the status of the run loop (debugging) * LED for monitoring the input volume of the sound coming into the mic

There is an additional LED on the electron board itself. We used that to communicate that the sound threshold has been reached an a notification is being triggered.

Particle Wire Up

What Happens

The sensor sits there and listens. Arduino devices operate on a loop, so it samples the sound volume every 2 seconds. Since it’s an analog input, the volume will be anywhere from 0 to 4096. When the volume spikes over 2000, a command is sent to Particle Cloud. This triggers a POST webhook with the data sent from Particle to AWS API Gateway which then relays the input to AWS Lambda. The Lambda callback function then triggers the Twilio API to deploy text messages.

Lastly, we use the MapBox static maps api (you can use API to generate a static map image with the location and send that through as Twilio MMS. Since we don’t have a GPS sensor on the button or the Electron just yet, we used StaticMapGen to prototype.

How we Built The AWS IoT Button


While a sound sensor is nice to have for continous monitoring, our idea was also to have a way for community members to anonymously report poaching, avoiding retaliation from organized crime groups. We used an AWS button as a stand-in. However, since it’s only wi-fi enabled and carries no gps chip, ideally we would build a custom one.

What happens

Because of the modular architecture we already had in place it was fairly simple to add the AWS IoT trigger as an additional trigger for the Lambda function.

How it all fits together:

Overall Architecture


Grab the Arduino code for the firmware

Grab the Lambda Function JS

Next Steps

We will probably continue hacking on this project, as this is an important challenge and we think we may have a way to solve it. We still have quite a bit of ways to go, specifically:

  • GPS Enable the sensors
  • Solar Enable the sensors
  • Provide protective covering for the sensors
  • Provide cloud infrastructure for data aggregation and monitoring
  • Train a model to recognize sound (elephant trumpet vs helicopter noise) and deploy it to the devices on the edge. This may require switching to integrating something like the Intel Edison chip.
  • Switch devices to using a low-power WAN configuration, so they can operate in a mesh with only a few points of direct network connectivity to the web.
  • Implement something like Carloop.io in ranger vehicles to prevent false positives caused by ranger vehicle noise.

Keep track of what we’re up to and jump in over in the Github Issue Queue

Chief Data Officer, City of San Diego

Chief Data Officer, City of San Diego