OBS Pro - Automatisiert bestückbare Hardware

Sieht sehr schick aus!
Was mir eben noch aufgefallen ist: Der letzte Stand auf dem pga460-branch von gestern hat noch das ESP32-WROOM-32 Modul, aktueller ist ja das ESP32-WROOM-32E. Der Footprint ist leicht anders, und die MCU auch etwas… Ich hätte zugunsten der Zukunftssicherheit wohl dennoch den 32E bevorzugt.
Spricht für dich etwas gegen den 32E?

Öhhh, wenn das von der aktuellen Firmware so unterstützt wird, gerne. Das normale eap-32 scheint ja obsolet zu sein. Hatte da etwas Probleme das zu finden.
Gibt es denn da auch nen Plan auf was größeres als die 4MB Variante zu wechseln?

Das mit µC tauschen war mir jetzt auf die Schnelle doch etwas zu heikel und habe das erstmal so gelassen. Platine und Bauteile sind bestellt. Der aktuelle Stand ist im pga460 branch:

Ich rechne mit den ersten aufgebauten Prototypen in 2-3 Wochen.

1 „Gefällt mir“

Ich wusste es bei meinem letzten Post auch nicht – aber die MCUs sind wohl Binärkompatibel.
Im ESP32 Chip Revision v3.0 User Guide heißt es unter 2.2.:

  1. Software Design Changes:
    Client can continue to use the same software and binary for deployed product. The
    same application binary will work on both chip revision v1.0 and chip revision v3.0.
1 „Gefällt mir“

Na das wäre ja top :slight_smile:

Zwischendurch mal ein Update:
Ich habe in den letzten Tagen viel für den OBSPro gemacht. Es gibt zwei neue Prototypen, auf denen vor allem die Ultraschall-Schaltung komplett getauscht wurde und jetzt auf einem PGA460 basiert - den gab es damals nicht (bezahlbar) dank Chip-Krise. Hier habe ich gerade die ersten Daten ausgelesen bekommen:
grafik
Man sieht in etwas über 2m schön die Decke :slight_smile: und ein paar Mehrfachreflektionen zwischen Tisch und Decke bei Vielfachen davon :stuck_out_tongue:
Das Gemüse am Anfang muss ich noch in Griff bekommen. Man kann da so viel einstellen, ich bin erst mal froh ein Hello-Word am Laufen zu haben und dort sogar was erkennen zu können.

Leider funktioniert das GPS (was jetzt ein MAX-M10M ist) nicht mehr, das habe ich erst einmal bei Seite geschoben. Hier ist ein NMEA-Decoder notfalls schnell implementiert. Dann halt ohne Almanac-Daten für den Warm-Start. Der sollte trotzdem in < 30 Sekunden nen Lock bekommen. Also das GPS läuft, nur funktionieren die UBX-Kommandos scheinbar nicht mehr.

3 „Gefällt mir“

Nach etwas Optimierung kann ich Autos bis ~6m problemlos erkennen (geht vermutlich auch noch mehr) und auch das Nachklingeln konnte ich deutlich reduzieren, womit auch Objekte ab ~20 cm zuverlässig detektiert werden.


Das rote ist die einstellbare Detektions-Schwelle, das orangene ist die erkannte Distanz.
Was auch interessant sein könnte: Der Sensor kann prinzipiell bis zu 8 Ziele erkennen und einem die Amplitude und auch Länge der Pulse sagen. Oder man kommt wie in dem Screenshot zu sehen auch an die Rohdaten ran, wobei die eine deutlich schlechtere Zeitauflösung haben (je nach Einstellung bei unser Anwendung 16x oder 32x schlechter). Rohdaten und Entfernungen/Breiten/Amplituden gehen gleichzeitig in einer Messung leider nicht.
Außerdem kann der Sensor auch noch die Temperatur messen, womit man die etwas unterschiedliche Schallgeschwindigkeit (ca. 0,6 m/(s*K)) kompensieren kann. Bei 20K Unterschied macht das schon 3,5% aus.
Als nächstes folgt die Integration meines Codes in den OBS Code. Evtl. könnte ich da noch mal die Hilfe von @andreas brauchen. Viele Funktionen, die die Ultraschall Manager Klasse hat, habe ich noch nicht verstanden.

4 „Gefällt mir“

Ich denke ich habe die Ultraschall-Software fertig, wobei man bei diesem Spinnen-Netz von Software nicht sagen kann, ob man nicht irgendwo einen Faden vergessen hat.
Jetzt beiße ich mir die Zähne am GPS aus. Die UBX-Befehle, die bislang verwendet wurden sind zumindest teilweise nicht mehr verfügbar bzw wurden durch andere ersetzt. Jetzt stehe ich vor der Wahl das UBX-Zeugs anzupassen oder da einen NMEA-Decoder einzubauen. Die NMEA Nachrichten gehen scheinbar aktuell ins Nirwana.
Frage an die Experten: Gibt es irgendwo ne Doku was eigentlich am Ende in der cvs an Daten benötigt wird? Beim Ultraschall waren jetzt irgendwie nen Dutzend Funktionen, die ich nicht nach-implementiert habe (bzw. nicht konnte), die scheinbar nur Debug-Foo waren und nie wieder raus genommen wurden. Ich fürchte, dass das beim GPS auch so ist. Die Anzahl an public-Methoden ist ja wahnsinnig um ne Position und ne Uhrzeit zu bekommen.
Dazu kommt, dass auch die GPS-Klasse wieder von allem Möglichen abhängt, wovon sie nicht abhängen sollte (dem Display z.B.). Was mich zu einem anderen Problem führt: Gibts ne Möglichkeit das Kompilieren/Hochladen schneller zu machen? Aktuell brauche ich für beides zusammen knappe 2 Minuten - was den Debug-Prozess echt nervig macht. Beim US hatte ich mir dann nen extra Projekt gemacht. Das ging beim GPS aber so einfach nicht, weil das wie gesagt von allem Möglichen abhängt, wovon es nicht abhängen sollte.

1 „Gefällt mir“

Update: Ich habe mich nun zwei Tage durch dieses GPS-Monstrum gequält und konnte es um einige UBX-Befehle erweitern, so dass nun M6 und M10 Module funktionieren. Einige Sachen wie das Aiding funktionieren noch nicht, da ich keine äquivalente Funktion gefunden habe - habe aber auch nicht intensiv gesucht. Lock ist nach ca. 20 Sekunden selbst an einem schlechten Standort da.
Außerdem habe ich die Soft-Power-On/Off Funktion noch mal in eine Hardware-Timer-Interrupt-Routine geworfen, womit das nun auch zuverlässig funktioniert, egal in welchem Menü man sich gerade befindet.

Ein Problem habe ich noch, evtl. kann da wer weiter helfen. Ab und zu hängt sich die Firmware beim Starten in irgend einer Endlosschleife auf und er kotzt die ganze zeit

E (3968) gpio: gpio_set_level(226): GPIO output gpio_num error

aus. Mir ist klar, dass das bedeutet, dass ich ein gpio_set_level/digitalWrite auf einen Pin mache, der kein Output sein kann. Ich verstehe aber nicht warum das nur manchmal passiert und viel schlimmer: Ich habe keine Idee wie ich das debuggen kann. Er sagt einem leider nicht welcher Pin das ist oder wo das im Quelltext ist. Die Funktion gpio_set_level scheint vorkompiliert zu sein, so dass ich da nicht mal zusätzlich die Pin-Nummer oder nen Stack-Trace auskotzen könnte. Jemand noch ne Idee?

Grober Plan ist nun, dass ich morgen noch ein paar Kleinigkeiten an der Hardware fixe und dann 25 Demonstratoren bestelle. Davon gehen 5 an den OBS e.V., 5 an die Hochschule Karlsruhe, 10 an die lokale OBS-Braunschweig Gruppe und 5 für „mich“. Die 5 für „mich“ gebe ich prinzipiell raus, falls mir jemand bei der Firmware oder beim Testen helfen will.

2 „Gefällt mir“

OK, das hat sich erledigt. Mit ner tonne Debug-Nachrichten habe ich es gefunden. War eine un-initialisierte Variable und dann sind schlimme Dinge passiert :stuck_out_tongue:

2 „Gefällt mir“

Die 25 Demonstratoren (nenne ich sie jetzt) sind bestellt! Daumen drücken, dass ich nichts verpatzt habe :stuck_out_tongue:

6 „Gefällt mir“

Wo hast du sie bestellt? AISLER anfragen, sie unterstützen Community-Projekte.

Die ganze Platine und vor allem die Bauteile sind auf JLCPCB optimiert. Da jetzt mal anzufragen kann man machen, fürchte aber, dass das entweder teuer ist oder man noch sehr viel manuelle Arbeit leisten muss (Bauteile raus suchen, tauschen, platzieren, usw).

Dann Validiert erst mal die Schaltung, vielleicht kann ich das übernehmen wenn es final ist.

Schönen Abend allerseits! Hier noch mal ein kurzes Update: Ich habe heute ein schnelles Design des Display-Gehäuses gemacht und eins davon aufgebaut:


Vielen Dank vor allem an @j000bs für das Platinen-Design! Funktioniert einwandfrei :slight_smile:
Das Design ist noch etwas klotzig im Vergleich zum OBSClassic, aber es tut erst mal. Dass das Kabel unten und nicht auf der Unterseite raus kommt, ist sicher auch noch nicht optimal. Der Zusammenbauaufwand ist so aber deutlich niedriger, da weniger Schrauben und nur zwei Plastikteile, die das Kabel direkt einklemmen, benötigt werden.
Das wichtigste Highlight: Das Gehäuse ist grob wasserdicht - im Sinne von Spritzwasser. Außen herum haben die zwei Teile eine Lippe, die das Oberteil über das Unterteil hinaus gehen lässt. Man könnte hier noch über einen O-Ring nachdenken. Für das Display habe ich ein Stück Plexiglas mit Stufe gefräst und eingeklebt:


6 „Gefällt mir“

Dichtung mit dem O-Ring in der Trennfuge ist eine gute Idee. Da aber geschlossene Ringe wohl teuer sind: Es gibt O-Ringe auch als Schnur/Endlos. Die dann mit einem scharfen Cutter-Messer auf Länge schneiden und mit einem Tropfen Sekundenkleber auf Stoß zusammenkleben.
Wasserdicht wird das Gehäuse allerdings nicht sein… unten einen Ablauföffnung vorsehen. Warum?
Irgendwo zieht es bei dem Volumen durch Temperaturunterschiede immer Luft rein und raus. Das Gehäuse atmet. Hier war auch ein vierlagiger Druck, kleines Gehäuse für einen BMP280, nicht luftdicht.
Sieht ansonsten gut aus. Olaf

3 „Gefällt mir“

Ich freu mich jedes mal über Posts in diesem Thread! - Ihr seid schon superweit gekommen! @fabian Meinst du es macht Sinn, den aktuellen Stand im Community Meeting am 4. März anzuschauen?

Wurde bereits von Thomas eingeladen und steht im Kalender :wink:

Mal wieder ein Update: Ich hatte ja noch ein paar Probleme mit dem GPS, dass der Fix manchmal ewig auf sich hat warten lassen und der auch nicht stabil war. Den Grund dafür habe ich nicht wirklich herausfinden können, konnte bislang nur einiges ausschließen (Ultraschall-Schaltung, Display/Displaykabel den 9V Step-Up und noch ein paar andere Sachen). Aber ich konnte das Problem deutlich verbessern in dem ich ein paar Settings verändert habe, vor allem durch das Einschalten von Glonass. So hat man nach spätestens ner Minute im Kaltstart nen guten stabilen Lock mit mindestens 5 Sats. Mit Warmstart innerhalb weniger Sekunden.
Die bestückten Platinen sind auch gestern eingetroffen und sehen auf den ersten Blick gut aus, habe aber noch nichts getestet, das kommt dann morgen. Wenn alles glatt läuft, kann ich morgen alle Platinen fertig bestücken, die Displays aufbauen/verkabeln und alles testen. Ab Donnerstag kann ich mit dem Drucken der Gehäuse beginnen. Falls ihr (@gluap @thomaso) eure schneller haben wollt, könntet ihr die Gehäuse auch selbst drucken und ich schicke eure Geräte nackt raus sobald ich die getestet habe und alles geht. Mein Drucker wird jetzt hier der Flaschenhals, da ich höchstens 2 Sätze am Tag schaffe.
Ach ja, die custom Akkus sind auch gestern gekommen und sehen gut aus :slight_smile:

Super, dann drücke ich die Daumen, das die letzten Arbeiten auch noch erfolgreich laufen. Dann können die Tests beginnen.
@gluap Leihst du mir das Teil dann auch mal zum Spielen :wink: