Close
0%
0%

TARS SAO

A simple add-on inspired by Interstellars robots with 6 touch buttons, a speaker and a 160x80 pixel display, controlled by an RP2040 board

Similar projects worth following
Interstellar was not the movie I expected, but I loved the robots. After working on the Han Solo in Carbonite Add-on, designing this PCB felt like the right step and is also the most elaborate add-on I made for Supercon 2024.
One of the earliest add-on idea I had, was to make a tamagotchi like device, interactive on its own and with some capabillities I can expand on, long after I'm back from Supercon. The RP2040-tiny board has the perfect surface mount footprint for this, the display has a high resolution for its size.
So now there is a tamagotchi sized TARS batch, that can see all your I2C sensors and has its own QUIIC I2C port for extensions.

Hardware

The RP2040 is more than powerful enough to run the display and with the help of some 1M resistors, it's capable to implement touch buttons as well! I am using a speaker on two pins, thanks to a wonderful library I found. 

RP2040-Tiny

The module used as a controller is an RP2040-tiny, a nice little board that comes with a little adapterboard for USB-C connection and the programming buttons. That allowed the module to be able to be surface mounted, since there are no parts on the back unlike other modules. 

Display and LED

The 160x80 pixel display, controlled by an ST7735 is more common than I realised, it has been used for a cheap ESP32-C3 board that I found when working on #Flipper At Home for a bit. It's supported by the TFT_espi library and is controlled via SPI. There's also a white LED that can be used as an activity indicator! In the movie TARS used a cue light to indicate when he's joking and I had to add that.

The Speaker

It seems like there are powerful speakers the size of 13 mm x 18 mm. flying allover aliexpress now, probably from phones and repair jobs. I've run down the adafruit speaker connectors and cables I need to connect everything - this way you can change the speaker in the future and it just looks cleaner than having wires soldered end-to-end. 

The touch buttons

Thanks to todbot sharing all his RP2040 projects that are using touch buttons, I was set to success with the TARS interface right from the beginning, when cutting up copper on a prototype board. I will upload a picture of the arrangement, once that works again.


Software

Much of the software is still in a concept state, but here are the ideas of programs that I have and want to add. I've written everything with the Arduino IDE and using libraries of that realm. It might make more sense to have this run micropython, but I felt more comfortable this way.

Piano

A little 6 note keyboard that uses all touch buttons to play a note and display colors for the note you're playing. There are some nice glitches to discover, depending on how you're holding and touching the add-on. It shuts off after 5sec of not playing any tones.

Composer

This is an idea feeding off of nostalgia to the time you were typing in the beeps yourself, like on the nokia 3310 phone. this would allow for a bigger tone range than the piano mentioned above.

I2C Terminal (Wire0)

What if the badge has no display, but you want to display some debug info or sensor data on your badge? It should be possible to send data and display it on TARS!

I2C Scan (Wire1)

It's important to know what devices you're connected to, so having an I2C scanner to scan for sensors and modules can come in handy, especially with the QWIIC connector. I may or may not allow for chosing Wire0 for scanning as well, not sure how the RP2040s like a multi-master situation.

Name Tag

Even though I made #hello my name is SAO - why not have your name fly around like the DVD logo? 

MemeSaver

There are so many meme's that could be shown on this display, so far I only have the "Grand Central Hack the planet" pager running, but there's also some TARS running code flying in my code base somewhere. 

Do you want to play a game?

Why not implement snake or other games on TARS, he probably has a folder with solitair as well somewhere.

VID_20240918_224420~2.mp4

MPEG-4 Video - 4.92 MB - 09/18/2024 at 20:50

Download

HTP.mp4

MPEG-4 Video - 1.44 MB - 09/17/2024 at 18:24

Download

VID_20240916_224908.mp4

MPEG-4 Video - 926.14 kB - 09/17/2024 at 10:05

Download

  • 1 × RP2040 tiny small RP2040 dev board
  • 1 × ST7735S 160x80 display

  • I2C hickup

    davedarko10/25/2024 at 01:37 0 comments

    On the TARS SAO there are two quiic connectors, one was meant to connect to the I2C0 and the other to I2C1 capable pins of the RP2040 module. Sadly I mixed up pins and numbers and managed to connect both to I2C1 pins, just different ones. So best to ignore the SAO QUIIC connector. A rough I2C scanner is now running on TARS, making it possible to check for things on the bus. I just hope the badge RPI gets along well enough with a multi-master situation.

  • I2C peripheral and "EEPROM"

    davedarko10/24/2024 at 05:38 0 comments

    Arduino made it fairly easy to setup the I2C connection as a peripheral. I was able to read data from I2C and set that data as the displayed name of the simple addon owner for the name tag program! I Realised I have used wire1 for badge connection though. For the quiic connector I'm using wire apparently.

  • with great power comes great anxiety

    davedarko10/11/2024 at 07:49 2 comments

    So I essentially have a handheld now, since there's a display, a sort of d-pad and an A and B button. There's a menu that took inspiration from my #Flipper At Home "project". I'm currently trying to come up with some app ideas, maybe I can write a small snake game for it. Since it has I2C, I should also consider having a program to scan both I2C ports. I always wanted a scanner that can also give a "lucky guess" with the address and be prepared to read out some values and already convert them.

    Whatelse could this thing benefit from? What should I write?

  • adding audio

    davedarko09/22/2024 at 22:24 0 comments

    I remembered to check https://pico.pinout.xyz/ for some hidden treasures in the advanced pin descriptions for PIN0 and PIN1 and I had completely forgotten the PWM functionality! 

    With the help of this wonderful library https://github.com/khoih-prog/RP2040_PWM, I managed to get a speaker connected to GPIO0 and 1 in a pushpull configuration, meaning channel B is an inverted A. I remembered a CNLohr video where he used a pwm output with inverted channel of an attiny85 to basically amplify a microphone? 

  • Progress on the PCB

    davedarko09/22/2024 at 10:29 0 comments

    I have rerouted some display pins and freed up an RX-TX connection that I could use for a serial infrared communications bridge. Not sure I want to, but it's free now :D There's four more pins that have the ADC pins connected, at least in the pinout for this board it's marked that way. Should I add more features or should I just ship it?

    There's also a cue light now, the indicator LED for TARS making a joke, it's a neopixel, but maybe I'll just turn it into a white LED.

  • TouchyTouch by todbot

    davedarko09/18/2024 at 20:55 0 comments

    This evening I soldered up a small prototype to test the touchytouch library that todbot wrote and used for the his PicoTouch project. For reference, this is where I started from with the touch buttons, with resistor values of 1M Ohm. I've cut up a blank copper pcb at the hackspace and soldered four of the gazillions resistors we have to the board. I'm very pleased with the result, so there's going to be touch buttons for TARS for menus and stuff. 

    https://github.com/todbot/picotouch

  • PCB progress

    davedarko09/17/2024 at 22:23 0 comments

    As you can see in the videos, I'm using a WaveShare RP2040-Tiny module, that comes with a "programming dongle", meaning you can program it via usb-c and use the boot doot and reset buttons to your liking. If you're done, you're left with a small PCB that's also SMD mountable - nice!

    The ST7735S display that I'm using, can be soldered either through a slot on the back of the board, or just under the display. So I created a footprint that mounts on the front, so I will have more room on the back for the RP2040 module and some light panels for highlighting the "TARS" and "TARS" in braille font. I can probably use the onboard neopixel and safe 10ct - bargain! 

    The display footprint is created, next up is going to be the RP2040-tiny module. In parallel I will test some touch button code with rudamentary hardware. 

  • plenty SAO ideas

    davedarko09/17/2024 at 18:30 0 comments

    So this ST7735S display has 160x80 pixels in RGB565 color range and gives you some options. I did find a relatively cheap ESP32-C3 board with additional LCD module for my #Flipper At Home , for that I wrote a little menu but never took it any further. 

    I will hopefully be able to throw some hommage to other franchises like Hackers, since the display is able to show some stuff and I won't be able to spin up more boards till supercon. There's an obvious flipper zero simple add-on to make, but also a pager SAO that might incorporate its own transceivers to send messages. 

View all 8 project logs

Enjoy this project?

Share

Discussions

Tom Nardi wrote 10/05/2024 at 07:51 point

Perhaps my favorite part of making the cyberdeck SAO last year was loading it up with different memes/references to hacker movies and general tech/nerd culture. You've got so many possibilities with that lovely screen.

  Are you sure? yes | no

davedarko wrote 10/05/2024 at 08:30 point

Yes! I thought about just having a "meme core" and have different face PCBs for this. Thought about a flipper zero PCB as well, or referenced meme beeper. Glad I went this way though!

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates