SmartKnob Firmware

Wuzi

December 2021, 24

13 min read

SmartKnob Firmware

Getting Started

Open the smartknob/firmware directory with VS Code. (Just open the firmware directory, not the whole smartknob directory)

Install VS Code Extensions

  • Better C++ Syntax
  • C/C++
  • C/C++ Extension Pack
  • C/C++ Themes
  • CMake
  • CMake Tools
  • Code Runner
  • Doxygen Documentation Generator
  • PlatformIO IDE
  • XML Tools

Flush Firmware

If everything is OK. You can see the following three icons in the toolbar under VS Code.

From left to right: Compile, Write, Serial Monitor.

Compile

Click Position 1 to start compile with following output:

1
* 正在执行任务: C:\Users\piercebrands\.platformio\penv\Scripts\platformio.exe run
2
3
Processing view (board: esp32doit-devkit-v1; platform: espressif32@3.4; framework: arduino)
4
-------------------------------------------------------------------------------------------------------------------------------------------
5
Tool Manager: Installing platformio/toolchain-xtensa32 @ ~2.50200.0
6
Downloading [####################################] 100%
7
Unpacking [####################################] 100%
8
Tool Manager: toolchain-xtensa32@2.50200.97 has been installed!
9
Tool Manager: Installing platformio/framework-arduinoespressif32 @ ~3.10006.0
10
Downloading [####################################] 100%
11
Unpacking [####################################] 100%
12
Tool Manager: framework-arduinoespressif32@3.10006.210326 has been installed!
13
Tool Manager: Installing platformio/tool-esptoolpy @ ~1.30100.0
14
Downloading [####################################] 100%
15
Unpacking [####################################] 100%
16
Tool Manager: tool-esptoolpy@1.30100.210531 has been installed!
17
Library Manager: Installing askuric/Simple FOC @ 2.2.0
18
Downloading [####################################] 100%
19
Unpacking [####################################] 100%
20
Library Manager: Simple FOC@2.2.0 has been installed!
21
Library Manager: Installing infineon/TLV493D-Magnetic-Sensor @ 1.0.3
22
Downloading [####################################] 100%
23
Unpacking [####################################] 100%
24
Library Manager: TLV493D-Magnetic-Sensor@1.0.3 has been installed!
25
Library Manager: Installing bxparks/AceButton @ 1.9.1
26
Downloading [####################################] 100%
27
Unpacking [####################################] 100%
28
Library Manager: AceButton@1.9.1 has been installed!
29
Library Manager: Installing bodmer/TFT_eSPI @ 2.4.25
30
Downloading [####################################] 100%
31
Unpacking [####################################] 100%
32
Library Manager: TFT_eSPI@2.4.25 has been installed!
33
Library Manager: Installing fastled/FastLED @ 3.5.0
34
Downloading [####################################] 100%
35
Unpacking [####################################] 100%
36
Library Manager: FastLED@3.5.0 has been installed!
37
Library Manager: Installing bogde/HX711 @ 0.7.5
38
Downloading [####################################] 100%
39
Unpacking [####################################] 100%
40
Library Manager: HX711@0.7.5 has been installed!
41
Library Manager: Installing adafruit/Adafruit VEML7700 Library @ 1.1.1
42
Downloading [####################################] 100%
43
Unpacking [####################################] 100%
44
Library Manager: Adafruit VEML7700 Library@1.1.1 has been installed!
45
Library Manager: Resolving dependencies...
46
Library Manager: Installing Adafruit BusIO
47
Downloading [####################################] 100%
48
Unpacking [####################################] 100%
49
Library Manager: Adafruit BusIO@1.13.2 has been installed!
50
Tool Manager: Installing platformio/tool-scons @ ~4.40400.0
51
Downloading [####################################] 100%
52
Unpacking [####################################] 100%
53
Tool Manager: tool-scons@4.40400.0 has been installed!
54
Verbose mode can be enabled via `-v, --verbose` option
55
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/esp32doit-devkit-v1.html
56
PLATFORM: Espressif 32 (3.4.0) > DOIT ESP32 DEVKIT V1
57
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
58
DEBUG: Current (esp-prog) External (esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
59
PACKAGES:
60
- framework-arduinoespressif32 @ 3.10006.210326 (1.0.6)
61
- tool-esptoolpy @ 1.30100.210531 (3.1.0)
62
- toolchain-xtensa32 @ 2.50200.97 (5.2.0)
63
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
64
LDF Modes: Finder ~ chain, Compatibility ~ soft
65
Found 37 compatible libraries
66
Scanning dependencies...
67
Dependency Graph
68
|-- Simple FOC @ 2.2.0
69
| |-- Wire @ 1.0.1
70
| |-- SPI @ 1.0
71
|-- TLV493D-Magnetic-Sensor @ 1.0.3
72
| |-- Wire @ 1.0.1
73
|-- AceButton @ 1.9.1
74
|-- TFT_eSPI @ 2.4.25
75
| |-- SPI @ 1.0
76
| |-- SPIFFS @ 1.0
77
| | |-- FS @ 1.0
78
| |-- FS @ 1.0
79
|-- FastLED @ 3.5.0
80
| |-- SPI @ 1.0
81
|-- HX711 @ 0.7.5
82
|-- Adafruit VEML7700 Library @ 1.1.1
83
| |-- Adafruit BusIO @ 1.13.2
84
| | |-- Wire @ 1.0.1
85
| | |-- SPI @ 1.0
86
| |-- Wire @ 1.0.1
87
| |-- SPI @ 1.0
88
Building in release mode
89
Compiling .pio\build\view\libcd9\FastLED\FastLED.cpp.o
90
Compiling .pio\build\view\libcd9\FastLED\bitswap.cpp.o
91
Compiling .pio\build\view\libcd9\FastLED\colorpalettes.cpp.o
92
Compiling .pio\build\view\libcd9\FastLED\colorutils.cpp.o
93
Compiling .pio\build\view\libcd9\FastLED\hsv2rgb.cpp.o
94
Compiling .pio\build\view\libcd9\FastLED\lib8tion.cpp.o
95
Compiling .pio\build\view\libcd9\FastLED\noise.cpp.o
96
Compiling .pio\build\view\libcd9\FastLED\platforms.cpp.o
97
Compiling .pio\build\view\libcd9\FastLED\platforms\esp\32\clockless_rmt_esp32.cpp.o
98
Compiling .pio\build\view\libcd9\FastLED\power_mgt.cpp.o
99
Compiling .pio\build\view\libcd9\FastLED\wiring.cpp.o
100
Compiling .pio\build\view\src\display_task.cpp.o
101
Compiling .pio\build\view\src\interface_task.cpp.o
102
Compiling .pio\build\view\src\main.cpp.o
103
Compiling .pio\build\view\src\motor_task.cpp.o
104
Compiling .pio\build\view\src\mt6701_sensor.cpp.o
105
Compiling .pio\build\view\src\tlv_sensor.cpp.o
106
Generating partitions .pio\build\view\partitions.bin
107
Compiling .pio\build\view\libb39\Wire\Wire.cpp.o
108
Compiling .pio\build\view\lib8f9\SPI\SPI.cpp.o
109
Compiling .pio\build\view\lib44f\Simple FOC\BLDCMotor.cpp.o
110
Compiling .pio\build\view\lib44f\Simple FOC\StepperMotor.cpp.o
111
Compiling .pio\build\view\lib44f\Simple FOC\common\base_classes\CurrentSense.cpp.o
112
Compiling .pio\build\view\lib44f\Simple FOC\common\base_classes\FOCMotor.cpp.o
113
Compiling .pio\build\view\lib44f\Simple FOC\common\base_classes\Sensor.cpp.o
114
Compiling .pio\build\view\lib44f\Simple FOC\common\foc_utils.cpp.o
115
Archiving .pio\build\view\lib8f9\libSPI.a
116
Indexing .pio\build\view\lib8f9\libSPI.a
117
Compiling .pio\build\view\lib44f\Simple FOC\common\lowpass_filter.cpp.o
118
.pio/libdeps/view/Simple FOC/src/common/foc_utils.cpp: In function 'float _sqrtApprox(float)':
119
.pio/libdeps/view/Simple FOC/src/common/foc_utils.cpp:68:21: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
120
i = * ( long * ) &y;
121
^
122
.pio/libdeps/view/Simple FOC/src/common/foc_utils.cpp:70:22: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
123
y = * ( float * ) &i;
124
^
125
src/motor_task.cpp: In member function 'void MotorTask::run()':
126
src/motor_task.cpp:280:37: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]
127
command.add('M', &doMotor, "foo");
128
^
129
src/motor_task.cpp:296:14: warning: unused variable 'last_debug' [-Wunused-variable]
130
uint32_t last_debug = 0;
131
^
132
src/mt6701_sensor.cpp: In member function 'virtual float MT6701Sensor::getSensorAngle()':
133
src/mt6701_sensor.cpp:94:15: warning: unused variable 'field_status' [-Wunused-variable]
134
uint8_t field_status = (spi_32 >> 6) & 0x3;
135
^
136
src/mt6701_sensor.cpp:95:15: warning: unused variable 'push_status' [-Wunused-variable]
137
uint8_t push_status = (spi_32 >> 8) & 0x1;
138
^
139
src/mt6701_sensor.cpp:96:15: warning: unused variable 'loss_status' [-Wunused-variable]
140
uint8_t loss_status = (spi_32 >> 9) & 0x1;
141
^
142
.pio/libdeps/view/FastLED/src/platforms/esp/32/clockless_rmt_esp32.cpp: In static member function 'static void ESP32RMTController::init(gpio_num_t)':
143
.pio/libdeps/view/FastLED/src/platforms/esp/32/clockless_rmt_esp32.cpp:111:15: warning: variable 'espErr' set but not used [-Wunused-but-set-variable]
144
esp_err_t espErr = ESP_OK;
145
^
146
.pio/libdeps/view/FastLED/src/platforms/esp/32/clockless_rmt_esp32.cpp: In member function 'void ESP32RMTController::startOnChannel(int)':
147
.pio/libdeps/view/FastLED/src/platforms/esp/32/clockless_rmt_esp32.cpp:239:15: warning: variable 'espErr' set but not used [-Wunused-but-set-variable]
148
esp_err_t espErr = ESP_OK;
149
^
150
Compiling .pio\build\view\lib44f\Simple FOC\common\pid.cpp.o
151
Compiling .pio\build\view\lib44f\Simple FOC\common\time_utils.cpp.o
152
Compiling .pio\build\view\lib44f\Simple FOC\communication\Commander.cpp.o
153
Compiling .pio\build\view\lib44f\Simple FOC\communication\StepDirListener.cpp.o
154
Archiving .pio\build\view\libb39\libWire.a
155
In file included from .pio/libdeps/view/FastLED/src/FastLED.h:67:0,
156
from src/interface_task.cpp:4:
157
.pio/libdeps/view/FastLED/src/fastspi.h:145:23: note: #pragma message: No hardware SPI pins defined. All SPI access will default to bitbanged output
158
# pragma message "No hardware SPI pins defined. All SPI access will default to bitbanged output"
159
Compiling .pio\build\view\lib44f\Simple FOC\current_sense\InlineCurrentSense.cpp.o
160
^
161
Compiling .pio\build\view\lib44f\Simple FOC\current_sense\LowsideCurrentSense.cpp.o
162
Compiling .pio\build\view\lib44f\Simple FOC\current_sense\hardware_specific\atmega_mcu.cpp.o
163
Indexing .pio\build\view\libb39\libWire.a
164
Compiling .pio\build\view\lib44f\Simple FOC\current_sense\hardware_specific\due_mcu.cpp.o
165
Compiling .pio\build\view\lib44f\Simple FOC\current_sense\hardware_specific\esp32_adc_driver.cpp.o
166
Compiling .pio\build\view\lib44f\Simple FOC\current_sense\hardware_specific\esp32_mcu.cpp.o
167
Compiling .pio\build\view\lib44f\Simple FOC\current_sense\hardware_specific\generic_mcu.cpp.o
168
Compiling .pio\build\view\lib44f\Simple FOC\current_sense\hardware_specific\samd21_mcu.cpp.o
169
Compiling .pio\build\view\lib44f\Simple FOC\current_sense\hardware_specific\samd_mcu.cpp.o
170
Compiling .pio\build\view\lib44f\Simple FOC\current_sense\hardware_specific\stm32_mcu.cpp.o
171
Compiling .pio\build\view\lib44f\Simple FOC\current_sense\hardware_specific\stm32g4_hal.cpp.o
172
Compiling .pio\build\view\lib44f\Simple FOC\current_sense\hardware_specific\stm32g4_mcu.cpp.o
173
Compiling .pio\build\view\lib44f\Simple FOC\current_sense\hardware_specific\teensy_mcu.cpp.o
174
Compiling .pio\build\view\lib44f\Simple FOC\drivers\BLDCDriver3PWM.cpp.o
175
Compiling .pio\build\view\lib44f\Simple FOC\drivers\BLDCDriver6PWM.cpp.o
176
src/display_task.cpp: In member function 'void DisplayTask::run()':
177
src/display_task.cpp:106:13: warning: unused variable 'pointer_center_x' [-Wunused-variable]
178
int32_t pointer_center_x = TFT_WIDTH / 2;
179
^
180
src/display_task.cpp:107:13: warning: unused variable 'pointer_center_y' [-Wunused-variable]
181
int32_t pointer_center_y = TFT_HEIGHT / 2;
182
^
183
src/display_task.cpp:108:13: warning: unused variable 'pointer_length_short' [-Wunused-variable]
184
int32_t pointer_length_short = 10;
185
^
186
src/display_task.cpp:109:13: warning: unused variable 'pointer_length_long' [-Wunused-variable]
187
int32_t pointer_length_long = TFT_WIDTH / 2 - 5;
188
^
189
Compiling .pio\build\view\lib44f\Simple FOC\drivers\StepperDriver2PWM.cpp.o
190
Compiling .pio\build\view\lib44f\Simple FOC\drivers\StepperDriver4PWM.cpp.o
191
Compiling .pio\build\view\lib44f\Simple FOC\drivers\hardware_specific\atmega2560_mcu.cpp.o
192
src/display_task.cpp: At global scope:
193
src/display_task.cpp:22:13: warning: 'void HSV_to_RGB(float, float, float, uint8_t*, uint8_t*, uint8_t*)' defined but not used [-Wunused-function]
194
static void HSV_to_RGB(float h, float s, float v, uint8_t *r, uint8_t *g, uint8_t *b)
195
^
196
Compiling .pio\build\view\lib44f\Simple FOC\drivers\hardware_specific\atmega328_mcu.cpp.o
197
Compiling .pio\build\view\lib44f\Simple FOC\drivers\hardware_specific\atmega32u4_mcu.cpp.o
198
Compiling .pio\build\view\lib44f\Simple FOC\drivers\hardware_specific\due_mcu.cpp.o
199
Compiling .pio\build\view\lib44f\Simple FOC\drivers\hardware_specific\esp32_mcu.cpp.o
200
Compiling .pio\build\view\lib44f\Simple FOC\drivers\hardware_specific\esp8266_mcu.cpp.o
201
Compiling .pio\build\view\lib44f\Simple FOC\drivers\hardware_specific\generic_mcu.cpp.o
202
Compiling .pio\build\view\lib44f\Simple FOC\drivers\hardware_specific\portenta_h7_mcu.cpp.o
203
Compiling .pio\build\view\lib44f\Simple FOC\drivers\hardware_specific\rp2040_mcu.cpp.o
204
Compiling .pio\build\view\lib44f\Simple FOC\drivers\hardware_specific\samd21_mcu.cpp.o
205
Compiling .pio\build\view\lib44f\Simple FOC\drivers\hardware_specific\samd51_mcu.cpp.o
206
Compiling .pio\build\view\lib44f\Simple FOC\drivers\hardware_specific\samd_mcu.cpp.o
207
Compiling .pio\build\view\lib44f\Simple FOC\drivers\hardware_specific\stm32_mcu.cpp.o
208
.pio/libdeps/view/Simple FOC/src/current_sense/hardware_specific/esp32_mcu.cpp: In function 'float _readADCVoltageLowSide(int)':
209
.pio/libdeps/view/Simple FOC/src/current_sense/hardware_specific/esp32_mcu.cpp:60:18: warning: 'raw_adc' may be used uninitialized in this
210
function [-Wmaybe-uninitialized]
211
return raw_adc * _ADC_CONV;
212
^
213
Compiling .pio\build\view\lib44f\Simple FOC\drivers\hardware_specific\teensy_mcu.cpp.o
214
Compiling .pio\build\view\lib44f\Simple FOC\sensors\Encoder.cpp.o
215
Compiling .pio\build\view\lib44f\Simple FOC\sensors\HallSensor.cpp.o
216
Compiling .pio\build\view\lib44f\Simple FOC\sensors\MagneticSensorAnalog.cpp.o
217
Compiling .pio\build\view\lib44f\Simple FOC\sensors\MagneticSensorI2C.cpp.o
218
Compiling .pio\build\view\lib44f\Simple FOC\sensors\MagneticSensorPWM.cpp.o
219
Compiling .pio\build\view\lib44f\Simple FOC\sensors\MagneticSensorSPI.cpp.o
220
Compiling .pio\build\view\lib1b5\tlv\Tlv493d.cpp.o
221
Compiling .pio\build\view\lib1b5\tlv\util\BusInterface.cpp.o
222
Compiling .pio\build\view\lib1b5\tlv\util\RegMask.cpp.o
223
Compiling .pio\build\view\lib02a\AceButton\ace_button\AceButton.cpp.o
224
Compiling .pio\build\view\lib02a\AceButton\ace_button\ButtonConfig.cpp.o
225
Compiling .pio\build\view\lib02a\AceButton\ace_button\EncodedButtonConfig.cpp.o
226
Compiling .pio\build\view\lib02a\AceButton\ace_button\LadderButtonConfig.cpp.o
227
Compiling .pio\build\view\lib02a\AceButton\ace_button\testing\EventTracker.cpp.o
228
Compiling .pio\build\view\lib65c\FS\FS.cpp.o
229
Compiling .pio\build\view\lib65c\FS\vfs_api.cpp.o
230
Compiling .pio\build\view\lib725\SPIFFS\SPIFFS.cpp.o
231
Compiling .pio\build\view\lib067\TFT_eSPI\TFT_eSPI.cpp.o
232
Compiling .pio\build\view\libbf2\HX711\HX711.cpp.o
233
Compiling .pio\build\view\liba5e\Adafruit BusIO\Adafruit_BusIO_Register.cpp.o
234
Compiling .pio\build\view\liba5e\Adafruit BusIO\Adafruit_I2CDevice.cpp.o
235
Compiling .pio\build\view\liba5e\Adafruit BusIO\Adafruit_SPIDevice.cpp.o
236
Compiling .pio\build\view\lib905\Adafruit VEML7700 Library\Adafruit_VEML7700.cpp.o
237
Archiving .pio\build\view\libFrameworkArduinoVariant.a
238
Indexing .pio\build\view\libFrameworkArduinoVariant.a
239
Compiling .pio\build\view\FrameworkArduino\Esp.cpp.o
240
Compiling .pio\build\view\FrameworkArduino\FunctionalInterrupt.cpp.o
241
Compiling .pio\build\view\FrameworkArduino\HardwareSerial.cpp.o
242
Compiling .pio\build\view\FrameworkArduino\IPAddress.cpp.o
243
Compiling .pio\build\view\FrameworkArduino\IPv6Address.cpp.o
244
Compiling .pio\build\view\FrameworkArduino\MD5Builder.cpp.o
245
Archiving .pio\build\view\lib44f\libSimple FOC.a
246
Compiling .pio\build\view\FrameworkArduino\Print.cpp.o
247
Archiving .pio\build\view\lib1b5\libtlv.a
248
Compiling .pio\build\view\FrameworkArduino\Stream.cpp.o
249
Indexing .pio\build\view\lib1b5\libtlv.a
250
Compiling .pio\build\view\FrameworkArduino\StreamString.cpp.o
251
Compiling .pio\build\view\FrameworkArduino\WMath.cpp.o
252
Compiling .pio\build\view\FrameworkArduino\WString.cpp.o
253
Compiling .pio\build\view\FrameworkArduino\base64.cpp.o
254
Indexing .pio\build\view\lib44f\libSimple FOC.a
255
Compiling .pio\build\view\FrameworkArduino\cbuf.cpp.o
256
Archiving .pio\build\view\lib02a\libAceButton.a
257
Indexing .pio\build\view\lib02a\libAceButton.a
258
Compiling .pio\build\view\FrameworkArduino\esp32-hal-adc.c.o
259
Compiling .pio\build\view\FrameworkArduino\esp32-hal-bt.c.o
260
Compiling .pio\build\view\FrameworkArduino\esp32-hal-cpu.c.o
261
Compiling .pio\build\view\FrameworkArduino\esp32-hal-dac.c.o
262
Compiling .pio\build\view\FrameworkArduino\esp32-hal-gpio.c.o
263
Archiving .pio\build\view\libbf2\libHX711.a
264
Compiling .pio\build\view\FrameworkArduino\esp32-hal-i2c.c.o
265
Indexing .pio\build\view\libbf2\libHX711.a
266
Archiving .pio\build\view\lib725\libSPIFFS.a
267
Indexing .pio\build\view\lib725\libSPIFFS.a
268
Compiling .pio\build\view\FrameworkArduino\esp32-hal-ledc.c.o
269
Archiving .pio\build\view\liba5e\libAdafruit BusIO.a
270
Archiving .pio\build\view\lib65c\libFS.a
271
Compiling .pio\build\view\FrameworkArduino\esp32-hal-log.c.o
272
Compiling .pio\build\view\FrameworkArduino\esp32-hal-matrix.c.o
273
Indexing .pio\build\view\lib65c\libFS.a
274
Indexing .pio\build\view\liba5e\libAdafruit BusIO.a
275
Compiling .pio\build\view\FrameworkArduino\esp32-hal-misc.c.o
276
Archiving .pio\build\view\lib905\libAdafruit VEML7700 Library.a
277
Compiling .pio\build\view\FrameworkArduino\esp32-hal-psram.c.o
278
Indexing .pio\build\view\lib905\libAdafruit VEML7700 Library.a
279
Compiling .pio\build\view\FrameworkArduino\esp32-hal-rmt.c.o
280
Compiling .pio\build\view\FrameworkArduino\esp32-hal-sigmadelta.c.o
281
.pio/libdeps/view/TFT_eSPI/TFT_eSPI.cpp: In member function 'virtual int16_t TFT_eSPI::drawChar(uint16_t, int32_t, int32_t, uint8_t)':
282
.pio/libdeps/view/TFT_eSPI/TFT_eSPI.cpp:4220:12: warning: unused variable 'flash_address' [-Wunused-variable]
283
uint32_t flash_address = 0;
284
^
285
.pio/libdeps/view/TFT_eSPI/TFT_eSPI.cpp:4249:11: warning: unused variable 'w' [-Wunused-variable]
286
int32_t w = width;
287
^
288
.pio/libdeps/view/TFT_eSPI/TFT_eSPI.cpp:4250:11: warning: unused variable 'pX' [-Wunused-variable]
289
int32_t pX = 0;
290
^
291
.pio/libdeps/view/TFT_eSPI/TFT_eSPI.cpp:4251:11: warning: unused variable 'pY' [-Wunused-variable]
292
int32_t pY = y;
293
^
294
.pio/libdeps/view/TFT_eSPI/TFT_eSPI.cpp:4252:11: warning: unused variable 'line' [-Wunused-variable]
295
uint8_t line = 0;
296
^
297
.pio/libdeps/view/TFT_eSPI/TFT_eSPI.cpp:4253:8: warning: unused variable 'clip' [-Wunused-variable]
298
bool clip = xd < _vpX || xd + width * textsize >= _vpW || yd < _vpY || yd + height * textsize >= _vpH;
299
^
300
In file included from .pio/libdeps/view/TFT_eSPI/TFT_eSPI.cpp:5078:0:
301
.pio/libdeps/view/TFT_eSPI/Extensions/Sprite.cpp: In member function 'virtual int16_t TFT_eSprite::drawChar(uint16_t, int32_t, int32_t, uint8_t)':
302
.pio/libdeps/view/TFT_eSPI/Extensions/Sprite.cpp:2181:12: warning: unused variable 'flash_address' [-Wunused-variable]
303
uint32_t flash_address = 0;
304
^
305
.pio/libdeps/view/TFT_eSPI/Extensions/Sprite.cpp:2210:11: warning: unused variable 'w' [-Wunused-variable]
306
int32_t w = width;
307
^
308
.pio/libdeps/view/TFT_eSPI/Extensions/Sprite.cpp:2211:11: warning: unused variable 'pX' [-Wunused-variable]
309
int32_t pX = 0;
310
^
311
.pio/libdeps/view/TFT_eSPI/Extensions/Sprite.cpp:2212:11: warning: unused variable 'pY' [-Wunused-variable]
312
int32_t pY = y;
313
^
314
.pio/libdeps/view/TFT_eSPI/Extensions/Sprite.cpp:2213:11: warning: unused variable 'line' [-Wunused-variable]
315
uint8_t line = 0;
316
^
317
.pio/libdeps/view/TFT_eSPI/Extensions/Sprite.cpp:2214:8: warning: unused variable 'clip' [-Wunused-variable]
318
bool clip = xd < _vpX || xd + width * textsize >= _vpW || yd < _vpY || yd + height * textsize >= _vpH;
319
^
320
Compiling .pio\build\view\FrameworkArduino\esp32-hal-spi.c.o
321
Compiling .pio\build\view\FrameworkArduino\esp32-hal-time.c.o
322
Compiling .pio\build\view\FrameworkArduino\esp32-hal-timer.c.o
323
C:/Users/piercebrands/.platformio/packages/framework-arduinoespressif32/cores/esp32/esp32-hal-spi.c: In function 'spiTransferBytesNL':
324
C:/Users/piercebrands/.platformio/packages/framework-arduinoespressif32/cores/esp32/esp32-hal-spi.c:922:39: warning: initialization from incompatible pointer type [-Wincompatible-pointer-types]
325
uint8_t * last_out8 = &result[c_longs-1];
326
^
327
C:/Users/piercebrands/.platformio/packages/framework-arduinoespressif32/cores/esp32/esp32-hal-spi.c:923:40: warning: initialization from incompatible pointer type [-Wincompatible-pointer-types]
328
uint8_t * last_data8 = &last_data;
329
^
330
Compiling .pio\build\view\FrameworkArduino\esp32-hal-touch.c.o
331
Compiling .pio\build\view\FrameworkArduino\esp32-hal-uart.c.o
332
Compiling .pio\build\view\FrameworkArduino\libb64\cdecode.c.o
333
Compiling .pio\build\view\FrameworkArduino\libb64\cencode.c.o
334
Compiling .pio\build\view\FrameworkArduino\main.cpp.o
335
Compiling .pio\build\view\FrameworkArduino\stdlib_noniso.c.o
336
Compiling .pio\build\view\FrameworkArduino\wiring_pulse.c.o
337
Compiling .pio\build\view\FrameworkArduino\wiring_shift.c.o
338
Archiving .pio\build\view\libFrameworkArduino.a
339
Indexing .pio\build\view\libFrameworkArduino.a
340
Archiving .pio\build\view\lib067\libTFT_eSPI.a
341
Indexing .pio\build\view\lib067\libTFT_eSPI.a
342
Linking .pio\build\view\firmware.elf
343
Retrieving maximum program size .pio\build\view\firmware.elf
344
Checking size .pio\build\view\firmware.elf
345
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
346
RAM: [= ] 5.4% (used 17648 bytes from 327680 bytes)
347
Flash: [=== ] 27.3% (used 357566 bytes from 1310720 bytes)
348
Building .pio\build\view\firmware.bin
349
esptool.py v3.1
350
Merged 1 ELF section
351
====================================================== [SUCCESS] Took 412.84 seconds ======================================================
352
Environment Status Duration
353
------------- -------- ------------
354
view SUCCESS 00:06:52.838
355
======================================================= 1 succeeded in 00:06:52.838 ======================================================= * 终端将被任务重用,按任意键关闭。

If you see output similar to the above, the compilation is complete.

Write

After the compilation is complete, click the Write button on Position 2 and the write log will look like this:

1
* 正在执行任务: C:\Users\piercebrands\.platformio\penv\Scripts\platformio.exe run --target upload
2
3
Processing view (board: esp32doit-devkit-v1; platform: espressif32@3.4; framework: arduino)
4
-------------------------------------------------------------------------------------------------------------------------------------------
5
Tool Manager: Installing platformio/tool-mkspiffs @ ~2.230.0
6
Downloading [####################################] 100%
7
Unpacking [####################################] 100%
8
Tool Manager: tool-mkspiffs@2.230.0 has been installed!
9
Verbose mode can be enabled via `-v, --verbose` option
10
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/esp32doit-devkit-v1.html
11
PLATFORM: Espressif 32 (3.4.0) > DOIT ESP32 DEVKIT V1
12
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
13
DEBUG: Current (esp-prog) External (esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
14
PACKAGES:
15
- framework-arduinoespressif32 @ 3.10006.210326 (1.0.6)
16
- tool-esptoolpy @ 1.30100.210531 (3.1.0)
17
- tool-mkspiffs @ 2.230.0 (2.30)
18
- toolchain-xtensa32 @ 2.50200.97 (5.2.0)
19
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
20
LDF Modes: Finder ~ chain, Compatibility ~ soft
21
Found 37 compatible libraries
22
Scanning dependencies...
23
Dependency Graph
24
|-- Simple FOC @ 2.2.0
25
| |-- Wire @ 1.0.1
26
| |-- SPI @ 1.0
27
|-- TLV493D-Magnetic-Sensor @ 1.0.3
28
| |-- Wire @ 1.0.1
29
|-- AceButton @ 1.9.1
30
|-- TFT_eSPI @ 2.4.25
31
| |-- SPI @ 1.0
32
| |-- SPIFFS @ 1.0
33
| | |-- FS @ 1.0
34
| |-- FS @ 1.0
35
|-- FastLED @ 3.5.0
36
| |-- SPI @ 1.0
37
|-- HX711 @ 0.7.5
38
|-- Adafruit VEML7700 Library @ 1.1.1
39
| |-- Adafruit BusIO @ 1.13.2
40
| | |-- Wire @ 1.0.1
41
| | |-- SPI @ 1.0
42
| |-- Wire @ 1.0.1
43
| |-- SPI @ 1.0
44
Building in release mode
45
Retrieving maximum program size .pio\build\view\firmware.elf
46
Checking size .pio\build\view\firmware.elf
47
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
48
RAM: [= ] 5.4% (used 17648 bytes from 327680 bytes)
49
Flash: [=== ] 27.3% (used 357566 bytes from 1310720 bytes)
50
Configuring upload protocol...
51
AVAILABLE: esp-prog, espota, esptool, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa
52
CURRENT: upload_protocol = esptool
53
Looking for upload port...
54
Auto-detected: COM3
55
Uploading .pio\build\view\firmware.bin
56
esptool.py v3.1
57
Serial port COM3
58
Connecting......
59
Chip is ESP32-PICO-V3-02 (revision 3)
60
Features: WiFi, BT, Dual Core, 240MHz, Embedded Flash, Embedded PSRAM, VRef calibration in efuse, Coding Scheme None
61
Crystal is 40MHz
62
MAC: 98:cd:ac:e8:af:ec
63
Uploading stub...
64
Running stub...
65
Stub running...
66
Changing baud rate to 460800
67
Changed.
68
Configuring flash size...
69
Auto-detected Flash size: 8MB
70
Flash will be erased from 0x00001000 to 0x00005fff...
71
Flash will be erased from 0x00008000 to 0x00008fff...
72
Flash will be erased from 0x0000e000 to 0x0000ffff...
73
Flash will be erased from 0x00010000 to 0x00067fff...
74
Flash params set to 0x0230
75
Compressed 17104 bytes to 11191...
76
Writing at 0x00001000... (100 %)
77
Wrote 17104 bytes (11191 compressed) at 0x00001000 in 0.6 seconds (effective 229.4 kbit/s)...
78
Hash of data verified.
79
Compressed 3072 bytes to 128...
80
Writing at 0x00008000... (100 %)
81
Wrote 3072 bytes (128 compressed) at 0x00008000 in 0.1 seconds (effective 364.0 kbit/s)...
82
Hash of data verified.
83
Compressed 8192 bytes to 47...
84
Writing at 0x0000e000... (100 %)
85
Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.1 seconds (effective 541.4 kbit/s)...
86
Hash of data verified.
87
Compressed 357680 bytes to 190508...
88
Writing at 0x00010000... (8 %)
89
Writing at 0x00018fcf... (16 %)
90
Writing at 0x0002ae74... (25 %)
91
Writing at 0x0003201b... (33 %)
92
Writing at 0x00037658... (41 %)
93
Writing at 0x0003ce83... (50 %)
94
Writing at 0x0004347a... (58 %)
95
Writing at 0x0004c06f... (66 %)
96
Writing at 0x000519bf... (75 %)
97
Writing at 0x00057a46... (83 %)
98
Writing at 0x0005d864... (91 %)
99
Writing at 0x00063652... (100 %)
100
Wrote 357680 bytes (190508 compressed) at 0x00010000 in 4.4 seconds (effective 651.0 kbit/s)...
101
Hash of data verified.
102
103
Leaving...
104
Hard resetting via RTS pin...
105
====================================================== [SUCCESS] Took 19.27 seconds ======================================================
106
107
Environment Status Duration
108
------------- -------- ------------
109
view SUCCESS 00:00:19.271
110
======================================================= 1 succeeded in 00:00:19.271 =======================================================
111
* 终端将被任务重用,按任意键关闭。

Serial Monitor

Waiting the write task is complete, press the serial button on the Position 3 and the output is as follows:

1
* 正在执行任务: C:\Users\piercebrands\.platformio\penv\Scripts\platformio.exe device monitor
2
3
--- Terminal on COM3 | 115200 8-N-1
4
--- Available filters and text transformations: colorize, debug, default, direct,
5
esp32_exception_decoder, hexlify, log2file, nocontrol, printable, send_on_enter, time
6
--- More details at https://bit.ly/pio-monitor-filters
7
--- Quit: Ctrl+C | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H
8
drv:0x00,hd_drv:0x00,wp_drv:0x00
9
mode:DIO, clock div:2
10
load:0x3fff0018,len:4
11
load:0x3fff001c,len:1044
12
load:0x40078000,len:10124
13
load:0x40080400,len:5828
14
entry 0x400806a8
15
Sprite created!
16
millilux: 0.00
17
HX711 reading: 669031
18
millilux: 0.00
19
HX711 reading: 668815
20
Press Y to run calibration <========= // Look this
21
millilux: 0.00
22
HX711 reading: 668869
23
millilux: 0.00
24
HX711 reading: 668639
25
millilux: 0.00
26
HX711 reading: 668634
27
4.43
28
Got new config
29
millilux: 0.00

There is a word Press Y to run calibration, which can be used to automatically debug a set value suitable for the current device. After pressing the capital Y in the serial window, the knob will be rotated automatically, and after a while, the following result will be output in the serial port:

1
RESULTS:
2
zero electric angle: 4.43 // The values on this side may be different for each device.
3
direction: CW
4
pole pairs: 7

Open motor_task.cpp file:

1
float zero_electric_offset = 4.43; // Replace the value with the value of zero electric angle output above.

After saving, write the firmware again. It should run successfully.

Tweet this article