Your programmable USB stick
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.
Für dein Programm stehen 4 Taster, 9 Leuchtdioden und ein Lichtsensor zur Verfügung. Die großen Löcher sind für Krokodilklemmen vorgesehen, um externe Sachen anzuschließen. Zum Beispiel Schaltkontakte, analoge Sachen, und Transistoren für Lasten. Meinetwegen auch Bananen als Touch-Sensoren, wenn man das toll findet.
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.
Der STM32L072CBT6 hat folgende Eckdaten:
Port | PWM | Analog | Digitale Spezialfunktionen |
---|---|---|---|
PA0 | ja | ADC_IN0, COMP1_INM, COMP1_OUT | TIM2_CH1, TSC_G1_IO1, USART2_CTS, TIM2_ETR, USART4_TX |
PA1 | ja | ADC_IN1, COMP1_INP | TIM2_CH2, TSC_G1_IO2, USART2_RTS, TIM21_ETR, USART4_RX |
PA2 | ja | ADC_IN2, COMP2_INM, COMP2_OUT | TIM21_CH1, TIM2_CH3, TSC_G1_IO3, USART2_TX, LPUART1_TX |
PA3 | ja | ADC_IN3, COMP2_INP | TIM21_CH2, TIM2_CH4, TSC_G1_IO4, USART2_RX, LPUART1_RX |
PA4 | ADC_IN4, COMP1_INM, COMP2_INM, DAC_OUT1 | SPI1_NSS, USART2_CK, TIM22_ETR | |
GND |
Stift | Port | PWM | Analog | Digitale Spezialfunktionen |
---|---|---|---|---|
1 | PB15 | SPI2_MOSI, I2S2_SD, RTC_REFIN | ||
2 | PB0 | ja | ADC_IN8, VREF_OUT | EVENTOUT, TIM3_CH3, ADC_IN8, VREF_OUT, TSC_G3_IO2 |
3 | PB14 | ja | SPI2_MISO, I2S2_MCK, RTC_OUT, TSC_G6_IO4, LPUART1_RTS_DE, I2C2_SDA, TIM21_CH2 | |
4 | PB1 | ja | ADC_IN9, VREF_OUT | TIM3_CH4, TSC_G3_IO3, LPUART1_RTS |
5 | PB13 | ja | SPI2_SCK, I2S2_CK, MCO, TSC_G6_IO3, LPUART1_CTS, I2C2_SCL, TIM21_CH1 | |
6 | PB2 | ja | LPTIM1_OUT, TSC_G3_IO4, I2C3_SMBA | |
7 | PB12 | SPI2_NSS, I2S2_WS, LPUART1_RTS_DE, TSC_G6_IO2, I2C2_SMBA, EVENTOUT | ||
8 | PB3 | ja | COMP2_INM | SPI1_SCK, TIM2_CH2, TSC_G5I_O1, EVENTOUT, USART1__RTS_DE, USART5_TX |
9 | PB11 | ja | EVENTOUT, TIM2_CH4, TSC_G6_IO1, LPUART1_RX, I2C2_SDA, LPUART1_TX | |
10 | PB4 | ja | COMP2_INP | SPI1_MISO, TIM3_CH1, TSC_G5_IO2, TIM22_CH1, USART1_CTS, USART5_RX, I2C3_SDA |
11 | PB10 | ja | TIM2_CH3, TSC_SYNC, LPUART1_TX, SPI2_SCK, I2C2_SCL, LPUART1_RX | |
12 | PB5 | ja | COMP2_INP | SPI1_MOSI, LPTIM1_IN1, I2C1_SMBA, TIM3_CH2, TIM22_CH2, USART1_CK, USART5_CK, USART5_R, TS_DE |
13 | PA7 | ja | ADC_IN7, COMP2_OUT | SPI1_MOSI, TIM3_CH2, TSC_G2_IO4, TIM22_CH2, EVENTOUT |
14 | PB6 | COMP2_INP | USART1_TX, I2C1_SCL, LPTIM1_ETR, TSC_G5_IO3 | |
15 | PA6 | ja | ADC_IN6, COMP1_OUT | SPI1_MISO, TIM3_CH1, TSC_G2_IO3, LPUART1_CTS, TIM22_CH1, EVENTOUT |
16 | PB7 | COMP2_INP, VREF_PVD_IN | USART1_RX, I2C1_SDA, LPTIM1_IN2, TSC_G5_IO4, USART4_CTS | |
17 | GND | |||
18 | GND | |||
19 | VDD | |||
20 | VDD |
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 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.
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 (ohne Bauteile) mit Versand nur 10 Euro bezahlt.
Folgende Teile kannst du anfangs weg lassen, um sie später nur bei Bedarf nach zu rüsten:
Eigentlich müsste die Platine 2,1 mm dick sein. Aus Kostengründen habe ich sie jedoch in 1,6 mm herstellen lassen und dann auf der Rückseite des USB Steckers mit einem 10 mm 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.