Post on 17-May-2015
description
transcript
Arduino Yún: Internet for makers
Federico Vanzati
f.vanzati@arduino.cc - Officine Arduino Torino
Federico Vanzati f.vanzati@arduino.cc - Officine Arduino Torino
What is Arduino?
Arduino is an electronic prototyping platform that can sense the environment by receiving input from a variety of sensors and can affect its surroundings by controlling lights, motors, and other actuators.
COMMUNICATION
INPUT
OUTPUT
AnalogDigital
AnalogDigital
USBSerialTWISPI
Physical to Internet?Federico Vanzati f.vanzati@arduino.cc - Officine Arduino Torino
Ethernet ShieldWiFi Shield
Federico Vanzati f.vanzati@arduino.cc - Officine Arduino Torino
TCP/IP stackonly
Client ServerManaging the connection
Limited number of connectionsand modest performances because all the code is processed from the AVR
can't handle secure connections natively
Arduino YúnFederico Vanzati f.vanzati@arduino.cc - Officine Arduino Torino
32U4[Leonardo]
AR9331running OpenWRT
Usual Arduino experience
HttpsSSL
SSH Tools offered by the Linux system
Advanced connectivity capabilitiesthanks to Linux
Internet of Things (IoT)Federico Vanzati f.vanzati@arduino.cc - Officine Arduino Torino
Arduino: one of the first platform to offer the possibility to connect sensors and actuators to Internet.
Many projects in different categories, for example:
● Smart metering (photovoltaic, water flow and level, electrical comsumption)
Internet of Things (IoT)Federico Vanzati f.vanzati@arduino.cc - Officine Arduino Torino
● Enviroment (radiation level, earthquake, air pollution)
● Security & Emergencies (intrusion detection, fire/gas detection)
Internet of Things (IoT)Federico Vanzati f.vanzati@arduino.cc - Officine Arduino Torino
In a few years certainly these projects have influenced the definition of IoT.
The Arduino Yún follows the evolution of internet answering to the new requirements of access to the web services.
The Arduino Yún gives you a lot of cool features.
Both WiFi and Ethernet
Enhanced connectivity (speed, more protocols, …)
Independent Web Server
Additional peripherals (USB host, SD card
What's on board?Federico Vanzati f.vanzati@arduino.cc - Officine Arduino Torino
Thanks to the Linux processor you have all the tools you normally use on your compurer to develop code that lives on Internet.
Hardware SummaryFederico Vanzati f.vanzati@arduino.cc - Officine Arduino Torino
Atmega32U4 (Leonardo) AR9331 (OpenWRT)
Digital I/O Pins 20
PWM Channels 7
Analog Input Channels 12
Flash Memory 28 KB aval.
SRAM 2.5 KB
EEPROM 1 KB
Clock Speed 16 MHz
Architecture MIPS @400MHz
Ethernet IEEE 802.3 10/100Mbit/s
WiFi IEEE 802.11b/g/n
USB Type-A 2.0 Host/Device
Card Reader Micro-SD only
RAM 64 MB DDR2
Flash Mem.16 MB
Operating voltage: 5V
Processors CooperationFederico Vanzati f.vanzati@arduino.cc - Officine Arduino Torino
Bridge ConceptFederico Vanzati f.vanzati@arduino.cc - Officine Arduino Torino
As is common on Linux system, the console to access to the environment is exposed on the Serial port.
The Arduino microcontroller (32U4) can control the Linux system through the Serial port.
The Bridge Library has been developed to simplify the way the sketch can manage the processes and the tools on the Linux side.
Bridge
Arduino Library
Python process on the Linux side
Started by the sketch
Bridge Features – communication protocolFederico Vanzati f.vanzati@arduino.cc - Officine Arduino Torino
The Bridge library simplify the communication between the two processors using a protocol that numbers the packets, manage retrasmission and timeout.
● Storage● Process● Console● FileIO● Mailbox● HttpClient● YunServer● YunClient
Classes of the library:
Bridge Features – Shared StorageFederico Vanzati f.vanzati@arduino.cc - Officine Arduino Torino
With the Bridge library is possible to save data or variables and share it with the Linux processor using the shared storage, that has a KEY/VALUE structure.
Bridge Features – ProcessFederico Vanzati f.vanzati@arduino.cc - Officine Arduino Torino
Process is the base class for all Bridge based calls for communicating with the Yun's shell. It is not called directly, but invoked whenever you use a function that relies on it.
Process p; p.begin("curl"); p.addParameter("http://arduino.cc/asciilogo.txt"); p.run();
Run Process
while (p.available()>0) { char c = p.read(); Serial.print(c); } Serial.flush();}
Read Output
Bridge Features – ConsoleFederico Vanzati f.vanzati@arduino.cc - Officine Arduino Torino
Console, based on Bridge, enables you to send information from the Yún to a computer just as you would with the serial monitor, but wirelessly. It creates a secure connection between the Yún and your computer via SSH.
#include <Console.h>const int ledPin = 13; int incomingByte;void setup() { Bridge.begin(); Console.begin(); while (!Console) ; // wait for Console port to connect. Console.println("You're connected to the Console!!!!"); pinMode(ledPin, OUTPUT);}void loop() { // see if there's incoming serial data: if (Console.available() > 0) { incomingByte = Console.read(); // read the oldest byte in the serial buffer: if (incomingByte == 'H') { // if it's a capital H (ASCII 72), turn on the LED digitalWrite(ledPin, HIGH); } if (incomingByte == 'L') { // if it's an L (ASCII 76) turn off the LED digitalWrite(ledPin, LOW); } }}
Bridge Features – FileIOFederico Vanzati f.vanzati@arduino.cc - Officine Arduino Torino
FileIO is the base class for manipulating files and directories on the Linux system directly from the 32U4.
If an SD card is inserted into the slot with an empty folder in the SD root named "arduino". This will ensure that the Yún will create a link to the SD to the "/mnt/sd" path.
Bridge Features – MailboxFederico Vanzati f.vanzati@arduino.cc - Officine Arduino Torino
Mailbox Class allows you to exchange messages between the two processors, putting them in two separate queues.
Bridge Features – Client/ServerFederico Vanzati f.vanzati@arduino.cc - Officine Arduino Torino
HttpClient:
HttpClient extends Process and acts as a wrapper for common cURL commands by creating a HTTP client in Linino
YunServer:
YunServer opens a listening socket on the Linino. You can choose to use it only on localhost or expose the socket on the outside (with or without password)
YunClient:
YunClient is a TCP/IP client, implements the same APIs to connect, read and write as in the Arduino Ethernet and WiFi Client libraries
WiFi UploadFederico Vanzati f.vanzati@arduino.cc - Officine Arduino Torino
“www” folderFederico Vanzati f.vanzati@arduino.cc - Officine Arduino Torino
Out of the Box experienceFederico Vanzati f.vanzati@arduino.cc - Officine Arduino Torino
Sands ProjectFederico Vanzati f.vanzati@arduino.cc - Officine Arduino Torino
Social&Smart is a research project using the housekeeping scenario to experiment a pervasive Future Internet network that provides real services to a wide population.