you need the uart adaptor that goes on the i2c bus, you can connect 16 of them per I2C port, so, teensy 3.5 has 3 i2c busses, theoretically you can add 48 uarts on teensy 3.5
the adaptor is from sandboxelectronics, and has 64byte FIFO with automatic rts/cts flow control (disabled by default)
there are maybe 1 or 2 other libs on the net that support it, however, the one i wrote which uses the stream class treats it like a normal uart, ex. Serial7, myUart, orWhatever
if your looking for rts+cts support on it, none of the public libraries have that support, but mine does, and as well, I also added automatic recovery (yes, thats right, you can hot plug it and it restores your baud rates and reconfigures the chip)
the rts+cts is automatic as well, meaning, if you dont use it, no biggie.
115200 tested on adafruit ultimate gps, 115200 tested on serial 7" lcd, 115200 tested on BT dongles, 921600 tested on esp
if you plan to do SSL on esp8266 over uart, don't...pages can exceed 40KB traffic which, doesnt stop the uart adaptor, but causes the esp8266 to restart itself as it's buffer is only 4/8KB max. Regular Http is fine as I used the normal library commands
I havn't made it public yet, never done any releases yet, just been coding in the past time looking for alternatives to more uarts.. maybe if you leave a trail of cookie crumbs it might fall out of my pocket on the way there
there is another guy working on an spi protocol for ESP, where the ESP is the slave, and the arduino is the MASTER, he's using the same syntaxs as the notmal libraries for esp8266, so this might be pretty good if it pans out, however, he didn't add SSL yet and I brought it up at his github, hopefully he can get that worked out, because, I aint putting no dead trailing winc1500's in my setups until they fix that lockup bug. I don't care about the "timeouts", I can throw that crap in another thread and it can take whatever time it needs to finish without slowing down the other threads
I'm also working on a quad uart SPI chip as well, there is a firmware bug in it which is nasty as heck, hopefully it can be ressolved, and I will make a uart library for it using the stream class
I make it real easy
Code:
//initializer
#include <i2c_t3.h>
#include "I2CUart.h"
i2cUart huzzah = i2cUart(144, 2); // huzzah <--- 144 == chip address (1 of 16 addresses), 2 == Wire2 port
i2cUart bt = i2cUart(146, 2); // BT
.
.
.//setup
.
huzzah.begin(921600);
bt.begin(115200);
.
.
.
.
.loop
.
while ( Serial.available() > 0 ) bt.write(Serial.read());
if ( bt.available() > 0 ) Serial.print((char)bt.read());
// while ( Serial.available() > 0 ) huzzah.write(Serial.read());
if ( huzzah.available() > 0 ) Serial.print((char)huzzah.read())
;