NoNoseOnTV, un projet animé par Arduino

Ce projet est né du constat que nos enfants sont bien souvent le nez collé sur l’écran.
Afin de corriger ce comportement j’ai pris l’habitude d’éteindre la télé avec la télécommande.
C’est rapidement fatiguant de faire le surveillant. Même si j’ai obtenu quelques succès.

Et la je me dis que si le truc pourrait être fait par un petit montage électronique.
Problème, mes notions d’électronique sont proche de zéro.
Par contre il y a les cartes Arduino qui peuvent être programmées et vous donnent accès à tout un tas de capteurs de l’environnement extérieur.

Armé d’une bonne dose de motivation j’achète le Arduino Starter Kit et quelques composants non inclus chez Arobose.

Voici la première version, les composants sont les suivants :

  • Arduino Uno rev 3
  • Capteur de distance par ultrasons URM 37 V3.2
  • 3 LEDs rouge, jaune, verte, avec des résistances 1kOhm pour pas les cramer
  • Platine de montage


Sensor_bb

 
 

Le fonctionnement de cette version 0.1 est simple.
Si une présence est détectée à plus de 1.5 m la LED verte s’allume.
Si une présence est détectée à moins de 1.5 m la LED jaune s’allume.
Si une présence est détectée à moins de 1 m la LED rouge s’allume.

Pour le code le voici :

// # Author  : Hugues Lepesant
// # Date    : 11/04/2013
// # Version : 0.1

// # URM Code based on Jiang's work from DFRobot
// # Product name:ultrasonic scanner Kit
// # Product SKU:SEN0001
 
// # Description:
// # The Sketch for scanning 180 degree area 4-500cm detecting range
 
// # Connection:
// #       Pin 1 VCC (URM V3.2) -> VCC (Arduino)
// #       Pin 2 GND (URM V3.2) -> GND (Arduino)
// #       Pin 4 PWM (URM V3.2) -> Pin 3 (Arduino)
// #       Pin 6 COMP/TRIG (URM V3.2) -> Pin 5 (Arduino)
// # Pin mode: PWM
// # Working Mode: PWM passive control mode.
// # If it is your first time to use it,please make sure the two jumpers to the right hand
// # side of the device are set to TTL mode. You'll also find a secondary jumper on
// # the left hand side, you must break this connection or you may damage your device.
 
int URPWM=3;        // PWM Output 0-25000us,every 50us represent 1cm
int URTRIG=5;       // PWM trigger pin

int pinGreen = 2;
int pinYellow = 6;
int pinRed = 7;

int distMinimum = 100; // 100 cm
int distMedium = 150;  // 150 cm

boolean up=true;       // create a boolean variable
unsigned long time;    // create a time variable
unsigned long urmTimer = 0; // timer for managing the sensor reading flash rate
 
unsigned int Distance=0;

uint8_t EnPwmCmd[4]={0x44,0x22,0xbb,0x01}; // distance measure command
 
void setup() {             // Serial initialization
    Serial.begin(9600);    // Sets the baud rate to 9600

    pinMode(pinGreen, OUTPUT);
    digitalWrite(pinGreen, LOW);
    
    pinMode(pinYellow, OUTPUT);
    digitalWrite(pinYellow, LOW);
    
    pinMode(pinRed, OUTPUT);
    digitalWrite(pinRed, LOW);

    PWM_Mode_Setup();
}
 
void loop() {
  Distance = PWM_Mode();
  Serial.print("Distance = ");
  Serial.print(Distance);
  Serial.println(" cm");
  
  if ( Distance > distMedium ) {
    digitalWrite(pinGreen, HIGH);
    digitalWrite(pinYellow, LOW);
    digitalWrite(pinRed, LOW);
  }

  if ( Distance > distMinimum && Distance < distMedium ) {
    digitalWrite(pinGreen, LOW);
    digitalWrite(pinYellow, HIGH);
    digitalWrite(pinRed, LOW);
  }

  if ( Distance < distMinimum ) {
    digitalWrite(pinGreen, LOW);
    digitalWrite(pinYellow, LOW);
    digitalWrite(pinRed, HIGH);
  }
  
  delay(2000);
}

 
void PWM_Mode_Setup(){
    pinMode(URTRIG,OUTPUT);       // A low pull on pin COMP/TRIG
    digitalWrite(URTRIG,HIGH);    // Set to HIGH
 
    pinMode(URPWM, INPUT);        // Sending Enable PWM mode command
    
    for (int i=0;i<4;i++) {
        Serial.write(EnPwmCmd[i]);
    }
}
 
int PWM_Mode(){                   // a low pull on pin COMP/TRIG  triggering a sensor reading
    digitalWrite(URTRIG, LOW);
    digitalWrite(URTRIG, HIGH);   // reading Pin PWM will output pulses
     
    unsigned long DistanceMeasured=pulseIn(URPWM,LOW);
     
    if (DistanceMeasured==50000) { // the reading is invalid.
      return 0;
    } else {
        return DistanceMeasured/50; // every 50us low level stands for 1cm
    }
}

La roadmap du projet est la suivante :

Version 0.2 :
Un signal sonore (façon « dernière sommation ») est joué.

Version 0.3 :
Après la sommation, la télé est éteinte.

Version 0.4 :
Si aucune présence n’est détectée à moins de 1.5 m pendant 10 secondes la télé est rallumée.

Version 0.5 :
Pouvoir programmer le code d’extinction de la télé avec la télécommande de celle-ci.

Version 0.6 :
Réalisation d’un boitier pour placer le NoNoseOnTV sous la télé.

Version 0.7 :
Réalisation d’un PCB.

Version 0.8 :
Réalisation d’un boitier pour une diffusion en masse.

Version 0.9 :
Vendre le truc à Sony, Samsung, Toshiba, Philips,

Version 1.0 :
Aller se coucher ou partir en vacances.

Publié dans Mes Projets | Marqué avec , | Laisser un commentaire

Blog zero Carbone

Parce que derrière chaque blog, il y a un serveur qui consomme de l’électricité. A défaut de faire autrement, l’initiative « Blog Zéro Carbone » nous lave un peu la conscience.

Vous aussi, prenez part au mouvement !

En participant à l’initiative Blog zéro Carbone vous pouvez les aider à protéger l’environnement. Pour participer, c’est très simple : voici comment faire, en trois étapes !

  1. Un petit badge sur une page (le mieux étant dans la barre de navigation de gauche, pour que le badge soit visible sur toutes les pages), et
  2. un petit article pour expliquer votre démarche, et voilà votre Blog zéro Carbone.
  3. Envoyez nous ensuite un lien vers votre blog à blog-zerocarbone@bonial.fr et ils se chargeront, avec leur partenaire, de planter votre arbre. Celui-ci compensera tout au long de sa vie les émissions de CO2 dérivant de votre blog.

C’est simple !

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

Tips en tout genre

Sendmail :

echo '3,0 peter@imap.local' | sendmail -d21.12 -d8.20 -d60.5 -bt

  • -d21.12 – tracking R lines processing in sendmail.cf
  • -d8.20 – tracking DNS queries
  • -d60.5 – tracking map lookups

Solaris/OpenIndiana/Nexenta : SSH mais un temps fou à répondre

Et comme c’est un Solaris, l’option « UseDNS = no » ne fonctionne pas.
L’astuce en 3 lignes :

echo "GSSAPIAuthentication no" >> /etc/ssh/sshd_config
echo "LookupClientHostnames no" >> /etc/ssh/sshd_config
svcadm restart ssh


VMWare : install vmware-tool sous debian squeeze

apt-get install build-essential make linux-headers-`uname -r` -y
mount /media/cdrom0
cd /usr/local/src/
tar xfz /media/cdrom/VMwareTools-8.6.5-621624.tar.gz
sync
umount /media/cdrom0
cd vmware-tools-distrib/
./vmware-install.pl


Windows 2008 R2 : Autoriser les réponses au PING

Avec du PowerShell, parce que quand même faudrait voire à pas déconner de trop quand même…

netsh advfirewall firewall add rule name="ICMP Allow incoming V4 echo request" protocol=icmpv4:8,any dir=in action=allow

Et quand ça passe pas (version antèrieur) :

netsh firewall set icmpsetting 8


Network Manager : Démarrer un VPN en cli

Identification du VPN
nmcli connection

Lancement du VPN
nmcli --ask connection up id <VPN_ID>

Publié dans Mes docs | Laisser un commentaire

Dedibox v3, Debian v6, Xen v4

Une dédibox à 15 € HT/mois.
Une distrib libre
Un hyperviseur libre
Il n’en faut pas plus.

Procédure testée, et rédigée pour le wiki de GCU

Publié dans linux, Mes docs, xen | Laisser un commentaire

Ma Passat pour un Empire

Chez Volkswagen les publicistes doivent avoir une bonne quarantaine d’année…au moins sur leur carte d’identité.

Enfin moi j’adore, et mon fils aussi…depuis il se promène dans l’appartement avec une écharpe noire sur la tête et « distrait » (exerce sa « force » sur, NDR)  son petit frère hilare.

Le Teaser

(cette pub est passé pour la première fois pendant le 45ème Super Bowl)

La pub

Le « making of »

Encore plus poilant.

Le Gamin

La jolie tête blonde sous le masque est maintenant connue. La pub ayant fait un tel buzz depuis sa diffusion.
On se demande quand même si maman n’a pas fauté avec Anakin, ou si G.Lucas n’a pas la main mise sur tout en ce qui concerne Star Wars, jusqu’au choix du bambin..

Les Parodies

Elles devaient arriver.

Volkswagen Commercial: The Force (Toyota Parody)

Publié dans On s'poile d'un rien | Laisser un commentaire

Jumpstart is so 2000

Il est devenu courant d’installer sa distribution Linux à partir d’une clé USB. (Ubuntu fournit sa méthode, et il existe aussi lili, pour ne citer qu’eux). En ce moment je joue avec de l’OpenSolaris pour en faire des SAN (zfs rocks) sur du matériel SuperMicro (chassis et carte-mère).

Notre souci est l’installation rapide de SAN en cas de crash.

X8DTU-F

X8DTU-F

Même si ce type de serveur offre de l’IPMI, l’installation via le virtual cdrom est assez longue…et par le réseau c’est lourd. Or ces carte-mères ont des ports USB internes (sur le bord, en bas à gauche de la photo). Il est possible de télécharger un fichier .usb et d’en faire une clé USB boutable contenant OpenSolaris. D’où l’idée de mettre une clé USB OpenSolaris dedans, et de commander le boot sur le disque USB dans le BIOS en cas de réinstallation.

L’autre idée était d’ajouter quelques scripts shell de post-installation, et quelques fichiers ZIP contenant des pilotes et/ou utilitaires non intégrés dans la distribution OpenSolaris, de manière a pouvoir les appeler via le déport KVM de la console IPMI.

Pour cela il nous faut, dans un environnement OpenSolaris installé :

  1. Télécharger l’ISO osol-dev-134-x86.iso depuis Genunix
  2. Modifier l’image ISO
  3. Convertir cette nouvelle image ISO en fichier .usb
  4. Créer notre clé USB (1Go suffit)

La partie qui requière un poil soyeux et abondant, est celle de la modification de l’image ISO. Heureusement il y a des wookies en Chine. Le script modifié que voici (bash, x86 only) vous permettra de créer une image ISO modifiée de oso-dev-134-x86.iso.

#!/usr/bin/bash

#
# Author : mishuang
# URL : http://blogold.chinaunix.net/u/23177/showart_2182517.html
# Updated by Hugues Lepesant
#

LOFIADM=/usr/sbin/lofiadm
AWK=/usr/gnu/bin/awk
GSED=/usr/bin/gsed

UMOUNT=/usr/sbin/umount
MOUNT=/usr/sbin/mount

GREP=/usr/gnu/bin/grep
GZIP=/usr/bin/gzip
MKDIR=/usr/gnu/bin/mkdir
FIND=/usr/gnu/bin/find
CPIO=/usr/bin/cpio
MKISOFS=/usr/bin/mkisofs

ISO_FILE="/export/home/hugues/iso/osol-dev-134-x86.iso"
ISO_NEW_FILE=$(printf "%s/%s" $(dirname ${ISO_FILE}) "osol-dev-134-x86_custom.iso")

ISO_MNT_DIR="/mnt/osol"
ISO_TMP_DIR="/var/tmp/osol"

BA_MNT_DIR="/mnt/boot_archive"
BA_FILE="/var/tmp/boot_archive"

CP='/bin/cp -f'
RM='/bin/rm -rf'

function clear_lofi
{
    lofis=$(${LOFIADM} | ${AWK} '/\/dev\/lofi/{print $1}')

    for lofi in ${lofis}
    do
        ${LOFIADM} -d ${lofi}
    done
}

function set_kbd_lang
{
    ${GSED} -i -e 's/kbd -s/& US-English/' -e 's/set_lang/& default/' $1/lib/svc/method/media-fs-root
}

function create_x86_iso
{
    ${UMOUNT} ${ISO_MNT_DIR}
    ${UMOUNT} ${BA_MNT_DIR}

    clear_lofi

    ${RM} ${ISO_TMP_DIR} ${BA_FILE}
    ${RM} ${ISO_NEW_FILE}

    ${MKDIR} -p ${ISO_MNT_DIR} ${ISO_TMP_DIR} ${BA_MNT_DIR}

    iso_lofi=$(${LOFIADM} -a ${ISO_FILE})
    ${MOUNT} -F hsfs ${iso_lofi} ${ISO_MNT_DIR}

    cd ${ISO_MNT_DIR}

    ${FIND} . -depth -print | ${CPIO} -pdum ${ISO_TMP_DIR}
    cd -

    for dir in "" "amd64"
    do
        ${GZIP} -cd ${ISO_TMP_DIR}/platform/i86pc/${dir}/boot_archive > ${BA_FILE}

        ba_lofi=$(${LOFIADM} -a ${BA_FILE})
        sleep 5
        ${MOUNT} ${ba_lofi} ${BA_MNT_DIR}

        ${CP} /export/home/hugues/2.00.15_Solaris_MegaCLI.zip ${BA_MNT_DIR}/root
        ${CP} /export/home/hugues/postinstall.sh ${BA_MNT_DIR}/root

        set_kbd_lang ${BA_MNT_DIR}

        sleep 5
        ${UMOUNT} ${BA_MNT_DIR}
        ${GZIP} -c ${BA_FILE} > ${ISO_TMP_DIR}/platform/i86pc/${dir}/boot_archive
        sleep 5
        ${LOFIADM} -d ${ba_lofi}
    done

    ${MKISOFS} -o ${ISO_NEW_FILE}    \
        -b boot/grub/stage2_eltorito \
        -c .catalog                  \
        -no-emul-boot                \
        -boot-load-size 4            \
        -boot-info-table             \
        -N -l -R -U -allow-multidot  \
        -no-iso-translate            \
        -cache-inodes -d -D          \
        -V "OpenSolaris"             \
        ${ISO_TMP_DIR}

    ${UMOUNT} ${ISO_MNT_DIR}
    ${LOFIADM} -d ${iso_lofi}
    ${RM} ${ISO_TMP_DIR} ${BA_FILE}
}

create_x86_iso

Cette image iso pourra ensuite être convertie en fichier .usb et servir de matrice à la création d’une clé boutable.

pfexec pkg install SUNWdistro-const
pfexec usbgen osol-dev-134-x86_custom.iso osol.usb  /tmp/osol
pfexec usbcopy osol.usb

ou si vous êtes sous Windows avec l’outil OpenSolaris Live USB Creator.

Publié dans Mes docs, OpenSolaris | Laisser un commentaire

Et là ça marche ?

Après une manipulation électrique visant à ne pas bouffer les kVA du data-center où est hébergé ce serveur, celui-ci avait décidé de ne pas reprendre du service. Avec beaucoup de diplomatie, j’ai réussi à le convaincre de faire son job. Donc ce blog léger est de retour.

Publié dans Uncategorized | Commentaires fermés sur Et là ça marche ?

Mail Intelligent Gateway

MiG

La passerelle MiG est une passerelle SMTP permettant l’envoie de mails contenant des pièces jointes volumineuses. Elle fonctionne de deux manières différentes selon que la taille du mail traité dépasse une certaine limite (exemple: 5Mo).

Dans le cas d’un mail dont la taille est inférieure à 5Mo, le mail transit à travers la passerelle et est transféré au serveur gérant le domaine du destinataire.

Dans le cas d’un mail dont la taille est supérieur à la limite fixée, le mail subit les modifications suivantes

  1. Séparation des pièces jointes volumineuses du corps du message
  2. Stockage des pièces jointes sur un serveur de fichier
  3. Génération d’un lien web pointant vers les pièces jointes
  4. Modification du corps du message pour y ajouter le descriptif des pièces jointes (nom, type de fichier, taille) , les liens associés, et un texte explicatif sur la transformation apportée au message original par la plateforme MiG.

La plateforme MiG est destinée aux ISP et autres opérateurs télécom désirant offrir un service SMTP sans limite, et offrant de nombreux avantages :

  • Diminution de la bande passante. Seul le lien entre le poste client et la plateforme MiG est utilisé

La gestion des identités se fait par un portail web. Une personne identifié chez le client à la charge de créer les comptes SMTP-AUTH.

  • Chaque société cliente, et/ou compte est associé à un compte crédité de jetons.
    • abonnement mensuel limité,
    • abonnement mensuel illimité,
    • one shot
  • L’envoie de messages non volumineux ne retire aucun jeton. Par contre l’envoie de messages volumineux consomme un jeton. L’alimentation du compte en jeton est faite de différents manières selon le profil de compte :

  • Suivi du téléchargement des pièces jointes

L’expéditeur est notifié par message du téléchargement des pièces jointes dans son message. Afin de préserver l’espace de stockage des pièces jointes, les messages sont soumis à une durée de rétention de ces messages. Cette durée est modulable selon le profile de l’expéditeur. Les pièces jointes non téléchargées bénéficies du service de relance du destinataire, et d’une durée de rétention prolongée. L’expéditeur a la possibilité de prolonger la durée de rétention des pièces jointes d’un message en utilisant des jetons.

[Partie à terminer]

A propos du projet

Ce vieux projet trotte dans ma tête depuis quelques années. Ce projet est un projet libre. Basé sur des solutions libres, la plateforme MiG, ainsi que les sources des modules binaires et services Web nécessaire au fonctionnement de MiG devront respecter la licence BSD. La plateforme de prédilection de cette solution pourra être FreeBSD ou GNU/Linux. Des ports ou packages seront disponibles. L’utilisation d’un milter et/ou d’un service LMTP doivent permettre à l’administrateur de choisir son MTA favoris. (to be continued)

Le Logo

C’est une ébauche rapide. Il reprend le nez du fameux MIG-21

Publié dans Mes Projets | Marqué avec , , | Laisser un commentaire

Tout vient à point à qui sait attendre …

Dans une lointaine galaxie, il y a très longtemp (au 20ème siècle), j’ai joué avec un Qube3.

Et depuis je n’en avais pas touché un seul….à part ses cousins raplaplats, et son grand frère à base de Mips aka. Qube2 (merci paaattrrroooonnnnn).

Et bien, grace à Ebay je viens enfin de faire l’aquisition pour une somme tout à fait raisonnable d’un des derniers modèles de Qube3….Il est estampillé « Sun Cobalt ».

Et toujours avec l’aide d’Ebay, il est matenant doté de 512Mo de RAM (kingston rocks!!).

Putain dix ans 🙂

Sun Cobalt - Smaller, Bluer, Better, and Free
Firmware version 2.10.3-ext3

Current date: Jul 20 11:23:54 UTC 2009
ROM build info: Thu Mar 11 08:51:36 MST 2004 .
System serial number: Uninitialized
System type: 3000 series system, Version 2 board
Silicon serial number: 25000008bb7cc501
Monitor: 153536 bytes
Memory: 512 MB
CPU: 1 processor(s) detected
CPU 0: AuthenticAMD 448MHz (4.5 x 100MHz host bus) [BSP]
Initializing flash: done
Flash Bank 0: AMD AM29F080B 1024KB (01:d5)
Flash Bank 1: not installed.
Mounting ROM fs: done
Initializing PCI: done
Host Bus: 0 (device 1f:01) [33MHz]
Device: 00:00 10b9:1541 Acer Labs M1541 Aladdin V Host Bridge
Device: 01:00 10b9:5243 Acer Labs M5243 AGP Controller
Device: 02:00 10b9:5237 Acer Labs M5237 USB Controller (IRQ 6)
Device: 03:00 10b9:7101 Acer Labs M7101 PMU
Device: 07:00 10b9:1533 Acer Labs M1543 Aladdin V PCI-ISA Bridge
Device: 0e:00 1000:000f Symbios Logic SYM53C875 SCSI Controller (IRQ 12)
Device: 0f:00 10b9:5229 Acer Labs M5229 TXpro IDE Controller (IRQ 14)
Device: 10:00 100b:0020 National DP83815 MacPhyter Ethernet (IRQ 11)
Device: 12:00 100b:0020 National DP83815 MacPhyter Ethernet (IRQ 10)
Bridged Bus: 1 (bridge: 00:01:00)
Initializing ethernet: 2 controller(s) found
National Semiconductor DP83815 Found at port 0xfc00, MAC: 00:10:e0:03:f5:cc
National Semiconductor DP83815 Found at port 0xfb00, MAC: 00:10:e0:03:fb:7b
Initializing IDE: found ALI M5229 at 00:78
spinning up second channel: done
scanning ide0: master
scanning ide1:
IDE: stabilizing spinup: 100%
Checking Memory: done

Press spacebar to enter ROM mode
Booting default method - From disk

Comme vous l’aure remarqué il a subit l’upgrade de sa flash, et ses aventures de sont pas finies…

Publié dans Cobalt, linux, Mes docs | Commentaires fermés sur Tout vient à point à qui sait attendre …

Comme un lundi…pas comme les autres

Ce matin dans ma boite mail je tombe là dessus :

Date: Mon, 8 Dec 2008 00:42:29 +0000 (GMT)
From: H..... G..... <........@yahoo.fr>
Subject: freebsd
To: hugues@lepesant.com

Bonjour,

En faisant quelques recherches sur freebsd, je suis tombé sur votre blog.
Je suis en formation de technicien supérieur en réseau et télécommunication
d'entreprise et pendant mon stage en entreprise, il m'a été demandé d'installer
un FreeBSD et mettre en place une plate-forme mail. Mon tuteur de stage m'a
fourni le linux magasine n° 100 dans lequel il y a un tutoriel concernant
la mise en oeuvre d'une plate-forme mail avec FreeBSD et Exim4.

Le problème c'est que j'ai fait très peu de linux et FreeBSD n'étant pas du
linux,j'ai de grosses lacunes...
J'ai installé FreeBSD et en m'attaquant à la plate-forme mail je rencontre de
nombreuses impasses, ce n'est pas un tutoriel pas à pas donc il m'est très
difficile d'avancer...

Auriez-vous des adresses de site sur lesquelles je pourrai trouver des
tutoriels concernant l'installation d'une plate-forme mail, ou
auriez-vous des documentations qui pourraient m'aider ?

Je vous remercie d'avance de toute l'aide que vous pourriez m'apporter.

Cordialement

G..... H.....

Et ça fait plaisir de voir des petits gars qui s’essayent à FreeBSD.
Et surtout des tuteurs qui conseillent cet OS de la vie.
Plein de courage à toi…tu verras les poils poussent vite.

Enfin c’est l’occasion rêvée de l’envoyer chez mes amis les fous

Publié dans Humeur | Commentaires fermés sur Comme un lundi…pas comme les autres