False values in communication between Arduino UNO and Arduino Due

I'm trying to do serial communication between UNO board and Due. I have read that uno communicates at 5volts and due at 3.3v. So i have made a level shifter using transistor q2n2222.
The problem is that the values(characters,numbers etc) i'm sending from uno appears perfectly at serial monitor of uno but gets changed at serial monitor of due..
The data is getting received at each baud rates but the only problem is that the same data is not getting received..

For example:
Code at Arduino UNO Side

Serial.write("N");

Code at Due:

char x=Serial.read();
Serial.println(x);

Also the level shifter ckt is attached
Both resistors used are 1K
Transistor used is q2n2222.
V+ in the image is 3.3v from Due.

130px-NPN_common_emitter.svg.png

The Due has more than one hardware serial port. Using the one that the PC is connected to to talk to the Uno doesn't seem like the best use of resources.

A complete schematic is in order.

The problem is that the values(characters,numbers etc) i'm sending from uno appears perfectly at serial monitor of uno but gets changed at serial monitor of due..

What do you see on the Due when you send "N" ?

I don't remember of N
But when i send capital 'S' i get 'V' (capital)
And every time it's the same.

And every time it's the same.

Yep. People won't post their code or complete schematic, and yet they still expect help.

Do you realize your level shifter is INVERTING the signals?

Regards,
Ray L.

RayLivingston:
Do you realize your level shifter is INVERTING the signals?

Regards,
Ray L.

So what else can i try?
I tried the emitter follower mode of bjt but it didn't worked

PaulS:
Yep. People won't post their code or complete schematic, and yet they still expect help.

So do you want me to upload the entire code?
because i'm using a library and making changes in that code...