Seit 2 Wochen läuft übrigens unser Gateway wieder!
2021-02-03
Anwesend (remote
)
Status
HAL
- PR was merged: EEPROM byte-wise write support
shtcx-rs
- PR updated: Allow reading raw measurements
Apps
- iOS app release was submitted by @marc.kramer, we’re waiting for approval
- @danilo started porting the Android app to the new API endpoints
API
- PR: Remove sensor url from mobile_app endpoint
- PR: Add latest_sensor_update to mobile sensor endpoints
- New issue: Localiziable API requests
Next Steps
Firmware
- Review PR: EEPROM based config
- Finish PR: Gracefully handle errors
- Review PR: Switch from panic-halt to panic-persist
- RN2xx3-Branch: Probleme mit Reset beheben (siehe PR-Kommentare) und sicherstellen, dass ABP-Counter persistiert wird
- Low power optimizations
API
- Deploy sponsor logos to server
Apps
- Webapp und Android-App auf neuen API-Endpoint migrieren
2021-03-03
Anwesend (remote
)
Status
App: iOS
- iOS app was released!
Already 40 installations.
- Improved settings screen
App: Android
- Android app is now mostly ported to the new endpoints
- Android: Support for sponsor logo was added
API
- Merged: Remove sensor url from mobile_app endpoint
- Merged: Change created_at in mobile endpoints to timestamp
- Merged: Attach sponsor_id to sensor listing
- Merged: Find sensor even if it has no measurements
- Updated: Add latest_measurement_at to mobile sensor endpoints
- PR: Add endpoint docs to README
- New issue: Make location non-optional
- New issue: Aggregation period in mobile sensor list
- Current master is now deployed to our server
Next Steps
API
- Work on open PRs and issues
Firmware
- Review PR: EEPROM based config
- Finish PR: Gracefully handle errors
- RN2xx3-Branch: Probleme mit Reset beheben (siehe PR-Kommentare) und sicherstellen, dass ABP-Counter persistiert wird
- Low power optimizations
Apps
- Android App Charts auf neuen API-Endpoint migrieren
- Webapp auf neuen API-Endpoint migrieren
2021-03-16
Anwesend (remote
)
Status
App: iOS
- @marc.kramer arbeitet an einem verbesserten Chart, bei dem man in der Zeit zurückspringen kann
App: Android
- Version 0.6.0 released:
- Adaptive app icon (#31)
- Show sponsor logos (#30)
- Increase minSdkVersion to 21 (Android 5)
- Use new API endpoints
- About screen: Link to GitHub
- UI fixes
- Disable MapBox telemetry (#22)
- Update many dependencies
API
- Current master is now deployed to our server
Next Steps
API
- Work on open PRs and issues
Firmware
- Review PR: EEPROM based config
- Finish PR: Gracefully handle errors
- RN2xx3-Branch: Probleme mit Reset beheben (siehe PR-Kommentare) und sicherstellen, dass ABP-Counter persistiert wird
- Low power optimizations
Apps
- Webapp auf neuen API-Endpoint migrieren
2021-04-05
Anwesend (remote
)
Firmware
Beim Initialisieren konnte häufig die Antwort des RN-Moduls nicht gelesen werden.
Findings:
- Korrekter Delay nach dem Hard-Reset ist notwendig
- Nach einem Hard-Reset wird der TX vom RN modul kurzzeitig auf 0 gezogen. Das erzeugt einen Frame-Error für den STM32. Daher müssen nach einem Hardware-Reset die Error-Flags gecleared werden.
- Soft-Reset können wir uns sparen
- Kein Unwrap mehr bei den RN-Commands!
Der rn2xx3
Branch wurde mit diesen Änderungen gemerged.
Weitere Änderungen:
2021-04-13
Anwesend (remote
)
Firmware
- Der Gracefully Handle Errors PR wurde gemerged
Low Power
Danilo hat Low-Power-Messungen mit dem Joulescope gemacht. Dabei war der DS18B20-Sensor nicht verbunden.
Stromverbrauch (5V-Speisung via USB-Pin):
-
Einschalten, NOP-Busyloop: 6.4 mA
-
Einschalten, WFI-Loop: 4.3 mA
-
Einschalten, Standby: 3.15 mA
Gemäss Datenblatt hat der STM32 einen Standby-Stromverbrauch von 0.29 µA. Grund für den hohen Verbrauch sind wohl die weiteren Komponenten.
-
Einschalten, I²C initialisieren, SHTC3 in den Sleep-Mode schicken, Standby: 3.11 mA (ca 40 µA gespart, das kommt etwa hin)
-
Einschalten, I²C initialisieren, SHTC3 in den Sleep-Mode schicken, LPUART1 initialisieren, RN2483 in den Sleep-Mode schicken, Standby: Kurzzeitig 17 µA
Die Examples sind im low-power
-Branch.
Eigentlich schicke ich das RN-Modul für 3s in den Sleep. Aus mir noch nicht erklärlichen Gründen wacht es aber nach ~800 ms schon wieder auf. Dazwischen steigt der Stromverbrauch an:
Hier müssen wir wohl mal den Logic Analyzer an die Seriell-Leitungen hängen.
2021-05-25
Anwesend
Hardware / Low Power
- @danilo vor zwei Wochen nochmals Messungen gemacht und dafür das RN-Modul ausgelötet
- Resultat: Wir haben einen doofen LDO ausgewählt: Replace LDO · Issue #34 · gfroerli/hardware-v2 · GitHub
- Mögliche Ersatzkandidaten: https://md.coredump.ch/gfroerli-ldo
- Eigentlich wollten wir sowohl den Ablic S-1317A33-M5T1U4 wie auch den TI TPS782 bestellen und vergleichen, aber der LDO von TI ist leider auf Digikey nicht lieferbar. Also testen wir erstmal den von Ablic. Er ist pin-kompatibel. Wir haben mal 10 Stück davon bestellt (via @urban).
- Der TI TPS782 braucht eine Verbindung von Pin 4 zu GND, momentan ist der Pin floating: LDO: Connect pin 4 to GND · Issue #36 · gfroerli/hardware-v2 · GitHub Als Workaround könnte man eine Drahtverbindung zum Kondensator daneben machen (allerdings spielt das eh keine Rolle, solange dieses Bauteil nicht lieferbar ist).
Firmware
- Timer-bugfix: monotonic impl: Fix panic due to timer rollover by rnestler · Pull Request #96 · gfroerli/firmware · GitHub
- GDB fix: Move .gdbinit to moved firmware crate folder by rnestler · Pull Request #97 · gfroerli/firmware · GitHub
- Log downlinks: Log downlink data to debug UART port by rnestler · Pull Request #98 · gfroerli/firmware · GitHub
TTN
- Wir haben unsere Test-Boards auf das Things Network Backend v3 migriert.
2021-06-08
Anwesend
Hardware / Low Power
- LDO wurde ist inzwischen geliefert, muss noch aufgelötet werden
Firmware
- WIP: Custom panic handler WIP: Implement custom panic handler by dbrgn · Pull Request #99 · gfroerli/firmware · GitHub
- WIP: Send actual voltage measurements Send actual voltage as part of measurement by dbrgn · Pull Request #100 · gfroerli/firmware · GitHub
- docs: Describe how to add a new device to TTN docs: Describe how to add a new device to TTN by rnestler · Pull Request #101 · gfroerli/firmware · GitHub
Website / Apps
- @marc.kramer hatte die Idee, Deeplinks auf die Sensoren zu unterstützen. Kann man implementieren, sobald die Website Permalinks kann (Sensor permalinks · Issue #20 · gfroerli/web · GitHub).
2021-06-22
Anwesend
Hardware / Low Power
Ich habe den zu stromhungrigen LDO ersetzt durch den Ablic LDO S-1317A33-M5T1U4.
Schön gelötet ist anders, aber es funktioniert: Ohne RN-Modul 2.38 uA im Standby!
Mit dieser BOM-Änderung sollten wir das Ziel von <10 µA erreichen.
2021-07-20
Anwesend
Firmware
- Custom panic handler (WIP: Implement custom panic handler by dbrgn · Pull Request #99 · gfroerli/firmware · GitHub) wurde auf Eis gelegt, es erzeugt zu viel zusätzliche Komplexität für eher unwahrscheinlichen Nutzen.
- Ich habe Milestones für v2.0.0 und v2.1.0 erstellt und alle offenen Issues assigned. Milestone 2.0.0: v2.0.0 Milestone · GitHub
Hardware
- TI LDO im PCB-Layout ersetzt durch Modell von Ablic
- Berechnung für neue Spannungsteiler-Widerstandswerte: Check if we can measure the battery voltage below 3.3V · Issue #28 · gfroerli/hardware-v2 · GitHub
2021-08-03
Anwesend
Firmware
- Tested and merged: Send actual voltage as part of measurement by dbrgn · Pull Request #100 · gfroerli/firmware · GitHub
TTN Backend
- TTN Dev-Gateway auf TTN Backend v3 migriert
- Devboard v2 auf TTN Backend v3 migriert
iOS-App
- Update auf iOS 15 ist im Gange
2021-08-17
Anwesend
@danilo @raphi @stefan_schindler
Firmware
- Low power wakup counter: Statt einen eigenen Counter zu führen, benutzen wir den RTC als Counter (Modulo Wakeup-Interval). Dann brauchen wir kein EEPROM Wear Leveling.
- Spannungsteiler: Die Widerstandswerte sehen in Ordnung aus, aber wir testen das mal noch im Coredump mit dem Devboard und externen Widerständen.
- Clock Setup: Verschoben auf den Milestone 2.1.0
- @raphi hat das Nachrichtenformat dokumentiert
- Das Issue DEV_EUI vs HW_EUI ist obsolet und wurde geschlossen
- @danilo hat mit dem RN-Modul experimentiert und einen guten Algorithmus für die Rejoin-Logik und das Counter Handling gefunden
Backend
- @stefan_schindler arbeitet an einem Payload Decoder für das TTN Backend
Varia
Entdeckung: Man kann mit folgenden Kommandos den RN2483 Frame Counter lesen oder setzen:
mac get upctr
mac set upctr <counter>
mac get dnctr
mac set dnctr <counter>
Quelle: Microchip Lightning Support
Mit mac save
werden die Counter im EEPROM gespeichert.
In der Command Reference sind diese Kommandos lustigerweise nicht dokumentiert.
2021-08-31
Anwesend
@danilo @raphi @stefan_schindler
Fortschritte
- @raphi hat im Firmware-Repo die Umwandlungsformeln für die Messages dokumentiert: Document measurement value conversion by rnestler · Pull Request #104 · gfroerli/firmware · GitHub
- @stefan_schindler hat das dann im Payload-Decoder umgesetzt
- @raphi hat die Crates umorganisiert (Restructure crates by rnestler · Pull Request #106 · gfroerli/firmware · GitHub) um mehr Module teilen zu können und mehr Utilities sharen zu können.
- @raphi hat ein CLI Tool geschrieben, um lokal die TTN Nachrichten anzuzeigen: Add ttn listener by rnestler · Pull Request #105 · gfroerli/firmware · GitHub
- @danilo hat Frame-Counter-Befehle auf dem RN-Modul implementiert: Implement getters and setters for frame counters by dbrgn · Pull Request #24 · dbrgn/rn2xx3-rs · GitHub
- @danilo hat die neue Rejoin-Logik in der Firmware implementiert: Implement new (re)join logic by dbrgn · Pull Request #107 · gfroerli/firmware · GitHub
2021-09-14
Anwesend
Fortschritte
-
TTN Listener Utility merged
-
Leider verbraucht das PCB derzeit noch viel zu viel Strom im Standby:
(Marker 1: Start, Marker 2: Sleep, Marker 3: RN wakeup, Marker 4: MCU wakeup)
TODO
- Testen ob das Einlesen der Spannung mit der neuen Referenzspannung funktioniert
- Herausfinden, wieso der Stromverbrauch viel zu hoch ist
- Cleanup & finishing touches
2021-10-06
Anwesend
Fortschritte
- @raphi: WIP Voltage monitor improvements
- @danilo: Hat mit der Implementierung der RTC-basierten Wakeup-Counters begonnen und ist dabei über Schaltjahr-Bugs in mehreren HALs gestossen #rabbithole
2021-11-09
Anwesend
Fortschritte
- @raphi: Debugged flashing problems with cargo-embed: The reason is the enabled double buffering in 0.11.0. See Flashing of STM32L071KBTx with J-Link broken with 0.11.0 but works with 0.10.1 · Issue #883 · probe-rs/probe-rs · GitHub
- @raphi: Script to flash with jlink: Unify j-link scripts and add power-cycle and flash support by rnestler · Pull Request #115 · gfroerli/firmware · GitHub
- @raphi: Updated openocd config and added JLinkGDBServer instructions (Update openocd configuration files by rnestler · Pull Request #118 · gfroerli/firmware · GitHub and Change README to use JLinkGDBServer for debugging by rnestler · Pull Request #119 · gfroerli/firmware · GitHub)
- @danilo Low power measurement now shows more realistic results, however the measurements are still around 30 uA. Without the RN module, the power consumption of a pure go-to-standby firmware is around 2 uA. I’m not sure if it’s the RN module or something else that causes the issue. Maybe it’s the firmware? We’re on 1.0.5, back in early 2018 (Projekt Gfrör.li - Protokoll - #40 von raphi) this wasn’t yet released. Maybe a downgrade should be tried?
Here’s a measurement of the standby branch:
Between 1 and 2 the device is fully in standby. At 2, the RN module wakes up. At 3, the microcontroller wakes up as well.
2021-12-08
Vor 2 Wochen gab’s kein Meeting aufgrund der Coredump-Servermigration.
Anwesend
Fortschritte
- @raphi is working on the voltage monitor.
- @danilo is working on the RTC based wakeup counter. Uptime calculation with 32bit arithmetic works now.
- Merged PR: Fix panic in scheduler due to potential timer overflow
- Opened PR: Always flash under reset
- Opened PR: Rust 1.57 / 2021 edition
2022-01-04
Anwesend
Fortschritte
Inzwischen ist einiges gelaufen:
- Merged PR: Always flash under reset
- Merged PR: Rust 1.57 / 2021 edition
- Merged PR: Upgrade RTIC to 1.0.0
- Merged PR: When config cannot be loaded, print RN2483 HWEUI
- Ready for merge: Standby
- WIP: Voltage monitor
Bauteile
Leider sind kritische Bauteile nicht verfügbar auf Digikey:
- Microcontroller STM32L071KBT6: 497-18577-ND
- 16’500 bestellt, unbekannte Lieferzeit
- Microchip RN2483: RN2483A-I/RM105-ND
- Mouser: 460 verfügbar ab 01.07.2022 (Variante RM104, mit älterer Firmware 1.04)
- NDK NX3215SA-32.768KHZ-EXS00A-MU00525 Crystal: 644-1386-1-ND
- LSI ist leider viel zu ungenau als Ersatz
- Auf Mouser ist der NX3215SA-32.768K-EXS00A-MU00003 lieferbar. Hat aber 90 kO statt 50 kO ESR und 12.5 statt 6 pF Load Capacitance. Dann müssen wir unsere Kondensatoren neu berechnen.
- Noch besser: ECS-.327-6-34RR-TR mit fast identischen Specs
- Toshiba SSM3J338R,LF MOSFET: SSM3J338RLFCT-ND
- Mouser: 29’975 verfügbar ab 10.01.2022
- Diodes DMG6601LVT MOSFET: DMG6601LVT-7DICT-ND
- Mouser: 65’000 verfügbar ab 20.06.2022
Weniger kritische / einfacher ersetzbare Teile:
- Keystone 54 Battery Clips: 36-54-ND
- Mouser: 61 auf Lager
- Molex 1051330001 USB Power: WM9734CT-ND
- Kann weggelassen werden
- RF Solutions CON-SMA-EDGE-S Edge-Mount SMA Connector: CON-SMA-EDGE-S-ND
- Mouser: 331 auf Lager
Einige Lieferanten wie zB Mouser versprechen Lieferungen einiger Teile bis im Sommer. Wir müssen wohl wohl oder übel eine Vorbestellung machen, alle verfügbaren Teile ebenfalls bestellen, und dann auf eine Lieferung im Sommer hoffen. Die Alternative wäre ein Ersatz der Bauteile, was PCB-Rework mit sich ziehen würde. Auch nicht toll.
Vorschlag: Bauteile für 10 Gfrörli-Sensoren bestellen, dann können wir hoffentlich im Sommer ein paar zusammenbauen. Bis dahin mit unseren Devboards arbeiten (wir haben ja 3 Stück, mind. 1 können wir entbehren).
2022-05-13
Anwesend
Fortschritte
Wir haben unseren ersten Sensor v2 einige Tage zuhause getestet und dann deployed. Leider hat er nach einiger Zeit (und vielen Sendelücken) die Arbeit eingestellt. Wir haben noch nicht debugged, woran es liegt.
Parallel haben wir zwei Dragino-Nodes von Reichelt bestellt. Hardware-Bauteile für unsere eigene Hardware sind teilweise noch monatelang nicht erhältlich, und wir wollen nicht dadurch blockiert sein. Leider hatte Reichelt Lieferverzögerung, daher haben wir inzwischen die Nodes von Bastelgarage bestellt und prompt erhalten. Ich versuche derzeit noch, die Reichelt-Bestellung zu stornieren.
Dragino-Nodes
Die zwei Dragino LSN50 v2-D20 Nodes haben zuerst nicht funktioniert. Nach Kontakt mit dem Support habe ich die Firmware neu geflashed, und nun funktionieren sie.
Für das Firmware-Update muss der Schiebeschalter auf „ISP“ gesetzt werden.
Da das Windows-Tool von ST immer crashed ist, habe ich mit stm32flash geflashed:
$ stm32flash /dev/ttyUSB0 -w ~/Projects/gfroerli/dragino-firmware/v1.7.5/EU868.hex -v
Anschliessend können die Nodes per Seriell-Konsole konfiguriert werden:
$ python -m serial.tools.miniterm -e /dev/ttyUSB0 9600
Folgende Konfigurationen habe ich vorgenommen:
- FPort auf
3
setzen (Default2
):AT+PORT=3
- Interval auf 15 min setzen (Default 20 min):
AT+TDC=900000
Platzierung in Pfäffikon SZ
Wir haben uns bereits mit der Verwaltung in Pfäffikon SZ abgesprochen und können dort im Hafen einen Sensor platzieren. Sobald die Tests abgeschlossen sind, werde ich mich wieder bei ihnen melden. Der Sensor ist von Threema gesponsert.
TTN Relay
Das TTN Relay-Script in Python ist langsam schwer zu maintainen. Deshalb: RIIR! Rewrite in Rust 🦀 by dbrgn · Pull Request #5 · gfroerli/ttn-relay · GitHub
In der neuen Version werde ich dann gleich Support für das Dragino-Paketformat umsetzen.
Next Steps
- TTN Relay Rewrite fertigstellen
- Support für Dragino Paketformat
- Nodes konfigurieren (z.B. Interval etc)
- Abklären, ob wir weitere Sensoren in den Nodes möchten (z.B. Innentemperatur)
- Nodes testen (1-2 Tage lang)
- Node 1 bei Remo platzieren
- Node 2 in Pfäffikon platzieren