I'm just wondering, would it be possible to create a shield for the Espruino that would give it the same footprint as an Arduino, such that it could be connected to other Arduino shields?
What do you think? Should it be possible? or is there something about the Arduino/Espruino board layouts that would make this a bad idea?
Per Kickstarter project faq, a passive adapter is possible. I haven't heard anything more about this since
Hi - yes, it should be very possible. Actually knocking one up using Fritzing should be trivial now there's a Fritzing component for it.
The only reason not to is that a lot of Arduino boards are 5V boards and Espruino is 3.3v. Having said that, any pin not marked with 3.3v on http://www.espruino.com/ReferenceESPRUINOBOARD can handle 5v signal levels so it should be pretty easy to wire up an adaptor.
The reason it hasn't been done is just that I'm insanely busy right now and nobody apart from you has asked since the KickStarter. If someone wanted to start making a board I'd be happy to post a link to it though - or at some point I'm thinking I might make a PCB with push-out adaptors for common things (NRF24, CC3000, Nokia LCD, etc) so they could be soldered straight on without messing around with wiring - I could try and include an Arduino adaptor in that.
I spent the weekend learning how to use Eagle to design something and have sent it off to OSHPark to get it made (Design attached). I've based it purely on my needs at the moment, but it should be usable for other things too.
I've basically created a large perf area in the middle which you can connect the Espruino to, then use jumper wires to connect the related pins of the Arduino headers to the ones of the Espruino.
The design is currently private on OSHPark while I test it, but if you have any feedback, I'd be happy to tweak it and make it public for others to be able to order.
Let me know what you think.
PS I'm hoping to connect the Espruino to this http://shop.technologywillsaveus.org/collections/frontpage/products/diy-gamer-kit-with-arduino which is why I want to make the adapter.
Thanks! The game shield looks cool - I'd love to know how you get on. I didn't notice you were the same as the post on Twitter ;)
Actually it'd be pretty awesome if others can try this - once you're happy it works it'd be good if you could make it public for others. I don't actually have any shields (I've tended to just wire everything up in the past), but I'd love to get a recommended Arduino connection (potentially your board could have solder jumpers for a set of connections that we know will work)...
Just one comment... I guess this is more of a general purpose board, but the Espruino has some useful pins in the strip down the middle, and I guess at the moment some of them might be shorted.
I am indeed one and the same :)
I've gone ahead and made it public incase anyeone else wants to make one http://oshpark.com/shared_projects/LMezEYvb.
Regarding your comment, I'm currently planning to connect the Espruino to the outer rails via some female headers so it will stand away from the board preventing shorting, so this won't be a problem for me, however it may cause problems for others if they do the same as it could then short the board on the attached shield (if you look at the diy gamer kit, the front board uses extra long legs, so there is some extra space between the boards).
What would you suggest for making this better for everyone? (maybe a quick scribble on my image?)
Thanks for the feedback and I hope this may help others out.
Thanks! Yes, it won't be a big deal as far as shorting - it just might be that some peripherals on the middle strip might want wiring to Arduino headers... For instance the DACs are only available in the middle.
What I'd wanted to do when I finally got around to an adaptor board was:
Just a thought anyway...
Cool, thanks Gordon.
I was just looking through the pins earlier trying to get an idea of to map them, but not come up with anything yet. Good point about the pins not being v5 tolerant aswell, that wasn't something I'd thought about. Should it be possible to use a single divider for all inputs? or would each pin need one? (Sorry, I'm not much of an expert on this, I'm still learning as I go).
Rgarding NRFC etc, wouldn't it be more of a case that they use existing shields and just stack them? rather than soldering them to the board direct?
You'd have to use a separate divider for each input (although you can get chips which are resistor arrays). However I guess most Arduino shields don't use the analogs so you could just not connect them - all the rest should work fine with 5V.
For NRF24, it's just that the module itself is tiny (and cheap!). Most people end up doing something like this: http://maniacbug.wordpress.com/2011/11/02/getting-started-rf24/ so if there's free space on the board then it makes sense to use it :)
The difficulty is how to put it all together, onto such a small board. Are we trying to match the Arduino footprint exactly? (ie, matching the board size and everything (I think we should)) as if you look at the attached, the green is essentially the space taken up by the Espruino, so it leaves you with very little around the edge for other things like DC jacks. I'd also try to avoid adding stuff to the back side so that you could also use any Arduino mounts you might have.
I've attached how I was thinking of mounting the Espruino. So my idea is to add some female headers down the middle, and mount the Espruino facing down (so the main pokey out bits all face downwards). To give clearance between this and the attached shield, I was then thinking of using the stackable headers in the Arduino header positions with spacers to make them stand above the Espruino and thus preventing any shorts.
What are your thoughts? Should we just aim for Shield comparability? and not worry about board shape? or should we try to match every element as closely as possible?
PS As you can tell, I'm also trying to make it a non-permanent shield, so you could remove the the Espruino if you liked.
Ahh, ok - yes, it'd be nice to keep the board the same footprint (so maybe no room for the DC jack). That space directly under the Espruino is effectively 'dead' though, so some of that could be used for NRF24/etc if you wanted?
If you place Espruino upside-down (that was your plan?) then you could put two extra holes in the PCB so that you can poke the buttons from the underside if you need to?
Making the Espruino unpluggable is a nice idea. I guess if you were to use pins (and solder socket onto the Espruino) then people could always solder on the Espruino if they wanted to do that though? Although if people can just buy the bare PCB then they have the choice :)
Oooh, I like your hole / button poking idea :) though we should have space to add buttons to the shield if we want to?
Regarding the pins, I was thinking the same, as an option. Like you say though, if we just provide a board design, and document alternative setups, I guess people can implement however is best for them. Defo nice to have the option though.
Regarding the outer headers (the ones pretending to be the arduino headers) do you know anywhere you can buy just plastic spacers from? As I say, what I'd like to do is use stackable headers (the ones with the long pins) and use spacers to pad them out, giving more room for the espruino vertically (something like the attached, but single rows obviously).
Hmm, good plan. I'm afraid I don't...
I can think of 2 options:
Ok, so playing around with mapping arduino pins, so far the attached is what I have come up with (this is based upon the Espruino face down, with the micro USB port at the mount hole end of the Arduino (I do this for ease of routing)).
The 2 central columns are the Arduino pinouts, and the outer columns are what I am currently mapping them to on the Espruino. The yellow blocks are un-mapped pins. I've been using the following diagram to help map them:
So, a few questions. With regards to Arduino pins 4 to 8, on the Arduino pin out diagram, they have a few labels in white boxes which I'm not sure what they mean. Would it be safe to assume, these could be mapped to just any regular pin? (with anything flagged as PWM being mapped to an Espruino pin supporting PWM).
Secondly, should 5v just be mapped to 3.3v? or should I incorporate a voltage regulator? If I do that though, does that mean the inputs would need protecting against 5v input?
Lastly, what should IOREF, AREF and RESET map to?
Doh! Small problem. Thought I'd check the CC3000 adafruit shield as an example of a shield that should work with Espruino, but there is a problem with the mapping. As Espruino requires a specific pin setup, I remapped all the required pins so it would work, but there is one conflict. pin B8 which is used for ICQ with the CC3000, is needed to map to the SCL pin on the Arduino (I could use the other SCL pin, but this is also required by the Espruino CC3000 setup, so it's not available).
Are there plans to make this configurable later on?
Oooh, actually, didn't spot the I2C2. Might be arkward to connect to, but should be possible.
It would be nice if there were a way to connect the CC3000 without clobbering both available pins for I2C1 SCL
Yes - at some point it'll be changeable - it's not really a priority right now I'm afraid.
As far as IOREF, AREF and RESET, I'd just leave those unconnected? You could connect Espruino's reset pin up but I'm not sure it's worth the trouble.
I wouldn't worry about the stuff in white boxes on that diagram - unless anyone knows any different I don't think they'll cause problems. The obvious ones are INT0/INT1 - but setWatch can work on any pin so that won't be a problem (just make sure that you don't use two pins with the same number - eg. A0 and B0 - but you're not doing that anyway)
You could connect 5V to 'Bat' (maybe via a jumper). When plugged into USB, Bat is about 4.3v. Also if you put 5v on the 5v line it'll then power up Espruino. The only time it would be an issue is if you plugged a higher voltage battery into Espruino's battery connector.
Otherwise you could leave 5V as NC and could have an unpopulated hole for a 5v voltage regulator?
Ok, so after another quick look, I'm not at the following (still not mapped regular pins, but will get to that tonight).
I've hooked up IOREF to 3.3v, as this should be used later on my shields to adapt to the voltage of the microcontroller (the Arduino DUE uses 3.3v). The AREF I won't wire up as it looks like the responsibility of the microcontroller to handle that and it doesn't look like Espruino does. I've also added a pad next to the 5v pin to allow wiring of a 5v regulator (could maybe add a small proto area on the end for this?).
Regarding the SCL pin, I've hooked it up on pins B10 and B11, which could be a bit awkward to mount headers for, but I guess people don't have to add them if they don't use them.
Now, the only issue I've got currently then, is the fact I am now using pins A8 and B8 (B8 is needed for CC3000). I know you mentioned in your last post that I shouldn't use pins with the same number, so does this mean this setup won't work?
Oh, and I turned the board around so the power point is at the other end again :) (thought it made more sense)
Actually, I think I've made a mistake. Pin 0 of the arduino should map to pin A10. Either way, looking at the mapping, I am using some duplicate numbers now. @Gordon can you confirm if any of these will cause issues?
Duplicate numbers by themselves are fine... The only issue is you can't use setWatch(...A8...) and setWatch(...B8...) at the same time (it's a hardware thing).
I was only worried about it where INT0/INT1 (D2/D3) were concerned as I guess people may want to use both of those. Otherwise I wouldn't worry :)
Ok, so just make sure the pins that map to INT0 and INT1 don't share the same number? (Everywhere else should be fine)
Yes, that's the idea... shared numbers elsewhere won't matter
Don't worry about formatting, just type in the text and we'll take care of making sense of it. We will auto-convert links, and if you put asterisks around words we will make them bold.
For a full reference visit the Markdown syntax.
© Espruino, powered by microcosm.
Report a problem