wemos motor shield firmware update

Prima di usare la motor shield per WeMos è necessario eseguire un  wemos motor shield firmware update.

Fonte: wiki wemos

In pratica dopo aver acquistato la versione 1.0 della motor shield ho provato uno degli sketch di esempio che viene fornito con la libreria di controllo e mi sono accorto che i motori non rispondevano ad alcun comando, non ricevevano alcun segnale per muoversi.

Ho riletto più volte la wiki del produttore in cerca di qualche info sull’inizializzazione della scheda ed ho trovato molte info utili come:

oltre alla libreria usata per controllare la scheda e testare la sheld.

Purtroppo la wemos motor che ti mostro è la versione 1.0 ed è già stata rilasciata la versione 2.0 che presenta alcune migliorie come, ad esempio:

  • la possibilità di montare dei connettori dotati di viti per l’alimentazione esterna e per i motori;
  • l’adesione allo standard LOLIN della WeMos;
  • il controllo dello StanBy solo in I2C, nella versione 1.0 puoi decidere se usare un pin o l’IIC;
  • la mancanza della gestione dell’indirizzamento i2C, che nella vesione 2.0 è fisso;
  • la presenza del connettore JTAG;

ma nulla in merito al mancato funzionamento della versione 1.0.

Verifica dell’indirizzo I2C

Usa lo sketch per la scansione degli indirizzi I2C, pubblicato e descritto in questo articolo, per comprendere se fosse un problema di indirizzo.

Scoprirai, probabilmente, che la shield non viene riconosciuta con nessuno degli indirizzi previsti ( 0x30, 0x2D, 0x2E, 0x2F ) ed apparentemente non funziona.

A questo punto il dubbio, iniziale, in merito alla presenza del link al firmware da caricare sull’STM32F030F4 possa servire ad eseguire un wemos motor shield firmware update è dipanato ed è certo che in qualche modo sarà necessario caricare il nuovo firmware sulla shield.

Wemos motor shield firmware update

L’update del firmware puoi eseguirlo servendoti di una interfaccia USB to Serial come questa:

wemos motor shield firmware update usb serial

dotato di almeno 4 contatti: Tx,Rx,Vcc e Gnd.

In particolare è necessario che l’adattatore sia funzionante a 3,3v in quanto l’STM32 lavora con tale tensione di alimentazione:

wemos motor shield firmware update 3v3

quello a mia disposizione dispone di un selettore a ponticello che permette di utilizzarlo sia a 5v sia 3,3v.

Ho cercato poi in internet se qualcun’altro avesse eseguito questa operazione ed ho trovato un articolo molto interessante: 18439-motor-shield-reprogramming in cui è descritto passo passo sia la procedura per compilare il firmware, ottenendo un .bin, sia quella di wemos motor shield firmware update.

In modo particolare, e molto utile, scoprirai che esiste un firmware migliorato scritto da pbugalski e di cui è disponibile una versione già compilata wemos_motor.bin

Ho provato ed utilizzato tale firmware e la procedura descritta.

Eseguire l’update del firmware

Per eseguire il wemos motor shield firmware update è in primo luogo necessario collegare il pin RTS ai 3,3v come in figura:

wemos motor shield firmware update connect

io ho utilizzato un filo in rame attorcigliato tra i due fori/contatti.

Poi collegare l’adattatore come descritto:

Wemos Motor Shield Adattatore USB-Serial
3v3 Vcc o Vselelected ( 3,3v )
Gnd Gnd
D2 Tx
D1 Rx

Ti occorre ora il comando per l’upload:

stm32flash

che ho installato sulla mia debian 9 con un semplice 

apt-get install stm32flash

adesso che hai tutti gli strumenti ti basta connettere la board all’adattatore USB-Seriale e quest’ultimo al computer.

Quindi esegui il comando:

stm32flash /dev/ttyUSB0

avendo cura di verificare che la scheda sia correttamente visualizzata come /dev/ttyUSB0, in caso fosse una ttyUSBx ( in cui x è un numero successivo a 0 ) dovrai sostituire nel comando il valore corretto del device.

Se la scheda è stata correttamente visualizzata vedrai una schermata come la seguente

wemos motor shield firmware update show device

in cui il wemos motor shield firmware update ti mostra le informazioni relative all’STM32F03xx4/6.

Puoi procedere prima a sbloccare la motor shield con il comando:

stm32flash /dev/ttyUSB0 -k

il cui risultato è simile al seguente:

wemos motor shield firmware update unlock I

e successivamente a mettere la flash in modalità di scrittura abilitandola con il comando:

stm32flash /dev/ttyUSB0 -u

che ti mostra un messaggio simile al seguente:

wemos motor shield firmware update write umprocted

in cui noti la frase: Write-unprotecting flash.

Procedi quindi ad eseguire l’upload del firmare aggiornato usando il comando:

stm32flash /dev/ttyUSB0 -v -w motor_shield.bin

a cui passi come ultimo parametro il file .bin che ha scaricato o compilato, il risultato è il seguente:

wemos motor shield firmware update command

la wemos motor shield firmware update è conclusa e puoi procedere a togliere tutti i ponticelli ed il collegamento con l’adattatore USB-Seriale.

Test I2C della Wemos Motor Shield

il test lo puoi eseguire collegando la wemos motor shield ad una scheda wemos su cui hai caricato lo sketch di riconoscimento I2C ed otterrai un messaggio simile al seguente:

wemos motor shield firmware update device i2c scanned

sul monitor seriale dell’IDE Arduino.

Finalmente la shield è pronta per essere utilizzata nei tuoi progetti e riconosciuta sull’indirizzo I2C 0x30 come default.

Prima di inserire un commento, per favore, leggi il regolamento

Permanent link to this article: http://www.mauroalfieri.it/elettronica/wemos-motor-shield-firmware-update.html

8 comments

Skip to comment form

    • zoomx on 26 Aprile 2019 at 20:18
    • Reply

    Ho preso da poco questo shield anche io, tempo permettendo vedrò se c’è già un firmware o se andra installato come hai fatto tu.
    Dallo schema elettrico vedo che il pin che sulla shield è segnato come RTS in realtà è il boot0, come si legge nello schema elettrico, messo a 3.3V abilita il bootloader seriale che su molti STM32 sta su ROM.

    1. Ottimo Zoomx,
      fammi sapere se la tua versione presenta già un firmware.

    • zoomx on 22 Maggio 2019 at 10:58
    • Reply

    Scusa il lungo tempo passato ma ho avuto prima un problema: ho saldato tutti i pin al contrario! Quindi ho perso tempo per dissaldarli e rimontarli, notando che nel modo giusto il chip va sotto ma soprattutto vanno sotto anche parte delle scritte. Poi ho preso anche una ESP32-CAM e sono stato distratto da quella.
    Tornando a noi. Carico il programma I2Cscanner e non trova nulla. Poiché l’ESP8266 non ha I2C hardware ne ho realizzato una versione dichiarando esplicitamente i pin, l’ho provata e non ho ottenuto nulla.
    Allora ho seguito la tua guida cambiando alcune cose. Innanzitutto controllando lo schema ho visto che i pin T e R sono proprio quelli della seriale dell’STM32 per cui ho usato quelli invece di D1 e D2
    Per il flash, avendo Windows, ho usato l’STFlash loader demonstrator (è richiesta l’iscrizione anche se gratuita)
    https://my.st.com/content/my_st_com/en/products/development-tools/software-development-tools/stm32-software-development-tools/stm32-programmers/flasher-stm32.html
    Io ho la versione 2.7.0 che non ha riconosciuto la MCU per cui ho scaricato la 2.8.0 che è l’ultima versione che infatti aggiunge il supporto per altre MCU ma nonostante questo non sono riuscito ad andare oltre.
    Poiché il mio adattatore USB-seriale va si a 3.3V ma non fornisce corrente a 3.3V (solo 5) ho provato alimentandolo montato sulla Wemos.
    Non ha funzionato.
    Ho quindi usato un adattatore per ESP01 che all’inizio non ha funzionato, poi ho cambiato porta USB e ha funzionato al primo colpo. PRobabilmente la colpa è del cavo di prolunga USB perché il PC sta sotto al tavolo.
    Ricaricato il programma I2Cscanner trovo il dispositivo all’indirizzo 0x30.
    Che dire, se non ci fosse stato il tuo post sarei impazzito un po’, soprattutto per trovare un firmware già pronto.
    Ma si apre la porta a possibili modificazioni.

    1. Grazie Zoomx per aver condiviso la tua esperienza in merito all’update del firmware da Windows.

    • zoomx on 22 Maggio 2019 at 11:17
    • Reply

    Per scrupolo avevo scaricato il contenuto della flash: tutti FF!

    1. Ottima intuizione, anche io l’ho fatto per sicurezza prima di provare quanto descritto nel tutorial.

    • zoomx on 22 Maggio 2019 at 11:39
    • Reply

    Qui
    https://github.com/thomasfredericks/wemos_motor_shield
    viene spiegato come usare la stessa wemos D1 mini come adattatore USB-seriale.

    1. Ciao Zoomx,
      grazie per la condivisione del link, potrà essere utile a molti

Lascia un commento

Your email address will not be published.

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.