février 25

Resilio Syncro

Résilio syncro est le nouveau nom de BitTorrent Syncro.

Même principe mais une installation plus simple.

Installation sur Debian et Ubuntu

sudo nano /etc/apt/sources.list.d/resilio-sync.list

Ajouter dedans :

deb http://linux-packages.resilio.com/resilio-sync/deb resilio-sync non-free

Ajouter la clé public :

wget -qO - https://linux-packages.resilio.com/resilio-sync/key.asc | sudo apt-key add -

Après le classique  apt-get update

sudo apt-get install resilio-sync

source

 

 

 

Catégorie : Linux | Commenter
février 4

Ambilight avec Raspi et Arduino

Ambilight est un système, à base de ruban LED rgb disposé à l’arrière d’une télé, permettant de diffuser des couleurs en rapport avec le contenu de l’image affiché à l’écran.

Pour cela, j’utilise un Raspberry 3 avec le mediacenter Openelec (un Kodi prévu pour Raspi) connecté en USB à un Arduino Uno lui même connecté à un ruban de LED WS2812b.

J’ai fabriqué un cadre en bois avec des liteaux de 4X13 mm, fixé via les 2 vis VESA de la télé. Le ruban LED est collé sur les liteaux.
Les liteaux sont inclinés à 45° pour avoir un maximum de projection lumineuse à l’arrière de la télé.

Les fichiers 3D que j’ai créé pour ce montage sont disponible sur mon Thingiverse.

dans mon exemple, j’ai 29 LED en haut et bas et 17 à droite et gauche = 92 au total.

 

J’ai fais des pièces en 3D, tout est disponible sur mon Thingiverse.

Ruban LED

Le ruban est une suite de module de LED que l’on peut découpé et souder. Chaque module fait 33 mm, bien mesuré la longueur des liteaux haut/bas et droite/gauche en multiple de 33 mm, pour que le ruban arrive pile poil au bout.

Le ruban à un sens indiqué par une flêche, le logiciel utilisé par la suite permet de choisir la position de départ et le sens (horaire/anti), on est libre donc, pour ma part, je démarre en bas à droite (vu de l’arrière de la télé)

La ruse est de mettre des LED sur la longueur/largeur de l’écran ET PAS de la télé, si comme moi, elle comporte une bordure sur les bords.
Diviser donc la largeur de l’écran (en mm) par 33 pour avoir le nombre de LED à placer. Si ça tombe pas juste, ajuster au plus proche.

Le ruban comporte 3 connexion : +5V, GND, data, que j’ai relié à un domino fixé au cadre.

Arduino

le code vient de Tweaking4all et  utilise la librairie Adafruit NeoPixel, et fastLED, accessible via le gestionnaire de librairie d’Arduino.

#include <bitswap.h>
#include <chipsets.h>
#include <color.h>
#include <colorpalettes.h>
#include <colorutils.h>
#include <controller.h>
#include <cpp_compat.h>
#include <dmx.h>
#include <FastLED.h>
#include <fastled_config.h>
#include <fastled_delay.h>
#include <fastled_progmem.h>
#include <fastpin.h>
#include <fastspi.h>
#include <fastspi_bitbang.h>
#include <fastspi_dma.h>
#include <fastspi_nop.h>
#include <fastspi_ref.h>
#include <fastspi_types.h>
#include <hsv2rgb.h>
#include <led_sysdefs.h>
#include <lib8tion.h>
#include <noise.h>
#include <pixelset.h>
#include <pixeltypes.h>
#include <platforms.h>
#include <power_mgt.h>



/* t4a_boblight
 * (C) 2014 Hans Luijten, www.tweaking4all.com
 *
 * t4a_boblight is free software and can be distributed and/or modified
 * freely as long as the copyright notice remains in place.
 * Nobody is allowed to charge you for this code.
 * Use of this code is entirely at your own risk.
 */

#include "Adafruit_NeoPixel.h"

// DEFINITIONS

#define STARTCOLOR 0xFFFFFF  // LED colors at start
#define BLACK      0x000000  // LED color BLACK

#define DATAPIN    13        // PIN Arduino connecté à la broche DATA du WS2812
#define LEDCOUNT   92       // Nombre de LED du WS2812 utilisé
#define SHOWDELAY  20       //200 délai (en m/s) avant l'allumage (à reporter dans Hyperion)
#define BAUDRATE   500000    // Serial port 500000 étant prévu pour Arduino
#define BRIGHTNESS 100        // Max. luminosité en % (d'origine à 95)

const char prefix[] = {0x41, 0x64, 0x61, 0x00, 0x5B, 0x0E};  // = 91 LED indiqué par BoblightConfigMaker
char buffer[sizeof(prefix)]; // Temp buffer for receiving prefix data 

// Init LED strand, WS2811/WS2912 specific

// These might work for other configurations:
//   NEO_KHZ800  800 KHz bitstream (most NeoPixel products w/WS2812 LEDs)
//   NEO_KHZ400  400 KHz (classic 'v1' (not v2) FLORA pixels, WS2811 drivers)
//   NEO_GRB     Pixels are wired for GRB bitstream (most NeoPixel products)
//   NEO_RGB     Pixels are wired for RGB bitstream (v1 FLORA pixels, not v2)

Adafruit_NeoPixel strip = Adafruit_NeoPixel(LEDCOUNT, DATAPIN, NEO_GRB + NEO_KHZ800);

int state;                   // Define current state
#define STATE_WAITING   1    // - Waiting for prefix
#define STATE_DO_PREFIX 2    // - Processing prefix
#define STATE_DO_DATA   3    // - Handling incoming LED colors

int readSerial;           // Read Serial data (1)
int currentLED;           // Needed for assigning the color to the right LED

void setup()
{
  strip.begin();            // Init LED strand, set all black, then all to startcolor
  
  strip.setBrightness( (255 / 100) * BRIGHTNESS );
  
  setAllLEDs(BLACK, 0);
  setAllLEDs(STARTCOLOR, 5);
  
  Serial.begin(BAUDRATE);   // Init serial speed
  
  state = STATE_WAITING;    // Initial state: Waiting for prefix
}


void loop()
{
  switch(state)
  {
    case STATE_WAITING:                  // *** Waiting for prefix ***
      if( Serial.available()>0 )
      {
        readSerial = Serial.read();      // Read one character
        
        if ( readSerial == prefix[0] )   // if this character is 1st prefix char
          { state = STATE_DO_PREFIX; }   // then set state to handle prefix
      }
      break;
      
      
    case STATE_DO_PREFIX:                // *** Processing Prefix ***
      if( Serial.available() > sizeof(prefix) - 2 ) 
      {
          Serial.readBytes(buffer, sizeof(prefix) - 1);
          
          for( int Counter = 0; Counter < sizeof(prefix) - 1; Counter++) 
          {
            if( buffer[Counter] == prefix[Counter+1] ) 
            {
              state = STATE_DO_DATA;     // Received character is in prefix, continue
              currentLED = 0;            // Set current LED to the first one
            }
            else 
            {
              state = STATE_WAITING;     // Crap, one of the received chars is NOT in the prefix
              break;                     // Exit, to go back to waiting for the prefix
            } // end if buffer
          } // end for Counter
      } // end if Serial
      break;
      
      
    case STATE_DO_DATA:                  // *** Process incoming color data ***
      if( Serial.available() > 2 )       // if we receive more than 2 chars
      {
        Serial.readBytes( buffer, 3 );   // Abuse buffer to temp store 3 charaters
        strip.setPixelColor( currentLED++, buffer[0], buffer[1], buffer[2]);  // and assing to LEDs
      }
  
      if( currentLED > LEDCOUNT )        // Reached the last LED? Display it!
      {
          strip.show();                  // Make colors visible
          delayMicroseconds(SHOWDELAY);  // Wait a few micro seconds
          
          state = STATE_WAITING;         // Reset to waiting ...
          currentLED = 0;                // and go to LED one
          
          break;                         // and exit ... and do it all over again
      }
      break; 
  } // switch(state)
  
} // loop


// Sets the color of all LEDs in the strand to 'color'
// If 'wait'>0 then it will show a swipe from start to end
void setAllLEDs(uint32_t color, int wait)
{
  for ( int Counter=0; Counter < LEDCOUNT; Counter++ )      // For each LED
  {
    strip.setPixelColor( Counter, color );      // .. set the color

    if( wait > 0 )                        // if a wait time was set then
    {
      strip.show();                     // Show the LED color
      delay(wait);                      // and wait before we do the next LED
    } // if wait
    
  } // for Counter
  
  strip.show();                         // Show all LEDs
} // setAllLEDs

On indique la pin Arduino connecté à DATA du ruban.

La vitesse du port à 500000 n’est pas conventionnel mais est adapté (d’après ce que j’ai compris) à la fréquence de fonctionnement d’Arduino.

La valeur hexa décimal à indiqué dans le code et qui doit correspondre (en autre) au nombre de LED utilisé. La calcul de cette valeur n’est pas très glamour :https://hyperion-project.org/threads/communication-issues-between-raspberry-and-arduino.507/
41, 64, 61 00 (les 4 premier byte ne changent pas)
ensuite, nombre de LED-1 en hexa, 92-1 = 5B
ensuite, la valeur XOR de 55 et de la valeur précédente (5B) E

Pour ma part, ça ne m’a pas aidé. Jai donc utilisé le logiciel BobLight ConfigMaker , prévu à la base pour le système BobLight.

La grosse ruse est que j’ai du indiqué dans ConfigMaker une valeur de LED inférieur de 1 au nombre réel de LED utilisé. Peut être du fait d’un calcul qui ne prend pas en compte la LED numéro 0 ?!?

Le GND d’Arduino est connecté au GND de l’alimentation des LED. L’alimentation d’Arduino est donc fourni par l’USB venant du raspberry.

Pour infos, chaque LED consomme environ 60 mA (si les 3 couleurs sont allumés ensemble), prévoir donc une alimentation en conséquence mais si dans mon cas, avec une alim de 2.5A ça fonctionne ?!?

Hyperion et Openelec

Hyperion est le système qui va gérer la liaison et les gestion des LED entre Openelec et Arduino.

Il faut donc l’installé sur le raspi qui contient Openelec.

On commence par rendre le dossier Flash accessible en écriture.

mount -o remount,rw /flash

On télécharge l’overlay qui gérera les sorties vers les leds

cd /flash/overlays/
curl -L --output enable-spi-overlay.dtb --get https://dl.dropboxusercontent.com/u/3669512/temp/enable-spi-overlay.dtb

on va ensuite modifier le fichier config.txt (présent sur la carte SD) pour activer le bus SPI

nano /flash/config.txt

A la fin du fichier, on rajoute les lignes suivantes:

device_tree_overlay=overlays/enable-spi-overlay.dtb
dtparam=spi=on

On reboot ensuite le raspberry

reboot

On télécharge et installe ensuite hyperion pour Raspi:

curl -L --output install_hyperion.sh --get https://raw.githubusercontent.com/tvdzwan/hyperion/master/bin/install_hyperion.sh
sh ./install_hyperion.sh

Hyperion démarre automatiquement avec Openelec, aucun de ses réglages n’est accessible depuis ce dernier.

Hyperion

Tout ce fait via le logiciel HyperionCron, écrit an JAVA, à installer sur un PC ou autre donc.

On indique la rubrique  Hardware :

type = Adalight c’est la librairie Arduino

Output = /dev/ttyACM0, c’est la sortie USB du raspi

baudrate = 500 000, comme indiqué dans le code Arduino

delay = 20, j’ai mis pareil que dans le code Arduino mais je ne sais pas si c’est pertinent.

RGB Byte order = RGB

Le nombre de LED

direction = Le sens du ruban

1st LED offset = La position de la LED de départ

image process = la surface qui va détecter les couleurs sur l’écran, à tester donc.

Blackborder detection = 20, c’est pour qu’il détecte les bords de la vidéo même avec des bandes noir en haut et bas.

La rubrique Process permet de modifier la transition des couleurs et leurs valeurs.

Le paramètre Smoothing permet d’avoir un allumage des LED moins rapide. En cas d’éclair à l’image par exemple, pour avoir un rendu plus naturel.

Dans la rubrique grabber, cocher enabled. Je n’ai pas creusé plus les paramètres.

dans la rubrique external, cocher Kodi checker et indiquer l’adresse IP du raspi.

La rubrique SSH permet d’envoyer la configuration créé directement dans le Raspberry, dans le dossier /storage/.config/

Pour cela, il faut indiquer l’adresse IP de son Raspi, le username Openelec (root), le password (openelec) puis faire « connect ».

Penser à bien cliquer sur « Create Hyperion Configuration » avant d’envoyer cette configuration, via « Send config« .

Faire stop et start pour actualiser la config.

A noter que « inst/upd Hyperion » permet d’installer et de mettre à jour Hyperion sur le Raspi.

Voila, si pas d’erreur, à l’ouverture d’OpenElec le ruban s’allume en blanc 2  fois  puis selon les couleurs de l’interface choisi pour Openelec.

Raspberry et Arduino

J’ai concocté un support en 3D  permettant d’avoir cote à cote le Raspi et Arduino… dispo sur mon Thingiverse

janvier 19

Ambilight avec Teensy

Ambilight est un système, à base de ruban LED rgb disposé à l’arrière d’une télé, permettant de diffuser des couleurs en rapport avec le contenu de l’image affiché à l’écran.

Ca donne un truc comme ça :

Matériel et logiciel

Disposer le ruban aux 4 bords de la télé, il se découpe et permet de relier les morceaux ensemble via 3 fils à souder.
Faire en sorte que les LED haut/bas et droite/gauche soient alignées.
Le mieux je pense est de les placer sur une plaque ou des liteaux, avec un angle de 45°, fixé derrière la télé.
Chaque bloc de LED fond 33 mm, divisé donc la largeur et hauteur de la télé par cette valeur afin de placer les led le plus régulièrement possible.

Dans mon système, ma télé est relié à un PC sur lequel j’ai installé le mediacenter Kodi.

IMPORTANT : Le ruban à un sens, indiqué par une flèche. Mettre la 1er LED sur le ruban haut ou bas.

  • Le mico-controller Teensy 3.2 (le Teensy LC ne fonctionne pas)
  • L’adaptateur OctoWS2811, qui permet la liaison entre les LED et le teensy, via un connecteur RJ45
  • les logiciels Arduino et TeensyDuino
  • La librairie OctoWS2811 pour Adalight
  • Le logiciel Ambibox

Connecter le Teensy en USB au PC et charger la librairie OctoWS2811/Adalight dans Arduino.
Indiquer simplement le nombre de LED utiliser.

  • Une alimentation « solide » à calculer en fonction du nombre de LED utilisé.
Dans mon système, j’utilise 94 LED :
calculer 0.06A par LED + 20%
84 * 0.06 = 5A + 20% = 6,7A
Pour ma part, j’utilise la sortie 5V de l’alim du PC, qui alimente aussi le Teensy via USB

Connexion

+5V et 0V de l’alim vers le ruban LED
data 01 et 0V du RJ45/Octo vers le ruban LED (Normalement fil orange/blanc et orange)

Teensy rélié à l’USB du PC

Ambibox

C’est le logiciel qui permet de faire comprendre au Teensy/Octo/Adalight que l’image que renvoie le PC doit être coordonné au LED.
Son interface est une horreur d’ergonomie et de clarté mais on arrive à ses fins.

IMPORTANT :  via le panneaux de configuration/gestionnaire de périphériques, noter le numéro du port COM attribué au Teensy.
Ce numéro est à indiquer dans Ambibox.

Plusieurs possibilités son disponible, permettant d’afficher une couleur sur toutes les LED (pratique pour un test), de détecter l’image du PC, selon différent mode qui influenceront sur la latence des LED et/ou le consommation du CPU.
Un mode permet aussi de le lier seulement à Kodi, via une extension à installer sur ce dernier.

  • Indiquer le nombre de LED total
  • le numéro du port COM du Teensy
  • Le sens du ruban
  • Un raccourci pour « backlight », qui permettra d’allumer/éteindre le système.

Cliquer sur « More settings » pour avoir accès au bouton « Wizard capture zone » (qui peut être masqué par une zone qui ce place devant le bouton).

Indiquer le nombre de LED haut/bas (il doit en avoir le même nombre) et droite/gauche.
Attention Ambibox rajoute les LED du bout du ruban haut/bas au LED du ruban droite/gauche.
Dans mon cas, j’ai 29 LED haut/bas et 18 droite/gauche (29+29+18+18=94) MAIS je doit indiquer 20 pour droite/gauche ?!?

Faire « apply », à noter que si on revient ensuite dans « Wizard… » les paramètres précédemment  rentrés ne sont pas indiqués.
Mais, si on fait un test avec « troublesootting » on voit que les valeurs ont bien été appliqués ?!?

Ambibox est vraiment obscure !

Notes

Le mode Screen capture permet d’avoir n’importe quelle logiciel qui active ambilight, même Kodi sans extension dédié.
MAIS si Windows est en mode non aero (graphique au minimum), il ne réagit pas.

 

Aide

Catégorie : Teensy/Arduino | Commenter
octobre 21

Autolevelling avec BLtouch sur Ultimaker Original+

La capteur BLtouch permet de mesurer la distance entre lui et le plateaux afin ensuite d’ajuster la distance buse/plateaux automatiquement. Plus besoin de régler  le plateaux à la main, avec les vis.

BLtouch

Fixation à la tête d’impression

Pour ce faire, il faut d’abord le fixer sur la tête de l’UMO à une hauteur prédéterminé par la hauteur du BLtouch et la distance de sa fixation à la tête et mesurer les coordonnées (X et Y) de la tige du Bltouch par rapport à la buse d’impression.

mesures BLtouchfusion-screen

Le fichier stl du support est disponible sur Thinkiverse bien sur.

Pour calculer les coordonnées du BLtouch : j’ai mis un coup de marqueur noir sur la tige du BLtouch et sur la pointe de la buse, placer une feuille de papier sur la plateaux, fais monter l’ensemble à la main jusqu’à que ça touche bien les coup de marqueur, j’ai repointer les marquage avec une pointe, histoire d’avoir un truc solide.
Ensuite, on mesure les distances entre les différentes marques, par rapport aux axes X et Y.

position-bltouch

 

Ces valeurs serviront ensuite à paramétrer les valeurs   X et Y PROBE_OFFSET_FROM_EXTRUDER  du  firmware.

A noter que, si on amène la tête à fond sur l’axe Y, le BLtouch touche le cache en bois du fond. Il faudra donc plus tard dans le firmware paramétrer un maximum sur l’axe Y de 198 mm au lieu des 210 mm original. Une petite baisse donc de la surface d’impression.
En enlevant le cache en bois, ça doit corriger ça mais j’ai eu la flème de le faire 😉

Connexion à la carte mère

Le Bltouch dispose de 5 fils : 2 pour la détection de position (et le fin de course de l’axe Z) et 3 pour son alimentation et la commade de la monter/descente de la tige. On déconnecte le connecteur de fin de course Z et on branche le BLtouch comme indiqué sur l’image.

bl-touch-pour-auto-leveling pin-j26

Configuration du firmware

J’ai modifier le Marlin RC8 d’origine :   Marlin BLtouch RC8

Cela passe par l’installation d’Arduino, logiciel qui permet de modifier et d’envoyer le firmware sur l’imprimante.
A noter que ce n’est pas destructif, Cura permet facilement d’envoyer le firmware par défaut, pas de crainte de se coté la donc.
On ouvre le dossier Marlin et on ouvre dans Arduino le fichier Marlin.ino.

Arduino doit être configuré comme ça au niveau « type de carte » et « processeur ».

config-arduino

Le fichier pins_ultimain_2.h est aussi à modifier. Juste rajouter :
//BL touch
#define SERVO0_PIN 13

Les différences entrent les 2 firmwares sont surlignés en jaune dans le fichier ci-joint : differences Marlin RC8 – configuration

Réglages

La partie délicate est d’avoir la tige du BLtouch (en position home Z) au même niveaux que la buse.
  1. mettre Z_MIN_POS et Z_PROBE_OFFSET_FROM_EXTRUDER sur la même valeur négative (plus grande que la distance entre la buse et la plateaux, style -50)
  2. Régler la platitude du plateaux grace aux vis de réglages, la buse étant à 43 mm du BLtouch si le plateaux n’est pas horizontal, on aura un décalage.
  3. Faire chauffer la buse à 180°, histoire de la nettoyer (pour ne pas avoir un reste de filament durcit qui fausserait la mesure  )mais sans avoir de filament qui coule
  4. placer la buse au centre du plateaux
  5. faire un Z home, mettre une feuille de papier sur le plateaux puis le remonter , par pas de 0.1 mm, jusqu’à avoir un bon frottement avec la buse.
  6. Noter la valeur Z renvoyé par l’ulticontroller, c’est le décalage entre la buse et le BLtouch en home, dans mon cas -2.8 mm
    (Une valeur négative  plus grande réduit l’écart entre la buse et le plateaux)
  7. mettre Z_MIN_POS à 0 et Z_PROBE_OFFSET_FROM_EXTRUDER à la valeur trouvé en 6
  8. Renvoyer le firmware

Note :

On peut ensuite modifier temporairement, pour des tests, la valeur de Z offset via le Ulticontroller ou via Gcode : M851 Z-2.8; (pour un offset de -2.8 par exemple).
Et ensuite les inscrire dans le firmware via M500
Ou, avec  Arduino /croquis/exporter les binaires compilées (création d’in fichier Marlin.ino.mega.hex) et l’importer dans l’Ultimaker via Repetier ou autre.

Voir Gcode

Utilisation

Une fois fait, le BLtouch peut monter et descendre via la commande M280 P0 S10; et M280 P0 S90;

Le test de niveaux par le code G29; mais aussi via le Ulticontroller.

Il faut donc rajouter dans son sclicer préféré un G29; (avec un HOME avant) pour avoir un test de niveaux avant chaque impression !
Perso, je l’ai mis une fois que le plateaux et chaud, histoire de prendre en compte ses éventuels déformations dus à la température.

septembre 6

Pas de son en HDMI

Les GPU ATI (AMD) peuvent rentrer en conflit avec les drivers Realtek de la carte mère.

Dans mon cas, sous seven, le GPU était bien installé, la sortie HDMI visible et activé pour la lecture MAIS pas de son.

L’installation de ce driver ( HDMI_R270 (Driver HDMI pour AMD))résolu le problème.

J’ai aussi désactivé l’audio intégré à la carte mère, via le BIOS et, lors de l’installation de Catalyst (pour mon GPU ATI), je n’ai pas installé son driver audio.

Catégorie : WINDOWS | Commenter
juillet 30

Récupérer la valeur MIDI du volume

Un croquis permettant de récupérer la valeur MIDI du curseur de volume de Ableton Live et de l’envoyer, via USB/MIDI, sur un Teensy 3.

A noter que, à chaque changement de set Live, la valeur du volume est automatiquement envoyé !

void setup()
{

}

void loop()
{
int ControleChange, valeur;
  if (usbMIDI.read()) 
  {      // si il y a des messages MIDI
      int ControleChange = usbMIDI.getData1();
      int valeur = usbMIDI.getData2();
    Serial.print("Control change: ");
    Serial.println(ControleChange);   
    Serial.print("Valeur: ");
    Serial.println(valeur);
  }

}//loop
Catégorie : Teensy/Arduino | Commenter
juin 20

Serveur d’impression 3d Avec Repetier

Pour ma part, j’ai installé Repetier serveur sur mon Raspberry 3, qui contenait déjà Octoprint… les 2 cohabite sans problème puisque qu’ils ont la même adresse IP mais des port d’accès différents.
On peut cependant l’installer sur un raspbian lite (Jessie)

  • Allez sur le site de repetier et bien choisir la version armf.
  • Placer le fichier .deb dans le dossier tmp (par exemple)
  • Se connecter avec un terminal et faire : cd /tmp
  • Faire : ls pour vérifier la présence du fichier (et copier son nom)
  • Faire : sudo apt-get update et sudo apt-get upgrade, ça peut prendre du temps
  • Lancer l’installation : sudo dpkg -i non_du_fichier_repetier.deb

Une fois fait, on peut accèder à l’interface du serveur Repetier via : ip_du_raspi:3344
Le port peut se modifier via  : sudo nano /usr/local/Repetier-Server/etc/RepetierServer.xml

Mise à jour

La mise à jour de Repetier Server est sensé être automatique, via l’interface mais dans mon cas ça n’a jamais fonctionné.
Donc, je récupère le .deb sur le site que je place sur le Raspi et j’écrase la version installé.

Liaison avec le Slicer

Même si on peut envoyer des fichiers Gcode sur Repetier Server, on à intérêt à installer aussi sur son PC Repetier Host.
De plus, pour ceux qui utilise Fusion 360, ce logiciel peut envoyer directement le modèle en cours de création dans Repetier Host…
Fusion 360 (création) —> RepetierHost (trancheur) —> RepetierServeur (impression 3D)
Celui-çi se connectera au serveur et permettra de piloter toute l’imprimante connecté au Raspi.
Il contient 2 slicer : Cura et Slic3R et de nombreuses options de réglages et mémorisation de paramètres de filament et autres.
Notes : 
Le log de Repetier s’affiche via
tail -100 /var/log/syslog

Wifi et IP fixe

Sur la version Jessie de raspbian.
Editer le fichier de configuration
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
Ecrire dedans
network={
    ssid="nom du SSID"
    psk="clé de sécurité"
}
Redémarrer le raspi
Pour passer en IP fixe, éditer le fichier dédié au DHCP.
sudo nano /etc/dhcpcd.conf
Ecrire dedans (exemple pour Freebox)
interface wlan0

     static ip_address=192.168.0.40
     static routers=192.168.0.254
     static domain_name_servers=192.168.0.254

interface eth0

     static ip_address=192.168.0.40
     static routers=192.168.0.254
     static domain_name_servers=192.168.0.254
un ifconfig permet de lister les connexions disponibles du raspi.

Webcam

FFMPEG

Par défaut, Repetier utilise FFMPEG pour streamer la vidéo.

Pour l’installer :

Ajouter à /etc/apt/sources.list

deb http://www.deb-multimedia.org stable main non-free

Actualiser les dépots

sudo apt-get update

Ajouter la clé du dépot

apt-get --allow-unauthenticated install deb-multimedia-keyring

Refaire un update (pour vérifier)

Installer FFMPEG

sudo apt-get install ffmpeg

Dans les paramètres Webcam de Repetier, indiquer :

  • http://192.168.0.45:10088/?action=stream
  • http://192.168.0.45:10088/?action=snapshot

(Même si dans beaucoup de tuto, il est indiqué 8080 pour le port, chez moi ça fonctionne pas)

Autre méthode

Contrairement à Octoprint, la raspicam n’est pas activé par defaut même si la commande :  raspistill -o cam.jpg
créera un photo dans le dossier home/pi du raspi.

J’ai du passer par une ruse pour avoir la vidéo, car le dossier /dev ne contenait pas video0 (la partie vidéo du raspicam)

sudo rpi-update
sudo modprobe bcm2835-v4l2

La commande v4l2-ctl –list-devices permet d’avoir des infos sur la cam.
et v4l2-ctl -d /dev/video0 –list-formats des infos sur les formats pris en charge

Pour que la cam démarre automatiquement :

sudo nano /etc/rc.local

ajouter (après #print the adress ip) : sudo modprobe bcm2835-v4l2

En cas de problème avec Uv4L

curl http://www.linux-projects.org/listing/uv4l_repo/lrkey.asc | sudo apt-key add -

Sudo nano /etc/apt/sources.list

Ajouter dedans
deb http://www.linux-projects.org/listing/uv4l_repo/raspbian/ jessie main

Mettre à jour et installer le driver uv4l et le serveur

sudo apt-get update
sudo apt-get install uv4l uv4l-raspicam
sudo apt-get install uv4l-server
Pour démarrer le driver au boot
sudo apt-get install uv4l-raspicam-extras

Pour redémarrer
sudo service uv4l_raspicam restart

Bien vérifier que la camera démarre avec Raspbian et que le GPU attribue au moins 128Mb de mémoire via
sudo raspi-config

Les infos de la cam sont accessible via :
sudo nano /etc/uv4l/uv4l-raspicam.conf

<strong>source</strong>
Installation for ARM (Raspberry Pi)
http://blog.cudmore.io/post/2016/06/05/uv4l-on-Raspberry-Pi/

Installation de MJPG streamer

J’ai tellement testé de truc divers que je ne me rappel pas la méthode exacte, mais j’ai suivie cette méthode

https://www.raspberrypi.org/forums/viewtopic.php?p=751735#p751735

Bien appliquer le patch pour Jessie !!

Editer le script :

cd /usr/local/bin
sudo nano streamer.sh
#!/bin/bash
/usr/local/bin/mjpg_streamer -i "/usr/local/lib/input_uvc.so -n -f 10 -r 640x480" -o "/usr/local/lib/output_http.so -p 8080 -w /usr/local/www" &

(-f pour le nombre de frames, -r pour la taille de la vidéo, -p pour le port indiqué dans Repetier)

Le rendre exécutable : chmod +x streamer.sh

Puis, pour démarrer le bouzin :

cd /usr/local/bin
sh streamer.sh
Dans les paramètres de Repetier Server /printer settings/webcam/ indiquer :
  • http://192.168.0.45:8080/?action=stream
  • http://192.168.0.45:8080/?action=snapshot
Pour que ça démarre au boot du Rapi :
cd /home/pi/.config/lxsession/LXDE-pi/
sudo nano autostart
rajouter : @sh /usr/local/bin/streamer.sh

Dans les paramètres de Repetier Server /global settings /TimeLapse/ indiquer : /usr/bin/avconv
J’ai installé FFMPEG MAIS je n’ai pas trouvé comment le lié à Repetier.

Installation de FFMPEG (pas nécessaire si Avconv fonctionne)

Ajouter à la liste des dépots du rapi.

sudo nano /etc/apt/sources.list.d/raspi.list
inscrire dedans
deb http://ftp.debian.org/debian/ stretch main contrib non-free
Mettre à jour : sudo apt-get update
et installer : sudo apt-get install ffmpeg
Pour vérifier :  ffmpeg -version devrait renvoyer des infos
Pour voir la vidéo : ffmpeg -f video4linux2 -r 25 -s 640×480 -i /dev/video0 macam.avi
(remplacer ffmpeg par avconv donne le même résultat pour moi, normale car ce sont tout les deux des transcodeur vidéo)
Sources :
  • https://www.raspberrypi.org/forums/viewtopic.php?t=68247&p=498140
  • http://www.silvesterdao.com/2016/06/raspberry-pi-3-wifi-ip-camera.html
  • fr.mathworks.com/help/supportpkg/raspberrypi/ug/add-support-for-raspberry-pi-camera-board.html?requestedDomain=www.mathworks.com
  • https://www.repetier-server.com/setting-webcam-repetier-server-linux/
  • https://www.raspberrypi.org/forums/viewtopic.php?&t=19661

Configuration imprimante

Logiquement, repetier va récupérer le device et port automatiquement. Cependant, la commande : ls /dev/serial/by-id/
permet de savoir ce qui le Raspi défini.
settings-generale
Pour ma part, j’ai activer le Ping Pong Mode car j’avais des coupures aléatoires lors des print.
La taille du buffer peut êtres augmenté, si l’on constate des problèmes de communication.

Repetier Host

Le logiciel communique avec le serveur, via une clé API indiquée sur le serveur dans : global/settings/connectivity.
Le logiciel peut importer automatiquement les paramètres de l’imprimante, indiqué sur le serveur.
repetierhost-imprimante01
Les paramètres d’impressions (layer, vitesse…) peuvent être exportés en fichier .rcp.
Les paramètres de filaments (température, diamètre…) peuvent être exportés en fichier .rcf.
Catégorie : Impression 3D | Commenter
juin 20

Serveur d’impression 3D avec AstroBox

Un autre système, très différent, plus light et coloré et qui peut se coupler sur une platefome en ligne
J’ai testé, plus rapidement de Octoprint mais j’avoue ne pas être emballé, ça donne plus l’impression de pousser à l’achat d’applications, via des sites partenaires.
Pas d’accès à ma raspicam depuis l’interface web et surtout, beaucoup moins de réglages
De plus, la connexion en Wifi est plus compliqué à mettre en place : brancher en ethernet, chercher l’IP (via sa box), ensuite via l’interface web indiquer le mot de passe WiFi.
Bine penser ensuite à désactiver le HotSpot
astroprint-hotspot astroprint-wifi
De plus, l’interface « local » ne donne pas accès à la webcam et aux réglages de l’imprimante, il faut passer par la page de son compte Astroprint pour l’afficher.

Catégorie : Impression 3D | Commenter
juin 20

Serveur d’impression 3D avec Octoprint

OctoPrint permet de piloter et contrôler une imprimante 3D via une page Web et/ou appli Android.
Mais aussi d’envoyer ses fichiers Gcode via le wifi, sans avoir à sortir la carte SD de son imprimante et de suivre la progression de son impression.

OctoPrint01
OctoPrint-control

Prérequis

  1. Un raspberry Pi
  2. carte mémoire
  3. une clé WiFi (Raspi V1 ou V2)
  4. un clavier/souris sans fil
  5. une PiCam noIR (en option)

Pour infos, l’ensemble consomme environ 600 mA, pour ceux qui souhaiterait l’alimenter via l’alim de l’imprimante par exemple.

Version de Raspi

Pour Infos, j’ai testé avec un Raspberry PI P1 B+, ça fonctionne mais il y a de la latence pour afficher la page Web et pour la WebCam. Sinon, une fois lancé, ça print correctement. Mais je recommande au moins le Raspi 2, qui à un QuadCore pour une consommation de 650mA, entièrement compatible avec Raspian.

En 2015, le Raspberry étant sortie en version 3, avec plus de puissance CPU et le WiFi intégré…
Ca fonctionne : https://sites.google.com/site/octoprintworkingonraspberrypi3/ et c’est carrement mieux, je n’ai pas de latence entre la commande envoyé via le navigateur et l’imprimante. La webcam aussi donne une image en temps réel.

Installation

installer l‘image de Octoprint (avec win2dikImage par exemple) sur la carte SD du raspi.

 Via une télé

Mettre la carte dans le raspi connecté en HDMI sur une TV, le dongle bluetooth clavier/sourie et connecter le bouzin via ethernet,
démarrer et suivre les instruction à l’écran.
ATTENTION :  le clavier sera en mode qwerty (q en place de a et ) en place de -). On peut passer ensuite le claver et azerty.
Accès au menu de configuration via : raspi-config
login : pi
password : raspberry
Modifier principalement :
  • la langue = Fr-utf-8
  • la clavier = generic 105 keys puis French Alternative
  • le fuseau horaire = europe/Paris
  •  « enable boot to desktop… » = démarrer le raspi avec l’interface graphique
  • enable camera (si une branche une PiCam)
  • activer le SSH (si besoin futur)

Via un logiciel (putty, bitvise…)

la config de boot peut êtres accessible via l’interface graphique et/ou terminal (raspi ou putty) avec : sudo raspi-config
Une fois la config effectué on accède à l’interface graphique du Rapi (pas encore de OctoPrint), logiquement le WiFi devrait est connecté via le DHCP de sa box.
Si on veux avoir accès en FTP ou SSH au Raspi :
  • IP = ip du raspi sur le réseau local
  • login = pi
  • password = raspberry

Configuration WiFi

Une fois fait, placer la carte SD dans son PS et éditer le fichier octoprint-network.txt pour indiquer le SSID et passe WiFi de sa box.
## WPA/WPA2 secured

iface wlan0 inet manual

    wpa-ssid "Livebox-6Ae4"

   wpa-psk "FTRD45JHU86DE"

IP fixe

Si l’imprimante reste sur le même réseau, il est préférable de lui attribuer une IP fixe, pour éviter les conflits avec d’éventuels périphériques.
Il suffit de rajouter quelques lignes dans le fichier octoprint-network.txt.
## WPA/WPA2 secured

iface wlan0 inet static
address ip-choisi-hors-plage-dhcp
netmask 255.255.255.0
gateway ip-passerelle-de-sa-box

    wpa-ssid "Livebox-6Ae4"

   wpa-psk "FTRD45JHU86DE"

L’inferface Web

L’interface Web de Octoprint est accèssible via : http://ip-du-raspi ou octopi.local
Une fois dedans, la 1er chose à faire est de créer un profile propre à son imprimante en indiquant notamment  les paramètres de vitesse d’axes X Y Z  E (afficher via l’UltiController et control/motion) et le volume d’impression maxi de l’imprimante.
OctoPrint-profile
Pour ma part, j’ai du cocher l’inversion de l’axe Z pour que le plateau monte avec la flèche du haut.

Gcode

On peut aussi insérer du Gcode pour : before, cancel, pause, end du print.
Pour ma part, j’ai mis ça pour la fin
M104 S0 ;extruder heater off
M140 S0 ;heated bed heater off (if you have it)
G91  ;relative positioning
G1 E-1 F300 ;retract the filament a bit before lifting the nozzle, to release some of the pressure
G1 Z+0.5 E-5 X-20 Y-20 F9000 ;move Z up a bit and retract filament even more
G28 X0 Y0 ;retour position home
G1 Z40 F9000 ; descendre le plateaux de 4cm
M84 ;moteurs off
G90;absolute positioning

Les plugins

Parmi les plus intéressants :

  • OctoDroid (qui fonctionne bien avec moi)
    Permet de piloter les moteurs et de voir la progression sur son smartphone.
    (récupérer le code API dans Utilisateur/User Setting)
  • OctoPrint (version officiel ??)
  • AutoSelect
    Permet de sélectionner pour l’impression dès l’envoie sur Octoprint
  • Print History.
    Permet de garder une trace de ses impressions et de les exporter (format csv ou xls).
    En cas de changement de Raspi, on peux récupérer ce fichier sous : /home/pi/.octoprint/data/printhistory/history.yaml,
    via FTP sur le raspi.
  • Printer Statistics
    Plus complet que Print history mais pas d’export possible
    octoprint-printerstatistics
  • Automatic shutdown
    Permet d’étendre son imprimante quand l’impression est fini
  • PushBullet
    Pour être prévenu via l’appli dédié d’événement de l’imprimante
  • ScreenSquich
    Pour avoir un affichage de l’interface Web plus adapté au smartphone
  • FirmwareUpdater
    Pour mettre à jour le firmware de son imprimante, automatiquement ou via un fichier
  • DisplayProgress
    Pour afficher la progression du print sur le LCD de l’imprimante

Cura

OctoPrint intègre une version de cura (dossier /usr/local/bin/cura_engine), via un plugin.

GitHub

Il suffit de générer des profiles, via un Cura installé sur PC et de les importer dans les réglages du plugin.

octoprint-cura

Une fois fait, on importe le fichier STL qui va ensuite être slicé par cura, qui va ensuite créer un fichier .gco

octoprint-stlviewer

Slic3R

Ce slicer présente l’intérêt de pouvoir communiquer directement avec Octoprint afin d’y envoyer le ficher gcode, généré par Slic3R.

octoprint-slic3r

L’accès est donné via la clé API, fourni par Octoprint (setting/API)

Accès réseaux

On partager certains dossiers de Octoprint via le réseaux de Windows.
Notamment les dossiers :

  • /home/pi/.octoprint/uploads
  • /home/pi/.octoprint/timelapse

Qui permettront d’envoyer directement le fichier Gcode, fourni par Cura, sur Octoprint et aussi de récupérer les vidéos timelapse généré par Octoprint.

Accéder au raspi via un terminal.

mettre à jour

sudo apt-get update

Installer le protocole smb

sudo apt-get install samba

donner des droits aux dossiers et à leurs contenus

sudo chmod 777 -R /home/pi/.octoprint/uploads
sudo chmod 777 -R /home/pi/.octoprint/timelapse

Paramétrer le partage en éditant le fichier de configuration

sudo nano /etc/samba/smb.conf

Dans la rubrique « global settings« , bien veiller à ce que le nom du groupe soit bien le même que sur votre Windows (par défaut workgroup)
Dans la rubrique « Autentification« , Il faut remplacer : security=user par security=share.
Si besoin, dé-commenter : wins support = yes
Puis, dans la rubrique « share definitions« , ajouter les lignes suivantes à la fin du fichier (path indique le chemin du disque externe) :

[Octoprint-Gcode]
path = /home/pi/.octoprint/uploads
browseable = yes
writable = yes
read only = no
guest ok = yes
create mask = 0777
directory mask = 0777
public = yes
[Octoprint-Timelapse]
path = /home/pi/.octoprint/timelapse
browseable = yes
writable = yes
read only = no
guest ok = yes
create mask = 07777
directory mask = 0777
public = yes

Ctrl+X et oui pour valider, pour infos je ne suis pas un pro de la sécurité sur Linux, donc…

redémarrer samba

sudo /etc/init.d/samba restart

La vidéo

Le raspi à une connectique prévu pour une petite camera (raspiCam), l’interface d’Octoprint permet de visualiser cette dernière et faireun timelapse de l’impression. Une version avec un grand angle est aussi disponible.
J’ai fais un support pour le Raspi et sa camera, dispo sur ThingIverse.
Même si la visualisation de la vidéo peut se faire directement depuis l’interface d’Octoprint, on peut en faire plus grace au protocole MJPG streamer, implemté dans le raspi.
La page : http://ip-du-raspi:8080/index.html permet d’accéder à d’autre option.
octoprint-MJPG-streamer
Et notamment, la visualisation via VLC avec l’URL : http://ip-de-raspi:8080/?action=stream
Pour désactiver la LED de la caméra :
sudo nano /boot/config.txt
# ajouter la ligne suivante :
disable_camera_led=1
# rebooter
sudo reboot

Accès via Internet

A ce stade, Octoprint et la webcam ne sont accessibles que via votre réseau local.
Pour y avoir accès depuis n’importe quel ordinateur ou smartphone connectés à Internet, il suffit de faire une redirection de port 80 de son IP fixe de box vers l’IP du raspi.
Attention quand même car aucun mot de passe est demandé donc….
source01
Catégorie : Impression 3D | Commenter
juin 10

rester connecté plus longtemps à l’admin

Par défaut, une fois coché « resté connecté » lors de la connexion à l’admin de WordPress, le cookie dédié mémorise pour 2 semaines.

C’est par sécurité mais si c’est son PC perso, c’est chiant ! Pour modifier cette durée, simple ajout au fichier functions.php suffit :

add_filter( 'auth_cookie_expiration', 'stay_logged_in_for_1_year' );
function stay_logged_in_for_1_year( $expire ) {
  return 15778800; // 6 mois, en secondes
}

***

Catégorie : WORDPRESS | Commenter