Taking… Stock

Having a display is good and fine, but at some point it needs to be useful, or its just a silly toy.

So…, I updated the code to have some useful functionality (for me at least).
Now it pulls AQI data for PM25 info, gets the latest stock data for a given stock, and scrolls the latest Business News.
Power usage is quite low too, at a meagre 2.5W/hr

Working out quite well for me, as I can keep an eye on the stock i’m interested in at a glance from the sofa, without actively having to have my computer in front of me.

Other amendments included adding some EEPROM saving functionality, and web ui for config. Progress..

Code is up on https://github.com/csloz/pixelated
(and yes, I do have a messy desk!)

SD Card Notes


SD CARD I/O PINS

SCK (Serial Clock)
MOSI (Master Out Slave In) -> card
MISO (Data in) <- card. [ ergo can use any GPIO > 33 and save an i/o pin! ]
CS or SS (Chip select)
VCC
GND

Board Pins

SPI pins – 4 needed, [3 I/O, 1 input]
Available –
GPIO22,23, 32, 33, 12 (12 see notes)
GPI 34,35,36,39


https://github.com/espressif/esp-idf/blob/master/examples/storage/sd_card/main/sd_card_example_main.c


// Pin mapping when using SPI mode.
// With this mapping, SD card can be used both in SPI and 1-line SD mode.
// Note that a pull-up on CS line is required in SD mode.

#define USE_SPI_MODE
#ifdef USE_SPI_MODE
// Pin mapping when using SPI mode.
// With this mapping, SD card can be used both in SPI and 1-line SD mode.
// Note that a pull-up on CS line is required in SD mode.
#define PIN_NUM_MISO 35
#define PIN_NUM_MOSI 22
#define PIN_NUM_CLK  23
#define PIN_NUM_CS   32  //Needs 10k pullup resistor??
#endif //USE_SPI_MODE

SPI.begin(PIN_NUM_CLK ,PIN_NUM_MISO ,PIN_NUM_MOSI,PIN_NUM_CS ); //sck, miso,  mosi,  ss
SD.begin(PIN_NUM_CS, SPI, 24000000, "/sd"));
...

PCB test

New PCB arrived, first test to (not) let the magic smoke out worked.

I’ll probably do another revision to add space for a zener diode on the board input just in case(tm), and an on/off switch, and move the 3.3v, 5v, gnd to a separate pin header than the gpio’s, and maybe finalize the SD card pins, but it works, and i’m happy(ish).

PCB Render

Still waiting on the “real” board, but heres a render of the work in progress.

My first KiCad board – took about 6 hours, although that included learning Kicad!

Next revisions should be faster. Board has already gone to production – a whole 10 pieces should be arriving in a day or two. Yay for taobao and kuaidi.

Available GPI/O’s are accessible on the top right; will probably make a small I/O button board at some point to plug in there.


TPM2.NET

Work in progress on adding tpm2.net compatibility. Still a little buggy, as having some issues with UDP packet framing. Psuedo-working, albeit in small area, although a little glitchy still. Once debugged should be fine to drive the whole panel.

Addendum – found the issue – memory leak in the ESP32 arduino UDP library, the patch on github doesn’t seem to work, so reverted to 1.0.1

Using Windows laptop (bleh!) as Jinx! is windows only.


Board Pinouts

Reference board PCB – ESP32 Dev


PIN NOTES –

D1 (TX), D3 (RX) ostensibly usable, but for debug needs are still in use for serial.

GPI36, GPI39, GPI34, GPI35 (input only pins)

GPIO32, GPIO33, GPIO22, GPIO23

Other pins:
GPIO12 (12 can be used post boot. if held low = reset).
EN not wired, as its useless for our needs