Datalogger

Aus brainelectronics Wiki
Wechseln zu: Navigation, Suche

Beschreibung

Es kann zwischen der STM32 Platine (Universal Datalogger) und dem AscTec Board mit externem GPS und externer IMU unterschieden werden.
Die Platine verfügt über alle notwendigen Komponenten zur Erfassung von Lage, Höhe, Position etc. ermöglicht jedoch keinen Stream der Daten oder Bilder zu einer Bodenstation. Hierfür kann jedoch der AscTec Controller verwendet werden. Dieser kann Daten vom Tinkerforge IMU Board und Neo GPS Daten abfragen, eine Bildaufnahme auslösen und dessen Aufnahmezeitpunkt bestimmen. Anschließend können die Daten im EXIF Header des Bildes abgelegt und mittels eines Apache Server einer Bodenstation zum Download angeboten werden.

Daten-Stream mittels AscTec Board

Setup

AscTec

Installationen für den Zugriff auf die Kamera:

   $ sudo apt-get install libgphoto2-dev
   $ sudo pip install -v gphoto2==1.5.0
   $ sudo pip install requests

Zudem muss auf die Tinkerforge Module zugegriffen werden können und das GPS des Neo am USB TTL Wandler verbunden sein. Das Triggern des Bildes und Abgreifen des Blitzschuhs zur Bestimmung des Aufnahmezeitpunks erfolgt ebenfalls über den TTL Wandler durch den RTS (für Trigger) bzw. CTS (für Blitzerfassung) Pin.

   $ sudo pip install tinkerforge
   $ wget http://download.tinkerforge.com/tools/brickv/linux/brickv_linux_latest.deb
   $ sudo apt-get install python python-qt4 python-qt4-gl python-opengl python-serial
   $ sudo dpkg -i brickv_linux_latest.deb
   $ wget http://download.tinkerforge.com/tools/brickd/linux/brickd_linux_latest_amd64.deb
   $ sudo dpkg -i brickd_linux_latest_amd64.deb

Einrichten des Servers für die Bereitstellung der Bilder:

   $ sudo apt-get install apache2
   $ cd /var/www/html
   $ sudo mv index.html indexBak.html
   $ sudo mkdir ~/Pictures/mntDirCamera/
   $ sudo ln -s ~/Pictures/mntDirCamera/ /var/www/html/
   $ sudo mkdir /var/www/html/downloadPics
   $ sudo chown jones:root downloadPics

Bodenstation

   $ sudo pip install beautifulsoup4
   $ sudo pip install requests
   $ sudo apt-get install wget

Verwendung

AscTec

Das Script CameraControl.py erstellt beim initiieren alle wichtigen Einstellungen, wie den USB Port des TTL Wandlers und den Pfad zum zusätzlichen Logfile. Zudem stehen drei Threads zur Verfügung: Falsh zum Erfassen des Blitzes, Image zum initiieren einer Bildaufnahme und der Copy Thread zum Kopieren der Bilder von der Kamera auf den AscTec Controller. Wichtig ist, dass das mounting Script erfolgreich ausgeführt werden kann. Dieses ist notwendig um das Fileverzeichnis zu aktualisieren und damit neu aufgenommene Bilder auf der SD Karte der Kamera identifizieren zu können.

Bodenstation

Hierfür kann das Script downloadMissing.py verwendet werden, welches im Setup das zu vergleichende Directory bzw. URL, den Speicherort und die Art der Datei als Input verlangt. Zusammengefasst lässt sich das Programm als ständiger Vergleicher der beiden Verzeichnisse beschreiben, bei dem eine neue Datei zum nächst möglichen Zeitpunkt geladen wird.

Datenlogger Platine

Allgemein

Der Datenlogger ersetzt die bisherigen Lage- und Positionserfassungssysteme an den verschiedenen Gimbal Systemen der DLR UAVs und bildet damit eine einheitliche Basis für die Erfassung sämtlicher wichtiger Daten. Diese Daten umfassen GPS Position, Lage, Helligkeit, Höhe (Barometer), Temperatur sowie Auslösezeitpunkt für Kamerabilder und werden im schnellstmöglichen Intervall auf einer SD Karte gespeichert. Zusätzlich wird eine Datei mit allen Daten zum Auslösezeitpunkt des Kamerabildes hinterlegt.

Komponenten

Bauteil Bezeichnung Datenblatt Verbindung
GPS ublox NEO M8T ublox Website UART2
IMU BNO055 BNO055 Datenblatt I2C
Temperatur TMP102 TMP102 Datenblatt I2C
Licht BH1750 BH1750 Datenblatt I2C
Barometer MS5611 MS5611 Datenblatt I2C
RTC DS3231 DS3231 Datenblatt I2C
Microcontroller STM32F103C8Tx STM32F103 Datenblatt UART1, UART2, UART3, I2C, SPI, USB,

Platine

Die Platine wurde mittels der OpenSource Software KiCad erstellt und wiegt ohne USB Kabel und ohne externe GPS Antenne 13,0g bei einer Größe von 40x40mm. Im Vergleich zu den 12g des Tinkerforge IMU Bricks, ist diese Gewichtssteiergung durch den erhöhten Funktionsumfang allerdings gerechtfertigt.

Libs

Da nicht alle verwendeten Komponenten in der Standard KiCad Lib vorhanden waren, wurden diese von verschiedenen Seiten zusammengetragen bzw. selbst erstellt und können über das externe [Git] geladen werden.

Kurzbeschreibung

Tinkerforge Library clonen

   $ cd ~/Documents/
   $ git clone https://github.com/Tinkerforge/kicad-libraries.git

Kicad öffnen
Preferences -> Configure Paths
von:
KISYS3DMOD /usr/share/kicad/modules/packages3d/
auf:
KISYS3DMOD $HOME/Documents/kicad-libraries/3d/

Spezial Library laden (ggf. sudo nötig, da in /usr/share/)

   $ cd /usr/share/kicad/library
   $ wget https://raw.githubusercontent.com/musa/kicad-library/master/library/special.lib
   $ wget https://raw.githubusercontent.com/musa/kicad-library/master/library/special.dcm

Symlink erstellen für Tinkerforge KICAD libs

   $ cd ~/Documents/master-brick/hardware/
   $ ln -s ../../kicad-libraries/ .

In Programm einfügen

In KiCad über Preferences -> Configure Paths das neue Verzeichnis eintragen.

In Eeschema einfügen

In KiCad über Eeschema -> Preferences -> Component Libraries mit dem Button "Insert" das neue Verzeichnis unten eintragen. Danach die Lib bei "Component library files" über "Insert" hinzufügen. hinzufügen.

In Pcbnew einfügen

In KiCad über Pcbnew -> Preferences -> Configure Paths das neue Verzeichnis eintragen. (Sollte mit dem Einfügen im Programm bereits vorhanden sein).
In KiCad über Pcbnew -> Preferences -> Footprint Libraries Manager mit dem Button "Append Library" die zur Eeschema zugehörige Library einfügen. Hierzu einen passendend Namen wählen und den Library Path am besten als Environment Variable definieren

Komponenten

Id Designator Package Quantity Designation Supplier and ref
1 Analog Hirose_DF13-04P-1.25DSA_04x1.25mm_Straight 1 Analog
2 Y1 Crystal_SMD_HC49-SD 1 8M0
3 GND.RX.TX1 Hirose_DF13-03P-1.25DSA_03x1.25mm_Straight 1 Serial
4 U22 GCT-MEM2055-00-190-01-A 1 MicroSD_SPI_CD
5 C1,C2,C21,C22 C_0603 4 100n
6 C3,C11 C_0603 2 22pF
7 C1,C2,C4,C7,C8,C10,C15,C16,C17,C18,C19,C20,C21,C22,C23,C24,C25 C_0603 17 100nF
8 C5,C6 CP_Elec_4x5.3 2 10uF
9 C9,C12 C_0603 2 100pF
10 C9,C12,C13,C14 C_0603 4 12pF
11 PWR LED_0603 1 Power
12 User LED_0603 1 User
13 Fix LED_0603 1 Fix
14 Card LED_0603 1 SD
15 D5,D6,D7 D_0603 3 1N4148
16 Digital Hirose_DF13-04P-1.25DSA_04x1.25mm_Straight 1 Digital
17 USB USB_Mini-B 1 USB_OTG
18 STLink Hirose_DF13-04P-1.25DSA_04x1.25mm_Straight 1 STLink
19 Ext Hirose_DF13-03P-1.25DSA_03x1.25mm_Straight 1 CAN/Digital
20 SPI2 Hirose_DF13-06P-1.25DSA_06x1.25mm_Straight 1 SPI_2
21 TX.RX3.GND Hirose_DF13-03P-1.25DSA_03x1.25mm_Straight 1 TX3/RX3
22 Camera Hirose_DF13-04P-1.25DSA_04x1.25mm_Straight 1 Camera Control
23 I2C Hirose_DF13-03P-1.25DSA_03x1.25mm_Straight 1 I2C
24 EN GPS Measurement_Point_Square-SMD-Pad_Small 1 GPS-EN
25 1PPS Measurement_Point_Square-SMD-Pad_Small 1 1PPS
26 J16,ADDR,ADR,ADDR GS3 4 ADDR
27 INT Measurement_Point_Square-SMD-Pad_Small 1 INT
28 32k Measurement_Point_Square-SMD-Pad_Small 1 32kHz
29 J19 Measurement_Point_Square-SMD-Pad_Small 1 Alert
30 R1,R5 R_0603 2 510R
31 R2,R7,R8,R10,R12,R13,R14,R16,R17,r18,R20,R21,R22,R23,R24,R26,R27,R28,R29,R30,R31 R_0603 21 10k
32 R3,R4 R_0603 2 100k
33 R6,R15,R19,R25 R_0603 4 1k
34 R9,R11 R_0603 2 22R
35 Reset1,SW2,SW3 TACT-SWITCH 3 SW_Push
36 U1 LQFP-48_7x7mm_Pitch0.5mm 1 STM32F103C8Tx
37 U3 SOIC-16_3.9x9.9mm_Pitch1.27mm 1 DS3231
38 U4 SOT-223 1 LM1117-3.3
39 U5 SOT563 1 TMP102
40 U7 WSO6FI 1 BH1750
41 U8 MS5611 1 MS5611
42 Y2 AB26TRQ-2Pin 1 32k768
43 Y3 AB26TRQ-2Pin 1 Crystal
44 J13 U.FL-CON 1 Antenna
45 *,*,*,* MountingHole_2.5mm 4 MountingHole_2.5mm
46 BT1 Keystone_3000_1x12mm-CoinCell 1 BATTERY
47 U6 U-BLOX-NEO-M8T 1 NEO-M8T
48 U2 LGA28_5832 1 BNO055
49 L1 L_0603 1 L
50 R32 R_0603 1 22R
51 D8 D_0603 1 D_Schottky
52 Boot Pin_Header_Straight_2x03_Pitch1.27mm 1 Boot
53 5Vin Hirose_DF13-02P-1.25DSA_02x1.25mm_Straight 1 Power

Rendering

Vorderseite Datalogger V1.0 Rückseite Datalogger V1.0
Vorderseite Datalogger V1.0 ohne Komponenten Rückseite Datalogger V1.0 ohne Komponenten

Schaltplan

Schaltplan Datalogger V1.0

Adress Auswahl

Durch drei Solder Pads in der Nähe jedes am I2C Bus angeschlossenen Chips kann die Adresse manuell gewählt werden. Standardmäßig werden die Adressen im LOW Zustand genutzt.
Sollte ein Adress Konflikt auftreten, kann dieser durch diese Solder Pads behoben werden.

Anschlüsse

Auf dem Board befinden sich zwei analoge Eingangspins (PB0, PB1), zwei digital I/O (PA0, PA1)(mit analog & PWM Funktionalität), zwei weitere digital I/O (PB8, PB9) welche zudem CAN Funktionalität unterstützen, ein UART Port (UART_3), ein weiterer SPI Port (SPI_2), ein I2C Port sowie ein UART Com/Debug Port (UART_1)

Vorderseite Datalogger V1.0 Rückseite Datalogger V1.0

Button

Die Platine verfügt über insgesamt drei Taster, von denen zwei zur freien Verfügung stehen und der dritte, wie gekennzeichnet, als Reset Button fungiert.

I/O Pins

Die herausgeführten I/O Pins verfügen alle über PWM Funktionalität.

Analog

Die beiden analog Pins (PB0, PB1) sind nur 3.3V tolerant!

Digital

Die beiden "digital" Pins (PA0, PA1) sind ebenfalls nur 3.3V tolerant, verfügen aber über analogRead Fähigkeiten.

Kamera

Eine Digital Kamera kann durch den Kamera-Header bedient werden. Der Flash Pin wird durch eine Widerstands-Dioden Kombination auf Betriebsspannung gehalten und fällt bei einem aufgenommenen Bild auf Masse ab. Dieser Abfall wird durch den Controller erkannt und verarbeitet. Der Trigger Pin ist mit einem 10k Pullup-Widerstand versehen, sodass auch ohne Trigger Signal keine Fotos aufgenommen werden. (Der Widerstand wurde vergessen, kann aber in V1.0 einfach zum nächsten Pin (3.3V) angelötet werden)

Spannungsversorgung

Die allgemeine Versorgungs- und Betriebsspannung auf der Platine liegt bei 3.3V.

Die Platine ist mit einem LM1117-3.3V ausgestattet, welcher sowohl via USB (Rückstrom-geschützt mit Schottky Diode) als auch über den externen Anschluss versorgt werden kann. Die maximale Spannung liegt laut Datenblatt bei 20V, empfohlen wird nicht mehr als 15V.

Boot Options

Der 2x3 Header ist nur für die erste Programmierung notwendig und kann daher aus Gründen der Gewichtseinsparung anschließend entfernt und die Einstellung fest verlötet übernommen werden.

USB Port

Verbaut wurde auf V1.0 ein Mini USB Anschluss. Dieser wurde im Footprint so ausgelegt, dass auch ein Micro USB Port verlötet werden kann.
Wurde der Bootloader auf den Chip geladen, erfolgt die Ausgabe sämtlicher Serial Nachrichten über den USB Port.

STLink

Der STM32 ist neben dem USB Port (nach dem Flashen mit dem STM32duino) auch über den UART_1 Port oder den STLink Port programmierbar. Für den STLink ist jedoch ein spezieller STLink Programmer notwendig. Das Programmieren über den UART_1 Port überschreibt den STM32duino Bootloader.

Kommunikation

Alle Header verfügen neben den Datenleitungen auch über einen Masseanschluss.

I2C

Für die Erweiterung um neue Sensoren wurde der I2C Bus an einem seperaten Header herausgeführt.

SPI_2

Für weitere parallel zu bearbeitende SPI Geräte wurde der SPI_2 Port auf einen externen Header gelegt, welcher aus Platzgründen nicht als Standard 2x3 Header ausfallen konnte.

CAN

Der CAN Bus an Pin PB8 (CAN_RX) und PB9 (CAN_TX) ist 5V tolerant.

UART1

Der UART1 Port liegt direkt neben dem USB Anschluss. Eine Ansteuerung aus der Arduino IDE erfolgt mittels Serial1. Dieser Port ist 5V tolerant.

UART2

Dieser Port ist für die Interaktion mit dem GPS reserviert und ist nur 3.3V tolerant.

UART3

Für weitere serielle Geräte kann der UART3 Port verwendet werden. Dieser ist analog zum UART1 Port aus der Arduino IDE mittels Serial3 anzusprechen. Dieser Port ist 5V tolerant.

Code

Arduino IDE

Manuell

Für die Verwendung in der Arduino IDE, muss das Repo in den Arduino/hardware Ordner gelegt werden, sodass dieses dann Arduino/hardware/Arduino_STM32 bildet. Abschließend müssen ggf. noch ein paar Konfigurationen vorgenommen werden, für die es bereits ein fertiges Skript gibt.

   $ cd /home/jones/Arduino/
   $ mkdir hardware
   $ cd hardware
   $ git clone https://github.com/rogerclarkmelbourne/Arduino_STM32.git
   $ cd Arduino_STM32/tools/linux
   $ ./install.sh

Board Manager

Für das ganze gibt es ab der Version 1.6.x mit dem Board Manager bereits ein fertiges Ding.

In der Arduino IDE über File -> Preferences. Dort den Button neben dem Eingabe Feld für 'Additional Boards Manager URLs' anklicken. Dort die Package JSON URL in eine extra Zeile eintragen.

 http://dan.drown.org/stm32duino/package_STM32duino_index.json
 

und danach über Tools->Board->Board Manager das entsprechende für den STM32 herunterladen und installieren lassen.

Probleme

Sollte kein passender Port gefunden werden, kann möglich sein, dass die udev rules für das Gerät in /etc/udev/rules.d/45-maple.rules neu geladen werden müssen.

   $ sudo udevadm control --reload-rules

Links

STM32Duino Wiki Installation
Arduino STM32 Repo
STM32duino Package JSON

Beispiel Code

#define pinLED PC13            // depends on board and chip

void setup() {
  Serial.begin(9600);
  pinMode(pinLED, OUTPUT);
  digitalWrite(pinLED, HIGH);  // set pin HIGH to turn off LED
  Serial.println("START");     // output via the USB Port
  Serial1.println("START");    // output via the UART_1 Port
}

void loop() {
  digitalWrite(pinLED, LOW);
  delay(1000);
  digitalWrite(pinLED, HIGH);
  Serial.println("Hello World"); // USB
  Serial1.println("Hello World");// UART_1
}
 

Programmieren

siehe Arduino STM32 Upload
Das Programmieren des STM32 Boards ist über die nachfolgenden 3 Möglichkeiten gegeben: Bootloader, STLink, USB Serial Adapter

Nach dem Verbinden per USB kann der Code erst hochgeladen werden, nachdem die Onboard LED mehrmals schnell hintereinander geblinkt hat.

Boot Pin Settings

Normaler boot (mit Benutzer Code, der auch ein zweiter Bootloader sein kann):

  • Boot0 LOW
  • Boot1 LOW

Firmware Upload per USART1 zulassen:

  • Boot0 HIGH
  • Boot1 LOW

Nicht verwendet:

  • Boot0 = LOW
  • Boot1 = HIGH

Boot vom RAM (nicht implementiert in v2.0 bootloader):

  • Boot0 HIGH
  • Boot1 HIGH

Bootloader

Mit dem zu installierenden Bootloader ist es möglich, den STM wie ein normales Arduino Board per USB Port zu programmieren, ohne Jumper zusetzen, Reset zu drücken, einen USB TTL Konverter zu verwenden o.ä.
Da von Haus aus kein Bootloader installiert ist, muss dieser einmal manuell gebrannt werden. Dafür ist Boot0 auf HIGH und Boot1 auf LOW zu setzten und ein USB Serial Adapter mit dem UART_1 Port zu verbinden. Zudem muss das STM32duino Bootloader Repo geladen werden und der für das Board passende Bootloader gewählt werden. Für den STM32F103C8T6 mit der LED an PC13 ist dies der generic_boot20_pc13.bin und der USB TTL Wandler liegt im Beispiel auf /dev/tty.SLAB_USBtoUART. Hier muss genau getimet werden und der Reset Button solange gedrückt werden bis der Flash Vorgang gestartet wird. Es sollte der stm32flash im Ordner linux gewählt werden auch wenn das System 64bit ist

   $ cd ~/Documents/Arduino/hardware/Arduino_STM32/tools/linux/stm32flash
   $ ./stm32flash -w ~/Downloads/STM32duino-bootloader/STM32F1/binaries/generic_boot20_pc13.bin -v -g 0x0 /dev/tty.SLAB_USBtoUART

War das Flashen erfolgreich wird folgendes ausgegeben:

stm32flash Arduino_STM32_0.9

http://github.com/rogerclarkmelbourne/arduino_stm32

Using Parser : Raw BINARY
Interface serial_posix: 57600 8E1
Version      : 0x22
Option 1     : 0x00
Option 2     : 0x00
Device ID    : 0x0410 (Medium-density)
- RAM        : 20KiB  (512b reserved by bootloader)
- Flash      : 128KiB (sector size: 4x1024)
- Option RAM : 16b
- System RAM : 2KiB
Write to memory
Erasing memory
Wrote and verified address 0x08001c14 (100.00%) Done.

Starting execution at address 0x08000000... done.
 

Alternativ kann auch stm32loader.py verwendet werden Python STM32Loader

Damit befindet sich nun der STM32duino bootloader auf dem Board. Das Board komplett abtrennen und den Boot0 Jumper wieder auf LOW setzen, da sonst bei einem Reset der Bootloader wieder gelöscht wird. (Boot1 bleibt immer auf LOW)
Nun kann in der Arduino IDE die Upload Methode: STM32duino bootloader gestellt werden und der STM über den Micro/Mini USB Anschluss verbunden werden es wird beim ersten Mal kein Port ausgewählt
WICHTIG:
Der Boot0 muss ab jetzt immer auf LOW gesteckt sein. Damit kann ab jetzt, wie von Arduino gewohnt, auf Upload geklickt werden und das Programm wird hochgeladen und startet. Der Debug Output der Arduino IDE sieht dabei folgendermaßen aus:

Sketch uses 14900 bytes (11%) of program storage space. Maximum is 131072 bytes.
Global variables use 2816 bytes of dynamic memory.
dfu-util 0.7

Copyright 2005-2008 Weston Schmidt, Harald Welte and OpenMoko Inc.
No valid DFU suffix signature
Warning: File has no DFU suffix
Copyright 2010-2012 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to dfu-util@lists.gnumonks.org

Filter on vendor = 0x1eaf product = 0x0003
Opening DFU capable USB device... ID 1eaf:0003
Run-time device DFU version 0110
Found DFU: [1eaf:0003] devnum=0, cfg=1, intf=0, alt=2, name="STM32duino bootloader v1.0  Upload to Flash 0x8002000"
Claiming USB DFU Interface...
Setting Alternate Setting #2 ...
Determining device status: state = dfuIDLE, status = 0
dfuIDLE, continuing
DFU mode device DFU version 0110
Device returned transfer size 1024
bytes_per_hash=298
Copying data from PC to DFU device
Starting download: [##################################################] finished!
state(8) = dfuMANIFEST-WAIT-RESET, status(0) = No error condition is present
Done!
Resetting USB to switch back to runtime mode
 

Ab jetzt erscheint unter Port /dev/ttyACM0 (Marple Mini) der STM, welcher auch automatisch ausgewählt ist aber nach einem Reset manuell angewählt werden muss, da er sich beim Reset ändert. Über diesen Port (welcher nur simuliert wird) kann nun die Kommunikation mit dem STM erfolgen sowie jegliches weiteres Hochladen von neuem Arduino Code.

Hinweis Wird der STM durch den Reset Button neugestartet, so ändert sich der USB Port und ein Upload ohne Wechsel auf diesen wird fehlschlagen.

STLink

ACHTUNG
Dies überschreibt einen gebrannten Bootloader wie z.B. den STM32duino bootloader!
Zum Programmieren muss Boot0 HIGH (und Boot1 LOW default) gesetzt werden. Danach wird der Reset Button einge Sekunden gedrückt, sodass die On Board LED 6x schnell blinkt. Nach dem erfolgreichen Upload beginnt der Code zu laufen. Für einen Start des Codes nach dem Einschalten ist Boot0 wieder auf LOW zu setzten.

Arduino Setup
Ermöglicht keine Ausgabe von Debug/Serial
Sollte die Arduino IDE folgenden Fehler ausgeben:

/home/jones/Arduino/arduino-1.6.12/hardware/Arduino_STM32-master/tools/linux/stlink_upload: line 2: 
/home/jones/Arduino/arduino-1.6.12/hardware/Arduino_STM32-master/tools/linux/stlink/st-flash: No such file or directory
 

so fehlen die nötigen Pakete, welche folgendermaßen installiert werden können:

   $ sudo apt-get install libc6-i386
   $ sudo apt-get install libusb-1.0-0:i386

Alternativ kann auch folgender Link verwendet werden http://apt.ubuntu.com/p/libc6-i386

USB to Serial Adapter

  • Mac: Funktioniert, anstecken und "Upload Methode: Serial" wählen.
  • Linux: Funktioniert, anstecken und "Upload Methode: Serial" wählen.

STM mit USB to Serial Adapter verbinden
ACHTUNG
Dies überschreibt einen gebrannten Bootloader wie z.B. den STM32duino bootloader!
Zum Programmieren muss Boot0 HIGH (Boot1 bleibt default LOW) gesetzt werden. Danach wird der Reset Button einge Sekunden gedrückt, sodass die On Board LED 6x schnell blinkt. Nach dem erfolgreichen Upload beginnt der Code zu laufen. Für einen Start des Codes nach dem Einschalten ist Boot0 wieder auf LOW zu setzten.
Mit dieser Methode ist es möglich die Debug/Serial Ausgabe zu erhalten.

Probleme

Sollte der Datenlogger nicht mehr im Serial Monitor, bei der Portauswahl oder über das Terminal unter /dev/ttyAMC0 gelistet werden, der Bootloader voll funktionsfähig ist (auch ohne Fehler gebrannt werden kann), eine Programmierung via STLink oder den Serial Port PA9/PA10 ebenfalls funktioniert, DANN kann der Widerstand zwischen USB Buchse und STM32 oder die USB Buchse selbst einen Fehler aufweisen (Lötstelle defekt).
Dieses Verhalten bzw. dieses Problem zeigt sich im Terminal mit dem Befehl

   $ dmesg

als folgendes

[ 9715.253516] usb 1-5: new full-speed USB device number 72 using xhci_hcd
[ 9715.253767] usb 1-5: Device not responding to setup address.
[ 9715.461532] usb 1-5: Device not responding to setup address.
[ 9715.669511] usb 1-5: device not accepting address 72, error -71
 

auch wenn das Gerät manchmal als richtiges angezeigt wird

[ 9955.870998] usb 1-5: new full-speed USB device number 75 using xhci_hcd
[ 9956.012191] usb 1-5: New USB device found, idVendor=1eaf, idProduct=0003
[ 9956.012196] usb 1-5: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[ 9956.012199] usb 1-5: Product: Maple 003
[ 9956.012202] usb 1-5: Manufacturer: LeafLabs
[ 9956.012204] usb 1-5: SerialNumber: LLM 003
 

Arduino kommentiert diesen Fehler mit folgendem Log

Sketch uses 14884 bytes (22%) of program storage space. Maximum is 65536 bytes.
Global variables use 2816 bytes of dynamic memory.
No valid DFU suffix signature
Warning: File has no DFU suffix
dfu-util 0.7

Copyright 2005-2008 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2012 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to dfu-util@lists.gnumonks.org

Filter on vendor = 0x1eaf product = 0x0003
Opening DFU capable USB device... ID 1eaf:0003
Run-time device DFU version 0110
Found DFU: [1eaf:0003] devnum=0, cfg=1, intf=0, alt=2, name="UNDEFINED"
Setting Configuration 1...
Claiming USB DFU Interface...
Setting Alternate Setting ...
 

Libraries

Weiterführende Links

Basic Tutorial mit Serial Upload
STM32Duino Bootloader brennen
Flashing Bootloader STM32duino Wiki
List of working Libs
STM32 Info + C Code
Blue Pill Wiki
STM32duino API

Sonstiges