Il n’aurait pas un peu de mal parfois python ?

python_calcul

Résultat d’une addition simple avec ipython (python 2.7.9).

Publié le par admin | 2 commentaires

La CGT oui merci !

Cette galerie contient 1 photo.

Un petit morceau de moi, dans le grand cyberspace

Toutes les galeries | Laisser un commentaire

Pain perdu façon Martoni

Ce qu’il y a de chiant avec le pain perdu c’est que souvent le pain est tellement dur que l’on arrive pas à couper des tranches correctes. Tout part en miettes. De plus les morceaux de pain récupérés s’imbibent très mal du lait/œuf dans lequel on le trempe. On gâche du lait et des œufs et le pain perdu n’est même pas bon car trop dur au milieu.

Du coup c’est l’occasion de ressortir le mixeur acheté pour le p’tit dernier que l’on utilise pas de toute façon car les petits pots industriels c’est bien plus simple.

Les ingrédients:

  • Un vieux morceau de pain rassis bien dur
  • 2 œufs
  • Du lait
  • De la farine
  • Un sachet de sucre vanillé
  • Du sucre roux

Pour les quantités je vous laisse juge 😉

Alors la recette est simple il suffit de bien mixer le pain dur pour le transformer en chapelure. On ajoute ensuite les œufs le lait et le sucre + sucre vanillé. Une fois que tout est bien mélangé ajouter de la farine jusqu’à obtenir une pâte qui soit pâteuse … enfin pas liquide quoi.

Après ça on met du beurre dans une poêle et on fait frire des petits tas de pâtes avec une grande cuillère.

Et voilà :

On dirait presque du pain perdu classique

On dirait presque du pain perdu classique

L’apparence est proche du pain perdu habituel et le goût aussi !

Aller bon app’ et n’oubliez pas de donner à manger au p’tit quand même 😉

Publié dans cuisine | Marqué avec | Laisser un commentaire

GreaseMonkey, bdphile et Tribulles

En grand fan de BD je passe souvent dans mon magasin de BD d’occasion préféré à Mulhouse. Histoire d’essayer de compléter une série à moindre frais, ou pour découvrir de nouveaux auteurs.
J’ai même découvert récemment qu’ils possèdent un site internet avec la liste des bd d’occasions qui sont dans leurs bacs.

Pour éviter de faire trop de doublons et pour pouvoir faire le point sur ma bédéthèque j’utilise le site bdphile.info. Ce site permet de créer un compte et d’enregistrer sa bédéthèque en entrant l’ISBN de chaque BD.

Je peux désormais partager ma collections via mon compte public, mais surtout cela me permet de lister mes séries incomplètes.

Il manquait une «killer-feature» à bdphile: quand on affiche la liste de ses séries, faire un liens sur le site de tribulle pour savoir s’ils ont les albums en occasion (on trouve toujours en neuf il suffit de commander).

Pour combler ce manque, j’ai donc écris un petit script greasemonkey disponible ici.

Un fois le script installé dans son navigateur Firefox, la page du site bdphile qui liste ses série ajoute un lien (occasion) vers la série en question sur le site de tribulle. De cette manière je sais quand une bd est disponible en occasion pour combler une série.

Publié dans informatique | Marqué avec , , , | Commentaires fermés sur GreaseMonkey, bdphile et Tribulles

Exporter les contacts Thunderbird vers FirefoxOS

Ayé j’ai craqué, je me suis acheté un gouzi-phone. J’attendais qu’il existe un téléphone suffisamment libre pour pouvoir faire le grand saut.

Et c’est chose faite avec FirefoxOS qui est maintenant disponible en france grâce à ZTE (des chinois et oui).

Bon par contre c’est encore une version beta et il manque quelques fonctionnalités essentiels comme la synchronisation carddav pour les contacts (avec owncloud par exemple). La synchronisation de l’agenda owncloud avec caldav fonctionne par contre très bien.

Du coup pour avoir ses contacts sur le téléphone il est nécessaire d’exporter son agenda sous forme de fichier pour les ré-importer via le lecteur sd sur le téléphone.

Pour ce faire je me suis servi de mon thunderbird (en fait icedove, car debian est un intégriste du libre) et j’ai exporté les contacts au format csv.

Hélas FirefoxOS ne supporte pas les formats exporté par thunderbird, il n’accepte que le format Vcard.

Voici donc un petit bout de programme python permettant de convertir le csv en vcard, il s’exécute simplement comme ça :

python thunderbird2vcard.py export.csv export.vcf

Il suffit ensuite de copier ce fichier sur la carte SD de son téléphone FirefoxOS et d’importer les contacts pour tous les récupérer.

Publié dans Non classé | Marqué avec , , | Laisser un commentaire

Expérimentations de Migen sur APF27 avec debian

Article transféré sur le blog du FLF.

Publié dans Non classé | Marqué avec , , | Laisser un commentaire

À poil le GravityLight !

Suite à mes premiers tests du GravityLight, je ne pouvais pas laisser une belle boîte comme ça sans la démonter. Surtout que contrairement aux vendeurs de prisons dorées, deciwatt a réalisé un produit qui est facilement démontable.

gravity_ouvert_face

Premier étonnement : tout est mécanique. Les seules pièces d’électroniques sont les leds et résistance permettant de limiter le courant dans la led rouge.

gravitylight_ouvert_pile

Pour détecter un poids trop lourd, on voit bien sur cette dernière photo le gros ressort actionnant un contact permettant de commuter la led rouge.

gravitylight_moteur

La production d’électricité est réalisée par un simple moteur ferrite.

Le réglage de la puissance se fait au niveau de l’axe du moteur, en montant/abaissant de moteur on peut sélectionner le diamètre de couplage pour changer la vitesse de rotation du moteur.gravitylight_grand_axe

gravitylight_petit_axe

L’ensemble donne une impression d’assez bonne qualité, par contre je n’y brancherais pas mon téléphone pour le recharger. Il faudrait pour cela créer un adaptateur, et surtout avoir beaucoup de patience 😉

Publié dans Non classé | Marqué avec | Laisser un commentaire

Premiers tests du GravityLight

Une fois le GL déballé, la première chose à faire pour tester notre GravityLight est de trouver un point d’accroche suffisamment solide et suffisamment haut pour pouvoir l’accrocher, chose relativement facile dans un appartement plein de poutres.

gravitylight_accroche_poutre

Deuxième chose à faire (et plus compliqué) est de pouvoir remplir le sac fourni avec une charge de 8 à 12 kg. Si on met moins de 8kg ça marche pas, mais si on en met trop on risque de tout casser. Comme je suis pas à la campagne, pas moyen de mettre du sable ou du gravier comme expliqué sur la notice. Du coup il a fallu faire avec les moyens du bord : patates et riz !

gravitylight_poids

Mais dans le volume imparti par le sac ça n’a pas été suffisant, j’ai donc du y ajouter le poids de la connaissance : HTML5, pour que le pendule commence à descendre correctement.

Je suis assez surpris de l’engin, le système n’est pas si simpliste. Le gros bouton trois positions permet de régler la vitesse de descente du poids, et donc la puissance délivrée.

gravity_lum_faible
Position I, faible éclairement
gravitylight_forte_lum
Position III, «fort» éclairement

Un système permet de détecter que le poids est trop élevé au moyen d’un astucieux ressort placé au niveau de l’accroche de l’engin. Si le poids est trop élevé une led rouge va s’allumer.

gravitylight_rouge

Comme je l’avais expliqué dans ma précédente note, il est possible d’utiliser le courant généré pour y brancher un appareil électronique (bon faut pas être trop gourmand quand même parce qu’on peut pas compter sur beaucoup plus de 40mA). La tension délivrée (mesurée) est d’un peu moins de 9v, et le branchement de l’adaptateur va désactiver la led d’éclairage pour concentrer toute l’énergie sur l’adaptateur.

gravitylight_adapt

Ce qui est rigolo, c’est que si on branche juste l’adaptateur sans aucun appareil de branché dessus, la charge va se mettre à descendre rapidement (circuit ouvert). Et si on veut mesurer le courant de cours circuit avec un ampèremètre, la charge stoppe complètement sa course. Et du coup je n’ai pas encore pu mesurer correctement le courant délivré par l’engin.

Au prochain épisode copé va devoir se cacher les yeux car je vais mettre l’engin à poil ! On va s’attaquer à son démontage. Peut-être mettrais-je des photos de la bête démontée le 14 février par solidarité avec les dessinateurs 😉

Publié dans Non classé | Marqué avec , , | Un commentaire

Déballage du GravityLight

Après plus d’une années d’attente, le voici enfin arrivé dans ma boite aux lettres : le GravityLight !

Le GravityLight permet tout simplement de générer de l’électricité à partir de la gravité. C’est une révolutiontm ! Plus besoin de pédaler, brancher une prise, avoir du soleil ou du vent pour avoir de l’électricité, il suffit de remonter le pendule. Certaines mauvaises langues diront que ça n’est qu’une resucée des vieilles pendules de nos grands mères … et ils auront raison !

Concrètement c’est une idée qui a germée dans la tête de deux vieux anglais qui cherchaient une solution pour éclairer les chaumières non connectés au réseau électrique. Le but principale était d’éviter l’utilisation de lampes à pétroles et autres bougies qui sont un fléaux pour les jeunes poumons dans ces populations.

On voit beaucoup de projet d’éoliennes et panneaux solaires dans ses villages reculés, mais ces solutions posent toutes le même problème de stockage d’énergie. Les batteries coûtent très cher et ne sont pas durable, elles s’usent assez vite.

Du coup l’idée toute bête (mais révolutionnairetm je vous dis) est de ressortir le vieux systèmes de pendule des horloges de grand mère pour les coupler à un générateur de courant (alternateur).

De cette manière, il suffit de remonter un poids (environ 12kg max pour le GravityLight) pour avoir de la lumière pendant au moins 30 minutes. Les poumons sont conservés, pas besoin d’acheter du pétrole ou des bougies et pas besoin d’avoir à attendre le soleil (sic) pour recharger une batterie.

Pour mener à bien leur projet, nos deux anglais on fait une levée de fonds en crowfunding sur indiegogo. Occasion que je n’ai évidemment pas loupé il y a 1 an et demi. L’objectif de prix de la chose était de moins de $10. Mais évidemment, en tant qu’européen bien grassouillet il fallait donner un peu plus pour pouvoir espérer en recevoir un chez soit ($75).

La conception et la production s’étant bien déroulée dans les temps, tous les financeurs qui avaient donnés suffisamment de $$ on donc pu recevoir leur précieux GravityLight, dans une belle boite en carton made in china.

gravitylight boite fermée

gravitylight_boite_ouverte

La boite contient l’engin en lui même avec un gros bouton 3 positions permettant à mon avis de régler la puissance, un petit sac, un gros sac et une courroie avec les attaches permettant d’y fixer les sac.

gravitylight_contenu

En plus de ces éléments essentiels on trouve aussi un adaptateur de prise d’alimentation standard permettant de brancher un appareil électronique pour le recharger. Grâce à une prise astucieusement placée à l’arrière de l’appareil.

gravitylight_arriere

Je n’ai pas encore eu le temps de lui trouver un point d’accroche assez solide pour pouvoir faire des tests de production d’électricité, mais ça ne saurait tarder … suite au prochain épisode.

Publié dans écologie | Marqué avec , , , | Laisser un commentaire

PeripheralOnDemand, ISE et la ligne de commande.

POD (PeripheralOnDemand) est un outils écrit en python permettant de générer un design pour les FPGA d’armadeus sans avoir à faire du VHDL/Verilog. Cet utilitaire permet d’intégrer des «composants virtuels» disponibles sur étagère et de générer le design.

POD peut-être utilisé en ligne de commande pour créer un projet, mais il peut aussi être scripté via l’argument -s de la commande pod :


$ pod -s monscript.pod

On trouve un certain nombre de scripts POD dans le projet armadeus dans le répertoire firmware/pod_scripts/.

Par exemple si nous avons besoin d’utiliser le gsm ou le gps de la carte APF51dev il faudra générer des uarts dans le FPGA au moyen du script apf51_gsm_gps_firmware.pod :


$ pod -s apf51_gsm_gps_firmware.pod
create apf51_gsm_gps_firmware
Project apf51_gsm_gps_firmware created
POD:apf51_gsm_gps_firmware> $ selectplatform standard.apf51
[INFO]   : No platform in project
Component platform added as apf51
Component imx51_wb16_wrapper added as imx51_wb16_wrapper00
Component rstgen_syscon added as rstgen_syscon00
Component irq_mngr added as irq_mngr00

POD:apf51_gsm_gps_firmware> $ addinstance components.uart16750 gsm_uart
Component uart16750 added as gsm_uart

POD:apf51_gsm_gps_firmware> $ addinstance components.uart16750 gps_uart
Component uart16750 added as gps_uart

POD:apf51_gsm_gps_firmware> $ connectpin gsm_uart.interrupt.int_o.0 irq_mngr00.irq.irqport.0

POD:apf51_gsm_gps_firmware> $ connectpin gps_uart.interrupt.int_o.0 irq_mngr00.irq.irqport.1

POD:apf51_gsm_gps_firmware> $ connectpin gps_uart.uart.srx_pad_i.0 apf51.fpga.IO_L40P_M3DQ6_3

POD:apf51_gsm_gps_firmware> $ connectpin gps_uart.uart.stx_pad_o.0 apf51.fpga.IO_L42N_GCLK24_M3LDM_3

POD:apf51_gsm_gps_firmware> $ connectpin gsm_uart.uart.srx_pad_i.0 apf51.fpga.IO_L39P_M3LDQS_3

POD:apf51_gsm_gps_firmware> $ connectpin gsm_uart.uart.stx_pad_o.0 apf51.fpga.IO_L41P_GCLK27_M3DQ4_3

POD:apf51_gsm_gps_firmware> $ connectpin gsm_uart.uart.cts_pad_i.0 apf51.fpga.IO_L41N_GCLK26_M3DQ5_3

POD:apf51_gsm_gps_firmware> $ connectpin gsm_uart.uart.rts_pad_o.0 apf51.fpga.IO_L39N_M3LDQSN_3

POD:apf51_gsm_gps_firmware> $ autoconnectbus
setting base address 0x0 for  irq_mngr00.swb16
setting base address 0x20 for  gsm_uart.swb16
setting base address 0x40 for  gps_uart.swb16
No addressing value in this type of bus
Bus connected

POD:apf51_gsm_gps_firmware> $ generateintercon imx51_wb16_wrapper00.mwb16
Intercon with name : imx51_wb16_wrapper00_mwb16_intercon Done
Component imx51_wb16_wrapper00_mwb16 added as imx51_wb16_wrapper00_mwb16_intercon

POD:apf51_gsm_gps_firmware> $ generateintercon rstgen_syscon00.candroutput
Intercon with name : rstgen_syscon00_candroutput_intercon Done
Component rstgen_syscon00_candroutput added as rstgen_syscon00_candroutput_intercon

POD:apf51_gsm_gps_firmware> $ generatetop

Mapping for interface mwb16:
Address  | instance.interface             | size
---------------------------------------------------------
0x0 |               irq_mngr00.swb16 |          8
0x08 |                       --void-- |         24
0x20 |                 gsm_uart.swb16 |         32
0x40 |                 gps_uart.swb16 |         32
---------------------------------------------------------
[INFO] : port gsm_uart.uart.dsr_pad_i is void. It will be set to '0'
[INFO] : port gsm_uart.uart.ri_pad_i is void. It will be set to '1'
[INFO] : port gsm_uart.uart.dcd_pad_i is void. It will be set to '0'
[INFO] : port gps_uart.uart.cts_pad_i is void. It will be set to '0'
[INFO] : port gps_uart.uart.dsr_pad_i is void. It will be set to '0'
[INFO] : port gps_uart.uart.ri_pad_i is void. It will be set to '1'
[INFO] : port gps_uart.uart.dcd_pad_i is void. It will be set to '0'

Top generated with name : top_apf51_gsm_gps_firmware.vhd
POD:apf51_gsm_gps_firmware> $ synthesis.selecttoolchain ise
POD:apf51_gsm_gps_firmware> $ synthesis.generateproject
Make directory for imx51_wb16_wrapper
Make directory for rstgen_syscon
Make directory for irq_mngr
Make directory for uart16750
Make directory for imx51_wb16_wrapper00_mwb16
Make directory for rstgen_syscon00_candroutput

Constraint file generated with name : firmware/pod_scripts/apf51_gsm_gps_firmware/synthesis/apf51_gsm_gps_firmware.ucf

TCL script generated with name : apf51_gsm_gps_firmware.tcl

POD:apf51_gsm_gps_firmware> $ driver.selecttoolchain armadeus

Ce script a permit de générer tout le projet qui est maintenant disponible pour ISE. Pour simplifier son utilisation pod a généré un script tcl firmware/pod_scripts/apf51_gsm_gps_firmware/synthesis/apf51_gsm_gps_firmware.tcl que l’on peut «sourcer» dans la console tcl d’ISE pour générer le bitstream.

Cependant nous devons quand même lancer l’énorme programme qu’est ISE Webpack pour lancer le script. Ce qui est réellement très fastidieux. Jusqu’ici nous étions contraint de le faire à cause d’un bug d’ISE qui empêchait de charger le fichier de contraintes *.ucf correctement.

Ce bug a été patché dans la dernière release de POD et nous pouvons maintenant générer le bitstream en ligne de commande directement. Il suffit pour cela de taper les commandes suivantes :


$ cd apf51_gsm_gps_firmware/synthesis/
# pour l'architecture 32bits, sinon c'est settings64.sh
$ source ISE/14.6/ISE_DS/settings32.sh
$ xtclsh apf51_gsm_gps_firmware.tcl 

Le script prend un certain temps à s’exécuter. Une fois terminé nous retrouvons le bitstream dans le répertoire objs/ du projet :


$ ls ../objs/*.bin
../objs/top_apf51_gsm_gps_firmware.bin

Fichier que l’on peut ensuite télécharger directement dans le fpga avec la méthode de son choix.

Publié dans embarqué, informatique | Laisser un commentaire