Un Article sur les alimentations secteur bien fournit (en anglais).

J'ai précédemment rédiger un petit article sur les alimentation secteur. Il s'avère qu'un site (en anglais) a aussi publier un article du même genre, mais qui est par contre beaucoup plus poussé avec des tests de charge.
L'article test aussi les alimentations usb et constate quelque chose de rassurant: elle sont toutes protégées contre les surcharges.
Comme je l'ai expliqué dans mon article, les alimentations à découpage (switching power supplies, pour nos amis anglophones) sont un poil trop complexe pour être vulgariser simplement, il en va de même pour cet article qui se contente d'un graphe. Par contre, les explications concernant les alimentations avec régulateur sont plutôt claires et explique bien le rôle des différents composants.

Vous lisez l'anglais? Alors n'hésitez pas à lire "AC-DC Power Supplies - Using Wall Warts".


Un calculateur de consommation (d'essence) en java.

La consommation de nos véhicules est une de nos préoccupation récentes, soit pour l'écologie, soit et surtout pour notre porte feuille, avec les prix du pétrole qui prennent des ailes ces derniers temps, on est bien content de pouvoir savoir combien on consomme et ainsi pouvoir mieux gérer notre conduite.
Je vais donc dans cet article aborder le sujet sous 2 aspects:

  1. Celui pour tout le monde
  2. Celui, plus technique, pour les initiés (ou pas...)
La raison de cette séparation tient dans le fait que pour effectuer les calculs décris dans la première partie, j'ai réaliser ma première application avec interface (en java), et que cet aspect n'est que peu intéressant pour des personnes non initiées.

A-Comment calculer sa consommation?
Calculer une consommation d'essence n'est pas difficile, il suffit de savoir jouer avec les unités. Cette consommation s'exprime en "litre au 100" ou plutôt en "litre pour 100 km" pour être exact.  
Pour la calculer, rien de plus simple:
[Quantité en litre]*100/[Nombre de kilomètres]

Ce calcul s'obtient en faisant une règle de 3 ou un produit en croix, au choix.
Les données à utiliser ne sont pas n'importe lesquels, l'idéal pour gérer une consommation, est de remettre à 0 le compteur de distance à chaque plein afin de voir, au moment où on repasse à la pompe, combien de kilomètres on a parcouru. Si vous n'avez pas de compteur numérique (très anciens véhicules), vous pouvez noter la valeur du compteur totalisant les kilomètres de la voiture au moment du plein et avant le nouveau.
En complément, il est préférable de consommer toute l'essence (dans la limite du raisonnable, la zone rouge n'est pas conseillée...) du réservoir pour avoir des valeurs cohérentes.
A ce moment là, la quantité d'essence que vous allez remettre (en faisant un plein complet) sera la quantité d'essence (en litres) que vous avez consommée durant votre dernier "trajet" (distance totale parcourue avec le plein).
Bien évidemment, certains pourront me dire que cette méthode est dépassée, ce qui ne sera pas faux vue que les voitures modernes avec ordinateur de bord vous donnent toutes les infos concernant votre consommation: consommation moyenne, consommation instantanée, distance parcourue, distance restante,...
L'avantage est de pouvoir très bien gérer sa conduite à l'aide de la consommation instantanée (à regarder avec modération, la route passe avant!), mais malheureusement, les voitures un peu ancienne n'ont pas ces infos.
C'est donc la raison d'être du programme que j'ai réaliser. Celui-ci effectue les calculs suivants:
  1. Consommation moyenne
  2. Tarifs (€/km et km/€)
  3. Distance maximum parcourable
  4. Tous (les 1, 2 et 3 en 1 fois)

Ce programme a été réaliser en java, il est donc nécessaire d'avoir java d'installer sur votre ordinateur pour l'utiliser.(Télécharger Java)
Il suffit de remplir les champs à votre disposition puis d'appuyer sur "calculer" pour obtenir les résultats dans les cases disponibles. Les résultats et valeurs sont conservés quel que soit le mode, bien que les résultats s'effacent si un nouveau, différent, est calculé. Le bouton effacer sert donc à réinitialiser tous les champs.
Ce calculateur vous permet aussi de connaître différents indicateurs comme le prix au kilomètre, qui peut être utile si vous avez à facturer un trajet. Vous pouvez aussi calculer la distance théorique maximum que vous pouvez parcourir avec 1 plein. Ce calcul n'est pas précis, il donne un ordre d'idée car il se base une consommation moyenne fixe, ce qui est très difficile à avoir pour un trajet inconnu.
Pour vous donner des idées de la précision de ce calcul: j'ai fait 429.3 km avec 26.6 litres, ma consommation a été de 6.2 L/100, mon réservoir fait 30L env., je pouvais donc parcourir théoriquement 483 km.
En réalité, il me restait une pastille, qui correspond environ à 3L (30L/10 pastilles), soit 48 km (à 6.2L/100), cela nous mène à 477 km soit un peu moins que celle calculée. Vous comprendrez donc que la distance donnée pour ce calcul n'est pas garantie, je ne pourrais donc être tenu responsable de quoi que ce soit!
B-Aspects Technique
Je ne suis qu'un débutant en programmation, j'apprends le C lors de mes cours d'informatique, mais on est loin d'avoir vu le principal. Toutefois, je voulais créer un petit programme avec un interface, seulement voilà, les interfaces graphiques en C, c'est pas très accessible (à mon goût) aux débutants comme moi. Il me fallait donc trouver quelque chose de plus simple, j'avais connaissance du java et notamment du fait qu'il soit multiplateforme, je me suis donc dit que l'aspect graphique était plus accessible (pas d'API win32 effrayante ^^), visiblement je ne m'étais pas trop trompé. Après quelques tutoriels et le bon choix de logiciel, j'ai pu faire ce que vous voyez plus haut.
Durant cette expérience, je me suis étonné de voir qu'en dehors des principes liés au java, celui-ci avait des similarités intéressantes avec le C. Je ne maîtrise pas la notion d'objet donc j'ai fait au plus facile. Le code est par conséquent très loin d'être parfait! Mon but était d'obtenir une interface utilisateur qui puisse faire fonctionner les calculs, et je dois dire que j'ai trouvé ça relativement accessible. L'interface facilite pas mal la gestion des choix (il suffit que l'utilisateur coche la case, on vérifie qu'elle soit cochée et c'est bon), et le fait de pouvoir, à l'aide d'un simple clique, ajouter un action (du code) à un élément graphique est vraiment appréciable.
On remarquera certains détails:
  • Le code est dans la partie affichage du programme, ce qui est déconseillé normalement
  • Aucune gestion des erreurs n'est effectuée (je songe à la rajouter par contre)
  • La fenêtre n'est pas programmée pour démarrer au milieu de l'écran
  • J'ai choisi d'utiliser l'index pour la liste déroulante, par facilité; mais ce choix ne me paraît pas idéal pour une liste non fixée (ce n'est pas le cas ici).
  • On perd l'avantage du "printf" utilisé en C pour débuter et qui permet d'arrondir les float à n décimale ( %.2f pour 2 décimales), il m'a fallu chercher un autre méthode (mais elle fonctionne).
  • L'interface offre l'avantage de gérer les accents, pas comme la console en C
Pour développer ce programme, j'ai utilisé NetBeans qui permet justement de programmer à la volée l'interface. Au cas où, cher lecteur, vous seriez un débutant en programmation et que vous souhaiteriez vous aussi faire un petit programme avec une interface utilisateur, je vais donner quelques liens. Cependant, je me permet de rappeler que, pour moi, rien ne vaut les explications d'un professeur.
Pour commencer avec les interfaces graphiques, il faut d'abord comprendre quelques concepts, je vous conseil donc le tutoriel "Création interface graphique avec swing: les bases" qui se trouve dans la rubrique java sur developpez.com (site que je vous recommande!).
Vous pouvez éventuellement lire "Penser en Java v2" qui m'a semblé intéressant mais que je n'ai pas pris le temps de lire bien loin.
Les tutoriels de NetBeans sont aussi intéressant, notamment "Designing a Swing GUI in NetBeans IDE" et "Introduction to GUI building" qui m'a permis de comprendre comment faire interagir le code avec l'interface.
Avec plus d'exigence en fonctionnalités, il faut connaître les propriétés de chaque éléments, une petite recherche m'a menée à des "Java Programming Notes" qui m'ont été super utiles, soit pour comprendre comment fonctionnait les éléments, soit pour justement directement trouver les commandes.
Enfin, pour comprendre quelques détails, j'ai utilisé une vidéo youtube qui reprend un peu certains principes utilisés dans mon programme (en fait c'est plutôt l'inverse, mais bon ^^') pour voir comment tout ça se mettait en place; la vidéo n'est réellement intéressant qu'à partir de 5:45.
Je pense qu'avec tout ça, si vous avez quelques connaissances en C, vous devriez pouvoir initier quelques projet avec un interface basique bien que c'est un peu comme faire passer la charrue avant les bœufs, je dois l'avouer!
Si vous remarquez des bugs dans le programme, n'hésitez pas à laisser un commentaire. C'est aussi valable si vous avez des questions autres! :-)


L'open source hardware, qu'est-ce donc?

Je n'ai pas encore croisé beaucoup d'articles en français relatant de l'open source hardware (ou matériel libre, en français). Ce standard ou plutôt licence est l'équivalent de ce qu'on trouve pour les logiciels libres ("open source"). Les seules informations facilement accessible sur le sujet se trouvent pour l'instant sur wikipedia. Je vais toutefois tenter d'expliquer en quoi ça consiste à l'aide de la définition fournie par l'organisme même (site en anglais):
L'idée est de fournir un matériel open source, toutefois, ce n'est pas tant l'objet matériel qui pose problème mais la manière dont il a été conçu et réalisé.

"L'open hardware a pour but de rendre accessible les fichiers ou documents liés à la conception afin que chacun puisse l'étudier, la modifier, la distribuer, la vendre ou vendre du matériel basé sur cette conception. Ces fichiers seront préférablement mis à disposition dans des formats largement utilisés ou idéalement dans des formats open source pour permettre à chacun de les modifier. L'open hardware doit permettre de garder une liberté de contrôle sur les technologie (pour leur auteur) tandis que le partage d'informations et de connaissances a pour but d'encourager le commerce par le libre échange des dessins et modèles."
(Cette traduction est légèrement adaptée)

Je ne vais pas développer plus, je pense que la définition suffit à cerner le but. Je pense aussi qu'il peut être intéressant d'analyser les répercutions d'une telle licence.
Actuellement, rare sont les entreprises qui créer des appareils électroniques (ou autre) basé sur de l'open source. Il existe toutefois quelques exemples, comme linksys avec openWRT ou encore PopCorn qui utilise linux pour ses boitiers multimédias et qui permet à chacun d'ajouter des fonctions librement. L'open hardware est dors et déjà "utilisé" par quelques entreprises (Voir ce pdf).
En général, quand les gens veulent modifier leur appareil et que ce n'est pas prévu par l'entreprise le commercialisant, ils font appel à des techniques diverses telle que le "reverse engineering" (ingénierie inversée) ou la hacking qui ne sont pas forcément idéaux. C'est comme ça que l'iphone s'est retrouvé jailbreaké et que l'on peut croiser un peu partout sur le web des appareils (électronique mais pas seulement) modifiés pour rajouter des fonctions. Il m'est par exemple arrivé de croisé des modification sur des oscilloscopes afin de gagner certaines fonctionnalités. (exemple sur un casque Sennheiser)
Là, on arrive au point peu avantageux pour le fabricant: si il met son produit sous licence open hardware, il ne pourra plus faire aussi simple que de concevoir 1 PCB pour la gamme entière et simplement ajouter ou retirer des composants pour les différents modèles de cette même gamme car on s'apercevra rapidement de l'astuce (très répandue, et ça se comprend). L'autre aspect est plutôt basé sur le bon sens, à savoir le coter sécurité. Il est difficilement envisageable de laisser accessible la modification des systèmes électronique d'une voiture car il pourrait y avoir un impact sur la sécurité. Malgré cela, on s'aperçoit avec les smartphones, auxquels on peut ajouter des applications, qu'un produit "customisable" attire plus, surement parcequ'il permet une personnalisation. De fait, les produits offrant la possibilité d'être modifier pourront développer une communauté qui garantira une certaine pérennité des acheteurs (l'iphone est un exemple, Android de même,le PopCorn Hour,...), ce qui se révèle aussi avantageux pour l'entreprise.
Je pense donc que l'open hardware pourrait devenir intéressant pour tout le monde, aussi bien pour l'acheteur que le fabricant. Cependant, on ne pourra pas l'appliquer à tous les produits, par exemple en cas de problème de sécurité. Je serait aussi curieux de voir l'effet qu'une telle licence pourrait avoir sur la vitesse de développement et le renouvellement des produits, voir si ça l'accélérait ou la ralentirait (du fait de petites améliorations apporté par une éventuelle communauté). Nous saurons cela d'ici quelques années peut-être. En attendant, vous pouvez voter pour le logo que devra adopter ce standard. Je me permet d'afficher clairement mon avis pour le logo puisque celui affiché plus haut est le meilleur selon moi (ceci dit, quelques autres sont intéressants).