Proffie Test Bed

Hello The Crucible,

It is now clear to me that my saber design is taking way too long. Also I cracked my 28mm 4 Ohms 3 Watts speaker and I doubt it will work. I will have to order a new one since that size is not available in my local shops.

I would like to test my new props before the ProffieOS 8.x release deadline.

So I decided to change direction and make a test bed instead.

Please check the photos and let me know if I have any chance of making it work:




I would like to not have to solder to the Proffie board directly. I have a lot of Arduino wires with the pins on one side and the ‘hole’ on the other. I don’t mind cutting through that.

Also the speaker I found is a 50mm 8 Ohm 3 Watt. If I remember correctly, I will need to add a resistor to make it Proffie board “compatible” but parallel, series, what value ?

Since my props are only controlled by buttons and not movements, I am hopping that not having spring loaded pogo pins (I will order them for the next edition of my test bed), I am hoping that those header pins would be sufficient ?

If you are interested in my stl, you can find it here:
https://www.dropbox.com/scl/fo/tgf1igvna3wll9e1ahebo/APxPvh3LzexryUwUYaOPOoA?rlkey=kzt07xin5l7a9g9a2cma7v77a&st=lh8z7ic0&dl=0

As always, thank you for any advice.

Cheers,

Looks pretty cool! The thru pins may work ok, but they may also give you headaches.

Where are the buttons going? on the breadboard? Are you gong to solder wires for jumpers under to get to the items you want to test?

Thanks, yes the buttons are going on the green board.

Wires are going to be soldered above and or under with a solder bridge between two holes if needed.

The pre-attached wires on the battery box seem really tiny. I should probably change that, right ?

Its hard to tell, but unless your testing a full length blade, it probably doesn’t matter.

1 Like

It’s a 10 pixels strip.

Unlikely.
I have tried using square pins for things like this, and it’s given me nothing by headaches. It seems like it should work, but in my experience there is always some pin that isn’t connecting well enough to work properly. You really really want something spring-loaded, like pogo pins, for test setups.

That is too bad because it is almost done:



I just need to swap the 3D printed Proffie board with the real one and add a resistor between Data3 and the led strip (I cut the wire too short to go around the back to Data1 and I didn’t want to go in front of USB or SD reader and I forgot about the resistor until I checked the pin table :roll_eyes: to change the config).
Will 470 Ohm be enough for 10 pixels ?

So what kind of headaches are we talking about? Magic Blue smoke of death or just not working. Do I risk damage to my Proffie Board or just my ego if I continue this route?

I checked for continuity, I believe most is ok ?

  • Black wires have continuity
  • Speaker wires have continuity
  • Red wires have continuity or not depending on the ON/OFF switch.
  • The 3 momentary switches have continuity with black wires but only when pressed

I found one weird continuity on the led strip (WS2812B) between GND and 5v. I checked a new strip (untouched by my crude soldering skills)and it has the same behavior. Is it normal or a bad strip ?

That’s a weird question. The size of the resistor on the data line does not depend on the number of pixels.

Mostly frustration I think. magic smoke problems shouldn’t really happen by randomly disconnecting something.

Yes, that was a weird way of asking the question: a mix of

  • tired
  • brain f@art
  • a sprinkle of ADD, ADHD, Asperger, and what ever else my wife has not told me I probably have!
  • add a tsp of some French thinking that didn’t translate well
  • and last but not least, a dash of multiple personality: on my way to bed
    • one said “wtf did you write?”
    • the other said “it’ll be fine!”
    • the next said “shut-it, trying to go to sleep here!”

:upside_down_face:

What I probably meant to say: "Would 470 Ohm be adequate for 10 WS2812B pixels ? I don’t remember why/how I got WS2812B instead of WS2811/

  • ordering error
  • shipping error but I didn’t realize or knew any better back then (extremely likely)
  • too excited to even bother (most likely)
  • or I had decided after some reading (I definitely did a lot of reading about them) that they would be “identical” in function? Are they? And is it normal that GND and 5v seem to have continuity (through the pixels) ?

What if the pixels are faulty/damaged/incorrect/ or “incompatible somehow”, could that damage the Proffie Board ?

That seems like the same (weird) question.

If you short + to -, bad things could happen. However, the protection circuit in the battery generally turn off before the FETs on the board die.

If you short data to + or -, you could damage the cpu, that’s one of three reasons why you want to have a resistor on the data line: It protects your CPU from such shorts.

The second reason is to protect the pixels from shorts.
The third reason is prevent the pixels from leeching current form the data line and staying on when they aren’t supposed to.

1 Like

But am I supposed to have continuity between GND and +5V on led strip or do I have a defective strip ?

I just re-tested: when I put my red probe on +5V and black probe on GND I get a faint very short crackle, but when I invert the probes I get continuity. Is this how it’s supposed to be ?

And when I measure resistance, it is a very temporary initial slightly short of 2000 Ohm or a continuous 505 to 530 Ohm

Depends on how your meter defines “continuity”.
Basically there is no easy answer to that.

Resistance is better. I don’t know if ~500ohms is correct, but since it’s not very low (like, less than 5 ohms) it should be safe to plug in the battery and see if they work.

Shorts are low ohms, not high.

It is a cheap multimeter, It beeps :grin:

wrong English then, I meant a bit less than 2000 Ohm like 19xy, it goes too fast to read

thats amazing progress!

I have a TCSS diagnostic station, but it didn’t support enough pins–so I’m building one too, but I’m really, really, really slow.

I’m using spear-tipped test probes and a resin printed proffie housing. I looked at bread-boards but am currently planning to use screw-type and banana wiring blocks and/or JST connectors soldered directly to the test probes. Your speaker is also awesome–I’m using a 4ohm 3W 40mm speaker (unless I can cram it into a dooku, then I’ll need another speaker). At my current rate, I’ll be finished by mid-2026.

I hope you don’t mind if I borrow your battery holder idea… it’s brilliant.

1 Like

Please borrow anything you like (except my horrible soldering skill, :roll_eyes:)

1 Like

Some progress:

After bending a few pins to submission, some more than others :grin:
I have:

  • sound (but the quality is a bit crackly at times. If I keep the volume bellow 2500, crackling goes away
  • button controls (I checked with serial monitor and all 3 register being pushed). I have disabled AUX2 in my config for now as I am not familiar with 3 buttons sequences.
  • some lights:
    • only the first 5 light-up initially and 1 to 3 more after a few clashes or blaster deflect, but all only in RED. I got to 8 out of 10 with RgueCmdr preset but only 6 to 7 with the other presets.
    • When I connect the USB cable I get yellow on the first pixel
    • When I retract the blade some pixels stays for a short moment in orange or green.
    • I do sometimes get a pixel that lights up faint green or faint red (between blaster deflects).

So my questions:

  1. Why only RED when the blade is extended ?
  2. Why do I only get 5 to 8 (out of 10) pixels to light-up ?
  3. Why do I get some extra pixels to light-up but only after a few clashes or blaster deflects ?

Here is my config:

// ProffieOS8.x Config File

#ifdef CONFIG_TOP
#include "proffieboard_v3_config.h"
#define NUM_BLADES 1
#define NUM_BUTTONS 2
#define VOLUME 1000
const unsigned int maxLedsPerStrip = 144;
#define CLASH_THRESHOLD_G 1.0
#define ENABLE_AUDIO
#define ENABLE_MOTION
#define ENABLE_WS2811
#define ENABLE_SD

#define PLI_OFF_TIME 1000 * 60 * 1
#define IDLE_OFF_TIME 1000 * 60 * 20
#define MOTION_TIMEOUT 1000 * 60 * 15
#define PROFFIEOS_LOG_LEVEL 300
#define ENABLE_ALL_EDIT_OPTIONS
#define DISABLE_COLOR_CHANGE
#define SAVE_STATE
#define STEPS_PER_REVOLUTION 15
#define FONT_PATTERN "*;common"
#define VOLUME 2500
#define BOOT_VOLUME 1500
#define VOLUME_MENU_CYCLE                   //For SA22C volume control in jetpack
#define FILTER_CUTOFF_FREQUENCY 200
#define FILTER_ORDER 8
#define CLASH_THRESHOLD_G 4.0     //was 2.0
#define ENABLE_IDLE_SOUND
#define FEMALE_TALKIE_VOICE
#define COLOR_CHANGE_DIRECT
#define EXTRA_COLOR_BUFFER_SPACE 60

#define SA22C_NO_LOCKUP_HOLD
#define SA22C_STAB_ON
#define SA22C_SWING_ON
#define SA22C_TWIST_ON
#define SA22C_THRUST_ON
#define SA22C_TWIST_OFF
#define SA22C_FORCE_PUSH
#define SA22C_FORCE_PUSH_LENGTH 5
#define GESTURE_AUTO_BATTLE_MODE
#define SA22C_LOCKUP_DELAY 200 // (insert number here) - Default value is 200

#endif // CONFIG_TOP

// MTFBWY

#ifdef CONFIG_PROP
#include "../props/saber_sa22c_buttons.h"
#endif // CONFIG_PROP

#ifdef CONFIG_PRESETS
Preset presets_saber[] = {
   { "crispity;common", "common/tracks/track1.wav",
    StylePtr<Layers<
      Layers<
        AudioFlicker<RgbArg<BASE_COLOR_ARG,HotPink>,RotateColorsX<BlinkingF<Int<1000>,Int<500>>,Rgb<50,0,150>>>,
        TransitionLoopL<TrWaveX<RandomPerLEDFlickerL<White>,Int<250>,Int<100>,Int<200>,Int<0>>>,
        TransitionLoopL<TrWaveX<StrobeL<White,Int<15>,Int<1>>,Int<350>,Int<100>,Int<300>,Int<0>>>>,
      LockupTrL<Layers<
        AlphaL<AudioFlickerL<RgbArg<LOCKUP_COLOR_ARG,White>>,Bump<Scale<BladeAngle<>,Scale<BladeAngle<0,16000>,Int<4000>,Int<26000>>,Int<6000>>,Scale<SwingSpeed<100>,Int<14000>,Int<18000>>>>,
        AlphaL<White,Bump<Scale<BladeAngle<>,Scale<BladeAngle<0,16000>,Int<4000>,Int<26000>>,Int<6000>>,Int<10000>>>>,TrConcat<TrInstant,White,TrFade<400>>,TrConcat<TrInstant,White,TrFade<400>>,SaberBase::LOCKUP_NORMAL>,
      ResponsiveLightningBlockL<Strobe<RgbArg<LB_COLOR_ARG,White>,AudioFlicker<White,Blue>,50,1>,TrConcat<TrInstant,AlphaL<White,Bump<Int<12000>,Int<18000>>>,TrFade<200>>,TrConcat<TrInstant,HumpFlickerL<AlphaL<White,Int<16000>>,30>,TrSmoothFade<600>>>,
      ResponsiveStabL<RgbArg<STAB_COLOR_ARG,Red>>,
      ResponsiveBlastL<RgbArg<BLAST_COLOR_ARG,White>,Int<400>,Scale<SwingSpeed<200>,Int<100>,Int<400>>>,
      ResponsiveClashL<RgbArg<CLASH_COLOR_ARG,White>,TrInstant,TrFade<400>,Scale<BladeAngle<0,16000>,Int<4000>,Int<26000>>,Int<6000>,Int<20000>>,
      TransitionEffectL<TrConcat<TrInstant,HumpFlickerL<White,40>,TrFade<1000>>,EFFECT_RETRACTION>,
      LockupTrL<AlphaL<BrownNoiseFlickerL<RgbArg<DRAG_COLOR_ARG,White>,Int<300>>,SmoothStep<Int<30000>,Int<5000>>>,TrWipeIn<400>,TrFade<300>,SaberBase::LOCKUP_DRAG>,
      LockupTrL<AlphaL<Mix<TwistAngle<>,Red,Orange>,SmoothStep<Int<28000>,Int<5000>>>,TrWipeIn<600>,TrFade<300>,SaberBase::LOCKUP_MELT>,
      InOutTrL<TrWipe<300>,TrColorCycle<1000>>>>(),
    "crispity" },

   { "TeensySF;common", "common/tracks/venus.wav",
    StyleNormalPtr<CYAN, WHITE, 300, 800>(),
    "cyan"},

   { "SmthJedi;common", "common/tracks/mars.wav",
    StylePtr<InOutSparkTip<EASYBLADE(BLUE, WHITE), 300, 800> >(),
    "blue"},

   { "SmthGrey;common", "common/tracks/mercury.wav",
    StyleFirePtr<RED, YELLOW>(),
    "fire"},

   { "SmthFuzz;common", "common/tracks/uranus.wav",
    StyleNormalPtr<RED, WHITE, 300, 800>(),
    "red"},

   { "RgueCmdr;common", "tracks/venus.wav",
    StyleFirePtr<BLUE, CYAN>(),
    "blue fire"},

   { "TthCrstl;common", "common/tracks/mars.wav",
    StylePtr<InOutHelper<EASYBLADE(OnSpark<GREEN>, WHITE), 300, 800> >(),
    "green"},

   { "TeensySF;common", "common/tracks/mercury.wav",
    StyleNormalPtr<WHITE, RED, 300, 800, RED>(),
    "white"},

   { "SmthJedi;common", "common/tracks/uranus.wav",
    StyleNormalPtr<AudioFlicker<YELLOW, WHITE>, BLUE, 300, 800>(),
    "yellow"},

   { "SmthGrey;common", "tracks/venus.wav",
    StylePtr<InOutSparkTip<EASYBLADE(MAGENTA, WHITE), 300, 800> >(),
    "magenta"},

   { "SmthFuzz;common", "common/tracks/mars.wav",
    StyleNormalPtr<Gradient<RED, BLUE>, Gradient<CYAN, YELLOW>, 300, 800>(),
    "gradient"},

   { "RgueCmdr;common", "common/tracks/mercury.wav",
    StyleRainbowPtr<300, 800>(),
    "rainbow"},

   { "TthCrstl;common", "common/tracks/uranus.wav",
    StyleStrobePtr<WHITE, Rainbow, 15, 300, 800>(),
    "strobe"},

   { "SmthJedi;common", "common/tracks/mars.wav",
    &style_charging, "Battery\nLevel"}
};

    // "One array to bring them all, and in the darkness bind them !" "@profezzorn"
BladeConfig blades[] = {
  { 0, //SABER
    WS281XBladePtr<10, blade3Pin, Color8::GRB, PowerPINS<bladePowerPin2, bladePowerPin3> >(),
    CONFIGARRAY(presets_saber), "saber_save" },
};

#endif // CONFIG_PRESETS

#ifdef CONFIG_BUTTONS
Button PowerButton(BUTTON_POWER, powerButtonPin, "pow");
Button AuxButton(BUTTON_AUX, auxPin, "aux");
//Button Aux2Button(BUTTON_AUX2, aux2Pin, "au2");
#endif

I am using Proffie OS 8.x from Github Master (except for today’s addition but it is for Fett263 and I am using sa22c for simplicity)

Here is the latest photo:

As always, thank you for any help.

Why don’t you use spear-tipped pins and a clamp? (tried and true method)

2 Likes

Oh I will, once they get delivered! (And ordered :grin:)

I was tired of looking at my Proffieboard sitting in it’s bag doing nothing. And I need something to test my props so that is what I came up with for a temporary fix.

The first one is definitely because of low voltage. (at the strip)
I’m guessing that poor connections are causing all of these problems, but I suppose it could just be that the battery needs to be charged.

Unfortunately, the battery is at 4.1 Volt, so it must be the poor connection. :cry:

At least, I will get to try my props, finally!