Empty

Total: 0,00 €

h:D

Planet tetalab-toulouse

  • Wednesday, February 12, 2014 - 23:44
    Hardware Freedom Day 2014 : 15 mars !

    Hfd 470x60

    Hfd Banner

    Deuxième Journée Internationale du Matériel Libre (ou Open-Source HardWare (OSHW)) le 15 mars 2014 ! Nous présenterons au lab les imprimantes 3D Ultimaker et RepRap et quelques boards Arduino ou autres montages originaux et "faits-main" (10h - 20h à Mix-Art Myrys).

  • Monday, January 6, 2014 - 18:37
    Décodage d'un cadran à impulsions type S63

     S63gris

    Un téléphone de ce type, ça me fais rêver !
    Je passe encore de longues minutes ( pas des heures, faut pas exagérer..) à tourner le cadran en m’extasiant devant la mécanique du régulateur centrifuge, du codeur à rocher, de la simplicité du principe de numérotation décimale. Et je pense également à une poubelle que j'ai vue dans ma jeunesse; une armoire de central téléphonique électro-mécanique !!!! Imaginez, monté sur des panneaux, des centaines d’aiguilleurs électro-mécaniques à 10 positions, qui avancent à chaque impulsion. Des tonnes de ferraille qui aujourd'hui tiennent dans un seul composant de silicium... Je rêve, je vous dis!
    Bref..... On peux pas jeter un truc pareil ! Je vous propose de nous intéresser à la partie numérotation, pour en faire ce que vous voulez. A partir de Arduino, bien sûr!
    Voilà le schéma d'un poste S63 d'origine, complet. Nous allons nous intéresser uniquement à la partie cadran, le rond en haut et à gauche. Ce que le schéma montre mal, c'est que il y a 2 contacts indépendants. Un premier, avec des câbles bleu et blanc-bleu, n'est ouvert que lorsque le cadran est au repose. Il court-circuite micro et écouteur pour éviter entre autres des générer des bruits désagréables pour l'utilisateur lors de la rotation.

    Schéma Original S63Détail Cadran

    Le second, celui qui nous intéresse, en rouge et blanc-rouge, s'ouvre à chaque impulsion. Il y a 1 impulsion pour le 1 et 10 pour le 0. Chez nous. Dans d'autres pays, ça peux varier. Méfiez-vous des importations.
    "Et que peux-on en faire ? " me diriez-vous ! "Ce que bon vous semble, dans la limite de la décence" vous réponds-je.
    Par contre, je peux vous dire comment le faire; avec une Arduino, comme d'habitude, ou d'un AtTiny (mais il faut supprimer les commentaires bien sûr), car l'énorme avantage de ce truc, c'est de n'exiger qu'un seul pin de libre, contrairement à un clavier matriciel. En plus, c'est bien plus classe.
    Donc le programme;
    ------------------------------------------------------------------------------------------------------------------------------------------------------

    /* Décodage pour cadran à impulsion type S63
    Philippe Martorell
    le 6/01/2014
    */
    const int PinLecture = 2 ; // Entrée lecture impulsions
    const boolean Bavard = 1 ; // Génére les commentaires sur le port série
    const boolean Debug = 1 ; // Génére les mesures de temps
    /*
    Pour compiler avec un AtTiny,
    il suffit de mettre à "0" les deux constantes précédentes
    Pensez bien que l'envoi sur le port série prend du temps.
    C'est importatnt dans les mesures des impulsion.
    */
    boolean PlusDuneFois = 1 ; // pour éviter la répétition de commentaire
    unsigned long TempsImpulsionMin = 50 ;
    unsigned long TempsImpulsionMax = 90 ;
    unsigned long TempsInterImpulsionMin = 25 ;
    unsigned long TempsInterImpulsionMax = 50 ;
    unsigned long TempsInterNumero = 200 ;
    unsigned long rebonds = 2 ;
    unsigned long duree = 0;
    unsigned long temps = 0 ;
    int Numero = 0 ;
    
    void setup()
    {
     if (Debug || Bavard) // Si les deux à 0, on initialise pas
      {
       Serial.begin(115200);
       Serial.println ("Initialisation Serie") ;
      }
     pinMode(PinLecture , INPUT);
     digitalWrite(PinLecture , HIGH);
    }
    void loop()
    {
     Numero = 0 ;
     delay ( rebonds );
     while ( !digitalRead(PinLecture) )
      {
       if ( PlusDuneFois == 1 && Bavard == 1 )
       {
        Serial.println ("Attente") ;
        PlusDuneFois = 0 ;
       }
      }
     temps = millis() ;
     if (Debug == 1 )
     {
      debug();
     }
     PlusDuneFois = 1 ;
     delay ( rebonds );
     int Numero = 0 ;
     numerotation () ;
     delay ( rebonds );
    }
    
    void numerotation()
    {
     while (1) //Boucle infinie, on ne sort qu'avec les "return"
     {
      if ( Bavard == 1 )
      {
       Serial.println ("Entree impulsion") ;
      }
      while ( digitalRead(PinLecture) )
      {
       duree = millis() - temps ;
       if ( duree > TempsImpulsionMax )
       {
        if ( Bavard == 1 )
        {
         Serial.println ("Impulsion trop longue") ;
        }
        debug();
        return ;
       }
      }
      if (millis() - temps < TempsImpulsionMin )
      {
       if ( Bavard == 1 )
       {
        Serial.println ("Impulsion trop courte") ;
       }
       debug();
       return ;
      }
      delay ( rebonds );
      if ( Bavard == 1 )
      {
       Serial.println ("Sortie impulsion") ;
      }
      debug();
      Numero ++ ;
      if ( Bavard == 1 )
      {
       Serial.print ("Increment numero ; ") ;
       Serial.println (Numero) ;
      }
      temps = millis() ;
      delay ( rebonds );
      if ( Bavard == 1 )
      {
       Serial.println ("Entree inter-impulsion") ;
      }
      debug();
      while( !digitalRead(PinLecture) )
      {
       duree = millis() - temps ;
       if ( duree > TempsInterImpulsionMax )
       {
        if ( Bavard == 1 )
        {
         Serial.println ("Inter-impulsions trop longue; action") ;
        }
       debug();
      Action () ;
      return ;
       }
      }
     if ( Bavard == 1 )
     {
      Serial.println ("Sortie inter-impulsion") ;
     }
     if ( duree < TempsInterImpulsionMin )
     {
      if ( Bavard == 1 )
      {
       Serial.println ("Inter-impulsion trop courte") ;
      }
      debug();
      return ;
     }
     debug();
     temps = millis() ;
     delay ( rebonds );
     }
    }
    void debug ()
    {
    if (Debug == 1 )
     {
      Serial.print ("Lecture ; ") ;
      Serial.print (digitalRead(PinLecture)) ;
      Serial.print (" duree = ") ;
      Serial.println (millis() - temps) ;
     }
     delay(2) ; // petite tempo par principe
    }
    
    void Action ()
    {
    if ( Bavard == 1 )
     {
      Serial.print ("Action avec numero ; ") ;
      Serial.println (Numero) ;
     }
    // Placez ici l'action à faire avec la variable "Numéro"
    Numero = 0 ;
    }
    

    -------------------------------------------------------------------------------------------------------------------------------------------------------
    Bon, j'ai un peu honte, il traîne des inélégant "return..", mais je n'ai pas su comment m'en passer.

  • Thursday, October 10, 2013 - 10:53
    off

    Pcb

    Nomenclature

    Circuit imprimé Pcb
    microcontrôleur ATTINY85V10PU IC1 Attiny85 2
    support pour CI DIL 8 IC1 8pinsocket 2
    oscillateur 8 MHz X1 X1
    condensateur 220 µF C2 Condo220
    condensateur 0,1 µF C1 Condo2
    2 x résistances 10 kOhm R3, R2 10k
    2 x résistances 1 kOhm R1, R5 R1
    2 x LED infra rouge type 333-A LED2, LED3 Ir 333 A 3
    2 x LED infra rouge type 333C/H0/L10 LED1, LED4 Ir333 C^H0^L10 3
    LED verte 3mmgreenled 2
    Transistor PNP PN2907 Q5 2907 T 2
    Transistors NPN PN2222 Q1, Q2, Q3, Q4 2222 2
    connecteur ISP 6 broches ISP 6pinbox T
    bouton poussoir S1 6mmswitch
    Porte-batterie 2 x AA borne + et - 2aabatterypack

    Principe de fonctionnement

    Pcb2

    Le principe de fonctionnement du OFF est basé sur le TV-B-GONE de Mitch Altman plus d'info ici => http://learn.adafruit.com/tv-b-gone-kit

    Le principe est le suivant : les codes infrarouges de toutes (ou presque...) les télévisions sont stockés dans le microcontrôleur ATTINY85. Quand on appuie sur le bouton poussoir, le montage émet ces codes grâces aux 4 diodes infrarouges. La portée est de 40 m environ et le temps d'émission de tous les codes stockés est de 1m30 environ.

    Ce montage est composé de 3 grands blocs fonctionnels :

    1. Électronique programmable :

    Dès que les montages électroniques doivent accomplir des taches complexes, il est souhaitable de mettre en œuvre un microcontrôleur (un tout peut ordinateur avec un processeur, de la mémoire vive et un minuscule espace de stockage). Dans notre cas, ce microcontrôleur est un ATTINY85. Il est associé à un oscillateur (appelé également quartz) de 8 MHz afin d’obtenir un fonctionnement stable et précis. Enfin le connecteur 6 broches permet de programmer ce microcontrôleur

    2. Amplification :

    Le microcontrôleur n’est pas capable d’alimenter directement les diodes infrarouges. Dans ce cas on utilise en électronique des transistors. Le montage OFF utilise 2 étages de ces composants : Un étage primaire (2N2907) commandé par le microcontrôleur et un étage secondaire (4 x 2N2222) commandé par l'étage primaire

    3. Émission infrarouge

    L'émission des codes infrarouges est assuré par 4 LEDs infrarouges afin d’obtenir une grande portée.

    Guide de montage

    Composant coté OFF :

    Souder les résistances R2, R3 et R5
    Attention ! NE PAS SOUDER R1 AVANT D’AVOIR FAIT LA PROGRAMMATION DE L’ATTINY85 !!!!

    Souder le support de circuit intégré ; il y a une encoche sur ce support qui doit être aligné avec le dessin correspondant sur le circuit imprimé.

    Souder le condensateur C1

    Souder l'oscillateur X1

    Souder le bouton S1

    Souder la LED verte : la patte la plus longue doit être insérée dans le trou marqué d’un “+”

    Souder les LEDs IR (LED 1, LED 2, LED 3 et LED 4)
    Il faut que la patte la plus longue soit soudée à plat sur la pastille marqué +
    La patte la plus courte doit être soudée sur la pastille marquée “LED XX” (de l’autre coté…)

    Souder le transistor Q5 : il faut légèrement écarter les pattes extérieures pour que le composant entre en place.

    Souder les transistors Q1, Q2, Q3, Q4 :
    Il faut légèrement plier les pattes centrales de ces composants pour bien les faire entrer dans leurs emplacements…

    Souder le connecteur 6 broches : il y a une encoche sur le connecteur qui doit être aligné avec celle du dessin correspondant sur le circuit imprimé.

    Souder le condensateur C2 : attention ce composant est polarisé, il faut que la patte qui est repérée par une bande “-” soit dans le trou qui n’est pas marqué d’un “+” :-)

    Programmer le microcontrôleur

    les commandes pour AVRDUDE avec comme programmeur un arduino + ARDUINO as ISP sont : 

    avrdude -P COM10 -b 19200 -c avrisp -p attiny85 -U lfuse:w:0xfe:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m
    avrdude -P COM10 -b 19200 -c avrisp -p attiny85 -U flash:w:tvbgone.hex

    Le fichier hex peut être trouvé ici => http://learn.adafruit.com/system/assets/assets/000/010/188/original/firmwarev12.zip

    Finir de souder

    Souder la résistance R1

    Tester

  • Thursday, October 10, 2013 - 10:52
    booster

    Pcb

    Le montage Booster est basé sur le design du joule thief.

    Nomenclature

    Circuit imprimé                                       Pcb
    Transistor BC337 T1 To92 2
    Résistance 1 kOhm R1 R1
    Bouton poussoir 6mmswitch
    Ferrite Ferrite
    LED blanche LED Led3
    1m de fil orange
    1m de fil gris
    1 support de pile Porte Pile

    Principe

    Le principe est le suivant :

    Schema2

    Pour permettre à la LED de s’allumer avec une bonne intensité, de l’énergie est accumulée dans la bobine (constituée par la ferrite et les fils de couleur). Une fois que la bobine a accumulé assez d’énergie, le couple LED + transistor décharge l’énergie stockée et la LED transforme cette énergie en lumière. Une fois ce cycle terminé, la bobine se recharge en énergie, recommençant ainsi un nouveau cycle. Ce fonctionnement est tellement rapide (plus de 100 fois par seconde) qu’il est invisible pour l’œil humain…

    Du coup la led blanche qui fonctionne avec un tension de 3,6 V classiquement peut être alimenté avec une pile de 1,5 V voir une pile 1,5 décharge (jusqu’à 0,3 V environ)

    Guide de montage

    1. Bobinage de la ferrite :

    Le but est de réaliser un bobinage de 20 spires (ou tours) pour chaque couleur de fil, il faut que le debut d'une bobine soit commun avec la fin de l'autre bibine (comme repéré par les point sur le schéma)

    2. Montage et soudure des composants du coté “Booster”: 

    a. le petit bouton poussoir, Il se situe sous le logo Tetalab
    b. la LED blanche : la patte la plus longue va dans le trou marqué d’un “+”. Ne pas enfoncer complètement la LED avant de la souder, il faut pouvoir tordre ses pattes pour l’orienter dans l’axe du montage

    3. Montage et soudure des composants du coté “Novela 2013”

    a. Le transistor : il faut légèrement plier la patte centrale de ce composant pour bien le faire entrer dans son emplacement.
    b. La résistance : dans le sens qu'il te plaira !
    c. Le support de pile : attention à la polarité

  • Friday, May 31, 2013 - 10:16
    THSF.NET

    THSF 2013, C'est fini

    RE(Merci) A Toutes et Tous !!! A l'année prochaine !

    Partagez vos photos et vidéos en rajoutant un lien sur ce pad: pad.tetalab.org/p/thsf-2013-medias

    Venez prendre un verre jeudi 13 juin pour la sortie du numéro 26 du magazine Multiprise dans lequel un article est consacré au THSF.

    Multiprise

    >>> Prochains RDV Tetalab : Tous les Mercredi Soir et le reste de la semaine !

    Qui ? Ouvert à tous le mercredi (apporter des bières ou autres goodies à partager) et aux membres le reste de la semaine. Inscriptions ouvertes, RTFM Tetalab : rtfm.tetalab.org.

    Quoi ? Au programme : 3D Print (initiation, discussions), Arduino & Servos, Oscillo, Processing, Firefox OS, LeapMotion, Eagle, Prism, PureData, Raspberry Pi, Le Bit et le Couteau, Retrogaming, OHM2013, La Novela, neutralité du net, Hadopi, Wikileaks, ...

    Pourquoi ? Pour apprendre, partager, se rencontrer, faire connaissance avec Tetaneutral.net, avancer sur des projets, ...

    Quand ? Tous les mercredi soirs à partir de 21h, et Samedi 15 Juin 2013 à partir de 10h.

    Comment ? Apportez vos milliards de neuronnes, un laptop, des croissants, un smile.

    Où ? Au container à Mix'Art Myrys , 12 rue Ferdinand Lassalle, 31200 Toulouse

  • Tuesday, April 23, 2013 - 20:34
    Compte-rendu de l'Hardware Freedom Day 2013

    Le samedi 20 avril 2013, nous avons reçu une cinquantaine de personnes à l'occasion du Premier HFDAY
    . De quoi faire une étincelle de plus en France au sujet de l'Open-Source Hardware (Matériel Libre).

    P1020408P1020411P1020412

    P1020413P1020415P1020416

    Un grand Merci à tous ceux qui sont venu ou ont soutenu la journée en relayant l'information. tTh, Philippe, Léon (le cyborg), EricDuino (merci pour les photos ci-dessous d'ailleurs), Seb pour la RepRap blanche, Mix'Art-Myrys pour l'espace et le soutien moral.

    P1020410RepRap-France.com est passé faire un tour. Merci pour les discussions sur les business-models et le futur de l'impression 3D. Franck à droite, à monté avec Guilhem (pas là) une des premières entreprises françaises basée sur les imprimantes "open hardware" REPRAP.

    Img 0131Img 0133bImg 0134

    Img 0135Img 0138Img 0140

    A l'année prochaine pour une deuxième édition bien mieux préparée ! =)

    -David Venancio / [340]metabaron

  • Wednesday, April 17, 2013 - 16:49
    Première Journée Internationale du Matériel Libre / Open-Source Hardware

    Hfd Banner2 Oshw Logo 200 Px

    A l'initiative de la Digital Freedom Foundation, 66 Hackerspaces organisent une journée portes-ouvertes le Samedi 20 Avril 2013 sur le Matériel Libre ou Open-Source Hardware, concept novateur qui ouvre à tous et toutes, la possibilité de construire librement ses propres outils.

    Le Tetalab soutenu par Mix'Art-Myrys présentera de 10h à 18h plusieurs imprimantes 3D RepRap, des vidéo projections et documents sur le sujet. Curieux en tous genres, passionnés d'Open-Source, bricoleurs et bricoleuses hi-tech, ou low-tech, vous êtes tous et toutes bienvenues.

    Hfd A4 Fr

    Hfd 470x60

  • Thursday, January 24, 2013 - 13:03
    THSF 2013 - Appel à Participation - Call For Participation
    
    ========== THSF 2013 ==========
    ======== Appel à Projet =======
    =========== Tetalab ===========
    
    https://pad.tetalab.org/p/thsf-2013-ideas
    Canal de discussion : #tetalab sur irc.freenode.net
    
    THEME : >>> Re(code) Re(art) Re(boot) Re(mix) Re(verse) <<<
    
    
    # À propos du THSF
    
    Depuis 2010, la Toulouse Hacker Space Factory est une rencontre annuelle autour de conférences et ateliers.
    L'objectif est de créer des rencontres entre hackers, makers, artistes et visiteurs curieux d'apprendre, tester ou tout simplement s'amuser avec la technologie.
    Ce mouvement initié au /tmp/lab à Paris se poursuit depuis 3 éditions à Toulouse
    C'est un événement ouvert et tout le monde est le bienvenu, sans barrière financière.
    Plus que la geekitude, on attend des esprits ouverts, des gens curieux, , le partage des savoirs et de la technologie. 
    
    # 17-24 Mai 2013 - Ateliers + Rencontre entre les participants + Barbecues.
    # 24-26 Mai 2013 - Ouverture au Public avec Ateliers + Conférences + Performances
    
    # Sujets
    
    RE(utilisation) de la technologie
    Minitel / Arduino / imprimante 3D
    Old goodies & Big Irons
    Matériel et Logiciel libre
    Neutralité du Net
    DIY (Faites-le vous même)
    Internet/Media/Politique
    Vidéo / Art numérique
    Soudure et planches à pain
    GSM Opensource
    Radio logicielle (SDR)
    RFID
    Porcelaine, céramiques, émaux, l'union de la terre et du feu
    Lockpicking
    Retrogaming
    Streaming
    Hackerspaces
    Fablab
    Pads collaboratifs
    Le Bit et le Couteau
    Radio en ligne
    Performances
    Serveur Internet «collectivisé»
    Supercalculateurs Cray
    Ouverts à d'autres propositions
    
    # Proposer un projet
    
    Inscrivez-vous à la mailing-list THSF 2013 : http://lists.tetalab.org/listinfo/thsf-2013
    Soumission par mail: thsf-2013@lists.tetalab.org
    
    # Défraiement des artistes/conférenciers
    
    Hébergement à Toulouse,
    Remboursement du voyage dans la limite des possibles,
    Beaucoup de respect, de la bonne bouffe et du data love 
    
    # Deadline
    
    Nous devons préparer un dossier pour la fin du mois de janvier, vous aurez plus de chance d'être retenu si vous proposez votre projet avant cette date.
    
    [ MODELE DE REPONSE A L'APPEL A PROJETS - Conférences ]
    
    *** Informations Générales conférences:
    * Nom ou pseudo
    * Votre nom ou votre pseudo (IRC/Jabber/...)
    * Démo [Oui/Non]
    * Nombre de lignes de code écrites dans votre projet ?
    * Besoin d'aide pour votre visa? [Oui/Non]
    * Résumé
    * Biographie
    * Email
    * nick IRC sur freenode
    * Adresse
    * Site internet
    * Téléphone
    * Nom de l'entreprise ou Indépendant ?
    * Besoins additionnels: Internet ? Autre ?
    
    *** Format Conférence:
    * Titre de la présentation
    * Résumé
    Veuillez choisir le format de votre conférence:
    [ ] Standard (30min+10min Q&Réponses)
      ou:
    [ ] Long (80min+10min Q&Réponses)
    
    *** Pièces jointes:
    Précisez si votre conférence nécessite :
    * Outils     [Oui/Non]
    * Slides   [Oui/Non]
    
    *** Format Artistique: performance / concert / ...
    * Dossier décrivant la démarche artistique (Inclure vidéo ou photos représentatives du travail)
    * Type d'intervention
    * Veuillez fournir votre fiche technique en pièce jointe
    
    

    
    ========== THSF 2013 ==========
    === Call For Participations ===
    =========== Tetalab ===========
    
    THEME >>> Re(code) Re(art) Re(boot) Re(mix) Re(verse) <<<
    
    
    # About THSF
    
    Toulouse Hacker Space Factory is an annual meeting started in 2010 around conferences and workshops.
    The goal is to create encounters between hackers, makers and curious people in order to learn, test or simply have fun with technologies.
    /tmp/lab in Paris initiated the movement and we wanted to bring such an event to southern France.
    It is an open event and everyone is welcome without financial barrier.
    More than leetness we expect open minds, sharing, technology for nothing, technology for something.
    
    # When
    
    # 17-24 May 2013 - Workshops and meetings between participants
    # 24-26 May 2013 - Public event with Workshops + Confs + Exhibits
    
    
    # Topics
    
    RE(use) of Technology
    Minitel / Arduino / 3D Printing 
    Oldies but goodies
    Open Hardware and Open Source Software
    Network Neutrality by doing it
    DIY
    Internet Media Politics
    Video / Numeric Art
    Soldering
    Opensource GSM
    RFID
    Lockpicking
    Retrogaming
    Streaming
    Hackerspaces
    Fablab
    Collaborative edition
    Le Bit et le Couteau
    Online radio
    Open to other propositions
    
    # Submitting Content
    
    Subscribe to THSF 2013 mailing-list: http://lists.tetalab.org/listinfo/thsf-2013
    Submit you content by mail: thsf-2013@lists.tetalab.org
    
    # Speaker benefits:
    
    Accommodation in Toulouse,
    travel reimbursement,
    Much respect and love.
    
    # Deadline
    
    We'll have to prepare 'something' for the end of january, so you'll have more chance to be included if you submit your content before this date.
    
    -----8X---------------8X-----------8X----------------
                  [ CFP ANSWER TEMPLATE ]
    
    
    *** General information:
    * Speakers name or alias (IRC/Jabber/...)
    * Demo [Y/N]
    * Number of lines of code written during your project ?
    * I need help with visas [Y/N]
    * Presentation Title
    * Abstract
    * Biography
    * Email
    * Website
    * Address
    * Phone
    * Company (name) or Independent?
    * additional requirements: Internet? Others?
    
    *** Talk Format:
    Please chose your talk format:
    [ ] Standard (30min+10min Q&A)
      or:
    [ ] Extended (80min+10min Q&A)
    
    *** Attachments:
    Specify if your submission contains any of the following information:
    * Tool     [Y/N]
    * Slides   [Y/N]
    
    *** Art performance, concert format :
    * Artistical intention abstract (video, picture, texte or website)
    * Type of performance / concert
    * Technical requirements
    
    
  • Thursday, January 17, 2013 - 14:19
    Petit POV : update 2

    Apres quelques remarques, j'ai effectué 4 modifications dans le sketch du montage petit POV

    1.  1 Correction des boucles for qui, à cause d'une erreur, affichait a la fin des message un point ou un caractère bizarre !!! (cf photo ci dessous)
      Rulez
    2. 2 Utilisation de Progmem http://arduino.cc/en/Reference/PROGMEM
        afin d'économiser de la RAM et de faciliter un futur portage sur ATTINY85.... à suivre !!
    3. 3 Utilisation d'un fichier font7x5.h pour facilité la lecture du code (et en plus le détail de la police une fois que c'est bon, on s'en fout un peu....)
    4. 4 Utilisation de for pour les init et alloff histoire de faire un peu plus small...

    Voici la nouvelle version Pov05.zip

    En bonus le code est passé de 4120 bytes à 2838 bytes. Voila qui va aider pour le futur portage sur ATTINY !!!

    Voila... A plus

  • Wednesday, January 9, 2013 - 13:26
    Le Bit et le Couteau : Compilation 2012

    Tous les génériques et les sons de 2012 du Bit et du Couteau, l'émission du Tetalab sur Canal Sud le premier mercredi du mois à 13h sont disponible sur:

    http://static.tetalab.org/le_bit_et_le_couteau/compilation_2012/

    Bonne écoute!

  • Tuesday, January 8, 2013 - 13:47
    Librairie IR NEC pour ATTINY85

    1 Introduction

    Le but de cette adaptation est de pouvoir utiliser la librairie IR sur des Attiny85.
    La base de cette librairie est le fruit du travail de Ken Shirriff  (http://www.arcfn.com/2009/08/multi-protocol-infrared-remote-library.html)
    Un portage a été fait par Nick Gammon sur le forum Arduino (http://arduino.cc/forum/index.php?topic=91488.msg687101#msg687101) . Il a fait la partie la plus difficile c'est-à-dire adapter la lib de Ken Shirriff en fonction des caractéristiques des ATTINY. En effet, il y a de nombreuses différences entre ATMEGA et ATTINY comme les timers et d’autres trucs encore auxquels je ne comprends pas grand-chose. Quoi qu’il en soit la librairie adapté est disponible ici http://gammon.com.au/Arduino/IRremote_Attiny.zip

    Le problème de ce portage c’est que la librairie en l’état est « difficile » à utiliser. En effet, dans l’exemple donnée par Nick Gammon, il est impossible d’utiliser un « digital.write » c’est trop consommateur de mémoire… C’est dire si cela va être difficile de faire quelque chose de simple…

    J’ai donc décidé de ne pas me prendre la tête et de faire un grand ménage pour libérer des ressources sur les ATTINY.
    2 axes de nettoyages :
    1 – Séparation en deux librairies une pour l’émission et l’autre pour la réception
    2 – Gestion du protocole NEC uniquement
    Voila la marche à suivre pour installer et utiliser la (les) librairie(s) pour Attiny85

    2 Matériel utilisé

    3 Préparation

    3-1 Installation des libraires IRTinyTR et IRTinyRX

    En premier lieu télécharger la librairie modifié ici

    Cette librairie s’installe dans le répertoire « libraries » du sketchbook arduino comme toutes les autres lib.
    A la racine du répertoire « libraries » il doit y avoir donc deux répertoires : IRTinyTX et IRTinyRX

    2 Install Lib

    Dans la capture d’écran ci-dessus le skectchbook s’appelle « ardval »

    3-2 Ajouter les Attiny dans les hardware supporté par l’IDE arduino

    Pour ce faire, rien de plus simple il suffit de telecharger le fichier arduino-tiny-0100-0015.zip ici =>  http://code.google.com/p/arduino-tiny/downloads/list

    Ensuite localiser le repertoire hardware de votre sketchbook et dezipper le contenu de l’archive
    3 Install Lib

    4 Install Lib

    Ça doit ressembler à ça. (pour que cela fonctionne, il faut redémarrer l’IDE Arduino)

    3-3 Uploder le code arduinoAsIsp dans un Arduino (Duemilanove dans mon cas)

    5 Arduinoas Isp

    Sélection bonne board et bon programmateur

    6 Arduinoas Isp

    7 Arduinoas Isp

    Utiliser l’Arduino avec le sketch Arduino as ISP pour programmer un ATTINYPour la partie hardware, je vous renvoie sur le site du MIT qui décrit très bien cette partie : http://hlt.media.mit.edu/?p=1695

    Par contre n’utilisez pas ATtiny zip (from this GitHub repository https://github.com/damellis/attiny/archive/master.zip)

    3-4 Modifier le bootolader de l’ATTINY

    Une fois le hardware décrit plus haut en place, il suffit de sélectionner la board ATtiny85 @ 8 Mhz (internal oscillator ; BOD disabled) et le programmer Arduino as ISP. Cette manip est nécessaire, la lib ne fonctionnant qu’a une fréquence d’horloge de 8 Mhz

    9 Burnbootloader

    10 Burnbootloader

    Enfin faire un « Burn Bootloader » (c’est assez rapide en général)

    11 Burnbootloader

    4 - Montage pour les deux sktechs de demo

    4 - 1 montage basique : sketch SimpleIRTinyTX.ino et SimpleIRTinyRX.ino

    Partie TX

    Ce montage est composé donc de

    • 1 ATTINY 85 (@ 8 Mhz)
    • 1 LED IR (BL-L513-IR)
    • 1 bouton poussoir avec sa résistance de pull up
    • Une pile
    • Un switch (ON/OFF)

    13 Simple Tx

    Partie RX

    Ce montage est composé donc de

    • 1 ATTINY 85 (@ 8 Mhz)
    • 1 récepteur IR TSOP341
    • 1 led basique avec une resistance
    • Une pile
    • Un switch (ON/OFF)

    12 Simple Rx

    Le fonctionnement des deux montages est simple : Si on appuie sur le outon de la partie TX, la led s’allume sinon elle s’éteint…

    NEC IR with Attiny 85 from phil teta on Vimeo.

    4-2 montage avancé : sketch FourLedsIRTinyRX.ino et AnalogIRtinyTX.ino

    Partie TX

    • 1 ATTINY 85 (@ 8 Mhz)
    • 1 LED IR (BL-L513-IR)
    • 1 bouton poussoir avec sa résistance de pull up
    • 1 potar 40 kohms (valeur sans importance du moment que c’est supérieur à 10 k…)
    • Une pile
    • Un switch (ON/OFF)

    14 Tx

    Parie RX

    • 1 ATTINY 85 (@ 8 Mhz)
    • 1 récepteur IR TSOP341
    • 4 leds basiques avec résistance
    • Une pile
    • Un switch (ON/OFF)

    15 Rx

    Le fonctionnement de ces montages est le suivant

    En fonction de la position du potar, un code IR est émis. Il y a 8 codes : tout éteint, Led 1 on, Led1 + Led2 on, Led2 on, Led2 + led3 on, Led3 on, Led 3 + Led 4 on, Led4 on.
    Si on appuis sur le bouton poussoir, un code IR est transmis pour allumer toutes les leds…

    NEC IR with Attiny 85 (2) from phil teta on Vimeo.

  • Thursday, November 22, 2012 - 12:08
    Prototypage rapide sur Android avec Processing

    En m'intéressant au prototypage rapide d'application sur android, et j'ai trouvé une solution simple avec Processing (ça a l'air assez simple en Java aussi).

    http://wiki.processing.org/w/Android

    Sur Mac, avec la device Android pluggée en USB et le mode USB debug activé:

    1. Télécharger la dernière version de Processing (2.0b6) : http://processing.org/download/
    2. 2. Télécharger le SDK Android et le placer dans /Applications
    3. 3. Exécuter /Applications/android-sdk-macosx/tools/android et installer: Tools, Android 4.2 (API 17), Android 2.3.3 (API 10)
    4. 4. Lancer Processing
    5. 5. Sélection "Android" dans Processing, disponible en haut à droite dela fenêtre en appuyant sur "Java"
    6. 6. Une nouvelle fenêtre s'ouvre, charger un example (dispo dans le menu "File")
    7. 7. Dans le menu "Sketch", compiler et exécuter l'app en choisissant "Run on Device"

    Hier, les exemples (Particle, compass, ...) ont fonctionné de suite sans aucune modification.

    Le wiki est rempli de bonne info - http://wiki.processing.org/w/Android - et une large contribution a été apportée par la librairie Ketai: https://code.google.com/p/ketai/

    Un bouquin est aussi dispo sur PragProg, avec une introduction à Ketai et 20 projets basés dessus: http://pragprog.com/book/dsproc/rapid-android-development

  • Thursday, November 22, 2012 - 08:30
    Lavage de LED en famille

    Résumé de la soirée du 21/11/2012 au Tetalab.

    Que se passe t'il quand des geek rencontrent une machine à laver? Il y mettent des led dedans...

    Machinealaver

    Lavage:

    Des leds dans une machine à laver - lavage from rataflo on Vimeo.

    Vidange:

    Des leds dans une machine à laver - vidange from rataflo on Vimeo.

    Essorage :

    Des leds dans une machine à laver - rincage from rataflo on Vimeo.

    Et après y'en a qui s'embêtent à monter des systèmes de POV de la mort qui tue alors qu'il n'y as besoin que d'une machine à laver.

    La POV (Persistence Of Vision ou Persistance retinienne) permet de faire ce genre de choses :

  • Wednesday, November 14, 2012 - 22:41
    Le tetalab n'est pas mort

    Hé oui nous consommons encore des biéres le mercredi à partir de 21h à Mixart Myrys.

    Que c'est il passé depuis Mars:

    THSF :

    http://thsf.tetalab.org/

    Construction d'un dôme géodésique.

    Émission radiophonique mensuelle "Le bit et le couteau". Toutes les émissions sont dispo la.

    Novela avec Add it :

    On a rangé le container!! Nous pouvons nous asseoir.

    On a cassé l'Ultimaker.

    Festival du film Grolandais avec install Minitel.

    Image

    On a plein de raspberry pi. Brice allume des led avec.

    Thierry retrouve les joies du TRS80

  • Monday, March 5, 2012 - 10:09
    Petit POV : update

    Bonjour,

    voici un petit update pour ce projet

    Maintenant, il n'y a plus besoin de définir les durées, elles sont automatiquement calculées.
    Il est donc inutile de modifier les variables ci-dessous (présentes dans la précédente version) en fonction de la taille du message

    #define delinterchar 700 //delay between 2 char
    #define delinterpoint 340 //delay between 2 points of a char

    En pratique, il suffit juste de faire un mouvement régulier pour que ça marche

    Le code :
    Pov04.pde

    Sinon la prochaine étape c'est de faire la même chose avec un ATTINY85...

  • Monday, January 2, 2012 - 16:08
    28c3 : Sélection des confs vues

    Top 5

    How governments have tried to block Tor

    Beaucoup de détails techniques et surtout une approche très pratique des
    concepts philosophiques et politiques de la liberté du net.

    Building a Distributed Satellite Ground Station Network - A Call To Arms

    Superbe intro de Nick Farr qui explique pourquoi nous avons besoin de ce
    genre de projet.

    The coming war on general computation

    Comparaison des batailles sur les libertés informatiques à des boss de
    jeux-vidéo, le copyright n'était qu'un boss de premier niveau.

    Defending mobile network

    Toujours très bonne présentation de la sécurité gsm, abordable avec
    beaucoup d'info intéressantes.

    Geek and depression panel

    Sujet pas facile, please reach out.

    Lightning-Talks

    Parce qu'il y a plusieurs heures de LT, et que parmi toutes certaines
    ressortent du lot, la manière la plus facile que j'ai trouvée pour les
    repérer est d'installer l'extension YTShowRating sous Chrome
    -https://chrome.google.com/webstore/detail/olohkebleofongajeodnhideeiapohgi-
    puis de naviguer parmi les talks en suivant les ratings sur les videos
    http://www.youtube.com/watch?v=dpzSByg-xhk

    Day 1

    On the Secret Love Affair Between Dictators and Western Technology
    Companies

    Ouverture du 28c3, sur fond de wikileaks avec ses récents spy-files. Des
    entreprises implantées dans des pays occidentaux développent des outils
    pour des pays sous dictatures. Ces produits, une fois bien testés,
    peuvent ensuite être revendus dans des pays plus démocratiques. Quel est
    le lien entre les entreprises qui développent ces outils et le fait
    qu'elles se trouvent pour la plupart dans des pays dit démocratiques?
    Les outils de surveillance doivent-ils être utilisés pour surveillance
    ces entreprises?

    C'est aussi une opportunité pour les nouveaux groupes hactivistes (PP,
    telecomix, ...) de développer leurs idées afin de proposer une nouvelle
    politique étrangère.

    The Atari 2600 Video Computer System: The Ultimate Talk

    Très bonne description hadware de l'Atari 2600 et des différentes
    techniques pour venir coder dessus en profitant de la scène homebrew qui
    existe et qui à l'air plutôt active.

    r0ket++

    Présentation du badge disponible depuis le CCC Camp, et de l'évolution
    proposée pour le 28c3, avec les process de manufacturing qui ont changé
    en 6 mois.
    CCC Camp r0ket price below 15EUR, 700 more available at 28c3, json api
    to play withhttp://www.openbeacon.org/BruCON_2011

    SCADA and PLC Vulnerabilities in Correctional Facilities

    Hacking/Social-engineering autour des centres pénitenciers aux US, avec
    un regard sur les systèmes de contrôle des portes des cellules de
    prison, qui pour une potentielle évasion d'après les présentateurs, sont
    plus accessibles qu'une decente en hélicoptère.

    The coming war on general computation

    Conférence de Cory Doctorow - http://boingboing.net - sur la fin de la bataille du copyright, qui
    n'était qu'un boss de premier niveau comparé aux prochains boss qui nous
    attendent.

    Defending mobile phones

    Troisième (voir la présentation au 27c3 et au HAR) et dernière partie
    des présentations de Karsten Nohl et Luca Melette sur la sécurité des
    réseaux gsm, et les efforts qu'il reste à faire pour protéger une
    technologie vieille de 20 ans. Sortie du sitehttp://gsmmap.org/afin de
    surveiller les protections actives sur les différents réseaux gsm.

    Day 2

    How governments have tried to block Tor

    Review de l'année des attaques sur le réseau Tor par différents pays
    (Iran, Chine), des systèmes mis en place pour les contrer.

    Building a Distributed Satellite Ground Station Network - A Call To
    Arms

    Superbe intro de Nick Farr pour comprendre les intérêts de ce genre de
    projet depuis le CCC Camp.
    Utilisation d'un shield arduino, d'un chip GPS et de différents inputs  pour monter un reseau distribué de sensors qui pourrait servir pour de
    prochaines missions satellitaires.

    7 years, 400+ podcasts, and a whole lot of Frequent Flyer Miles

    Travel-log de BicycleMark après 7 ans de voyages: "Try More, Do More"

    Day 3

    Not your Grandfathers moon landing

    Présentation par l'équipe de Part Time Scientist de leur rover et de la
    prochaine génération. Malheureusement le nouveau rover n'est pas visible
    en fin de présentation.

    Day 4

    Your Disaster/Crisis/Revolution just got Pwned

    Retour d'expérience de Telecomix et Geek Without Borders sur leurs
    méthodes d'organisation.

    NOC Review

    Réseau monté pendant le CCC Camp et le 28c3, avec beaucoup de graphs.

    Geeks and depression panel

    Après l'open-letter de Mitch Altman "Please reach out"
    -http://blog.noisebridge.net/2011/11/19/please-reach-out/- un panel de
    discussion autour du problème de la dépression et ce qui peut être fait
    pour en parler.

    Panel discussion on depression and suicide within the hacker community.
    Please seehttp://saizai.com/suicide.shtmlfor resources to contact if you
    want to talk, or join us on IRC at freenode #bluehackers.

  • Thursday, September 15, 2011 - 00:08
    Update: Webcam pour Minitel (ça manquait !!!)

    Processing to Minitel

    Processing2minitel 1

    Projet collectif : Avec Fabrice, Renaud, PG et Phil

    Le but de ce projet est de réaliser une interface WebCam => Minitel

    Le setup hardware est le suivant

    Processing2minitel

    Sur le cable DIN disponible avec le minitel rose (au tetalab), les connexions sont celles-ci:

    • orange: GND
    • noir: 6
    • marron: 7

    Ensuite un sketch processing s’occupe de la capture et le la génération des caractères mosaïques

    Code Mosaique

    Enfin un Arduino permet de faire l’adaptation de niveau et transfert les datas en 7 bits + parité à 1200 bps (a donf quoi !!!) vers le minitel et le tout en softwareSerial

    Voici le code processing

    Il faut appuyer sur 'a' ou 'z' pour ajuster la sensibilité de la camera et cliquer sur l'image pour l'envoyer sur le minitel...

    Le code de l’Arduino (besoin de la lib myNewSoftwareSerial)

    Enjoy !!!

    processing2minitel from phil teta on Vimeo.

    Update -28/12/2011 - Ce projet a inspiré deux groupes: 

    1. 1 - Labo media
      qui a fait un portage du truc sous linux avec la librairie GSVideo =>
      http://wiki.labomedia.org/index.php/Processing_vs_Arduino_vs_Minitel
    2. 2 - Open atelier qui a visiblement passé un bon moment =>  http://openatelier.labomedia.org/#25

     Processing2minitel 2

    Processing2minitel 1

  • Friday, September 9, 2011 - 16:49
    Petit POV

    English version on instructable => here

    Juste quelques mots pour présenter un petit projet « rigolo ».
    C’est un afficheur de texte qui utilise la persistance rétinienne (POV in english). Comme on dit dans Full Metal Jacket : « There are many like it but this one is mine.». En effet, un petit coup de google et vous trouverez des tas de projet de ce type.
    Celui-ci à la particularité d’utiliser un capteur de basculement pour déclencher l’écriture du texte. Ce capteur est celui proposé par snootlab dans son starter kit
    ou seul ici.

    Voici un petit schéma de montage

    Pov1

    Voici un petit détail pour l’utilisation du capteur de basculement

    Pov2

    Le montage final (magnifique non !!!)

    Pov3

    Quelques détails dessus/dessous

    Top2Back2

    Top1Back1

    Le résultat final…

    Simple POV display from phil teta on Vimeo.

    Enfin Le code pov03.pde

    Update du Code ICI

    Si vous voulez faire un affichage avec plus de caractères, vous pouvez diminuer ces deux paramètres
    #define delinterchar 700 //delay between 2 char
    #define delinterpoint 340 //delay between 2 points of a char

    Vous pouvez également changer les pins des leds et du capteur avec ces parametres
    #define led1 6
    #define led2 7
    #define led3 8
    #define led4 9
    #define led5 10
    #define led6 11
    #define led7 12
    #define sensorPin 2

    Actuellement le code ci-dessus affiche deux messages "SNOOTLAB" et "RULEZ"
    Ces deux messages sont definis là
    char texte[] = "SNOOTLAB"; // data to write on startup
    char texte2[] = "RULEZ"; // data to write after "repet" writing of the first message

    Le message change au bout de 10 affichages le paramètre est celui là
    #define repet 10 //number of repetition before changing message

    Si vous souhaitez modifier le code avec des interruptions, gérer l’affichage du message dans les deux sens (cf fonction displayCharR(char c)), ça m’intéresse… teta-phil[AT]laposte.net

  • Wednesday, August 3, 2011 - 22:27
    Un cube sur Oscilloscope

    Voici un petit truc sur l’affichage de graphisme sur un oscilloscope

    Oscillo Cube from phil teta on Vimeo.

    A l’origine je suis tombé amoureux de cette demo

    De là est venu l’envie de faire ce genre de chose (à mon niveau) en « temps reel » avec un ardunio

    Hardware

    Le principe du hardware c’est 2 convertisseurs numérique analogique R-2R 6 bits

    Dac 6bits

    Et le code source :
    dac_teta_cube.pde

    La partie "cube" vient de la lib tvout http://code.google.com/p/arduino-tvout/

  • Tuesday, July 26, 2011 - 21:01
    Politimap: Quels députés participent à l'Assemblée?

    Politimap est afin d'avoir une visualisation, à l'époque, des députés lors de la scéance du 8 décembre 2008 consacrée à la suppression des publicités télévisuelles sur les chaînes publiques.

    Cette visualisation a pour but de montrer la participation de chaque député dans l'hémicycle. Pour cela il nous faut:

    1. la position de chaque siège dans l'Hémicycle
    2. le numéro du siège attribué à chaque député
    3. une valeur sur la participation des députés

    Le code est disponible pour tous sur github, n'hésitez pas à le copier ou le modifier: http://github.com/alx/politimap

    Position des sièges dans l'Hémicycle

    Il faut d'abord une image de fond de l'Hémicycle, sur laquelle on extrait les coordonnées de chaques sièges.
    Ces coordonnées seront ensuite utilisées pour afficher les données liées à chaque député.

    Il y a environ 650 sièges dans l'Hémicycle, avec certains numéro de sièges inexistants.

    Pour faciliter le processus, j'ai créé une application graphique très simple, avec le framework Shoes, afin de cliquer sur l'image de l'Hémicycle et avoir les coordonnées de chaque click.

    Seatmap

    Voici le resultat, après avoir nettoyé la position des points mal placé (la souris n'est pas forcément adapté sur une si petite image):

    Position Seats

    Vous pourrez retrouver le code de cette application de point&click dans le répertoire "seat_map" du code.

    Attribution d'un siège à chaque député

    RegardsCitoyens propose un API, de son site NosDéputés, qui contient toutes les infos concernant les députés à l'Assemblée Nationale.

    Par contre, pour avoir le siège de chaque député, il faut d'abord demander la liste de tout les députés, puis extraire le numéro du siège de la fiche de chaque député:

    
    def liste_des_sieges
    
      # Création d'un tableau contenant assez de sièges 
      # pour tous les députés
      sieges = Array.new(650)
      
      # Demande de la liste des députés
      # 
      # La méthode api_json s'occupe de la requète http
      # puis cache sa réponse afin de ne pas la refaire a chaque fois
      depute_list = api_json("http://www.nosdeputes.fr/deputes/json")
      
      # Pour chaque député dans la liste:
      #   - demander les infos du député sur sa fiche
      #   - extraire la place en hemicycle
      #   - s'il a une place attribué, le garder dans le tableau des sièges
      depute_list["deputes"].each do |depute_json|
        depute_info = api_json(depute_json["depute"]["api_url"])["depute"]
        place = depute_info["place_en_hemicycle"].to_i
        sieges[place] = depute_info["nom"] if place > 0
      end
      
      # Retourner le tableau des sièges pour traitement ultérieur
      return sieges
    end
    
    

    Le code ayant servi à cette tâche se trouve dans le répertoire "json_parser" du dépot git.

    Récupération de données sur la participation de chaque député

    Maintenant que nous connaissons la place de chaque député dans l'assemblée, nous allons rajouter une donnée concernant chaque député sur cette place.

    Encore une fois, NosDéputés propose à travers son API une synthèse mois par mois de la participation de chaque député à différentes parties de la vie à l'Assemblée Nationales.

    Dans l'exemple proposé du mois d'avril 2010 - http://www.nosdeputes.fr/synthese/201004/xml - nous trouvons ces infos sur le député Lionel Tardy:

    <depute>
    <id>17</id>
    <nom>Lionel Tardy</nom>
    <groupe>UMP</groupe>
    <amendements_adoptes>9</amendements_adoptes>
    <amendements_signes>34</amendements_signes>
    <commission_interventions>0</commission_interventions>
    <commission_presences>4</commission_presences>
    <hemicycle_interventions>49</hemicycle_interventions>
    <hemicycle_interventions_courtes>34</hemicycle_interventions_courtes>
    <propositions_ecrites>0</propositions_ecrites>
    <propositions_signees>2</propositions_signees>
    <questions_ecrites>5</questions_ecrites>
    <questions_orales>0</questions_orales>
    <rapports>0</rapports>
    <semaines_presence>2</semaines_presence>
    </depute>

    Ces infos nous permettent d'attribuer, pour le mois d'avril 2010, une participation de ce député dans l'Hémicycle par exemple.

    Nous pouvons ajouter des filtres:

    • sur la date de la synthèse, ou la période des synthèses, à récupérer
    • sur le type d'information à extraire de chaque synthèse

    Screen Shot 2011 07 26 At 9.42.37 Pm

    Affichage de ces données

    Tout ce que nous avons mis en place, avant ce point, peut se faire sous la forme d'un simple script.

    Maintenant, nous allons afficher ces données sur une page web, et faire des requètes afin de filtrer les données suivant différents paramètres.

    Pour cela nous avons besoin d'une application web, qui traitera ces requètes, demandera à l'API de NosDéputés.fr les informations manquantes, et retournera les données dans un format qui pourra être affiché sur la page web.

    Serveur: Sinatra

    Dans Politimap, j'ai utilisé Sinatra, un framework d'application en Ruby qui permet de monter rapidement des prototypes d'application web. L'idée du prototypage rapide est d'avoir une idée le matin, qui fonctionne à midi, et qui peut être livrée le soir même.

    L'installation de ruby sur un serveur et déploiement d'applications sinatra n'étant pas des plus simples, je n'aborderai que le traitement de la réquète dans l'application. Si cela vous intéresse, Sinatra propose une très bonne introduction sur leur site: http://www.sinatrarb.com/intro

    Pour son fonctionnement sur internet, Politimap regroupe tous les outils des points précédents, et renvoit une réponse au visiteur de la page web:

    get '/heatmap' do
      # le retour de la requète sera en json
      # afin d'être facilement compris par javascript
      content_type :json
        
      # Extrait les filtres de début et fin
      start_date = Date.parse params[:start_date]
      end_date = Date.parse params[:end_date]
    
      # Pour chaque mois, on parse la synthèse, 
      # en utilisant le filtre d'info à sélectionner
      current_date = start_date
      while current_date <= end_date
        parse_synthese current_date.strftime("%Y%m").to_i, params[:info]
        current_date = current_date >> 1
      end
      
      # On détermine la valeur maximale dans la totalité des sièges
      max = 0
      $SEATS.each {|seat| max = seat[:count] if seat[:count] && seat[:count] > 0 && max < seat[:count] }
    
      # Retour du résultat au client
      {:max => max, :data => $SEATS}.to_json
    end
    
    

    Client: Heatmap.js

    Pour l'affichage, j'ai utilisé Heatmap.js, une librairie javascript qui permet de visualiser des nuages lumineux suivant l'intensités des points.

    
    // Ajout d'une indication pour signaler que l'image est en train de se rafraichir
    $("#heatmapArea").prepend("chargement...");
    
    // Demande au serveur des données filtrées avec la selection de l'utilisateur
    $.getJSON("/heatmap", filters, function(map){
        
        // Une fois les données reçu, 
        // il faut les stocker dans le store de heatmap.js afin de les afficher
        heatmap.store.setDataSet(map);
        
        // Et on peut retirer l'indication de chargement
        $("#heatmap_loading").remove();
    }
    
    

Pages