Jump to content

[WIP] The REAL Nav Ball Project Thread


NeoMorph

Recommended Posts

I'm glad to hear you got the KRPC code working!  I should have provided more info sooner!   That was example code in Python that would run on the PC in a Python interpreter - and then you'd add to that last while loop code that used a python serial library to push either raw data or processed motor movement commands out to the arduino.

But it sounds like you've got it working!  Also, I had very similar code using telemachus ages ago! I was running it on one of the TI Launchpads that has built in ethernet and a whole BUNCH of IO pins.  Never got around to finishing the cockpit... but it'll happen eventually.  And when it does I may well build one of your navballs! :)

I've been wondering about getting KRPC working directly to arduino?  There is some work being done on getting the google protbuf library to compile for microcontrollers, which would be the big hurdle to jump I think...  though I think the project would be a bit over my head.  But it's so easy to make an arduino talk to an intermediary program, there's no real reason it has to run natively on the arduino.  Something I MAY work on is building a raspberry pi distribution that has python and krpc and some scripts for various ways to display data all prebuilt so you could just write it to an sd card, and if you wanted physical interface perhaps edit a .cfg file to map buttons or indicators to the GPIO?

But I digressed!  If I can help any more with the KRPC side let me know.  I'm fairly familiar with it! 

Link to comment
Share on other sites

Art, look up "python pyserial arduino". It helps simplify it a lot (well it does after you close the bloody Arduino serial monitor that is).

I hadn't even touched Python until the other day... done the C family (although not too much C#), Java and Lua in my past and keep getting them mixed up.

So I decided to try Python!

Crikey some of it was long winded... learning about how to install PIP, installing Python wheels etc... but I got there in the end. 

But the fussiness about program indents took me back to my COBOL days.

I used the Launch Into Orbit program which actually worked perfect after I figured out the Arduino serial monitor in the IDE was locking out Python when using pySerial. 2nd attempt and I put our 3 amigos into orbit without using kOS or mechjeb.

Next I used the pitch, heading, roll tutorial example...

https://krpc.github.io/krpc/tutorials/pitch-heading-roll.html

Again it worked perfectly... but looking at the code made me realise I need to go back to school (as it were) and also get help (help me Obi-Wan Art Whaley, you're my only hope). But using the tutorial code as an example is a bloody good start.

That tutorial code is working on angles from the surface path by the looks of things. We will have to do orbit and target too. If I get one nav ball working I will probably build another like in the Apollo cockpit... and then I can set one to surface and the other to orbit... or make one A target and the other into orbit... making them interchangeable would be important if my fault generator kills one nav ball.

Had one bit of annoyance today...

My dear customer,
Thank you for your order, but here has a bad news.
I'm so sorry to inform you that this item was out of stock, sorry I forgot to update the inventory information.
In this case, it was better to full refund to you, do you think so?
Hope you can reply me.
Best regards

That was the dual shaft motor that drives the ball hemispheres for the 12cm version. Had to reorder from another supplier which means another long wait. Oh well, need to get the 16cm version running first heh... but I feel confident.

 

 

Link to comment
Share on other sites

I'm going to be literally learning Python this week and maybe brush up on my trigonometry, and hope it IS trig and not me getting "triggered" lol. I'm stuck on my hardware atm as I'm still waiting for my bearings to arrive... you might say "I can't get my bearings lately!"

I used to find learning new languages fun... will have to find out how thing go from here. Hell, I learned LUA by repairing bad code on my gaming isp main website because the code they paid for was total rubbish and crashed a lot... talk about pressure learning.

 

Link to comment
Share on other sites

Okay Art, I was looking at the reference frame code and came across this... was going to mention you could look at it when... I glanced over and looked at who was actually part of the conversation and had they fix s added to krpc.... god I'm soooooooooo dumb at times... and yeah, I'm blaming lack of sleep and painkillers heh.

NVeFtw4.jpg

https://github.com/krpc/krpc/issues/397

 

Link to comment
Share on other sites

Yes, Djungelorm is way smarter than me, but I try to contribute fixes when I find a problem! 

I ALSO found (find, but have stopped complaining aloud about it) the indentation instead of just using parenthesis all willy nilly to be frustrating at times, though I am STARTING to understand the beauty of encouraging people to all write code that essentially 'looks like python' by doing it that way.  But still.   Having a program refuse to execute because there's an extra space at the beginning of a line is annoying, right?  ((Okay, I apparently still complain aloud a little.)

Yes, Pyserial is the way I'd probably pass things to the navball too!  At the moment we're working on getting a repository of KRPC example scripts built and perhaps I should do a Pyserial example that shows how to push some data to an arduino?   I'll think on that!  It's here  https://github.com/krpc/krpc-library if a couple more examples are useful to you.  

Definitely let me know when you get stuck!  The example I posted above should pass out the data for one navball if you replace the three print statements (or augment above or below them) with the Pyserial command to send your data however you'd like!  

Link to comment
Share on other sites

Looking at the pile of stuff you have there is pretty crazy.  And all of the different power supplies... I know your pain my friend... 

Just a suggestion (maybe for version 8?) Have you looking into using something from a 3D printer?  You can get RAMPS boards dirt cheap from eBay, and they will give you up to 5 axes of stepper control, and have nice cheap, replaceable Pololu style stepper drivers.

http://www.ebay.com/itm/RAMPS-1-4-3D-PRINTER-CONTROLLER-Mega-2560-R3-CH340G-5x-A4988-2A-Drivers-More-/321974766842?hash=item4af7310cfa:g:ggUAAOSwL7VWlds2

 These things would work a charm for what you are doing, and then all you would need is one 12v power supply for everything.  Plus, the documentation for RAMPS is great. http://reprap.org/wiki/RAMPS_1.4

 

Link to comment
Share on other sites

2 hours ago, Dr.Vulpinus said:

Just a suggestion (maybe for version 8?) Have you looking into using something from a 3D printer?  

I use some reprap parts in my build already. But here is why all the bits... this is my current design btw. 

3 axis for heading, yaw and roll (steppers)

3 axis for movement rates (servos)

3 axis for course error needles (servos)

1 axis for power flag (servo)

3 ball zeroing indicators (hall effect sensors)

 

The power flag is this little thing...

p9kzZuV.jpg

... and will be changing the servo for a solenoid either in this upcoming build or the first 12cm build. I got these dinky little 5v solenoids that will do just right. 

EUY2HA0.jpg

 

So so as you can see, it's come quite a long way... it's just waiting for some parts is all (darn bearings).

Link to comment
Share on other sites

There has been one huge bonus this project has given me. I always thought that artificial horizon gauges were out of my price range. Now though, I can quite easily build my own because I fully understand how they work. This is because where the nav ball displays three  axis plus three rates of change and three course error values... all the artificial horizon does is show pitch and roll... 

 

Here is an aircraft Artificial Horizon...

eb3NblM.jpg

 

... and here is a beautiful Apollo FDAI...

2mbeOb9.jpg

 

... which just goes to show what is squeezed into such a small space. And as I now know how to make an FDAI you can see how easy the AH is by comparison!

 

Link to comment
Share on other sites

Well, today the postwoman arrived bearing gifts... looked to be about half her sack full of stuff. 

Everything but the darn ball itself has arrived, including the tools I ordered to make some of the parts as don't yet have a cnc machine or laser cutter. When this is finished though, I will have at least on cnc laser or engraver. 

I even went to a friend to rebore the problematic main gear that was malformed due to a carbon chunk being left in the steel blank... all so I could test for fit of the roll axle subassembly.

The one job I really am dreading is cutting the 6 C assemblies before heat shaping them for the 8-ball inner cage. A lot of the testing is going to be done using plywood. I might even see if there is a maker group nearby who will help cut the acrylic for me.

So progress is being made... photos WILL be posted on Sunday's main progress report. This week is going to be mainly dev rigs I've been making due to waiting for parts... I've still got parts on the way for Prototype 8 (the 12cm ball model) but I haven't even started the plans for that one yet as things might (read probably) change in the 15.6cm build. Remember this is just the hardware... the larger amount of time is going to be spent on writing the client/server (Python/Arduino C) system. 

Edited by NeoMorph
Link to comment
Share on other sites

Well I'm gutted... 

I was reading up on making a little cnc machine to assist in making a part I want (tools to make tools) when I came upon this little beautiful little detail...

Quote

... but built from 2 old stepper motors and some steel rods (all cannibalised from old flatbed scanners), some MDF and plywood and a few 3d printed parts (printed with my MakerBot Cupcake).

 

Old flatbed scanner... old flat... bed.... scanner... OLD FLATBED SCANNER.... ARRRRRGGGH

Oops!

You see, for years I've had the  carcass of an old flatbed scanner that I had broken the lid off and never got fixed. It's slept in my junk bin for decades... and last week I decided I needed some space and decided to throw some old, useless junk out that I hadn't even looked at for over 10 years... and yes, you guessed it, it included that darn flatbed scanner lol.

They always say you find a use for something the moment you throw it out... god...dang... it! Over 10 years and I throw it out a week before I needed it...

Oh well, something else to order. LOL

Link to comment
Share on other sites

The Lord Taketh Away And Giveth Back Stuff You Thought You'd Effing Lost When Though Least Expect It.

Yup, I have NO freaking excuse that I don't have all the parts after I found a pair of 15.6cm balls from about 3 years ago... found when I was looking for wood to make my acrylic bending machine for the ball cage.

Me happy!

LZgCQgd.jpg

 

Even Dougal and Dylan approve... 

2nmTwIy.jpg

Edited by NeoMorph
Link to comment
Share on other sites

  • 3 weeks later...

Hah - Awesome work @NeoMorph! I was looking at your old thread and ended up doing my own investigations and stumbled over the 12wire adafruit SlipRing which I figured would be good for getting the power / signal inside the ball. (might be what you pictured a few posts back)

Anywhoooo, while looking at other stuff for ideas to replicate your efforts, I found the new 2017 thread and I'm quite excited to see that work continues. Your research and effort have been fantastic and I've gotta applaud the effort. :) If you do release plans / details in teh future, I'm pretty keen to replicate :) your efforts (maybe not so much the BoM :P

 

One question: I saw you originally were using NEMA 17 steppers, did you end up staying with that size or change later on? I was looking at the small version and wondering if the 20mmx30mm steppers like those seen here might not have the torque needed for the project?

 

 

 

 

Link to comment
Share on other sites

  • 2 weeks later...

I dropped down to NEMA 14 for the 12cm ball. I wanted them to have enough torque to handle violent manoeuvres (you know how Jeb is like when he's in command).

MqzO5ua.jpg

Today I also bit the bullet and ordered a brand spanking new CNC router as cutting out complex shapes is a pain to get right. The inner cage do example looks simple but man it's a pain to get right without totally distorting the shape. In the end it's not going to be a straight copy as I can't afford some of the bearings they used in the original. But then again they didn't use steppers in the Apollo FDAI. 

Edit: P.s. You were right about the slip rings. I actually came across them earlier this year... and then found another nav ball maker had found them even earlier... grrr... The number of home made ones that I tried... plus you actually need TWO slip rings... one for the ball and one for the cage.

Surprised me when I found out they supported 2amp (those thin wires worried me) and as the steppers are only 0.4amp peak it worked out great. I've still got spares just in case... "hope for the best, prepare for the worst", as someone said at some time or other. 

Edited by NeoMorph
Link to comment
Share on other sites

nice - I like the idea of using the dual shaft stepper to centralize the weight in the ball. Would love to see pictures on the setup as you've currently got the internals whenever you get around to it as it'd be interesting to see how much your planned layout change from the original pic from a few years back.

Link to comment
Share on other sites

On 08/08/2017 at 2:20 PM, wile1411 said:

nice - I like the idea of using the dual shaft stepper to centralize the weight in the ball. Would love to see pictures on the setup as you've currently got the internals whenever you get around to it as it'd be interesting to see how much your planned layout change from the original pic from a few years back.

Back in 2013 I realised I needed a cnc router to get everything squared up and aligned. When you realise that mounting the stepper on one side of the plate would work but then the ball would be unbalanced in two directions (there are actually two stepper motors in the ball, one for yaw and one for pitch plus I'm mounting the slip ring INSIDE the ball to make mounting it simpler... plus add in bearings and wiring... it's getting jam packed in there. That's why it makes sense to mount the dual axle stepper perfectly in the middle of the plate. 

But then there is the fact I have to offset the mounting bracket... which fixes another problem of stability if I carve out supports for both sides of the plate and also use it to help support the yaw stepper... I'll dig out some pictures for tomorrow so you can see what I mean.

But yeah, the CNC will help me get my parts out faster and more accurate than doing them manually... and it only took me saving since 2013 to do it... and then again it's not the biggest or the best model out there. At least it's not a Chinese one with no support. The company I ordered from, Ooznest, supply schools and maker fairs.

Link to comment
Share on other sites

53 minutes ago, NeoMorph said:

Back in 2013 I realised I needed a cnc router to get everything squared up and aligned. When you realise that mounting the stepper on one side of the plate would work but then the ball would be unbalanced in two directions (there are actually two stepper motors in the ball, one for yaw and one for pitch plus I'm mounting the slip ring INSIDE the ball to make mounting it simpler... plus add in bearings and wiring... it's getting jam packed in there. That's why it makes sense to mount the dual axle stepper perfectly in the middle of the plate. 

Noice :) - The bit I'm keen to see is how you're going to mount the slipring and still have a pivot shaft to mount the ball to that axis. Were you mounting the ball with only 1 attachment point with the stepper and slipring on the same side, or were you going to use the stepper shaft on one side with the slipring on the other side of the ball as to pivot points?

In my own research I found a hollow slipring, but it was doing my head in which bit rotates and what is fixed to which part. :D 

Love your project and wishing you all the encouragement I can send :rep::rep::rep::rep::rep:

 

Edited by wile1411
Link to comment
Share on other sites

14 minutes ago, wile1411 said:

Noice :) - The bit I'm keen to see is how you're going to mount the slipring and still have a pivot shaft to mount the ball to that axis. Were you mounting the ball with only 1 attachment point with the stepper and slipring on the same side, or were you going to use the stepper shaft on one side with the slipring on the other side of the ball as to pivot points?

In my own research I found a hollow slipring, but it was doing my head in which bit rotates and what is fixed to which part. :D 

Love your project and wishing you all the encouragement I can send :rep::rep::rep::rep::rep:

 

LOL... that was one thing that kept me awake at nights. The solution was to mount the stepper motor inside the ball and the shaft is attatched to the outside of the case as a fixed point. That way the stepper is moving itself inside the ball. Then the other side of the ball is a hollow tube which goes into the ball and is also affixed to the cage outside. Inside the ball is two bearings to allow it free movement and near the centre is the slip ring that is mounted facing into the tube so the wires dont move in the tube and again the slip ring rotates. If I had a pancake slip ring instead of a capsule slip ring I could have probably done it like the Apollo engineers did... but I had to make do with said capsule.

This is a graphic to show the mounting of the steppers to the centre plate with the support block....

TG5Lu8A.png

Here is the side view with in tech drawing mode to show you how the blue line is denoting the hollow hemisphere. I have got to add in the hemisphere mounts and the slip ring mechanism I described but this is from Prototype 8 as I halted work on Prototype 7 as I felt with the CNC on the way it made sense to go to the actual size now I will have the tools to do the job.

K1jmYY2.png

Link to comment
Share on other sites

1 hour ago, NeoMorph said:

LOL... that was one thing that kept me awake at nights. The solution was to mount the stepper motor inside the ball and the shaft is attached to the outside of the case as a fixed point. That way the stepper is moving itself inside the ball. Then the other side of the ball is a hollow tube which goes into the ball and is also affixed to the cage outside. Inside the ball is two bearings to allow it free movement and near the centre is the slip ring that is mounted facing into the tube so the wires don't move in the tube and again the slip ring rotates. If I had a pancake slip ring instead of a capsule slip ring I could have probably done it like the Apollo engineers did... but I had to make do with said capsule.

This is a graphic to show the mounting of the steppers to the centre plate with the support block....

<snip>

Here is the side view with in tech drawing mode to show you how the blue line is denoting the hollow hemisphere. I have got to add in the hemisphere mounts and the slip ring mechanism I described but this is from Prototype 8 as I halted work on Prototype 7 as I felt with the CNC on the way it made sense to go to the actual size now I will have the tools to do the job.

<snip>

Hahah! :sticktongue::sticktongue::sticktongue: Glad to know even you had issues with that design element. Using the original picture you posted way back when, I understood the design element for the internal motors, I struggled to understand how the ball mounts while allowing a slipring function somewhere (Apollo design aside). You probably know the loop in logic - I need a pivot point at the other side of the stepper, but it can't move relative to the arm that holds it, but it can't move!, but I still need a pivot point!, but...but...but... etc... :/

Trying to work that out is what drove me to google like crazy for slipring variations with/without flanges and other ways that combine a pivot point and a slipring. All that and I ended up coming back full circle when one of my searches found the 2017 updated thread. :) *sigh* All that for trying to work out how to made the slipring act as both a mounting point for the bottom external pivot shaft (ie that doesn't move with the cage, but does move relative to the ball) as well as a... well... slipring. Congrats on your efforts to nut out that problem.

Based on those images, I'm guessing you're going to have some sort of counterweight on the bottom half of the sphere to even up the balance when you rotate the (unseen) cage axis?

I already spotted the other slipring in your previous posts that is likely to be the one you mount on the cage to the base/computer connection. It looks like to took the 12wire option - how mony of those did you end up using? 4 per stepper? Any internal lighting planned?

Lastly, just wanted to marvel at your technical drawings. I've tried a few tutorials with stetchup and still haven't gotten my head around doing 3d drawings. Just need more time and practice I thinks.

Edited by wile1411
Link to comment
Share on other sites

On 08/08/2017 at 2:20 PM, wile1411 said:

nice - I like the idea of using the dual shaft stepper to centralize the weight in the ball. Would love to see pictures on the setup as you've currently got the internals whenever you get around to it as it'd be interesting to see how much your planned layout change from the original pic from a few years back.

I will be using a lead weight to balance out the offset stepper but it's a lot less using the NEMA14 14's thank god...

Oh and one thing... remember to buy a hollow rod for your main axle... and make it big enough for the wires lol. Prototype 5 failed because I didn't give the wiring enough room and one or two wires got skinned and I didn't notice. That is when I burned out some of my drivers quite spectacularly... first thing I did with my new roll axle was make sure EVERYTHING was smoooth, smoooooooooth, smoooooooooooooooooth.

Regarding the slip ring.... it's a 12 way for a huge reason. I didn't want to be resetting the ball every time I load d up KSP so I figured out that something as simple as a magnet and a Hall effect sensor does the trick. Glue the magnet to the inside of the ball and the sensor mounted on the plate, that's the pitch done... then a magnet on the edge of the plate with the sensor on a mount on the cage did the yaw... and finally a disk on the roll axle with a magnet attatched and a sensor on the case sorted out the roll. Then all you do is something like the homing routine of a cnc machine will reset the ball when you need to. Add some buttons to your cockpit like IMU Cage on the Apollo CM and LEM dashboards and then use the three thumbwheels attatched to rotary encoders to fine tune it (on Apollo that was on its own panel called the Attitude Set Control Panel - Panel A in the image below).

If there is anything you need or any advice my way... well... both are welcome. Oh and regarding my design... it's changed drastically over the years... loads of REALLY crappy decisions led to new neurons firing thank god... almost gave up a few times but then I decided to mod a Farm Simulator joystick which triggered my mod  obsession once again.

Edit: 1. YOU DON'T SPELL WIRES WITH TWO S's and 2. IT'S NEURONS NOT NEUTRONS.... stupid autocorrect failed on the first and got the second wrong... WHY DO WE USE IT lol.

tOWrbE6.jpg

Edited by NeoMorph
Link to comment
Share on other sites

Wile, I was wondering if you had figured out the way to paint your nav ball itself.  I've got the theory but again the problem I came up against was something essential.... i.e. accuracy.

I will need to do a bunch of work on creating the tool that will make the tool that will create the nav ball markings. The first part will arrive with my CNC machine... and then you may guess what I will build with that as one of my first jobs.

If you guess correctly and I actually get it working I will make you one for cost (i.e. the plastic outer ball and the postage as you are on the other side of the world).

Ironically the reason I'm willing to do it (even though I'm in the UK) is that my one cockpit build I did was an ATR72 turboprop when everyone else was making Cessna light aircraft, Boeing and Airbus big jets and occasionally someone else would do a regional jet... but I wanted something different... a regional Turboprop.

Anyway, the only place I could find making panels were over in New Zealand of all places. Half way round the freakin planet. And of course I ordered my panels and they were just being painted when that big earthquake hit so the panels weren't the best quality but I still really liked them because they pushed through and still got them out to me... and when I pointed out a few errors a couple of month later they sent me out a whole bunch of replacements free of charge...

The company is called Ruscool (http://www.ruscool.co.nz/) and they have really come on loads since then. I still loved flying my ATR for several years until I decided to do this KSP cockpit... and I still haven't made the damned navball lol.

Anyway... I have always said that anything I develop is going open source... and that includes making spares for others. I won't sell them because I can only work the odd days in the summer (which is why it's taken me so long) with the rest of the time being stuck in bed due to pain... but at least now I can draw up automation plans for my CNC... yay... so if there is any part you need I will either send you the part OR send you the GCode (grrrr bloody autocorrect) to make the part on any CNC machine if you know of a friend or a maker fair near you.

But the paint job for the ball itself is going to have to be done here and sent out because of what I need to make to actually make the markings. Also I need to find a source of spray masking... hmmm

Edited by NeoMorph
Link to comment
Share on other sites

HELP!

Just realised something about the KSP navball compared to the Apollo navball... again (realised this in 2013).

Do I do a KSP pseudo navball or do I use the Apollo 8-ball? Or should I make one of each?

The difference is explained by this brilliant poster I discovered who seems to know what he's on about ;-)

 

Link to comment
Share on other sites

I guess it would depend on why you're doing the Navball project in the first place really. If the goal is to get the game numbers/dials off the screen and into physical readouts, I'd do the airplane altitude indicator only because it would match the game and you'd constantly flipping between numbers.

If the goal is to be able to NOT look at the screen GUI and know where you are or if you a more 'realism inclined', then you'd probably want to go for the 8-Ball approach, no? That way you'd be interpreting the numbers as intended for the situation you are in.

Having said all that - I'm not sure what help you need when the solution is obvious, :wink: wouldn't it look cooler if you had both to represent Surface mode & Orbit mode? :D:cool:

Edited by wile1411
Link to comment
Share on other sites

17 minutes ago, wile1411 said:

I guess it would depend on why you're doing the Navball project in the first place really. If the goal is to get the game numbers/dials off the screen and into physical readouts, I'd do the airplane altitude indicator only because it would match the game and you'd constantly flipping between numbers.

If the goal is to be able to NOT look at the screen GUI and know where you are or if you a more 'realism inclined', then you'd probably want to go for the 8-Ball approach, no? That way you'd be interpreting the numbers as intended for the situation you are in.

Yeah... that's what I was thinking... you see the way that the ingame navball is setup its going to behave like its in 8-Ball ORDEAL mode even when translating between planets. But then again if I get the coding on the needles right I wouldnt need the the ball positioning so it could be either way heh. But I do like the Apollo setup. BUT does that mean I have to code in an ORDEAL mode.... That's going to be fun if it is used on multiple planetary bodies.

Nope.... I'm going to make the hardware first and concentrate on that. It's only a couple of changes of rotating the roll axis 90 degrees and painting it up in Navball colours.... oh and then moving the magnet position... or the sensor position... one of the two, to make the ball go to zero when I cage it.

Like some really intelligent git once said... "If you have a large problem, just cut it into small parts and solve those small problems, one at a time, and the large problem sorts itself out."

EDIT: P.s. I really want to see if I can do a total instrument mission using a fully operational cockpit. It means a LOT of programming work and custom panel work.... SOUNDS AWESOME!

Edited by NeoMorph
Link to comment
Share on other sites

Quote

I just hate the fact that the current nav ball is planetary based (brown for ground, orange for sky) and that the node target indicator can be hidden on the other side of the ball. Deflection needles like the ones on an Apollo/Orbiter style ball let you know which way you have to turn to reach the node making it way more accurate.

Once I get my new CNC rig bought and setup I will be able to make the model for you guys to see what I am talking about. Unfortunately there have been a few setback in my personal life that has held me back... but only a few more weeks to go.

I really have been after a CNC for a LOOOOOONG time... That few weeks turned into a few months and then a few years... but only 3 more weeks to go. Oh and the above quote is from when I mentioned my CNC on January 27, 2014

Edited by NeoMorph
Link to comment
Share on other sites

This thread is quite old. Please consider starting a new thread rather than reviving this one.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...