Pixl.js v2 requests?

Posted on
  • Hi! Right now I'm running low on stock of Pixl.js, and rather than just making more of the same, I'm thinking now might be a good time to do a whole new design, maybe taking a few hints from Pixl.js Multicolour badge, which I've been using quite a lot myself recently.

    So I'm thinking:

    • Same low-power LCD
    • RGB backlight
    • Use an nRF52840 (256kB RAM, 1MB flash, USB, etc)
    • Make board wider, and add front-facing buttons and Arduino ICSP/SPI connector
    • Do not solder Arduino headers to keep it thinner, and just stagger them slightly so you can still push in an Arduino board if needed, or can solder headers yourself.
    • Add a Raspberry Pi compatible header (maybe just the first few pins that everyone uses) to allow connection to a Raspberry Pi or the whole ecosystem of Pi add-ons out there
    • Add a pinout for (or possibly pre-install) an ESP8266 for WiFi
    • LiPo charger and power switchover circuitry (maybe on/off switch) - make it on a Jumper so you can still use Pixl.js off 12v if needed.
    • Remove CR2032 battery connector

    And possibly:

    • Microphone (to allow Tensorflow voice recognition)
    • Piezo speaker
    • SPI Flash
    • 4x H-bridge outputs

    So the idea is to keep the super low power consumption of the original Pixl.js, but to put a bunch more features on it so it's far more usable as a standalone board.

    Does anyone have any ideas for improvements, or likes/dislikes of the original Pixl.js that might be worth taking into account?


  • In addition to USB (serial, right?) and the possibly to add a WiFi module, I would love to have

    • An accelerometer/gyro/compass/IMU (turn ON screen when LCD facing up, turn it down otherwise, in-vehicle datalogger, mobile-robotics use-cases,...)
    • Just because the graphical library is very complete, maybe a touchscreen? ;-)
    • Maybe support for multiple BLE communications at the same time if a Nordic Softdevice is available for the NRF52840?
    • One or two 3-pin servo headers (I was still thinking of the mobile robotics use-cases ...)
    • a microphone (AI, basic speech recognition)
    • secure memory (if not already in the NRF) for things like password keepers and so on

    That's all I think about now.

  • This sounds amazing Gordon. Love everything in your list. Agree that Aruduio header should be left off by default but would like the ability to add header pins.

    On the Pi front, one thing to watch out for is the orientation of the connector on the Pi 400. I've ended up using multiple adapters etc to get some screens and other devices pointing the "right" way around.

    Also agree with Jean-Philippe on the IMU. I'm using a Pixl at the moment with an external one to pick up movement. Works fine, just messy.

    On-Off switch for sure. But should totally turn off device even when connected to a charger (badge 2018 doesn't).

    Would an RTC be an over-stretch? I have one soldered to one of my 2018 badges and it's dead handy, particularly if you restart the device a lot.

    Are you thinking full USB on the nRF52840 or just charging?

    Any thoughts on USB-C connector vs micro USB? The latest Blackpill boards and some of the RISC-V boards have moved over.

    Lots of SPI Flash would be great. It's so handy on the Bangle.js

    One simple thing is that any buttons should be chunkier/meatier than the tiny ones of the 2018 badge or the tack switches of the 2017 badge. Just from a user experience perspective. Also games :-)

  • Interesting - thanks!

    IMO: I'll look at this... Honestly I hadn't expected the Pixls to be moved around too much but Robotics is a good use case, especially with a motor driver on it.

    Touchscreen would be nice, but sadly I don't think those LCDs can come with one.

    Multiple connections: definitely - there's already an issue open to add that to the nRF52832, and technically it shouldn't be too hard.

    Interesting about servo headers... I can see if there's space, however it's so easy to push an Arduino servo board on I'm not sure it's worth making the PCB bigger just to add them if I can't find space.

    Mic: yes - I feel like easy voice recognition could be a 'killer' feature. It'd be so nice to have something that you can just wire up and say 'on' or 'off' to.

    secure memory: I'm not really sure there's much sensible I can do there. I could make it easy to turn on 'read-out' protection for the firmware in the chip, but I feel like providing something half-assed and calling it secure is worse than providing nothing :)

    Pi headers: Thanks... I was thinking at the very least making it compatible with Pimoroni's Breakout Garden boards (https://shop.pimoroni.com/?q=Breakout+Ga­rden), but if I did pins 1-10 then it could also connect to the UART, so could be a plug and play terminal for the Pi. It'll need some thought to ensure it can be plugged into a Pi and is useful for those breakouts though.

    switch: I'm still in two minds about this - it should be low enough power consumption that it can do 'soft off' reasonably well. Not having a switch means the RTC will just keep running, which kind of solves your RTC issues. If I don't do that there should probably be a reset button though! (the new Pixl.js Multicolour boards have an on/off switch that works correctly ;)

    USB: Yes, definitely full USB (well, USB Serial for now)

    USB-C: Personally I'd probably stick with Micro USB as we can't use any of USB-C's features - as I understand it the USB-C connector is quite a lot more expensive and is harder to solder reliably. I think when we can do USB power delivery on the microcontroller it'd be amazing (being able to just ask for 12v power in code if you need it for a project) but until then I'm not sure it's such a big help.

    SPI Flash: yes - although the nRF52840 does have twice as much flash anyway, so likely 256kB or more will be available for flash storage (vs 40kB on most devices now). It might be something I have pads for but don't solder on - or maybe there's a 'pro' version.

    Buttons: yes - the new Pixl Multicolour has much better buttons (basically the Puck's buttons) and they come up level with the display.

    • "Same low-power LCD" - can we go a bit higher in resolution? Maybe a color memory LCD or something like that? Or would that increase price or energy consumption a lot?
    • "Arduino ICSP/SPI connector" - what's that? Or you mean SWD?
    • "USB-C" - Still, get a quote for that, would feel more up to date. Seeed's latest Seeduinos all seem to have Type-C as well.
    • Adding a Qwiic connector - Sparkfun "standardized" this, but seems like Adafruit adds it to their boards now, calling it STEMMA QT sometimes. Compatible with GROOVE as well with an adaptor cable. I personally don't have those, but would allow just plug&play I2C.
    • SPI flash or uSD card socket - yes please :)
    • 'Stackable' with different displays could be an option - similar to Pico w/ shimmed ESP8266 ESP-01.. Some displays have a touch screen. PixlJS is a great platform.
  • can we go a bit higher in resolution?

    It's a mix of price and power consumption... Memory LCDs would be lovely but are just too expensive (£20 or so for one of a decent size) and while I can get a 256x128 2 bit greyscale LCD in the same form factor, it uses about 10x the power :(

    It's tricky - I feel like Pixl.js is pretty unique in having a display and a really long battery life. I don't really want to ruin that for the sake of making the display just a bit better.

    "Arduino ICSP/SPI connector" - what's that?

    Arduino boards have a 3x2 'ICSP' connector on them that has the SPI pins on it. Some Arduino shields depend on those being there (the Ethernet shield IIRC?) so it'd be nice to have those to allow the shields to be plugged right in.

    Adding a Qwiic connector

    Thanks, that's a nice idea. At the very least I could add an outline for it and Grove

    SPI flash or uSD card socket

    The plan is to use uSD at the moment - readily available and a lot easier to poke one in than to solder a chip ;)


    I'm not quite sure what you mean here? A separate board for different LCD types? You could always stack an Arduino LCD display on the other side of it I guess?

    Touch would be nice and might give it a go and see if it works to put a capacitive touch sensor on the PCB behind the LCD. It didn't work great with NFC though, so I'm not sure how much hope I hold out.

  • Looks like you can ask for any voltage using something like https://www.onsemi.com/products/interfac­es/usb-type-c/fusb302
    In case you missed it on hackaday :)

  • Nice - I hadn't seen those. I guess that could be an interesting option - I haven't heard of any dev boards with a configurable USB voltage on them.

    It'd need some thought though - I was planning on a LiPo charger but you'd have to maybe add another voltage regulator just for LiPo charging so you didn't blow up the charger when you turned up the voltage :)

  • Somewhere you mentioned you already have some prototypes, but would adding a Feather footprint be possible?

  • Do you have any ideas how I could fit a feather footprint into a Pixl.js style form factor though?

    For future Espruino-wifi shaped boards the feather footprint makes a hell of a lot of sense though

  • Haven't checked before, just hoped one side of the arduino header would kind-of match a feather. But looks like no luck. A feather wing compatible-ish something might fit, if we ignore NFC, the coin battery and a routing signals, I guess :/

  • @Gordon, this was a very good idea..did anything happen to this?

  • Looks like Jolt.js will partially address some missing features of Espruino's ecosystem like USB serial, Qwiic connectors,...

  • @Jean-Philippe_Rey the Jolt.js would be a nice base for the Pixl.js V2.

    @Gordon: Proposal for the Pixl.js V2: A uFL socket should be used instead of ceramic or pcb antennas. Because the circuit, LCD, battery shields the chip antennas.

  • Going forward I'm pretty sure I'll try and stick Qwiic connectors on new boards - it's reasonably easy to do and it does make adding extra sensors very straightforward. If it makes sense I'll look at a feather form factor for new boards as well (but for now I'm just seeing how Jolt.js does).

    The uFL socket is a tricky one - I know the aerial is shielded, I don't think an external aerial is what most users really want. To be honest the nRF52840 I'd likely use in a new device has 4dBm higher transmit power and a better radio for reception, plus the ability to do BLE long range, so it's likely to perform as well or better than an nRF52832 with an external aerial anyway

  • Post a reply
    • Bold
    • Italics
    • Link
    • Image
    • List
    • Quote
    • code
    • Preview

Pixl.js v2 requests?

Posted by Avatar for Gordon @Gordon