La Arduino YÚN mette su una sola scheda due processori che finora stavano su schede separate: un microcontroller AVR a 8 bit e un System-on-Chip (SoC) MIPS che fa girare Linux. L’idea in sé non è nuova — chi voleva connettività di rete da un Arduino già metteva un router con OpenWrt accanto alla board e li faceva parlare via seriale — ma è la prima volta che questa coppia arriva integrata nella linea ufficiale Arduino, con una libreria a fare da ponte.

Contesto

Fino a oggi, per dare connettività IP a uno sketch Arduino si aggiungeva uno shield Ethernet o WiFi, con uno stack di rete che gira sui pochi kilobyte di RAM dell’AVR. Va bene per richieste HTTP semplici verso un endpoint noto; si fa scomodo appena servono TLS, DNS, parsing di risposte JSON di una certa dimensione o una coda di richieste. Il microcontroller non ha né la memoria né il sistema operativo per gestire bene queste cose.

Nella comunità maker la prassi era già un’altra: prendere un router economico con SoC Atheros, installarci OpenWrt — la distribuzione Linux per dispositivi embedded più diffusa su questa classe di hardware — e collegarlo all’Arduino via porta seriale. Il router fa da gateway: tiene su la connessione WiFi, risolve i nomi, gestisce TLS, espone un piccolo server web; l’Arduino resta sui pin, legge sensori e pilota attuatori con tempi deterministici. La YÚN formalizza questo schema mettendo i due chip sullo stesso PCB.

Architettura

I due processori della YÚN sono:

  • ATmega32U4 — l’AVR a 16 MHz già montato sulla Arduino Leonardo. Stessi 14 pin digitali (7 con PWM, 12 usabili come analogici), USB nativa, sketch Arduino standard. È il lato realtime: il loop gira senza un sistema operativo sotto, quindi i tempi di risposta sui pin sono prevedibili.
  • Atheros AR9331 — SoC MIPS 24K a 400 MHz con WiFi 802.11n (1x1, fino a 150 Mbps su canali a 40 MHz), Ethernet e supporto USB host. È lo stesso silicio che si trova dentro molti router WiFi economici, ed è ben coperto da OpenWrt. Su questo chip gira Linino, una build di OpenWrt adattata alla scheda da dog hunter, con pacchetti firmati e gli interpreti Python e shell già a bordo.

I due chip si parlano via una seriale interna. È il punto dove passa tutto: ogni cosa che lo sketch vuole fare in rete diventa un messaggio mandato al lato Linux, che lo esegue e ne restituisce il risultato.

Il ponte

A incapsulare quella seriale è la Bridge library. Dal lato sketch si scrive codice Arduino normale; sotto, la libreria serializza la richiesta, la manda all’AR9331 e ne legge la risposta. Il lato Linux, per conto dello sketch:

  • esegue comandi shell e ne legge l’output, così delega a un programma Linux qualunque elaborazione troppo onerosa per l’AVR;
  • legge e scrive file sulla microSD o sul filesystem, dando allo sketch una persistenza che l’AVR da solo non ha;
  • apre connessioni HTTP, con DNS e TLS a carico di Linux e non del microcontroller;
  • espone uno spazio di valori condiviso, leggibile via REST dal piccolo server web in ascolto sul lato Linux.

Il punto è la delega: il microcontroller non impara a parlare TCP/IP, continua a fare quello che sa fare, e quando serve la rete passa il lavoro al processore accanto. È la stessa divisione di compiti di Arduino-più-router, ridotta a una chiamata di libreria invece che a un protocollo da inventarsi.

Sul versante delle integrazioni, Arduino ha annunciato il supporto a Temboo, un servizio che raccoglie in un solo punto l’accesso a un centinaio di API di terze parti (social, pagamenti, logistica). Comodo per non scriversi a mano il client di ogni servizio, ma sposta una parte della logica fuori dalla scheda, dentro un servizio gestito da altri — una dipendenza da mettere in conto.

Punto critico

Quello che cambia davvero non è la connettività in sé: ora sulla scheda c’è un sistema operativo completo, con un suo ciclo di vita. L’AVR ha un comportamento sostanzialmente fisso: carichi lo sketch, gira. L’AR9331 con Linino è un piccolo sistema Linux con i suoi pacchetti, la sua configurazione di rete, i suoi servizi che partono al boot e — come ogni dispositivo connesso — la sua superficie di attacco. Va trattato come si tratta un router: password di default da cambiare, servizi esposti da limitare, aggiornamenti da seguire. Una board che prima cominciava e finiva nel firmware adesso ha, di fatto, un secondo computer da amministrare.

Il secondo costo è di competenze. Il maker abituato al solo IDE Arduino si ritrova davanti a SSH, a opkg, ai file di configurazione di OpenWrt, alla rete IP. Non è una barriera insormontabile, ma sposta la YÚN verso chi ha già una certa dimestichezza con i sistemi: laboratori, corsi tecnici, team che prototipano oggetti connessi sul serio.

Limiti

Il prezzo annunciato è 69 dollari più tasse, parecchie volte un Arduino Uno: la YÚN non sostituisce la board base, serve nei casi in cui Linux a bordo serve davvero. Per molti progetti connessi uno shield WiFi su un Uno, o un router separato già in casa, restano più economici. Il WiFi è 1x1: throughput e portata sono quelli di un piccolo SoC da router, non di un access point dedicato. E il ponte seriale interno è di per sé un collo di bottiglia: spostare grossi volumi di dati fra AVR e Linux attraverso quel canale è lento, quindi lo schema rende al meglio quando i pin producono dati piccoli e frequenti, non flussi pesanti.

Resta da vedere se questa architettura a due chip diventerà la base di una famiglia o resterà un caso isolato. La direzione tecnica — un processore deterministico per i pin, un processore con sistema operativo per la rete — è solida, e torna ovunque si debbano tenere insieme tempi reali e connettività.


https://blog.arduino.cc/2013/05/18/welcome-arduino-yun-the-first-member-of-a-series-of-wifi-products-combining-arduino-with-linux/ https://github.com/Deoptim/atheros/blob/master/AR9331.pdf https://openwrt.org/ https://arduino.cc/en/Main/ArduinoBoardYun https://www.noze.it/insights/arduino-yun-linux-iot/

Immagine di copertina: Vista frontale di una scheda Arduino YÚN: PCB azzurro con i connettori USB ed Ethernet, le file di pin header e i due chip principali… — foto di Arduino SA, CC BY-SA 3.0 — https://commons.wikimedia.org/wiki/File:ArduinoYunFront_2.jpg