Introduction: Arduino 101 Review
So I didn't make an instructable for quite a while, so until the tests aren't here yet, I decided to make a review on the Arduino 101.
So a story is quite interesting. I bought this board very soon as I was really interested in it. It has BLE, 6 axis gyro and accelerometer and on board temperature, clock, it's 32 bit new Intel Curie processor, IT IS 5V TOLERANT although the pins work on 3.3V and has a beefy 5V regulator supplying 1A or 1,5A when the 2 little pads are shorted.
So let's see what it can offer and what problems I had with it.
Step 1: Connecting to the Board
Then the fun began. I plugged the board in and it installed the drivers.
Make sure to download the latest IDE 1.6.7 and install the new board. To do that, go to:
Tools --> Board --> Boards Manager --> Type in the search "101" --> Intel Curie Boards --> Click install
This will also install all libraries and examples.
Then I wanted to upload the code and I got this error message: "Cannot open DFU device 8087:0aba"
I was searching on forums, made a thread : http://forum.arduino.cc/index.php?topic=368777.0 where I introduced the problem and got a lot of feedback.
Now, the problem still exists and I also contacted Arduino LLC and they have responded, that they are working on this problem with Intel. Now this doesn't do much for me or any of you who want or have this juicy board. And I also asked myself; How did the Sparkfun make a video on them, programming them, sorely it must work somehow.
As being a photographer, my only USB 3 port on my laptop is always plugged in with my hard drive. But yesterday I plugged my 101 in there and IT WORKED. It is a problem related to USB controllers and somehow, USB 3 port works although the Arduino doesn't utilize the USB 3 port properties as it is a USB 2 device. So this is currently the only advice that I can give you. Try it out as it is the only thing that works for me.
Step 2: Features
So what does the board have to offer.
The official table says it all, but let me summarize the important parts.
It is fast with the clock speed of 32 Mhz
It has 14 digital I/O pins
It has 4 PWM pins
20 mA per I/O pin
Arduino Uno Layout board
ALL PINS ARE 5V TOLERANT
6 AXIS accelerometer/gyro
BUILT IN RTC
Master reset button that resets the whole processor
Reset button that resets only the code
500 mA - 1 A - 1,5A (shorted pads) 5V regulator
Step 3: Software
So when you install the board, it also installs a few libraries:
CurieBle Bluetooth LE communication
CurieImu 6 axis gyro/accelerometer
CurieSoftwareSerial Software Serial
CurieTime Time keeping and RTC
You can experiment with these libraries. Use example codes to find commands as they are really easy to use and can be implemented into other project, for say RTC or BLE.
I will show 2 examples for you to see the commands as there is no other way but for looking at examples, learning what certain commands do and using that in projects.
Step 4: Gyro Visualizer With Processing
i'm going to demonstrate how we can visualize the position of the board using just a few lines of code in Arduino and Processing. Go ahead if you don't have it yet, and download processing here and use the codes from the website.
Set the number in the brackets of the line in processing: myPort = new Serial(this, Serial.list(), 9600); to 0 to select the serial port or experiment if you have multiple serial devices plugged in.
Now, just click the "play" button and you will be presented with a simple display where you can see your 101 visualized. Now you have successfully visualized your Arduino 101's movement. You can inspect the code to learn the commands and to understand how it all works.
Try to modify it and see what you can come up with.
Here is also a video of me using the complete setup.
Step 5: Time
Here is another cool sketch where the Arduino counts time and date with internal rtc.
You can use parts from this sketch to build greater purpose as it's really not that hard. It's all in the library and you only need to use expressions like: print2digits(hour()); that will print a digit of and hour, minute, second, day, month or year. , where print2digits part is only a small loop, that prints a zero before a number below 10. That works for time, but for day, month and year, you can just use Serial.print or anything like that.
See the example code "ReadTest" under CurieTime example folder.
And another nice thing is that i keeps counting in the background as long as it has power and you can check the time anytime you want.
Step 6: Conclusion
The board is amazing and for additional 8,5$ you get a very nice, fast board, that should handle more demanding tasks as driving larger lcds with larger refresh rates, where Uno just shuts down.
For now, I haven't seen any good BLE apps for Android that I could use to see serial outputs and inputs to the board. Once BLE gets more attention, I'll shore make an Intructable on Curie Bluetooth LE which is one of the biggest features for me to buy this board.
One of more disappointing thing is that it doesn't work on USB 2 ports as it keeps giving the error described in the beginning. They've said to me, that they are working on the problem and that is the top priority problem, whatever that means. We will see an update in boards menu but it's worth a try.
Share with me your thoughts on the board and current owners, share your knowledge and problems if you have some. I would like to see this board getting more attention in the future.