meshtastic / firmware

Meshtastic device firmware
https://meshtastic.org
GNU General Public License v3.0
3.22k stars 778 forks source link

[Board]: reconsideration of the chatter 2.0 #2896

Closed rimwulf closed 7 months ago

rimwulf commented 10 months ago

SOC

ESP32

Lora IC

DL-CC68-S-868

Product Link

https://www.samsclub.com/p/circuitmess-chatter-stem-project-build-and-code-walkie-talkies/PL980418145

Description

Requesting reconsideration of Chatter 2.0 support as product is still being produced.

Confirmed product is in-fact open source with hardware, schematics, and code. I included photos of mine board for reference and in contact with CircuitMess to see if original PCB files can be obtained.

Latest interest I've found was less than 30 days ago so produce cannot be EOL.

Refrence: https://github.com/meshtastic/firmware/issues/2707#issue-1845692213

Original code https://github.com/CircuitMess/Chatter2-Firmware

Fork interest https://github.com/bestander/Chatter2-Firmware-for-Chatter1

Hardware LoRa module DL-CC68-S-868

ESP-WROOM-32

Hardware schematics: 933f2915da3e0ab5354600e10dc44416b7c8a526

Reference photos. 20231017_155438 20231017_155408 20231017_155401

If permitted this will be updated with know info I just ask for consideration and not closing this issue

eureekasigns commented 3 months ago

@tomhanax Chatter V1.0 and V2.0 use the same keypad circuit based on two 74HC165 PISO shift registers. After looking at Meshtastic code, core modules are not the way to go to add keypad support Meshtastic actually already support on device message input through the canned message module (https://meshtastic.org/docs/configuration/module/canned-message/) We just need to add support for Chatter keypad. I started working on it yesterday without results yet. I can start a PR so we can try to make that work together if you want!

Excited someone's looking into possible use of the buttons on this. Looks like there's some work on the linked issue with an alpha version that might resolve. Look forward to the possibility of more buttons doing more things!

Gnu-Bricoleur commented 2 months ago

@GPSFan Which GPS module do you recommend to use with the Chatter ? I looked through the discussion but couldn't find the reference.

dogboyaa1 commented 2 months ago

@GPSFan Which GPS module do you recommend to use with the Chatter ? I looked through the discussion but couldn't find the reference.

Also had the same question. Thank you all for the great work. I love these little things

GPSFan commented 2 months ago

I've used the Chatter 2 as a test platform to test many GPS receiver types. I am partial to u-blox modules, but not Neo-6 or Neo-7.

For a good price/performance I would suggest: ATGGM336 ... cheaper... but good... u-blox M10
u-blox F10 tau1202 u-blox M8N u-blox M9 u-blox F9 ... more expensive... IMHO outside most (all) Meshtastic use cases.

Each has its good & bad points, some have better power management, some are a better receiver. None (without hardware hacking) support power supply control. So with defaults the GPS is "always on" or in PMREQ standby.

I added the Chatter 2 to Meshtastic because it is a great hacking platform, cheap and lends it self to hacking. The folks working on adding keyboard support have my greatest respect as that is beyond my pay grade WRT programming skills.

dogboyaa1 commented 2 months ago

Just wanted to throw this out here in case someone might like to use it. I designed a shell in the style of a handheld transceiver. Uses two 18650 batteries, a 12mm latching toggle switch to relocate the power switch to the top, an SMA pigtail and an inexpensive 915mhz whip antenna. It is by no means perfect, but feel free to use it if you would like.

https://www.thingiverse.com/thing:6614717

IMG_2934 IMG_2936 IMG_2932 IMG_2933 IMG_2935

Hi i wanted to ask you real quick to confirm. the lithium charger you mentioned it is going to output 5v? Would that be too much for the unit since it only runs on 3 x aaa batteries. I noticed new batteries are like 4.7v but figured I will ask before damaging my unit. thx!

dogboyaa1 commented 2 months ago

I've used the Chatter 2 as a test platform to test many GPS receiver types. I am partial to u-blox modules, but not Neo-6 or Neo-7.

For a good price/performance I would suggest: ATGGM336 ... cheaper... but good... u-blox M10 u-blox F10 tau1202 u-blox M8N u-blox M9 u-blox F9 ... more expensive... IMHO outside most (all) Meshtastic use cases.

Each has its good & bad points, some have better power management, some are a better receiver. None (without hardware hacking) support power supply control. So with defaults the GPS is "always on" or in PMREQ standby.

I added the Chatter 2 to Meshtastic because it is a great hacking platform, cheap and lends it self to hacking. The folks working on adding keyboard support have my greatest respect as that is beyond my pay grade WRT programming skills.

Hi thank you for the suggestions! just curious so i dont make a mistake do you know the pinout. i thought i found on the chatter forum but wanted to double check with you.

scott1627 commented 2 months ago

Just wanted to throw this out here in case someone might like to use it. I designed a shell in the style of a handheld transceiver. Uses two 18650 batteries, a 12mm latching toggle switch to relocate the power switch to the top, an SMA pigtail and an inexpensive 915mhz whip antenna. It is by no means perfect, but feel free to use it if you would like. https://www.thingiverse.com/thing:6614717 IMG_2934 IMG_2936 IMG_2932 IMG_2933 IMG_2935

Hi i wanted to ask you real quick to confirm. the lithium charger you mentioned it is going to output 5v? Would that be too much for the unit since it only runs on 3 x aaa batteries. I noticed new batteries are like 4.7v but figured I will ask before damaging my unit. thx!

The charge circuit outputs 4.2v which is slightly below a fully charged set of AAA batteries. The device will show around 80% charge with the stock firmware with a fully charged lithium cell however I am sure the firmware could be adjusted to expect 4.2v instead. Long story short, the voltage of the charger/ lithium cell will not damage the device as long as it is wired up correctly.

dogboyaa1 commented 2 months ago

Just wanted to throw this out here in case someone might like to use it. I designed a shell in the style of a handheld transceiver. Uses two 18650 batteries, a 12mm latching toggle switch to relocate the power switch to the top, an SMA pigtail and an inexpensive 915mhz whip antenna. It is by no means perfect, but feel free to use it if you would like. https://www.thingiverse.com/thing:6614717 IMG_2934 IMG_2936 IMG_2932 IMG_2933 IMG_2935

Hi i wanted to ask you real quick to confirm. the lithium charger you mentioned it is going to output 5v? Would that be too much for the unit since it only runs on 3 x aaa batteries. I noticed new batteries are like 4.7v but figured I will ask before damaging my unit. thx!

The charge circuit outputs 4.2v which is slightly below a fully charged set of AAA batteries. The device will show around 80% charge with the stock firmware with a fully charged lithium cell however I am sure the firmware could be adjusted to expect 4.2v instead. Long story short, the voltage of the charger/ lithium cell will not damage the device as long as it is wired up correctly.

Got it thank you

dogboyaa1 commented 2 months ago

I've used the Chatter 2 as a test platform to test many GPS receiver types. I am partial to u-blox modules, but not Neo-6 or Neo-7. For a good price/performance I would suggest: ATGGM336 ... cheaper... but good... u-blox M10 u-blox F10 tau1202 u-blox M8N u-blox M9 u-blox F9 ... more expensive... IMHO outside most (all) Meshtastic use cases. Each has its good & bad points, some have better power management, some are a better receiver. None (without hardware hacking) support power supply control. So with defaults the GPS is "always on" or in PMREQ standby. I added the Chatter 2 to Meshtastic because it is a great hacking platform, cheap and lends it self to hacking. The folks working on adding keyboard support have my greatest respect as that is beyond my pay grade WRT programming skills.

Hi thank you for the suggestions! just curious so i dont make a mistake do you know the pinout. i thought i found on the chatter forum but wanted to double check with you.

I was able to figure out the pin out. If looking at it from the side:

Pin Layout Pin 1: Ground (Left Pin) Pin 2: RX (Connects to GPS modules TX Pin) Pin 3: TX (Connectd to GPS modules RX Pin) Pin 4: 3.3v (Power) IMG_0620

tomhanax commented 1 month ago

As very good work on keypad support was done by @Gnu-Bricoleur in #4022, this little devices are ALMOST field-usable - at least for me.

As ALMOST I mean I really miss one, very important feature: sound notification on message arrival. In the real world usage this is crucial, you can surely imagine. On T-Deck you will hear some beeping, we call it "frogs" :) (meshtastic is green you know... ;)

I made some other tweaks like font sizes and I am overall happy with them. But I can not find where to turn this sound on. I am sure that the Chatter is sound capable, since we can already here the "startup" sound, so this should be theoretically possible and easy. But where is it hidden?

Can anybody please help?

scott1627 commented 1 month ago

As very good work on keypad support was done by @Gnu-Bricoleur in #4022, this little devices are ALMOST field-usable - at least for me.

As ALMOST I mean I really miss one, very important feature: sound notification on message arrival. In the real world usage this is crucial, you can surely imagine. On T-Deck you will hear some beeping, we call it "frogs" :) (meshtastic is green you know... ;)

I made some other tweaks like font sizes and I am overall happy with them. But I can not find where to turn this sound on. I am sure that the Chatter is sound capable, since we can already here the "startup" sound, so this should be theoretically possible and easy. But where is it hidden?

Can anybody please help?

I was able to get the audible notifications working by setting "Output pin buzzer GPIO" to Pin 31 under the external notification config. I also enabled the toggles for alert GPIO buzzer when receiving bell and message. On a side note, Has anyone made a guide for flashing the newest firmware with keypad support to the device, or has this been added to the official builds?

tomhanax commented 1 month ago

Thanks @scott1627, it works perfectly! Now I am finally able to use them on the field! Anyway, I think that the buzzer pin value should be changed in variant.h, too:

#define PIN_BUZZER 31

I tested it locally and it works, so maybe somebody with github workflow experience could change this, so user won't have to in the GUI.

According to "firmware with the keypad support" - I use Platformio, switch git to #4022 and upload.

dogboyaa1 commented 1 month ago

Thanks @scott1627, it works perfectly! Now I am finally able to use them on the field! Anyway, I think that the buzzer pin value should be changed in variant.h, too:

#define PIN_BUZZER 31

I tested it locally and it works, so maybe somebody with github workflow experience could change this, so user won't have to in the GUI.

According to "firmware with the keypad support" - I use Platformio, switch git to #4022 and upload.

I wanted to mention that I had to also turn on the “Use PWM Buzzer” option as well as the others suggested. Not sure if that’s normal or correct.

tomhanax commented 1 month ago

I wanted to mention that I had to also turn on the “Use PWM Buzzer” option as well as the others suggested. Not sure if that’s normal or correct.

Perfectly correct and required. It is because the Chatter board has small "speaker" and not the constant-frequency "beeper".

Maybe everybody know this, but maybe not, so for anybody interested, some technical info:

eureekasigns commented 1 month ago

This is cool, will try it!

Documenting in my case is following the existing command line info but having to hold a button to get it to detect com port. Sometimes it takes a few tries and timing it correctly with booting but I think that's more an issue with my computer at the moment, I'm not sure. Basically added a momentary button to the case wired to the pin on CPU and ground. Can post more pics of that later. For now it's not in the official build so that part is done manually.

Also interested in increasing font size. @tomhanax - where did you make those changes?

Side note on the case. I am not great at tinkercad and there's still a little bump where the side piece was. I greatly prefer not having that, personally. It's very tight to get the sma adapter in, then to tighten the nut, and is just a hair too narrow for the antenna I used. @scott1627 - any chance you can make a flush case design? Add a hole for extra button, and one for sma? I can share my modified stl but it's not perfect.

IMG_20240702_172252691 IMG_20240702_172330441

Mostly original design, with one extra hole for the button to hold to get it to flash. Scooped out some inside space for sma. Very tight fit for the antenna. IMG_20240702_172322995

scott1627 commented 1 month ago

This is cool, will try it!

Documenting in my case is following the existing command line info but having to hold a button to get it to detect com port. Sometimes it takes a few tries and timing it correctly with booting but I think that's more an issue with my computer at the moment, I'm not sure. Basically added a momentary button to the case wired to the pin on CPU and ground. Can post more pics of that later. For now it's not in the official build so that part is done manually.

Also interested in increasing font size. @tomhanax - where did you make those changes?

Side note on the case. I am not great at tinkercad and there's still a little bump where the side piece was. I greatly prefer not having that, personally. It's very tight to get the sma adapter in, then to tighten the nut, and is just a hair too narrow for the antenna I used. @scott1627 - any chance you can make a flush case design? Add a hole for extra button, and one for sma? I can share my modified stl but it's not perfect.

I was able to get the source compiled and uploaded to my unit. It appears to be working as intended. Switching the send to node can be a bit odd, but seems to work pretty well other than that. I can look at making a custom case design when I have some spare time. Alternatively, If you are interested, I can try to share the Fusion 360 project files with you.

scott1627 commented 1 month ago

Something I noticed when looking at the pictures of the 3d printed cases and forgot to mention earlier is that the bezel around the screen is designed to fit a small rectangle of 2mm plexiglass to act as a cover for the display and keep it from getting damaged when tossed in a bag etc. if cut to the correct size, it should snap into place securely when pressed in from the back side of the faceplate.

dogboyaa1 commented 1 month ago

Something I noticed when looking at the pictures of the 3d printed cases and forgot to mention earlier is that the bezel around the screen is designed to fit a small rectangle of 2mm plexiglass to act as a cover for the display and keep it from getting damaged when tossed in a bag etc. if cut to the correct size, it should snap into place securely when pressed in from the back side of the faceplate.

Great idea!

dogboyaa1 commented 1 month ago

I wanted to mention that I had to also turn on the “Use PWM Buzzer” option as well as the others suggested. Not sure if that’s normal or correct.

Perfectly correct and required. It is because the Chatter board has small "speaker" and not the constant-frequency "beeper".

Maybe everybody know this, but maybe not, so for anybody interested, some technical info:

  • If only the "beeper" was on board, it will be enough to only make some pin high/low for some time. The beeper will beep as long as some current (enough) pass through it. But it will be constant frequency sound, like in popular digital alarm clock.
  • To induce sound in "speaker", you have to use PWM (pulse wave modulation) to move the membrane as you want. This way you have total control of frequency and amplitude. The ext notif module supports this kind of control, which is great, so we can have nice recognizable sound pattern.

yeah I’m definitely not that technical on these. This is what makes this particular project so cool. We get to learn so much of the details that’s usually resolved already with all the other units.

tomhanax commented 1 month ago

Also interested in increasing font size. @tomhanax - where did you make those changes?

20240703_080101

I simply copied the block of code from T-Deck #ifdef section and made another nested #ifdef for the Chatter, like this in Screen.cpp:

       #ifdef T_DECK
            display->setFont(FONT_MEDIUM);
            display->drawStringMaxWidth(0 + x, 0 + y + FONT_HEIGHT_MEDIUM, x + display->getWidth(), tempBuf);
        #else
            #ifdef CHATTER_2
                display->setFont(FONT_MEDIUM);
                display->drawStringMaxWidth(0 + x, 0 + y + FONT_HEIGHT_MEDIUM, x + display->getWidth(), tempBuf);
            #else
                display->setFont(FONT_SMALL);
                display->drawStringMaxWidth(0 + x, 0 + y + FONT_HEIGHT_SMALL, x + display->getWidth(), tempBuf);
            #endif
        #endif

and also in CannedMessageModule.cpp

        #ifdef T_DECK 
            display->setFont(FONT_MEDIUM);
            display->drawStringMaxWidth(
                0 + x, 0 + y + FONT_HEIGHT_MEDIUM, x + display->getWidth(),
                cannedMessageModule->drawWithCursor(cannedMessageModule->freetext, cannedMessageModule->cursor));
        #else
            #ifdef CHATTER_2
                display->setFont(FONT_MEDIUM);
                display->drawStringMaxWidth(
                    0 + x, 0 + y + FONT_HEIGHT_MEDIUM, x + display->getWidth(),
                    cannedMessageModule->drawWithCursor(cannedMessageModule->freetext, cannedMessageModule->cursor));
            #else
                display->drawStringMaxWidth(
                    0 + x, 0 + y + FONT_HEIGHT_SMALL, x + display->getWidth(),
                    cannedMessageModule->drawWithCursor(cannedMessageModule->freetext, cannedMessageModule->cursor));
            #endif
        #endif

It is quick hack, in fact the only diff is setFont(FONT_MEDIUM) and FONT_HEIGHT_MEDIUM vs FONT_HEIGHT_SMALL. Maybe someone proficient in C++ can code this the right way ;)

However, I really do not see the reason to have small fonts on chatter or any other display large enough. IMHO this switch to MEDIUM size should be automatic based on some minimum screen px height. Maybe somebody could do this, I will surely do if I be able to do it right....

meshtastic-bot commented 1 month ago

This issue has been mentioned on Meshtastic. There might be relevant details there:

https://meshtastic.discourse.group/t/strange-transmission-behavior-on-diy-nodes/13568/31

eureekasigns commented 1 month ago

Thank you @tomhanax ! I'm going to have to try this again. My first attempt I don't think I found any reference to the t deck in the code, and where I ended up pasting this in, the display shows 2 lines of text when typing, one small, one medium, somehow. Oops. Would be really great to have the medium sized text on this.

tomhanax commented 1 month ago

Sorry, my fault. I changed the font size for T-Deck in the in the past (with some other tweaks), and forgot about it. Now I can see the changed lines and remember :) If you do not care for other devices, just for the Chatter 2, search for pricipal things like display->drawStringMaxWidth and cannedMessageModule->drawWithCursor and replace SMALL with MEDIUM in nearby commands. No need to use those conditional directives. I have several different devices, so need universal approach.

eureekasigns commented 1 month ago

Managed to get it working in some fashion but probably changed too many things. There are some elements that are too large such as the top row when showing node. Bluetooth pairing screen is a little messed up, and the boot screen has medium text on the top row.

Messed around too much for the day, I think. May try from scratch again, but I admit I may need more precise direction or just shouldn't mess with it 😶

It's cool that this is possible!

tomhanax commented 1 month ago

@eureekasigns, not sure if this is the good way to share things here, but I packed important things to the zip. You can download it here.

In the archive you will find only the files modified from current Chatter 2 PR #4022 with my changes to medium font. So you should be switched on that PR in Platformio, revert all local changes and replace matching files from the zip. Only 2 files are important and only a few lines are changed, as I stated before. The header file is for redefined buzzer pin (I mentioned this earlier, too).

tomhanax commented 1 month ago

@scott1627, thanks for the case! I printed the case and seems great, really rugged. But I have no intention to change the LoRa chip, but need to change the spring antenna for some "real" one. I plan to unsolder the sping, buy the cable from the picture and solder that thing on ANT (core) and GND (shield) pins on the chip.

obrázok

But I am not sure if this will work, can you confirm?

eureekasigns commented 1 month ago

Thank you, @tomhanax ! Works great, and now see better where things were changed. Thank you for sharing that!

I'm not sure if it's worth asking to also have this added to the keyboard support, as it's a separate change or if it's worth bundling in the build in some way but I do personally like this. Maybe some option in app that could toggle it, but I don't know if that's possible, or if the android devs would want to mess with that.

eureekasigns commented 1 month ago

Regarding the sma connector, it should work I would think. Can't hurt to get confirmation but I would think that getting the connector + real antenna would help greatly. I can test one to try if you don't hear back in about a day.

dogboyaa1 commented 1 month ago

Got a question that might sound amateurish as I am brand new to this.

I accidentally removed (aka the board fell and they are gone) 3 capacitors from the board near the lora module. From this schematic from circuitmess they are supposed to be a 10uf and a 100nf cap (wanted to add it’s the pin labeled vdd)

chatter shema (3)

Guessing they used 3 various types to be equivalent to the above but wanted to check in with you first to see if that makes sense?

scott1627 commented 1 month ago

@scott1627, thanks for the case! I printed the case and seems great, really rugged. But I have no intention to change the LoRa chip, but need to change the spring antenna for some "real" one. I plan to unsolder the sping, buy the cable from the picture and solder that thing on ANT (core) and GND (shield) pins on the chip.

obrázok

But I am not sure if this will work, can you confirm?

I can indeed confirm that this will work fine. My first unit that I built was set up exactly like this. Center conductor gets soldered in place of the springy antenna and the shield goes to the pad next to it. As others have mentioned, the hole for the SMA connector is a bit tight on the case design (didn't leave enough tolerances) I generally clean out the hole with a drill bit to make installation easier, although, I plan to update the model to make this less necessary along with some other quality of life improvements. I also plan to make a top mount antenna version. Just haven't had the time to do so yet.

eureekasigns commented 1 month ago

That is awesome news. Yeah I did not get time yesterday to get an extra out to try this for them, so thank you for confirming for them!

Look fwd to other designs!

scott1627 commented 1 month ago

That is awesome news. Yeah I did not get time yesterday to get an extra out to try this for them, so thank you for confirming for them!

Look fwd to other designs!

I have posted an update to the case design including a version with no side bump and a hole for a second button. I have also updated the original design to print better and have looser tolerances around the SMA mount. I also enlarged the area where the SMA cable comes through to make insertion of the connector much easier.

I also noticed that I must have exported the wrong STL from my fusion timeline for the front faceplate as the screw holes were not properly countersunk. I have corrected this.

I have yet to test print any of these yet, so feedback is welcome.

eureekasigns commented 3 weeks ago

@tomhanax So the keyboard support got merged. Should be built in to forthcoming releases. Thing is, the medium font workaround doesn't work with 2.4.2 anymore. Many changes in screen.cpp. tried changing a couple lines in canned messages but the top row is also medium sized when doing that.

Any chance you could try building with the latest and seeing if we can figure out how to get it the way it worked in previous version?

Guess this might even warrant its own thread/pr. The only issue with medium font is that it cuts text off if the message is too long, but I'm willing to live with that.

tomhanax commented 3 weeks ago

I tried with latest (2.4.2) version and no problem. Here is the patch: medium_font.patch.txt (apply with git apply medium_font.patch.txt)

eureekasigns commented 3 weeks ago

I tried with latest (2.4.2) version and no problem. Here is the patch: medium_font.patch.txt (apply with git apply medium_font.patch.txt)

Heroic! Thanks!

Will give this a try when I get time.

eureekasigns commented 2 weeks ago

@tomhanax works great. Thanks again!

Be great if there was some way to set this font size as an option in the app. Some might prefer the small font for more text on screen I suppose.