Motivation

This projects goal is mainly to see how far I can build/design a device from scratch ( previous attempt here and here )

In my spare time I always love to build something, but most of the time it's never completed ( i.e. here ) as I've always aim it too complex. This time is different, I set the MVP low and simple and most importantly aim to just finish the project in short amount of time. Hence, why there are some questionable design that I took or that does not follow the recommended manufacturer application. Listed below are some notes on the design:

Let me know if there's any questionable design, would love to learn more!

Specification

Schematics

schematic

Boards

pcb_render
PCB Render

Built using KiCAD, the board is design to be as small as possible with all components placed on the top side of the PCB. The following are the lists of revision of the board:

The following design are based on the latest revision.

Top BoardBottom Board

assembled_front

assembled_back

pcb_front

pcb_bottom

pcb

Case

case_render

Case Render

Built using TinkerCAD, the cases are available with 2 variant, with or without the programming port. The cases are 3D printable with any generic 3D printer with/without suppport (depends on the orientation). The STL files are available here

drawing
Case Open

The case is design to be as small as possible with an additional magnets in the back to ease the placement of the sensor. The following are the list of material used at the time of testing:

placement_showcase
Sensor Placement with Magnet

Measurement

Power consumption and solar charging current are measured using Nordic PPK2 and CurrentRanger. The following are the summary of the measurement:

deep_sleep
Deep-Sleep

bme688_measure_and_lora_transmit
BME688 Measure and LoRa Transmit

Solar Charge - Direct SunlightSolar Charge - Indirect Sunlight

assembled_front

assembled_back

More measurement can be found here

Programming

warning Board can only be powered using the LiPo Battery

Programming the device can be done over the UART2 or SWD, available on the right side of the board. Out of the factory, the RAK3172 chip ships with an AT firmware that can be tested by connecting a USB-to-UART bridge to the UART2 port.

The following are some very good tutorial to start developing with the device:

For connecting to the UART2 port, use any USB-to-UART bridge module. In testing, the Sparkfun board is used for communication with AT firmware and programming over Arduino.

Sparkfun USB-to-UART Bridge
warning Be sure to only use 3.3V module. Do not 5V module

For connecting to the SWD port, use ST-Link v2 in-circuit debugger and programmer from STM. In testing, ST-Link v2 clone will not work. The ST-Link v2 should atleast be reconizeable by the STM32CubeProgrammer. A cheap and alternative way to get an authorized ST-Link is to buy a Nucleo board, cut the top part which contain the ST-Link and use it as an external programmer.

ST-Link v2 from a Nucleo Development Board

Here are some good tutorial to convert a Nucleo to and external ST-Link v2:

Notes

There are some issue, notes, and behavior that was discovered at the time of testing and development. The following are those discovery:

Reference

The project won't be possible without the amazing work from people across the globe. The following are the reference to those awesome projects: