Jump to content



Photo
- - - - -

Preview release: Pinscape Pico


  • Please log in to reply
180 replies to this topic

#81 mjr

mjr

    Pinball Wizard

  • Members
  • PipPipPipPipPip
  • 3,332 posts

  • Flag: United States of America

  • Favorite Pinball: Medieval Madness

Posted 17 May 2025 - 04:28 PM

> But you can claim it for refund then and the only thing you loose is time, not money.

 

Sure, Amazon is likewise always reliable about taking returns - it's just a matter of your tolerance for the frustration factor, and how much time you want to invest in debugging to determine whether you have bad hardware or you're doing something wrong setting it up.  For my own part, I'm willing to spend some effort debugging, since a lot of my own purchases along these lines are for R&D projects anyway, but if you're just trying to get a Pinscape Pico set up, it might be frustrating to have to spend a bunch of time figuring out if the LIS3DH board (for example) is broken or flaky.


Edited by mjr, 17 May 2025 - 04:32 PM.


#82 DeKay

DeKay

    Hobbyist

  • Members
  • PipPip
  • 12 posts
  • Location:Canada

  • Flag: ---------

  • Favorite Pinball: Addam's Family

Posted 18 May 2025 - 11:03 PM

You can always source the LIS3DH modules from AliExpress. They are like 4 USD and if you spend 10 USD, you get the 7 day shipping free.

 

I wouldn't be so much worried about working / not working as much as getting a poor clone and not knowing if its performance was up to snuff wrt noise floor and the like. And I say this as somebody that has ordered a lot from Ali. Ordering from sellers with lots of orders helps improve the odds though. Anybody know if there are clone LIS3DH modules out there to worry about?



#83 rickh

rickh

    Enthusiast

  • Gold Supporter
  • 435 posts
  • Location:Raleigh

  • Flag: United States of America

  • Favorite Pinball: I love them all

Posted 19 May 2025 - 03:41 PM

 

You can always source the LIS3DH modules from AliExpress. They are like 4 USD and if you spend 10 USD, you get the 7 day shipping free.

 

I wouldn't be so much worried about working / not working as much as getting a poor clone and not knowing if its performance was up to snuff wrt noise floor and the like. And I say this as somebody that has ordered a lot from Ali. Ordering from sellers with lots of orders helps improve the odds though. Anybody know if there are clone LIS3DH modules out there to worry about?

 

I don't think that this device is worth cloning, as it is a MEMS chip and is very difficult to replicate without going through a costly and lengthy design cycle.  More realistic is getting part of a marginally defective batch of devices that were pulled out of the dumpster and reused.  I know it sounds crazy, but it happens.  In addition, those accelerator modules are not tested and I have received a module without the chip installed! What was really ironic, was that this module had a QA arrow indicating the defect.  So I assume it was pulled out of the trash and sold as a working unit.

 

 

Regards,

 

Rick  


Rickey

Intense Arcade

http://www.intensearcade.com

 


#84 karlson18

karlson18

    Enthusiast

  • Members
  • PipPipPip
  • 94 posts

  • Flag: Germany

  • Favorite Pinball: Strikes and Spares

Posted 28 May 2025 - 12:13 PM

Hello,

I want to build a PincapePico controller and don't want to use DIY circuit boards. Instead, I'd rather use a breadboard to solder the parts myself. All the parts are here, but I don't know which GPIO is for the plunger slider and which is for the Lis3dh to push.

Is there a connection diagram that shows all the connections, buttons included?

 

Thank

Karlson



#85 mjr

mjr

    Pinball Wizard

  • Members
  • PipPipPipPipPip
  • 3,332 posts

  • Flag: United States of America

  • Favorite Pinball: Medieval Madness

Posted 28 May 2025 - 05:08 PM

> I'd rather use a breadboard to solder the parts myself.

 

Interesting idea.  I expect this will be rather challenging if you plan to build the full two-board DIY set, but certainly doable with some patience and care.

 

> Is there a connection diagram that shows all the connections, buttons included?

 

Yes - it's all in the schematic.  The schematic is also the plan you'll have to follow to build the rest of the circuitry.  The first page ("Main Pico") shows the connections for the GPIOs and all other pins for the primary Pico.  The second page ("Worker Pico 0") shows the corresponding connections for the secondary Pico (which acts as a PWM controller).


Edited by mjr, 28 May 2025 - 05:09 PM.


#86 karlson18

karlson18

    Enthusiast

  • Members
  • PipPipPip
  • 94 posts

  • Flag: Germany

  • Favorite Pinball: Strikes and Spares

Posted 29 May 2025 - 06:46 AM

Thank you for the informations i only want to have Buttons with leds and nudging and the plunger.

#87 rickh

rickh

    Enthusiast

  • Gold Supporter
  • 435 posts
  • Location:Raleigh

  • Flag: United States of America

  • Favorite Pinball: I love them all

Posted 29 May 2025 - 12:31 PM

Thank you for the informations i only want to have Buttons with leds and nudging and the plunger.

I have a simple Pico project on GitHub:

https://github.com/r...nstructions.pdf

The project was written in circuit python using a HID Joystick driver I found.  Although this code works good, the HID joystick driver only uses 8 bits, which does not compliment the 10 bits provided by the accelerometer.  Additionally, it is suggested that the buttons inputs be pulled high while the other button end be tied to ground (instead of the 3.3V shown in schematic).  This will require changing the python code which is easy.  

A much better option is to use MJR's Pinscape Pico code.  I think MJR mentioned that his configurator will work with this basic setup (I could be wrong).

 

Another option that might interest you is a project on this forum that uses a Zero Delay Game interface PCBA that is modified for an analog input for X,Y,Z.  https://www.vpforums...309#entry546299

 

Good luck,

 

Rick 


Rickey

Intense Arcade

http://www.intensearcade.com

 


#88 mjr

mjr

    Pinball Wizard

  • Members
  • PipPipPipPipPip
  • 3,332 posts

  • Flag: United States of America

  • Favorite Pinball: Medieval Madness

Posted 29 May 2025 - 05:04 PM

> Thank you for the informations i only want to have Buttons with leds and nudging and the plunger.

 

The full DIY boards would be overkill for that.  Depending on many button inputs you want, you might only need the bare Pico for that, but you'll probably need some external circuitry to drive the button LEDs if they're over about 10mA.

 

How much experience do you have with microcontroller projects?  If you know your way around an Arduino or Pico or something similar, you should be able to put together what you need by looking at the JSON Config Reference.  The Pico is infinitely flexible, and the Pinscape software is highly configurable, so there are many ways to accomplish what you're trying to do.  But I'm afraid there's not a lot of "tutorial" material for this project yet, so you're going to need to be comfortable digging through technical documentation (the Config Ref in particular).

 

Config Ref:

 

http://mjrnet.org/pi...ONConfigRef.htm

 

If you haven't done any microcontroller work before, or you find the Config Ref too big/intimidating, you're probably going to be happier looking for something a little more off-the-shelf, like one of Arnoz's boards, something from VirtuaPin, something from PinOne, etc.



#89 parallaxx

parallaxx

    Hobbyist

  • Members
  • PipPip
  • 20 posts

  • Flag: Italy

  • Favorite Pinball: addam's family

Posted 30 May 2025 - 02:50 PM

Hello! I'd like to test and send to production (jlcpcb) a Pinscape Pico Pro board, but I have some warnings on BOM list and I'd like to be sure that components are correct.
 

Could you please help? I uploaded my gerber, bom and cpl files here: https://drive.google...Dqh?usp=sharing

 

Thanks



#90 karlson18

karlson18

    Enthusiast

  • Members
  • PipPipPip
  • 94 posts

  • Flag: Germany

  • Favorite Pinball: Strikes and Spares

Posted 30 May 2025 - 07:59 PM

> How much experience do you have with microcontroller projects?

Some experience with Arduino, for my old vpin i build your Pinscape the same way i plan to do the PinscapePico. I think i will have fun to do this and i wil learn something more about microcontrollers.

#91 mjr

mjr

    Pinball Wizard

  • Members
  • PipPipPipPipPip
  • 3,332 posts

  • Flag: United States of America

  • Favorite Pinball: Medieval Madness

Posted 30 May 2025 - 10:49 PM

> Some experience with Arduino, for my old vpin i build your Pinscape the same way i plan to do the PinscapePico.

 

Great, I think you'll find this pretty similar, then.  The Config Reference has wiring diagrams for the supported accelerometers.  If you need a large number of buttons, you'll probably want to also add 74HC165 chips for extra button inputs, and the ref has a wiring diagram for those as well.  If you need output power boosters for driving lights or other devices, the PWM Worker data sheet has several example circuit plans for that - you can use those circuits directly with the main Pico if you don't run out of GPIO ports first, otherwise you can add a secondary Pico as a PWM Worker to add more ports.



#92 karlson18

karlson18

    Enthusiast

  • Members
  • PipPipPip
  • 94 posts

  • Flag: Germany

  • Favorite Pinball: Strikes and Spares

Posted 31 May 2025 - 01:53 PM

ok thanks for the feedback. First of all I will see how many buttons I need. Then look in the script how they are coded. Then I will do a test assembly, if everything is ok i will start planning on a breadboard. If i run into problems which i assume i will let you know. If everything goes well i can provide a small guide of my procedure.

 

greetings

karlson



#93 mjr

mjr

    Pinball Wizard

  • Members
  • PipPipPipPipPip
  • 3,332 posts

  • Flag: United States of America

  • Favorite Pinball: Medieval Madness

Posted 31 May 2025 - 06:09 PM

> Then look in the script how they are coded.

 

Just to clarify, the "JSON Config Reference" isn't a JSON script, it's documentation.  (It's a book about how to write the JSON configuration file, not JSON itself, and it has lots of additional information about how to set up the physical wiring for all of the peripherals.)


Edited by mjr, 31 May 2025 - 06:10 PM.


#94 karlson18

karlson18

    Enthusiast

  • Members
  • PipPipPip
  • 94 posts

  • Flag: Germany

  • Favorite Pinball: Strikes and Spares

Posted 02 June 2025 - 12:34 PM

And back with the first question. The connection for the button should be clear for me. But do i need a I2C Bus to connect the lis3dh and the plunger sensor or is it possible to do this like it is done in the Little Bang project? I want to keep it as simple as possible. I will use a Wemos D1 pro for the LED strips.

With the KL25z it was very easy to connect everything, maybe I just didn't find all the information.

 

Greetings

Karlson


Edited by karlson18, 02 June 2025 - 12:54 PM.


#95 mjr

mjr

    Pinball Wizard

  • Members
  • PipPipPipPipPip
  • 3,332 posts

  • Flag: United States of America

  • Favorite Pinball: Medieval Madness

Posted 02 June 2025 - 05:37 PM

> But do i need a I2C Bus to connect the lis3dh and the plunger sensor

> or is it possible to do this like it is done in the Little Bang project?

 

Right, LIS3DH requires an I2C connection.  (Which is how Little Bang does it as well, if you were thinking it's different there.)  Again, if you look at the Config Ref, it'll show you how to wire it.  All of the Pico GPIO pins are I2C-capable, so you just have to choose which pair of pins to assign as the I2C connection points - the i2c section in the Config Ref explains that part.


Edited by mjr, 02 June 2025 - 05:41 PM.


#96 FredBear

FredBear

    Enthusiast

  • Gold Supporter
  • 50 posts

  • Flag: Australia

  • Favorite Pinball: Eight Ball Deluxe

Posted 08 June 2025 - 08:26 AM

I've been doing some tinkering with the Pico and managed to incorporate a VCNL4010 Prox Sensor for the plunger and a LIS3DH for nudging, to the point where I have pretty much all the basic functionality that was offered with the "standalone" KL25Z Pinscape.

 

I do need some guidance for one last thing though, which is Shift functionality for the pushbuttons. Coming from many arcade control panel setups using an I-PAC it was great to see this feature available with the KL25Z Pinscape, however I'm having trouble working out whether the Pinscape Pico can do something similar. I seem to recall some mention of it in the documentation (which is overwhelmingly comprehensive!) but now that I'm ready to look into it, for the life of me I can't find any reference to it.

 

Any help would be great.

 

Also, re concerns in previous posts as to whether the different LIS3DH modules may cause issues. I have some experience using the following modules from Ali Express:

https://www.aliexpress.com/item/1005006579261261.html 

 

In particular the BLUE board is what I've used and they seem to perform pretty well, although I have not yet installed one in a cabinet to fully test its performance.

 

They are available in Blue and Purple and appear to be identical, apart from the INT1 and INT2 inputs being reversed from one module to the other. I doubt this would be an issue though.


Edited by FredBear, 08 June 2025 - 08:26 AM.


#97 mjr

mjr

    Pinball Wizard

  • Members
  • PipPipPipPipPip
  • 3,332 posts

  • Flag: United States of America

  • Favorite Pinball: Medieval Madness

Posted 08 June 2025 - 04:18 PM

Yes, there’s a shift-button feature - it’s actually a bit more powerful than the KL25Z version, in that you can have multiple shift buttons to make chords of modifiers, in case you need more than just two alternative functions for a button.  The mechanism is a little more “technical” to set up, but there are some recipes for the common cases laid out in the JSON Config Reference.  Go down to the Buttons section, and find the part about type=“shift” - that has a collection of examples for how to set things up.



#98 FredBear

FredBear

    Enthusiast

  • Gold Supporter
  • 50 posts

  • Flag: Australia

  • Favorite Pinball: Eight Ball Deluxe

Posted 09 June 2025 - 09:10 AM

Yes, there’s a shift-button feature - it’s actually a bit more powerful than the KL25Z version, in that you can have multiple shift buttons to make chords of modifiers, in case you need more than just two alternative functions for a button.  The mechanism is a little more “technical” to set up, but there are some recipes for the common cases laid out in the JSON Config Reference.  Go down to the Buttons section, and find the part about type=“shift” - that has a collection of examples for how to set things up.

Thanks mjr,

I checked that out but I didn't get far before I realised that it all goes completely over my head! I just don't understand the hierarchy of "Shift", Shift Bits" and ShitMask (i.e. are the types, actions or something else) and how and where I reference the shifted keystroke to be used. I found an example of how the Macro function works but this is somewhat different to Shift.

 

Please help me make sense of this.



#99 mkotek

mkotek

    Neophyte

  • Members
  • Pip
  • 9 posts

  • Flag: Poland

  • Favorite Pinball: Dragon's Lair

Posted 09 June 2025 - 11:00 AM

 

Yes, there’s a shift-button feature - it’s actually a bit more powerful than the KL25Z version, in that you can have multiple shift buttons to make chords of modifiers, in case you need more than just two alternative functions for a button.  The mechanism is a little more “technical” to set up, but there are some recipes for the common cases laid out in the JSON Config Reference.  Go down to the Buttons section, and find the part about type=“shift” - that has a collection of examples for how to set things up.

Thanks mjr,

I checked that out but I didn't get far before I realised that it all goes completely over my head! I just don't understand the hierarchy of "Shift", Shift Bits" and ShitMask (i.e. are the types, actions or something else) and how and where I reference the shifted keystroke to be used. I found an example of how the Macro function works but this is somewhat different to Shift.

 

Please help me make sense of this.

 

It seems, you have only started reading the reference. Please search for thge following items in the document:

buttons[].type="shift"

buttons[].shiftMask

buttons[].shiftBits 

although I must admin, having clear example for standard button configuration like for original Pinscape would help everyone.

The type is the Shift button definition itself (with buttons[].tPulse property definition required for SHIFT-OR button).

The rest is another definition used for comparison.

 

Michal


Edited by mkotek, 09 June 2025 - 11:06 AM.


#100 mjr

mjr

    Pinball Wizard

  • Members
  • PipPipPipPipPip
  • 3,332 posts

  • Flag: United States of America

  • Favorite Pinball: Medieval Madness

Posted 09 June 2025 - 06:25 PM

I agree, the doc really needs an example of the basic setup with one shift button.  I'll add something to the buttons overview section, but in the meantime, here's a quick outline.

 

In my own cab, I use the Extra Ball button as the Shift button, because the Extra Ball function is something I use only rarely.  The standard "Extra Ball" command is VP is the "2" key press, so that's going to be the action for the button.  Since it's the Shift button, it has to be configured in the JSON as type="shift".  And I want it to be a "Shift-OR" button, so that it still sends the "2" key when I press it, but only when I DON'T use it as a Shift button by pressing another button at the same time.  To get Shift-OR behavior, I have to set up a pulse time with tPulse.  So here's the buttons[] entry:

{
    type: "shift",          // this is a SHIFT button
    shiftBits: 0x0001,      // activate the 0x0001 shift bit when pressed
    source: { type: "gpio", gp: 15 }, 
    action: { type: "key", key: "2", },   // when NOT acting as a Shift button, send the "2" key ("Extra Ball" in VP)
    tPulse: 20,             // pulse the "2" key for 20 milliseconds when pressed WITHOUT another button press at the same time
},

Now for the buttons with two functions, depending on whether Extra Ball is being pressed at the same time.  I use my Right MagnaSave and Right Flipper buttons as Audio Volume Up and Audio Volume Down when shifted.  So normally, they have their standard VP mappings of "Right Ctrl" and "Right Shift", and when I press Extra Ball, they become F20 and F19 for Volume Up and Volume Down.  (I map those obscure "F" keys as volume keys in PinVol, because there aren't any other applications that use them, so they don't trigger any unwanted side effects when used as global hotkeys for PinVol.)  For each of these buttons, I have to set up TWO entries in the buttons[] array, one for the shifted function and one for the regular function.

// Right MagnaSave - regular function = Right Ctrl
{
    type: "push",
    source: { type: "gpio", gp: 10 },
    action: { type: "key", key: "right ctrl" },
    shiftMask: 0x0001,  // only activate when shift bit...
    shiftBits: 0x0000,  // ...is NOT engaged (bits are all zero)
},

// Right MagnaSave - shifted function = F20 (Volume Up)
{
    type: "push",
    source: { type: "gpio", gp: 10 },
    action: { type: "key", key: "f20",
    shiftMask: 0x0001,  // only activate when shift bit 0x0001...
    shiftBits: 0x0001,  // ... IS engaged (bits match 0x0001)
},

// Right Flipper - regular function = Right Shift
{
    type: "push",
    source: { type: "gpio", gp: 9 },
    action: { type: "key", key: "right shift" },
    shiftMask: 0x0001,  // only activate when shift bit 0x0001...
    shiftBits: 0x0000,  // ... is NOT engaged (bits are all zero)
},

// Right Flipper - shifted function = F19 (Volume Down)
{
    type: "push",
    source: { type: "gpio", gp: 9 },
    action: { type: "key", key: "f19",
    shiftMask: 0x0001,  // only activate when shift bit 0x0001...
    shiftBits: 0x0001,  // ... IS engaged (bits match 0x0001)
},

The shiftBits and shiftMask is where this gets ridiculously technical, and I don't want to make this post too long by repeating all of the documentation on that here, so here's a simple rule that will always work if you just want one Shift button: just make shiftMask 0x0001 in all cases, and make shiftBits 0x0001 for the shifted buttons and 0x0000 for the non-shifted buttons.


Edited by mjr, 10 June 2025 - 04:48 PM.