# Tux Droid

Tux Droid est un compagnon intelligent (en anglais : smart-companion) conçu et distribué par la société Kysoh. Lors de sa création en 2007, Tux Droid ne fonctionnait que sur les systèmes Linux, d'où il tire son aspect extérieur, représentant Tux, la mascotte de Linux. Depuis, il s'est ouvert aux utilisateurs Windows.
Le projet Tux Droid est resté depuis sa création un projet open source axé sur la participation communautaire.

## Présentation

Tux Droid est un appareil connecté à l'ordinateur grâce à une connexion sans fil. L'ensemble se compose de deux éléments matériels, Tux Droid en lui-même avec un dongle assurant la liaison sans-fil entre l'ordinateur et le Tux Droid, et une suite logicielle complète permettant l'exploitation du Tux Droid.
Le but de Tux Droid est d'offrir une présence avec une interaction homme-machine, et ce dans le but de transporter les informations numériques plus loin que l'ordinateur.
L'ensemble est capable de retrouver des informations sur Internet, tels que des flux RSS, la météo, les courriels ou encore les notifications sur Facebook ou Twitter, et d'en avertir l'utilisateur grâce à un système de synthèse vocale. Cette synthèse vocale permet à Tux Droid de communiquer d'une manière claire avec l'utilisateur, et ce dans pas moins de onze langues. Il permet également, grâce à son circuit audio, d'écouter des radios internet. Son microphone permet également d'utiliser Tux Droid comme un téléphone avec Skype par exemple.
Les logiciels se composent d'un cœur, assurant toute la gestion des évènements et des interactions de l'utilisateur, ainsi que de gadgets. Ces gadgets sont des mini-applications ajoutant des fonctionnalités à Tux Droid. La lecture des flux RSS, par exemple, est gérée par un gadget. On parle alors du gadget RSS.

## Historique

Depuis sa création en 2007, Tux Droid a beaucoup évolué. Sur le plan logiciel, Tux Droid en est maintenant à la version 3.
* 2007 - 2008 : Suite logicielle v1
    Logiciels exclusivement pour Linux. L'interface graphique était réalisée avec GTK.
* 2008 - 2009 : Suite logicielle v2
    Ouverture des logiciels pour Windows. Dans cette version, l'interface graphique a été entièrement recréée en Java afin d'assurer la compatibilité entre Linux et Windows. De plus, une nouvelle version du système de gadgets plus évoluée a vu le jour afin de rendre l'utilisation du Tux Droid plus facile.
* À partir de mi 2009 : Suite logicielle v3
    Cette troisième version de la suite logicielle voit l'interface graphique portée dans un navigateur internet, ce qui fait entrer Tux Droid dans l'ère du Web 2.0. Cette interface a été nommée TuxBox 2.0 en référence à son système d'affichage.
    Le système de gadget a encore été amélioré afin d'en faciliter la création et de simplifier l'utilisation.
    Le cœur du système a également été revu : il s'agit maintenant d'un serveur HTTP, appelé Smart Core. Ce serveur est capable de générer dynamiquement l'interface graphique et de gérer les gadgets. Il rend aussi l'utilisation de Tux Droid à travers un réseau (local ou Internet) possible.
La partie matérielle a également évolué au fil du temps. La différence la plus visible est le changement dans la finition extérieure, modernisant son esthétique. De plus, la qualité des composants ainsi que des matériaux a été améliorée.

### Une reprise du projet pour 2011 ?

Fin juillet 2010, la société Kysoh s'est déclarée en faillite. Bien que des démarches soient entreprises pour publier les sources, il n'existe plus de serveur public où les récupérer. Fin 2010, le projet n'a pas de repreneur déclaré, et il est difficile de trouver les sources ainsi que la documentation sur le projet.
Certains utilisateurs de Linux continuent à faire vivre Tux Droid. Toutes les informations relatives se trouvent sur le topic consacré du forum Ubuntu-fr.
En juin 2011, le site http://www.kysoh.com est de nouveau actif, mais il ne l'est plus en novembre 2013.

## Caractéristiques
### Matériel

Tux Droid s'associe avec un dongle connecté au PC. L'ensemble contient cinq microcontrôleurs :
* Atmel AT89C5130 : microcontrôleur 8bits USB, basé sur une architecture 8051
    Ce microcontrôleur est situé dans le dongle, et sert à faire le lien entre le PC (USB) et la carte de liaison sans-fil.
* Atmel ATmega48 : microcontrôleur 8bits RISC, cœur AVR.
    Ce microcontrôleur est utilisé sur les cartes de liaison sans fils. Il y en a donc deux, l'un se situant dans le dongle, l'autre dans Tux Droid.
* Atmel ATmega88 : microcontrôleur 8bits RISC, cœur AVR. Ce type de microcontrôleur est utilisé dans Tux, et est au nombre de deux :
** TuxCore : microcontrôleur gérant les boutons, les DELs, les moteurs, ainsi que le comportement général de Tux Droid
** TuxAudio : microcontrôleur gérant la partie audio. Il s'occupe également de faire la liaison entre la carte sans fils et TuxCore.
Les caractéristiques matérielles de Tux Droid sont :
* 3 moteurs :
** Moteur permettant le mouvement du bec et des yeux
** Moteur permettant le mouvement des ailes
** Moteur permettant de faire tourner Tux Droid sur lui-même
* 3 boutons :
** Un dans chaque aile
** Un sur la tête
* Diode électroluminescente (DEL) située dans les yeux
* Une diode infrarouge permettant d'envoyer des codes de télécommandes
* Un récepteur infrarouge permettant de recevoir des codes de télécommandes
* Un microphone situé dans le bec
* Un haut-parleur situé à l'arrière
* Molette de réglage du volume
* Une prise jack haut-parleur (Audio OUT) ainsi qu'une prise jack micro (Audio IN)
* Pack de batteries (6 V) rechargeables
* Liaison sans fil 2,4 GHz

### Logiciel

La suite logicielle utilisée pour Tux Droid se compose de différents éléments :
* Smart-core représente le cœur du système. Il se compose de :
** Un serveur HTTP de type REST. Le contrôle de Tux Droid peut entièrement être réalisé à l'aide de requêtes HTTP. (écrit en Python)
** Un ordonnanceur (scheduler) permettant de lancer des tâches (principalement des gadgets) à des moments précis ou périodiquement. (écrit en Python)
** Un gestionnaire de gadget (écrit en Python)
** Un driver pour la communication USB (écrit en C)
** L'interface graphique, construite sur base de fichiers XSL / CSS. (écrite en XSL / CSS / Javascript)
Pour Windows, une fenêtre d'affichage de l'interface graphique ainsi que des outils d'intégration sur le bureau de Windows ont été créés.

### Gadgets

Les gadgets de Tux Droid se composent en réalité de trois éléments distincts et interdépendants :
* Les plugins (extension : .scp) : Les plugins permettent d'ajouter des fonctionnalités à Tux Droid en offrant un set de fonction. Ils peuvent être comparés à une bibliothèque système.
    Les plugins peuvent être écrits en différents langages, tels que Python, Java, C#, Perl, Ruby, etc. Ils peuvent également être internationalisés facilement dans différentes langues.
* Les gadgets non configurés (extension : .scg) : Ces gadgets sont créés à partir d'un plugin. La création d'un tel gadget consiste à rendre visible certaines options fournie par un plugin, ou d'en fixer des valeurs par défaut.
* Les gadgets configurés (extension : .ucg) : Ces gadgets sont créés à partir d'un gadget non configuré. Il a alors été configuré par l'utilisateur. Dans le cas du gadget email, il s'agirait par exemple de la configuration du serveur d'email, du nom d'utilisateur ainsi que du mot de passe.
Dans ce système, un plugin peut être utilisé comme base pour plusieurs gadgets. Ainsi, le plugin webradio (permettant de lire des radios internet sur Tux Droid) permet de créer le gadget 'Radio française', 'Pop / Rock', 'Classique', etc. ; en configurant uniquement les adresses des radios internet.