mardi 21 mai 2013

Mise en place de ZoneMinder

Récupérer un vieux pc qui consomme peu de préférence puisqu'il sera tout le temps allumé. Personnellement j'ai récupéré un pc portable d'une amie avec l'écran cassé.

Ensuite, télécharger Ubuntu server ou une autre distribution qui vous chante. J'ai choisie Ubuntu car la documentation est riche sur le Net avec beaucoup de tutoriels. Créer votre Live CD et installer ceci sur votre pc de récupération.

Je passe toutes les étapes de configuration et de création de compte Linux car ceci et déjà très bien documenté.

Zoneminder utilise Apache Php et MySQL, il va donc falloir les installer (Choisir l'installation par paquets sur  ce tuto) et les configurer.

Ensuite il suffit d'installer Zoneminder. Brancher une Webcam et tester.

jeudi 9 mai 2013

Arduino motor shield + 2 servo-moteurs

Voici comment utiliser le Shield Arduino motor avec 2 servo-moteurs.

Le shield Arduino Motor est capable de piloter 2 moteurs à courant continu ou 1 moteur pas à pas à l'aide du courant fourni par une alimentation externe. De nombreux tutoriels explique comment utiliser ces fonctionnalités (voir http://www.instructables.com/id/Arduino-Motor-Shield-Tutorial/).

Ce shield permet également d'interfacer très facilement des capteurs ou des servo-moteurs grâce à ces 6 broches de 3 à 4 pins.
2 d'entre elles sont reliées à des pins PWM de l'arduino ce qui permet d'envoyer un signal entre 0 et 1024. Nous allons nous en servir pour nos servo-moteurs.

J'ai utilisé des servo-moteurs Emax ES08A dans mon exemple. J'ai du modifié la position des fils sur la broche pour correspondre aux pins sur le shield (de gauche à droite (rouge (+), jaune (analog), marron (-)).

Sur mon exemple j'ai branché 1 servo-moteur sur chaque broche orange du shield.

Il reste plus qu'à écrire le programme (J'ai utilisé l'exemple "sweep" et l'ai modifié pour l'adapter à mon exemple) :

// Sweep
// by BARRAGAN  
// modified by gpilot 
// This example code is in the public domain.

#include  
 
Servo myservo, myservo2;  // create servo object to control a servo 
                // a maximum of eight servo objects can be created 
 
int pos = 0;    // variable to store the servo position 
 
void setup() 
{ 
  Serial.begin(9600);
  myservo.attach(5);  // attaches the servo on pin 9 to the servo object 
  myservo2.attach(6);
} 
 
 
void loop() 
{ 
  for(pos = 0; pos < 170; pos += 1)  // goes from 0 degrees to 180 degrees 
  {                                  // in steps of 1 degree 
    myservo.write(pos);              // tell servo to go to position in variable 'pos' 
    myservo2.write(pos);              // tell servo to go to position in variable 'pos' 
    Serial.println(pos);
    delay(10);                       // waits 15ms for the servo to reach the position 
  } 
  for(pos = 170; pos>=0; pos-=1)     // goes from 180 degrees to 0 degrees 
  {                                
    myservo.write(pos);              // tell servo to go to position in variable 'pos' 
    myservo2.write(pos);              // tell servo to go to position in variable 'pos' 
    Serial.println(pos);
    delay(10);                       // waits 15ms for the servo to reach the position 
  } 
} 

mercredi 3 avril 2013

Forcer le redémarrage de Linux à l'aide de cron

Pour forcer le redémarrage d'un système Linux à l'aide de la crontab, on ouvre la crontab en tant que super-utilisateur :
sudo crontab -e
Et on ajoute l'entrée suivante pour redémarrer le système toutes les heures :
0 0 */1 * * sudo shutdown -r now 

mardi 26 février 2013

[Arduino] Uploader un programme après avoir séparé les pins d'auto-reset

Dans le précédent post, nous avons supprimer la connexion de 2 points sur la carte pour éviter le reboot au lancement du Serial.
Si vous avez fait cette manipulation sur une de vos carte ou si vous possédez une carte n'ayant pas d'auto-reset, vous vous rendrez compte rapidement que vous ne pourrez plus Uploader de sketch et que vous obtiendrez l'erreur suivante :
Téléchargement terminée 
avrdude: stk500_getsync(): not in sync: resp=0x00
Lorsque vous appuyer sur le bouton reset de la carte arduino, le Bootloader se lance et permet pendant un cours instant d'uploader un sketch sur la carte. En supprimant le point de soudure entre les 2 points nous avons enlevé la possibilité à la carte Arduino de faire un reset de manière automatique.
Il faut donc le faire manuellement.
Pour cela :
1) Appuyer sur le bouton reset de la carte Arduino
2) Cliquer sur le bouton Uploader du logiciel Arduino
3) Attendre que la Led RX clignote une fois
4) Relâcher immédiatement votre doigt du bouton reset (Si une autre Led clignote le temps de lacher le bouton il faudra recommencer)
5) Laisser le logiciel Uploader le sketch sur la carte Arduino

Si le message Téléchargement terminé s'affiche sans message d'erreur, votre sketch a été envoyé correctement sur la carte

[Arduino] Eviter le reset à l'ouverture du Serial

Pour éviter que la carte Arduino reboot à chaque ouverture du Serial, on peut supprimer le petit point de soudure entre 2 connexions sur la carte (voir ci-dessous).



lundi 25 février 2013

[Arduino] Lire une ligne Serial

On peut avoir besoin d'interagir via une carte Arduino par Serial (USB ou RXTX) en envoyant un ou plusieurs caractères.
Pour lire une ligne entrée dans le Serial, il suffit d'écrire le code suivant :


String msg;
int ledPin = 13;

void setup(){
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);
}

void loop(){
  if(Serial.available() > 0){
    msg="";
    while (Serial.available()){
      delay(2);//Pour laisser le temps au buffer
      char c =Serial.read();
      msg += c;
    }
    Serial.println(msg);
  }
}


Ce code attend une entrée dans le Serial, lit les caractères entrés et les ré-écrit dans le Serial.

Cela permet par exemple d'allumer/éteindre une Led branchée sur l'arduino en fonction de l'entrée dans le Serial.

String msg;
int ledPin = 13;

void setup(){
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);
}

void loop(){
  if(Serial.available() > 0){
    msg="";
    while (Serial.available()){
      delay(2);//Pour laisser le temps au buffer
      char c =Serial.read();
      msg += c;
    }
    if(msg.equals("on")){
      digitalWrite(ledPin, HIGH);
    }else if(msg.equals("off")){
      digitalWrite(ledPin, LOW);
    }
  }
}

Avec le code suivant : 
- en écrivant "on", vous allumerez la led sur la pin 13
- en écrivant "off", vous éteindrez la led sur la pin 13


vendredi 22 février 2013

[Windows] Installation de node.js + premier exemple

1) Aller sur http://nodejs.org/
2) Cliquer sur INSTALL
3) Créer un dossier dédier nodejs dans votre espace perso (C:/Users/[NOM_UTILISATEUR])
4) Copier l'exemple présent en bas de page et le coller dans un fichier example.js :
var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');
5) Ouvrir un prompt (Attention si vous venez d'installer node.js et que vous aviez déjà un prompt d'ouvert il faudra en ouvrir un autre pour prendre en compte le PATH)
6) Aller dans le répertoire créé et taper la commande :
node example.js
7) Ouvrer un navigateur et taper http://127.0.0.1:1337/