Skip to content

boaks/mobilebeehivescale

Repository files navigation

Mobile-Bienenstock-Waage

Bienenstöcke mit Waage
Figure 1. Bienenstöcke mit Waage

Willkommen auf meiner Bastelanleitung für eine Mobile-Bienenstock-Waage.

Ich bin einer der IoT-Enthusiasten, der gerne echte Dinge baut, die auch funktionieren. 2022 habe ich angefangen, einen Modem-Client zu implementieren, mit dem man zeigen kann was in UDP steckt. In Kombination mit Eclipse/Californium - CoAP-S3-Proxy demonstriert dieses Beispiel, dass man auch von Batterie ein paar Monate jede Stunde Daten austauschen kann.

Anfang 2023 habe ich dann basierend auf diesem Modem-Client meinen erste Bienenstock-Waage gebaut und bei einem befreundeten Imker in Betrieb genommen. Das Ergebnis des halbjährigen Testlaufs ist einfach:

  • mobiler Datenaustausch funktioniert von Batterie sehr gut

  • die Waage selber hat aber viel Verbesserungspotential

Das hat dann zur einer neuen Bauart der Elektronik geführt. Ich möchte gleich hier einräumen, dass es genauere Waagen gibt. Mein Schwerpunkt liegt auf dem mobilen Einsatz und dem Aufbau der Elektronik.

  • ADC wandert aus der Sendebox unter die Waage. Kurze Kabel zu den Dehnmesstreifen sind wichtig für eine geringere Temperaturabhängigkeit.

  • Kalibrierungsdaten müssen ebenfalls in die Waage. Sonst ist es sehr fehleranfällig, wenn die Waagen umziehen und vertauscht werden. Neu Kalibrieren ist auch einfacher, da man das dann mit jeder Sendbox durchführen kann und nicht die nehmen muss, mit der man dann die Waage im Feld wirklich betreibt.

Die neue Bauart berücksichtig beides zusammen und läuft nun seit ein Herbst 2023 auf meiner Terrasse und seit Frühjahr 2024 unter Bienenstöcke. Daher möchte ich hier dieses Ergebnis präsentieren, vielleicht hat ja der eine oder andere Interesse, diese Mobile-Bienenstock-Waage nachzubauen.

Die Ausführung ist ein Kompromis. Manches beruht darauf, was man aus bestehende Komponeten machen kann. Man kann sich da auch alternative Ausführungen vorstellen, aber da bräuchte man dann andere Komponenten oder müßte die selber erstellen. Vielleicht kommt ja die eine oder andere Verbesserung mit der Zeit.

Links zu den Open Source Projekten:

Bausteine

Bausteine

Die Mobile-Bienenstock-Waage besteht aus einer Sendbox und der Waage selbst.

In der Sendbox sind das LTE-M/NB-IoT Modem, der Mikrocontroller und die Batterien untergebracht. Ich benutze ein nRF9160 als nRF9160 feather. Dieses Modem hat als Besonderheit bereits eine Mikrocontroller auf dem Modul, ein ARM Cortec M33 mit 1 mByte Flash und 256 kByte RAM. Als Batterien benutze ich gerne NiMh mit geringer Selbstentladung.

Die Elektronik der Waage besteht dann aus einem ADC, einem Speicher für die Kalibrierdaten, den Dehnmessstreifen (als fertige Sensoren). Und natürlich dem mechanischen Aufbau, der aber wie eingangs schon erwähnt, nicht der Schwerpunkt dieser Bastelanleitung ist.

Der I2C ADC Wandler mit EEPROM

ADC von oben
ADC von unten

Um sowohl den ADC als auch den Kalibrierspeicher unter die Waage zu packen, sollten beide die gleiche Schnittstelle haben. Daher habe ich den geläufigen HX711 gegen einen NAU7802 mit I2C getauscht und ein kleines AT24HC04B EEPROM, ebenfalls mit I2C, hinzugepackt.

Um den NAU7802 nicht selber auf eine Platine packen zu müssen, habe ich ein fertiges Modul von Adafruit benutzt. Das muss dann zusammen mit dem EEPROM auf eine zusätzliche kleine Platine, bei mir passt das auf 5x3cm. Die Verkabelung ist sehr einfach, man muss die Stromversorgung an beide ICs anlegen und die beide I2C Leitungen, SDA und SCL jeweils mit dem anderen IC verbinden. Als Kabel zur Sendebox habe ich ein 4 poliges Kabel, 2m, mit einem 12mm Stecker (eigentlich Buchse) und einem offenen Kabelende genommen, z.B. Lutronic M12.

Das NAU7802 von Adafruit hat eine LED die anzeigt, dass die Stromversorgung anliegt. Da sowohl der NAU7802 als auch das EEPROM aber einen sehr geringen Ruhestrom haben, schalte ich den Strom nicht ab. Ich habe daher die LED entfernt, damit diese nicht unnötig den Ruhestrom vergrößert.

Beschreibung NAU7802 AT24HC04B Kabel Lutronic

Vcc

Vin

Vcc, PIN 8

Braun

GND

GND

GND, PIN 4

Schwarz

SDA

SDA

SDA, PIN 5

Blau

SCL

SCL

SCl, PIN 6

Weiß

Der Anschluß AV (Analog Vin) des NAU7802 wird nicht benutzt, wir benutzen den internen Spannungsregler des NAU7802.

Beim EEPROM bleiben WP (Write Protect, PIN 7) soweit A1 und A2 (PIN 2 und PIN 3) unbeschaltet bzw. diese können mit GND verbunden werden. Für das EEPROM habe ich den üblichen 0,100 µF Folienkondensator zwischen GND und Vcc zur Entkopplung benutzt.

Der DMS Sensor muss dann noch entsprechend mit E+/E-/A+/A- des NAU7802 verbunden werden. Man kann dazu entweder die beim Adafruit mitgelieferten Schraubklemmen benutzen oder die Leitungen anlöten. Die genau Verdrahtung ist weiter unten in Die Waage beschrieben. Wenn alles gelötet ist sorgfälltig alle Flußmittelreste mit einem Reiniger entfernen. Wenn ich Platinen im Freien nutze, versehe ich diese mit einem Schutzlack. Auch wenn diese natürlich in ein Gehäuse kommt.

Der interne Spannungsregler des NAU7802 liefert gemäß dem Datenblatt maximal 10mA. Das passt für viele Sensoren, nicht aber wenn zwei Balkensensoren verbaut werden. Die brauchen je 6-8mA zusammen also mehr als 10mA. Aktuell betreibe ich solche Waagen außerhalb der Spezifikation des NAU7802. Vielleicht funktioniert es ja, wenn man nur alle Stunde für ein paar Sekunden anschaltet.

Wenn nicht, braucht man für diesen Fall einen externen Spanungsregler mit ENable Eingang, z.B. LP2980-N. E+ muss dann dort mit den ENable (On/OFF PIN 3) verbunden werden und E+ der Sensoren mit dem Ausgang des Spannungsreglers. Man muss auch die Empfehlungen für zusätzlich Kondensatoren beachten, meist 1µF low ESR und 0,1µF Folienkondensator. Und man muss auch auf eine "low drop" Version achten. Vcc beträgt nur 3,3V und am Sensor sollte man 2,7-3,0V haben. Leider ist bei der Adafruit Version der Eingang für REFP nicht nutzbar, damit geht dann die ratiometrische Beschaltung des ADC-Boards verloren, wenn man den externen Spanungsregler über E+ schalten möchte. Die ratiometrische Beschaltung sorgt sonst dafür, dass langsame Abweichungen in der analogen Spannung das Messergebnis nicht beeinflußen.

Die 3,3V Versorgungsspannung ist ein Kompromis. Wenn man auf 5V hoch geht, dann sind die Messergebnisse genauer. Aber dazu muss man aus den Batterien diese zweite 5V Spannung ableiten, und das mit möglichst geringem Ruhestrom. Oder 4 anstatt 3 AA Batterien nehmen. Ich habe mich erst einmal für die einfache Variante mit 3,3V entschieden.

Anmerkung: leider stellte sich raus, dass das AT24HC04B EEPROM einen I2C Adress-Konflikt mit dem auf der nRF9160 feather verbauten Uhrenchip hat. Wenn man die oberen 256 Bytes des EEPROM anspricht, dann wird aus der 0x50 I2C Adresse des EEPROM die 0x51 was aber die des PCF85063A I2C clock ist. Daher werden nun nur die unteren 256 Bytes genutzt.

Ich empfehle, die Kabellänge auch nicht länger als 2m (eher kürzer) zu wählen. Ansonsten empfiehlt es sich, die 10k Ohm I2C Pull-up Widerstände des NAU7802 Modul von Adafruit mit zusätzlichen 4,7k Ohm Widerständen auf der Platine zu verringern. Aber auch damit kann man keine 5m betreiben.

Die Platine der Sendebox

Sendbox-Platine von oben
Sendbox-Platine von unten

Die zwei Hauptkomponenten, die auf diese Platine müssen, sind die nRF9160 feather und das Batterienfach, hier 3x AA. Die Verkabelung der Batterei ist trivial und auch die für die nRF9160 feather ist relativ einfach. Sie besteht aus der Stromversorgung von der Batterie, der Stromversorgung und I2C Bus zu den ADC Platinen, einer RGB LED sowie einem Taster. Die Platine unterstützt bis zu zwei Waagen, jede an einem eigenen I2C Bus (das ist beim NAU7802 leider notwendig). Die beiden I2C sind auf zwei 4 pol. Platinenstecker gelegt. Der Taster und die RGB LED auf einen 10 pol. Pfostenstecker. Die Aussparung in der Platine braucht man, um diese in der Box an der RGB LED und dem Taster vorbei aus- und einbauen zu können. Die verwendete Box hat die Abmessungen 160x80x55mm und erfüllt IP66. Wenn man eine andere Box benutzen möchte, muss man aufpassen, dass die beiden I2C Einbaustecker, die RGB-LED und der Taster entsprechend montiert werden können.

Die Platine muss entsprechend von 160x100mm auf 132x72mm zurecht gesägt werden. Die Aussparung mit 45x20mm wird benötige, da die Platine u.U. bei eingebauter LED und den Taster noch ausgebaut werden muss. Die Bohrungen für die Schrauben haben einen Durchmesser von 4,5mm. Bei den Schrauben muss man auch besonders auf die Länge aufpassen. Bei den Blechschrauben mit Durchmesser 4,2mm ist die Länge 9,5 gängig. Leider sind bei meinem Gehäuse die Bohrungen nur 6mm tief. 2mm für die Platine, dann steht die Schraube 1,5mm über …​ das führt zu leicht dazu, dass es ein kleines Loch am Gehäuseboden gibt.

Bohrplan
Figure 2. Bohrplan Platine
Beschreibung nRF9160 feather Komponente

Stromversorgung

Vin

BAT, J2 / PIN 1

+ Batterie

GND

GND, J3 / PIN 4

- Batterie

I2C Schnitstelle zu ADC-1 über 4 pol. Platinenstecker

Vcc

+3V3, J3 / PIN 2

ADC 1, Vin, PIN 4

GND

GND, J3 / PIN 4

ADC 1, GND, PIN 3

SDA 1

SDA 1, J2 / PIN 12

ADC 1, PIN 1

SCL 1

SCL 1, J2 / PIN 11

ADC 1, PIN 2

I2C Schnitstelle zu ADC-2 über 4 pol. Platinenstecker

Vcc

+3V3, J3 / PIN 2

ADC 2, Vin, PIN 4

GND

GND, J3 / PIN 4

ADC 2, GND, PIN 3

SDA 2

SDA 2, J2 / PIN 7

ADC 2, PIN 1

SCL 2

SCL 2, J2 / PIN 6

ADC 2, PIN 2

10 pol. Pfostenstecker

GND

GND, J3 / PIN 4

Pfostenstecker, PIN 1,3,5,7,9

Vcc

+3V3, J3 / PIN 2

Pfostenstecker, PIN 4

Taster

P0.17, J3 / PIN 9

Pfostenstecker, PIN 2

LED Rot

P0.19, J3 / PIN 11

Pfostenstecker, PIN 6, 380 Ohm

LED Blau

P0.21, J3 / PIN 12

Pfostenstecker, PIN 8, 380 Ohm

LED Grün

P0.22, J3 / PIN 13

Pfostenstecker, PIN 10, 380 Ohm

Wenn man eine 3-Loch-Lötinseln Platine nimmt, dann ist der Aufbau meist mit einfachen Drahtbrücken zwischen den Lötinseln machbar.

"Löten nach Farben" Beschreibung Farbe Bemerkung
Sendbox-Platine von unten

Vin

Lila

GND

Schwarz

Auch Oberseite

Vcc

Rot

Auch Oberseite

SDA

Blau

SCL

Gelb

Taster

Grün

RGB LED

Orange

380 Ohm

Die I2C Signalleitungen sind einfache Drahtbrücken zwischen 4 pol. Platinenstecker und Feather. Ebenso die Verbindung für den Taster zum 10 pol. Pfostenstecker. Die Verbindung für die LEDs zum 10 pol. Pfostenstecker und Feather macht man am einfachsten mit den 380 Ohm Vorwiderständen. Die Kabel des Batterienhalter kann auch man einfach mit der Feather verbinden. Mit Vcc und GND ist es nicht ganz so einfach, da müssen die Inseln auch auf der Oberseite der Platine entsprechend verbunden werden. Ich habe dazu meist farbige Kabellitzen benutzt. Nur für GND zum 10 pol. Pfostenstecker auf der Unterseite habe ich auch Draht genommen.

Die RGB LED und der Taster werden dann über ein Flachkabel angelötet und über eine Pfostenbuchse angesteckt. Dabei wird der Taster mit GND und PIN 2 verbunden. Die gemeinsame Anode (+) der RGB LED wird mit PIN 4 verbunden, die jeweiligen Farb-Kathoden mit PIN 6, PIN 8 und PIN 10. Das fertige Kabel kann man weiter unten bei Die Sendebox sehen.

Die zwei externen I2C Busse direkt an der nRF9160 Feather anzuschließen ist auch ein Kompromis. Ein zusätzlicher I2C Multiplexer wäre hier ein bessere Lösung aber man muss da noch einiges in der Software anpassen und testen, so das ich mich ebenfalls für die einfachere Ausführung ohne diesen I2C Multiplexer entschieden habe.

Die Waage

Einfache Wägezelle
Plattform Wägezelle

Waagen kann man auf unterschiedlichste Weisen bauen. Man findet dazu auf den entsprechenden Internetseiten viele Anregungen.

Ich selber habe mich mit zwei Bauarten versucht:

Links eine sehr einfache Waage mit 4x Halbbrücken Wägezellen für je 50Kg. Diese Wägezellen werden normalerweise für Personenwaagen benutzt. Insgesamt ein kosten günstiger Einstieg, mit begrenzter Haltbarkeit und das Gewicht ist deutlich Temperaturabhängigkeit.

Rechts eine aufwendigere Waage mit 2x Plattform Wägezellen für je 100Kg. Der Aufbau ist aufwendiger und deutlich teurer, liefert dafür das genauere Gewicht, besonders im Bezug auf die Temperaturabhängigkeit der Wägezellen.

Das Modem

Modem von unten
Modem von oben

Wie eingangs schon erwähnt, die Besonderheit dieses nRF9160 Modems ist, dass es bereits eine Mikrocontroller enthält. Damit spart man sich viel Bastelarbeit. Und als nRF9160 feather geht das Basteln leicht von der Hand. Für den Mobilfunk benötigt man dann ein SIM-Karte. Normale SIM-Karten sind nicht für LTE-M oder NB-IoT freigeschalten, man muss entsprechende IoT SIM-Karten benutzen. Leider sind diese oft nur für Gewerbebetreibende erhältlich. Die Kosten reichen von 1 Euro pro Jahr über 70 Cent pro Monat bis auch 5 Euro pro Monat. Das hängt ganz vom Anbieter ab. Die Waage mit CoAP / DTLS 1.2 CID benötigt sehr wenig Datenvolumen. Wenn man das Gewicht von 2 Waagen alle Stunde sendet sind das ca. 700 kByte im Monat. Viel der Karten bieten 50 MByte pro jahr an und kommen dann damit locker hin. Die 3 AA 2000mAh Akkus halten 6-12 Monate. Das hängt von vielen Faktoren ab, auch wie die SIM-Karten vom Provider konfiguriert sind und welche Netze erlaubt sind.

Das Modem unterstützt auch andere Protokolle, z.B. HTTP(S) oder MQTT(S). Je nach Sende-Strategie benötigen diese deutlich mehr Energie oder übertragen die Daten sehr viel seltener (z.B. 1x Täglich nicht 1x Stündlich). Ich benutze diese daher nicht. Wer selber programmieren kann, kann das aber sehr gerne ausprobieren.

Man kann die Daten auch weiterleiten, das Eclipse/Californium - CoAP-S3-Proxy leited diese z.B in einen S3 Cloudservice weiter. Die aktuelle Web-Browser App liest die Daten dann dort aus und stellt diese als Chart dar.

Chart im Web-Browser

Man muss klar erwähnen, dass es auch bei LTE-M und NB-IoT Funklöcher gibt, also Orte, wo der Empfang schlecht ist oder kein Empfang möglich ist. Wenn man sich die Enttäuschung die Waage vergeblich aufzustellen sparen will, kann mit einem Thingy:91 und einem Android Smart Phone auch vorab testen, ob man Empfang hat und welche Signalstärke man bekommt. Dazu habe ich ebenfalls ein Programm entwickelt, den Cellular Explorer mit dem man die Netzwerklandschaft erkunden kann.

Der Applikations Mikrocontroller des nRF9160 wird in C programmmiert. Das Embedded Betriebssystem ist Zephyr. Die Applikation für die Waage findet man in meinem Zephyr - CoAPs Demo Client. Näheres zur Konfiguration kann man dann dort in Mobile-Beehive-Scale. Die Applikation ist bzgl. der Waage eher eine Entwicklungsversion als eine stabile Release.

Die Bedienung und Anzeige ist relativ einfach.

Aktion Funktion

Normalbetrieb

Taster kurz drücken und loslassen ( < 5s)

Gewichte der Waagen ermitteln und senden.
Die LED wird blau und dann hellblau. Sobald sie grün wird hat das Modem Empfang. Blinkt es danach rot, trat ein Fehler auf. Blinkt es lila sucht das Modem ein Funknetzwerk.

Taster lang drücken ( > 5s)

Setupbetrieb

Setupbetrieb

Die Farbe wechselt alle 5s zwischen Grün und Blau

Taste bei Grün kurz drücken ( < 5s)

Kalibrierbetrieb

Taste bei Blau kurz drücken ( < 5s)

Sendbox neu starten

Taste lange drücken ( > 5s)

Setupbetrieb verlassen, in den Normalbetrieb wechseln

Kalibrierbetrieb

Die Kalibrierung erfolgt in 6 Schritten.

LED blink grün

Vorbereitung beide Waage für die 0kg-Punkt Kalibrierung

LED grün

Beide Waage kalibrieren den 0kg-Punkt

LED blink blau

Vorbereitung Waage 1 für die 10kg Kalibrierung

LED blau

Waage 1 kalibriert 10kg

LED blink hellblau

Vorbereitung Waage 2 für die 10kg Kalibrierung

LED hellblau

Waage 2 kalibriert 10kg

Ist Waage 1 oder 2 nicht angeschlossen, entfällt der Schritt.

In den Vorbereitungsschritten mit blinkender LED wartet die Applikation auf einen Tastendruck um dann die jeweilige Kalibrierung durchzuführen.

Taste kurz drücken ( < 5s)

Kalibrierung duchführen.
Wechsel zum nächsten Vorbereitungschritt. Am Ende speichern und in den Normalbetrieb wechseln

Taste lang drücken ( > 5s)

Kalibrierung abbrechen, speichern und in den Normalbetrieb wechseln

Die Sendebox

Sendebox leer
Sendbox zusammengebaut
Sendbox mit Waagen

Das erste Bild zeigt die leere Sendebox mit den 2 Kabeln für die ADCs/I2C und dem entsprechenden Einbaustecker für die 12mm Kabel. Das Flachbandkabel für die RGB-LED und den Taster sieht man ebenso. Im zweiten Bild sieht man, wie es aussieht, wenn die Platine, das Modem und die Sendbox zusammengebaut sind. Beim Battereienfach ist es besser eines mit Deckel zu nehmen. Den muss man dann noch schließen bevor man den Deckel der Box ebenfalls schließt. Das letzte Bild zeigt dann, wie zwei Waagen angeschloßen werden.

Wenn man das 160x80x55mm Gehäuse aus der Bauteilliste nimmt, und auch die Stecker, den Taster und das LED Gehäuse, dann benötigt man 2x 16mm Bohrungen für die Stecker, 1x 16mm für den Taster und 1x 8mm für das LED Gehäuse.

Bohrplan
Figure 3. Bohrplan Vorderseite LED und Taster
Bohrplan
Figure 4. Bohrplan Rückseite für Stecker

Die 16mm Bohrungen waren für mich die schwersten. Ich habe mit einem Kegelbohrer die besten Ergebnisse. Ich habe den bei 16mm mit einem Filzstift marktiert und dann mit der Ständerbohrmaschine gebohrt. Das letzte kleine bischen habe ich dann mit den Kegelbohrer von der anderen Seite mit Hand aufgebohrt. Damit passen dann die Dichtungen der Stecker und des Taster gut in das Loch.

Arbeitszeit

Das hängt natürlich stark von der Bastel-Erfahrung ab. Ich denke, man sollte:

  • 1 Nachmittag für Bestellen und Besorgen

  • 1 Nachmittag für Waage und ADC Platine

  • 1 Nachmittag für Sendbox, Platine und Gehäusebearbeitung

  • 1 Nachmittag für Fehlersuche :-)

einplanen.

Bauteilliste

Eine Liste mit Vorschlägen für die verwendeten Bauteilen und deren Bezugsquellen habe ich auch erstellt. Es gibt bei den einzelnen Bauteilen Alternativen und alternative Bezugsquellen.

Software System Overview (English)

About

Mobile Beehive Scale

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published