TSM_PicoW_Sensor
This project uses the PicoW board to publish sensor values (humidity and temperature) to an MQTT broker.
Target Configuration
Use a serial terminal (baud rate: 115200) to configure the board by sending commands. The application stores the parameters in flash memory. You must restart the device to apply any changes.
Wi-Fi
McuMinINI write settings.ini WiFi ssid "YOUR_SSID"
McuMinINI write settings.ini WiFi pass "YOUR_PASSWORD"
MQTT
Broker information:
McuMinINI write settings.ini MQTT broker "BROKER_NAME"
McuMinINI write settings.ini MQTT user "USERNAME"
McuMinINI write settings.ini MQTT pass "PASSWORD"
Topic names:
McuMinINI write settings.ini MQTT topic_sensor_update "<user>/<room>/<device>/update"
McuMinINI write settings.ini MQTT topic_send_measurement "<user>/<room>/<device>/cmd/measure"
Build
Project has Debug, Release and Test targets, using CMake Presets.
Configure:
cmake --list-presets
cmake --preset Debug
cmake --preset Release
cmake --preset Test
Build:
cmake --build --list-presets
cmake --build --preset app-debug
cmake --build --preset app-release
cmake --build --preset app-test
Test:
ctest --list-presets
ctest --test-dir build/Test -R Led_1
Workflow:
cmake --workflow --list-presets
Running Tests on Another Machine
To run tests on a target connected to another machine (e.g., in a GitLab CI pipeline), follow these steps:
On the Host Machine
Set up a J-Link tunnel to make the target accessible from anywhere:
JLinkRemoteServerCL -UseTunnel -TunnelBySN
The terminal output should look like this:
2025-06-04 08:43:57 - Remote Server started
2025-06-04 08:43:57 - Connected to J-Link with S/N 801000372
2025-06-04 08:43:57 - Resolving tunnel server name (jlink-europe.segger.com)...
2025-06-04 08:43:57 - Tunnel server IP: 185.162.249.2
2025-06-04 08:43:57 - Registered at tunnel server
2025-06-04 08:43:57 - Waiting for client connection
801000372 is the tunnel ID required to reach the target. Include it in your CMake command:
cmake --preset Test -DTUNNEL_ID=801000372
When you run the tests, they will automatically execute on the host machine.