Your programmable USB stick

Startseite

YupStick

Mit dem Yupstick lernst du die Programmierung von STM32 Mikrocontrollern. Das Board ist gut für Schüler, weil es bequem in jede Tasche passt und keine weiteren Teile erfordert.

YupStick Platine
Größe: 44·88 mm

Für dein Programm stehen 4 Taster, 9 Leuchtdioden, 2 Sensoren und ein Schallwandler zur Verfügung.

Die großen Löcher sind für Krokodilklemmen vorgesehen, um externe Sachen anzuschließen. Zum Beispiel Schaltkontakte, analoge Sensoren und Transistoren für Lasten. Diese Anschlüsse sind durch Widerstände geschützt.

Du kannst den YupStick dank des integrierten Bootloaders direkt an dein Notebook stecken. Auf der Rückseite ist Platz für einen Knopfzellen-Halter, damit du dein Projeke unterwegs vorführen kannst.

Platine herstellen lassen

Die Firma JLCPCB stellt solche Platinen für wenige Euros her. Du musst dazu nur die Gerber Files hoch laden. Ich habe dort für die ersten fünf Platinen mit Versand weniger als 10 Euro bezahlt.

Die Bauteile lötest du selbst auf. Folgende Teile kannst du weg lassen, um sie später nur bei Bedarf nach zu rüsten:

Ab 20 Platinen lohnt sich der Bestückungs-Service von JLCPCB. Kontaktiere mich ggf. per Mail um die dazu nötigen Unterlagen zu erhalten.

Eigentlich müsste die Platine 2,1 mm dick sein. Aus Kostengründen habe ich sie mit 1,6 mm herstellen lassen und dann auf der Rückseite des USB Steckers mit einem Klettpad verstärkt. Das passte zufällig sehr gut. Schleife die Vorderkante des Steckers beim Label J1 glatt, damit sie nicht an den Kontakten in der USB Buchse hängen bleibt.

Mikrocontroller

Der STM32L072CBT6 hat folgende Eckdaten:

Dokumente vom Hersteller: Datasheet, Reference Manual, Errata, Programming Manual, Getting started with Arduino

Meine Programieranleitung findest du hier, Grundkenntnisse in C vorausgesetzt.

Schaltplan

YupStick Schaltplan

Anschlusslöcher

PortPWMAnalogDigitale Spezialfunktionen
PA0xADC_IN0, COMP1_INM, COMP1_OUTTIM2_CH1, TSC_G1_IO1, USART2_CTS, TIM2_ETR, USART4_TX
PA1xADC_IN1, COMP1_INPTIM2_CH2, TSC_G1_IO2, USART2_RTS, TIM21_ETR, USART4_RX
PA2xADC_IN2, COMP2_INM, COMP2_OUTTIM21_CH1, TIM2_CH3, TSC_G1_IO3, USART2_TX, LPUART1_TX
PA3xADC_IN3, COMP2_INPTIM21_CH2, TIM2_CH4, TSC_G1_IO4, USART2_RX, LPUART1_RX
PA4ADC_IN4, COMP1_INM, COMP2_INM, DAC_OUT1SPI1_NSS, USART2_CK, TIM22_ETR
GND
Diese Anschlüsse sind durch 1kΩ Widerstände geschützt. PA0-PA3 sind mit den darüber liegenden Tastern verbunden. PA4 ist mit dem Piezo Schallwandler verbunden.

Stiftleiste J2

StiftPortPWMAnalogDigitale Spezialfunktionen
1PB15SPI2_MOSI, I2S2_SD, RTC_REFIN
2PB0xADC_IN8, VREF_OUTEVENTOUT, TIM3_CH3, ADC_IN8, VREF_OUT, TSC_G3_IO2
3PB14xSPI2_MISO, I2S2_MCK, RTC_OUT, TSC_G6_IO4, LPUART1_RTS_DE, I2C2_SDA, TIM21_CH2
4PB1xADC_IN9, VREF_OUTTIM3_CH4, TSC_G3_IO3, LPUART1_RTS
5PB13xSPI2_SCK, I2S2_CK, MCO, TSC_G6_IO3, LPUART1_CTS, I2C2_SCL, TIM21_CH1
6PB2xLPTIM1_OUT, TSC_G3_IO4, I2C3_SMBA
7PB12SPI2_NSS, I2S2_WS, LPUART1_RTS_DE, TSC_G6_IO2, I2C2_SMBA, EVENTOUT
8PB3xCOMP2_INMSPI1_SCK, TIM2_CH2, TSC_G5I_O1, EVENTOUT, USART1__RTS_DE, USART5_TX
9PB11xEVENTOUT, TIM2_CH4, TSC_G6_IO1, LPUART1_RX, I2C2_SDA, LPUART1_TX
10PB4xCOMP2_INPSPI1_MISO, TIM3_CH1, TSC_G5_IO2, TIM22_CH1, USART1_CTS, USART5_RX, I2C3_SDA
11PB10xTIM2_CH3, TSC_SYNC, LPUART1_TX, SPI2_SCK, I2C2_SCL, LPUART1_RX
12PB5xCOMP2_INPSPI1_MOSI, LPTIM1_IN1, I2C1_SMBA, TIM3_CH2, TIM22_CH2, USART1_CK, USART5_CK, USART5_R, TS_DE
13PA7xADC_IN7, COMP2_OUTSPI1_MOSI, TIM3_CH2, TSC_G2_IO4, TIM22_CH2, EVENTOUT
14PB6COMP2_INPUSART1_TX, I2C1_SCL, LPTIM1_ETR, TSC_G5_IO3
15PA6xADC_IN6, COMP1_OUTSPI1_MISO, TIM3_CH1, TSC_G2_IO3, LPUART1_CTS, TIM22_CH1, EVENTOUT
16PB7COMP2_INP, VREF_PVD_INUSART1_RX, I2C1_SDA, LPTIM1_IN2, TSC_G5_IO4, USART4_CTS
17GND
18GND
19VDD
20VDD
Diese Ports sind 5 V tolerant, ohne Schutzwiderstände.

Anmerkungen zur Schaltung

Die Taster ziehen den jeweiligen Eingang auf VDD. Zur Abfrage musst du daher den Pull-Down Widerstand aktivieren. Externe Schaltkontakte die den Eingang auf GND ziehen müssen hingegen mit aktiviertem Pull-Up Widerstand abgefragt werden. Nach dem Ändern der Pull-Up/Down Widerstände musst du kurz warten, bevor die Eingänge sinnvolle Werte liefern.

Wenn du die Anschlüsse PA0-PA3 mit Tesafilm oder Isolierband abdeckst, lassen sie sich theoretisch als Touch Sensoren verwenden. Ausprobiert habe ich das allerdings noch nicht. Dazu gibt es eine Anleitung vom Chiphersteller, die Application Note AN5105.

Der Piezo Schallwandler an PA4 ist absichtlich leise. Du sollst damit das Programmieren üben, nicht deinen Nachbarn auf die Nerven gehen. Um ihn zu verwenden musst du an PA4 eine digitale Frequenz ausgeben, oder über DAC_OUT1 ein analoges signal. Man kann den Wandler auch anders herum als Mikrofon verwenden!

Der Optische Sensor ist (um Strom zu sparen) nur dann aktiv, wenn PC13 auf LOW steht. Dann ist auch die gelbe LED an.

Um den USB/DFU Bootloader zu aktivieren musst du den Boot0 Taster gedrückt halten und gleichzeitig kurz auf den Reset Taster drücken. Alternativ dazu kannst du einen Debugger wie den ST-Link an J3 anschließen. Die LEDs an PA13 und PA14 sind dann allerdings nicht frei programmierbar.

Falls du den YupStick dauerhaft per Batterie versorgst, vergiss nicht den Standby oder Stop Modus zu nutzen, sonst zieht er dir die Batterie leer. Bedenke dass CR2032 Knopfzellen nur wenig Strom (typisch 5 mA) liefern können. LR44 Zellen liefern viel mehr Strom. Du kannst natürlich auch andere Batteriehalter unter die Platine kleben. Wenn du den Jumper JP1 entfernst, kann die Platine extern über Anschluss J2 mit Strom versorgt werden.