Skip to content

Instantly share code, notes, and snippets.

@dazz
Last active August 29, 2015 14:00
Show Gist options
  • Save dazz/11309904 to your computer and use it in GitHub Desktop.
Save dazz/11309904 to your computer and use it in GitHub Desktop.

apidictor

Ein Apidictor kann helfen den Schwarmzeitpunkt vorherzusagen, um das Schwärmen zu verhindern. Bevor die Königin schwärmt muss sie leichter werden, hört auf zu fressen und Eier zu legen. Die Ammenbienen die die Königin füttern werden ihren Futtersaft nicht mehr los und schlagen frustriert mit den Flügeln in einer Frequenz zwischen 225-285Hz. Dieses Geräusch kann man herausfiltern und die Lautstärke messen um damit den Schwarmzeitpunkt vorher zu sagen.

Überlegungen

  • Wo ist Strom?
  • Wie weit ist die Stromquelle von der Beute entfernt?
  • Stromversorgung mit microUSB
  • Wo werden Daten gespeichert?
  • Ist Datenübertragung mit Internet zu Server möglich?
  • Wo wird der Microcontroller verstaut?
  • Wie wird der Microcontroller wasserdicht verpackt?
  • Wie werden die Sensoren in die Beute geführt?
  • Der Aufbau soll sein:
    • Erweiterbar
    • Austauschbar
    • Entfernbar
  • Wie werden die Töne aufgenommen?
  • Wo werden die Audiodaten gespeichert?
  • Wie oft sollen Audiorecordings stattfinden?
  • Zu welcher Zeit sollen Töne aufgenommen werden?
  • Wie lange soll die Aufnahme sein?
  • Wo werden die Audiodaten verarbeitet?
  • Wie und wo werden die Daten verarbeitet?

Hardware

  • SD Karte formattiert mit XFS Partition auf der die Aufnahmen gespeichert werden (http://www.raspberrypi.org/forums/viewtopic.php?f=28&t=43738)
  • Microcontroller (Raspberry Pi) mit installiertem Debian
  • rasClock (real-time clock für Raspberry Pi)
  • microUSB Stromkabel, Länge muss von der Steckdose bis zur Beute reichen
  • USB Soundkarte
  • 3.5mm Klinke Mikrofon
  • Rähmchen mit einer Kammer für die Sensoren
  • Beute mit Loch für Kabel zu Sensoren in Rahmen-Kammer

Software

  • Sound aufnehmen mit arecord
  • Bandpass filter anwenden von 225-285Hz und verdeutlichen mit sox (muss zweimal gemacht werden da noch zu fuzzy mit einmal)
  • Auswertung der Lautstärke (auch sox)
  • Auswertung speichern
arecord -d 10 -f cd -t wav -D hw out.wav
sox out.wav out2.wav bandpass 255 5h
sox out2.wav out3.wav bandpass 255 10h
sox out3.wav -n stat 2> stats.txt

sox -V3 -S -t alsa default -r 20000 recording.flac

Prerequirements

  • Raspberry Pi
  • SD card with at least 8 GB
  • USB Keyboard and Mouse
  • HDMI monitor
  • Micro USB charger

Preparations

Prepare SD card

  1. Download NOOBS from raspberrypi.org
  2. Create one big FAT32 partition on the SD card (linux will do its part)
  3. Unzip the NOOBS software on the SD card
  4. Boot the Pi
  5. Select Raspbian
  6. Select your language and keyboard layout
  7. Click on install

Setup Raspbian

  • Change locale to en_US.UTF-8
  • change Timezone to your local timezone
  • change keyboard layout to your keyboard layout
  • Change memory split to 16 MB for GPU
  • Enable SSH on boot
  • Finish and reboot
  • After reboot login, change your hostname and password

Adding Temperature and Humidity Sensor DHT22

Output:

Using pin #4
Data (40): 0x3 0x61 0x0 0xfd 0x61
Temp =  25.3 *C, Hum = 86.5 %

Adding a database

On the raspberry:

  • sudo apt-get install couchdb
  • curl -X PUT http://127.0.0.1:5984/_config/httpd/bind_address -d '"0.0.0.0"' to make the couchDb accessable from remote
  • sudo service couchdb restart
  • netstat -an | grep 5984 (should output 0.0.0.0:5984)
  • curl -X PUT http://localhost:5984/_config/admins/apidictor -d '"rotcidipa"'
  • curl -X PUT http://localhost:5984/apidictor

On your machine:

  • ssh -L 5984:localhost:5984 pi@IP-OF-RASPBERRYPI (port forwarding; use different port for the first port if you have already couchDb installed locally)
  • open http://localhost:5985/_utils/ (ta-daaaaa!)
  • create db where data gets stored

Adding a script language (of my choice)

  • sudo apt-get install php5-cli
  • sudo apt-get install php5-curl

Running the fft on recorded soundfiles

The fft is computed by a python script.

Building it

Nachdem in einem unserer Bienenstöcke zwei mal ein Schwarm abgegangen war, wollte ich wissen wie man dieses Verhalten vorhersagen könnte. Dabei stieß ich auf die Methode von Eddie Woods mit einem Mikrofon im Bienenstock die Lautstärke eines bestimmten Frequenzbandes (zwischen 225-285Hz) zu messen. Wenn die Bienen vorhaben zu schwärmen nimmt die Lautstärke zu und zum Zeitpunkt wenn die ersten Königinnen-Eier gelegt sind nimmt die Lautstärke wieder ab.

Dinge die passieren beim Versuch alles zum Laufen zu bekommen

Das Problem beim Raspberry mit Soundaufnahmen sind Störgeräusche die auftreten. Diese können verschiedene Ursachen haben.

  • arecord kann nicht schnell genug auf die Speicherkarte schreiben, mehrere Möglichkeiten: eine ramdisk erstellen und darauf schreiben; XFS fileformat partition die etwas schenller ist
  • Das Netzteil regelt die Spannung nicht richtig und es entstehen Störgeräusche
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment