Constat
Vous aimez l’électronique grand public et vous maitrisez les arduino mais vous finissez toujours l’un des constats suivants :
– relativement cher (env. 2,5€)
– pas assez de mémoire (même si ce n’est pas un concours de celui qui a le plus gros … code source)
– pas assez de puissance (et oui, des fois 16MHz ça ne suffit pas)
– pas assez de PIN à utiliser
LA solution 🙂
le STM32F103C8T6 (controlleur de chez ST Micro) monté sur une petite board chinoise portant le doux nom de bluepill que l’on peut trouver aux alentours de 1,75€ sur aliexpress.
Ce microcontrolleur est juste un monstre comme le montre sa doc technique dont voici les grandes lignes:
- ARM® 32-bit Cortex® -M3 CPU Core
- 72 MHz maximum frequency,1.25 DMIPS/MHz (Dhrystone 2.1) performance at 0 wait state memory access
- Single-cycle multiplication and hardware division
- Memories
- 64 Kbytes of Flash memory
- 20 Kbytes of SRAM
- 2 x 12-bit, 1 μs A/D converters (up to 16 channels)
- Conversion range: 0 to 3.6 V
- Dual-sample and hold capability
- Temperature sensor
- DMA
- 7-channel DMA controller
- Peripherals supported: timers, ADC, SPIs, I2 Cs and USARTs
- fast I/O ports
- 37 I/Os, all mappable on 16 external interrupt vectors and almost all 5 V-tolerant
- Debug mode
- Serial wire debug (SWD) & JTAG interfaces
- 7 timers
- Three 16-bit timers, each with up to 4 IC/OC/PWM or pulse counter and quadrature (incremental) encoder input
- 16-bit, motor control PWM timer with dead-time generation and emergency stop
- 2 watchdog timers (Independent and Window)
- SysTick timer 24-bit downcounter
- Up to 9 communication interfaces
- Up to 2 x I2 C interfaces (SMBus/PMBus)
- Up to 3 USARTs (ISO 7816 interface, LIN, IrDA capability, modem control)
- Up to 2 SPIs (18 Mbit/s)
- CAN interface (2.0B Active)
- USB 2.0 full-speed interface
Comment on s’en sert ?
Arf, oui ce n’est pas un arduino. C’est vrai qu’il ne contient pas de bootloader par défaut. Il ne peut être programmé qu’en mode série malgré le fait qu’il dispose d’un port USB (cherchez l’erreur).
Heureusement, on peut lui charger un bootloader de maple mini et le tour est joué.
Flashage du bootloader
Voici les étapes à suivre:
- Installer l’utilitaire flashage de chez ST
- Récupérer le bootloader
- Mettre le jumper BOOT0 du bluepill sur 1
- Connecter le bluepill au PC via un adaptateur USB-Série
RX -> A9
TX -> A10
GND -> GND
VCC -> 5V - Flasher le bluepill avec le bootloader (en sélectionnant le bon port COM)
- Remettre le jumper BOOT0 sur 0 et redémarrer le bluepill. La led ROUGE (PC13) doit clignoter rapidement car elle n’a pas de programme à exécuter.
C’est fini. Maintenant quand on branche le bluepill via USB il apparaît dans le device manager de Windows comme :
- un maple mini en DFU si il ne contient pas de code
- un port COM « maple Serial » si il a déjà du code arduino chargé
Utilisation avec le bootloader
Maintenant qu’il a un bootloader le bestiau, on s’en sert comment ?
- On le branche en USB
- On lance son arduino IDE
- On ajoute le support des cartes ARM : « Arduino SAM Boards »
- Dans le menu Outils, on choisi la carte « Generic ST32F103C series » ainsi que le port COM ad-hoc
Et on programme comme d’habitude. Génial, non ?
Ressources:
bonjour,
je recherche désespérément un programme pour le STM32F103C8T6 avec un MPU6050 pour réaliser un drone équipé d’un gyroscope.
merci
pascal
J’aimeJ’aime
Bonjour Pascal. Je ne suis pas un en développement. Venant du monde de l’arduino, j’utilise arduino ide avec le module pour stm32. Ça me permet de profiter d’une partie des librairies arduino. Du coup, je t’invite à regarder sur ce site. Ils explique ment comment faire communiquer le mpu avec un arduino en i2c: https://playground.arduino.cc/Main/MPU-6050
Je pense que ce doit être facilement adaptable, voire utilisable tel quel.
J’aimeJ’aime