Compare commits
No commits in common. "b1d66c1e7cdf3027c8eca4d7d639e9ec48acf46f" and "d0b9ab4340826792390e5c4e57cd20f0be27a849" have entirely different histories.
b1d66c1e7c
...
d0b9ab4340
|
@ -1,47 +1,47 @@
|
||||||
# Motor shield fix
|
# Motor shield fix
|
||||||
|
|
||||||
|
1 Install esptool
|
||||||
|
-----------------
|
||||||
### Get motor shield firmware
|
|
||||||
The Wemos motor shield comes with a buggy firmware which has problems with the I2C communication ([see here]([buggy firmware](https://hackaday.io/project/18439-motor-shield-reprogramming))).
|
|
||||||
Luckily, some guys figured out how to update the firmware of the STM32 on the motor shield with a custom one that fixes these issues.
|
|
||||||
|
|
||||||
These are the necessary steps:
|
|
||||||
|
|
||||||
- Install arm compiler:
|
|
||||||
```
|
|
||||||
$ sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa
|
|
||||||
$ sudo apt-get update
|
|
||||||
$ sudo apt-get install gcc-arm-embedded
|
|
||||||
```
|
|
||||||
|
|
||||||
- Build the firmware:
|
|
||||||
|
|
||||||
Get the firmware from: [https://github.com/pbugalski/wemos_motor_shield](https://github.com/pbugalski/wemos_motor_shield)
|
|
||||||
```
|
|
||||||
$ make
|
|
||||||
```
|
|
||||||
-> This creates a file called motor_shield.bin
|
|
||||||
|
|
||||||
### Upload empty firmware to Wemos D1 mini
|
|
||||||
We will program the STM32 on the motor shield using the serial USB connection from the Wemos D1 mini. The D1 mini should
|
|
||||||
just pass through the serial communication to the STM32. For this we need to upload a dummy firmware to the D1 mini.
|
|
||||||
|
|
||||||
- Install esptool
|
|
||||||
The chip on the Wemos D1 mini is a Esp8266. In order to flash programs on this chip we will use esptool by Espressif.
|
The chip on the Wemos D1 mini is a Esp8266. In order to flash programs on this chip we will use esptool by Espressif.
|
||||||
You can install it using pip:
|
You can install it using pip:
|
||||||
```
|
```
|
||||||
$ pip install esptool
|
$ pip install esptool
|
||||||
```
|
```
|
||||||
|
|
||||||
- Make sure the RTS and 3V port of the Wemos motor shield are connected by a wire. Also make sure that the I2C bridge connection on the motor shield is set.
|
2 Update Motor shield firmware
|
||||||
![Motor shield jumper](https://imaginaerraum.de/git/Telos4/RoboRally/raw/branch/master/docs/images/motor_shield_jumper.jpeg)
|
----------------------------
|
||||||
|
The Wemos motor shield comes with a buggy firmware which has problems with the I2C communication ([see here]([buggy firmware](https://hackaday.io/project/18439-motor-shield-reprogramming))).
|
||||||
|
Luckily, some guys figured out how to update the firmware of the STM32 on the motor shield with a custom one that fixes these issues.
|
||||||
|
|
||||||
- Plug the Wemos D1 mini on top of the motor shield and then connect it to your PC using a micro USB cable
|
These are the necessary steps:
|
||||||
|
#### Install arm compiler:
|
||||||
|
```
|
||||||
|
$ sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa
|
||||||
|
$ sudo apt-get update
|
||||||
|
$ sudo apt-get install gcc-arm-embedded
|
||||||
|
```
|
||||||
|
|
||||||
- Compile the sketch below into a .bin file using the Arduino IDE -> `dummy_sketch.ino.d1_mini.bin` or use the one from `bin/dummy_sketch.ino.d1_min.bin`
|
#### Build the firmware:
|
||||||
|
|
||||||
Note: If you compile it yourself make sure you choose the Wemos D1 mini board as target for the build.
|
Get the firmware from: [https://github.com/pbugalski/wemos_motor_shield](https://github.com/pbugalski/wemos_motor_shield)
|
||||||
|
```
|
||||||
|
$ make
|
||||||
|
```
|
||||||
|
-> motor_shield.bin
|
||||||
|
|
||||||
|
#### Upload empty firmware to Wemos D1 mini
|
||||||
|
We will program the STM32 on the motor shield using the serial USB connection from the Wemos D1 mini. The D1 mini should
|
||||||
|
just pass through the serial communication to the STM32. For this we need to upload a dummy firmware to the D1 mini.
|
||||||
|
|
||||||
|
1. Make sure the RTS and 3V port of the Wemos motor shield are connected by a wire.
|
||||||
|
![D1 mini](https://imaginaerraum.de/git/Telos4/RoboRally/raw/branch/master/docs/images/motor_firmware_update_bb.jpg)
|
||||||
|
Also make sure that the I2C bridge connection on the motor shield is set.
|
||||||
|
|
||||||
|
2. Plug the Wemos D1 mini on top of the motor shield and then connect it to your PC using a micro USB cable
|
||||||
|
|
||||||
|
3. Compile the sketch below into a .bin file using the Arduino IDE -> `dummy_sketch.ino.d1_mini.bin` or use the one from `bin/dummy_sketch.ino.d1_min.bin`
|
||||||
|
|
||||||
|
Note: If you you compile it yourself make sure you choose the Wemos D1 mini board as target for the build.
|
||||||
|
|
||||||
```
|
```
|
||||||
void setup() {
|
void setup() {
|
||||||
|
@ -52,16 +52,16 @@ void loop() {
|
||||||
// just some dummy code
|
// just some dummy code
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
- Erase flash on the chip:
|
4. Erase flash on the chip:
|
||||||
```
|
```
|
||||||
$ esptool.py --port /dev/ttyUSB0 erase_flash
|
$ esptool.py --port /dev/ttyUSB0 erase_flash
|
||||||
```
|
```
|
||||||
- Flash the dummy sketch:
|
5. Flash the dummy sketch:
|
||||||
```
|
```
|
||||||
$ esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash --flash_size=detect 0 dummy_sketch.ino.d1_mini.bin/dummy_sketch.ino.d1_mini.bin.ino.d1_mini.bin
|
$ esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash --flash_size=detect 0 dummy_sketch.ino.d1_mini.bin/dummy_sketch.ino.d1_mini.bin.ino.d1_mini.bin
|
||||||
```
|
```
|
||||||
|
|
||||||
### Install stm32flash utility:
|
#### Install stm32flash utility:
|
||||||
To upload a new firmware to the STM32 that is running on the motor shield we need the STM32 flash utility.
|
To upload a new firmware to the STM32 that is running on the motor shield we need the STM32 flash utility.
|
||||||
You can download from: [https://sourceforge.net/projects/stm32flash/files/](https://sourceforge.net/projects/stm32flash/files/)
|
You can download from: [https://sourceforge.net/projects/stm32flash/files/](https://sourceforge.net/projects/stm32flash/files/)
|
||||||
You should then build and install it using the usual:
|
You should then build and install it using the usual:
|
||||||
|
@ -70,7 +70,7 @@ $ make
|
||||||
$ make install
|
$ make install
|
||||||
```
|
```
|
||||||
|
|
||||||
### Connect the motor shield to D1 mini:
|
#### Connect the motor shield to D1 mini:
|
||||||
Use some jumper cables to connect the motor shield and the D1 mini in the following way.
|
Use some jumper cables to connect the motor shield and the D1 mini in the following way.
|
||||||
|
|
||||||
|Wemos D1 mini | Motor shield|
|
|Wemos D1 mini | Motor shield|
|
||||||
|
@ -80,11 +80,13 @@ Use some jumper cables to connect the motor shield and the D1 mini in the follow
|
||||||
|3V | 3V|
|
|3V | 3V|
|
||||||
|GND | GND |
|
|GND | GND |
|
||||||
|
|
||||||
![D1 mini](https://imaginaerraum.de/git/Telos4/RoboRally/raw/branch/master/docs/images/motor_firmware_update_bb.jpg)
|
In addition on the motor shield connect 3V to RTS
|
||||||
|
Also make sure that the I2C bridge connection on the motor shield is set.
|
||||||
|
|
||||||
### Flash the new firmware on the STM32:
|
Then, connect the D1 mini to your PC using a micro USB cable.
|
||||||
- Connect the D1 mini to your PC using a micro USB cable.
|
|
||||||
- Check if you can communicate with the STM32:
|
#### Flash the new firmware on the STM32:
|
||||||
|
1. Check if you can communicate with the STM32:
|
||||||
```
|
```
|
||||||
$ stm32flash /dev/ttyUSB0
|
$ stm32flash /dev/ttyUSB0
|
||||||
```
|
```
|
||||||
|
@ -102,7 +104,7 @@ Device ID : 0x0444 (STM32F03xx4/6)
|
||||||
- System RAM : 3KiB
|
- System RAM : 3KiB
|
||||||
```
|
```
|
||||||
|
|
||||||
- Unlock the shield for flashing:
|
2. Unlock shield:
|
||||||
```
|
```
|
||||||
$ stm32flash -k /dev/ttyUSB0
|
$ stm32flash -k /dev/ttyUSB0
|
||||||
```
|
```
|
||||||
|
@ -126,7 +128,7 @@ Read-UnProtecting flash
|
||||||
Done.
|
Done.
|
||||||
```
|
```
|
||||||
|
|
||||||
- Flash new motor driver:
|
3. Flash new motor driver:
|
||||||
```
|
```
|
||||||
$ stm32flash -f -v -w motor_shield.bin /dev/ttyUSB0
|
$ stm32flash -f -v -w motor_shield.bin /dev/ttyUSB0
|
||||||
```
|
```
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 105 KiB After Width: | Height: | Size: 69 KiB |
Loading…
Reference in New Issue
Block a user