When we last heard from out intrepid Simblee Breakout Shield, it was found to be using and open drain linelevel converter without pull-up resistors, and that’s against the law. Or, at lease against good judgement.
After a dual face palm, I found the TXB0108PWR chip, again from Texas Instruments. This one is a push-pull line level converter, so no pull up resistors are needed on the GPIO. The pin-outs are close between the two chips, but not exact. Too bad. It would have been nice to just drop in the different chip. But, the I2C still needs pull ups anyway. ,I gave it a TXS0102 open-drain converter, and pull-ups and ordered the revised boards.
After I build and test this one, I’ll move on to the next version. I want to dispense with the breakout, and put the Simblee chip directly on the shield. I’m also going to use Silego chips for the line level converters. If you haven’t heard of the Silego chips, they’re very small mixed-signal programmable logic. I’ll write more about them later.
I stumbled, and made progress on my Simblee breakout shield. If you didn’t see the first installment, check it out first.
Since the first post, I built up a non-shorted board. It seemed mostly okay, except that it gave me 3.9 volts on the 3 volt side, and the same on the 5 volt side. The answer to the puzzle lead me to one of the downfalls of open source hardware (well, it’s only a downfall in combination with poor practices). That is, not knowing what the original designer had in mind.
I took a look at the Arduino 101, which uses a 3 volt Intel Curie module. The Arduino 101 uses a Texas Instruments LSF0108PWR line level converter chip. Works for them, so I designed it in. Folly me, I didn’t read the data sheet close enough. It’s an open drain device and needs pull-up resistors on the I/O lines.
The 101 didn’t use pull-up resistors. It gets by because most 5 volt devices are fine with the 3 volt “1”. They’re really just using the chip as a5 volt to 3 volt done converter and not worrying about going up to 5 volt line levels.
I got the blank PC boards in for my Simblee breakout board Arduino shield. They look nice, and I started to build one up. Fortunately, I thought to only partially build it up for test purposes. Unfortunately, I didn’t do a continuity test on the board before I started. It’s got a short between +5 volts and ground.
The other blank boards are fine, but I didn’t check this one before putting parts on. I’ve only got four components that sit on +5 and ground, and I’ve removed, tested, and replaced all of them. Chances are it’s the board, but I can’t say with 100% confidence.
I would throw some parts on another board, but my small-tipped soldering iron has eroded to the point where it’s not usable on such small parts anymore. I’ve got a spare tip. I just don’t know where it is at the moment.
So, what does this board do exactly?
It takes one of the Simblee Bluetooth boards and puts 3 volt to 5 volt line level converters on each pin so it can be used on a standard Arduino.
As I wrote earlier, I now have an Arduino 101 to play with. I’ve also got an Intel Edison, which can run a small Linux distribution and act as an Arduino clone. It’s a lot more serious than the Curie or pretty much any other Arduino I happen to own, with a 500 MHz, dual core Atom, sporting a Gig of program RAM and 4 GB of on board storage.
The Edison doesn’t have any easily accessible I/O – everything is brought out to a high density 70 pin connector. So, you can’t really use it without some sort of a base board. I got the basic USB board from SparkFun, and I plan to make a few of my own. If you don’t have access to a professional assembly house (like I do in my day job at Screaming Circuits) you should probably get one of the boards that makes the I/O accessible on a 0.1″ header strip.
I ran a program to calculate out the first 5,000 prime numbers as a very rudimentary benchmark. It took about 20 seconds on the Edison, about 50 seconds on a ChipKIT uc32 (with a Microchip PIC32), about 2:30 on the Arduino 101, with the Curie, and… my Arduino Uno is… still… working… on… it…
The Edison is more complex to set up, although getting the Arduino IDE powering it wasn’t any more difficult than the 101. Out of the box, it runs a super stripped down distribution, but you can install a more full-featured Linux if you want. It’s got built-in Bluetooth, and built-in WiFi, which is pretty handy. I changed the name of my Edison to “Tesla”, so it’ll show up as that in my router.
The Uno finished up in about 15 minutes. No surprise, but it does hint at how much more you’ll be able to wring out of some of these new “Super Arduinos.”
Help stamp out and eliminate redundancy, and maybe ambiguity, or maybe not
I just received my brand new Arduino 101 – $30.00 even, plus $4.60 shipping from SparkFun – late last week. So far I’ve only had enough time to install it, and upload “blinky.” The board manager in the more recent version of the Arduino IDE makes installation pretty easy. Much easier than it used to be. The ChipKIT Arduino requires (or required) a custom version on the IDE. They have a beta version that works with the board manager, but I haven’t gotten it to work yet.
I’m interested in the 101, both as an Arduino, and as the Curie module. I don’t yet know how to run native Curie code on the 101, but I’m sure it’s not too much of a hassle.
As of this writing, the Curie isn’t available to the general public in any form that I know of other than in Arduino form. I’m hoping to eventually design the Curie into a few of my own projects, so this will be my introduction.
With the gravity wave detected by LIGO, “A long time ago, in a galaxy far, far away” is an accurate description, not a movie intro
If you purchased an Atmega328P pre-programmed with the Arduino bootloader, you’re ready for the next step, which I haven’t yet published. If you used a blank Atmega328P, you’ll need to program in the bootloader. I’m using an Arduino UNO as the programmer.
I had been working with non-Arduino microcontrollers for more than a decade before picking up an Arduino. Prior buying my first Arduino UNO, I dismissed the Arduino as a toy, or a beginners learning tool, and little else. I didn’t see it as powerful enough to be useful in any way other than that. I was happy to design and code for microcontrollers of various types, in the standard way that the embedded world does.
Then, in 2012, I needed an Arduino for an article I was writing for the Microcontroller Central website, comparing the Papilio “Arduino in an FPGA” (Field Programmable Gate Array) board to a plain vanilla Arduino UNO. After writing the article, I let the Arduino gather dust in an anti-static bag for a while. A month or so later, I was having some trouble two of my Microchip PIC microcontroller boards to talk to each other over I2C.
Both boards were running my hardware, and both were running my software. That made it pretty difficult to isolate the problem. What I needed was a way to remove some of the variables from the system. I remembered the dusty Arduino, and decided to throw it into the mix.
At the time, I hadn’t used I2C on an Arduino, so it was an additional variable, but I could do so without using much of my own code, making it a small variable. I would just need to slightly modify one of the included examples. Doing so allowed me to quickly to find the problem in my PIC software, which gave me a newfound respect for the Arduino. Since then, whenever I need to use a new peripheral chip, I connect it to an Arduino first. Doing so has saved me a number of PC board re-do’s, and many hours of software debug frustration.
Now, three years later, I not only have a variety of commercially purchased Arduino varients, I have a large handful of custom Arduino compatible hardware designs. I’ll be writing about them in the future.