Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for new NRF52 board, MeshLink #5736

Open
wants to merge 13 commits into
base: master
Choose a base branch
from

Conversation

ponzano
Copy link

@ponzano ponzano commented Jan 3, 2025

Hi everyone, in the past year i've been developing a new board to use with meshtastic and i'd like to have it supported officially by the firmware. I started by making a google form to ask what the local community would have liked to have on a new device and then worked on trying to make it come true. We have been testing the prototypes for some months now and i will soon have a new batch produced with fixes and improvements. It was developed to satisfy both remote location and daily portable use cases, while trying to keep costs low. Please keep in mind that i'm just a student and this is basically my first time designing a pcb, but it works and i'm open to constructive criticism.
A little list of specs (will do a more complete datasheet asap):
50x70mm footprint and mounting holes corresponding to common 50x70 perfboard, NRF52840, eByte E22900M22S (Will also come with other frequencies), MPPT solar charger with selectable and adjustable voltage 5v,12v,18v; support for gps, buzzer, oled or e-ink display, 10 gpios, hardware watchdog, integrated INA219, extra flash memory.
Let me know if some edits to the PR or code need to be made :)
Please note that these are pictures of the prototypes and final product will be slightly different, although ports placement and general size are the same
image
image
image
image
image
image

boards/meshlink.json Outdated Show resolved Hide resolved
Copy link
Member

@caveman99 caveman99 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice and solid design, please see my inline comments.

src/mesh/generated/meshtastic/mesh.pb.h Show resolved Hide resolved
#ifdef PIN_3V3_EN
digitalWrite(PIN_3V3_EN, LOW);
#endif
#endif
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is the reason behind this? i am asking because maybe we already have a way to accomodate this without the macro guards.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I used the PIN_3V3_EN definition for the watchdog enable pin, because i needed a pin that would have been turned off automatically by the firmware when we put the cpu to sleep with button longpress. Otherwise, the watchdog would remain enabled without being reset by the status led blink (because the cpu is sleeping). I could rename it to WD_EN and add a specific digitalwrite for my board in main-nrf52.cpp and src/sleep.cpp. I just noticed that there could also be an edge case scenario problem when using repeater role as 3v3_en pin would be disabled on startup
https://github.com/ponzano/MeshLink/blob/c82f23ed2aa81cb09ba4e57e281347da74e02cb0/src/main.cpp#L649C5-L649C121

variants/meshlink/platformio.ini Show resolved Hide resolved
variants/meshlink/platformio.ini Show resolved Hide resolved
variants/meshlink/platformio.ini Show resolved Hide resolved
#define PIN_A0 (2)
#define PIN_A7 (31)
/*
static const uint8_t A0 = PIN_A0;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please remove the RAK4631 specific comments. These will confuse developers working on this define.


*/

/*
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

see above, this comment is RAK specific and actually wrong for the ebyte module you are using.

variants/meshlink_eink/platformio.ini Show resolved Hide resolved
@caveman99
Copy link
Member

Also please run trunk fmt before you commit

@ponzano
Copy link
Author

ponzano commented Jan 5, 2025

Also please run trunk fmt before you commit

looks like i have some work to do, thank you for the help ! :)

@CLAassistant
Copy link

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.
1 out of 2 committers have signed the CLA.

✅ ponzano
❌ Paolo Ponzano


Paolo Ponzano seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.
You have signed the CLA already but the status is still pending? Let us recheck it.

@ponzano
Copy link
Author

ponzano commented Jan 6, 2025

CLA assistant check Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.1 out of 2 committers have signed the CLA.✅ ponzano❌ Paolo Ponzano

Paolo Ponzano seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.
You have signed the CLA already but the status is still pending? Let us recheck it.

Huh?? That’s weird.. anyway sorry for the mess, I’ll avoid committing again until everything is done 😥

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants