Quick Index

Back to Top
What is it?
Assembly
Firmware
Usage
Source

5panel.dance

↙️↖️⏺️↗️↘️

GitHubYouTubeBlueSkyDiscordKo-Fi


Info

Meshlet is a work in progress!
The board has been tested and working short-term, but has not yet undergone extensive testing in the field. Keep an eye out here for updates!

What is it?

Meshlet is a LoRa mesh network node, designed to be compatible with the Meshtastic® project. It's made to be deployed just about anywhere you want it to be - you can plug in a solar panel and set it up outside, turn it into a pocketable every-day-carry node, wire it up to your car as a mobile repeater, or even just leave it on a windowsill attached to a BBS script/Meshsense/etc.

Features include, but are not limited to...

  • USB C, with configurable charge rate limit (250mA, 500mA, 1A)
  • LiPo/LiIon and LiFePo4 support
  • ESD/TVS protection on the USB port
  • Solar input (as well as constant DC input) from 3.3V to 18V, tolerant up to 25V
    • Flexible wiring methods, with dedicated JST PH footprints as well as pads to directly solder wires to!
    • Tested & working with as little as a cheap 80mm 5v solar panel, on an overcast Canadian winter day!
    • Unlike many boards that need a manual reset after too little sunlight drains the battery, the Meshlet should recover on its own!
  • Smart power path management, thanks to the BQ25185. No need to worry about unnecessarily cycling the battery!
  • JST 2.0 and Picoblade 1.5mm battery connector footprints, to hopefully fit whatever LiPos you've got laying around
  • Low operating power, measuring as low as 2.8mA idle current draw (without WiFi)
  • Active current/voltage monitoring and reporting on 3 channels over the mesh, via INA3221
    • Ch. 1: Battery
    • Ch. 2: USB & external power
    • Ch. 3: BQ25185 regulated battery output
  • Up to 8MB onboard flash
  • WIO-SX1262 LoRa radio
  • BME280 temperature/humidity/barometric pressure sensor
  • I2C expansion port
  • Dedicated 3.3V regulators for all major components, each with its own self-resetting fuse, to ensure stable power
  • "External notification" header for a MOSFET-driven 3.3V buzzer, LED, vibration motor, etc
  • Raspberry Pi RM2 for optional WiFi (and Bluetooth, whenever the firmware supports it)
  • Total footprint size of ~42*32mm, less than half the size of a credit card!

Assembly

Please see the interactive BOM! Included is a list of LCSC part numbers for the specific components used, for your convenience.

This board was partially designed with the intention of fitting those really cheap little hot plates you can get on AliExpress. To save on costs, unless you're buying a prebuilt unit from me somehow, it is feasible to order the PCBs along with a stencil and using one of these hot plates. However, I would only recommend doing this if you're experienced with it! The cost of the hot plate is roughly equivalent to what you'd spend on PCBA "extended component" fees from JLC anyway, and you can keep reusing it! Just make sure you have a suitable USB C power source for it.

Any parts not specifically listed as being optional for specific use cases are considered necessary!
If there are specific features you do or don't need, see the following modifications. This also includes parts that MUST be left out if another part is chosen, i.e. specific battery connectors.

No WiFi/Bluetooth

If you don't need WiFi or Bluetooth, you can leave out:

  • U10: Raspberry Pi RM2
  • R25: 470Ω 0402 resistor
  • R28: 10kΩ 0402 resistor
  • C32: 47μF 0402 ceramic capacitor

No BME280

If you don't need temperature/humidity or other environmental metrics, you can leave out:

  • U7: BME280
  • C22: 100nF 0402 ceramic capacitor
  • C23: 100nF 0402 ceramic capacitor

JST 2.0mm vs. Picoblade 1.25mm Battery Connector

There are two options for battery connectors, both on the same physical space on the board.
If you don't wish to use a battery, both of these can be ignored. If you do, you MUST pick at least one out of the following:

  • J3: Molex Picoblade 1.25mm connector (often conflated with "JST 1.25mm" connectors in 3rd party listings)
  • J4: JST-PH 2.0mm connector

No Solar/Ext. Connector

If you wish to solder external power wires from your preferred source directly to the pins on the back of the board, or only use USB input, you can leave out:

  • J7: JST-PH 2.0mm connector (located on top, beside the USB port)

No LEDs

If you don't need any specific LED indicators, you can leave out any of the following:

  • D3: 0603 SMD LED - heartbeat indicator
  • D4: 0603 SMD LED - power indicator
  • D5: 0603 SMD LED - charge indicator
  • D6: 0603 SMD LED - power/battery fault indicator

Recommended LED Colours

These are the colours I recommend using for each indicator LED. These can be whatever you want, but consider adjusting the resistor values for each depending on the colour(s) you choose:

  • D3: heartbeat indicator, recommended RED
  • D4: power indicator, recommended GREEN
  • D5: charge indicator, recommended BLUE
  • D6: power/battery fault indicator, recommended RED
By default, the resistor values for these are quite high, and they're difficult to see in bright conditions. This was done to save on energy while still allowing me to debug the boards indoors. You may wish to make them brighter, or dimmer. Green and red lights will need weaker resistors than blue lights to resemble the same brightness.

Firmware

My fork of the Meshtastic® firmware isn't available yet, as changes to the PCB routing between revisions likely means breaking compatibility with existing boards. Once the design is close enough to "finished" for my liking and has proven to be reliable, I'll publish the fork! Watch this space for updates :)

Usage

General Notes

There are a few things I think you should keep in mind when using Meshlet:

  • The BQ2185 only supports 1 cell in series!!! You can connect multiple in parallel if you know what you're doing, but please be safe and do your research!
  • The board is configured for LiPo/LiIon batteries by default. LiFePO4 batteries are supported, but you must flip the board over, cut the jumper in the lower left corner, and bridge the "LiFePO4" side (on the left) with some solder first!
  • There are some power test points for attaching extra expansion thingies if you can't power them through the I2C pads. I think the USB and 3V3 are obvious, but the "BMS" pin is the regulated output from the BQ25185 and will never exceed 4.5V. Good for hooking up to another regulator, if you need to.
  • The configurable charge rate very strongly depends on your use case. It is configured at 500mA by default, which should be enough for just about all use cases. You will need to lower this if you're using a battery smaller than 500mAh to avoid starting a fire!
  • You have the option to attach a 10k NTC thermistor. This will cut off charging above/below certain temperatures. To use it, cut the "NTC" jumper on the front of the board, and solder it to the "THERMISTOR" through-hole connector.
  • The solar charging is based on the BQ25185's capabilities and is not a "true" MPPT. You will have the best results with 5-7V panels.
  • The RP2350, even when downclocked, still consumes more power than an nRF52. It's not nearly as bad as the ESP32, though, and I've been able to achieve roughly 3mA average power draw with no WiFi module attached. That's a good amount of runtime!
  • WiFi and Bluetooth capabilities depend on whether you can get your hands on the Raspberry Pi Radio Module 2 (RMC20452T). Currently, the firmware only supports WiFi.
  • The on-board power switch originally present has been removed from version 2, as it's more than adequate to simply wire a switch in series with the board's power supply. Please make sure that you select a suitable switch for the task!

App Configuration

For the board to work properly, you will need to adjust some settings within the app. Many of these should work out-of-the-box with the right firmware, but are included here in case they don't.

  • Device:
    • Button GPIO: 17 (only set if it doesn't work by default!)
    • Buzzer GPIO: 22
  • Power: Battery INA_2XX i2c address = 0x42 (or 66)
  • External Notification (if desired):
    • External notification enabled: ON
    • Alert message LED/Buzzer/Vibra (pick 1): ON
    • Alert bell LED/Buzzer/Vibra (pick 1): ON
    • Output LED/Buzzer/Vibra (pick 1): 22
    • Output LED active high: ON
  • Telemetry (if desired):
    • Send Device Telemetry: ON
    • Environment metrics module: ON only if BME280 is present
    • Air quality metrics module: ON only if BME280 is present
    • Power metrics module: ON

Monitored Power Channels

There are three monitored power channels on the INA3221, the values for which can be displayed and broadcast over the mesh when power telemetry is enabled. The channels are as follows:

  • Ch. 1: Battery voltage. Negative current value = discharging, positive current value = charging.
  • Ch. 2: External power input. Shared between USB power and the two solar/ext connectors. Useful to see if your solar panel is working as it should!
  • Ch. 3: Regulated BQ25185 load output. This monitors the power draw from everything after the battery chip, including the microcontroller, LoRa radio, WiFi module, and any other peripherals attached.

Source

KiCAD Project

Meshlet is (and always will be) open source! All of the KiCAD project files are readily available, and so will the firmware changes, as soon as the board is finished and properly tested.