11

Embedded app design resources?

We have a device that is currently controlled through buttons and knobs. We are rethinking this design. We want to have a mix of buttons and knobs and in addition have a touchscreen. The controls must be redundant. So if we turn off the touch screen it must be able to control everything.

Does anyone know of any design resources for non-touchscreen embedded control?

I have been looking into how gaming console controls work. I like how they have the idea of controlling the game vs breaking the 4th wall. We have a similar constraint as we want the operator focused on what they are controlling and not the controls or even sometimes the screen. So immersion is definitely a concept for us. I have been toying with the idea of adding a d-pad for some controls. We have not solidified the hardware controls yet. That is still up to me to come up with some ideas to make it more intuitive.

Comments
  • 6
    @fast-nop summoning embedded guru!
  • 1
    @Demolishun What OS and embedded platform will you use?
  • 4
    @Demulishun One big topic for buttons is debouncing. Did you already consider that in your design choices?

    Also calling in @happygimp0.
  • 4
    @Fast-Nop That is being done by electrical engineers designing the circuits. We have a mockup and all the switches are debounced. It is many layers of abstraction away from me anyway.
  • 2
    @PonySlaystation We are using Linux with eglfs or something. I dunno, the techstack is Qt.
  • 5
    @Demolishun Then you'd need to clarify whether debouncing is already done in HW using e.g. Schmitt triggers, or whether you need to do that in SW. In the latter case, that will influence your architecture somewhat.

    Because without special caretaking in HW, if you press a button, the µC input doesn't change from 0 to 1 - instead, it kicks back and forth for around 10ms.
  • 6
    In any case, you'd put the button actions into a queue so that the order is preserved for application level processing.

    To also keep the touchscreen actions in sync, you can either have two queues and add high-res time stamps to the event structure, then check which queue has the oldest front entry. Or you could use one queue and write it from two places, with appropriate locking of course.

    For the application layer, it wouldn't make a difference from where the event came so that you'd use the same application event handler routines.
  • 1
    @Fast-Nop You can't eliminate bouncing with a schmitttrigger alone, you would (also) need a RC-circuit or something else (But RC is probably the cheapest hardware solution).
  • 0
    @happygimp0 Sure, that's the usual practice, or else the trigger gets dragged over/under the trigger thresholds during the bouncing.
  • 1
    @Demolishun What is your goal? And what are your questions.

    Things you also have to worry about in embedded software that you don't have on a PC or Server: Sudden power lose is the norm (only mount a folders writeable where you actually have to write), maybe you don't have time information, you may have no or not enough (secure) random entropy.

    For the most part, embedded Linux development is not that different from programming for a PC. You say you need a gui? I made a Service that starts the X-Server (without any DE or window manager) and starts my GUI program on that X-Server. I make the GUI in its own program that communicates with sockets (the normal ones, not network sockets), this way i can SSH into a machine with X-forwarding and start the GUI on my PC in parallel.

    Use a sane language like C or C++, not JavaScript.

    Do you make your own SBC? We don't do that, most components are attached via a CAN bus, this way we can change the SBC without breaking too much.
  • 0
    I am trying to find design resources for UI. Like minimal controls for dials and buttons. Every resource out there talks about how to use a touch screen. We have a touch screen, but we are trying to make it so we have base physical controls for everything that is necessary to complete the task. I started looking into gaming console design because they have a minimal set of inputs and they use that to control the entire interface. The task controls industrial process which is well defined. As is the electronics. That part I don't have to worry about. My input will help decide number of buttons and the like.
  • 0
    @Demolishun I don't see how this would be different than for any other GUI application. Doesn't have Qt buttons and dials?
  • 0
    @Demolishun If you are talking about physical switches, then you can either us:

    - GPIOs on your Processor. Add some input filter any maybe ESD protection at the input.

    - Use a Keyboard (controller) for the inputs and connect them via USB. Something like a SK5100.

    - Use a different BUS with devices that have IOs, like CAN, I2C, SPI, ....
Add Comment