Skip to content

Commit 8be9d23

Browse files
committed
v3.3.1
1 parent 1e05ea0 commit 8be9d23

38 files changed

+2217
-1146
lines changed

AddOns.md

Lines changed: 263 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,263 @@
1+
2+
# DIY additions for the Time Circuits Display
3+
4+
- [Speedometer](#speedometer)
5+
- [GPS receiver](#gps-receiver)
6+
- [Rotary Encoder](#rotary-encoder)
7+
- [Temperature/humidity sensor](#temperaturehumidity-sensor)
8+
- [Light sensor](#light-sensor)
9+
- [Other props](#other-props)
10+
11+
## Speedometer
12+
13+
Despite CircuitSetup offering a really good and [screen-accurate speedo](https://circuitsetup.us/product/delorean-time-machine-speedometer-kit/), you might want to make your own.
14+
15+
| [![Watch the video](https://img.youtube.com/vi/opAZugb_W1Q/0.jpg)](https://youtu.be/opAZugb_W1Q) |
16+
|:--:|
17+
| Click to watch the video |
18+
19+
The speedo shown in this video is based on a fairly well-designed stand-alone replica I purchased on ebay. I removed the electronics inside and wired the LED segments to an Adafruit i2c backpack (from the Adafruit 878 product) and connected it to the TCD.
20+
21+
What you need is a box, the LED segment displays and a HT16K33-based PCB that allows accessing the LED displays via i2c (address 0x70). There are various readily available LED segment displays with suitable i2c break-outs from Adafruit and Seeed (Grove) that can be used as a basis:
22+
23+
- Adafruit [878](https://www.adafruit.com/product/878)/[5599](https://www.adafruit.com/product/5599),
24+
- Adafruit [1270](https://www.adafruit.com/product/1270),
25+
- Adafruit [1911](https://www.adafruit.com/product/1911),
26+
- Grove 0.54" 14-segment [2-digit](https://www.seeedstudio.com/Grove-0-54-Red-Dual-Alphanumeric-Display-p-4031.html)
27+
- Grove [4-digit](https://www.seeedstudio.com/Grove-0-54-Red-Quad-Alphanumeric-Display-p-4032.html).
28+
29+
The product numbers vary with color, the numbers here are the red ones.
30+
31+
For wiring information, please see [here](#i2c-peripheral-wiring).
32+
33+
#### Software setup
34+
35+
The type of display needs to be configured in the Config Portal's _Speedo display type_ drop-down widget.
36+
37+
For DIY speedos, there are two special options in the Speedo Display Type drop-down: *Ada 1911 (left tube)* and *Ada 878 (left tube)*. These two can be used if you connect only one 2-digit-tube to the respective Adafruit i2c backpack, as I did in case of my speedo replica as well as my [Wall Clock](https://github.com/realA10001986/Time-Circuits-Display/blob/main/WALLCLOCK.md).
38+
39+
## GPS receiver
40+
41+
The CircuitSetup original [speedo](https://circuitsetup.us/product/delorean-time-machine-speedometer-pcb/?v=fa868488740a) has a built-in GPS receiver, but the firmware also supports alternatives such as the
42+
- Adafruit Mini GPS PA1010D (product id [4415](https://www.adafruit.com/product/4415)) or the
43+
- Pimoroni P1010D GPS Breakout ([PIM525](https://shop.pimoroni.com/products/pa1010d-gps-breakout?variant=32257258881107))
44+
45+
or any other MT(K)3333-based GPS receiver, connected through i2c (address 0x10). Note that the supply and bus voltage must be 5V.
46+
47+
The GPS receiver can be used as a source of authoritative time (like NTP) and speed of movement.
48+
49+
For wiring information, see [here](#i2c-peripheral-wiring).
50+
51+
## Rotary Encoder
52+
53+
A rotary encoder is, simply put, a turnable knob. On the TCD, rotary encoders can be used for speed and/or audio volume.
54+
55+
The firmware currently supports the
56+
- [Adafruit 4991](https://www.adafruit.com/product/4991)/[5880](https://www.adafruit.com/product/5880),
57+
- [DFRobot Gravity 360](https://www.dfrobot.com/product-2575.html) and
58+
- [DuPPA I2CEncoder 2.1](https://www.duppa.net/shop/i2cencoder-v2-1/) (or [here](https://www.tindie.com/products/saimon/i2cencoder-v21-connect-rotary-encoder-on-i2c-bus/))
59+
60+
i2c rotary encoders. For the Adafruit and the DuPPa, I recommend buying the PCBs without an actual encoder and soldering on a Bourns PEC11R-42xxy-S0024.
61+
62+
Up to two rotary encoders can be connected, one for speed, one for volume.
63+
64+
### Hardware Configuration
65+
66+
In order to use an encoder for speed or volume, it needs to be configured as follows:
67+
68+
<table>
69+
<tr><td></td><td>Ada4991</td><td>DFRobot</td><td>DuPPA</td></tr>
70+
<tr><td>Speed</td><td>Default</td><td>SW1=0,SW2=0</td><td>A0 closed</td></tr>
71+
<tr><td>Volume</td><td>A0 closed</td><td>SW1=0,SW2=1</td><td>A0,A1 closed</td></tr>
72+
</table>
73+
74+
For DuPPA: RGB-encoders not supported.
75+
76+
Here is how they look configured for speed (the purple spots are solder joints):
77+
78+
![RotEncSpd](DIY/img/RotEncSpd.jpg)
79+
80+
Here is the configuration for volume:
81+
82+
![RotEncVol](DIY/img/RotEncVol.jpg)
83+
84+
For wiring information, see [here](#i2c-peripheral-wiring).
85+
86+
## Temperature/humidity sensor
87+
88+
The firmware supports connecting a temperature/humidity sensor for "room condition mode" and for displaying ambient temperature on a speedo display while idle.
89+
90+
| ![RC mode](DIY/img/rcmode.jpg) |
91+
|:--:|
92+
| *RC mode* |
93+
94+
The following sensor types are supported:
95+
- [MCP9808](https://www.adafruit.com/product/1782) (address 0x18 - non-default),
96+
- [BMx280](https://www.adafruit.com/product/2652) (0x77),
97+
- [SI7021](https://www.adafruit.com/product/3251),
98+
- [SHT40](https://www.adafruit.com/product/4885) (0x44),
99+
- [SHT45](https://www.adafruit.com/product/5665) (0x44),
100+
- [TMP117](https://www.adafruit.com/product/4821) (0x49),
101+
- [AHT20/AM2315C](https://www.adafruit.com/product/4566),
102+
- [HTU31D](https://www.adafruit.com/product/4832) (0x41 - non-default),
103+
- [MS8607](https://www.adafruit.com/product/4716)
104+
- [HDC302x](https://www.adafruit.com/product/5989) (0x45 - non-default)
105+
106+
>The BMP280 (unlike BME280), MCP9808 and TMP117 work as pure temperature sensors, the others for temperature and humidity.
107+
108+
All of those are readily available on breakout boards from Adafruit or Seeed (Grove); the links in above list lead to tested example products. Only one temperature/humidity sensor can be used at the same time.
109+
110+
For wiring information, see [here](#i2c-peripheral-wiring).
111+
112+
>Note: You cannot connect the sensor chip directly to the TCD control board; most sensors need at least a voltage converter/level-shifter. It is recommended to use Adafruit or Seeed breakouts, which all allow connecting named sensors to the 5V the TCD board operates on.
113+
114+
## Light sensor
115+
116+
The firmware supports connecting a light sensor for night-mode switching.
117+
118+
The following sensor types/models are supported:
119+
120+
- [TSL2591](https://www.adafruit.com/product/1980),
121+
- [TSL2651](https://www.seeedstudio.com/Grove-Digital-Light-Sensor-TSL2561.html),
122+
- [BH1750](https://www.adafruit.com/product/4681),
123+
- [VEML7700](https://www.adafruit.com/product/4162),
124+
- VEML6030 [0x48 - non-default],
125+
- [LTR303/LTR329](https://www.adafruit.com/product/5610)
126+
127+
>The VEML7700 can only be connected if no CircuitSetup Speedo or third-party GPS receiver is connected at the same time; the VEML6030 needs its address to be set to 0x48 if a CircuitSetup Speedo or third party GPS receiver is present at the same time.
128+
129+
Almost all these sensor types are readily available on breakout boards from Adafruit or Seeed (Grove); the links in above list lead to tested example products.
130+
131+
For wiring information, see [here](#i2c-peripheral-wiring).
132+
133+
>Note: You cannot connect the sensor chip directly to the TCD control board; most sensors need at least a voltage converter/level-shifter. It is recommended to use Adafruit or Seeed breakouts, which all allow connecting named sensors to the 5V the TCD board operates on.
134+
135+
## I2C peripheral wiring
136+
137+
All i2c peripherals described above are to be wired as follows:
138+
139+
On the TCD control board, there are three breakouts named "I2C", at least one of which has a header soldered on; it does not matter which one you use to connect your sensors/speedo/GPS/rotary encoders. On Control Boards version 4, there are screw terminals for the other two i2c connectors; for older boards, I recommend to solder on [XH](https://www.amazon.com/s?k=jst+xh) 4-pin headers to the other two i2c breakouts as well (like in the second picture). When you order a CircuitSetup Speedo, they will include such headers if you request them. Do not solder wires directly to the board!
140+
141+
![i2c](DIY/img/i2c1.jpg)
142+
143+
![i2c](DIY/img/i2c2.jpg)
144+
145+
On most peripherals the pins are named as follows, and need to be connected to the corresponding pins on the control board:
146+
147+
<table>
148+
<tr>
149+
<td align="center">Peripheral PCB</td><td align="center">TCD control board</td>
150+
</tr>
151+
<tr>
152+
<td align="center">GND or "-"</td>
153+
<td align="center">GND</td>
154+
</tr>
155+
<tr>
156+
<td align="center">VIN or 5V or "+"</a></td>
157+
<td align="center">5V</td>
158+
</tr>
159+
<tr>
160+
<td align="center">SDA<br>(SDI on BME280)</td>
161+
<td align="center">SDA</td>
162+
</tr>
163+
<tr>
164+
<td align="center">SCL<br>(SCK on BME280)</td>
165+
<td align="center">SCL</td>
166+
</tr>
167+
</table>
168+
169+
For longer cables, ie >50cm (>20in), I recommend using a twisted pair cable, and to connect it as follows:
170+
171+
![i2clongcable](DIY/img/i2clongcable.png)
172+
173+
>Important: The TCD control board delivers and drives the i2c bus on 5V. Most sensors/GPS receivers operate on 3.3V. Therefore, you cannot connect the chips directly to the TCD control board without a level-shifter. This goes for the power supply as well as the i2c bus signals (SDA, SCL). I only use readily available sensor breakout boards that include level-shifters.
174+
175+
#### Multiple i2c devices
176+
177+
If going by the book, multiple i2c devices should be daisy chained; however, I had sensors, speedo and GPS receivers run in parallel without issues for months.
178+
179+
Note that you can only use one per device type (temperature/humidity sensor, light sensor, GPS receiver, Speedo display) at a time. As regards rotary encoders, one for speed and one for volume can be connected.
180+
181+
To avoid running out of i2c connectors, and to reduce the cable chaos, I designed a small PCB that acts as a i2c and power splitter:
182+
183+
<img src="DIY/img/splitter_1.jpg" width="415"><img src="DIY/img/splitter_2.jpg" width="341">
184+
185+
<img src="DIY/img/Splitterv1.png" width="600">
186+
187+
- 12V in: 12V input for the TCD and the TFC switch, using a 5.5/2.1mm standard DC power plug.
188+
- Input from TCD: Connect those to the TCD control board as indicated above
189+
- 12V output: 12V power for the TCD
190+
- four i2c screw connctors for sensors, rotary encoders, Speedo, etc
191+
- TFC drive switch connector
192+
193+
Production files are in the [DIY/splitter](DIY/Splitter/) folder.
194+
195+
#### i2c addresses
196+
197+
i2c devices have "addresses". Most sensors either only support one i2c address, or are recognized by the firmware (only) by their default address. For those, nothing must be done in order to use them with the Time Circuits Display.
198+
199+
Notable exceptions are the TMP117 and HTU31D sensors: Their address needs to changed in order to be recognized by the firmware. On the Adafruit breakouts, this is done by connecting two solder pads on the back side of the PCB:
200+
201+
<img src="DIY/img/addrjmp.png">
202+
203+
This image shows the HTU31D PCB's back side. Connect (shorten) those two pads in order to change the address. It looks similar on the TMP117.
204+
205+
For Rotary Encoders, see [here](#hardware-configuration).
206+
207+
## Other props
208+
209+
### Connecting props by wire
210+
211+
The TCD can tell other props about a time travel. It does so by setting a pin (IO14, labeled "TT OUT" on Control Boards 1.3 and later) to high or low. "High" is between 2.7V and 3.3V.
212+
213+
![Wired connection](DIY/img/family-wired.png)
214+
215+
You need two wires for connecting the TCD: TT_OUT (IO14) and GND, which need to be connected to the respective pins of the prop.
216+
217+
| ![ttout](DIY/img/ttout.jpg) |
218+
|:--:|
219+
| TT_OUT/IO14 on board version 1.3 |
220+
221+
| ![ttout](DIY/img/ttout12.jpg) |
222+
|:--:|
223+
| IO14 on board version 1.2 |
224+
225+
Here's the timing diagram:
226+
227+
1) Option **_Signal Time Travel without 5s lead_** unchecked
228+
229+
```
230+
|<---------- speedo acceleration --------->| |<-speedo de-acceleration->|
231+
0....10....20....................xx....87..88------------------------88...87....................0
232+
|<--Actual Time Travel -->|
233+
| (Display disruption) |
234+
TT starts Reentry phase
235+
| |
236+
|<---------ETTO lead--------->| |
237+
| |
238+
| |
239+
| |
240+
TT-OUT/IO14: LOW->HIGH TT-OUT/IO14: HIGH->LOW
241+
```
242+
243+
"ETTO lead", ie the lead time between TT_OUT/IO14 going high and the actual start of a time travel is defined as 5000ms (ETTO_LEAD_TIME). In this window of time, the prop can play its pre-time-travel (warm-up/acceleration/etc) sequence. The sequence inside the time "tunnel" follows after that lead time, and when IO14 goes LOW, the re-entry into the destination time takes place.
244+
245+
2) Option **_Signal Time Travel without 5s lead_** checked
246+
247+
```
248+
|<---------- speedo acceleration --------->| |<-speedo de-acceleration->|
249+
0....10....20....................xx....87..88------------------------88...87....................0
250+
|<--Actual Time Travel -->|
251+
| (Display disruption) |
252+
TT starts Reentry phase
253+
| |
254+
| |
255+
| |
256+
| |
257+
| |
258+
TT-OUT/IO14: LOW->HIGH TT-OUT/IO14: HIGH->LOW
259+
```
260+
261+
In this case, there is no lead. The time travel starts immediately.
262+
263+
_Text & images: (C) Thomas Winischhofer ("A10001986"). See LICENSE._ Source: https://tcd.out-a-ti.me

0 commit comments

Comments
 (0)