Tufty 2040 - Wi-Fi (with AirLift?)

Is there a way to add Wi-Fi to the Tufty 2040?

I had looked into the Adafruit AirLift (ESP32) board as an option. I don’t think the edge breakout board on the Tufty provides the required pins to add the AirLift (I2C vs. SPI). Connecting between them is currently beyond my level of knowledge, if it’s possible at all.

  • The Tufty 2040 has I2C (SDA, SCL, INT) plus SWC, TX, RX, and SWD.
  • The AirLift has SPI (MOSI, SCK, MISO) plus CS, RST, RXI, TXO, BUSY, and GP0.

I’m thinking, no. The Tufty doesn’t bring the SPI pins out. Plus, the Tufty runs Micro Python, while the Adafruit Airlift is coded for Circuit Python.
The Tufty can run Circuit Python, but then your looking at getting all the bits & bytes working in Circuit Python.

One option is to build a Tufty clone with a Pico W. One less Button but the same size screen.
Raspberry Pi Pico W – Pico WH (pimoroni.com)
Pico Display Pack 2.0 (pimoroni.com)

Guess what I built? - Discussion - Pimoroni Buccaneers

I’m open to other options that might get Wi-Fi or Bluetooth.

The Tufty 2040 itself has some useful sensors, and I’ve added onto that.

Ultimately, I’d like to be able to capture sensor information from the Tufty 2040 without having a physical USB-C connection. I guess being able to capture and save the data to offload at a later time via a physical connection might be another option.

I am running my Tufty with this: https://github.com/bablokb/pcb-badger2040-wlan.This adds Wifi to the Tufty. You could of course just wire something up.

BTW: without the USB-C, you will be constantly swapping your battery pack. The Tufty has a nice screen but it also draws a lot power. And you cannot operate in in off/on-mode like you can do with a Badger.

@bablokb Typo in your link. .This got added to the end
bablokb/pcb-badger2040-wlan: Small PCB for an ESP-01S and PCF8523-RTC (github.com)

I own a Tufty, and have added extra sensors, BME280 and a RTC. I don’t upload any data so I haven’t added WIFI. I only run on batteries if the power fails, or the odd time I put it in my pocket and take it with me on a morning walk. I setup auto brightness on the LCD, which will help with battery life. I did it to make viewing easier on the eyes in a dark room, and still be usable in bright sunlight. ;)

Is this a serial connection?

How do you end up controlling the Wi-Fi connection? What’s set up on the ESP?

I have been using AAA battery pack with the Tufty, which works for my purposes. It’s not mobile most of the time, but I think I get a few hours per set of batteries. I try to use rechargeable when I do this.

Yes, it is UART. On the ESP, I have the standard AT-firmware and the Tufty just sends AT-commands via the serial line. I have set it up using CircuitPython and CP has a nice library wrapping all the AT-stuff in a class, so it is simple from the application side.

Maybe MicroPython has a similar library, I would be surprised if not. Anyhow, I had a look at the code and porting should be simple. Probably only the UART-stuff would need some minor “translation”.

One other option: Bluetooth using an HC-05 breakout. Also uses the UART-pins (serial). There are tons of tutorials on setting up a Pico (not Pico-W) together with a HC-05. Added benefit: you don’t have to deal with all the Bluetooth-stuff on Tufty side, you just write to UART and the rest is handled transparently by the HC-05.

Besides sideways male pin header block shown in the bablokb/pcb-badger2040-wlan repo, are there any other ideas on how to add connections to the pads on the back of the Tufty 2040?

It looks like the spacing matches up with some JST-PH connectors I have, for example. This could allow a JST cable to be plugged in.

The spacing, location, and orientation all make it seem like any sort of connector added will cover the labels for the pads. It’s not a dealbreaker, but not ideal.

The pads are definitely 2.54mm spaced. So JST-PH (uses 2.0mm) does not fit. For just a few pins you can get away with bending your pins. E.g. I successfully fitted JST-PH3 to three 2.54 pads by bending the outer pins. It is a hack, also because JST-PH SMD connectors are additionally soldered at the front for mechanical stability.

If covering the labels is your only concern, you can use regular (non-smd) pins/sockets and solder them on the pads. In this case the connector sticks out to the other side and the labels are visible. Or you use right angled pins/sockets. In this case your connector will point to the back. But this solution is mechanically unstable and if you plug/unplug a lot the connector will come off one day.

Ah, I re-checked the connectors that fit well. They were JST-XH, which it seems are 2.5mm.

I’m not too concerned about losing the labeling, but it is inconvenient.

I tried bending the pins 90 degrees so I could make the JST-XH’s I have work better. My first attempt at that was not successful.

You should use SMD-type connectors. No bending required, since you put them flat on the Tufty. At that size, hand-soldering is no problem either. If you already have the XH-cables, that should be the easiest way to connect something.

I have a bunch of non-SMD JST-XH’s already on-hand from a kit, and am trying to not be wasteful. I think there’s already zero chance I’ll use even 10% of these connectors in my lifetime.

That is a good attitude and I always also try to reuse stuff. But it is a tradeoff between spending some bucks at AliExpress for the right components or spending your time bending pins. And chasing errors that are due to bad connections.