STM32F103C8T6 – Blue Pill, intre Arduino Nano si Arduino Due

Salutare tuturor! Nu ne-am mai citit demult. Sa zicem ca am luat o vacanta… de un an de zile.
Intre timp am mai lucrat la cateva proiecte, insa in ultima vreme mi-a atras atentia o noua platforma de dezvoltare despre care la noi in Romania nu s-a prea auzit deloc.
Este vorba despre STM32. Numele poate nu spune multe, dar pe scurt, este un microcontroler ARM care lucreaza cu instructiuni pe 32 de biti, are o frecventa de 72MHz, functioneaza la tensiunea de 3,3V, are pini care tolereaza 5V si o memorie intre 64 si 128Kb.
Suna bine, nu? Si mai bine suna faptul ca suporta limbajul de programare Arduino, ceea ce il face accesibil pentru amatorii care doresc un procesor bun la un pret imbatabil (2-3$ la prietenii nostri chinezi).

Eu propun sa ne fixam atentia spre STM32F103C8T6[pdf] sau… Blue Pill[wiki].
Desigur ca pe interneturi sunt comparatii intre Arduino Uno sau Nano si STM32F103, dar cred ca nu e tocmai cea mai cinstita comparatie. E adevarat ca arata ca un Arduino Nano, dar se apropie de functionalitati de Arduino Due.
Astfel, am decis sa va pun la dispozitie un printscreen cu tabelele functiilor descrise in cataloagele pentru controlerele de pe Arduino DUE si Blue Pill.
In chenarul albastru sunt detaliile pentru Arduino DUE[pdf], iar in chenarele rosii, detaliile pentru Blue Pill (imi cer scuze pentru alegerea culorilor).

Daca puteti observa, in afara de cantitatile de memorie, numarul de porturi si alte functionalitati mai mult sau mai putin importante pentru utilizatorul amator, cele doua controlere sunt asemanatoare.
Cu toate astea, STM32 a ramas pana recent o varianta mai putin aleasa de amatori, pentru integrarea in diverse proiecte din cauza lipsei suportului software accesibil (care nu necesita doctorat in programare).
Pentru cine doreste si pofteste mai multe informatii despre suportul Arduino pentru STM32, poate consulta pagina STM32duino[forum].
Intre timp, pe meleagurile noastre, la indrumarea mea, [Nicu Florica] si [Vlad Gheorghe] au inceput si ei sa lucreze cu STM32 (Maple), respectiv Blue Pill, cel din urma achizitionand cateva placute de la mine (multumesc Vlad!).
Feedback-ul a fost pozitiv, doar ca Blue Pill si alte placute STM32 de la China au un mic „defect” de fabricatie. Am folosit ghilimele, pentru ca e ceva facut cu buna stiinta.
Scos din folia de protectie in care vine, Blue Pill-ul nu poate fi programat nativ prin portul USB pentru ca rezistorul pull-up (R10 pe placa), are o valoare prea mare (uneori 4k7, alteori 10k). Adica e greu si scump sa pui o rola de rezistori SMD 0603 cu valori intre 1k5 si 1k8 (cod pe rezistor 152 sau 182) astfel incat clientul care cumpara Blue Pill-ul sa-l poata programa direct prin USB-ul disponibil pe placuta.
In fine, pe termen scurt, placuta se poate programa cu un programator Serial, cum a descris Nicu Florica in articolul asta[blog], sau folosind un programator ST Link, ca in tutorialul asta.

Dar eu m-am hotarat sa imi iau inima in dinti si sa fac totusi pasul spre a schimba rezistorul R10 de pe placa si sa incarc bootloaderul STM32duino, pentru a avea o clona Arduino la fel de normala ca un Nano, de exemplu.
Neavand la dispozitie rezistori SMD de valorile necesare, am reusit sa fac rost de cativa rezistori de la Diana de la ArduShop (multumesc, Diana!), dar apoi mi-am dat seama ca am fost neatent si n-am specificat si dimensiunile rezistorilor…

Cei de la Diana sunt ceva mai mari decat rezistorii din seria 0603, plantati pe Blue Pill, asa ca a trebuit sa improvizez.
Pentru asta am folosit doua fire dintr-o panglica de HDD IDE, am lipit rezistorul de 1k5 la un capat, iar firele din celalalt capat le-am lipit cu chin si cu osanda pe Blue Pill.

In concluzie, dupa aproape doua placute cu padurile stricate din cauza temperaturii prea mari a letconului, lipiturile de SMD-uri nu-s pentru mine, deci traiasca robotii pick’n’place.

Dupa finalizarea partii hardware, a urmat partea software.
Am gasit un tutorial[pdf] foarte fain prin care se explica clar si simplu cum se pot incarca sketchuri Arduino de pe IDE pe Blue Pill. Prima metoda descrisa este cea cu adaptor USB-Serial, iar a doua este cea cu bootloader STM32duino via USB nativ.
Nu voi explica felul cum se instaleaza tot kitul de programare STM32 in Arduino IDE (pentru ca a facut-o deja Nicu Florica), ci doar pasii necesari pentru „activarea” programarii prin portul USB de pe Blue Pill.

1. Se descarca STM32 Flasher de la LINKUL ASTA[st.com]. (Atentie! Necesita inregistrarea pe site – dureaza maxim 2 minute) linkul asta!!!
2. Se conecteaza placuta Blue Pill (STM32F103C8T6) la programatorul USB-Serial, respectand conexiunile astfel:

Adaptor USB-Serial  –  Blue Pill
VCC                        –      5V
GND                       –       G
TX                          –    PA10
RX                          –    PA9

Atentie!!! Nu conecta VCC de la adaptorul serial la pinii 3.3V de pe Blue Pill, ca iese fum sfant, si nu o sa miroasa nici a smirna si nici a tamaie, deci ai grija!
3. Se pune jumperul galben de pe partea cu pinii, pe pozitia 1.

4.  Deschide aplicatia flash_loader_demo_v2.8.0.exe, ca administrator, din arhiva descarcata la punctul 1. La finalul instalarii ar trebui sa arate cam asa…
Trebuie selectat portul la care e alocat programatorul USB-Serial. La mine, laptopul a alocat COM18. BaudRate trebuie sa fie 115200, iar restul ramane nemodificat. Se apasa Next.
5. Daca totul e in regula si Blue Pill-ul este recunoscut de catre program, va arata in felul asta.
Trebuie sa retinem valoarea inscrisa la Flash Size. La Blue Pill este de 64KB. La alte versiuni de STM32F103 poate sa fie de 128KB. Se apasa Next.
6. Ne va aparea urmatoarea pagina.
Se verifica daca la target avem valoarea memoriei flash detectata la pasul anterior. Se apasa Next.
7. Se descarca fisierul binar cu bootloaderul, care se gaseste la ACEST LINK[GitHub] si se salveaza intr-o locatie de pe HDD (de exemplu, pe Desktop)
8. Se alege optiunea Download to device si se apasa butonul din dreapta. Se alege fisierul .bin descarcat la pasul 7 si se apasa Next.
9. Felicitari. Tocmai ai incarcat bootloaderul STM32duino pe Blue Pill STM32F103C8T6. Acum treci la frigider si ia-ti o bere, ca ai transpirat destul.
10. Pentru a finaliza intreaga operatiune, din arhiva care se gaseste AICI[mediafire], parola: techshopbd , din folderul drivers->win, se ruleaza ca administrator fisierele install_drivers.bat si install_STM_COM_drivers.bat. Si gata. Ar trebui sa functioneze.

Dupa tot balciul asta, vom deconecta frumos Blue Pillu’ de la adaptorul USB-Serial, jumperul acela despre care vorbeam in pasul 3, il montam inapoi pe pozitia 0 si vom conecta cablul micro USB direct la placuta. Daca ai iPhone si nu ai cabluri micro USB prin casa, ca saracii cu telefoane Android, du-te pana la supermarket si vezi la raionul de electrice (ar trebui sa fie intre intrare si raionul de mezeluri, mici refrigerati, masline, etc. Cel putin la Kaufland cam asa e. No pun intended 😀 ).
Asa… Acum deschidem frumos Arduino IDE, selectam:
File -> Examples -> 01. Basics -> Blink.
In sketch schimbam LED_BUILTIN cu PC13, pentru ca pe acel port este montat ledul de pe Blue Pill.
Trebuie retinut ca LOW inseamna led aprins, iar HIGH inseamna led stins.
Dupa modificarile programului, ne asiguram ca avem setarile facute ca in imaginea de mai jos.
Si apasam Upload (Ctrl+Shift+U), apoi urmarim in partea de jos a programului Arduino IDE cand se schimba textul din Compiling sketch… in Uploading… si apasam butonul Reset de pe Blue Pill.

Rezultatul in casuta de debugging ar trebui sa arate in felul urmator, daca totul e in regula.

Found it!

Opening USB Device 0x1eaf:0x0003...
Found Runtime: [0x1eaf:0x0003] devnum=1, cfg=0, intf=0, alt=2, name="STM32duino bootloader v1.0 Upload to Flash 0x8002000"
Setting Configuration 1...
Claiming USB DFU Interface...
Setting Alternate Setting ...
Determining device status: state = dfuIDLE, status = 0
dfuIDLE, continuing
Transfer Size = 0x0400
bytes_per_hash=260
Starting download: [##################################################] finished!
state(8) = dfuMANIFEST-WAIT-RESET, status(0) = No error condition is present
Done!

Asta e tot. Daca nu intelegi ceva, lasa un comentariu aici sau pe facebook. Ca bonus, am pus si o diagrama cu pinii, ca sa intelegi cum si la ce poti folosi Blue Pillu’. Ai grija cum folosesti placuta, pentru ca nu suporta 5v pe toti pinii.
Spor la programat!

Anunțuri

Lasă un răspuns

Completează mai jos detaliile tale sau dă clic pe un icon pentru a te autentifica:

Logo WordPress.com

Comentezi folosind contul tău WordPress.com. Dezautentificare / Schimbă )

Poză Twitter

Comentezi folosind contul tău Twitter. Dezautentificare / Schimbă )

Fotografie Facebook

Comentezi folosind contul tău Facebook. Dezautentificare / Schimbă )

Fotografie Google+

Comentezi folosind contul tău Google+. Dezautentificare / Schimbă )

Conectare la %s