Teensy LC carrier for Odroid HC1

Moderators: mdrjr, odroid

Teensy LC carrier for Odroid HC1

Unread postby Nominal Animal » Fri Oct 13, 2017 9:16 am

I reworked my Teensy 3.1/3.2 carrier design for Odroid HC1 to a much simpler form, suitable for Teensy LC (a USD $12 32-bit microcontroller by http://www.pjrc.com, also distributed by Adafruit, SparkFun, and others). This same carrier will work for Teensy 3.0, 3.1, and 3.2 too, but the internal pads won't be exposed. (I took down the old design, because the board traces would not have been able to handle the 3A+ currents at 5V. And it was too complicated to start with.) Do note that Teensy LC can provide oly about 100mA total to peripherals at 3.3V.

The board should sit flush on the mounting screws/studs on the HC1. There is an additional 3mm hole that should be on top of the SATA connector, for a rubber foot (a PC fan rubber stud/screw should work).

In addition to the TXS0102DCTT (SM8 footprint), there are just two 0.1µF 0603 ceramic capacitors, a 47kOhm 0603 resistor, two through-hole 1N4001 diodes (or similar), the female header to connect to the Odroid UART, and some standard pin headers (three additional power and three ground lines in particular).

Here's the top of the board. The four-pin header at center top has the I2C pinout for OLED displays (GND, VCC, SCL, SDA). I won't use pins here myself; I'll solder a short (~ 5cm) flat cable directly here, and to an OLED display.
Image

The bottom is very bare, just the two caps for the TXS0102. I want it to sit flush. The pins need to be carefully cut to correct length before soldering, and maybe add a sheet of polycarbonate to ensure nothing shorts between the board and the Odroid. (This is flipped horizontally, compared to the above picture.)
Image
(The traces are really wide, especially the 3.3V/5V and ground traces, but I wanted this to work safely on 1 oz copper PBCs, and there was room.)

There are 20 unused pins on Teensy LC, including another I2C bus, two SPI buses, PWM outputs, analog inputs, and digital pins with interrupt capability (for rotary encoders; I might use some mouse scroll wheel ones).

This time, the schematic is quite simple, too:
Image

(I already goofed a bit: I ordered a batch of five boards using a previous version of the PCB, with a SSOP8 footprint for the TXS0102. Only afterwards did I realize that it might not be available at all (and some vendors confuse SM8 and SSOP8), but the SM8 footprint is very easily available, even in my local supplier.)

This board is in the public domain at https://easyeda.com/NominalAnimal/, but do note that this is still untested work in progress.
Nominal Animal
 
Posts: 67
Joined: Sat Sep 16, 2017 12:51 pm
Location: Finland
languages_spoken: English, Finnish
ODROIDs: C1+, HC1

Re: Teensy LC carrier for Odroid HC1

Unread postby odroid » Fri Oct 13, 2017 9:27 am

Very fast progress and it looks very promising.

BTW, what do you want to do with Teensy IO ports and HC1? Something like a home automation?
User avatar
odroid
Site Admin
 
Posts: 28697
Joined: Fri Feb 22, 2013 11:14 pm
languages_spoken: English
ODROIDs: ODROID

Re: Teensy LC carrier for Odroid HC1

Unread postby Nominal Animal » Fri Oct 13, 2017 10:41 am

Essentially, it will be a small home server and firewall, connected to internet via a 3G/4G/LTE USB modem, out in the backwoods.

The OLED display will act as a status display. I'll also use some sensors (maybe a DS18?20 digital temperature sensor, and an IR sensor to turn the OLED display automatically on when someone gets near enough), and buttons or encoders for navigating the OLED display. I prefer encoders over buttons, and have some mouse wheel encoders I could use.

Possibility of occasional power outages are still an issue. I think I'll tackle those as a separate board, later on; probably around the TE Connectivity/Shrack RT314F03 3V bistable power relay. The idea is to have a small UPS -- maybe a bank of NiMH cells, trickle-charged --, just enough juice to power down the server in a controlled manner. The Teensy would be powered all the time, as long as there is enough power available, so that it can monitor the UPS and delay powering on the Odroid until the power has been stable for a minute or two. Powering down, say from a button, would also be always in a controlled manner: the userspace daemon communicating with the Teensy will issue shutdown -h now or poweroff if the Teensy asks.

The reason I wanted high bandwidth serial to work, is that then I could see if modifying the kernel driver to multiplex the serial console and control messages would be feasible. The carrier board allows the microcontroller to be simultaneously connected to the Odroid, and to another computer via USB, as long as they are in the same ground potential. (I use a cheap USB 1.1 isolator based on ADuM 3160/4160, so I don't need to worry about that either.)
Nominal Animal
 
Posts: 67
Joined: Sat Sep 16, 2017 12:51 pm
Location: Finland
languages_spoken: English, Finnish
ODROIDs: C1+, HC1

Updated Teensy carrier for Odroid HC1

Unread postby Nominal Animal » Wed Oct 18, 2017 1:21 am

I updated my design to version 1.5 (!), and now there are just four components needed on the board: two Schottky diodes (MBR120, SOD123FL footprint) and two Texas Instruments SN74LVC1T45DBV bus transceivers for the voltage conversion. Plus of course the female pin header connector to the HC1, and some standard pin headers to mount the Teensy on the board.

Although the board is designed for Teensy LC, I'll build at least one with a Teensy 3.0 I already have; the board works with Teensy LC, 3.0, 3.1, and 3.2; only the 3.x the inner pads (twelve additional pins) are not exposed, and the second I2C (GVCD) is only available on the Teensy LC, on the others they are just two touch-, PWM-, interrupt-, and analog input capable I/O pins. I just ordered the boards from EasyEda and the transceivers off Ebay, so I should be able to test this in a couple of weeks or so!

Instead of pin headers, I decided to try very small (0.5mm diameter, 1.27mm pitch) holes with extended pads on the underside, with the intent of soldering ribbon cables directly to the board. I believe this will work, but I will only know for sure after I try it with a real board. I minimized the silkscreen, too; with none on the bottom, and only placement lines/corners and pin names. The text is at the minimum thinness and size for EasyEda, so we'll see if it comes out okay.

The design is of course still in public domain. Here is the schematic:
Image
Yes; it is pretty much trivial, except for how the signals are routed. Since the reference design did not have bypass caps for the transceivers, I didn't add any either. The two Schottky diodes are only used to allow connecting both the +5V input (upper right corner of board) and USB at the same time, without risk of feeding back current to one or the other. (Also, if the Teensy is powered from +5V input, and you have the USB connected to a computer, the diodes avoid feeding power to the USB bus.)

Here are the projected images of the top and bottom of the board:
Image

Note that the SN74LVC1T45 transceivers do have the isolation feature: all outputs are in high-impedance state, if either side is unpowered. Although they are capable of half-duplex operation (there being a pin controlling the direction), the schematic fixes the directions; this is also the reason why the transceiver chips are oriented so funny (rotated 180 degrees with respect to each other).

The two large holes are 4.5mm in diameter, and should sit on top of the mounting screws/posts (top part). I do intend to put a thin sheet of lexan or similar insulating hard plastic beneath the board, to ensure nothing can stick out and short to the HC1.

The connector labeling:
G34, G56, G78: The first pin is GND, and the other two are I/O pins (3, 4; 5, 6; and 7, 8, respectively). I intend to use these for rotary encoders (pins as inputs, with internal pull-ups enabled). You can use each for a pair of buttons, too, if you don't want to use encoders. The ones I have are ubiquitous on eBay (just look for mouse wheel encoder) and are probably clones of ALPS EC10E1220501. The only problem I have with these is I can't find 1.73mm (0.068") hex bar/rod/wire to use as a button axis core.
GVKDRCSI: A SPI connector, with GND, +3.3V, SCK(14), MOSI/DOUT(11), RES(2), DC(9), CS(10), and MISO/DIN(12). This pinout is suitable for SPI OLED modules.
GV567: Three analog input and PWM-capable I/O pins. GND, +3.3V, A1(15), A2(16), A3(17). On Teensy LC, only A1(15) is interrupt-capable; on others, they all are.
DCVG: An I2C connector, with (right to left) GND, +3.3V, SCL0(19), and SDA0(18). This pinout is suitable for I2C OLED modules.
01AVG: Two analog input and PWM-capable I/O pins with interrupt capability (20, 21), and one analog input pin A11(25). The last two are +3.3V and GND.
GVCD: An I2C connector on Teensy LC: GND, +3.3V, SCL1(22), SDA1(23). For Teensy 3.x, the latter two are just analog input-, PWM-, touch-, and interrupt-capable I/O pins.

All comments and criticism is welcome!
Nominal Animal
 
Posts: 67
Joined: Sat Sep 16, 2017 12:51 pm
Location: Finland
languages_spoken: English, Finnish
ODROIDs: C1+, HC1

Re: Teensy LC carrier for Odroid HC1

Unread postby mad_ady » Wed Oct 18, 2017 3:02 am

When the first batch is done you should definetly submit an article to the magazine!
Also, would this work with a regular xu4/xu4q? I'm not sure if the orientation of the connector would allow the board to fit because of the cooler.
User avatar
mad_ady
 
Posts: 4578
Joined: Wed Jul 15, 2015 5:00 pm
Location: Bucharest, Romania
languages_spoken: english
ODROIDs: XU4, C1+, C2, N1

Re: Teensy LC carrier for Odroid HC1

Unread postby Nominal Animal » Wed Oct 18, 2017 3:50 am

mad_ady wrote:I'm not sure if the orientation of the connector would allow the board to fit because of the cooler.

No, the board cannot sit directly on XU4/XU4Q. But, instead of soldering the female header directly to the carrier board, you could use a short length of a ribbon cable. Also, the HC1 carrier board is much bigger than it needs to be, if used with XU4/XU4Q: a lot of the board area is unused.

I don't have a XU4/XU4Q, so I don't know where the best place for a board would be, if one wanted to stack them nicely. I used both the CAD drawings and some cardboard models for the HC1 carrier. Teensy LC and 3.x are about 36mm long, and 18mm wide; they're also quite flat, about 5mm. Is there room on top of the USB and Ethernet connectors on XU4/XU4Q? Or would it have to be outside the existing enclosures?

On the other hand, the CON10 (2x15-pin header, the larger one) contains all the pins needed: 5VDC (for power, but definitely could also monitor it, via a 4.7k and 6.8k voltage divisor to bring 5.5V to 3.3V), UART, even the power button signal. You could even have the board sit edge-on to the 2x15-pin header, on top of it. One could use the SPI or I2C instead of, or in addition to, the UART. For example, one could use SPI or I2C for command-and-control of the microcontroller (between the microcontroller and an userspace daemon), and keep the serial console intact, making it simultaneously an USB serial console (just plug the USB to another computer, preferably using an USB isolator!), as well as a management microcontroller.

At some point, I'd definitely like to get a XU4 to play with. I'd love to make make a small enclosure out of solid wood for it, a small stool with a cushion on top, with a 12mm fan on the bottom pushing air through the board (using a passive heatsink otherwise). If I do, I definitely will adapt the carrier board for it too.
Nominal Animal
 
Posts: 67
Joined: Sat Sep 16, 2017 12:51 pm
Location: Finland
languages_spoken: English, Finnish
ODROIDs: C1+, HC1


Return to Projects

Who is online

Users browsing this forum: No registered users and 2 guests