Modular WiFi Gif Art & Pixelart Display Tiles

Small, modular, esp, WiFi enabled, 3D printed displays that share a common power source and can be rearranged on a whim.
3
16
0
271
updated April 17, 2024

Description

PDF

Gif Tiles

Gif Tiles are small modular displays that can play animated gifs. The Tiles share a common usb power source and connect magnetically so they can be rearranged as one likes and multiple Tiles only use one power cable. The Tiles use an esp8266 module and gifs are uploaded easily from any computer in the WiFi network.

Gif Tiles are an excellent way to display your favourite pixelart or any great gif image you may find on the internet. They are easy to build and may be placed anywhere your wifi network reaches. 

Here i will provide the model for the tile case and building instructions.

The case is fully parametric and can be used with a plethora of different components, so it can still be done easily even if you don't have access to the parts i used, also the design is supremely hackable and can be modified to your preferences with the change of a few values in the spreadsheets.

This is going to cover the hardware side of this project. If you are looking for the software side it can be found here .

 

BOM

This project requires the following parts:

  • An esp8266 module or any esp8266 based board will work. I will not go into all the possible versions, but the on module flash is going to be your space to store gifs, so try to go with 4MB or higher. (4MB has been totally fine in my experience). Also a small physical board size is going to make for a slimmer design and easier assembly.
  • A SPI display to display the gifs on, get an ips one as the viewing angles are very important in this size category. (my software will only work with display drivers supported by TFT_eSPI)
  • 8 pogo pins per tile. Small is good but the model can be adapted to anything that will fit the outer dimensions.
  • 4 strong magnets per tile. Stronger magnets will make for a better connection between Tiles, physically and electrically. I recommend N35 or higher if you don't know a brand that has unrated very strong ones.
  • 4 small (magnetic!) nuts per tile.(flat ones) Something about M3 or M4 will work, but the model can be set to ones you already have. Going a bit bigger than the magnets is a good size. 
  • Some small wires, 6 colors will be good to keep the wires apart but are not strictly necessary.
  • A 5v to 3.3v regulator(if your board doesn't work on 5v).
  • A diode (if your board is not Reverse polarity protected)
  • 3 10KΩ resistors (only if you work with the plain esp8266 module)
  • A  usb pd trigger with a protruding port (don't go over the max of your regulator) (only if you don't already have a tile with power supply or if your board doesn't have a port on board or you don't want to use the boards port)
     

On top you will need some normal to thick superglue, some electrical isolation tape and basic soldering equipment. (preferably with a fine tip)

All of those parts can and should be acquired through Aliexpress or your regional equivalent as local retail costs for these parts are massively hiked.

Sadly Aliexpress links are abysmally unstable and descriptions are really inconsistent. If I link the parts here they will be leading nowhere in a month so I will give the best description I can and you will have to find a part that looks very much like that on there. Just be sure to pay attention to the delivery costs and get the parts that are free delivery above 10EUR.

Because of the link instability I will give amazon links instead so you have a picture and description for the part, the price will not match the one I give as I will give the price of an equivalent I could find on Aliexpress for a more realistic bill.

The materials I used for one tile are the following(costs are per tile):

Depending on your filament price the case comes down to about ca 0.8Eur therefore the price for building a tile comes down to ca 7.5 to 10 Eur (that margin includes power supply Tiles). 

How to print

I tested the model in PETG. It is an easy print but make sure that the pattern at the bottom is printed with supports. Printing in PLA shouldn't be a problem though.

All premade stl files are designed for the parts i used in the BOM. If you want to use different materials you will have to install freecad and open the Tiles.FCStd change the values in the spreadsheet for the display shape you want to use, then select the parts from the Tiles Project you want to use and File→Export them to stl files for printing.

I included a folder with 10 different front patterns in the rounded folder.

I will create base models for different shapes of displays, each having it's own folder and the base set of patterns. 

  • The 'rounded' folder contains premade files for the 1.69", 240x280 px displays with rounded corners readily available all over Aliexpress.
  • Next i will add premade models for the square 1.54", 240x240 px displays.

When it comes to the premade cap models there are three different options.

  • The case_cap model is a plain minimum width model for Tiles which only get their power from other Tiles.
  • The case_cap_power models have a cutout for an usb type c port and space for the pd trigger board. You will need one power supply Tile to power the rest of the Tiles.
  • The case_cap_power file has the type c port at the back. The case_cap_power_side file has the type c port at the side. 

How to build

Before you start head over to the software page and flash my sketch to your esp. Test if everything is working before you start assembly.

Wiring up the case
  1. Print and clean the model (better than me :D)
  2. Cut 8 strands of wire for the power lines, each should be a little bit longer than half the Tiles width, use 2 colors for 4 strands each for color coding.
  3. Solder the strands to the pogo pins as follows: each color should have 2 strands soldered to the back of the pins and 2 strands soldered to the tip of the pins as shown. Check if the pins dont come off the wires with some light pulling.
  4. The polarity of the wiring is going to be as follows when looking at the open back of the tile:
  1. Pull the unsoldered end of a strand soldered to a tip through the first hole as shown.   
  2. Lightly pull the pin into position, with its tip facing towards the tile.  
  3. Press the pogo pin into the form with something flat. It should sit flat only slightly above the outer walls surface.
  4. Secure the pogo pin and wire on the inside of the tile with a drop of superglue into the mold.
  5. Take one of the other colors wire soldered to the flat back of a pogo pin and position it at the second hole on that side.
  6. Press the pin into the hole with something pointy until it sits firmly and you can feel the tip of the pogo pin protruding lightly on the other side.
  7. Secure the pogo pin like on the other side with a drop of superglue (Thin superglue might spill through and glue the moving tip shut, so use middle to thick superglue!)
  8. Repeat this process for the next 3 sides. According to the wiring scheme above and using the same order of right hole pin tip facing inside, left hole pin tip facing outside and leave the glue to cure for some hours.
Wiring up the display

The displays come in a variety of different shapes but generally share a wiring scheme. Some differences might be:

  • The backlight (BLK) control which often needs to be pulled high for full brightness but sometimes needs to be pulled low for the display to show more than a blank screen. If your displays BLK is pulled low by design leave the pin disconnected. (You may attach a potentiometer here if you want to set the backlight less bright.)
  • The chip select (CS) pin generally needs to be pulled low or the the SPI bus is not going to react to any input from the bus. If you want to attach more than this one display to the same SPI bus this needs to be connected to a pin on the Microcontroller or it will cause problems. Some displays automatically pull this pin down, then you don't need that wire. Just leave the pin disconnected.
  • The other pins, except for VCC and GND are set by default in my software in the User_Setup.h file to 
    • MOSI(often called SDA) GPIO 13
    • MISO(Not used) GPIO 12
    • SCLCK(often just called SCL) GPIO 14
    • Chip Select (CS) GPIO 15
    • Data Control(DC) GPIO 0
    • Reset(RST) GPIO 5  
  • (You may change the pins as SPI on the esp8266 is software set, but only certain pin combinations work. I recommend using my default pinout.)

This tutorial is just going to cover the most common wiring. Change things according to the instructions above and your needs of course.

  1. Prepare the pins you need to wire up on the display by giving them a small blob of solder.(If your display has pins attached you will need to remove them, otherwise the display is not going to sit flush in the case.)
  2. Pull the BLK pin high by connecting it to VCC and pull the CS pin low by connecting it to the GND pin.(bonus points for color coding)
  3. Solder short wires going to the side of the esp facing the displays header to the display in my setup those are the VCC, SDA and SCL pins.
  4. Solder longer Wires reaching the other side of the esp to the remaining pins of the display header. In this case those are GND, RES and DC.
  5. Solder the wires to the esp as described above.
  6. If you are not working with the plain esp8266 module you are done, test by connecting a 3.3v power supply to the VCC and GND pin of the esp. If the display is showing a message everything is wired up correctly. Continue with step 9.
  7. If you are working with the Plain esp module you will need to add some 10KΩ resistors or the esp is not going to boot. First add a pulldown resistor from GPIO 15 to GND.
  8. Then add pullup resistors from GPIO 0, RST and EN to VCC on the esp.
  9. Use some double sided tape to fix the esp to the display at a position where the esp can sit relatively flat with the display. As the shielding of the esp can short electrical parts on the display make sure that it is isolated by at least a stripe of electrical tape. If you used double sided tape that will also do.
Final assembly
  1. If you are using a voltage regulator prepare it as follows: Remove any pins on the regulators header and prepare it by adding a little bit of solder to each of the pads. Then if you want to use reverse polarity protection add a diode to the VIN(the stripe on the diode facing towards the regulator), solder a (color coded) wire to VOUT and GND.
  2. Use the isolation tape to isolate the regulator so it can't short anything.
  3. Add some double sided tape to the display if you want to be able to remove the display from the tile in the future.(If you are using a voltage regulator wire VOUT to the esps VCC and GND to the esps GND.
  4. Lightly bend the cases wires out of the way and without force push the display into the cutout. The displays header should be next to the top of the case(look for the little triangle marker on the case)
  5. Use a piece of isolation tape and add all case cables of the same color to it at about the same distance.
  6. Wrap the tape around and solder the ends of the wires together. Do the same for the other case wires.
  7. Connect a the cases GND wire(brown) to the GND of the esp and the cases VCC(red) wire to the VIN of the regulator(if you use one). If you are working with a board connect the case VCC  to the Boards 5v pin(use a diode as described before if you want to be reverse polarity safe). 
  8. Isolate the case wires ends so they can't fry anything.
  9. Add magnets to the round molds on the outside of the case(polarity doesn't matter). If they don't stay in, use a small amount of superglue to secure them. Then add the nuts to the Hexagonal molds on the outside of the case. (should be a snap fit)
  10. Done. Add the cap and have fun with your new tile. :D

How to make it your own

The parametric model

The model is fully parametric so you can use whatever parts are available to you. You can also adapt the case to a different rectangular form factor or different sizes if you don't like my units of 55mm.

Each of the display models and all of the caps have their own spreadsheet. Changing the value in the spreadsheet will change it's model. The following values can be set:

  •  nut_diam: The size of the cutouts of the nuts should be at least 0.4mm smaller than wall_height.
  • nut_thickness: The depth of the nut cutouts should be thinner than wall_width by at least 0.4mm.
  • magnet_dist: Distance of the magnet and nut cutouts from the center of each side. 
  • magnet_diam: Diameter of the magnet cutouts. Should be at least 0.4mm less than wall_height.
  • magnet_depth: Depth of the magnet cutouts. Should be at least 0.4mm less than wall_width.
  • inner_maghole_diam: diameter of the small holes inside the magnet cutouts, this is just to remove a magnet if a mistake is made.
  • pin_width: The pogo pins middle thickness. The pin holes need to be this thick and snug to fit the pins through the walls, but not let glue pour through.

  • pin_base_width: The diameter of the cutout for the female side of the connectors. 

  • pin_base_height: The depth of the cutout for the female connector sides.

  • pin_max_height: The fully extended height of the pin. Reducing this value is going to make the tip of the male connector stick out further. Needs to be shorter than wall_width

  • pin_dist: Distance of the pogo pins from the center of each side.
  • displaycable_cutout_depth: Most displays will have a flat band connector from the back of the PCB to the display module. This cutout protects the cable from being bent. this should be bottom_thickness. If your display has an irregular connector you may set this to 0mm to remove the cutout.

  • displaycable_cutout_width: Width of the cutout.
  • wall_height: Height of the case wall without the bottom and cover

  • wall_width: Thickness of the wall.

  • case_width: Width of the entire case.

  •  case_height: Height of the entire case.

  • case_corner_radius: The outer and inner corner radius of the entire case. Mainly for style. You can easily make the display rounder or more square.
  • cover_thickness: Thickness of the cover used to hide the parts of the display that are only there for technical reasons and to hide the backlight shining through the side of the display. values below 0.4mm may be see through depending on filament choice.
  • bottom_thickness: Thickness of the bottom layer. Between the wall and the cover.
  • cap_connector_width: The cap connectors hold the cap on the top of the case. This will make them wider.

  • cap_connector_height: Thickness of the connectors.

  • cap_connector_depth: How far the cap connectors protrude from the caps wall.

  • centeringpin_dist: The centering pins keep the Tiles centered on each other. This is improving connection between Tiles and physical strength of the “bond”. This value is the distance of the centering pins from the center of the sides. The further these pins are to the corners the better they work.
  • centeringpin_height: How far the centering pins protrude from the wall.

After changing you need to select the object you changed and export it via File→Export .

The style

The case comes in a variety of different styles. You can add your own pattern to the front of the tile. I have added a case_base.stl without any style applied. You may open it in Blender and stencil on any black and white picture by the following procedure:

  1. Open the case_base.stl in Blender with the File→Import→Stl option.
  2. Change the Mode from object mode to edit mode (orange circle above)
  3. While the cursor is on the model, press w to change the tool to select circle. Use the top right axis cross to change the view to flat down from the z axis by clicking the -z ball.
  4. Select only the following vertices with strg+left_click.
  5. Right click the surface and press subdivide until the surface is entirely orange if you zoom out a bit.
  6. Change the mode again to sculpt mode.
  7. Select Face_Sets→Face_Set_from_Edit_Mode_Selection. Now the surface should be highlighted in a random color. Move the cursor onto the colored surface and press h. everything except for the colored surface should disappear.
  8. Select Mask→Fill_Mask. The surface should darken like above. Move the cursor onto the surface again and press h again. The rest of the model should appear again.
  9. Press Mask→Invert_Mask and the colored surface will lighten up as all other parts of the model darken.
  10. Choose the following options in the red box: Radius set to max, Strength: 0.4, Direction: Add, Hardness: max, Advanced→Front_Faces_Only, Texture→Mapping: Stencil, Falloff→Constant .
  11. Choose the texture option in the Blue box.
  12. Press: New→ Open and choose the Image you intend to use. The image should be displayed in the lower left corner if the cursor is on the model.
  13. Use right_click to move the image into position. You can scale it up or down by  shift+drag_right_click . Move the Image over the front and left_click onto the model to apply it.
  14. Change the mode to Object_Mode and use File→Export→Stl export the stl file.

The file is going to be pretty big, so Cura might need some time to load it. It also needs some time to load the file after the loading bar finished. So give it some time.

How to make a Tile for a different display

There is a blank Tile model in the Freecad file that can be easily edited to make the tile fit any display you can buy. I aim to provide working Tiles for the most common display forms on Aliexpress. Still a tutorial is going to be added at some time in the future.

The Future

I plan to make an additional sketch that allows the Tiles to talk to any computer in the network so Tiles can display information received in real time as well as send information to any computer in the network. Therefore enabling you to build your own control board for your pc and display a plethora of real time information or cool effects.

Tags



Model origin

The author marked this model as their own original creation.

License