juillet 3

Arduino ne s’ouvre plus

Suite au passage à Windows 10 Update Creator, Arduino commence à s’ouvrir puis se ferme sans message d’erreur.

Pour corriger ça, supprimer le dossier « Arduino 15″ situé dans : User/AppData/local

Et voila, ça fonctionne !

Catégorie : Teensy/Arduino | Commenter
avril 29

Carte réseaux à du mal à se reveiller

Parfois, lors de la mise en vielle profonde de Windows, la carte réseaux met du temps à retrouver la connexion.

Dans : propriétés/gestion de l’alimentation de la carte il faut, d’une part, décocher la case « autoriser l’ordinateur à éteindre… »

mais surtout dans : propriétés/avancés désactiver l’économie d’énergie.

Catégorie : WINDOWS | Commenter
février 25

Resilio Syncro

Résilio syncro (anciennement BitTorrent Syncro)

Installation sur un serveur 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

On se place dans le dossier d’installation

cd /usr/bin

et on change l’IP (local par defaut) et le port

./rslsync --webui.listen ***.***.***.***:8888

Le fichier de config se trouve :

/etc/resilio-sync/

On fois fait, on y a accès depuis son navigateur, reste juste à suivre la démarche de création de compte.

Par contre, à chaque reboot du serveur, penser à relancer Resilio et son interface:

cd /usr/bin
./rslsync --webui.listen ***.***.***.***:8888

Mise à jour

Elle se fera avec un classique apt-get upgrade

En cas de problème de clé

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

NOTE :

Ne pas oublier de donner des droits 777 au dossier que l’on souhaite ajouter au partage sous peine de message d’erreur lors de l’ajout via Resilio.

Par défaut, Resilio à un dossier « Archive » qui stocke les fichiers supprimer. Ca peut vite remplir le disque-dur.
Pour éviter ça, faire un clic-droit/préférences sur le dossier syncronisé et décocher la case dédié.

 

source1

source2

 

 

 

Catégorie : Linux | Commenter
février 4

Ambilight avec OpenElec 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 (LibreElec fonctionne aussi) connecté en USB à un Arduino Uno (un nano devrait aussi fonctionner) 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.

Problème avec la version 8 de OpenElec

Le passage de la version 7 à 8 à supprimer 2 librairie de Openelec (/usr/lib/), indispensable pourtant à Hyperion :

  • libfontconfig.so.1.9.2
  • libfreetype.so.6.13.0

Comme ce dossier est protégé en écriture, il faut les mettre dans le dossier : /storage/hyperion/bin.
MAIS la ruse est qui faut les renommer en :

  • libfontconfig.so.1
  • libfreetype.so.6

pour que ça fonctionne ??

LibrairieHyperion
Source

Hyperion

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

Un tuto en Français est disponible pour le réglages précis des LED :

On indique la rubrique  Hardware :

type = Adalight c’est la librairie Arduino

Output = /dev/ttyACM0, c’est la sortie USB du raspi
Le port tty peut être trouvé en débranchant/branchant l’Arduino et taper la commande : dmesg -s 1024 pour le Raspi.
Cela affiche les derniers log 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

J’avais fais une 1er version avec le BLtouch à l’arrière de la tête mais du coup, il se trouvait un peu loin de la buse.
Cette solution permet d’avoir le BLtouch au plus près de la buse, donc plus de précision.

Le dessus du BLtouch doit être à 36.3 + 8.3 = 44.6 mm de la pointe de la buse.

Mesurer aussi les coordonnées (X et Y) de la tige du Bltouch par rapport à la buse d’impression.

mesures BLtouch 

Dans mon cas, le BLtouch se trouve à 20 sur l’axe X et 0 sur l’axe Y.

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

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

Selon l’époque, et donc la version de Marlin, les indications indiqués içi peuvent varier. Mais l’esprit reste le même 😉

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 du z-offset

La partie délicate est d’avoir la tige du BLtouch (en position home Z) au même niveaux que la buse.
Pour ça, je me suis fait un script en Gcode :
M117 Z-OFFSET…
G90 ; mode absolue
M107 ; pas de ventilation
M140 S60 ; plateau a 60
M190 S60 ; attendre que le plateaux soit a temperature
M104 ; buse a temperature
M109 S190 ; buse a 190 (en meme temps que la plateaux)
G28 ; home
M117 NETTOYAGE BUSE
G0 Z50 ; descendre de 5 cm
G4 P5000 ; attendre 5 sec
M117 BLTOUCH AU CENTRE
M211 S0 ; désactiver le Z-EndStop, pour pouvoir faire un Z négatif
G0 X85 Y105 F5000; BLtouch au centre de la zone d’impression
G0 Z0 ; plateau à 0
M851 ; afficher le Z-offset actuel
; ajuster le Z-offset (buse/papier/plateau) via préparer/déplacer un axe/Z/0.1 mm
; une valeur négative +grande rapproche le plateau de la buse
G4 P30000 ; attendre 30 sec
M211 S1 ; activer le Z-EndStop
M300 ; bip
M117 FIN Z-OFFSET
G0 Z10; descendre le plateau
M104 S0 ; plateaux off
M140 S0 ; buse off
M84 ; moteurs off

Une fois la valeur du Z-offset trouvé, l’indiquer dans le Marlin au paramètre : Z_PROBE_OFFSET_FROM_EXTRUDER

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.

Note

En fait, avec le système autolevelling, le Z-offset correspond à la position (dans l’axe Z) du BLtouch par rapport à la buse et plus de la position de la buse par rapport au plateaux.
J’ai remarqué que si je fais un Z-offset après avoir fait un G29 (autolevelling), la distance buse/plateau n’est pas la même. Je pensais que l’autolevelling « modifiait » cette distance.

MAIS, j’ai fais un test en baissant de beaucoup le plateau  sur un angle (fais un G29) et d’amener la buse sur la partie abaissé, je pensais que l’autolevelling allait compenser la baisse et monter le plateau automatiquement. Il n’est n’est rien !

Je pense que l’autolevelling ne se met en route que lors d’un print et pas lors de déplacement en dehors d’un print.

Réglages du Marlin

Corrections que j’ai faites au Marlin 1.1.8 d’origine

//#define SHOW_BOOTSCREEN
  #define MOTHERBOARD BOARD_ULTIMAIN_2
//#define CUSTOM_MACHINE_NAME "UMO+"
#define DEFAULT_NOMINAL_FILAMENT_DIA 2.85 //3.0
  #define MIXING_VIRTUAL_TOOLS 16  // Use the Virtual Tool method with M163 and M164
#define POWER_SUPPLY 1
#define TEMP_SENSOR_0 20
#define TEMP_SENSOR_BED 20
#define BANG_MAX 255     // Limits current to nozzle while in bang-bang mode; 255=full current
#define MAX_BED_POWER 255 // limits duty cycle to bed; 255=full current
//#define PREVENT_COLD_EXTRUSION
//#define PREVENT_LENGTHY_EXTRUDE
//#define EXTRUDE_MAXLENGTH 200
#define X_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop.
#define Y_MIN_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop.
#define X_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop.
#define Y_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop.
#define Z_MAX_ENDSTOP_INVERTING true // set to true to invert the logic of the endstop.
#define DEFAULT_AXIS_STEPS_PER_UNIT   { 78.7402,78.7402,200.0,760*1.1 }
#define DEFAULT_MAX_FEEDRATE          { 500, 500, 30, 25 }
#define DEFAULT_MAX_ACCELERATION      { 9000, 9000, 100, 10000 }
#define DEFAULT_ACCELERATION          4000    // X, Y, Z and E acceleration for printing moves
#define DEFAULT_XJERK                 20.0
#define DEFAULT_YJERK                 20.0
#define DEFAULT_ZJERK                  0.4
#define BLTOUCH
#define X_PROBE_OFFSET_FROM_EXTRUDER 20  // X offset: -left  +right  [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER 0  // Y offset: -front +behind [the nozzle]
#define Z_PROBE_OFFSET_FROM_EXTRUDER -2.8  // Z offset: -below +above  [the nozzle]
 
// vitesse en X et Y lors du G29, pour éviter les vibrations qui peuvent perturber le BLtouch
#define XY_PROBE_SPEED 6000 //9000
// divise par * la vitesse de monté du plateau, pour éviter les vibrations qui peuvent perturber le BLtouch
#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 4) //2
#define Z_CLEARANCE_DEPLOY_PROBE   6 // distance imposé pour déployer le BLtouch, sera ajouté au z-offset.
// Lors d'un z-offset (M851) on à une marge de + ou - ** mm de réglage
// Activer le test de précision du BLtouch (M48) on doit avoir : Standard Deviation: 0.0*
#define Z_MIN_PROBE_REPEATABILITY_TEST
#define INVERT_X_DIR true
#define INVERT_Y_DIR false
#define INVERT_Z_DIR true
// Taile de la zone maximum d'impression
#define X_BED_SIZE 210
#define Y_BED_SIZE 205 // a cause de l'agraphe qui tient le verre du plateau
#define Z_MIN_POS 0 // mettre une valeur négative pour monter le plateau "au dessus" de la buse
#define Z_MAX_POS 205
#define AUTO_BED_LEVELING_BILINEAR
#if ENABLED(AUTO_BED_LEVELING_LINEAR) || ENABLED(AUTO_BED_LEVELING_BILINEAR) // choisi celui la, sonde à : -12 et 44
  #define LEFT_PROBE_BED_POSITION 20
  #define RIGHT_PROBE_BED_POSITION 210
  #define FRONT_PROBE_BED_POSITION 0
  #define BACK_PROBE_BED_POSITION 200
  #define MIN_PROBE_EDGE 0
  #define ABL_PROBE_PT_1_X 110
  #define ABL_PROBE_PT_1_Y 200
  #define ABL_PROBE_PT_2_X 0
  #define ABL_PROBE_PT_2_Y 44
  #define ABL_PROBE_PT_3_X 198
  #define ABL_PROBE_PT_3_Y 44
  #define UBL_PROBE_PT_1_X 110       // Probing points for 3-Point leveling of the mesh
  #define UBL_PROBE_PT_1_Y 200
  #define UBL_PROBE_PT_2_X 44
  #define UBL_PROBE_PT_2_Y 44
  #define UBL_PROBE_PT_3_X 198
  #define UBL_PROBE_PT_3_Y 44
#define LEVEL_BED_CORNERS
#define EEPROM_SETTINGS // Enable for M500 and M501 commands
#define PREHEAT_1_TEMP_HOTEND 190
#define LCD_LANGUAGE fr_utf8 // il faut supprimer les accents dans le fichier language_fr_utf8.h
#define DISPLAY_CHARSET_HD44780 WESTERN //JAPANESE
#define ULTRA_LCD   // Character based
#define SDSUPPORT
#define SPEAKER
#define ULTIMAKERCONTROLLER
#define NUM_SERVOS 1 // Servo index starts with 0 for M280 command

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 après le G28 mais jamais après,  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.

 

Test du BLtouch

Dans le fichier configuration.h du firmware, on doit avoir :

// Enable Z Probe Repeatability test to see how accurate your probe is
#define Z_MIN_PROBE_REPEATABILITY_TEST

Lancer le gcode :

M48 P10 X100 Y100

Cela aura pour effet de faire 10 test su BLtouch à la position X/Y de 100. Et renvoie par exemple :

19:47:17.541: Mean: 0.482500 Min: 0.465 Max: 0.505 Range: 0.040
19:47:17.546: Standard Deviation: 0.015851
19:47:17.546: X:112.00 Y:57.00 Z:8.10 E:0.00 Count X:8819 Y:4488 Z:1620

La déviation standard, indiqué par le fabriquant du BLtouch, est de 0.01 mm, tant que c’est négligeable par rapport à une hauteur de couche et que c’est régulier, c’est OK !

Pour avoir une bonne précision, j’ai baissé la vitesse de monté du plateau (#define Z_PROBE_SPEED_SLOW (Z_PROBE_SPEED_FAST / 4)) pour éviter les vibrations de ce dernier.
En bref, tout ce qui peut altérer la mesure est à vérifier (interférence électrique, vibrations…)

Le site http://lokspace.eu/3d-printer-auto-bed-leveling-mesh-visualizer/ permet d’afficher en image la planitude du plateau.
Dans mon cas, j’ai souvent des résultat différent entre les tests du BLtouch !?!

Usage du M48

Usage M48 P# X# Y# V# E L# S Where P, X, Y, V, E, S, and L are all optional
P = Number of sampled points (4-50, default 10)
X = Sample X position
Y = Sample Y position
V = Verbose level (0-4, default=1)
E = Engage Z probe for each reading
L = Number of legs of movement before probe
S = Star (with P points to the star)

 

 

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

Sauvegarde

La sauvegarde de tous les réglages, Gcode et STL, TimeLapse… peuvent se faire via le dossier /var/lib/Repetier-Server/
Notamment le fichier xml (du nom de l’imprimante configurée) contient les paramètres imprimantes et les Gcodes ajoutés par l’utilisateur.

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.

Dossier en réseau

Il peut être sympa d’avoir un dossier de Repetier Serveur partagé via le réseau de Windows.
J’ai créé un dossier gcode (avec des droit 777) que j’ai ajouté à la configuration samba (à installer avant sur le raspi).
Modifier le fichier de configuration  via  sudo nano /etc/samba/smb.conf  et ajouter :
(dans global)
wins support = yes
security = user
(dans share definitions)
[Gcode]

comment = Gcode à imprimer
path = /home/pi/gcode
browseable = yes
writable = yes
guest ok = yes
create mode = 0777
directory mode = 0777
read only = no

[RepetierServeur]
comment = configuration et TimeLaspe
path = /var/lib/Repetier-Server
browseable = yes
writable = yes
guest ok = yes
create mode =0777
directory mode = 0777
read only = no

L’interface de Repetier (paramètres globaux/dossiers) permet d’ajouter ce dossier à la liste des importation de Gcode.
Le slicer enregistre son Gcode dans le dossier partagé et via Repetier Serveur, on l’ajoute à la liste des print.

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
Notes : 
Le log de Repetier s’affiche via
tail -100 /var/log/syslog

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