Pulssensor am I2C Port

Hallo,

ich hab mir bei eBay einen MAX30102 Pulssensor wie diesen hier
für 'nen Euro besorgt und wollte dann so etwas wie dieses Projekt hier auf dem Calliope
nachbauen. Dabei habe ich noch dieses Projekt gefunden, was supereinfach klang.
Leider ist mein Sensor jedoch wohl über das linke, I2C Interface anzuschließen und reagiert mitnichten auf ein simples „wenn P16 gepulst“ vom analogen Anschluß.

Ok. Danach habe ich gesehen, dass es für den MAX30102 für den micro:bit eine pxt Erweiterung https://github.com/sparkfun/pxt-gator-particle gibt.
Die wiederum lässt sich bei makecode.calliope.cc nicht hinzufügen.

Dann habe ich gedacht, klein anfangen wäre kein Fehler und habe mir die C++ Routinen mal angesehen. Im Standard (Sparkfun library) wird erstmal geprüft, ob am I2C überhaupt ein MAX30102 (bzw. 105) hängt:
if (readRegister8(MAX30105_ADDRESS, MAX30105_PARTID) != MAX_30105_EXPECTEDPARTID) usw.
Also wollte ich erstmal irgendwas vom Pulssensor lesen, hier also die Teilenummer 0x15.

Ich verstehe das so, dass ein Sensor letztlich wie ein Array aufgebaut ist, also
sensor[ Register ]
gibt irgendwelche Bytewerte zurück, die dann den Zustand des Sensors (Firmwareversion, Temperatur, Spannung, was auch immer) beschreiben.
Leider passt die Doku zu i2c_read_buffer und i2c_read_number so gar nicht zu dieser Vorstellung.

Ich hatte es dann mit diesem Code versucht, allerdings ohne Erfolg (174=0xAE ist die Adresse des Sensors, an Register 0xFF = 255 sollte die Teilenummer 0x15 zu finden sein):
pins.i2cWriteNumber(174,255,NumberFormat.UInt8LE,false) basic.showNumber(pins.i2cReadNumber(174, NumberFormat.UInt8LE, false))

An der Stelle nehmen die Fragen überhand :frowning:

Woran wird das festgemacht, für welche Plattform eine Erweiterung supported wird? Laut Doku soll es in der pxt.json einen target Parameter geben, aber ich hab den bei einigen Stichproben noch nie gesehen.

Wieso lässt sich die pxt-gator-particle Erweiterung nicht im Calliope makecode installieren :slight_smile: ?

Kann ich I2C Register so auslesen, geht das überhaupt mit Bordmitteln?

VG
Jochen

Danke für den I2C Scanner Code :slight_smile:
Mein Pulssensor antwortet auf Adresse 0x57, nicht auf 0xAE. Warum auch immer.

Bleibt die Frage, warum das microbit Paket nicht mit dem Calliope Makecode kompatibel ist, bzw. eher, wie ich das kompatibel bekomme…

Seit heute ist die aktuelle Betaversion verfügbar, die das gatorpaket laden kann online:

Viel Spaß beim testen!

Cool, danke. Auch fürs dranbleiben :slightly_smiling_face:

Gerne, berichte mal ob es klappt oder ob ich die I2CAdresse ändern muss.

Die neue Makecode-Version unter makecode.calliope.cc/beta ist komplett an mir vorbeigegangen. Ich treib mich noch die ganze Zeit unter makecodebeta.calliope.cc rum. Und frage mich, welche der zahlreichen pxt-calliope-GitHub-Seiten eigentlich die relevante ist (Microsoft, calliope-mini, calliope-edu)?

Woher hast Du die Info?

Aktuell ist die im account von microsoft. Dort kannst du auch gerne Bugs melden. Die aktuelle Version gibt es auch erst seit 2 Tagen weil sie von pelikhan erst seitdem hochgeladen wurde und die alte Beta mit v0-Core ersetzt hat.

Viel Spaß!

Michael

Ja, aber woher weißt Du, dass die Beta jetzt unter einer anderen Adresse läuft?

Sorry, stand in den Kommentaren des github repositorys. Zudem wird die aktuelle Betaversion bei allen MakeCode-Varianten unter …/beta gehostet. So war das auch beim Calliope bisher.

Die erste Beta musste auf einem Server von uns gehostet werden, jetzt ist der Beta Ordner im Repository erst freigegeben und die neue Adresse ist: http://makecode.calliope.cc/beta
Ich werde die andere URL umleiten.

Die Repositories haben historische aber auch einfach organisatorische Gründe. Wir werden irgendwann die sicherlich mal aufräumen, damit klarer wird, was wo ist. Momentan ist das nicht optimal. Allerdings sind es ja auch nur zwei, die direkt von uns kommen.

Grüße
Jörn

2 „Gefällt mir“

Hi Jörn,
wir haben heute im Workshop KI mit dem Calliope die neue Version schon getestet. Funktionierte super, Besten Dank
Gruß Dirk

1 „Gefällt mir“

Funktioniert halb.

Die rote LED wird zwar eingeschaltet, aber einen sinnvollen Puls bekomme ich nicht ausgelesen. Das Beispiel aus Github

//Read red value and write it to the micro:bit screen as a bar graph.
gatorParticle.begin()
basic.forever(function () {
    led.plotBarGraph(gatorParticle.color(ledToRead.red), 65000)
})

funktioniert hingegen. Ein simples

    gatorParticle.begin()
    basic.forever(function () {
        bpm = gatorParticle.heartbeat(HeartbeatType.BPM)
        basic.showNumber(bpm)
    })

leider nicht. Da kommt erst 0, dann 9, dann 18 (mit etlichen Sekunden dazwischen) oder ähnliche Zahlen. Ich hätte erwartet, dass wenn kein Finger anliegt, 0 angezeigt wird und (mutmasslich nach 15s oder sowas) dann der Puls und dass der sich auch ändert nach 20 Kniebeugen.

Ich hatte den Kindern den Sensor von Seeed gezeigt, der hat deutlich besser funktioniert.

Versuch mal die bpm nur per Knopfdruck auszugeben. Es dauert wohl eine Weile bis die korrekten Durchschnittswerte ausgegeben werden.

Funktioniert leider auch nicht. Da sehe ich dann - mit jeweils ein paar Sekunden Abstand dazwischen - Werte wie 52 - 244 - 114 - 20 usw.

Ich hatte gehofft, dass man den Chip den Kindern an die Hand geben kann, bei einem Euro pro Stück plus ein paar Kabel wäre das eine schöne Übungsstunde gewesen.
Über das Resultat des anderen Codes mit dem Seeed Teil wurden jedenfalls Bauklötze gestaunt, allein das Bum-Bumm Herz-Symbol auf dem Calliope war schon der Hit. Ich glaube zwar nicht, dass die den Code verstanden haben, bzw. eine Verbindung zu den anderen Übungen herstellen konnten, aber es war eine schöne Motivation nach dem x. „Zeige Smiley“ Programm :slight_smile: