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

 

NOTE :

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 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.

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

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