LoRaWAN Node auf Basis des STM32F103C8


#1

Ich möchte für den STM32F1xx eine Code Basis in der Segger IDE erstellen um daraus LoRaWAN/TTN Nodes zu erstellen.
Die vorhandenen Code Schnipsel sind meiner Meinung nach nicht gut zu warten, die Programmierung ist nicht wirklich sauber und die Pflege wird auf lange Sicht kaum möglich sein.

Warum Segger, weil es eine professionelle Umgebung ist.

Ziel ist es einen #citizensensor zu erstellen der günstig von vielen Usern nutzbar ist.
Der Code soll die notwendigen Konfigurationen aus einer Init Datei einlesen die man sich auf einer Webseite erstellen kann. Das ist aber erst der zweite Schritt.

Ziel 1 ist es den Basis Code zu erstellen um die Kommunikation STM32 mit dem RFM95W und der I2C Schnittstelle zu ermöglichen.

Wer kann dabei helfen?


#2

Moin.

Na ja, den “Bürgersensor” als solches gibt es schon. Komplett mit Platine und zugehöriger Firmware. Allerdings basiert die Firmwareentwicklung und deren Bearbeitung auf einem Konzept, welches mit der Arduino-IDE umgesetzt wurde.

Ob deren Pflege aufgrund einer IDE sich schwieriger gestaltet, vermag ich mangels Wissen nicht zu sagen.

Wie ich gelesen habe, hast du aber schon einen Grundstock (STM32&LMIC) passend für die IDE deiner Wahl finden können.

Das ist doch gut und darauf kann dann doch aufgebaut werden.

Achso, ja. Ein paar mehr Hinweise in deinem Eingangspostig wären bestimmt hilfreich.
Wie z.B. Link`s zu Informations.- und Softwarequellen die du/ihr/wir nutzen wollen.

Gruß


#3

Na ja, da gibt es halt noch nichts was auf dauer verwertbar im Forum liegen müsste.

Aber ja es gibt einen Link https://github.com/kzyapkov/bluepill-lora-mx der die Basis sein kann.
Da ist aber noch einiges an Arbeit zu Investieren bis das dann auf der Segger lauft.

Neuste Erkenntnis ist das es zwar als make funktioniert aber schon alleine der Nachbau der Device Einstellungen in der STM32CubeMX für die notwendige HAL andere Pins liefert.

Das Repo liefert leider keine Übersicht der zu beschaltenden PINs mit, steht ja alles irgend wo im Code.

Aber es muss eigentlich irgend wie funktionieren.


#4

Moin.

Tscha, aber wie soll jemand behilflich sein, wenn die Quellen, mit denen Du arbeitest nicht auffindbar sind?
Z.B., dein Git.
Was soll in der Grundkonfiguration für die MCU vorhanden sein, bzw. muss?
Das wäre doch zuallererst zu klären und wie der Weg dahin ist.

Also, ich für meinen Teil denke mir das so:

Es geht um den STM32F103C8T6 . Im Regelfall haben die blauen Pillen, die wir nutzen wollen, 128KB.
Das Teil rennt mit max. 72 MHz. Aber vielleicht sollte man bei der Konfiguration schon daran denken unterschiedliche Systemtaktvarianten zu generieren. Vielleicht noch welche mit 48, 32, 16 und 8MHz.

Dann müssen mindestens folgende Bussysteme ermöglicht werden: SPI (für das LoRa-Modem), I²C (um Sensoren und Displays anzubinden können), (S)UART (um eine serielle Komunikation zu ermöglichen.
Weitere Schlagworte wären vielleicht noch: Deepsleep, RTC, Batteriespannung erfassen.

Gruß


#5

Das ist zwar alles soweit nicht falsch, aber momentan gibt es einfach erst einmal nur die folgenden Bedingungen:

  1. Die MCU ist der STM32F103C8T6 auch “Bluepill” genannt.
  2. Das LoRa Modem ist ein RM95W welches auch als SX1276 von Semtech zu identifizieren ist.
  3. Um damit dann an das TTN mittels LoRa zu sprechen ist die LMiC in der Version 1.5 oder 1.6 notwendig.
  4. Es soll ein wartbarer Code entstehen der entweder mit dem Segger embedded Studio for ARM oder mit dem Atollic TrueSTUDIO for STM32 (Version 9) zusammen arbeitet.

Die folgenden Quellen haben hier schon viel Arbeit investiert:

  1. https://github.com/frasercrossman/STM32F103-RFM95W-Transmitter
  2. https://github.com/tuddman/lmic
  3. https://github.com/kzyapkov/bluepill-lora-mx
  4. https://github.com/kzyapkov/lmic/tree/780e8054963e2b6f948e8643bf0e5cca9a070838 (LMiC V1.6)

Vom STM32 benötigen wir folgende Devices:

  • I2C
  • SPI
  • USART
  • GPIO
  • RTC

Wenn dann eine einfache Anwendung ein erste Verbindung zum TTN aufbauen kann beginnt der einfache Teil. Einbinden von Sensoren oder Displays und nicht vorher.


#6

zu “dein Git” das existiert leider noch nicht weil es einfach noch viel zu früh ist.


#7

Moin.

Ich denke ich werde mich mal an dieser Möglichkeit versuchen.

https://www.thethingsnetwork.org/labs/story/a-cheap-stm32-arduino-node

Die Lösung kann auch bis 8MHZ runtergetacktet werden.

Quellcode und mehr Informationen sind im zugehörigen Git zu finden:

Gruß


#8

Da wirst du natürlich Erfolgreich sein und einen lauffähigen STM32Node bekommen.

Das ist natürlich auch noch eine Alternative:


#9

Für diesen Node gibt es auch eine os.mbed Version:
https://os.mbed.com/users/orangeway/code/STM32F103C8T6_LoRaWAN-lmic-app/


#10

Moin

Sagen wir mal so: Ich werde eine lauffähige Hardware zusammengefrickelt bekommen. :smile:

Ob ich die Softwareseite auf die Reihe bekomme, muss sich zeigen.

Gruß


#11

Moin.


Eine kompakte Lösung auf einem breadboardfreundlichem Design gibbet von BSFrance (Shop).
Das zugehörige Git findet man hier.
Eine weitere Bezugsmöglichkeit ist die Bucht. Bei einer Auswahl mit dem Antennentyp 2, µFl auf SMA + Stummelantenne, wurde mir ein Preis von 18€ ausgeworfen.

Mag auf den ersten Blick nicht günstig wirken, aber für einen Node, der bereits einen vernünftige Antennenlösung, Lade.- und Anschlussmöglichkeit für Akkubetrieb (LiPo) und ein OLED mitbringt…?



Pinout:

Das Datenblatt dazu: https://docs.bsfrance.fr/documentation/11377_LORAM3_D_F103/Datasheet_LoRaM3-D_1.1_F103.pdf

Ich denke dieser Node ist zumindest eine Überlegung wert. :slight_smile:

Gruß