Unboxing the LinkIt ONE

Standard

So you got yourself a LinkIt ONE, and you’re trying to figure it out. Everything on paper looks pretty cool, but it’s a little intimidating. Don’t worry, I will help you through it.


First thing you notice is the small size of the box, and the distinct lack of weight. The blue on the edges stands out and looks crisp. Then you flip the box over and see all the small text on the back. The biggest things to take from the small text is that this is a very flexible, powerful board.

20150804_11551420150804_115441


You should cut the two tape circles that hold the top and bottom of the box together before trying to open it up. This is only a suggestion, as user experience varies with the method employed. Once you get it open, you realize they are serious about wanting you to use this for IoT, as on the inside of the glowing pink lid, it says “The Ultimate Developer Board for Wearables and Internet of Things”. This is the 5th time you see this.

20150804_115533


The board is now exposed. You take a moment to let this masterpiece sink in. It’s green and yellow. Why? I’m not sure, but it’s a coloring style they have carried over to their other LinkIt products, so I’m just going to go with it.

20150804_115607

When you look closer you’ll see every pin labeled, including the pins in the Grove connectors. I wish they would color code the board connectors based on the type (digital, analog, i2c, serial), but they have not, and I have yet to do that myself.

There’s a couple switches on the board that are key to your user experience:

  • SPI/SD: this determines if the board can send over serial, or write to the SD card (using the LSD library). I know, it sucks having to choose, but you’ll move on.
  • USB/BAT: this tells the board what power source to pull from. If the board is in BAT mode, it will charge and run off USB, but stay on when unplugged. Also important to note is that providing 5v to the 5v pins does not charge or power the board. It was recommended to me to sacrifice a micro USB cord and power it through the USB port.
  • MS/UART: when the computer is connected to the ONE, you have to choose how it shows up. MS is used for loading small files onto its 10mb storage or upgrading the firmware. UART is what we are used to from ‘duino programming.

Take the board out and look at the bottom. There’s a shield that takes up about 60% of its size with a sticker with your UUIDs. You’ll also see a SIM card holder on the top. The micro SD slot is between that and the motherboard, accessible from the end. The card clicks into place. The ONE can support up to 32GB. At the other end of the board are the three connectors for the antennas. Be diligent when connecting your antennas so that they go in the right place.

20150804_115555


Take out the black foam, and you’ll find the good stuff. There’s a battery in one bag, and the antennas in the other. Looking at the antennas, you realize they couldn’t have chosen a wider variety. The battery is awesome in that the connector is polarized so you won’t plug it in wrong, and the ONE has a built in system for charging and reporting on its’ state.


20150804_11561920150804_115629

20150804_115645At the bottom of the box there are an additional two sheets of paper that are almost impossible to get out. The smaller one is the Quick Start Guide, and the larger one is the wall pin-up that describes the connections. Careful where you post this, as it is certainly described as hardware porn.

20150804_122309 20150804_115720


It’s said a few times that the main processor is the MediaTek 2502A, and to give you an idea what it actually does, I’ll give it a shot. It’s a Socket on a Chip (all in one) that has Bluetooth and GSM/GPRS abilities. Bluetooth modes 2.0 and 4.0 are supported, and cell bands 850/900/1800/1900MHz are usable. This means that T-Mobile, AT&T, and Ting are all available to use in the USA. The Wifi is actually a separate chip (I think the one that drives the LinkIt Connect) but is integrated seamlessly. The libraries you’ll use are prefixed with an “L”: LGPS, LDateTime, LBT along with many others, and then my favorite, LSD the SD card library.

The one thing that is distinctly lacking is a USB cord. The ONE uses a standard mirco USB adapter, and has worked fine on a 2.0 port on my laptop. When plugged in, the battery will charge, regardless of the coding actions being performed on it. Remember the SD/SPI switch that I mentioned earlier? That’s one time that you’re going to have to fly blind since you can’t have serial output while the ONE is reading/writing to the SD. Also interesting to note is that the ONE shows up as two serial connections in the Arduino IDE.

Once you get all the items out of the bags, you’re going to wonder how to organize the unwieldy mess of wires and antennas. I too was wondering that, since I wanted to just put this beauty in a case, and forget about it. Alas, I have yet to find one, so I made one out of Legos. Then I rebuilt it, then rebuilt it again. This has proven to be quite a solid transportation and developmental base station.

Final version, or all versions

20150105_124124


I’d recommend you take a look at what you are actually going to use, then only have those antennas connected. I was looking towards my old stand-alone GPS with a frayed connection cord as justification for all my time spent figuring out a case for the ONE.

In my next post I’ll talk about getting up and going with programming the ONE with Windows 7. I will also discuss the different libraries and uses with them.

Why should I get a LinkIt ONE?

Standard

This is the first in a multi-part series on choosing and becoming familiar with the LinkIt ONE.

Why LinkIt ONE?

Maybe you’re on the fence about what platform to start off with. Maybe you have a project in mind that you need Wi-Fi connectivity. Maybe you want to just have all the hardware taken care of so you can move onto coding. Maybe you need a LinkIt ONE.

What is it?

It’s a very nice and complete Arduino clone, with the chips coming from MediaTek, and the board coming from Seeed Studio. It uses a micro USB for programming, and you need to use a special variant of the Arduino IDE that has packages and libraries in the right place. I’ve been able to add new libraries to this without any compatibility issues, so don’t worry about that.

Hardware for price is unparalleled. You get a device with GPS, Wi-Fi (2.4 GHz and client only), Cellular, BT, built in battery connecter/charger, microSD slot, 10 mb flash for code, and a 260 MHz processor to make it all work. There’s no cases available, so for now you’re going to have to make your own. There’s also two Grove adapters (I2C and UART) right on top.

What can it do?

With the amount of programming space you can use (about five times of a normal UNO), there’s not much you can’t fit into it. With the array of hardware available, there’s not much connectivity that is not available. I have used it for projects that leverage the extra storage space, along with the wireless connectivity abilities. Having everything on one board makes getting up and going with code really easy.

What can’t it do?

Since the pins are 3.3v, you need to make sure you connect things properly. You also have to choose (there’s a switch on the board) between accessing the SD card or the serial back to the computer by USB. I’ve also found there’s no native way to provide power back to the board, I have to connect by USB to recharge the battery and power the ONE.

Summary

The LinkIt ONE is very versatile, compact, cheap (now $60 USD) Arduino clone that can utilize existing sensors and libraries to truly be the IoT backbone for 99% of your connected devices.

I2C Hacks: How to Splice Clocks into Chip-Selects

Gallery

An interesting way to get around only having one I2C address. I will have to try this out. Thanks @hackaday!

Hackaday

There comes a time when you need to wire up three, four, or more identical i2c devices to a common microcontroller. Maybe you’re thinking about driving a whopping 32 seven-segment displays with four of those MAX7219CNG 8-way digit drivers, or maybe you have a robot full of joints–each of which needs a BNO055 inertial sensor for angle estimation. (See above.) Crikey! In both of those cases, you’re best bet might be a schnazzy I²C device that can do most of the work for you. The problem? With a single I²C bus, there’s no standard way defined in the protocol for connecting two or more devices with the same address. Shoot! It would’ve been handy to wire up three BNO055 IMUs or four MAX7219CNGs and call it a day. Luckily, there’s a workaround.

We’ve seen some clever tricks in the past for solving this problem. [Marv G‘s] method involves toggling between…

View original post 1,027 more words

Why IT people continually learn

Standard

I realized something this week while at a training: IT people like to learn, they like to be challenged, regardless of how senior they are. Here’s a quote from the Movie Good Will Hunting:

Will: Beethoven, okay. He looked at a piano, and it just made sense to him. He could just play.
Skylar: So what are you saying? You play the piano?
Will: No, not a lick. I mean, I look at a piano, I see a bunch of keys, three pedals, and a box of wood. But Beethoven, Mozart, they saw it, they could just play. I couldn’t paint you a picture, I probably can’t hit the ball out of Fenway, and I can’t play the piano.
Skylar: But you can do my o-chem paper in under an hour.
Will: Right. Well, I mean when it came to stuff like that… I could always just play.

IT people can become very smart about complex subjects very quickly. This is a curse and a gift, as they can get bored quickly. This boredom is what is needed to be addressed. I have mentioned multiple times to my employers that if I become bored, I have outlets where I can learn and tinker. This has kept my sanity more times than I can count, because in the end, the work needs to happen no matter how boring it is.

IT people love a challenge, they love to love to prove themselves. Make sure you, and your IT peers are mentally challenged. You’ll find that mental challenge will pay for itself in increased productivity.

Running a Xadow OLED with an Arduino UNO

Standard

Background

I have a number of the Xadow modules, and the one that intrigued me the most, was the breakout. It converts the pins in the Xadow ribbon to wire-able connections. I wondered if I could use this to drive Xadow modules instead of drive non-Xadow units.

Wiring

Well, I have been doing some work on the Xadow OLED screen, and figured that would be a fun demo to start with. Looking at the Pinout of the wires, I determined that the voltage should be 3.3v.

Xadow_Breakout_01[1]I connected to the I2C connection in the middle, since the OLED screen was commanded over the I2C. I had 4 pins to connect. Using this diagram, I found where I needed to connect to:

ArduinoUno_R3_Pinouts[1]

SCL: A5

SDA: A4

V: 3.3v power

G: Ground

Code

I used the stock Xadow OLED “Hello World” demo. Absolutely no adjustments. None. And by golly, it worked.

wpid-20150507_125413.jpgThe pin spacing on the internal connections on the breakout board were not the standard spacing, so I had to hold it. I plan to solder some wire on for a permanent Arduino to Xadow connection in the near future.

Wrap up

Thanks all for reading this. I wanted to show off that this is possible, and I hope that I can work with Seeed to make a Xadow to breadboard breakout for much easier prototyping and bridging. This also brings up the major possibility of using an Arduino for the coding, and having the Xadow units be clean hardware extensions. You would only need to switch over to the Xadow mainboards when you needed the smaller size.

MIST: the Multi-cube Interface over Serial Transmission

Standard

Background

I received a RGB cube (link) from SeeedStudio and I have loved staring at it. It’s so mesmerizing. I even got one for my friend. We quickly realized that we wanted to tinker with the lighting scheme. Well, to do so, you would (will) have to remove the whole case to get to the USB. This made me sad, and hopefully with the help a few new friends, we can implement the MIST standard.

Why MIST?

MIST is a standard that uses the hardware serial port to talk in a loop with one controller talking to the first cube. The first cube will then send the data to the next one, and so forth until it gets back to the controller. The controller would send out the next chunk of data to the cubes.

This breakout of controller/slaves means that you can be up and running quickly on a multi-cube setup. This also means that the controller can be anything from a standard Arduino to a computer, to a Xadow or Trinket module. The other thing that will be nice with this format, is we hope to have an area that showcases different programs, and to load the program, you just run the flat file through your controller. Very dynamic and with the price of storage, it makes it super easy to store hundreds of plans.

Hardware requirements

The only things that are needed are the Rainbowduino’s Rx and Tx pins cleverly exposed on the outside of the case. I am proposing to use the Grove 4 pin connectors for daisy chaining together, as this should also pass power. The end cube would have to have a Grove jumper to loop the serial line back to the controller.

Controller requirements

Just a serial out is all that is needed, and the encoded lighting patterns to match what the cubes are looking for. A screen or internet connection is not necessary, although it would make it easier to navigate through your library.

Code Standard

Here’s the proposed string to be sent over serial in the loop of Arduinos:

[00][000][000000000]
p1   p2     p3

P1: Part 1 addresses the cubes. Index of 99 affects all cubes, while 00 is the “I’m done, pass the message on” message. All other numbers decrement by one per cube. Only values of 01 are processed by the current cube.

P2: Part 2 is the XYZ of the axis of LEDs. The address starts at (0,0,0) for indexes. I will go over some customizations later to allow for calling patterns.

P3: Part 3 is just calling the color in RRRGGGBBB format. Put each value in the right place in your sting, and you’re good.

Customizations to allow for multi-LED calling

I know it’s going to be annoying to have multiple standards, but here’s the one that I’m going to propose for the 4x4x4 cube. I propose a library be loaded to convert the custom string to put adjust the LED values to their updated value.

Here is my proposed mapping for single axis decoding:

0: 1,0,0,0
1: 0,1,0,0
2: 0,0,1,0
3: 0,0,0,1
4: Unused at current time
5: 1,0,1,0
6: 0,1,0,1
7: 0,1,1,0
8: 1,0,0,1
9: 1,1,1,1

Where the values cross is where the LEDs are being adjusted. This also allows a value of 9,9,9 to clear or fill the whole cube with one command. A [99][999][000000000] signal would instantly black out all cubes.

Excel demo

I have included an Excel file that is interactive with these “shortcuts” to show you how they will look when sent to the cube. (Rainbow Cube Data Feed Tester) The left table is a decoding of the axis value to LED, the middle table is where you put in your values to try it out, and the right tables are the output. Only the cells that are lit up in red would be on. I am a visual person, so this was very helpful in helping me understand the power of this standard.

Future plans

  • I am going to try and do a proof of concept of daisy’ing multiple ‘duinos together to try out this concept
  • Work on the code and library to convert the 14 char string quickly into the format needed to update the LEDs
  • Build two different controllers, one Arduino, one LinkIt (and maybe a Xadow if you’re lucky)
  • Try to get Seeed to supply me with Grove female adapters to build into the cube to make it look nice
  • Convince Seeed to try out 10+ units with one controller

How to BI: Part 1

Standard

Once you go BI, you never go back.

I wrote a couple papers on how to do reporting at the enterprise level, and the issue I kept coming back to was the idea that BI or Business Intelligence should never be done in a silo. Anyone that does reporting should have an idea of how the whole set of data works before reporting on it. What does this entail? Let me show you.

Business Intelligence is the art of giving data a voice that is influential to the business’s operations. This influence could be to better customer satisfaction scores, decrease time on the phones, or provide insight into relevant add-ons that customers may be interested. There’s one thing in common: BI is used to help it make more money through higher sales or better public image.

This purpose to make sense of data and give it a voice can be expertly done by a few passionate people. I have found that the best BI people are the ones who are personally driven by it. Yes, you could do BI as just a job, but once it clicks for you, you’ll know that you’ve reached a new level of curiosity, a new level of analysis. The analysis is important to think about, but it’s equally important to keep in mind how the source of the data comes to be. When you understand how the data comes to be, then you can provide highly accurate, very informative and insightful reporting.

Let’s get an understanding on the different parts of data in BI: source, storage, and reporting.

Source:

The source of data is purely how the data is created. This can be through automated systems or manual work done my people. The more data you know, the better. Source data is usually the best in its most original form. This means there’s less potential for integrity issues.

Storage:

The storage of the data is the most important part of BI. The data needs to be stored accurately. If this is not the case, the data is no good. Bad data is worse than no data, as it gives the impression that you have data to work on, and can lead to bad business decisions. Storage of data can be done in dozens of different formats ranging from a flat file in Excel to a multi-server array. They can all provide valuable data.

Reporting:

The reporting of the data is the sole reason that you’ve spent this much effort. Make sure you take the time to accurately and concisely return data. Reporting is an art by itself, so don’t be discouraged when you do it wrong. We all have, and most of us still do so. There’s no right way to display data, as how the data should be displayed is dependent on the data, the user, and the current business questions being asked of the data.

Now that we have an idea about the main parts of BI, let’s go over the mentality. At every step, it’s your job as a BI developer to return accurate data. At no point in your career will this ever not be acceptable. Your next job is to try and answer the data-driven questions of your users. If it cannot answer their questions, then maybe you need to reevaluate what data you need to collect and report on. The last thing to worry about is reporting interface. This means the speed, the colors, and the bells and whistles. These are nothing without a solid foundation, but they will greatly increase user acceptance.