Intel Galileo@Senzation2014 SenZations is an annual European summer school on Internet of Things and related applications. Starting in 2006 with an initial focus on wireless sensor networks, it has become one of the most important annual educational summer events for young scientist and researchers in the field, attracting regularly between 40-50 International students. The summer school program extends over five full days with a mixture of lectures, hand-on tutorials, team based project work and social event. The project work allows the participants to put some of the learnings in the tutorials and lectures into practice by prototyping an IoT application or service that addresses an identified problem local to the environment. On the final day the teams have the opportunity to pitch their solution and demonstrate their work in front of a panel. This year’s school took place in Biograd, Croatia at the Adriatic Sea. 45 students attended from 14 different countries. 20 lecturers from academia and industry provided exciting presentations most of them focused on bleeding edge research in the IoT field. The school also featured a business and entrepreneurship track which was attended roughly a third of the students. The detailed program and presentations can be found here: http://senzations.net/program/ Intel folks (Alex Gluhak and Jason Wright from the ICRI cities (www.cities.io)) featured at the event with an extensive Galileo tutorial and brought the necessary HW along (25 Galileo devices were kindly contributed by Raluca Oltean, Corporate Affairs World Wide). We also mentored the project work sessions with hands-on advice and organised the final panel where the student projects where presented and winners selected. One participant maintained a personal blog about the summer school. For an interesting day by day account from a participant perspective, you can find more information here: Day 1: http://iotmonkey.com/events/senzations-2014-day-1-overview/ Day 2: http://iotmonkey.com/events/senzations-2014-day-2-overview/ Day 3: http://iotmonkey.com/events/senzations-2014-day-3-overview/ Day 4: http://iotmonkey.com/events/senzations-2014-day-4-overview/ Day 5: http://iotmonkey.com/events/senzations-final-presentations-recap/ Final impressions: http://iotmonkey.com/editorial/senzations-2014-things-thoughts/ The Galileo tutorial The summer school kicked off with a 5 hour tutorial on Intel Galileo at prime time on the opening day, with the goal of bringing the participants to a level that allows them to become productive with the platform. The tutorial covered all essential basics such as Galileo HW/SW, connectivity, Arduino based sensing and actuating and serial I/O. It also had an advanced part that showed how to use python and nodejs support, MQTT for advanced network communication and the integration into IoT platforms such as Xively and social media tools such as Twitter. The slides where inspired and partially borrowed from the IoT Galileo Curriculum V1.0 by T. Cooper, M. Royer, D. J. Oliver, A. Burns and E. Nyquist. Part1: Galileo Basics Overview of Galileo HW and the Arduino eco-system Overview of the Galileo SW stack First steps on programming a Galileo, IDE setup and blink Slides: http://senzations.net/wp-content/uploads/2014/66/Senzations14-Gallileo-Overview.pdf Part 2: Connectivity Basics Available connectivity HW on the Galileo Connecting to your Galileo via Ethernet cable Setting up Wifi Enabling SFTP and upload files via an SFTP client Setting up Bluetooth Slides: http://senzations.net/wp-content/uploads/2014/66/Senzations14-Gallileo-Connectivity-v3.pdf Part 3: Arduino based I/Os, sensing and actuation I/O Basics o Available I/O options on the Galileo o Serial I/O using Arduino Sensing and actuating with the Grover Starter Kit o Digital I/O o Analog I/O Slides: http://senzations.net/wp-content/uploads/2014/66/Senzations14-Gallileo-IO-Sensing.pdf Part 4: Web Integration Xively integration Social network integration using Paraimpu Slides: http://senzations.net/wp-content/uploads/2014/66/Senzations-14-Galileo-IoT.pdf Part 5: Networking and node.js • • • • Basics of node.js How to deploy a node.js server on Galileo Interacting with Galileo through the browser Reading and displaying sensor data Slides: http://senzations.net/wp-content/uploads/2014/66/Senzations14-Networking-nodejs.pdf Part 6: Using Python on the Galileo Getting started with Python on Galileo o Running Python interpreter and scripts o Importing and using modules I/O basics in Python o Serial I/O o Analog and digital I/O Network communication using MQTT Slides: http://senzations.net/wp-content/uploads/2014/66/Senzations14-Gallileo-Advanced-Python.pdf All lectures were video recorded and should be available on youtube in the coming weeks. HW requirements for tutorial - Intel Galileo Gen1/2 Grove Starter Kit v3 (by SeeedStudio) to provide basic set of analogue and digital sensors as well as actuators to play with exposed by an Arduino shield Wifi/BT module (N135) 4GByte SD card for a Yocto build with Wifi drivers Ethernet cables for logging onto the Galileo from the laptop via ssh/telnet SW requirements for tutorial - - We utilised an image provided by AlexT, as it offered a bit more features such as a package manager (http://alextgalileo.altervista.org/images/1.0.1/full/) o The features were mainly useful to install gcc and python setup-tools, this may be now available in the official distribution so you could easily use it for your tutorial The tutorial requires and ssh/sftp client on the laptops. While most MAC and Linux installations come out of box with one, you may need to provide additional clients for Windows (e.g. putty/WinSCP). Some lessons learned - - - - - - - - - We distributed the Galileo Arduino IDE on three memory sticks just before the tutorial start and it took the crowd only 15 mins to copy all files needed, which seems a good way in getting the development infrastructure set up, in the lack of a very high bandwidth internet connection. Various people did not get the Arduino IDE to work out of the box on their Windows machines. The main issue seems to be a non-English locale setting on their laptops (expect this with international students!!!), preventing the IDE to start. It took quite some time to figure this one out at the expense of time available for the tutorial. The whole tutorial took longer time than initially expected. We had 3 hours as initial plan but then ended up to use 5 hours, which we kindly got from the organisers. Expect participants to arrive with all kinds of OS on their laptops (different versions of Windows, Linux and MAC)– provide adequate IDEs/tools for these on the memory stick and be prepared to have some trouble shooting experience on all these systems. Make all tutorial slides available at the beginning of the event so the participants can use it as a reference during the tutorial. This is sth that we initially overlooked - we spend quite some time flipping between slides on the projector. Expect participants to have different levels of expertise and experience. Try to leverage experienced participants to help with the less experienced ones (or team up) so you can effectively move forward with the tutorial material. An excellent network connectivity is key for the tutorial. Each participant will use at least two network connections, one for its Galileo and the other for its laptop ( I am not counting in personal mobiles). This can quickly overload any Wifi access point that you may use. Make sure you have multiple alternative access points available or even better a set of Ethernet ports for all Galileos in the tutorial. One issue we discovered with our Wifi router was that failed to provide DHCP leases to participants. This was due to default setting in the router, limiting the maximum number of client devices to 30. Again this took us some time to figure out - increase this limit to avoid any issues. If you run this tutorial in a hotel or typical conference site, you are often required to first register your wireless Internet device with a browser based authentication step. This cannot be easily done with a Galileo that does not run a UI. Make sure you have an access point for the Wifi that is under your control and where you can run with WPA like encryption instead. A workaround is to use some script that performs the authentication on your behalf. A student wrote a nice python script that he shared later with other participants. We pre-provisioned an SD card image that included all basic configs (e.g. wifi config, ssh server setup) and some coding examples for nodejs and python. This saved considerable time during tutorial that would be otherwise wasted. Various people may come with their own Arduino IDE installed and will try to program the Galileo with it. Make sure you explicitly tell them to use Intel’s IDE.