<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Arduino on Roads Less Taken</title><link>https://goran.krampe.se/categories/arduino/</link><description>Recent content in Arduino on Roads Less Taken</description><generator>Hugo</generator><language>en</language><lastBuildDate>Thu, 26 Oct 2017 00:00:00 +0000</lastBuildDate><atom:link href="https://goran.krampe.se/categories/arduino/index.xml" rel="self" type="application/rss+xml"/><item><title>Writing Arduinobot in Nim</title><link>https://goran.krampe.se/2017/10/26/writing-arduinobot-in-nim/</link><pubDate>Thu, 26 Oct 2017 00:00:00 +0000</pubDate><guid>https://goran.krampe.se/2017/10/26/writing-arduinobot-in-nim/</guid><description>&lt;p>In the &lt;a href="https://project.ecraft2learn.eu/" target="_blank" rel="noopener noreferrer">eCraft2Learn project&lt;/a>
 which Evothings is participating in we were looking at various ways
&lt;a href="http://nim-lang.org" target="_blank" rel="noopener noreferrer">Nim&lt;/a>
 is an awesome programming language and this article is a &lt;strong>whirlwind-copy-paste-into-your-terminal-as-you-read-thing&lt;/strong> to show how you install Nim, write a small program, compile it and package it in a very short time.&lt;/p>
&lt;p>To spice it up, for &lt;strong>no specific reason at all&lt;/strong>, we are doing it all inside a &lt;a href="http://linuxcontainers.org" target="_blank" rel="noopener noreferrer">Linux Container&lt;/a>
 - a fast virtual environment to work in. It&amp;rsquo;s just a nice way to have a clean environment and to ensure that you as a reader see the same results as I do.&lt;/p></description></item><item><title>Nim meets Arduino</title><link>https://goran.krampe.se/2016/02/25/nim-meets-arduino/</link><pubDate>Thu, 25 Feb 2016 00:00:00 +0000</pubDate><guid>https://goran.krampe.se/2016/02/25/nim-meets-arduino/</guid><description>&lt;p>I now work as the Team Lead at &lt;a href="http://evothings.com" target="_blank" rel="noopener noreferrer">Evothings&lt;/a>
 and our &lt;strong>open source&lt;/strong> product is a Workbench for creating &lt;strong>mobile HTML5 applications focused on IoT&lt;/strong>, by editing and running them &lt;strong>live on the mobile device&lt;/strong> inside our spiced up Cordova based &amp;ldquo;Evothings Viewer&amp;rdquo;.&lt;/p>
&lt;p>I am of course partial here - but the tool is really easy to use, doesn&amp;rsquo;t force you into any specific framework or editor, enables a very quick development cycle and has tons of examples, tutorials, docs and some special IoT focused libraries like for example around BLE (Bluetooth Low Energy). You can have your code running on your phone literally within 1-2 minutes and you don&amp;rsquo;t need to install XCode or the Android tools, you can even run it just fine from your trusty Linux laptop! Just &lt;a href="http://evothings.com/download" target="_blank" rel="noopener noreferrer">go for it&lt;/a>
. Ok, enough of the sales talk&amp;hellip;&lt;/p>
&lt;p>Since we are specializing in the IoT space we have our office filled to the brink with toys&amp;hellip; eh, I mean &lt;strong>IoT devices&lt;/strong> of all kinds from all different vendors. Two IoT communication standards are particularly important in this space, and that&amp;rsquo;s &lt;strong>BLE and MQTT&lt;/strong>. I have already written three &lt;a href="http://goran.krampe.se/2015/12/14/evothings-meets-phoenix/" target="_blank" rel="noopener noreferrer">blog&lt;/a>
 &lt;a href="https://evothings.com/evothings-does-mqtt-with-bluemix/" target="_blank" rel="noopener noreferrer">posts&lt;/a>
 &lt;a href="https://evothings.com/evothings-does-mqtt-with-vernemq-or-emqtt/" target="_blank" rel="noopener noreferrer">around&lt;/a>
 MQTT using Evothings. Now I am instead focusing on BLE and particularly the &lt;strong>embedded device side of the story&lt;/strong>.&lt;/p>
&lt;img src="https://goran.krampe.se/evothings/mediatek-linkit-one.png" alt="LinkIt-ONE" style="float:left; margin:0 1em 1em 0;">

&lt;p>This led me to round up a bunch of devices at the office that are fairly technically capable and have BLE support. The one I selected was the &lt;a href="http://www.seeedstudio.com/wiki/LinkIt_ONE" target="_blank" rel="noopener noreferrer">LinkIt ONE development board&lt;/a>
 from &lt;a href="http://labs.mediatek.com" target="_blank" rel="noopener noreferrer">MediaTek&lt;/a>
 &amp;amp; &lt;a href="http://www.seeedstudio.com" target="_blank" rel="noopener noreferrer">Seeed Studio&lt;/a>
. It&amp;rsquo;s an insanely feature packed little board (GSM/GPRS, GPS, Wifi, BLE, sound output, SD card) with decent computing power (ARM7 EJ-S, 16Mb flash, 4Mb RAM) while still remaining in the &amp;ldquo;medium&amp;rdquo; embedded space I would say, still ruling out plain Linux and regular tools. I consider the &lt;a href="https://www.raspberrypi.org">Raspberri Pi&lt;/a> or &lt;a href="http://getchip.com">C.H.I.P&lt;/a> and similar machines to be in the &amp;ldquo;large&amp;rdquo; embedded space, they are real computers and you can basically use whatever you like to develop on those.&lt;/p>
&lt;p>The medium and small devices can be programmed using for example &lt;a href="https://github.com/espruino" target="_blank" rel="noopener noreferrer">Espruino&lt;/a>
 or &lt;a href="http://micropython.org" target="_blank" rel="noopener noreferrer">Micropython&lt;/a>
 (two very interesting projects) but in many cases, for more demanding applications, &lt;strong>C/C++ is still king&lt;/strong> simply because of size and performance advantages. And also the fact that hardware vendor SDKs are typically in C/C++. But &lt;strong>could there be an alternative language out there?&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>A language that is just as fast and small that easily can use all these C/C++ SDKs?&lt;/li>
&lt;li>A language with a syntax similar to Python made to be easy to write and read?&lt;/li>
&lt;li>A language with soft realtime GC and a sane advanced type system with generics?&lt;/li>
&lt;li>A language with a good standard library and friendlier than C++?&lt;/li>
&lt;li>A language with compile time hygienic AST based macros written in the language itself?&lt;/li>
&lt;li>A language offering an imperative style and not forcing OO if you don&amp;rsquo;t want to?&lt;/li>
&lt;/ul>
&lt;p>Yep! Read on to find out&amp;hellip;&lt;/p></description></item></channel></rss>