August 1, 2013
Tutorial - Wireless Arduino Programming with Electric Imp
about 9 months ago
As with every Sparkfun tutorial the write-up here is excellent :)
I’ve put together an Imp powered programmer that will work with Arduino boards like the UNO, in fact pretty much any popular AVR MCU.
It uses in-system programming rather than relying on a bootloader being present. For a way overlong write-up see:
Don’t worry the actual setup and usage is actually very simple.
PS for the iOS or Android Smart Config apps a tablet will do as well as a smart phone. Android tablets start at around $70 on Amazon (and you can certainly get cheaper ones), no contract or additional costs, besides electricity, involved.
The Java applet from TI is fairly terrible. I’ve written a Java client (that uses the TI Java library) that can run on Linux, Windows or Mac. However it (and TI’s Java applet) will almost certainly not work unless your machine is many years old and using 802.11b or 802.11g. Any modern machine will probably be using 802.11n with MIMO. While the CC3000 can only use b and g itself it can be configured via Smart Config on a phone that’s connected to your access point using 802.11n. Unfortunately this will not work for most laptops and desktops as their wifi hardware typically achieve higher speeds than phone hardware - by using MIMO in a way that the CC3000 cannot handle.
TI’s SmartConfig process is interesting - it tries to solve a difficult IoT problem - how to communicate your network name and password to a device with no screen or keyboard. Initially all your CC3000 can see is lots of nearby wifi traffic that it doesn’t know how to decrypt. How can a smart phone app communicate the necessary network name and passphrase to the CC3000? Shawn mentions (in the product video) that it involves a corrupt UDP packet. This isn’t actually the case. If you’re interested in what’s going on then it’s explained (by me) in this Electronics StackExchange answer. The important thing to note is that anyone interested, not just your CC3000, can easily recover the network name and passphrase sent using Smart Config unless you use the little mentioned AES key feature (which involves a pre-shared key that has to be coded into your MCU sketch).
The CC3000 does not directly support either HTTP or HTTPS. It works at a lower level - it provides a sockets based API.
Higher level protocols like HTTP or HTTPS have to be implemented on top of this API in MCU code.
Plain HTTP requests are trivial - you open a socket connection to the relevant host, write a “GET …” request and then just read the result.
HTTPS however is completely different. Your MCU will almost certainly have neither the memory nor processing power for the necessary TLS support.
A cheap MCU, like the ATmega328 in an Arduino, could handle e.g. the AES encryption often used once a secure HTTPS session is established but it won’t be able to handle the initial steps involving X.509 certificates and in particular the asymmetric cryptography required to exchange the relevant symmetric key.
So TLS support is technically possible, if you have a high end MCU, but in practice something like a Pi (with a cheap wifi-dongle) makes more sense for HTTPS.
No public wish lists :(
Forgot your password?
No account? Register one!