3 min read
At long last I received my C.H.I.P. computer. This is a $9, wifi & bluetooth-enabled single board computer and also the first thing I've ever backed on Kickstarter. I was fortunate enough to back in the first batch of computers to go out, but that also means I've been unfortunate enough to experience many of the troubles that come with being in the first batch. To start, my package got held up for some 2 weeks in customs (or somewhere in Buffalo NY), leading me to wonder if it'd fallen in a crack somewhere. When I got it, the out-of-box experience was less than perfect. I learned the hard way not to plug a keyboard in to the board's one USB port after booting. This resulted not only in a sudden poweroff, but the complete inability to boot again. Sadly, a lot of other people are having this and other problems preventing them from even using the board they received (many have called it DOA). Fortunately, it's pretty simple to reflash the ROM and get going again...provided you're not on Window10, which I was. After a few bad flashes, I turned to a Linux workstation I have access to and I was up and running again. Whew! I know NextThing is learning a lot from this initial batch and this OOB experience should definitely improve for future shipments.
So, I got it up and running, not what? Well, the board has 8 digital GPIO pins, so naturally I decided to blink an LED. After reading on their forums that the GPIO pins don't seem to provide enough power to fully light an LED, I decided to power my LED from the 3.3V pin and sink it to one of the GPIO pins for ground. Okay, they're plugged in, so now what? Examining the docs I learned that all of the GPIO pins are accessed through Linux sysfs. The paths and pin numbers are a bit unmemorable, so I wrote a set of simple BASH functions to simplify things a bit. After that, it was pretty simple to get going.
$ git clone email@example.com:b2fcec3817ea5d85288f.git chip-bash $ source chip-bash/gpio.sh $ gpio_enable 0 # Enable GPIO0 [sudo] password for chip:
$ gpio_mode 0 out # Set GPIO0 to output $ for ((i=0; i<100; i++)) ; do gpio_write 0 $((i%2)) ; sleep 1 ; done $ gpio_disable 0 # Disable GPIO0
Woohoo! I now have an LED that blinks every second for 100 seconds! Ok, so how about something more interesting? I've got a DHT11 temperature sensor sitting around, what about reading that? Well, it turns out that the GPIO pins are digital only and the one ADC on the board doesn't currently work. That's a bummer. I guess I'll have to revisit this later.
So, what's my first impression of the board? Well, the initial experience certainly wasn't very good, but I think that'll improve over time. I mean, this is literally one of the first boards off the production line. What you get for $9 is really amazing in my opinion. This board is about 1/2 the size of a Raspberry Pi 2 and includes wifi and bluetooth 4.0. Amazing! I'm hoping the experience of using the I/O pins improves through some libraries and particularly that the ADC driver will be completed soon so that I can read data in. I'm sure more software will come out soon though. One can't expect a Raspberry Pi or Arduino-sized community at launch time. I do think the community will grow and I'm going to try to make sure I stay connected to it and contribute software as I can.
So, should you get one? If you're patient and not afraid to get your hands dirty, absolutely! If you're not up for struggling through the growing pains of a new board and new community, I'd suggest waiting 6 months and evaluate then whether the board is for you.