Project showcase
Smart Bird Feeder

Smart Bird Feeder © GPL3+

Conception of connected bird feeders, able to alert if the seed tank is empty and analyses its use by birds.

  • 2,458 views
  • 8 comments
  • 13 respects

Components and supplies

Necessary tools and machines

3drag
3D Printer (generic)
09507 01
Soldering iron (generic)

Apps and online services

About this project

Introduction

According to a CNRS study, the bird population is declining. This is a huge problem for biodiversity and ecosystem. That’s why it is important to help bird populations and collect data on their habits and environment.

The main goal of our project is to give birds a little help to feed themselves during cold winters. Birds spend most of the day looking for food, especially to resist the cold. And that is not so easy! Their energy needs to maintain their body temperature, increasing while food resources decrease.

Smart bird feeders can be a solution, thanks to Sigfox technology, where information is sent every hour. We can know the environment temperature, the amount of seeds left in the feeder, and have statistics about feeder usage by birds.

Smart bird feeders can be put in private garden as well as public parks or natural reserves.

Technical Details

Our feeder provides its location, the temperature, the presence of seeds, and statistics of usage by birds.

Communication Module

For the purposes of this project, we use an Arduino MKR FOX 1200 module. This module is an Arduino electronic platform integrating a Sigfox communication module and a temperature sensor. Thanks to the Sigfox technology, it’s possible to localize feeders with a sufficient precision.

Location functionnality is important for our project to know the location of our feeders. Location offer capability to manage a set of feeders, and having alerts to fill in empty feeders. Furthermore, it can provide precious information to evaluate the birds population. Temperature will also establish the link between feeder use and climatic conditions.

Sensors

1. Ultrasonic Sensor

An ultrasonic sensor will evaluate the influence of the feeder. With this sensor we can evaluate the feeder usage by the birds. When they eat, birds are in front of the sensor. The sensor make regular measurments to detect bird presence.

2. LED and Photoresistor

The leds and photo resistor will allow us to know if the feeder is empty.

The led and the photo resistor are placed at the opposite of the feeder where the seeds flows. If the photo resistance detect the light of the leds, the feeder is empty.

3. Temperature Sensor

The temperature sensor is embbeded in the MKR FOX 1200. It provides information about the environement in which the feeder is installed.

4. Location Sensor or GPS

To reduce the cost of the feeder, we use location capabilities of the Sigfox technology. It’s also possible to have a more accurate localization by using a GPS module.

Feeder Description

The feeder modelized with Fusion 360 and printed with a 3D printer. It is composed of:

  • A tank, which is a soda bottle, surrounded by rings to adapt it to the feeder structure (black parts in the figure).
  • The main feeder part, with two perches for birds. Several holes allow to place thesensors and to pass the electric wires. (green in the figure)
  • Boxes to enclose distance sensor, installed on front of the perches (orange in the figure)
  • Boxes to enclose sensor seed system, installed on the sides of the feeder (blue in the figure)
  • A box to enclose the sigfox communication module, under the feeder (yellow on the figure)

Electronics Scheme

The feeder has two sides. On the following figure, you have a breadboard with the two sides (one on the top part, one on the bottom part). Distance sensor is used to detect bird presence. The led and photo-resistor are used to detect seed presence, as describe previously : led generates light, detected by the photoresistor.

  • If the feeder is full, seeds prevents light from reaching the photoresistor.
  • If the feeder is empty, the light activate the photoresistor.

Communication Principle

We use Sigfox to communicate.

We don't need to send datas all the time. To preserve battery, we only send a report each hour and the size of the data is only 4 bytes. It's sufficient to have a feedback of specific information.

We can have many feeders. Thanks to the long range capability of the Sigfox network, we can create a really large networks of feeders.

Each feeders sends data with Sigfox. At the Sigfox backend, we redirect information to our server. Our server contains a database and a website to monitor our feeders.

Interface

The interface is available at this address http://grit.esiee-amiens.fr:8069/birdfeeder/layouts/index.php

We currently have just one bird feeder, but it's possible to add many others. The interface can support and is already set to receive additional information from other feeders.

We have a map, which localizes all the bird feeders.

We can click on a pin to see the informations about the feeder. There is the level of seeds, the number of birds, the temperature, and a graph with the 24 last reports of this feeder:

We also have a list with all the feeder, and their information. It's the latest reports of each feeder:

Possible Extra Features

It's possible to add many in the evolution of the project.

We can add a solar panel to make the feeder more autonomous and respectful of the environment.

We can also add other light sensors in the support of the feeder to enhance the accuracy of seed level readings.

Some birds could have an identification chip (RFID, for example). Add to the feeder a chip reader will enable us to follow the birds and follow their activities.

Conclusion

Bringing this project to live allowed us to see all the possibilities that gives Sigfox technology to improve our relation to nature and environement. Beyond technology, this project allows us to become aware of the fragility of our ecosystem. Let's hope it will lead to a real change.

We made some tests with our smart bird feeder. Our prototype is already useful and functional. It is very satisfying for our team. This project can be improved, and we will continue to work on it in a close future. The skills acquired during this project could be reused in many others.

Acknowledgements

We want to particularly thank our professor and mentor Mr Nicolas DAILLY who teached us all what we know about internet of things, and helped us with the conception and to solve problems we met while realising our project.

We thank all the personnal of our engineering school ESIEE-Amiens, and the sudents of our branch - Computer Networks and Connected Devices.

Code

SigfoxBirdFeeder.inoArduino
Arduino Code of the Bird Feeder Project
/**
 * Project Bird Feeder
 * 
 * Emma Debar / Maakni Kahina
 * 
 * ESIEE-Amiens - RIOC - Rseaux Informatiques et Objets Connects
 */

#include <SigFox.h>
#include <ArduinoLowPower.h>

//Capteur de graines 1 (vert/orange)
const int seedSensor1=A0; //vert
const int led1=6; //vert
const int consigne1=8; //orange

//Capteur de graines 2 (bleu/jaune)
const int seedSensor2=A1; //bleu
const int led2=7; //bleu
const int consigne2=9; //jaune

//Gestion de Ultra Son
const int trig1=2;
const int echo1=3;

const int trig2=4;
const int echo2=5;

uint8_t mydata[4] = {0x00, 0x00, 0x00, 0x00};

long temps;
long freq_envoie=1000*60*60; //1000ms*60sec*60min
int nb_mesures=0;
int nb_birds;
long freq_mesure=1000*30; // une mesure toutes les 30 secondes

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);

  pinMode(led1, OUTPUT);
  pinMode(consigne1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(consigne2, OUTPUT);
  
  pinMode(trig1, OUTPUT);
  digitalWrite(trig1, LOW);
  pinMode(echo1, INPUT);

  pinMode(trig2, OUTPUT);
  digitalWrite(trig2, LOW);
  pinMode(echo2, INPUT);

  delay(10000);
  
  sendMyData();
}

void loop()
{
  //on mesure le temps en dbut de boucle
  temps=millis();
  nb_mesures=0;
  nb_birds=0;

  while(millis()-temps<freq_envoie)
  {
    nb_mesures++;
    nb_birds+=bird_detection();
    delay(freq_mesure);
  }

  mydata[1]=(uint8_t)nb_birds;
  mydata[2]=(uint8_t)nb_mesures;
  mydata[3]=4-seed_detection()-seed_detection();
  
  sendMyData();
}

int bird_detection()
{
  int birdy=0;
  
  //sensor 1
  
  //on s'assure que l'metteur n'envoie rien
  digitalWrite(trig1, LOW);
  delayMicroseconds(2);

  //on envoie un signal
  digitalWrite(trig1, HIGH);
  delayMicroseconds(10);
  digitalWrite(trig1, LOW);

  //on regarde le temps de propagation du signal
  long duration1=pulseIn(echo1, HIGH);

  long distance1=duration1/58.2;

  Serial.print("Distance 1=");
  Serial.println(distance1);

  if(distance1<10)
  {
    birdy++;
  }

  //sensor 2
  
  //on s'assure que l'metteur n'envoie rien
  digitalWrite(trig2, LOW);
  delayMicroseconds(2);

  //on envoie un signal
  digitalWrite(trig2, HIGH);
  delayMicroseconds(10);
  digitalWrite(trig2, LOW);

  //on regarde le temps de propagation du signal
  long duration2=pulseIn(echo2, HIGH);

  long distance2=duration2/58.2;

  Serial.print("Distance 2=");
  Serial.println(distance2);

  if(distance2<20)
  {
    birdy++;
  }

  return(birdy);
}

int seed_detection()
{
  int sensorValue1, sensorValue2, difference, result;

  result=0;
  
  //mesure cot (vert/orange)
  digitalWrite(consigne1, HIGH); //on active le capteur
  delay(10); //on attends un peu
  sensorValue1=analogRead(seedSensor1); //on lit la valeur
  digitalWrite(led1, HIGH); //on allume la led 1
  delay(10); //on attends un peu
  sensorValue2=analogRead(seedSensor1); //on lit la valeur
  digitalWrite(led1, LOW); //on eteint la led 1
  digitalWrite(consigne1, LOW); //on desactive le capteur
  
  Serial.print("Valeur 1 : ");
  Serial.print(sensorValue1);
  Serial.print(" -> ");
  Serial.print(sensorValue2);
  Serial.print("\r\n");

  if(sensorValue2-sensorValue1>40)
  {
    result++;
  }
  
  //mesure cot (bleu/jaune)
  digitalWrite(consigne2, HIGH); //on active le capteur
  delay(10); //on attends un peu
  sensorValue1=analogRead(seedSensor2); //on lit la valeur
  digitalWrite(led2, HIGH); //on allume la led 2
  delay(10); //on attends un peu
  sensorValue2=analogRead(seedSensor2); //on lit la valeur
  digitalWrite(led2, LOW); //on eteint la led 2
  digitalWrite(consigne2, LOW); //on desactive le capteur
  
  Serial.print("Valeur 2 : ");
  Serial.print(sensorValue1);
  Serial.print(" -> ");
  Serial.print(sensorValue2);
  Serial.print("\r\n");  

  if(sensorValue2-sensorValue1>7)
  {
    result++;
  }

  return(result);
}

void sendMyData()
{
  // Start the module
  if(!SigFox.begin())
  {
    Serial.println("Error with SigFox Shield");
    return;    
  }

  // Wait at least 30mS after first configuration (100mS before)
  delay(100);

  Serial.print("Module temperature: ");
  float to=SigFox.internalTemperature();
  Serial.println(to);

  mydata[0]=(uint8_t)floor(to+50);

  SigFox.beginPacket();
  
  SigFox.write(mydata, sizeof(mydata));

  int ret = SigFox.endPacket();  // send buffer to SIGFOX network
  
  if (ret > 0) {
    Serial.println("No transmission");
  } else {
    Serial.println("Transmission ok");
  }

  SigFox.end();
}

Custom parts and enclosures

Small Cork
Small Cork (top of the tank lid)
side box
Side box to mask electronics
Ultrasonic Sensor Lid
Top lid of the feeder
Top lid of the Feeder
Bird Feeder Main Part
Main part of the bird feeder
Inside tank base
Tank = Famous Soda Bottle
Outside Tank Base
Tank = famous soda bottle
Electronic card box
bottom of the feeder, to install the electronics sigfox card
Top tank support
Tank = famous soda bottle

Schematics

Scheme
Electronic scheme
schema_p9uFiaYV2E.fzz
Scheme
Electronic Scheme
Schema bb krdscwmmf8

Comments

Submitted to Contest

The Top Ten Projects will be chosen to interview for a chance to pitch their project during Sigfox's annual event in Berlin + A Development Kit of Your Choice!

Sensing the Earth

Team ESIEE-Amiens Students

Photo
Maakni Kahina
  • 1 project
  • 1 follower
Default
Emma Debar
  • 1 project
  • 1 follower
1910083 44167009597 7381 n fam2dyvktw
Nicolas DAILLY
  • 2 projects
  • 4 followers

Published on

July 15, 2018

Members who respect this project

TaifurDefaultGovkn1910083 44167009597 7381 n fam2dyvktwImg 4220 6r8bv37anrPhotoPhotoN1177995732 193390 2867 400x400 nurnkz9ecx

and 5 others

See similar projects
you might like

Similar projects you might like

Arduino Bluetooth Basic Tutorial

by Mayoogh Girish

  • 454,737 views
  • 42 comments
  • 238 respects

Home Automation Using Raspberry Pi 2 And Windows 10 IoT

Project tutorial by Anurag S. Vasanwala

  • 285,647 views
  • 95 comments
  • 672 respects

Security Access Using RFID Reader

by Aritro Mukherjee

  • 229,740 views
  • 38 comments
  • 239 respects

OpenCat

Project in progress by Team Petoi

  • 196,322 views
  • 154 comments
  • 1,364 respects
Add projectSign up / Login