I am obsessed with checking the current price of various cryptocurrencies, but switching tabs or pulling out my phone interrupts my workflow and distracts me. I decided that a separate screen with a dirt-simple interface would be useful to display prices at a glance. In this Instructable I will show how to build a small cryptocurrency ticker that you can put on your desk or fridge and activate it with a tap.
- Uses the ESP32, a dual core, WiFi enabled microcontroller
- 128x64 White OLED screen
- Touch button wakes the device and cycles through user defined currencies
- USB charged Li-Po battery
- Price data is obtained from CryptoCompare's API
- Uses the Arduino IDE
- Code on my GitHub
- Auto sleep and eventually auto wake
Step 1: Collect the Necessary Parts and Tools
- TTGO ESP32 PRO OLED V2.0 board (without LoRa) [$14]
- Touch board (10 pack)[$1.50]
- Lithium battery (602447 or 6.0x24x47 mm)[~$5]
- 3D printed case [$5]
- Neodymium Magnet x4 (10x1mm disc) [$1]
- 3 pin male header
- Thin wire (I used 26ga. magnet wire)
- Soldering Iron
- Wire cutters
- Hobby knife or other small blade
- Super glue
- Circuit board vice
- Magnifying glass or eye loupe for inspection
Step 2: Add the Touch Button
These are neat little touch buttons that are easy to add to any project. They usually come in packs of 10 for around 3 bucks shipped! I know that the ESP32 has built-in touch sensing capability, but using these boards makes things more simple and eliminates software configuration errors. The maximum standby current of the touch IC is only 7µA, so not much power is wasted adding this button.
Disable the LED
The output pin on the button goes high and a LED on the back lights up whenever your finger gets within a few mm of the touch surface. Removing the resistor to the LED disables it, reducing the power consumption. Creating a solder bridge across the A and/or B pads changes if the button toggles and if the output is high or low when active. In our case, we are going to leave these bridges open, which will make the button act as a momentary switch.
The voltage input of the button lines up perfectly with the 3.3v output of the main board. Unfortunately, the signal and ground pins don't, so we will have to make some modifications. Using a hobby knife or other sharp blade, cut the reset trace on the back of the main board and the trace to pin 13 on the front. Inspect the cut with a magnifying glass to make sure there is no residual metal. These holes will now host the signal out and ground pins of the touch board, respectively.
Flush mount the Header
There isn't much spare room in this project, so any space saving tricks comes in handy. It's best to cut the pin header before soldering to reduce how high it protrudes from the touch board. Cutting the header after soldering makes it more difficult to get it flush as the base of the solder cone is very thick and not easy to cut. So, cut the header flush with the touch board and then solder it on. Place the board and header into the main circuit board and cut the other side of the header so it is also flush, then solder it on.
Wire it up
For small and low-power wiring, I like to use 26ga. magnet wire, as it's cheap and easy to work with, though any small wire can be used here. To make connections, the enamel on the wire can be scraped off with a knife or melted off by holding a soldering iron with a solder ball on the tip to the end of the wire. Do this to one side of the wire and then attach it to the ground pad. Measure and cut the wire so that it reaches the ground pin of the touch button. Then repeat the enamel removing process on the other side of the wire. Hold down the the wire with tweezers and solder it onto the touch ground pad. Repeat this process to connect pin 12 to the signal out pin of the button. Clean up any residual solder flux and the button is done!
Step 3: Prepare the Battery
I found these batteries that are a perfect match to this board. The battery is slightly smaller than the outline of the board and the circuit protection side leaves just enough room to accommodate the connector on the board. Unfortunately, they came with a 3-pin 1.5mm JST connector and the board only supports a 2-pin connector. This can be remedied by cutting the yellow wire and then trimming down the connector until it fits the board. If your battery has a different connector or none at all, you can splice on the connector included with the circuit board. The yellow wire can be completely removed, but I decided to keep it available in case I want to use it in the future. The wire is connected to a thermistor inside the battery to monitor temperature during charging.
Step 4: Print the Case
I designed a case and 3D printed it using a local printing service. I decided to go with translucent PLA so I could see the red charging LED without having to make a hole in the front of the case. The layer height is 100 microns. Two cases cost me about 10 dollars without shipping. The top of the case should be glued onto the base using super glue. The battery and board slide into the case as one unit and are supported by internal rails. The side then slides on and is retained by friction.
Step 5: Add Magnets to the Case
This is an optional procedure if you want to put your ticker on the fridge or another metallic surface. The magnets I used are 10x1mm neodymium disc magnets, N50 grade. Superglue 2 or more onto the back of the case. This isn't the best solution, as they may chip over time with repeated impacts. Make sure that the superglue has cured for each magnet before adding another, as they may fly off and glue themselves together.
Step 6: Future Improvements
I would like to directly use the touch feature of the ESP32 without having to rely on an external circuit. One possibility is to remove the IC on the touch button and directly connect an I/O pin to the touch pad. Or I could design a PCB that is just a touch pad with no circuitry.
Battery Temperature Monitoring
The yellow wire from the battery is used for monitoring the temperature of the battery while it is charging. It is internally connected to a thermistor, which decreases in resistance with rising temperature. Forming a voltage divider with an additional resistor and connecting the junction to an ADC input should allow for relative temperature monitoring. The ESP32 does not have control of the charging circuit, so the only action that it could take would be to issue a temperature warning on the display or over WiFi.
- Use SmartConfig or a Bluetooth app to configure the WiFi credentials
- Make configuration remotely changeable
- Change the wake timer in the top corner to a clock