Vous vous rappelez de Joséphine, notre machine à café USB? Figurez-vous qu'on a remarqué qu'elle avait tendance à s'éteindre automatiquement juste avant qu'on ai envie d'un café :-) Du coup on a décidé de lui offrir un petit upgrade: en plus de pouvoir lancer un café à distance, on va pouvoir l'allumer et l'éteindre, et choisir un café simple ou double. Et tout ca en quarante lignes de code, interface utilisateur comprise.
En terme de bricolage, ce n'est pas très compliqué tout le travail a été fait la dernière fois: on avait déja ramené tout les fils de commande au même endroit, on a juste besoin de quatre relais pour commander les quatre fonctions. On va utiliser des Yocto-Relay, deux modules suffiront étant donné que chacun d'entre eux dispose de deux relais. Le problème c'est la place: impossible de faire entrer les deux modules et un hub USB standard dans la machine à café.
Ca, ça va pas pouvoir rentrer dans la machine à café :-(
On va donc utiliser un Micro-USB-Hub. En plus d'être minuscules, ces hubs sont conçus pour que l'on puisse visser les modules dessus. La connexion entre le hub est les modules est assurée par des petits connecteurs. On en a aussi profité pour souder directement le cable USB sur le hub, ce qui nous débarrasse de la prise USB et nous fait gagner de la place. Il ne reste plus qu'à placer le tout dans la machine et connecter les bons fils au bon endroit.
On va plutôt utiliser un Micro-Hub
On soude des petits conencteurs sur le hub et les Yocto-relay
Et on monte le tout ensemble, le résultat est quand même un peu plus compact
Finalement on a décidé de se débarrasser du connecteur USB et de souder directement le câble
Voila! c'est prêt
La partie hardware est terminée, reste la partie software. Comme on a très envie d'un café juste là maintenant, on va faire au plus simple. On va juste se contenter de faire une page web qui contrôle chacun des relais. Pour simplifier la programmation, on a configuré chaque relais en lui donnant un nom logique correspondant à la fonction de la machine qu'il commande. Toujours pour simplifier la programmation, plutôt que de faire basculer les relais dans un sens puis dans l'autre pour simuler l'appui sur un bouton, on va utiliser la fonction pulse(), qui fait basculer le relais, puis le fait automatiquement revenir à sa position initiale au bout d'un temps déterminé, 500 milli-secondes dans notre cas.
<HEAD>
<link rel="apple-touch-icon-precomposed" href="coffee.png"/>
<meta name="apple-mobile-web-app-capable" content="yes" />
<script type="text/JavaScript" language="javascript1.5" src="yocto_api.js"></script>
<scripttype="text/JavaScript" language="javascript1.5" src="yocto_relay.js"></script>
<scripttype="text/JavaScript" language="javascript1.5">
<!--
if (yRegisterHub("http://192.168.2.34:4444")<0)
alert("unable to contact Josephine's server");
function action(str_fctname)
{ var r = yFindRelay(str_fctname);
if (r.isOnline())
{ r.pulse(500);
} else alert ("Josephine is not connected");
}
-->
</script>
</HEAD>
<body>
<img style ="position:absolute;top:0;left:0;width:100%;height:100%" src='bg.png'>
<table width='100%' height='100%' style ="position:absolute;top:0;left:0;width:100%;height:100%" >
<tr>
<td valign='middle' style='text-align:center'>
<img src='onoff.png' width="50%" onclick="javascript:action('on_off')">
</td>
<td valign='middle' style='text-align:center'>
<img src='service.png' width="50%" onclick="javascript:action('service')">
</td>
</tr>
<tr>
<td valign='middle' style='text-align:center'>
<img src='1coffee.png' width="50%" onclick="javascript:action('simple_coffee')">
</td>
<td valign='middle' style='text-align:center'>
<img src='2coffee.png' width="50%" onclick="javascript:action('double_coffee')">
</td>
</tr>
</table>
</body>
</HTML>
Il ne reste plus qu'à sauver cette page sur un serveur web, et le tour est joué.
Une machine à café entièrement contrôlable depuis votre smart-phone, ça vous dit?
Et voilà c'est bouclé: plus besoin de se lever pour aller rallumer la machine à café: on peut le faire à distance. Bon, évidement reste encore l'épineux problème de la tasse.