Author Topic: Hackerschool - Tinkerforge Java Library  (Read 1645 times)

yuna

  • Full Member
  • ***
  • Posts: 107
  • Java fun AI Developer
    • View Profile
Hackerschool - Tinkerforge Java Library
« on: June 01, 2019, 03:53:28 »
Howdy,

da hier viele Ihre Projekte vorstellen, möchte ich hier meines ebenso beschreiben, auf Hoffnung das es euch gefällt. ;)
Ich bin ehrenamtliche Inspirieren (Lehrerin) in der Hackerschool für Berlin und gebe Java Kurse. Die Kids spielen sehr gern mit Tinkerforge! Echt tolle Hardware auf die man sich verlassen kann. So können wir uns super in ruhe um die Software kümmern. Mit der Zeit haben wir uns Hilfen um die Tinkerforge API herum gebaut. Somit kommen wir Stück für Stück schneller voran. Diese ist hier zu finden: https://github.com/YunaBraska/tinkerforge-sensor Neben weiterer Entwicklung ist es unser zu Hohes Ziel diese API in Frameworks wie Spring Boot mit Spring Boot messaging einzubauen. Die Bricks/Bricklets sind mittels Wrapper in dieser Library generisch gehalten. Daher braucht man nicht lange nachzudenken und kann jedes Brick/Bricklet auf gleichen Weg ansteuern. Egal ob es ein Display oder ein RGB Button ist. Die Library soll auch davor etwas schützen, die Bricks/Bricklets direkt voll zu spamen. Vieles generiert sich in der Library von selbst. So auch die Dokumentation über die Sensoren (Wrapper von Brick/Bricklets) (https://github.com/YunaBraska/tinkerforge-sensor/blob/master/SENSOR_README.md

Hier ein paar Beispiele:

Stack verbinden:
Quote
Stack stack = new Stack("localhost", 4223, true);

Mit Eventstream verbinden:
Quote
stack.sensorEventConsumerList.add(Class::myClientFunction);

Werte aus gesamten Stack holen
Quote
Long soundIntensity = stack.values().soundIntensity();
Long soundIntensityMax = stack.values().soundIntensity_Max();
Long soundIntensityMin = stack.values().soundIntensity_Min();
Long soundIntensityAverage = stack.values().soundIntensity_Avg();
Long soundIntensitySum = stack.values().soundIntensity_Sum();

Werte von Brick/Bricklets holen
Quote
Long stack.sensors().lightAmbient().values().lightLux();

Mehrere Bricks/Bricklets verwenden (Versionen sind egal - Port Reihenfolge gewinnt)
Quote
Sensor button_1 = stack.sensors().buttonRGB(0);
Sensor button_2 = stack.sensors().buttonRGB(1);
Sensor button_3 = stack.sensors().buttonRGB(2);

Bricks/Bricklet ansprechen
Quote
stack.sensors().buttonRGB().send(Color.MAGENTA);
stack.sensors().speaker().send(1000, 5000);
stack.sensors().displayLcd20x4().send("Howdy");
stack.sensors().io16().send(1);
stack.sensors().soundIntensity().refreshLimit(6);

Bricks/Bricklet mit limit von 2x pro Sekunde ansprechen - gut für loops oder wenn auf andere Events reagiert wird
Quote
stack.sensors().speaker().sendLimit(2, 100, 5000);

Mal schnell Decibel auf SegemtDisplay anzeigen lassen
Quote
Long decibel = stack.values().soundIntensity()
stack.sensors().displaySegment().send((decibel / 10) + "dB");

Mal schnell über alle Bricks/Bricklets loopen und status LEDs einschalten - super für KnightRider Effekte über die Bricks :D
Quote
for (Sensor sensor : stack.sensors()) {
    if (sensor.isPresent() && sensor.hasLedStatus() && sensor.isBrick()) {
        sensor.ledStatusOn();
    }
}


Bricks/Bricklet direkt ansprechen - falls wrapper nicht reicht
Quote
Device device = stack.sensors().buttonRGB().device;

Wir haben leider nur die Bricks/Bricklets in unsere Library angebunden, die wir auch wirklich besitzen und ins private Budget passen. Leider gehen reihenweise die alten Bricklets und Master Bricks kaputt, da auch die besten Kinder an den alten Steckverbindungen scheitern. Wäre ganz cool wenn die Master Bricks bald auch ein Update bekämen. Demnächst möchten wir ein Fahrzeug bauen. Einen einfachen, fahrbaren Untersatz zu finden, auf den man Tinkerforge bauen kann ist echt schwer zu finden. Zudem wir nur den Servo Brick haben und unsere 360 Grad Servos versuchen anzubinden... Wird spannend wie wir das auch Softwareseitig in die Library einfließen lassen.
« Last Edit: June 01, 2019, 03:57:58 by yuna »
humans are the only creature which have pay to live on the planet

yuna

  • Full Member
  • ***
  • Posts: 107
  • Java fun AI Developer
    • View Profile
Re: Hackerschool - Tinkerforge Java Library
« Reply #1 on: June 27, 2019, 14:05:54 »
Neu:
* Javadoc update
* Autogenerierte Readme.md Dokumentation readmeDoc
* Es gibt nun Listenelemente von allen Sensoren
Code: [Select]
stack.sensors().displayList(); * Das neue SegmentDisplay_V2 ist nun ebenfalls implementiert
Quote
display.send("1.2.:3.‘4.");
* Wie von der Hackerschool-API gewohnt kann das alte SegmentDisplay ebenfalls mit selben Werten umgehen und ignoriert die nicht anzeigbaren Elemente
* Tinkerforge API update (eigenes connection handling ist gelöscht)
* Unterschiede zwischen Bricks und Bricklets wurden entfernt
« Last Edit: June 27, 2019, 14:47:05 by yuna »
humans are the only creature which have pay to live on the planet

StefanOHAN

  • Jr. Member
  • **
  • Posts: 56
    • View Profile
Re: Hackerschool - Tinkerforge Java Library
« Reply #2 on: July 12, 2019, 08:37:16 »
Hallo yuna,


Ich nutzte Tinkerforge zwar nur in Verbindung mit OpenHab (kann also bei Java nicht mitreden), finde es super wenn Kids und Jugendliche über Projekte wie Ihr es betreibt, an die Materie (Technik und Programmierung) herangeführt werden :-)

Super

viele Grüsse Stefan

yuna

  • Full Member
  • ***
  • Posts: 107
  • Java fun AI Developer
    • View Profile
Re: Hackerschool - Tinkerforge Java Library
« Reply #3 on: July 12, 2019, 09:52:40 »
Vielen Dank Stefan,

ja mit Tinkerforge sind die Kurse wirklich interessanter als stumpf alles Virtuell zu programmieren. Kids können basteln, aufbauen, Dinge in die Hand nehmen, kombinieren und dann die Logik schaffen wie alles miteinander funktioniert :)
humans are the only creature which have pay to live on the planet