Quantcast
Channel: MaMaquette
Viewing all 610 articles
Browse latest View live

Orange Pi lance une nouvelle carte de développement basée sur le SoC RK3399 à 90€ (2Go DDR3, 16Go eMMC, mPCIe, 2x caméras 13MP…)

$
0
0

Décidément, Orange Pi est vraiment très prolifique en ce début d’année. Après avoir presque complètement revu sa gamme en fin d’année dernière et lancé une première carte à base du Allwinner H6, Orange Pi Lite2 vient de lancer l’Orange Pi RK3399. Cette carte sort des cartes de développement bon marché que Shenzhen Xunlong a l’habitude de proposer. Cette nouvelle carte est construite autour du SoC Rockchip RK3399. C’est un processeur Hexa Core basé sur l’architecture ARM Cortex A72/A53. La partie graphique est prise en charge par le GPU Mali-T860MP4 qui supporte le décodage vidéo 4K. Le Mali-T860MP4 apporte également le support de l’USB 3, du PCIe, ainsi que Gigabit Ethernet.

La nouvelle carte Orange Pi RK3399 semble tirer pleinement profit de toutes les fonctionnalités proposées par le SoC de Rockchip. Voici ce qui est indiqué sur la présentation technique disponible sur la boutique de

  • SoC : processeur Rockchip K3399 hexa-core avec deux cœurs ARM Cortex A72 jusqu’à 2.0 GHz, quatre cœurs Cortex A53, et un GPU ARM Mali-T860 MP4 avec support pour OpenGL 1.1 à 3.1 support, OpenVG1.1, OpenCL et DX 11
  • Mémoire : 2 Go DDR3
  • Stockage :
    • 16Go de mémoire Flash eMMC intégré
    • Lecteur de carte micro SD,
    • Connecteur mPCIe (pour mSATA / LTE) et interface SATA
  • Sortie vidéo / Interfaces d’entrée et d’affichage
    • 1x HDMI 2.0 jusqu’à 4K@60 Hz
    • 1x interface DisplayPort (DP) 1.2 jusqu’à 4K@60Hz (aucune indication sur le type de sortie)
    • Interface MIPI DSI 2x jusqu’à 2560×1600@60 Hz
    • 1x eDP 1.3 (4 voies à 10,8 Gbps)
    • 1x port d’entrée HDMI
    • Décodage vidéo : prise en charge du codec vidéo 4K VP9 et 10 bits H.265 jusqu’à 60 ips
  • Audio
    • Sortie audio numérique via HDMI ou DisplayPort
    • Prise combo 3,5 mm avec sortie audio stéréo et entrée micro
    • 1x S/PDIF optique
    • 1x en-tête de haut-parleur (1.5W 8Ω ou 2.5W 4Ω)
    • 1x microphone embarqué
      1x interface pour réseau de microphones (idéal pour le reconnaissance vocal et le développement d’assistant vocal)
    • 1x sortie I2S et interface d’entrée jusqu’à 8 canaux
  • Connectivité
    • Port Ethernet Gigabit (RTL8211E)
    • MIMO WiFi bi-bande 802.11ac 2×2
    • Bluetooth 4.1 LE (module AP6356S)
    • USB : 4 ports hôtes USB 2.0, 1 port USB 3.0 type C
    • Caméra – 2 interfaces MIPI CSI jusqu’à 13MP pour chaque interface
  • Capteurs : Gyroscope + Capteur G (MPU6500), Gyroscope (LSM6DS3), Capteur HALL (HAL248TWCL), Capteur de lumière (CM32181) et Boussole (AK09911)
  • Débogage : connecteur à 3 broches. Pourra être également utilisé pour installer le système sans écran en suivant ce tutoriel.
  • Autres connecteurs
    • Embase femelle GPIO à pas de 40 mm, 2,54 mm, 4x I2C, 1x SPI, 2x UART, 5 GPIO, etc …
    • 1x mini PCIe pour LTE (USB) ou mSATA
    • Emplacement pour carte SIM
  • Divers
    • Récepteur IR
    • 2 voyants d’état d’alimentation (rouge et vert)
    • 1x LED d’état d’alimentation SATA (verte)
    • Boutons: réinitialisation, puissance, récupération, menu, retour, vol + et vol-
  • Alimentation
    • 12V/2A via une prise DC (5.5 / 2.1mm) ou une embase à 2 broches
    • 5V via le port de type C ou un connecteur à 2 broches
    • Support de batterie double (7.4V)
  • Contrôleur de charge (PMU)
  • Dimensions : 129 x 99 mm
  • Poids : 99 grammes

Comme vous pouvez le constater, cette carte fait rentrer l’Orange Pi dans les cartes de développement haut de gamme. On y trouve des fonctions totalement inédites pour un prix très raisonnable. L’Orange Pi RK3399 est proposée à 89,31€ (+3,84€ de frais de port dans mon cas). Cette carte est vraiment pensée pour des application embarquée. IL est possible de l’alimenter en 5V, 12V et sur batterie. Pour cela, on dispose de 3 contrôleurs de charge (RK808, BQ25700 IC, CW2015). Reste à savoir quel type de carte sera compatible. Espérons que Shenzhen Xunlong a retenu les erreurs du passé et qu’il sera possible d’utiliser des caméras courantes. On trouve des caméras 13MP à base du capteur CMOS OV13850 pour moins de 25€ sur AliExpress.

A part l’absence de connecteur pour remplacer l’antenne WiFi MIMO interne et l’absence d’un connecteur pour écran LCD tactile (qu’on pourra sans problème remplacer par un écran LCD prenant en charge la fonction tactile par USB), c’est un sans faute pour Shenzhen Xunlong. Pour le moment, aucune distribution n’est encore disponible sur la page des ressources. Shenzhen Xunlong annonce la disponibilité d’Android 6 et de Debian 9. Comme d’habitude, il faudra encore attendre quelques jours avant que les ressources soient disponibles. Espérons qu’une distribution d’Armbian sera également proposée courant de l’année. L’équipe d’Armbian ne va pas chômer cette année !

Le délai de conception d’une carte de développement étant d’au moins 6 mois, on pourrait espérer que Shenzhen Xunlong propose un Orange Pi RK3399Pro. Le moteur d’intelligence artificielle du nouveau RK3399Pro présenté à l’occasion du CES 2018 serait un vrai plus pour le développement d’applications mobiles exploitant les deux caméras MIPI CSI 13MP. Avec cette carte, on dispose d’une base solide pour développer un système de conduite autonome DIY. Sans aller si loin, on pourrait profiter du moteur d’IA pour améliorer la reconnaissance vocale pour piloter nos appareils domotiques. On attend d’ailleurs toujours plus de détail sur le Raspberry Pi 4 à ce sujet, la fondation travaillant avec Google pour proposer une nouvelle génération de développement et d’apprentissage gérant l’intelligence artificielle (du moins la technologie IA de Google).

 

Cet article Orange Pi lance une nouvelle carte de développement basée sur le SoC RK3399 à 90€ (2Go DDR3, 16Go eMMC, mPCIe, 2x caméras 13MP…) est apparu en premier sur Projets DIY - Domotique et objets connectés à faire soi-même.


#Bon plan : nouveau drone DJI Mavic Air 4K en promo dès 749,15€ sur Gearbest

$
0
0

DJI étoffe sa gamme de drone avec le nouveau Mavic Air. DJI continue de progresser et propose ici un modèle encore plus petit tout en étant plus puissant et plus facile d’utilisation. On ne change pas une recette qui marche. Le DJI Mavic Air est toujours repliable. Le drone plié est aussi petit qu’une phablet, vous pouvez le tenir d’une seule main ! Comme son grand frère le Mavic Pro Mini, le Mavic Air dispose toujours d’une autonomie de vol de 20 minutes malgré sa petite taille.

Les quatre bras qui embarquent les moteurs/hélice se replient pour faciliter le transport du drone dans un sac de sport. DJI a vraiment mis le paquet sur la vidéo. La caméra embarquée dans un nacelle 3 axes, permet de filmer en 4K. Il est maintenant possible de réaliser des films en slow motion en 1080p à 120 images par secondes.

Principales caractéristiques du DJI Mavic Air

Caractéristiques du système photo/vidéo

  • Caméra à cardan 3 axes: combinée avec le nouvel algorithme de contrôle, améliore considérablement la stabilité de l’écran, atteignant une précision de contrôle jusqu’à +/- 0,005 degré
  • Prise de vue panoramique sphérique à une seule touche: résolution 8192 x 4096px, prise en charge de la photographie panoramique verticale à grand angle de 180 degrés et de la réalité virtuelle
  • Vidéo HD 4K et 100Mbps: vidéo 4K / 30fps à 100Mbps
  • Slow Motion Video: prend des vidéos en 1080p / 120fps
  • Photos HDR: résout le problème de surexposition ou trop sombre, prise de photos plus naturelles et plus belles

Tous les modes sont présentés dans cette courte vidéo

Encore plus facile à transporter

  • Design 3D pliant classique sur les drones DJI. Le drone plié est aussi petit qu’un téléphone portable, vous pouvez le tenir d’une seule main
  • Transmetteur pliable: avec la conception de poignée de support de téléphone, placez les manettes dans la télécommande, plus pratique à utiliser et à transporter

Système d’aide au pilotage intelligent pour rendre l’expérience de vol encore meilleure

  • Smart Mode. Système de reconnaissance plus précis. Il permet au Mavic Air de vous suivre en toute circonstance. Vous pourrez courir, sauter et même galoper à cheval !
  • One Key Short Film. Une courte pression, prenez votre grand court métrage sans effort
  • Contrôle du geste de la main. Contrôlez le drone pour qu’il décolle, atterrisse ou bouge à la main, ce qui rend la photographie plus relaxante et amusante
  • Touchez pour voler: planifier la ligne de vol plus librement, prend en charge la marche avant, inversée, la direction libre et le mode de coordonnées

Sécurité renforcée

  • FlightAutonomy 2.0. La technologie VIO de DJI utilise 15 capteurs intégrés détecter les obstacles et les éviter. Il assure également le retour automatique et une protection plus sûre pour la caméra
  • Performances extraordinaires. 21 minutes de vol, alimentation FOC puissante, émetteur vidéo Wi-Fi bi-bande amélioré et support VR

Le DJI Mavic Air en chiffres

  • Taille: 168 x 83 x 49mm (plié), 168 x 184 x 64mm (non plié)
  • Temps de vol max en vol stationnaire: 20 minutes
  • Distance de vol maximum: 10km
  • Niveau anti-vent maximum: 5
  • Angle de carrelage maximum: 35 degrés (mode S), 15 degrés (mode P)
  • Angle de rotation maximum: 250 degrés / s (mode S), 250 degrés / s (mode P)
  • Température de fonctionnement: 0 – 40°C
  • Fréquence: 2.400 – 2.4835 GHz, 5.275 – 5.850GHz
  • Batterie intégrée: 2970mAh
  • Courant de fonctionnement / tension: 1400mA 3.7V (lors de la connexion à l’appareil Android)

Quelle version choisir ? Single version (version de vase) ou Set

Par rapport à la version simple (Single Version), la version Set contient

  • 2 batteries de vol supplémentaires,
  • 2 paires d’hélices,
  • 1chargeur de batteries,
  • 1 convertisseur de batterie,
  • un sac à bandoulière

Codes promo et coupons drone DJI Mavic Air

DJI Mavic Air RC Drone 32MP Spherical Panorama Photo - SINGLE VERSION WHITE

Coupon vérifié le 9 janv. 2018. Quantité limitée à N/A pièces

749,15€ Vente flash
Afficher le coupon
24 jours restants

DJI Mavic Air RC Drone 32MP Spherical Panorama Photo - SET VERSION WHITE

Coupon vérifié le 9 janv. 2018. Quantité limitée à N/A pièces

915,81€ Vente flash
Afficher le coupon
24 jours restants

Promos drone DJI Mavic Air sur Internet

  • Tous les prix mentionnés ci-dessus sont en Euro.
  • Ce produit est disponible sur FastTech, Banggood, Amazon.fr, GeekBuying.
  • Sur fasttech.com, vous pouvez acheter Authentic DJI Mavic Air R/C Quadcopter (5.8GHz FPV, 4K Video Camera) pour seulement 736,06€, qui est 18% inférieur au coût en GeekBuying (900,15€).
  • Le prix le plus bas de DJI Mavic Air 4K Foldable RC Drone Fly More Combo Arctic White a été obtenu le 30 janvier 2018 20 h 15 min.
Spécifications

Critères

Objets connectés | Drones | Robots | Gadgets: Quadricopter

Marque | fabricant: DJI

Sorties | ports USB | relais: 0

~tags: EAN : 6958265159695

Cet article #Bon plan : nouveau drone DJI Mavic Air 4K en promo dès 749,15€ sur Gearbest est apparu en premier sur Projets DIY - Domotique et objets connectés à faire soi-même.

Fabriquer une borne d’arcade rétro gaming DIY avec joystick et 8 boutons Recalbox ou Retropie pour moins de 85€

$
0
0

Dans le tutoriel précédent, nous avons vu comment installer et configurer la distribution Recalbox qui permet de transformer le Raspberry Pi 3 en console de Retro Gaming. Aujourd’hui, je vous propose de passer à la partie matérielle et de construire une petite borne d’arcade pour la distribution Recalbox ou Retropie. On trouve de très nombreux projets sur internet. Tout le monde n’a pas forcément le temps et l’outillage pour fabriquer une borne d’arcade. Je vous propose donc d’utiliser des composants du marché. On trouve pour environ 20€ des boitiers pour borne d’arcade en acrylique. Ce sont des boitiers basiques dans lequel on viendra installer le Raspberry Pi 3 et un kit joystick 8 boutons. En profitant des promos, on peut s’équiper pour moins de 85€ tout compris

Matériel nécessaire

En ce moment, le boitier d’arcade seul est en promo à 11,62€ depuis l’entrepôt anglais de Banggood. Le kit joystick USB avec 10 boutons est en promo à 15,70€. Plusieurs couleurs sont disponibles (noir, rose, rouge, blanc…). Pour jouer à deux ou plus, vous pourrez brancher plusieurs joystick au Raspberry Pi. Recalbox est capable de détecter automatiquement les joystick branchés en USB. Nous allons voir plus bas comment le configurer.

DIY Handle Arcade Joystick Game Controller Acrylic Panel and Case Replacement

11,62 14,22
Dernière mise à jour du 31 janvier 2018 13 h 46 min

Game DIY Arcade Set Kits Replacement Parts USB Encoder to PC Joystick and Buttons

15,70 29,21
Dernière mise à jour du 31 janvier 2018 13 h 46 min

Matériel nécessaire pour la Recalbox

Coté Raspberry Pi, vous aurez besoin de très peu de matériel. Une carte SD de 8Go est suffisante pour démarrer. Vous pouvez stocker vos jeux et vos parties sur une clé USB ou un disque dur USB. Vous aurez également besoin d’une alimentation 5V 2.5A ou 3A. Vous pourrez utiliser un clavier pour naviguer dans les menus ou une Gamepad USB pour configurer le joystick.

Dernière mise à jour des prix le 31 janvier 2018 13 h 54 min

Déballage du boitier arcade acrylic

J’ai reçu le boitier dans un emballage carton de très bonne qualité. Le kit contient le boitier en plastique injecté de 45mm de haut. Le plateau est découpé dans une plaque d’acrylique de 4mm d’épaisseur. Elle est protégée par une feuille de papier (assez difficile à retirer d’ailleurs). 4 ventouses de 50mm de diamètre permettront de maintenir le boitier en place durant vos parties acharnées. Enfin, un sachet contient la visserie nécessaire pour fixer le joytstick et le plateau. La qualité de fabrication est très correcte. Le boitier reste très basique, il manque juste un ou deux stickers pour le rendre plus sympa.

arcade diy case box retropie recalbox

Montage du kit Joystick

J’ai utilisé ce kit pour ce projet. Il est livré avec un joystick 4 directions, 8 boutons de 32mm de diamètre et 2 boutons de 25mm de diamètre (par exemple pour select et start). On aura donc 2 boutons de rechange avec ce boitier. Une carte permet de brancher les boutons (câbles noir/rouge), le joystick (nappe blanche 5 fils) et de relier le tout en USB à un PC ou un Raspberry Pi.

arcade joystick button set kit diy retropie recalbox

Le joystick se fixe à l’aide de 4 vis + écrou M3. Serrez sans trop forcer avec une clé plate ou une pince. Une fois fixé, insérez la rondelle noire et vissez le bouton sur la tige du joystick.

montage joystick kit diy arcade retropie recalbox

Clipsez ensuite les boutons.

montage boutons joystick borne arcade recalbox retropie

Reliez le joystick à la carte avec la nappe blanche (5 fils). Un dé-trompeur est présent de chaque coté du câble.

 

Connectez tous les boutons à l’aide des fils noir/rouge. Il n’y a aucun ordre à respecter ni aucune polarité dans les branchements. J’ai simplement branché tous les boutons sur la ligne de connecteurs située dans le bas de la carte.

Branchez enfin le câble USB.

Mettez en place les ventouses. Chaque ventouse est maintenue en place à l’aide d’une (grosse) épingle en plastique qui vient s’insérer dans le trou (à l’intérieur du boitier).

Console assemblée

Contrairement à certains boitiers vendus sur internet, celui-ci n’est pas prévu pour le Raspberry Pi. Il y a bien plusieurs emplacements de fixation mais le diamètre de la vis est plus gros que ceux prévus à chaque angle du Raspberry Pi. Il n’y a qu’un seul trou dans le boitier qui permet de faire passer un câble. Si vous voulez intégrer le Raspberry Pi, il faudra un peu le bricoler. Par exemple faire des perçages pour passer le câble HDMI, l’alimentation 5V et éventuellement le connecteur SUB d’un Gamepad additionne. Comme le Raspberry Pi me sert à préparer tous mes tutoriels, j’ai simplement sorti le câble USB du joystick.

Voici une vue de l’ensemble assemblé.

Configuration du joystick sur Recalbox

Lancez Recalbox. Si vous avez un Gamepad USB, les touches sont indiquées à tout moment dans le bas de l’écran. Si vous n’avez pas de Gamepad USB, voici les raccourcis clavier de Recalbox :

  • Enter: ouvrir/fermer le menu principal
  • Flèches droite/gauche pour faire défiler les consoles
  • Flèches haut/bas pour se déplacer dans les menus
  • Q pour valider, entrer dans un menu, lancer un jeu (attention, si le clavier est en qwerty, le Q se trouve sur la touche A)
  • S, retour arrière
  • Espace pour redémarrer ou éteindre la console

Ouvrez  le menu principal puis allez dans Controllers Settings

recalbox controler configuration

Sélectionnez Configure a controller

Recalbox détecte automatiquement tous les contrôleurs de jeu connectés en USB. Ici, il détecte bien mon gamepad USB et le boitier d’arcade. Appuyez sur n’importe quel bouton pour démarrer la configuration. Attention, si une configuration existe déjà, elle sera effacée.

Il suffit maintenant d’actionner le joystick dans les 4 directions et de choisir un bouton pour chaque action. Utilisez un clavier USB (ou le second gamepad) pour descendre dans la liste. Il n’est pas possible de tout configurer avec 8 boutons. Vous aurez l’équivalent d’un Gamepad. 4 directions, A, B, X, Y, Left (L), Right (R), Select et Start.

Voilà, tout est prêt. Y a plus qu’à jouer !

Cet article Fabriquer une borne d’arcade rétro gaming DIY avec joystick et 8 boutons Recalbox ou Retropie pour moins de 85€ est apparu en premier sur Projets DIY - Domotique et objets connectés à faire soi-même.

#Test de l’écran ePaper (eInk) Waveshare 2,7” SPI sur Raspberry Pi en Python

$
0
0

Nous avons l’habitude d’utiliser les écrans OLED ou LCD pour nos projets d’objets connectés. Si la consommation d’énergie est un problème crucial pour vos projets, les écrans e-paper (également appelé e-Ink) sont une alternative très intéressante. L’affichage est obtenu par l’orientation de sphères colorées (noir et blanche ou noir, blanche, rouge) sous l’effet d’un champ électrique. Une fois que l’affichage a été actualisé, l’écran n’a besoin d’aucune source d’énergie pour maintenir l’affichage. Je vous propose de tester dans ce tutoriel un écran e-Paper de la société chinoise Waveshare qui propose une gamme complète d’écrans eInk. Nous allons tester un écran de 2,7” de diagonale. Il est livré sous la forme d’une carte d’extension (HAT) compatible avec tous les modèles et générations de Raspberry Pi. On communique avec l”écran via le bus SPI. Nous verrons dans les prochains tutoriels comment utiliser ce même écran sur Arduino, ESP8266 et ESP32.

Principe des écrans ePaper / eInk, avantages et inconvénients

Inutile de rentrer trop dans les détails techniques des écrans ePaper. Tout est déjà très bien expliqué sur Wikipédia ici et cet article publié en 2013 sur framboise314. L’écran est constitué de billes, un coté noir, l’autre blanc, comme un oeuf de grenouille 😉 En appliquant une tension électrique entre les deux faces de l’écran, on provoque l’orientation des billes. Certains écrans ont même trois orientations, ce qui permet d’avoir un affichage en trois couleurs. En général, blanc – noir – rouge. La technologie existe depuis les années 1970.

Source : Wikipedia, https://fr.wikipedia.org/wiki/Papier_%C3%A9lectronique

L’énorme avantage d’un écran ePaper est qu’il ne consomme absolument rien. Il n’y a pas de rétro-éclairage (source de consommation d’énergie). L’affichage étant obtenue par un changement d’orientation de bulles colorées, l’affichage persistent même en l’absence de courant. C’est un énorme avantage par rapport aux écrans OLED et cristaux liquides.

Cependant, l’orientation des billes est assez lente. Ce sont les mêmes écrans qui sont utilisés pour les liseuses numériques (Kindle d’Amazon ou de la Fnac). Pour afficher une nouvelle page (image), il faut d’abord repositionner toutes les billes dans la même direction avant de pouvoir orienter les billes pour créer le motif (texte, formes géométriques, image…). L’opération dure une à deux secondes.

Les écrans e-Paper sont donc très bien adaptés pour réaliser des affichages qui nécessitent pas un rafraichissement fréquent. Par exemple, la température, le taux d’humidité, la pression atmosphérique, la teneur en CO2 dans une pièce, les prévisions météos pour les 5 jours à venir, la réception d’un colis dans la boite au lettre… sont des données qui évoluent très lentement. Ce n’est pas en scandale de mettre à jour l’affichage une fois par heure.

Par contre, on utilisera plutôt un écran LCD/TFT tactile pour réaliser un dashbord (tableau de bord) pour un serveur domotique.

Les écrans ePaper (eInk) de Waveshare

Lorsqu’on recherche des écrans e-Paper pour des projets Arduino ou Raspberry Pi, on trouve deux principaux fabricants. Adafruit et Waveshare. Il est assez difficile de se procurer des écrans Adafruit (à part habiter aux USA). Les écrans Waveshare sont commercialisés sur les principaux sites marchands asiatiques ainsi que sur Amazon. J’ai commandé le miens sur la boutique de Waveshare sur AliExpress. A dimension équivalente, les écrans e-Paper coûtent quasiment le même prix qu’un écran LCD/TFT. Comptez environ 47€ pour un écran de 7,5 pouces.

Waveshare a développé une gamme très complète. Le tableau ci-dessous récapitule tous les écrans disponibles. Tous les écrans sont disponibles avec un affichage 3 couleurs (blanc, rouge, noir), à l’exception du modèle 4,3” UART. Le (B) dans la référence permet de les repérer. Attention, le temps de rafraîchissement est beaucoup plus long pour les écrans 3 couleurs. Par exemple, le temps de rafraîchissement pour un écran de 1,54” passe de 2 secondes à 8 secondes. Le temps de rafraîchissement passe même à 31 secondes pour un écran de 7,5 pouces. Il n’y a qu’un seul écran capable de communiquer via le port série UART. Tous les autres écrans communiquent à l’aide du bus SPI sur 3 ou 4 fils (par défaut).

Ecran

Couleurs

Niveau de gris

Résolution (pixels)

Taille écran (mm)

Taille totale (mm)

Temps de rafraîchissement (s)

Interface

Compatible HAT(1)

1.54 pouces

noir, blanc

2

200×200

27.60 × 27.60

48.0 × 33.0

2

SPI

x

1.54 pouces (B)

rouge, noir, blanc

2

200×200

27.60 × 27.60

48.0 × 33.0

8

SPI

x

2.13 pouces

noir, blanc

2

250×122

48.55 × 23.71

65.0 × 30.2

2

SPI

2.13 pouces (B)

rouge, noir, blanc

2

212×104

48.55 × 23.71

65.0 × 30.2

15

SPI

2.7 pouces

noir, blanc

2

264×176

57.29 × 38.19

85.0 × 56.0

6

SPI

2.7 pouces (B)

rouge, noir, blanc

2

264×176

57.29 × 38.19

85.0 × 56.0

15

SPI

2.9 pouces

noir, blanc

2

296×128

66.89 × 29.05

89.5 × 38.0

2

SPI

x

2.9 pouces (B)

rouge, noir, blanc

2

296×128

66.89 × 29.05

89.5 × 38.0

15

SPI

x

4.2 pouces

noir, blanc

2

400×300

84.80 × 63.60

103.0 × 78.5

4

SPI

x

4.2 pouces (B)

rouge, noir, blanc

2

400×300

84.80 × 63.60

103.0 × 78.5

15

SPI

x

4.3 pouces

noir, blanc

4

800×600

88.00 × 66.00

118.0 × 75.0

1.5

UART

x

7.5 pouces

noir, blanc

2

640×384

163.20×97.92

170.2×111.2

6

SPI

7.5 pouces (B)

rouge, noir, blanc

2

640×384

163.20×97.92

170.2×111.2

31

SPI

(1) Connecteur compatible avec Raspberry Pi 2B/3B/Zero/Zero W. Les autres écrans doivent être connectés à l’aide de Jumpers.

Dernière mise à jour des prix le 2 février 2018 17 h 57 min

Test de l’écran 2,7” Waveshare sur un Raspberry Pi 3

Waveshare met à disposition plusieurs exemples sur son Wiki. En plus du code pour Arduino et STM32, Waveshare propose trois exemples. Deux exemple en C++. Le premier utilise la librairie BCM, le second la librairie WiringPi. Ici, je vous propose de découvrir le fonctionnement de l’écran en Python.

Installation du l’écran sur le Raspberry Pi

En fonction de la taille de l’écran, Waveshare intègre le contrôleur SPI à l’écran. Pour certains modèles (dimension), il est possible d’acheter séparément le contrôleur et l’écran. Le HAT 2,7” pour Raspberry Pi est similaire aux écrans LCD/FTF. Il vient simplement s’insérer sur le GPIO du Raspberry Pi. Contrairement à certaines cartes, le GPIO est condamné. Si vous avez utilisez le GPIO pour d’autres fonctions, rien ne vous empêche d’utiliser des jumpers pour câbler l’écran. Il existe également un second connecteur 8 broche sur le bord de l’écran.

Par défaut, l’écran est configuré pour un bus SPI sur 4 fils. Il est possible de modifier la configuration à l’aide du câble livré avec l’écran. Celui-ci vient se connecté en dessous de l’écran. L’écran est livré avec un jeu d’entretoise qui permet de rendre solidaire l’écran du Raspberry Pi.

Configuration de Raspbian

Avant d’installer les librairies Python nécessaires, il faut activer le bus SPI et I2C sur Raspbian. Commencez par mettre à jour le système.

sudo apt update

Maintenant lancez l’outil de configuration avec la commande 

sudo raspi-config
 . Allez à l’option (5) Interfacing Option puis activez successivement le bus SPI et I2C. Acceptez le redémarrage lorsque vous quittez raspi-config pour activer les bus.

raspberry pi i2c activate raspi-config

Une fois redémarré, ouvrez le fichier de configuration des drivers avec la commande 

sudo nano /etc/modules
 . Vérifiez que les drivers suivants sont bien présents. Redémarrez Raspbian pour recharger les drivers (
sudo reboot
).
i2c-bcm2708
i2c-dev

Installation des librairies python

On trouve quelques infos utiles sur le WiFi de Waveshare mais il faut un peu fouiller pour s’y retrouver surtout pour trouver les librairies Python à installer. J’ai passé pas mal de temps à trouver les bonne librairies. Si vous rencontrez des difficultés, n’hésitez pas à me les remonter dans les commentaires.

Voici ce que j’ai installer pour développer en Python. Exécutez la commande suivante qui va installer python-dev et les librairies python-pil et python-imaging. En fait, le drivers livré dans les exemples “se contente” d’afficher une image que l’on aura au préalable construite à l’aide de la librairie Python Imaging. L’avantage, c’est qu’on dispose de toutes les primitives de la librairie, à savoir les formes géométriques (ligne, rectangle…), texte, gestion des fontes et de la taille d’écriture…

sudo apt-get install python-dev python-pil python-imaging

Ensuite, il faut installer les librairies pour gérer la communication SPI

sudo apt-get install python-smbus python-serial

Et la dernière à l’aide de la commande pip qui installe la librairie spidev

pip install spidev

Voilà, tout est prêt, passons aux choses sérieuses maintenant !

Récupérer le driver epd

Pour cette étape, vous aurez plus facile de vous connecter au Raspberry Pi en SSH. Vous pourrez facilement coller les liens et du code depuis votre ordinateur habituel. Suivez ce tutoriel pour apprendre comment faire.

Il n’y a pas de drivers universel. Waveshare a développé (et configuré) un drivers pour chaque écran. Celui-ci est livré avec les exemples. Allez sur le WiKi et allez sur la page qui correspond à votre écran. La page de l’écran 2,7 pouce est ici. En bas de chaque page, on trouve un lieu vers la page des exemples (Demo code). Ouvrez la page de l’exemple pour récupérer le lien vers le fichier compressé à l’aide d’un clic droit sur le lien.

Depuis le Terminal sur le Raspberry Pi, créer un répertoire de travail, par exemple 

mkdir epaper
 puis ouvre celui-ci 
cd epaper
 . Ensuite, à l’aide de la commande wget, on va récupérer le fichier d’exemple.
wget https://www.waveshare.com/w/upload/f/f5/2.7inch-e-paper-hat-code.7z

Pour le décompresser, nous allons utiliser l’outil p7zip. Exécutez la commande suivante pour l’installer

sudo apt-get install p7zip-full

Il ne nous reste plus qu’à décompresser l’archive avec la commande 7z x nom_du_fichier.7z comme ceci

7za e 2.7inch-e-paper-hat-code.7z

Allez ensuite dans le répertoire des exemple python

cd /raspberrypi/python

Premier test, affichage d’un carré plein au centre de l’écran

Ouvrez un nouveau script nommé rectangle.py avec la commande 

nano rectangle.py
 et collez le code suivant. Au minimum, on a besoin d’importer le drivers epd (ici eps2in7 pour 2,7”), ainsi que les librairies Python Image et ImageDraw.

Que fait ce code :

  • On créé un objet epd et on l’initialise. Cet objet permettra d’accéder aux fonctions de gestion de l’écran. La seule réellement important est la méthode d’actualisation display_frame()
  • On créé ensuite un objet de type Image ayant comme dimension la largeur (width) et la hauteur (height) de l’écran en pixels. Ici 176×264 pixels.
  • On dessine ensuite un rectangle au centre de l’écran en se basant sur la largeur et la hauteur de ce dernier
  • Enfin on appel la méthode display_frame() pour actualiser l’affichage.

import epd2in7
import Image
import ImageDraw

def main():
        #Init driver
        epd = epd2in7.EPD()
        epd.init()

        #Image de la dimension de l ecran - Image with screen size
        #255: fond blanc - clear the image with white
        image = Image.new('1', (epd2in7.EPD_WIDTH, epd2in7.EPD_HEIGHT), 255)
        #Objet image sur lequel on va dessiner - Object image on which we will draw
        draw = ImageDraw.Draw(image)

        #Dessine un rectangle au centre de l ecran - draw a rectangle in the center of the screen
        draw.rectangle((epd2in7.EPD_WIDTH/2-10, epd2in7.EPD_HEIGHT/2-10, epd2in7.EPD_WIDTH/2+10, epd2in7.EPD_HEIGHT/2+10), fill = 0)

        #Actualise affichage - Update display
        epd.display_frame(epd.get_frame_buffer(image))

if __name__ == '__main__':
    main()

Enregistrez le script avec la combinaison CTRL + X puis O (ou Y). Exécuter le script avec la commande python rectangle.py

Vous devez obtenir ce joli rectangle au centre de l’écran epaper. Vous pouvez voir le processus de rafraichissement par la même occasion

Bonus, récupérer les événements des 4 boutons de fonction

Vous avez du remarquer la présence de 4 boutons sur le coté de l’écran (key 1 à key 4). Il est possible de récupérer dans le code python un appui sur un bouton et déclencher par exemple le rafraîchissement de l’écran. On pourra également s’en servir pour d’autres fonctions. On pourrait également déclencher un scénario sur un serveur domotique.

Chaque bouton est connecté sur une broche du GPIO du Raspberry Pi.

  • Key 1 sur broche 12
  • Key 2 sur la broche 16
  • Key 3 sur la broche 18
  • Key 4 sur la broche 4

En fonction de votre écran, les broches peuvent changer, on trouve l’info sur le schéma technique. Par exemple ici pour l’écran 2,7”

Créez un nouveau script

nano demo.py
  et collez le code suivant

Il intercepte un appui sur chaque bouton. Un appui sur le bouton 4 actualise l’affichage

import epd2in7
import Image
import ImageFont
import ImageDraw
import time

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BCM)

epd = epd2in7.EPD()
epd.init()
image = Image.new('1', (epd2in7.EPD_WIDTH, epd2in7.EPD_HEIGHT), 255)    # 255: clear the image with white

key1 = 5
key2 = 6
key3 = 13
key4 = 19

GPIO.setup(key1, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(key2, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(key3, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(key4, GPIO.IN, pull_up_down=GPIO.PUD_UP)

def updateDisplay(string):

    draw = ImageDraw.Draw(image)
    font = ImageFont.truetype('/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf', 18)

    draw.text((20, 50), string, font = font, fill = 0)
    #draw.rectangle((epd2in7.EPD_WIDTH/2-10, epd2in7.EPD_HEIGHT/2-10, epd2in7.EPD_WIDTH/2+10, epd2in7.EPD_HEIGHT/2+10), fill = 0)
    print('update display')
    epd.display_frame(epd.get_frame_buffer(image))

def main():

    while True:
        key1state = GPIO.input(key1)
        key2state = GPIO.input(key2)
        key3state = GPIO.input(key3)
        key4state = GPIO.input(key4)

        if key1state == False:
            print('Key1 Pressed')
            time.sleep(0.2)
        if key2state == False:
            print('Key2 Pressed')
            time.sleep(0.2)
        if key3state == False:
            print('Key3 Pressed')
            time.sleep(0.2)
        if key4state == False:
            print('Key4 Pressed')
            updateDisplay('Key4 pressed')
            time.sleep(0.2)

if __name__ == '__main__':
    main()

Comme vous pouvez le constater, le texte est créé horizontalement sur l’image. Nous verrons comment l’orienter correctement prochainement.

Voilà, c’est terminé pour ce tutoriel. Nous verrons dans les prochains articles comment l’utiliser sur un micro-contrôleur Arduino (et probablement ESP32, ESP8266). Nous verrons comment récupérer des infos depuis un serveur domotique Jeedom et Domoticz pour créer un petit afficheur.

 

 

Cet article #Test de l’écran ePaper (eInk) Waveshare 2,7” SPI sur Raspberry Pi en Python est apparu en premier sur Projets DIY - Domotique et objets connectés à faire soi-même.

Station météo avec affichage ePaper (Dashboard) pour Jeedom sur Raspberry Pi (via l’API JSON RPC)

$
0
0
jeedom epaper waveshare display dashboard weather station

La semaine dernière, nous avons pu tester l’écran ePaper (eInk) 2,7 pouces du fabricant chinois Waveshare. Nous n’étions pas allé très loins dans la présentation. Il me fallait un peu de temps pour apprendre à maitriser la librairie Python Imaging Library (ou le fork Pillow). Je vous propose dans ce nouveau tutoriel d’aller beaucoup plus loin. Nous allons réaliser une station météo connectée à un serveur domotique Jeedom. Le plugin météo (gratuit) de Jeedom permet de récupérer très facilement les prévisions sur 5 jours sur le site  openweathermap.org. Bien évidemment, ce n’est qu’un prétexte. L’idée étant de montrer les différents mécanismes à mettre en place pour interroger le serveur Jeedom, récupérer les données d’un appareil et comment générer l’affichage ePaper.

Remarque. Vous pouvez tester et mettre au point votre code sur n’importe quel PC Windows ou Linux, Mac ou Raspberry Pi sans avoir d’écran eInk. Il suffira d’enregistrer l’image générée par la librairie Python Imaging.

Matériel utilisé pour la station météo ePaper

Pour ce projet, j’ai utilisé le matériel suivant. L’écran mesure 2,7 pouces de diagonale avec une résolution de 264 x 176 pixels. Il est assez grand pour afficher les prévisions météo en détail. Il possède 4 boutons sur le coté que l’on va utiliser pour naviguer entre les écrans. On pourrait également les utiliser pour déclencher un scénario domotique ou afficher d’autres états.

Vous pouvez également choisir un autre écran dans la gamme Waveshare

Ecran

Couleurs

Niveau de gris

Résolution (pixels)

Taille écran (mm)

Taille totale (mm)

Temps de rafraîchissement (s)

Interface

Compatible HAT(1)

1.54 pouces

noir, blanc

2

200×200

27.60 × 27.60

48.0 × 33.0

2

SPI

x

1.54 pouces (B)

rouge, noir, blanc

2

200×200

27.60 × 27.60

48.0 × 33.0

8

SPI

x

2.13 pouces

noir, blanc

2

250×122

48.55 × 23.71

65.0 × 30.2

2

SPI

2.13 pouces (B)

rouge, noir, blanc

2

212×104

48.55 × 23.71

65.0 × 30.2

15

SPI

2.7 pouces

noir, blanc

2

264×176

57.29 × 38.19

85.0 × 56.0

6

SPI

2.7 pouces (B)

rouge, noir, blanc

2

264×176

57.29 × 38.19

85.0 × 56.0

15

SPI

2.9 pouces

noir, blanc

2

296×128

66.89 × 29.05

89.5 × 38.0

2

SPI

x

2.9 pouces (B)

rouge, noir, blanc

2

296×128

66.89 × 29.05

89.5 × 38.0

15

SPI

x

4.2 pouces

noir, blanc

2

400×300

84.80 × 63.60

103.0 × 78.5

4

SPI

x

4.2 pouces (B)

rouge, noir, blanc

2

400×300

84.80 × 63.60

103.0 × 78.5

15

SPI

x

4.3 pouces

noir, blanc

4

800×600

88.00 × 66.00

118.0 × 75.0

1.5

UART

x

7.5 pouces

noir, blanc

2

640×384

163.20×97.92

170.2×111.2

6

SPI

7.5 pouces (B)

rouge, noir, blanc

2

640×384

163.20×97.92

170.2×111.2

31

SPI

(1) Connecteur compatible avec Raspberry Pi 2B/3B/Zero/Zero W. Les autres écrans doivent être connectés à l’aide de Jumpers.

Librairies Python à installer

Si vous débutez avec les écrans ePaper de Waveshare, je vous conseille de lire l’article précédent qui explique comment les utiliser avec un ou deux exemples simples.

Le driver epd (pour EPaper Display j’imagine) ne fait “que” l’afficher une image. On va donc devoir la générer en Python au préalable. La librairie Python Imaging (Pil) ou son fork Pillow semble la plus puissante dans le domaine. Attention, Pil et Pillow ne peuvent pas cohabiter sur la même machine.

Pour installer Pil vous pouvez utiliser la commande pip. Vous aurez peut être besoin de faire précéder la commande pip d’un sudo.

pip install python-pil request

Sur macOS, le plus facile est d’utiliser brew

brew install pil request

La librairie Python Pil / Pillow rapidement

La librairie Pil ou Pillow permettent de manipuler des images (convertir, redimensionner, orienter…), ajouter des formes géométriques (ligne, ellipse, polygone, arc de cercle…) ou du texte sur une image existante. Ici nous allons créer un masque ayant comme dimension celle de l’écran ePaper 2,7”.

mask = Image.new('1', (EPD_HEIGHT,EPD_WIDTH), 255)

Comme nous l’avons vu dans l’article précédent, l’image produite est verticale. Si on veut un affichage horizontal, l’astuce consiste à créer une image dans les dimensions horizontales et verticales sont inversée puis la tourner de 90° avant de l’afficher sur l’écran ePaper. Créez un nouveau script nommé demopill.py et collez le code suivant

#Librairies nécessaires
from PIL import Image
from PIL import ImageDraw

#Dimensions de l'image
EPD_WIDTH       = 176
EPD_HEIGHT      = 264
# Créé un masque avec un fond blanc
mask = Image.new('1', (EPD_HEIGHT,EPD_WIDTH), 255)
#Créé un objet Draw qui va permettre d'ajouter des éléments sur le masque
draw = ImageDraw.Draw(mask)
#En exemple de texte
draw.text((EPD_HEIGHT/4,EPD_WIDTH/2), 'Demo Python PILL', fill = 0)
#Une ligne horizontale
draw.line((0,EPD_WIDTH/2 + 12, EPD_HEIGHT, EPD_WIDTH/2 + 12), fill = 0)
#On enregistre l'image générée
mask.save('demopill.bmp',"bmp")

Enregistrez le script et exécutez le avec la commande

python demopill.py
.

Voici l’image générée par le script. Comme vous pouvez le voir, elle est horizontale car j’ai inversé la hauteur (Height) et la largeur (Width). Ici, il n’est pas nécessaire de tourner l’image.

Récupérer des images et des fonts Open Source

J’ai utilisé des images gratuites et Open Source pour ce projet. Vous pouvez en trouver un peu partout sur internet. Voici les sites que j’ai utilisé pour ce projet :

  • Les icônes Open Source de Kickstand Apps disponibles sur Github pour les symboles météo. Pratique, elles sont déjà au format PNG. Utilisez plutôt la version épaisse pour un meilleur rendu sur l’écran ePaper
  • icones8.fr pour les pictogrammes température, humidité, pression atmosphérique, direction du vent
  • La police FreeMonoBold.ttf peut être récupérée un peu partout sur internet comme ici sur GitHub

Installer et configurer le plugin météo sur Jeedom

Ouvrez le gestionnaire de plugin de Jeedom et recherchez le plugin Meteo officiel

Activez le plugin et configurez votre ville et attribuez un objet

Activer l’API JSON RPC et récupérer la clé API

Jeedom dispose de deux interfaces de communication. La première permet d’interroger Jeedom avec des requêtes HTTP. C’est cette interface qui avait été utilisé pour réaliser ce mini affichage déporté.

Pour varier les plaisirs (et aussi parce que l’API HTTP offre moins de possibilités), nous allons utiliser l’API JSON RPC pour ce projet. Le JSON RPC est un standard qui est documenté ici. Toutes les commandes exposées par Jeedom sont expliquées en détail sur la documentation en ligne.

Pour récupérer votre clé API et vérifier que les API sont activées, allez dans le menu de configuration (roue crantée) puis configuration. Ouvrez l’onglet API. Votre clé est la grande chaine de caractère. Vous pouvez en générée une nouvelle si vous pensez que la sécurité de votre serveur domotique a été corrompue. L’accès JSONPRC doit être activé. N’oubliez pas de sauvegarder si vous faites une modification.

Comment récupérer les prévisions météo avec l’API JSON RPC de Jeedom ?

Maintenant que tout est prêt, il est temps de commencer. Il existe (très grossièrement) deux types d’objets Jeedom qui vont nous intéresser ici. Les commandes et les équipements. Pour faire simple, le widget météo est un équipement. Un équipement est lui même attaché à un objet (le terme de groupe aurait été mieux adapté mais ce n’est pas très important). Ensuite chaque équipement peut posséder des commandes. Pour récupérer les identifiants de l’équipement et des commandes, il suffit d’ouvrir le panneau de Configuration avancée qui se trouve systématiquement dans le coins supérieur droit.

Ici l’équipement widget météo a l’IDentifiant 3.

id equipement jeedom json rpc api

Cliquez ensuite sur la roue crantée de chaque commande pour récupérer son identifiant (ici 17).

id commande equipement jeedom api json rpc

On peut aussi interroger l’API pour récupérer tous les identifiants mais la réponse renvoyée est très (trop) détaillée. Si vous avez de nombreux équipements vous risquez vite de vous noyer.

Créez un nouveau script python (par exemple jeedomrpc.py) et collez le code ci-dessous. Avant de l’exécuter vous devez modifier les paramètres suivants :

  • ip_jeedom : l’adresse IP du serveur Jeedom
  • Api_key : votre clé API récupérée précédemment
  • conditiontxt : l’IDentifiant de la commande condition. Elle renvoi la prévision sous la forme d’une chaine
  • condition: l’IDentifiant de la commande condition_numero. On récupère le code de la prévision d’OpenWeatherMap. On l’utilisera pour définir l’icône de la prévision à afficher

# coding: utf-8
import requests
import json

ip_jeedom = 'XXX.XXX.XXX.XXX'
Api_key = 'XXXX_JEEDOM_API_KEY_XXXX'
url = "http://%s/core/api/jeeApi.php"% ( ip_jeedom)
headers = {'content-type': 'application/json'}

#Dictionnaire qui contiendra les prévisions récupérées sur Jeedom
prevision = {}

def updateParameter(id, method):
  # Toutes les méthodes json rpc de Jeedom sont disponibles ici
  # https://jeedom.github.io/core/fr_FR/jsonrpc_api#tocAnchor-1-30-2
  parameters = {
    "jsonrpc" : "2.0",
    "method" : method,
    "params": {
        "apikey": Api_key,
        "id" : id
        }
  }
  return parameters

def getDataFromJeedom():
  #Identifiants de commandes à récupérer
  idCmd = {
      "conditiontxt": "17",
      "condition"   : "18"
  }

  #On interroge l'API JSON RPC de Jeedom pour chaque commande
  for key, value in idCmd.iteritems():

    param = updateParameter(value, "cmd::byId")
    response = requests.post(url, data=json.dumps(param), headers=headers).json()
    #Affichage la réponse renvoyée par Jeedom
    print response
    #Ajoute les valeur actuelle et l'unité dans le dictionnaire
    prevision[key] = {
      'value' : response['result']['currentValue'],
      'unit' : response['result']['unite'],
    }
    #Affichage les données récupérées et stockées dans le dictionnaire
    print prevision

getDataFromJeedom()

Exécutez le script (commande

python jeedomrpc.py
 ). La réponse d’affiche directement dans le Terminal (ou l’invite de commande sous Windows). Pour “déplier” la réponse au format JSON et la rendre plus lisible pour nous pauvres humains, vous pouvez utiliser jsonlint.com par exemple.
{
	u 'jsonrpc': u '2.0', u 'id': None, u 'result': {
		u 'generic_type': u 'WEATHER_CONDITION',
		u 'currentValue': u 'L\xe9g\xe8res chutes de neige',
		u 'configuration': None,
		u 'name': u 'Condition',
		u 'display': {
			u 'generic_type': u 'WEATHER_CONDITION'
		},
		u 'isHistorized': u '0',
		u 'eqLogic_id': u '3',
		u 'unite': u '',
		u 'id': u '17',
		u 'subType': u 'string',
		u 'html': None,
		u 'alert': None,
		u 'value': None,
		u 'template': None,
		u 'isVisible': u '1',
		u 'eqType': u 'weather',
		u 'logicalId': u 'condition',
		u 'type': u 'info',
		u 'order': u '0'
	}
} {
	'conditiontxt': {
		'unit': u '',
		'value': u 'L\xe9g\xe8res chutes de neige'
	}
}

Il ne faut pas s’inquiéter des ‘u’ devant chaque clé. Par contre ce qui est plus gênant c’est l’encodage des chaînes. Jeedom n’encode pas en utf-8 mais en latin-1. Cala risque de vous poser pas mal de problèmes. Voici quelques astuces :

  • Forcer l’encodage en utf-8 au début du script en ajoutant le paramètre # coding: utf-8
  • Créez une variable intermédiaire qui contient la condition avant de créer un objet texte avec la librairie Pill.

Pour info, voici également le dictionnaire (une variable) qui a été créé par ce script. On y retrouve la prévision et le code correspondant.

{
	'conditiontxt': {
		'unit': u '',
		'value': u 'L\xe9g\xe8res chutes de neige'
	},
	'condition': {
		'unit': u '',
		'value': 600
	}
}

Code python complet

Voilà, maintenant il ne reste plus qu’à tout assembler. Nous savons interroger l’API JSON RPC de Jeedom pour récupérer des états et des informations sur des équipements. Nous savons comment générer une image à l’aide de la libraire Python Pil. Enfin, nous savons intercepter les boutons Key1 à Key2 sur le coté de l’écran pour modifier l’affichage ou déclencher un scénario.

Créez un nouveau script et collez le code ci-dessous. Modifiez les paramètres suivants dans le code

  • ip_jeedom : l’adresse IP du serveur Jeedom
  • Api_key : votre clé API
  • Dictionnaire idCmd : changez les identifiants des différentes commandes pour celles de votre équipement météo
  • modeTest : permet de générer l’image sur un ordinateur (PC Windows, Linux, Mac, Raspberry Pi) sans utiliser le GPIO et l’écran ePaper. Le script génère juste une image en sortie
  • Toutes les images et la police FreeMonoBold.ttf doivent être stockées dans le dossier image.

Téléchargez les images et la police FreeMonoBold.ttf depuis le blog en cliquant sur ce lien. Décompressez l’archive et placez le dossier à la racine du code python. La variable folder_img permet de modifier le dossier des ressources.


# coding: utf-8
from PIL import Image
from PIL import ImageFont
from PIL import ImageDraw
import requests
import json
import math
import time
from datetime import datetime
from datetime import timedelta
import locale
locale.setlocale(locale.LC_TIME,'')

ip_jeedom = 'xxxx.xxx.xxx.xxx'
Api_key = 'XXXX_JEEDOM_API_KEY_XXXX'
url = "http://%s/core/api/jeeApi.php"% ( ip_jeedom)
headers = {'content-type': 'application/json'}
folder_img = 'images/'
H_condition = 100
W_condition = 100
H_Big = 15
H_icone = 25
W_icone = 25
Bord = 5
Col1 = 66
Col2 = 132
Col3 = 198
LiBaCd = 140
DiamPastille = 10
modeTest = False
prevision = {}

if modeTest:
  EPD_WIDTH       = 176
  EPD_HEIGHT      = 264
else:
  print 'mode epd2in7'
  import RPi.GPIO as GPIO
  import epd2in7
  epd = epd2in7.EPD()
  epd.init()
  EPD_WIDTH       = epd2in7.EPD_WIDTH
  EPD_HEIGHT      = epd2in7.EPD_HEIGHT
  GPIO.setmode(GPIO.BCM)
  key1 = 5
  key2 = 6
  key3 = 13
  key4 = 19

  GPIO.setup(key1, GPIO.IN, pull_up_down=GPIO.PUD_UP)
  GPIO.setup(key2, GPIO.IN, pull_up_down=GPIO.PUD_UP)
  GPIO.setup(key3, GPIO.IN, pull_up_down=GPIO.PUD_UP)
  GPIO.setup(key4, GPIO.IN, pull_up_down=GPIO.PUD_UP)

#Charge les fonts et les images
fontSmall = ImageFont.truetype(folder_img + 'FreeMonoBold.ttf', 9)
fontMedium = ImageFont.truetype(folder_img + 'FreeMonoBold.ttf', 12)
fontBig = ImageFont.truetype(folder_img + 'FreeMonoBold.ttf', H_Big)
temperature = Image.open(folder_img + 'temperature.png')
humidity = Image.open(folder_img + 'humidity.png')
pressure = Image.open(folder_img + 'pressure.png')
direction = Image.open(folder_img + 'direction.png')
lever = Image.open(folder_img + 'lever.png')
coucher = Image.open(folder_img + 'coucher.png')

#Redimensionnement des images
temperature = temperature.resize((H_icone,W_icone))
humidity = humidity.resize((H_icone,W_icone))
pressure = pressure.resize((H_icone,W_icone))
direction = direction.resize((H_icone,W_icone))
lever = lever.resize((H_icone ,W_icone ))
coucher = coucher.resize((H_icone ,W_icone ))
#w,h = condition.size

def updateParameter(id, method):
  # Toutes les méthodes json rpc Jeedom disponibles https://jeedom.github.io/core/fr_FR/jsonrpc_api#tocAnchor-1-30-2
  parameters = {
    "jsonrpc" : "2.0",
    "method" : method,
    "params": {
        "apikey": Api_key,
        "id" : id
        }
  }
  return parameters

def getSunTime(timestring):
  if len(timestring) == 3:
   #timestring[1:] +
   return  timestring[0:1] + 'h' + timestring[-2:]
  else:
    return timestring[0:2] + 'h' + timestring[-2:]

def getDirWind(WindDir):
  #D'après https://www.campbellsci.com/blog/convert-wind-directions
  Direction = ["N","NNE","NE","ENE","E","ESE","SE","SSE","S","SSW","SW","WSW","W","WNW","NW","NNW","N"]
  CompassDir = int(round((math.fmod(WindDir,360))/ 22.5,0)+1)
  return Direction[CompassDir]

def findIcone(condition_id):

  # Toutes les conditions renvoyees par le plugin météo de Jeedom https://github.com/jeedom/plugin-weather/blob/beta/core/class/weather.class.php
  # Prevision d apres le code openweathermap.org
  # Icones Open Source https://github.com/kickstandapps/WeatherIcons
  # Icones température, humidité, pression atmosphérique récupérées sur https://icones8.fr
  if condition_id >= 200 and condition_id <= 299:
    return 'Storm'
  if condition_id >= 300 and condition_id <= 399:
    return 'Haze'
  if condition_id >= 500 and condition_id <= 510:
    return 'PartlySunny'
  if condition_id >= 520 and condition_id <= 599:
    return 'Rain'
  if condition_id >= 600 and condition_id <= 699 or condition_id == 511:
    return 'Snow'
  if condition_id >= 700 and condition_id <= 799:
    return 'wind'
  if condition_id >= 800 and condition_id <= 899:
    return 'Cloud'
  if condition_id == 800:
    return 'Sun'

def getDataFromJeedom():
    # ID des commandes de l'équipement météo
    idCmd = {
      "conditiontxt": "17",
      "condition"   : "18",
      "leverSoleil" : "14",
      "coucherSoleil" : "13",
      "pa"          : "10",
      "humidite"    : "9",
      "tempMin"     : "15",
      "tempMax"     : "16",
      "vitVent"     : "11",
      "dirVent"     : "12",
      "conditionJ1" : "28",
      "conditionJ2" : "30",
      "conditionJ3" : "32",
      "conditionJ4" : "34",
      "condJ1Txt"   : "27",
      "condJ2Txt"   : "29",
      "condJ3Txt"   : "31",
      "condJ4Txt"   : "33",
      "tempMinJ1"   : "19",
      "tempMinJ2"   : "21",
      "tempMinJ3"   : "23",
      "tempMinJ4"   : "25",
      "tempMaxJ1"   : "20",
      "tempMaxJ2"   : "22",
      "tempMaxJ3"   : "24",
      "tempMaxJ4"   : "26"
    }

    #Recupère le nom de la ville
    _parameters = updateParameter(3, "eqLogic::byId")
    response = requests.post(url, data=json.dumps(_parameters), headers=headers).json()

    prevision['city'] = response['result']['name']

    #Récupère les prévisions
    for key, value in idCmd.iteritems():
      _parameters = updateParameter(value, "cmd::byId")
      response = requests.post(url, data=json.dumps(_parameters), headers=headers).json()
      #print response
      if ( key == 'condition' or key == 'conditionJ1' or key == 'conditionJ2' or key == 'conditionJ3' or key == 'conditionJ4'):
        prevision[key] = findIcone(response['result']['currentValue'])
        print 'condition_id '+ str(response['result']['currentValue']) + " => " + str(prevision[key])
      else:
        prevision[key] = {
          'value' : response['result']['currentValue'],
          'unit' : response['result']['unite'],
        }
    print prevision

# Dessine l'écran du jour
def updateFrame1():
    mask = Image.new('1', (EPD_HEIGHT,EPD_WIDTH), 255)

    draw = ImageDraw.Draw(mask)

    #Format date heure en Python https://www.cyberciti.biz/faq/howto-get-current-date-time-in-python/
    #Entete
    condition = Image.open(folder_img + prevision['condition'] + '.png')
    condition = condition.resize((H_condition,W_condition))
    mask.paste(condition, (0,0), condition)
    mask.paste(lever, (W_condition + Bord,70), lever)
    mask.paste(coucher, (W_condition + 90,70), coucher)
    date = unicode(time.strftime("%a %d %B") + "  " + time.strftime("%H:%M"),'UTF-8')
    draw.text((W_condition + Bord,5), date, font = fontMedium, fill = 0)
    condGauche = prevision['conditiontxt']['value'][0:16]
    condDroite = prevision['conditiontxt']['value'][16:]
    draw.text((W_condition + Bord,25), condGauche, font = fontBig, fill = 0)
    draw.text((W_condition + Bord,45), condDroite, font = fontBig, fill = 0)
    draw.text((W_condition + 45,75), getSunTime(str(prevision['leverSoleil']['value'])), font = fontSmall, fill = 0)
    draw.text((W_condition + 125,75), getSunTime(str(prevision['coucherSoleil']['value'])), font = fontSmall, fill = 0)

    #Prévision du jour en détail
    #Tourne la bousole dans la direction du vent
    direction.rotate(float(prevision['dirVent']['value']))
    mask.paste(temperature, (Bord,110), temperature)
    mask.paste(humidity, (Col1,110), humidity)
    mask.paste(pressure, (Col2,110), pressure)
    mask.paste(direction, (Col3,110), direction)
    draw.text((Bord,LiBaCd), str(prevision['tempMax']['value']) + '%C', font = fontMedium, fill = 0)
    draw.text((Col1,LiBaCd), str(prevision['humidite']['value'])+'%', font = fontMedium, fill = 0)
    draw.text((Col2,LiBaCd), str(prevision['pa']['value'])+str(prevision['pa']['unit']), font = fontMedium, fill = 0)
    draw.text((Col3 + 35,110), getDirWind(float(prevision['dirVent']['value'])), font = fontMedium, fill = 0)
    draw.text((Col3,LiBaCd), str(prevision['vitVent']['value'])+str(prevision['vitVent']['unit']),font = fontMedium, fill = 0)

    #Lignes
    draw.line((0,H_condition,EPD_HEIGHT,H_condition), fill=0)
    draw.line((0,LiBaCd + 20,EPD_HEIGHT,LiBaCd + 20), fill=0)
    draw.line((W_condition,0,W_condition,H_condition), fill=0)

    #Bas de page
    draw.text((Bord,EPD_WIDTH - 18), str(prevision['city']),font = fontMedium, fill = 0)
    draw.text((180,EPD_WIDTH - 17), "projetsdiy.fr",font = fontSmall, fill = 0)
    draw.ellipse((97,EPD_WIDTH - DiamPastille - 2,107,EPD_WIDTH - 2), fill=0, outline=0)
    draw.ellipse((117,EPD_WIDTH - DiamPastille - 2,127,EPD_WIDTH - 2), fill=255, outline=0)
    draw.ellipse((137,EPD_WIDTH - DiamPastille - 2,147,EPD_WIDTH - 2), fill=255, outline=0)
    draw.ellipse((157,EPD_WIDTH - DiamPastille - 2,167,EPD_WIDTH - 2), fill=255, outline=0)

    out = mask.rotate(90)
    out.save('frame1.bmp',"bmp")

    if modeTest == False:
      epd.display_frame(epd.get_frame_buffer(out))

#Prévisions des 4 prochains jours
def updateFrame2():
    mask = Image.new('1', (EPD_HEIGHT,EPD_WIDTH), 255)
    date = datetime.now()
    draw = ImageDraw.Draw(mask)
    pasHoriz = 16
    #Format date heure en Python https://www.cyberciti.biz/faq/howto-get-current-date-time-in-python/
    #Entete
    draw.text((Bord,0), unicode("Prévisions à 4 jours",'utf-8'), font = fontBig, fill = 0)
    draw.line((0,2*Bord + H_Big,EPD_HEIGHT,2*Bord + H_Big), fill=0)
    draw.line((Col1, 2*Bord + H_Big, Col1, EPD_WIDTH - 15), fill=0)
    draw.line((Col2, 2*Bord + H_Big, Col2, EPD_WIDTH - 20), fill=0)
    draw.line((Col3, 2*Bord + H_Big, Col3, EPD_WIDTH - 20), fill=0)
    draw.line((0,EPD_WIDTH - 15,EPD_HEIGHT,EPD_WIDTH - 15), fill=0)

    #J+1
    date = datetime.now() + timedelta(days=1)
    draw.text((Bord, 3*Bord + H_Big), unicode(date.strftime("%A"),'utf-8'), font = fontMedium, fill = 0)
    c1 = Image.open(folder_img + prevision['conditionJ1'] + '.png')
    c1 = c1.resize((H_icone * 2,W_icone * 2))
    mask.paste(c1, (Bord, 5*Bord + H_Big), c1)
    prev1 = prevision['condJ1Txt']['value'][0:12]
    prev2 = prevision['condJ1Txt']['value'][12:24]
    print prev2
    draw.text((Bord, 5 * pasHoriz), prev1, font = fontSmall, fill = 0)
    draw.text((Bord, 6 * pasHoriz), prev2, font = fontSmall, fill = 0)
    draw.text((Bord, 7 * pasHoriz), unicode(str(prevision['tempMinJ1']['value'])+'°C','utf-8'), font = fontMedium, fill = 0)
    draw.text((Bord, 8 * pasHoriz), unicode(str(prevision['tempMaxJ1']['value'])+'°C','utf-8'), font = fontMedium, fill = 0)

    #J+2
    date = datetime.now() + timedelta(days=2)
    draw.text((Bord + Col1, 3*Bord + H_Big), unicode(date.strftime("%A"),'utf-8'), font = fontMedium, fill = 0)
    c1 = Image.open(folder_img + prevision['conditionJ2'] + '.png')
    c1 = c1.resize((H_icone * 2,W_icone * 2))
    mask.paste(c1, (Bord + Col1, 5*Bord + H_Big), c1)
    prev1 = prevision['condJ2Txt']['value'][0:12]
    prev2 = prevision['condJ2Txt']['value'][12:24]
    draw.text((Bord + Col1, 5 * pasHoriz), prev1, font = fontSmall, fill = 0)
    draw.text((Bord + Col1, 6 * pasHoriz), prev2, font = fontSmall, fill = 0)
    draw.text((Bord + Col1, 7 * pasHoriz), unicode(str(prevision['tempMinJ2']['value'])+'°C','utf-8'), font = fontMedium, fill = 0)
    draw.text((Bord + Col1, 8 * pasHoriz), unicode(str(prevision['tempMaxJ2']['value'])+'°C','utf-8'), font = fontMedium, fill = 0)

    #J+3
    date = datetime.now() + timedelta(days=3)
    draw.text((Bord + Col2, 3*Bord + H_Big), unicode(date.strftime("%A"),'utf-8'), font = fontMedium, fill = 0)
    c1 = Image.open(folder_img + prevision['conditionJ3'] + '.png')
    c1 = c1.resize((H_icone * 2,W_icone * 2))
    mask.paste(c1, (Bord + Col2, 5*Bord + H_Big), c1)
    prev1 = prevision['condJ3Txt']['value'][0:12]
    prev2 = prevision['condJ3Txt']['value'][12:24]
    draw.text((Bord + Col2, 5 * pasHoriz), prev1, font = fontSmall, fill = 0)
    draw.text((Bord + Col2, 6 * pasHoriz), prev2, font = fontSmall, fill = 0)
    draw.text((Bord + Col2, 7 * pasHoriz), unicode(str(prevision['tempMinJ3']['value'])+'°C','utf-8'), font = fontMedium, fill = 0)
    draw.text((Bord + Col2, 8 * pasHoriz), unicode(str(prevision['tempMaxJ3']['value'])+'°C','utf-8'), font = fontMedium, fill = 0)

    #J+4
    date = datetime.now() + timedelta(days=4)
    draw.text((Bord + Col3, 3*Bord + H_Big), unicode(date.strftime("%A"),'utf-8'), font = fontMedium, fill = 0)
    c1 = Image.open(folder_img + prevision['conditionJ4'] + '.png')
    c1 = c1.resize((H_icone * 2,W_icone * 2))
    mask.paste(c1, (Bord + Col3, 5*Bord + H_Big), c1)
    prev1 = prevision['condJ4Txt']['value'][0:12]
    prev2 = prevision['condJ4Txt']['value'][12:24]
    draw.text((Bord + Col3, 5 * pasHoriz), prev1, font = fontSmall, fill = 0)
    draw.text((Bord + Col3, 6 * pasHoriz), prev2, font = fontSmall, fill = 0)
    #draw.text((Bord + Col1, 6 * pasHoriz), str(prevision['condJ4Txt']['value'][0:10]), font = fontSmall, fill = 0)
    draw.text((Bord + Col3, 7 * pasHoriz), unicode(str(prevision['tempMinJ4']['value'])+'°C','utf-8'), font = fontMedium, fill = 0)
    draw.text((Bord + Col3, 8 * pasHoriz), unicode(str(prevision['tempMaxJ4']['value'])+'°C','utf-8'), font = fontMedium, fill = 0)

    #Bas de page
    draw.text((Bord,EPD_WIDTH - 18), str(prevision['city']),font = fontMedium, fill = 0)
    draw.text((180,EPD_WIDTH - 17), "projetsdiy.fr",font = fontSmall, fill = 0)
    draw.ellipse((97,EPD_WIDTH - DiamPastille - 2,107,EPD_WIDTH - 2), fill=255, outline=0)
    draw.ellipse((117,EPD_WIDTH - DiamPastille - 2,127,EPD_WIDTH - 2), fill=0, outline=0)
    draw.ellipse((137,EPD_WIDTH - DiamPastille - 2,147,EPD_WIDTH - 2), fill=255, outline=0)
    draw.ellipse((157,EPD_WIDTH - DiamPastille - 2,167,EPD_WIDTH - 2), fill=255, outline=0)

    out = mask.rotate(90)
    out.save('frame2.bmp',"bmp")

    if modeTest==False:
      epd.display_frame(epd.get_frame_buffer(out))

def main():
    if modeTest:
      getDataFromJeedom()
      updateFrame1()
      updateFrame2()
    else:
      while True:
        key1state = GPIO.input(key1)
        key2state = GPIO.input(key2)
        key3state = GPIO.input(key3)
        key4state = GPIO.input(key4)

        if key1state == False:
            print('Update frame 1')
            getDataFromJeedom()
            updateFrame1()
            time.sleep(0.5)
        if key2state == False:
            print('Update frame 2')
            getDataFromJeedom()
            updateFrame1()
            time.sleep(0.5)
        if key3state == False:
            print('Key3 Pressed')
            time.sleep(0.2)
        if key4state == False:
            print('Key4 Pressed')

if __name__ == "__main__":
    #Met à jour l'écran au démarrage
    getDataFromJeedom()
    updateFrame2()
    updateFrame1()

    #puis attend un événement sur les touches Key1 à Key4 (sur un Raspberry Pi uniquement)
    main()

Remarque. J’ai juste un doute sur l’orientation correcte de la boussole en fonction de la direction du vent. Je compte sur vous pour le vérifier.

Le dashboard météo ePaper pour Jeedom obtenu

Il ne reste plus qu’à lancer le script. Au premier lancement, le script génère et affiche immédiatement la première page de la station météo. Pour afficher le second panneau, appuyer sur le bouton Key2. Les autres écrans sont disponibles pour afficher d’autres informations en provenance de Jeedom. Etat des lampes, des portes, niveau de CO2, température, consommation électrique…

La première page (Key1) récapitule la météo du jour

frame1 jeedom station meteo epaper waveshare eink jsin rpc

Le second écran (key2) permet d’afficher les prévisions à 4 jours. Et oui, c’est l’hivers 🙁

frame2 jeedom station meteo epaper waveshare eink jsin rpc prevision 4 jours

La même chose en vrai avec l’écran Waveshare 2,7” installé sur un Raspbery Pi3 qui fait tourner le serveur Jeedom !

jeedom epaper waveshare display dashboard weather station

jeedom epaper waveshare display dashboard weather station frame2

 

Voilà, il ne plus qu’à faire la même chose avec Domoticz ! J’espère que ce projet vous donnera plein de nouvelles idées. Pour le moment, j’ai réalisé les deux tutoriels avec un Raspberry Pi 3. L’intérêt principal des écrans ePaper étant l’absence de consommation électrique après le rafraichissement de l’affichage, il est temps de le tester avec un micro-contrôleur ESP8266 ou ESP32.

Cet article Station météo avec affichage ePaper (Dashboard) pour Jeedom sur Raspberry Pi (via l’API JSON RPC) est apparu en premier sur Projets DIY - Domotique et objets connectés à faire soi-même.

#Test de l’écran LCD tactile 7 pouces 1024 × 600 pixels Waveshare avec support acrylique pour Raspberry Pi

$
0
0
kit waveshare 7 inch raspberry pi support acrylickit waveshare 7 inch raspberry pi support acrylic raspbian

Aujourd’hui nous allons tester le kit Waveshare composé d’un écran tactile 7 pouces (1024×600 pixels) et d’un support acrylique à l’arrière duquel il est possible d’installer un Raspberry Pi ou un autre Mini PC. Dans le deux articles précédents, nous avons découvert les écrans ePaper du fabricant chinois Waveshare (test de l’écran ePaper 2,7” et un projet de station météo connectée à Jeedom). Waveshare fabrique également un gamme très complète d’écrans LCD/TFT tactiles pour le Raspberry Pi (tous les modèles). Ces écrans sont également compatibles avec Windows, Linux et d’autres mini-PC tel que le Banana Pi. Par compatible, je veux dire que Waveshare développe le drivers prenant en charge la fonction tactile de l’écran pour Windows, Debian (x86 et ARM). Pour réaliser ce tutoriel, j’ai utilisé le kit 7” commercialisé pour environ 45€ sur Gearbest (hors frais de port et sans le Raspberry Pi 3) et suivi les étapes sur le WiKi officiel de Waveshare.

Déballage du kit LCD/TFT 7” tactile Waveshare pour Raspberry Pi

Le kit est livré dans un carton de très bonne qualité. L’écran tactile est correctement emballé dans une mousse de protection. Le kit comprend

  • Un écran 7” LCT/TFT tactile
  • Un câble HDMI
  • Un câble USB pour le tactile
  • Le support incliné à assembler. Le support est composé de plaque d’acrylique de 3mm d’épaisseur
  • La visserie : entretoises, vis en nylon, 8 entretoises en laiton pour fixer le Raspberry Pi
  • Un CD Rom avec l’image de Raspbian, le drivers pour Windows
  • Un feutre pour nettoyer l’écran

Seul regret, il manque un crayon. Si vous n’avez pas de trop gros doigt, ce n’est pas un gros problème avec un écran de 7”. Au moins, ça évite de le perdre 😀

Assemblage du kit LCD/TFT 7” tactile Waveshare pour Raspberry Pi

Commencez par retire la feuille de papier protecteur sur chaque élément de structure en acrylique. On va débuter l’assemblage par le pied incliné. Comme vous pouvez le voir, il existe deux angles d’inclinaison.

 kit waveshare 7 inch raspberry pi support acrylic

Pour assembler le pied, on doit insérer un écran dans le logement de la barre transversale blanche. Les deux tenons viennent s’insérer dans les logements des cotés verticaux. On termine l’assemblage en vissant la vis M3 noire.

kit waveshare 7 inch raspberry pi support acrylic assemblage pied

Le support incliné assemblé

kit waveshare 7 inch acrylic pied

Prenez le cadre blanc. L’encoche dans le cadre vers le bas (elle permet le passage de la nappe du système tactile). Insérez une vis blanche dans chaque perçage. De l’autre coté, placez une entretoise en nylon blanc. Positionnez l’écran à l’intérieur du cadre. Placez une nouvelle entretoise.

 kit waveshare 7 inch raspberry pi support acrylic entretoise ecran

Préparez ensuite la fixation du Raspberry Pi. Pour le Raspberry Pi 3, il faut utiliser les perçages n°2. Tournez la plaque arrière pour que l’encoche latérale (passage des câbles HDMI et USB) se trouve à gauche et vers le haut. Fixez les 4 entretoises à l’aide d’un écrou M3.

kit waveshare 7 inch support acrylic entretoises raspberry pi

Fixez ensuite le Raspberry Pi 3 (sortie HDMI vers le haut) à l’aide de 4 vis M3.

 kit waveshare 7 inch fixation raspberry pi support acrylic

Placez la plaque arrière sur l’écran et terminez l’assemblage en vissant les 6 écrous sur les vis blanches. Serrez à la main.

kit waveshare 7 inch montage ecran

Branchez maintenant l’écran au Raspberry Pi à l’aide du câble HDMI et la sortie micro-USB (tactile) sur un port USB du Raspberry Pi 3.

 kit waveshare 7 inch raspberry pi support acrylic cables hdmi tactile

Voilà, le montage est terminé.

Configuration de l’affichage

Au premier démarrage, il est nécessaire de modifier la configuration de l’affichage. Voici l’image que vous allez certainement obtenir au démarrage de Raspbian.

kit waveshare 7 inch raspberry pi support acrylic premier demarrage

Le fichier de configuration config.txt se trouve dans le dossier /boot à la racine de la distribution. Ouvrez le fichier de configuration en exécutant la commande nano /boot/config.txt puis ajoutez ces lignes de configuration à la fin de fichier

max_usb_current=1
hdmi_group=2
hdmi_mode=87
hdmi_cvt 1024 600 60 6 0 0 0
hdmi_drive=1

Enregistrez avec la combinaison de touche CTRL + X puis O (ou Y) et relancez le système avec la commande

sudo reboot
 .

La configuration est quasiment la même d’un écran à l’autre. Il faudra  indiquer la résolution et la fréquence de rafraichissement à l’aide du paramètre hdmi_cvt.

Il est possible de modifier l’orientation de l’écran en ajoutant l’option display_rotate à la configuration. Cette option peut prendre comme valeur :

  • 1 pour 90°
  • 2 pour 180°
  • 3 pour 270°

Installation du driver et configuration du tactile

Les écrans Waveshare utilisent le port USB pour gérer le tactile ce qui laisse le GPIO du Raspberry Pi 3 totalement libre pour vos projets. Le drivers est disponible en ligne sur les dépôts de la distribution. Inutile de copier le moindre fichier depuis le CDRom livré. Exécutez cette commande pour installer le driver

sudo apt-get install xserver-xorg-input-libinput

On doit ensuite créer un fichier de configuration pour X11

sudo mkdir /etc/X11/xorg.conf.d

Ensuite on copie le fichier un fichier de configuration livré avec le driver

sudo cp /usr/share/X11/xorg.conf.d/40-libinput.conf /etc/X11/xorg.conf.d/

On doit apporter une petite modification au fichier

sudo nano /etc/X11/xorg.conf.d/40-libinput.conf

Sur le Wiki officiel, il est indiqué qu’il faut ajouter cette ligne

Option "CalibrationMatrix" "0 1 0 -1 0 1 0 0 1"
 en dessous de l’option 
MatchIsTouchscreen "on"
 . Il ne faut pas le faire si vous n’avez pas modifié l’orientation de l’écran.
# Match on all types of devices but tablet devices and joysticks
Section "InputClass"
        Identifier "libinput pointer catchall"
        MatchIsPointer "on"
        MatchDevicePath "/dev/input/event*"
        Driver "libinput"
EndSection

Section "InputClass"
        Identifier "libinput keyboard catchall"
        MatchIsKeyboard "on"
        MatchDevicePath "/dev/input/event*"
        Driver "libinput"
EndSection

Section "InputClass"
        Identifier "libinput touchpad catchall"
        MatchIsTouchpad "on"
        MatchDevicePath "/dev/input/event*"
        Driver "libinput"
EndSection

Section "InputClass"
        Identifier "libinput touchscreen catchall"
        MatchIsTouchscreen "on"
        #Option "CalibrationMatrix" "0 1 0 -1 0 1 0 0 1"
        MatchDevicePath "/dev/input/event*"
        Driver "libinput"
EndSection

Si vous devez orienter l’écran, voici les réglages de calibration à insérer dans le fichier de configuration. Il est nécessaire de redémarrer le système après chaque modification.

  • 90° :Option “CalibrationMatrix” “0 1 0 -1 0 1 0 0 1”
  • 180°: Option “CalibrationMatrix” “-1 0 1 0 -1 1 0 0 1”
  • 270°: Option “CalibrationMatrix” “0 -1 1 1 0 0 0 0 1”

 

Cet écran LCD de 7 pouces de diagonal est de bonne qualité. Le système tactile est précis et réactif. Par moment, j’ai pu constater l’apparition de stries qui se déplacent rapidement du bas vers le haut en moins d’une seconde. Je n’ai pas trouvé l’origine du problème. C’est peut être tout simplement le bloc d’alimentation de mon vieux PC que j’utilise pour développer sous Linux 32 bits qui en est la cause. Le support acrylique livré avec cet écran est un vrai plus. Pour moins de 45€ sur Gearbest (hors frais de port et sans le Raspberry Pi 3), on dispose d’une solution d’affichage complète pour le Raspberry Pi.

kit waveshare 7 inch raspberry pi support acrylickit waveshare 7 inch raspberry pi support acrylic raspbian

Cet article #Test de l’écran LCD tactile 7 pouces 1024 × 600 pixels Waveshare avec support acrylique pour Raspberry Pi est apparu en premier sur Projets DIY - Domotique et objets connectés à faire soi-même.

Configurer VNC sur Raspbian pour accéder à distance au bureau Pixel du Raspberry Pi

$
0
0
telecharger realvnc vnc

La distribution Raspbian prend en charge le bureau distant VNC. Il est très simple à configurer et à activer et ne requiert aucune compétence technique pour le faire. Le Raspberry Pi est une plateforme idéale pour l’apprentissage de la programmation et de l’électronique. Vous pouvez recycler du vieux matériel informatique (écran, clavier, souris, carte SD, chargeur 5V de smartphone). L’autre solution consiste à accéder au bureau graphique du Raspberry (appelé Pixel) à distance via une connexion spéciale appelée VNC qui signifie Virtual Network Computing. Pour fonctionner, on doit installer sur le Raspberry Pi un serveur VNC qui sera en charge de gérer les droits d’accès, d’envoyer l’image de l’écran (comme un flux vidéo) et de gérer les interactions de l’utilisateur (clavier, souris). Si un autre ordinateur (ou pourquoi pas une tablette ou un smartphone), on utilisera un client (ou Viewer).

Trouver l’adresse IP du Raspberry Pi

Vous aurez besoin de connaître l’adresse attribuée par le routeur au Raspberry Pi. Pour cela, ouvrez le Terminal et exécutez la commande ifconfig. Ici, le RPI se trouve à l’adresse 192.168.1.24 sur le réseau local. Suivez ce tutoriel si vous avez besoin d’attribuer une adresse IP fixe à votre Raspberry Pi.

raspberry pi ifconfig domoticz adresse ip serveur

Configurer VNC sur le Raspberry Pi

VNC permet donc d’accéder au bureau graphique de Raspbian depuis un autre ordinateur et une tablette. Ouvrez le Terminal et lancez raspi-config avec la commande

sudo raspi-config
 . Sélectionnez l’option 5 (Interfacing Option)

activate vnc raspbian raspberry pi

Ensuite P3 – VNC et acceptez

activate vnc raspbian raspberry pi

La première fois qu’on active VNC sur la distribution Raspbian, il faut installer tous les paquets nécessaires.

Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés :
  bc cups cups-browsed cups-client cups-common cups-core-drivers cups-daemon cups-filters cups-filters-core-drivers cups-ppdc cups-server-common
  ghostscript gsfonts libcupscgi1 libcupsfilters1 libcupsimage2 libcupsmime1 libcupsppdc1 libfontembed1 libgs9 libgs9-common libgutenprint2 libijs-0.35
  libjbig2dec0 libpoppler46 libqpdf13 poppler-data poppler-utils printer-driver-gutenprint qpdf
Paquets suggérés :
  cups-bsd foomatic-db-compressed-ppds foomatic-db printer-driver-hpcups hplip cups-pdf xpp ghostscript-x gutenprint-locales fonts-japanese-mincho
  fonts-ipafont-mincho fonts-japanese-gothic fonts-ipafont-gothic fonts-arphic-ukai fonts-arphic-uming fonts-nanum gutenprint-doc
Les NOUVEAUX paquets suivants seront installés :
  bc cups cups-browsed cups-client cups-common cups-core-drivers cups-daemon cups-filters cups-filters-core-drivers cups-ppdc cups-server-common
  ghostscript gsfonts libcupscgi1 libcupsfilters1 libcupsimage2 libcupsmime1 libcupsppdc1 libfontembed1 libgs9 libgs9-common libgutenprint2 libijs-0.35
  libjbig2dec0 libpoppler46 libqpdf13 poppler-data poppler-utils printer-driver-gutenprint qpdf realvnc-vnc-server
0 mis à jour, 31 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 20,9 Mo dans les archives.
Après cette opération, 86,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer ? [O/n] O

Acceptez l’installation (touche O) des nouveaux paquets. Raspbian s’occupe de tout, y compris installer le script de démarrage automatique du serveur VNC au lancement du système.

Installer un client (viewer) VNC

Il existe de très nombreux clients VNC pour toutes les plateformes (macOS, Windows, Linux…) et pour smartphone (iOS, Android…). RealVNC (site internet) est disponible sur toutes les plateformes (y compris mobile). Il est gratuit pour un usage personnel. Si vous préférez rester dans les projets 100% Open Source et libres, gage de respect de la vie privée, vous pouvez vous tourner vers UltraVNC (page officielle du projet).

Allez sur le site de RealVNC pour récupérer le client (viewer) VNC qui correspond à votre système.

telecharger realvnc vnc

Installez et lancez VNC Viewer sur votre ordinateur.

Dans la barre d’adresse, saisissez l’adresse IP du Raspberry Pi (commande ifconfig pour la trouver) puis validez en appuyant sur la touche Enter du clavier. Il n’est pas nécessaire d’indiquer le port (5900) sauf s’il a été modifié manuellement.

adresse ip raspberry pi realvnc vnc viewer client

Dans la fenêtre qui s’affiche, saisissez votre nom d’utilisateur et votre mot de passe.

connexion raspbian raspberrypi realvnc vnc

RealVNC vous informe que la connexion n’est sécurisée (ce n’est pas très grave lorsqu’on se connecte au Raspberry Pi depuis un réseau local). Acceptez

realvnc alerte securite raspbian non securise

Vous voilà sur votre Raspberry Pi :D. Il n’y a rien de plus à configurer. VNC démarre automatiquement au démarrage du système ! Ici, mon Raspberry Pi 3 de test qui fait également fonctionner un serveur domotique Jeedom.

raspbian install scratch 2 manually

TightVNC

TightVNC (page officielle du projet) est un serveur VNC léger qui fonctionne sur toutes les distributions Linux ainsi que sur Windows. C’est une alternative à RealVNC utilisé par la fondation Raspberry. Il nécessite plus de réglages et de configuration que RealVNC. A vous de choisir la solution qui vous convient le mieux. Clé en main ou Power User.

Pour installer et configurer TightVNC, suivez ce tutoriel écrit pour Armbian sur un Orange Pi s’applique également à Raspbian Stretch.

Sécuriser (crypter) l’accès VNC

Si vous vous connectez à votre Raspberry Pi depuis votre réseau local, l’absence de cryptage SSL n’est pas obligatoire. Tout peut être intercepté sur le réseau. Le flux vidéo, les actions à la souris, les touches du clavier… Si la sécurité est votre obsession ou si vous devez accéder régulièrement à votre Raspberry Pi depuis internet (depuis votre travail ou votre smartphone), il est judicieux et fortement conseillé de crypter vos échanges avec celui-ci.

Il existe plusieurs méthodes :

  • Créer un tunnel SSH dans lequel sera injecté le flux VNC. Suivez ce tutoriel pour le mettre en place
  • Utiliser VNC Connect de RealVNC. Suivez ce tutoriel de François Mocq
Remarque. Pour accéder au Raspberry PI depuis internet, il faudra faire une redirection de port vers l’adresse IP du Raspberry Pi. VNC utilise le port 5900.

Pour aller plus loin, voici d’autres tutoriels sur Raspbian qui pourraient vous intéresser

Cet article Configurer VNC sur Raspbian pour accéder à distance au bureau Pixel du Raspberry Pi est apparu en premier sur Projets DIY - Domotique et objets connectés à faire soi-même.

Installer le bureau Pixel sur Raspbian Strech Lite. 10 logiciels indispensables pour le Raspberry Pi 3

$
0
0
raspbian install scratch 2 manually

Si vous regrettez d’avoir optez pour la version Lite de Raspbian, voici un tutoriel rapide qui explique comment installer manuellement le bureau Pixel. Inutile de graver une nouvelle carte SD pour votre Raspberry Pi. Quelques commandes dans le Terminal suffisent pour installer le bureau graphique Pixel sur Raspbian Stretch Lite. Nous allons également voir comment installer les principaux logiciels indispensables pour débuter avec le Raspberry Pi 3. Synaptic Package Manager, VNC, VLC Player, client BitTorrent Deluge, LibreOffice, Mathematica, Wolfram Alfa, Thonny Python, Node-RED, Scratch 2, IDE Arduino

Installer manuellement le bureau Pixel sur Raspbian Lite

On trouve de nombreuses conversations sur le forum officiel de la fondation comme celle-ci. Pour réaliser l’article sur le test de l’écran tactile 7” de Waveshare, j’avais utilisé la carte SD de Jeedom qui est basé sur Jessie Lite. Evidemment, lorsqu’il a fallu testé la partie tactile de l’écran, je n’avais pas de bureau graphique  😕

Une seule commande est nécessaire pour installer le bureau Pixel. Connectez-vous à votre Raspberry Pi. Commencez par mettre à jour la distribution

sudo apt update
sudo apt upgrade

Ensuite, exécutez cette commande qui va installer X11 (le moteur graphique de Linux) et le bureau PIXEL.

sudo apt install raspberrypi-ui-mods

A la fin de l’installation, redémarrez le système avec la commande 

sudo reboot
. Raspbian se lance directement sur Pixel et vous demande de vous connecter.

login raspbian pixel installation jessie lite

10 logiciels à installer sur votre Raspberry Pi en priorité

L’installation manuellement du bureau graphique Pixel ne veut pas dire que tous les logiciels pré-installés sur l’image Desktop vont l’être également. En fait, il n’y a vraiment que le bureau Pixel qui est installé. Si vous avez besoin d’autres logiciels, il va falloir les installer un à un manuellement. Voici une liste des 10 logiciels indispensables à installer sur votre Raspberry Pi.

Navigateur internet Chromium

Avant de vous lancer, la première chose à faire est de mettre à jour la distribution vers la version la plus récente. Exécutez les commandes suivantes puis redémarrez. La mie à jour de la distribution va permettre (en plus des améliorations sous le capot comme par exemple une meilleure gestion du Bluetooth) d’installer le navigateur web Open Source Chromium (attention à ne pas confondre avec le navigateur Chrome de Google), l’outil système Htop et les liens vers le MagPi et d’autres ressources pour le Raspberry Pi.

sudo apt-get update
sudo apt-get upgrade
sudo apt-get dist-upgrade
sudo reboot

Ensuite, voici quelques commandes trouvées sur internet pour installer les différents logiciels pré-installés sur l’image Stretch Desktop.

Gestionnaire de paquets Synaptic Package Manager

Si vous n’avez pas l’habitude du Terminal, je vous conseille d’installer le gestionnaire de paquets Synaptic. C’est l’équivalent des Stores sous Windows et macOS. La plupart des logiciels disponibles pour le Raspberry Pi peuvent être installés depuis ce gestionnaire. Ce dernier est accessible depuis le raccourcis ajouté dans le menu Préférence.

Pour l’installer, exécutez la commande 

sudo apt-get install synaptic
 depuis le Terminal.

raspbian install synaptic package manager

VNC pour accéder au bureau Pixel à distance avec RealVNC

VNC permet d’accéder au bureau graphique de Raspbian depuis un autre ordinateur et même une tablette. Depuis le Terminal, lancez raspi-config avec la commande sudo raspi-config puis sélectionnez l’option 5 (Interfacing Option)

activate vnc raspbian raspberry pi

Ensuite P3 – VNC et acceptez

activate vnc raspbian raspberry pi

La première fois qu’on active VNC sur la distribution Jessie Lite, il faut installer tous les paquets nécessaires.

Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
Les paquets supplémentaires suivants seront installés :
  bc cups cups-browsed cups-client cups-common cups-core-drivers cups-daemon cups-filters cups-filters-core-drivers cups-ppdc cups-server-common
  ghostscript gsfonts libcupscgi1 libcupsfilters1 libcupsimage2 libcupsmime1 libcupsppdc1 libfontembed1 libgs9 libgs9-common libgutenprint2 libijs-0.35
  libjbig2dec0 libpoppler46 libqpdf13 poppler-data poppler-utils printer-driver-gutenprint qpdf
Paquets suggérés :
  cups-bsd foomatic-db-compressed-ppds foomatic-db printer-driver-hpcups hplip cups-pdf xpp ghostscript-x gutenprint-locales fonts-japanese-mincho
  fonts-ipafont-mincho fonts-japanese-gothic fonts-ipafont-gothic fonts-arphic-ukai fonts-arphic-uming fonts-nanum gutenprint-doc
Les NOUVEAUX paquets suivants seront installés :
  bc cups cups-browsed cups-client cups-common cups-core-drivers cups-daemon cups-filters cups-filters-core-drivers cups-ppdc cups-server-common
  ghostscript gsfonts libcupscgi1 libcupsfilters1 libcupsimage2 libcupsmime1 libcupsppdc1 libfontembed1 libgs9 libgs9-common libgutenprint2 libijs-0.35
  libjbig2dec0 libpoppler46 libqpdf13 poppler-data poppler-utils printer-driver-gutenprint qpdf realvnc-vnc-server
0 mis à jour, 31 nouvellement installés, 0 à enlever et 0 non mis à jour.
Il est nécessaire de prendre 20,9 Mo dans les archives.
Après cette opération, 86,9 Mo d'espace disque supplémentaires seront utilisés.
Souhaitez-vous continuer ? [O/n] O

Acceptez l’installation (touche O) des nouveaux paquets.

Maintenant, allez sur le site de RealVNC pour récupérer le viewer qui correspond à votre système.

telecharger realvnc vnc

Installez et lancez VNC Viewer. Dans la barre d’adresse, saisissez l’adresse IP du Raspberry Pi (commande ifconfig pour la trouver) puisen appuyant sur la touche Enter du clavier. Il n’est pas nécessaire d’indiquer le port (5900) sauf s’il a été modifié manuellement. Dans la fenêtre qui s’affiche, saisissez votre nom d’utilisateur et votre mot de passe.

connexion raspbian raspberrypi realvnc vnc

RealVNC vous informe que la connexion n’est sécurisée (ce n’est pas très grave lorsqu’on se connecte au Raspberry Pi depuis un réseau local). Acceptez

realvnc alerte securite raspbian non securise

Vous voilà sur votre Raspberry Pi :D. Il n’y a rien de plus à configurer. VNC démarre automatiquement au démarrage du système !

raspbian install scratch 2 manually

Vous pouvez également installer TightVNC. Suivez ce tutoriel écrit pour Armbian sur un Orange Pi s’applique également à Raspbian Stretch.

Player VLC

Le célèbre lecteur multimédia a évidemment été adapté au Raspberry Pi. VLC est disponible depuis Synaptic ou en ligne de commande (

sudo apt install vlc
).La version 2.2.7 ne se lance as sur Raspbian Strech.

Le client BitTorrent Deluge

Le Raspberry Pi est un mini-PC qui consomme très peu. Si vous avez des fichiers (légaux) à télécharger, le Raspberry Pi 3 est un bonne alternative. Cela vous évitera de laisser fonctionner votre PC de nombreuses heures ou d’investir dans un NAS onéreux. Deluge peut être installé depuis Synaptic ou en ligne de commande (sudo apt install deluge). Deluge vient se loger dans le menu Internet

install deluge bittorrent raspbian raspberry pi

L’éditeur de code Thonny Python (pour Python 3)

Thonny Python est un éditeur de code simple et efficace pour programmer en Python. Il est maintenant intégré par défaut à la distribution Raspbian Stretch. Python 3 est également installé en même temps de l’éditeur de code Thonny Python. Thonny Python vient se ranger dans le menu programmation.

thonny python install raspbian

Mathematica et le langage Wolfram Alfa

sudo apt-get install wolfram-engine

Depuis le Terminal, les commandes

wolfram
  et
mathematica
 permettent de lancer les logiciels.

Node-RED

Node-RED s’installe très facilement avec une seule commande dans le Terminal. Pour en savoir plus, lisez ce tutoriel.

bash <(curl -sL https://raw.githubusercontent.com/node-red/raspbian-deb-package/master/resources/update-nodejs-and-nodered)

Pour aller plus loin, voici les derniers tutoriels sur Node-RED

Scratch 2

Exécutez cette commande depuis le Terminal pour installer Scratch 2 sur Raspbian. Un raccourcis pour lancer facilement Scratch 2 est automatiquement ajouté au menu Programmation.

sudo apt-get install scratch2

raspbian install scratch 2 manually

Libre Office

Le Raspberry Pi 3 est assez puissant pour servir de poste bureautique d’appoint. Libre Office (nouveau nom d’Open Office) est très facile à installer depuis Synaptic. Lancez Synaptic depuis le raccourcis qui se trouve dans le menu Préférences. Faites une recherche sur le mot clé “libreoffice” ou “libre office”.

install libreoffice raspbian raspberry pi

Dans la liste qui s’affiche, faites un clic sur le paquet libreoffice puis choisissez l’option Sélectionner pour l’installation. Acceptez tous les paquets et les dépendances qu’il faut installer en même temps.

install libreoffice select package

Lancez l’installation en cliquant sur Appliquer

 installation libreoffice raspbian

Vous pouvez l’installer LibreOffice en ligne de commande en exécutant cette commande depuis le Terminal

sudo apt-get install libreoffice
 .

libreoffice raspbian raspberry pi vnc

IDE Arduino

Tout comme Libre Office, vous pouvez installer l’IDE Arduino à l’aide de Synaptic. Un raccourcis est ajouté dans le menu programmation. Je vous conseille toutefois de suivre ce tutoriel qui explique comment installer la version officielle de l’éditeur de code. Vous serez certain d’avoir la dernière version de celui-ci. En effet, le numéro de version (ici 2:1.0.5) ne correspond pas à la numérotation officielle. Je n’ai pas trouvé d’explication sur la différence (si quelqu’un peut nous éclairer ?). Peut être que la fondation ne publie pas les mises à jour sur les dépôts Linux.

ide arduino install raspbian raspberry pi

Avec l’IDE Arduino, vous pourrez programmer de très nombreuses cartes de développement. Toutes les cartes officielles développées par la fondation mais également les modules WiF ESP8266 ou les nouveaux ESP32 qui intègrent également la communication Bluetooth LE. Pour en savoir plus, vous pouvez commencer par lire quelques articles :

Voici également quelques projets qui peuvent vous intéresser

Cet article Installer le bureau Pixel sur Raspbian Strech Lite. 10 logiciels indispensables pour le Raspberry Pi 3 est apparu en premier sur Projets DIY - Domotique et objets connectés à faire soi-même.


Installer facilement des logiciels sur le Raspberry Pi sous Raspbian Stretch avec Synaptic Package Manager ou depuis le Terminal

$
0
0
paquet synaptic libreoffice raspbian raspberry

Vous venez d’acheter votre Raspberry Pi et vous découvrez l’univers Linux. Voici quelques conseils pour bien débuter et installer facilement des logiciels sur Raspbian. Le plus facile est d’installer le gestionnaire de paquets Synaptic Package Manager. C’est un équivalent (très très simplifié et sans images  😥 ) de l’Apple Store ou du Windows Store. Dans certains cas, il faudra tout de même passer par le Terminal. Nous allons voir que la commande APT est très simple et très puissante.

Installer le gestionnaire de paquets Synaptic Package Manager

Si vous n’avez pas l’habitude du Terminal, je vous conseille d’installer le gestionnaire de paquets Synaptic. C’est l’équivalent des Stores sous Windows et macOS. La plupart des logiciels disponibles pour le Raspberry Pi peuvent être installés depuis ce gestionnaire. Ce dernier est accessible depuis le raccourcis ajouté dans le menu Préférence.

Pour l’installer, exécutez la commande 

sudo apt-get install synaptic
 depuis le Terminal.

raspbian install synaptic package manager

Synaptic va a l’essentiel, il permet de rechercher et d’installer des logiciels. Ce qui est déroutant par rapport aux autres environnements, c’est qu’on peut installer des “morceaux” de logiciels. Comme tout est Open Source, c’est à dire que chacun peut lire et modifier le code source de n’importe quel logiciel linux (y compris Linux en lui même d’ailleurs), on peut installer une librairie qui est partagée avec d’autres logiciels. C’est un peu l’équivalent des librairies DLL sous Windows.

Faites une recherche sur le mot clé “libreoffice” ou “libre office”.

install libreoffice raspbian raspberry pi

Donc, lorsqu’on cherche un logiciel, par exemple LibreOffice, on va trouver le paquet principal (le logiciel) ainsi que toutes les librairies associées. En général, le logiciel se trouve en premier puis on trouve les dépendances.

paquet synaptic libreoffice raspbian raspberry

 

Dans la liste qui s’affiche, faites un clic sur le paquet libreoffice puis choisissez l’option Sélectionner pour l’installation. Acceptez tous les paquets et les dépendances qu’il faut installer en même temps.

install libreoffice select package

Lancez l’installation en cliquant sur Appliquer

 installation libreoffice raspbian

Si le logiciel propose une interface graphique (GUI), un raccourcis est ajouté dans le menu. Ici LibreOffice est ajouté au menu Bureautique. Comme sur Windows ou macOS, un clic sur le raccourci permet de démarrer le logiciel.

libreoffice raspbian raspberry pi vnc

Installer un logiciel en ligne de commande

Synaptic se connecte à des dépôts en ligne pour rechercher les logiciels qui vous voulez installer. Il est possible que le logiciel qui vous désiré ne soit pas présent sur les dépôts habituels. Dans d’autres cas (assez rare), les dépôts ne sont pas à jour. C’est par exemple le cas de l’IDE Arduino. Dans ce cas, il faudra passer par les lignes de commande dans le Terminal. Ici Synaptic installe la version 2:1.0.5 de l’IDE Arduino à la place de la version 1.8.5. Il faut donc l’installer manuellement (en suivant ce tutoriel).

ide arduino install raspbian raspberry pi

C’est commande APT qui est utilisée sous Raspbian (il en existe d’autres sur les autres distributions Linux). Elle s’utilise comme ceci

sudo apt-get install 'nom du logiciel'

ou

sudo apt install 'nom du logiciel'

vous pouvez ajouter l’option -y qui permet de répondre automatiquement à la question “Après cette opération, XXX Mo d’espace disque supplémentaires seront utilisés. Souhaitez-vous continuer ? [O/n]”

Pour supprimer un logiciel, on utilisera la commande

sudo apt remove 'nom du logiciel'

La commande APT est vraiment très puissante. Si vous avez besoin d’autres options, tout est très bien expliqué sur le site d’Ubuntu (qui utilise également la distribution Debian comme base)

 

Pour aller plus loin, voici d’autres tutoriels sur Raspbian qui pourraient vous intéresser

 

Cet article Installer facilement des logiciels sur le Raspberry Pi sous Raspbian Stretch avec Synaptic Package Manager ou depuis le Terminal est apparu en premier sur Projets DIY - Domotique et objets connectés à faire soi-même.

#Test de l’écran LCD 3.5” HDMI tactile (via le GPIO) avec boitier acrylique pour Raspberry Pi 3 sous Raspbian (480×320 à 1920×1080 pixels)

$
0
0
kit lcd 35 tactile raspberry pi gpio raspbian 1024x768 pixels

Nous continuons notre série de tests des différentes solutions d’affichage pour le Raspberry Pi 3. Aujourd’hui, je vous propose de tester l’écran LCD de 3.5” HDMI tactile livré avec un boitier en acrylique transparent. La partie tactile est gérée via le GPIO du Raspberry Pi. On réservera cette solution pour des projets qui n’utilisent pas le GPIO du Raspberry Pi. C’est un petit boiter très pratique pour protéger le Raspberry Pi. On le trouve souvent en promo pour moins de 20€ sur AliExpress. On pourra utiliser cette solution pour développer un serveur domotique, un serveur de fichier, un serveur multi-média, un dashboard pour objet connecté, une mini console de rétrogaming Retropie ou Recalbox…

Déballage du kit LCD 3.5” tactile pour Raspberry Pi

Le kit est composé d’un écran LCD 3.5” de la société chinoise Kedei capable d’afficher une résolution allant de 480×320 pixels à 1920*1080 pixels (il faudra penser à acheter des loupes en même temps  :-D). On trouve assez souvent ce kit en promo pour moins de 20€ sur AliExpress. Ici, nous allons le tester dans la résolution de base (480×320 pixels). On trouve des kits équivalents sous la marque Geekwrom ou Kuman. La partie tactile est gérée par le GPIO du Raspberry Pi. L’écran est conçu comme un HAT compatible avec le GPIO du Raspberry Pi (2 ou 3). Si vous voulez conserver un accès au GPIO pour vos projets, il faudra faire vous même le câblage de la partie tactile et utiliser un câble HDMI standard. Sinon, vous pouvez également opter pour un écran avec une gestion via le port USB de la partie tactile.

Ce kit de très bonne qualité est livré dans un petit carton d’emballage compact. L’écran est protégé par de la mousse. Le kit contient les éléments suivants :

  • Un écran LCD 3.5” qui fonctionne en HDMI
  • Un boitier (acrylique) transparent à assembler
  • La visserie pour fixer le Raspberry Pi 3 et assembler le boitier
  • Un tournevis
  • Un stylet indispensable pour viser les icônes sur un écran d’une si petite taille
  • Un (petit) guide d’installation (en anglais) qui n’est plus d’actualité

kit lcd 3.5 pouces tactile raspberry pi gpio hdmi 480x320

Assemblage du boitier et de l’écran

Commencez par retirer le film protecteur sur chaque élément du boitier. Ensuite, fixez les 4 entretoises sur le cadre de l’écran.

 kit lcd 35 tactile raspberry pi gpio assemblage base

Fixez le Raspberry Pi 3 sur la base du boitier en intercalant une entretoise à chaque fois.

kit lcd 3.5 pouces tactile montage raspberrypi3 kit lcd 3.5 pouces tactile raspberry pi gpio montage boitier

Connectez l’écran LCD sur le GPIO du Raspberry Pi 3. Il s’insère totalement à droite de connecteur GPIO. Insérez les quatre cotés du boitier. Branchez l’écran HDMI à l’aide du connecteur coudé.

kit lcd 3.5 pouces tactile raspberry pi gpio montage ecran kit lcd 3.5 pouces tactile raspberry pi gpio hdmi connector

Terminez le montage en fixant la base sur les quatre entretoises.

kit lcd 3.5 pouces tactile raspberry pi gpio montage boitier

Avant d’aller plus loin, allumez le rétro-éclairage de l’écran à l’aide du petit interrupteur situé à coté du connecteur HDMI (au dessus du connecteur d’alimentation du Raspberry Pi).

kit lcd 3.5 pouces tactile raspberry pi gpio hdmi connector

Installation du driver, configuration de l’écran et prise en charge du tactile via le GPIO

Si vous avez lu l’article sur le test de l’écran LCD 7” Waveshare, vous allez retrouver le même principe de configuration. Ici, il n’y a (presque) rien à faire car tout est géré par un script de configuration.

Kedei commercialise plusieurs écrans :

  • HDMI_Normal_LCD, l’écran qui nous intéresse pour ce test
  • HDMI_Surper_Vertical
  • HDMI_Surper_Horizontal

Pour chaque écran, on trouve le driver ainsi qu’une image de la distribution Linux pré-configurée. Je n’ai pas testé les images proposées (ce n’est pas nécessaire). Je n’ai aucun idée de la distribution proposée pour le Raspberry Pi.

Faites un clic droit sur LCD_show_35hdmi et copiez l’adresse du lien (http://en.kedei.net/raspberry/hdmi/LCD_show_35hdmi.tar.gz)

lcd tft 35 inchs hdmi tactile kedei spi raspberry pi gpio screen driver

Mettez sous tension le Raspberry Pi et connectez vous en SSH à celui-ci (comment faire). Exécutez la commande suivante pour télécharger le driver (modifiez le lien si nécessaire).

wget http://en.kedei.net/raspberry/hdmi/LCD_show_35hdmi.tar.gz

Décompressez l’archive

tar -xzvf LCD_show_35hdmi.tar.gz

Allez dans le répertoire

cd LCD_show_35hdmi

Voici le script d’installation pour l’écran 3.5” (480×320 pixels) testé dans cet article

sudo cp ./lcd_35_v/kernel.img /boot/kernel.img
sudo cp ./lcd_35_v/kernel7.img /boot/
sudo cp ./lcd_35_v/*.dtb /boot/
sudo cp ./lcd_35_v/config_480_320.txt  /boot/config.txt
sudo cp ./lcd_35_v/overlays/*.dtb* /boot/overlays/
sudo cp -rf ./lcd_35_v/lib/* /lib/

sudo apt-mark hold raspberrypi-kernel
sudo apt-mark hold raspberrypi-bootloader
sudo reboot

Comme vous pouvez le constater, le fichier

/boot/config.txt
  va être écrasé par cette nouvelle version. Si vous avez apporté des modifications à ce fichier, n’oubliez pas d’en faire une copie puis reportez vos réglages. L’autre solution consiste à mettre en commentaire la ligne
sudo cp ./lcd_35_v/config_480_320.txt /boot/config.txt
  et d’ajouter manuellement la configuration dans votre fichier actuel.
hdmi_force_hotplug=1
hdmi_drive=2
hdmi_group=2
hdmi_mode=87
hdmi_cvt 480 320 60 6 0 0 0

dtoverlay=ads7846,cs=0,penirq=25,penirq_pull=2,speed=10000,keep_vref_on=0,swapxy=0,pmax=255,xohms=150,xmin=199,xmax=3999,ymin=199,ymax=3999

Si vous êtes prêt, exécutez le script d’installation.

sudo ./LCD35_480*320

Le script s’exécute. Le Kernel est mis à jour puis Raspbian redémarre.

raspberrypi-kernel passé en figé (« hold »).
raspberrypi-bootloader passé en figé (« hold »).

Voici le bureau Pixel de Raspbian en 480×320 pixels

kit lcd 35 tactile raspberry pi gpio raspbian 320x480 pixels

Vous pouvez modifier la résolution d’affichage dans le fichier config.txt. En dessous d’une résolution de 800×600 pixels, il est souvent difficile de pouvoir accéder ou boutons de confirmation. Il faut redémarrer le système après chaque modification pour prendre en compte les nouveaux paramètres d’affichage. Voici le résultat en 1024×768 pixels.

kit lcd 35 tactile raspberry pi gpio raspbian 1024x768 pixels

Evidemment, c’est un écran bien trop petit pour développer ou surfer sur internet. L’avantage de pouvoir disposer d’une grande résolution trouve tout de même un intérêt si on se connecte à distance au Raspberry par une connexion VNC. VNC ne sait pas (ne peut pas) afficher une résolution supérieure à celle de l’écran. Dans le prochain tutoriel, nous verrons comment installer Retropie pour transformer ce petit boitier en console de jeu rétro.

Cet article #Test de l’écran LCD 3.5” HDMI tactile (via le GPIO) avec boitier acrylique pour Raspberry Pi 3 sous Raspbian (480×320 à 1920×1080 pixels) est apparu en premier sur Projets DIY - Domotique et objets connectés à faire soi-même.

Mini console de jeu retrogaming Retropie sur Raspberry Pi 3 avec un écran LCD tactile 3.5” HDMI

$
0
0
super mario gameboy advanced retropie raspberry pi 3 lcd display portable

Dans le dernier article, nous avons testé l’écran LCD 3.5” tactile pour le Raspberry Pi 3. Cet écran de petites dimensions est très bien adapté pour la réalisation d’un projet de console de jeu de retrogaming portable. Après avoir testé Recalbox, je vous propose aujourd’hui d’installer Retropie. Par rapport au projet Recalbox qui n’est livré que sous la forme d’une image pré-configurée, Retropie est très facile à installer sur une distribution Raspbian. Le WiKi en anglais est très bien détaillé. Toutes les étapes de l’installation et de la configuration de Retropie sur Raspbian Pixel sont très bien expliquées.

Matériel nécessaire

Nous allons repartir de la configuration précédente. A savoir un Raspberry Pi 3 équipé d’une écran LCD 3.5 pouces tactile livré avec un boitier en acrylique transparent. Vous pouvez y adjoindre une gamepad SNES par exemple

Quelques conseils et remarques avant de commencer

N’installez pas Retropie sur un compte root. C’est théoriquement possible mais vous allez rencontrer de très nombreux problèmes de permissions. Il est préférable de l’installer sur un compte utilisateur classique.

Retropie s’accapare le système et démarre automatiquement à la place du bureau Pixel. Il est toutefois possible de modifier l’ordre de démarrage ou de quitter Retropie pour lancer Pixel manuellement. Nous verrons comment faire.

Suivez ce tutoriel pour assembler et configurer l’écran LCD tactile 3,5” avec Raspbian.

Installer RetroPie sur Raspbian stretch

Depuis Raspbian ouvrez un Terminal ou ouvrez une connexion SSH depuis un autre ordinateur. Exécutez cette première commande pour installer les librairies nécessaires au projet

sudo apt-get install git lsb-release

Placez vous à la racine du dossier utilisateur pour récupérer le dépôt des sources sur GitHub

cd
git clone --depth=1 https://github.com/RetroPie/RetroPie-Setup.git

On rend le script de configuration exécutable avant de le lancer

cd RetroPie-Setup
chmod +x retropie_setup.sh
sudo ./retropie_setup.sh

Avec une carte SD de 16 Go, inutile de vouloir installer manuellement les packages. Au risque d’en louper, autant laisser le script faire le travail pour nous. A premier démarrage, l’utilitaire d’installation vous demande d’ajouter l’utilisateur pi au groupe ‘input’. Acceptez pour avoir accès au gamepad USB.

manual install retropie raspbian stretch

Sélectionnez l’option Basic install

manual install retropie raspbian stretch

et acceptez. L’installation démarre immédiatement et dure quelques minutes (en fonction de votre débit internet naturellement).

manual install retropie raspbian stretch

A la fin de l’installation, redémarrez en sélectionnant l’option Perform reboot. Raspbian démarre maintenant automatiquement sur Retropie !

retropie console 3.5 inch lcd tactile display raspberry pi 3 portable

Configurer un Gamepad ou une manette USB

Au premier démarrage, Retropie vous demande de configurer une manette. Le fonctionnement est absolument identique à Recalbox. Branchez un gamepad ou une manette sur un port USB du Raspberry Pi et pressez au moins deux secondes n’importe quel bouton pour démarrer la configuration.

retropie start configure gamepad

Retropie nous indique le type de manette qui a été détecté.

retropie start configure gamepad

Appuyez successivement le bouton qui correspond à la commande. Maintenez 2 secondes n’importe quel bouton pour passer à la commande suivante si vous n’avez aucun bouton qui correspond.

retropie start configure gamepad

Attention, il est important de créer une combinaison de touche à la dernière ligne nommé Hotkey. C’est cette combinaison de touche qui permettra de quitter un jeu à tout moment pour retourner au menu Retropie. Par défaut, il faut appuyer sur les touches Start et Select simultanément.

Pour nous aider, l’équipe Retropie a mis à disposition l’organisation des touches de plusieurs manettes usuelles (SNES, PSP et Xbox 360)

Comment installer des ROMs de jeux et des Bios de consoles

Pour installer des ROMs de jeux et éventuellement les bios de consoles, il existe plusieurs méthodes pour se connecter à la console Retropie.

A l’aide d’une clé USB

En connectant une clé USB. Clairement, c’est n’est pas la solution la plus simple surtout si vous débutez dans le monde Linux

En FTP

Installer des fichiers avec une connexion FTP eest beaucoup plus facile qu’avec une clé USB. Vous aurez besoin d’un client FTP. FileZilla présenté dans cet article est gratuit et suffisant. Il faudra avant tout activer la connexion SSH sur Raspbian en lançant l’outil de configuration avec la commande

sudo raspi-config
 . Choisissez l’option Interfacing Options

raspi-config interfacing option ssh ftp

Puis SSH

raspi-config ssh

Validez l’activation du serveur SSH.

raspi-config ssh server enable ftp

Vous pouvez maintenant vous connecter en FTP avec les paramètres suivants :

  • user / password : votre nom d’utilisateur / mot de passe
  • port : 22

Sur le compte de l’utilisateur, on trouve un dossier Retropie qui contient deux dossiers BIOS et roms. Les Roms de jeu doivent être déposés dans le sous-dossier qui correspond à la console.

Avec le partage de fichier Samba

C’est probablement la méthode la plus facile. En activant le partage de fichier Samba, vous allez pouvoir trouver la console Retropie sur votre réseau local que ce soit sur un PC Windows, Linux ou macOS. Pour activer Samba, sélectionnez l’option Configuration / tools

etropie samba configuration

Descendez dans la liste pour trouver l’option samba  – Configure samba ROM shares

retropie samba raspbian

Sélectionnez Install RetroPie Samba shares. A la première installation, tous les packages nécessaires seront installés automatiquement. Attendez la fin de l’installation sans l’interrompre.

 retropie samba install

De retour au menu, activez le partage en sélectionnant Restart Samba service. Normalement, le RetroPie devrait apparaître sur votre ordinateur. Si ce n’est pas le cas, redémarrez Raspbian. retropie samba restart service

A l’aide de l’interface d’administration Web (retropie-manager)

C’est la méthode que je vous conseille d’utiliser. Au moins vous n’aurez pas à vous soucier du répertoire d’installation des ROMs.

Recalbox est livré avec une interface web qui permet de gérer facilement de nombreuses options de la console. Retropie a repris une partie du travail. L’interface doit être installée manuellement depuis le gestionnaire d’installation. Ouvrez le menu Manage packages

retropie manage packages

Sélectionnez l’option Manage experimental packages

retropie manage experimental packages

Descendez en bas de la liste pour trouver le package RetroPie-Manager

install retropie-manager

Sélectionnez Install from source

retropie manager install form source

A la fin de l’installation, allez dans le menu Configuration / Options

retropie-manager options

Puis Start RetroPie-Manage now pour démarrer l’interface web. Profitez-en pour activer le lancement de l’interface WEB au démarrage de la console e choisissant l’option Enable RetroPie-Manager on Boot

start retropie-manager enable on boot

Ouvrez un navigateur internet et saisissez l’adresse IP du Raspberry Pi suivi du port :8000.

retropie manager interface install bios rom

Configurer le son

Par défaut, RetroPie est capable de détecter la sortie audio. Comme l’écran LCD 3,5” est connecté via le port HDMI au Raspberry Pi 3, il y a de grandes chances que RetroPie considère qu’il faut utiliser la sortie audio de l’HDMI. Il faut donc connecter votre enceinte à la prise jack de l’écran et non pas sur cette du Raspberry Pi 3.

retropie audio jack lcd display 3.5 inch raspberry pi 3

 

 

Et voilà, il ne reste plus qu’à installer quelques jeux pour vous amuser !

super mario gameboy advanced retropie raspberry pi 3 lcd display portable

Cet article Mini console de jeu retrogaming Retropie sur Raspberry Pi 3 avec un écran LCD tactile 3.5” HDMI est apparu en premier sur Projets DIY - Domotique et objets connectés à faire soi-même.

Affichage OLED SSD1306 I2C sur Raspberry Pi. Code Python d’une mini station météo connectée à Jeedom avec la librairie Adafruit

$
0
0

Aujourd’hui, je vous propose de reprendre le code python de la station météo connectée à Jeedom réalisée avec l’écran ePaper de Waveshare et l’adapter à un écran OLED SSD1306. Comme nous allons le voir, la programmation est très similaire. On trouve ces écrans miniature de 0,96” pour moins de 5€. Choisissez de préférence un écran de type I2C qui nécessitent moins de câblage (4 fils) que sur le bus SPI. Pour ce tutoriel, nous allons utiliser la librairie Python pour les micro-contrôleurs SSD1306 développée par Adafruit. Dans son principe, elle est très similaire au driver pour écran ePaper de Waveshare. La librairie s’occupe d’initialiser et de rafraichir l’écran. A nous de construire l’image aux dimensions de l’écran à l’aide de la librairie Python Imaging (ou son fork Pillow). Ce n’est pas la librairie la plus avancée mais elle fait le job sans trop de compétences à acquérir.

Matériel utilisé pour le tutoriel

Pour ce tutoriel, vous aurez besoin d’un écran OLED 0,96” de 128×64 pixels sur bus I2C ainsi que d’un Raspberry Pi (modèle 2 ou 3).

7,32€
1 nouveau de 7,32€
Relevé le 23 février 2018 1 h 57 min
amazon.fr
Livraison gratuite
8,67€
2 nouveau de 8,67€
Relevé le 23 février 2018 1 h 57 min
amazon.fr
Livraison gratuite

Vérifier que Python est installé

Le code de ce tutoriel a été écrit en Python 2.7. Ouvrez le Terminal ou connectez vous en SSH et exécutez la commande

python --version
 pour vérifier que vous disposez de la bonne version. Python 2.7 est pré-installé sur Raspbian. Vous devriez obtenir quelque chose de similaire.
python --version
Python 2.7.9

Câblage de l’écran OLED I2C

ssd1306 oled i2c circuit raspberry pi3 python adafruit

Installer les librairies Python Adafruit SSD1306 et PIL

La librairie Python d’Adafruit est disponible sur GitHub. On va la récupérer à l’aide de la commande git. La commande git permet de récupérer ou de synchroniser du code source sur GitHub. Commencez par installer la commande git sur Raspbian

sudo apt-get install git

Ensuite on récupère le code source et on installe la librairie. Elle sera ainsi accessible depuis n’importe quel projet Python

git clone https://github.com/adafruit/Adafruit_Python_SSD1306.git
cd Adafruit_Python_SSD1306
sudo python setup.py install

Enfin, si vous l’avez pas encore fait, installez les librairies Python-Imaging (PIL). Pour installer Pil, utilisez la commande pip. Vous aurez peut être besoin de faire précéder la commande pip d’un sudo.

sudo pip install python-pil request

Fonctionnement de la librairie Python Adafruit SSD1306

Créez un nouveau script python (

nano testssd1306.py
  par exemple). Pour utiliser un écran OLED, on doit déjà importer les deux librairies Adafruit_GPIO et Adafruit_SSD1306. On en profite pour indiquer à Python que les caractères spéciaux seront encodés en UTF-8 au début du script (coding: UTF-8). Cela va nous permettre d’envoyer et d’afficher des caractères accentués sur l’écran OLED.
# coding: UTF-8
import Adafruit_GPIO.SPI as SPI
import Adafruit_SSD1306

Pour générer l’image qui sera ensuite affichée sur l’écran OLED, on va avoir besoin des plusieurs méthodes de la librairie Python-Imaging. Image

  • Image, pour créer, manipuler les images et les masques
  • ImageDraw, pour dessiner du texte, des formes géométriques…
  • ImageFont, pour charger des polices TrueType

Maintenant, on peut initialiser l’écran. Si votre écran OLED ne dispose pas de broche RST (Reset, indiquez 0 comme dans mon cas). La méthode Adafruit_SSD1306.SSD1306_128_64 permet de créer un objet. On doit choisir la méthode qui correspond à la résolution de l’écran utilisé. La résolution est codée ‘en dure’ dans le driver d’Adafruit. La librairie d’Adafruit propose les dimensions suivantes :

  • 128×64 pixels, SSD1306_128_64
  • 128×32 pixels, SSD1306_128_32
  • 96×16 pixels, SSD1306_96_16

Pour ce tutoriel, j’ai utilisé un écran très habituel de 128×64 pixels sans broche de reset

# Créé un objet display - Create display object 
disp = Adafruit_SSD1306.SSD1306_128_64(rst=RST)

# Initialise l'écran - init display
disp.begin()

# Efface l'écran - Clear display.
disp.clear()
disp.display()

Maintenant, on va récupérer la dimension de l’écran et créer un masque sur lequel on va écrire le classique “Hello World”.

width = disp.width
height = disp.height
image = Image.new('1', (width, height))

# On créé un objet sur lequel on va dessiner - Get drawing object to draw on image.
draw = ImageDraw.Draw(image)
# Charge la font par défaut - load default font
font = ImageFont.load_default()

# On écrit du texte dans le coin de l'écran en blanc- Draw some text 
draw.text((0,0), 'Hello World', font=font, fill=255)

La méthode image de la librairie Adafruit permet d’actualiser le buffer avec l’image que l’on vient de créer avec la librairie PIL. Ensuite un appel de la méthode display() permet d’actualiser l’affichage de l’écran OLED.

# Actualise l'affichage - Update display
disp.image(image)
disp.display()

Et voilà ce qu’on obtient.

Pour aller plus vite, collez ce code dans le script.

# coding: UTF-8
import Adafruit_GPIO.SPI as SPI
import Adafruit_SSD1306

import Image
import ImageDraw
import ImageFont

RST = 0

# Créé un objet display - Create display object 
disp = Adafruit_SSD1306.SSD1306_128_64(rst=RST)

# Initialise l'écran - init display
disp.begin()

# Efface l'écran - Clear display.
disp.clear()
disp.display()

# Créé un image avec un codage des couleurs sur 1 bit (noir et blanc)
# Create blank image for drawing with mode '1' for 1-bit color.
width = disp.width
height = disp.height
image = Image.new('1', (width, height))

# On créé un objet sur lequel on va dessiner 
# Get drawing object to draw on image.
draw = ImageDraw.Draw(image)
# Charge la font par défaut - load default font
font = ImageFont.load_default()

# On écrit du texte - Draw some text 
draw.text((0,0), 'Hello World', font=font, fill=255)
draw.text((0,50), 'projetsdiy.fr', font=font, fill=255)

# Actualise l'affichage - Update display
disp.image(image)
disp.display()

# Enregistre l'image en local (optionnel) - Save the image (optional)
image.save("demo.bmp","bmp")

Pour pouvoir accéder au GPIO, il est nécessaire d’exécuter le code avec le droit root, il faudra donc faire précéder la commande d’un sudo comme ceci

sudo python testssd1306.py

Mini station météo connectée à Jeedom

Reprenons maintenant le code de la mini station météo connectée à Jeedom développée pour l’affichage ePaper. Le principe va être très similaire. La grosse différence réside dans l’inversion des couleurs. Sur un écran ePaper, il est plus naturel d’avoir un fond blanc (bien que ce soit une question de goût plus que technique).

jeedom epaper waveshare display dashboard weather station

Avec l’écran OLED, on aura un meilleur rendu en laissant le fond noir (les pixels sont éteints). On va donc devoir soit disposer d’images blanches sur fond noir, soit inverser les couleurs en utilisant la librarie Python Imaging. C’est ce que nous allons faire ici avec la fonction ImageOps. Seul problème, la méthode ImageOps n’est pas capable de gérer des images ayant un fond transparent. je n’ai pas trouvé de fonction pour retirer la transparence de l’image (si quelqu’un connais, n’hésitez pas à utiliser les commentaires pour nous expliquer)

Je ne vais pas reprendre ici les explications sur la façon de récupérer les données météo à l’aide de l’API JSON RPC de Jeedom, je vous laisse lire l’article précédent. Vous aurez également besoin d’installer et de configurer le Widget météo de Jeedom sur votre ville.

Comme je l’ai annoncé dans l’introduction, il faut inverser les couleurs (noir/blanc). Pour cela, j’ai été obligé de supprimer la transparence (couche alpha) des pictogrammes. Pour inverser les couleurs, on dispose de la méthode ImageOps de PIL. Elle a besoin que d’un paramètre unique, l’image dont on veut inverser les couleurs.

#charge l'image - load image
condition = Image.open(folder_img + prevision['condition'] + '.png')
# Redimensionne l'image - Resize image
condition = condition.resize((H_condition,W_condition))
# Inverse les couleurs - Invert colors
condition = ImageOps.invert(condition)
# Colle l'image sur le maque - past image on the mask
mask.paste(condition, (0,0))

Autre remarque, pour pouvoir afficher des caractères accentués, il est nécessaire d’indiquer au début du script que les caractères sont encodés en UTF-8 avec l’option # coding: UTF-8. Ensuite si on veut pouvoir afficher des caractères spéciaux comme le degré ‘°’, il faut l’encoder manuellement lorsqu’on construit la chaine avec la méthode unicode(chaine_a_encoder,’utf-8′)

'Max.' + str(prevision['tempMax']['value']) + unicode("°C",'utf-8')

 

Créez un nouveau script (

nano meteojeedomssd1306.py
) et collez le code suivant. Modifiez les paramètres suivants dans le code
  • ip_jeedom : l’adresse IP du serveur Jeedom
  • Api_key : votre clé API
  • Dictionnaire idCmd : changez les identifiants des différentes commandes pour celles de votre équipement météo
  • modeTest : permet de générer l’image sur un ordinateur (PC Windows, Linux, Mac, Raspberry Pi) sans utiliser le GPIO et l’écran ePaper. Le script génère juste une image en sortie
  • Toutes les images doivent être stockées dans le dossier image.

Téléchargez les images depuis le blog en cliquant sur ce lien. Décompressez l’archive et placez le dossier à la racine du code python. La variable folder_img permet de modifier le dossier des images.

# coding: UTF-8
import time
import Adafruit_GPIO.SPI as SPI
import Adafruit_SSD1306

import Image
import ImageOps 
import ImageDraw
import ImageFont

import requests
import json
import locale

prevision = {}
H_condition = 50
W_condition = 50
ip_jeedom = 'xxxx.xxx.xxx.xxx' 
Api_key = 'XXXX_JEEDOM_API_KEY_XXXX'  
url = "http://%s/core/api/jeeApi.php"% ( ip_jeedom)
headers = {'content-type': 'application/json'}
folder_img = 'images/'

lever = Image.open(folder_img + 'lever.png')
coucher = Image.open(folder_img + 'coucher.png')

disp = Adafruit_SSD1306.SSD1306_128_64(rst = 0)

disp.begin()

# Clear display.
disp.clear()
disp.display()

# Create blank image for drawing.
# Make sure to create image with mode '1' for 1-bit color.
width = disp.width
height = disp.height
font = ImageFont.load_default()

locale.setlocale(locale.LC_TIME,'')

def updateParameter(id, method):
  # Toutes les méthodes json rpc Jeedom disponibles https://jeedom.github.io/core/fr_FR/jsonrpc_api#tocAnchor-1-30-2
  parameters = {                                                                
    "jsonrpc" : "2.0",                                                    
    "method" : method,                                                                                                              
    "params": {                                                           
        "apikey": Api_key,
        "id" : id                                      
        }                                                                 
  }  
  return parameters

def getSunTime(timestring):
  if len(timestring) == 3:
   #timestring[1:] +  
   return  timestring[0:1] + 'h' + timestring[-2:]
  else:
    return timestring[0:2] + 'h' + timestring[-2:] 

def findIcone(condition_id):
  
  # Toutes les conditions renvoyees par le plugin météo de Jeedom https://github.com/jeedom/plugin-weather/blob/beta/core/class/weather.class.php
  # Prevision d apres le code openweathermap.org
  # Icones Open Source https://github.com/kickstandapps/WeatherIcons
  # Icones température, humidité, pression atmosphérique récupérées sur https://icones8.fr
  if condition_id >= 200 and condition_id <= 299:
    return 'Storm'  
  if condition_id >= 300 and condition_id <= 399:
    return 'Haze'  
  if condition_id >= 500 and condition_id <= 510:
    return 'PartlySunny'  
  if condition_id >= 520 and condition_id <= 599:
    return 'Rain'  
  if condition_id >= 600 and condition_id <= 699 or condition_id == 511:
    return 'Snow' 
  if condition_id >= 700 and condition_id <= 799:
    return 'wind'
  if condition_id >= 800 and condition_id <= 899:
    return 'Cloud'  
  if condition_id == 800:
    return 'Sun'  

def getDataFromJeedom():
    # Example echo method
    idCmd = {
      "conditiontxt": "17",
      "condition"   : "18",
      "leverSoleil" : "14",
      "coucherSoleil" : "13",
      "pa"          : "10",
      "humidite"    : "9",
      "tempMin"     : "15",
      "tempMax"     : "16",
      "vitVent"     : "11",
      "dirVent"     : "12",
      "conditionJ1" : "28",
      "conditionJ2" : "30",
      "conditionJ3" : "32",
      "conditionJ4" : "34",
      "condJ1Txt"   : "27",
      "condJ2Txt"   : "29",
      "condJ3Txt"   : "31",
      "condJ4Txt"   : "33",
      "tempMinJ1"   : "19",
      "tempMinJ2"   : "21",
      "tempMinJ3"   : "23",
      "tempMinJ4"   : "25",
      "tempMaxJ1"   : "20",
      "tempMaxJ2"   : "22",
      "tempMaxJ3"   : "24",
      "tempMaxJ4"   : "26"
    }

    #Recupère le nom de la ville
    _parameters = updateParameter(3, "eqLogic::byId")
    response = requests.post(url, data=json.dumps(_parameters), headers=headers).json()
    
    prevision['city'] = response['result']['name']

    #Récupère les prévisions
    for key, value in idCmd.iteritems(): 
      _parameters = updateParameter(value, "cmd::byId")
      response = requests.post(url, data=json.dumps(_parameters), headers=headers).json()
      #print response
      if ( key == 'condition' or key == 'conditionJ1' or key == 'conditionJ2' or key == 'conditionJ3' or key == 'conditionJ4'):
        prevision[key] = findIcone(response['result']['currentValue'])
        print 'condition_id '+ str(response['result']['currentValue']) + " => " + str(prevision[key])
      else:
        prevision[key] = {
          'value' : response['result']['currentValue'],
          'unit' : response['result']['unite'],
        }
    print prevision

def updateFrame1():
    mask = Image.new('1', (width,height))   
    
    draw = ImageDraw.Draw(mask)

    condition = Image.open(folder_img + prevision['condition'] + '.png')
    condition = condition.resize((H_condition,W_condition))
    condition = ImageOps.invert(condition)
    mask.paste(condition, (0,0))

    leverInv = lever.resize((W_condition / 3,H_condition / 3))
    leverInv = ImageOps.invert(leverInv)
    mask.paste(leverInv, (0,H_condition - 5))    

    coucherInv = coucher.resize((W_condition / 3,H_condition / 3))
    coucherInv = ImageOps.invert(coucherInv)
    mask.paste(coucherInv, (W_condition + 10,H_condition - 5))

    #date = unicode(time.strftime("%a %d %B") + "  " + time.strftime("%H:%M"),'UTF-8')
    draw.text((W_condition,0), prevision['conditiontxt']['value'][0:12], font = font, fill = 255)
    draw.text((W_condition,10), 'Max.' + str(prevision['tempMax']['value']) + unicode("°C",'utf-8'), font = font, fill = 255)
    draw.text((W_condition,20), 'Min.' + str(prevision['tempMin']['value']) + unicode("°C",'utf-8'), font = font, fill = 255)
    draw.text((W_condition,30), 'Hum.' + str(prevision['humidite']['value']) + unicode("%",'utf-8'), font = font, fill = 255)

    draw.text((W_condition / 2,H_condition), getSunTime(str(prevision['leverSoleil']['value'])), font = font, fill = 255)
    draw.text((W_condition * 1.8,H_condition), getSunTime(str(prevision['coucherSoleil']['value'])), font = font, fill = 255)

    disp.image(mask)
    disp.display()

    mask.save('frame1oled.bmp',"bmp")

def main():
    getDataFromJeedom()  
    updateFrame1()

if __name__ == "__main__":
    main()

Enregistrez avec la combinaison de touche CTRL + X puis O (ou Y). Exécutez le script avec la commande

sudo python meteojeedomssd1306.py

Il y a plusieurs points de debogage dans le script qui permettent de visualiser les prévisions récupérées sur Jeedom

condition_id 801 => Cloud
condition_id 800 => Cloud
condition_id 800 => Cloud
condition_id 800 => Cloud
condition_id 500 => PartlySunny
{'dirVent': {'unit': u'', 'value': u'70'}, 'condJ4Txt': {'unit': u'', 'value': u'Peu nuageux'}, 'city': u'Paris', 'condJ3Txt': {'unit': u'', 'value': u'Ciel d\xe9gag\xe9'}, 'vitVent': {'unit': u'km/h', 'value': 9.36}, 'pa': {'unit': u'Pa', 'value': 1026}, 'conditiontxt': {'unit': u'', 'value': u'Ciel d\xe9gag\xe9'}, 'leverSoleil': {'unit': u'', 'value': u'756'}, 'tempMin': {'unit': u'\xb0C', 'value': 3.8}, 'coucherSoleil': {'unit': u'', 'value': u'1813'}, 'condJ1Txt': {'unit': u'', 'value': u'Ciel d\xe9gag\xe9'}, 'conditionJ3': 'Cloud', 'conditionJ1': 'Cloud', 'condition': 'Cloud', 'tempMax': {'unit': u'\xb0C', 'value': 4.9}, 'tempMinJ1': {'unit': u'\xb0C', 'value': -1.9}, 'tempMinJ3': {'unit': u'\xb0C', 'value': 0.9}, 'tempMinJ2': {'unit': u'\xb0C', 'value': -3.1}, 'tempMinJ4': {'unit': u'\xb0C', 'value': -1.1}, 'conditionJ4': 'Cloud', 'humidite': {'unit': u'%', 'value': 65}, 'conditionJ2': 'PartlySunny', 'tempMaxJ4': {'unit': u'\xb0C', 'value': 1.9}, 'tempMaxJ3': {'unit': u'\xb0C', 'value': 9.1}, 'tempMaxJ2': {'unit': u'\xb0C', 'value': 6.6}, 'tempMaxJ1': {'unit': u'\xb0C', 'value': 6.5}, 'condJ2Txt': {'unit': u'', 'value': u'L\xe9g\xe8re pluie'}}

Le script enregistre également l’image générée par le script et envoyée à l’écran OLED par la librairie Adafruit. C’est assez pratique pour la mise au point le temps de recevoir l’écran. Rien ne vous empêche également de mettre au point le script sur un autre ordinateur.

Et voilà le résultat obtenu

oled ssd1306 jeedom meteo adafruit raspberry pi

Ainsi que sur l’écran OLED relié en I2C au Raspberry Pi 3

 

7,32€
1 nouveau de 7,32€
Relevé le 23 février 2018 1 h 57 min
amazon.fr
Livraison gratuite
8,67€
2 nouveau de 8,67€
Relevé le 23 février 2018 1 h 57 min
amazon.fr
Livraison gratuite

Cet article Affichage OLED SSD1306 I2C sur Raspberry Pi. Code Python d’une mini station météo connectée à Jeedom avec la librairie Adafruit est apparu en premier sur Projets DIY - Domotique et objets connectés à faire soi-même.

Astuces et réglages avancés d’EmulationStation et RetroArch sur RetroPie ou RecalBox

$
0
0
retropie setup menu

Je vous propose dans cet article un récapitulatif de quelques astuces et réglages pour exploiter à fond toutes les fonctions de RetroPie ou de Recalbox. Les deux logiciels sont basés sur EmulationStation (en gros, EmulationStation est utilisé pour gérer l’interface de la console) et RetroArch qui fait fonctionner les émultateurs des consoles. On dispose de fonctions modernes bien pratiques pour jouer. Rembobinage (rewind), capture d’écran (screenshot), sauvegarde et rechargement de parties (State) … Si vous avez d’autres astuces, n’hésitez pas à les partager avec nous dans les commentaires.

Activer le partage de fichier Samba : installation facile des ROMs et fichiers de configuration

La première chose à faire et d’activer le partage de fichier Samba. Vous aurez plus facile de modifier les fichiers de configuration et installer de nouvelles ROMs (bien que je trouve l’interface WEB très pratique et plus fiable). Allez dans le menu des réglages puis sélectionnez RetroPie Setup (A)

retropie setup menu

Ouvrez le menu Configuration / tools

etropie samba configuration

Descendez dans la liste pour trouver l’option samba  – Configure samba ROM shares

retropie samba raspbian

Sélectionnez Install RetroPie Samba shares. A la première installation, tous les packages nécessaires seront installés automatiquement. Attendez la fin de l’installation sans l’interrompre.

 retropie samba install

De retour au menu, activez le partage en sélectionnant Restart Samba service. Normalement, le RetroPie devrait apparaître sur votre ordinateur. Si ce n’est pas le cas, redémarrez Raspbian. retropie samba restart service

Maintenant depuis le Finder sur macOS ou l’Explorateur de fichier sur Windows vous pouvez accéder aux dossiers partagés de RetroPie

  • bios,
  • configs. Le répertoire all contient plusieurs fichiers de configuration utiles : retroarch.cfg, autostart.cfg, runcommand.cfg
  • roms
  • splashscreens

Installer le bureau Pixel Desktop

Si vous avez installé RetroPie depuis l’image officielle ou sur la distribution Raspbian Lite, il est possible d’installer le bureau graphique Pixel très simplement. Allez dans le menu de réglage puis sélectionnez RetroPie Setup 

retropie setup menu

Ouvrez le menu Configuration / Options

retropie-manager options

Descendez jusqu’à l’option raspbiantools – Raspbian related tools

retropie_install_pixel_desktop

Sélectionnez l’option Install Pixel desktop environnement. Le script d’installation s’occupe de tout !

retropie_install_pixel_desktop_tools

De retour sur RetroPie, allez dans le menu PORTS. Vous allez y trouver une nouvelle option DESKTOP qui vous permet de lancer Pixel directement depuis RetroPie ! Pour revenir à la console, sélectionnez Shutdown (éteindre) puis logout (déconnexion).

launch_pixel_desktop from retropie pixel_desktop on retropie

Lisez ensuite l’article 10 logiciels indispensables pour le Raspberry Pi 3 qui explique comment installez les logiciels habituels sur Raspbian manuellement. Synaptic Package Manager, VNC, VLC Player, client BitTorrent Deluge, LibreOffice, Mathematica, Wolfram Alfa, Thonny Python, Node-RED, Scratch 2, IDE Arduino par exemple

Installer l’interface d’administration Web (retropie-manager)

C’est la méthode que je vous conseille d’utiliser. Au moins vous n’aurez pas à vous soucier du répertoire d’installation des ROMs et des BIOs. Recalbox est livré avec une interface web qui permet de gérer facilement de nombreuses options de la console. Retropie a repris une partie du travail. L’interface doit être installée manuellement depuis le gestionnaire d’installation. Allez dans le menu des réglages puis sélectionnez RetroPie Setup (A)

retropie setup menu

Ouvrez le menu Manage packages

retropie manage packages

Sélectionnez l’option Manage experimental packages

retropie manage experimental packages

Descendez en bas de la liste pour trouver le package RetroPie-Manager

install retropie-manager

Sélectionnez Install from source

retropie manager install form source

A la fin de l’installation, allez dans le menu Configuration / Options

retropie-manager options

Puis Start RetroPie-Manage now pour démarrer l’interface web. Profitez-en pour activer le lancement de l’interface WEB au démarrage de la console e choisissant l’option Enable RetroPie-Manager on Boot

start retropie-manager enable on boot

Ouvrez un navigateur internet et saisissez l’adresse IP du Raspberry Pi suivi du port :8000. L’interface WEB pour RetroPie est assez restreinte. Elle permet surtout de surveiller les ressources de la console (charge CPU, espace disponible), modifier les fichiers de configuration de retroarch et autostart (configuration que l’on peut aussi faire depuis le menu de la console), ajouter des Bios et des Roms (que je vous conseille d’utiliser à la place du partage de fichier Samba).

retropie manager interface install bios rom

L’interface WEB de Recalbox est beaucoup plus puissante. Elle permet de gérer les manettes, de faire des captures d’écran (screenshot), d’ajuster les réglages audio et de redémarrer EmulationStation après l’installation de nouvelles Roms (c’est aussi possible depuis le menu de la console).

Le fichier de configuration es_settings.cfg

Tous les réglages d’EmulationStation peuvent être modifiés manuellement depuis le fichier es_settings.cfg qui se trouve dans le répertoire (caché) d’Emulation Station dans votre dossier utilisateur. Pour y accéder, ouvrez une connexion SSH ou depuis le menu PORT de Retropie, lancez Pixel puis exécutez

sudo nano ~/.emulationstation/es_settings.cfg

C’est un fichier XML de la forme clé / valeur (value). Voici le fichier de configuration par défaut

<?xml version="1.0"?>
<bool name="BackgroundJoystickInput" value="false" />
<bool name="CaptionsCompatibility" value="true" />
<bool name="DrawFramerate" value="false" />
<bool name="EnableSounds" value="true" />
<bool name="MoveCarousel" value="true" />
<bool name="ParseGamelistOnly" value="false" />
<bool name="QuickSystemSelect" value="true" />
<bool name="SaveGamelistsOnExit" value="true" />
<bool name="ScrapeRatings" value="true" />
<bool name="ScreenSaverControls" value="true" />
<bool name="ScreenSaverOmxPlayer" value="true" />
<bool name="ShowHelpPrompts" value="true" />
<bool name="ShowHiddenFiles" value="false" />
<bool name="SlideshowScreenSaverCustomImageSource" value="false" />
<bool name="SlideshowScreenSaverRecurse" value="false" />
<bool name="SlideshowScreenSaverStretch" value="false" />
<bool name="SortAllSystems" value="false" />
<bool name="StretchVideoOnScreenSaver" value="false" />
<bool name="UseCustomCollectionsSystem" value="true" />
<bool name="VideoAudio" value="true" />
<bool name="VideoOmxPlayer" value="false" />
<bool name="hideQuitMenuOnKidUI" value="false" />
<int name="MaxVRAM" value="80" />
<int name="ScraperResizeHeight" value="0" />
<int name="ScraperResizeWidth" value="400" />
<int name="ScreenSaverSwapImageTimeout" value="10000" />
<int name="ScreenSaverSwapVideoTimeout" value="30000" />
<int name="ScreenSaverTime" value="300000" />
<string name="AudioDevice" value="Speaker" />
<string name="CollectionSystemsAuto" value="" />
<string name="CollectionSystemsCustom" value="" />
<string name="GamelistViewStyle" value="automatic" />
<string name="OMXAudioDev" value="both" />
<string name="PowerSaverMode" value="disabled" />
<string name="Scraper" value="TheGamesDB" />
<string name="ScreenSaverBehavior" value="dim" />
<string name="ScreenSaverGameInfo" value="never" />
<string name="SlideshowScreenSaverBackgroundAudioFile" value="/home/pi/.emulationstation/slideshow/audio/slideshow_bg.wav" />
<string name="SlideshowScreenSaverImageDir" value="/home/pi/.emulationstation/slideshow/image" />
<string name="SlideshowScreenSaverImageFilter" value=".png,.jpg" />
<string name="StartupSystem" value="" />
<string name="ThemeSet" value="carbon" />
<string name="TransitionStyle" value="fade" />
<string name="UIMode" value="Full" />
<string name="UIMode_passkey" value="uuddlrlrba" />

Il existe trois modes d’affichage du menu d’EmulationStation (Full, Kiosk, Kid). Le menu KID est ultra-simplifié. Il n’y a aucun moyen de repasser au menu Full. Si la situation vous arrive, pas de panique, modifiez la clé UIMode et indiquez Full. Redémarrez la console pour retrouver le menu par défaut.

Accéder au menu RetroArch depuis un jeu, combinaison des touches

A n’importe quel moment, utilisez la combinaison de boutons SELECT + X pour ouvrir le menu RetroArch. Le menu rapide (Quick Menu) apparaît. Ce qui nous intéresse le plus ici, c’est la possibilité de sauvegarder la partie ou d’en recharger une. Pour cela, on dispose d’autant de slot qu’on le souhaite (à condition de s’en souvenir !). Le bouton A permet de sélectionner, valider. B pour revenir au menu précédent (Back)

menu_retroarch-retropie-selectx

Les autres combinaisons de boutons/touches

Il est possible d’attribuer ses propres combinaisons de boutons et de touches. Certaines fonctions nécessitent qu’un clavier USB soit connecté à la console. Par exemple pour la capture d’écran ou le rembobinage d’une partie de jeu. Voici les combinaisons pré-configurées par défaut :

  • SELECT + START, quitter le jeu et retourner au menu de la console (Emulation Station)
  • SELECT + X, ouvre le menu RetroArch (uniquement depuis un jeu)
  • SELECT + L (left), recharge la partie (si elle existe)
  • SELECT + R (Right), enregistre la partie (dans le slot actuel).
  • SELECT + flèche à droite ou gauche, change de Slot de sauvegarde des parties. Egalement disponible depuis le menu RetroArch (SELECT + X)
  • SELECT + B, ré-initialise la console
  • SELECT + F8 (par défaut), prend une capture de l’écran (screenshot). Egalement disponible depuis le menu RetroArch (SELECT + X)
  • SELECT + R (par défaut), rembobinne (rewinding) le jeu. 1 seconde à chaque appui
  • SELECT + P (pause), met le jeu en pause. Utilisez de nouveau la combinaison pour reveiller le jeu
  • SELECT + O, enregistre une vidéo de l’écran. Utilisez de nouveau SELECT + O pour arrêter l’enregistrement de la partie

Si vous voulez modifier les touches, convoquez le menu RetroArch (SELECT + X) puis appuyer sur B pour aller au menu complet

retroarch-main-menu

Ensuite allez dans le menu Settings

retroarch-settings-input

Puis Input

retroarch-input-hotkey-binds

Enfin le menu Input Hotkey Binds. Sélectionnez l’option à modifier puis appuyez sur la touche du clavier pour définir le raccourci.

retroarch-input-hotkey-rewind-pause

Activer le rembobinage (rewing)

La fonction rembobinage semble désactivée par défaut. La combinaison de touche (SELECT + R) est définie mais le rembobinage n’est pas démarré.

retroarch-input-hotkey-rewind-pause

Connectez vous au Raspberry Pi en SSH (lisez ce tutoriel si vous ne savez pas comment faire) ou depuis le partage réseau. Ouvrez le fichier retroarch.cfg qui se trouve dans le répertoire

/home/pi/Retropie/configs/all
 . Trouvez la ligne rewind_enable et mettez le paramètre à true comme ceci
rewind_enable = "true"

Redémarrez la console.

Ensuite depuis n’importe quel jeu vous pouvez utiliser la combinaison SELECT + R pour rembobiner le jeu. La console rembobine jusqu’à ce que la touche R soit relâchée.

Faire une capture d’écran en jouant (screenshot)

RetroArch (qui fait fonctionner les jeux sur Recalbox et RetroPie) dispose d’une fonction de capture d’écran intégrée. Par défaut, il suffit de faire la combinaison SELECT + F8. Les images sont enregistrées par défaut dans le répertoire

/home/pi/Retropi/configs/all/retroarch/screenshots
 . Le répertoire configs est partagé sur le réseau local avec Samba.

Vous pouvez modifier le répertoire de destination (attention, il faudra modifier la configuration de Samba pour qu’il soit accessible sur le réseau local en WiFi). Convoquez RetroArch (SELECT+X) puis B pour aller au menu principal. Sélectionnez l’option Settings

retroarch-settings-directory

Modifiez le chemin vers l’option Screenshot. Vous pouvez également indiquer le chemin dans le fichier retroarch.cfg en modifiant le paramètre screenshot_directory. N’oubliez pas de relancer la console pour activer les changements.

retroarch-settings-directory-screenshots

Capturer les écrans en dehors des jeux (ou les menus de RetroArch)

Maintenant, en dehors des jeux, EmulationStation ne propose pas de fonction de capture d’écran. Vous pourrez en avoir besoin si vous voulez faire des tutoriels ou envoyer un réglage à un ami. Par faire des captures d’écran

bien pratique depuis l’interface WEB. Ce n’est pas le cas pour RetroPie. Il existe la possibilité d’associer un bouton ou une touche au clavier depuis Retro Arch mais rien ne semble prévu du coté d’Emulation Station. Sur le forum de RetroPie, un utilisateur a suggéré d’utiliser le logiciel raspi2png qui fait très bien ce travail. Impossible par contre d’associer une Hotkey pour prendre des captures d’écran lorsqu’on joue. Clonez le projet puis copiez raspi2png dans le dossier usr/local/bin pour le rendre accessible depuis le Terminal.

git <span class="hljs-keyword">clone</span> https:<span class="hljs-comment">//github.com/AndrewFromMelbourne/raspi2png
sudo cp <span class="hljs-_">-a</span> raspi2png/raspi2png /usr/<span class="hljs-built_in">local</span>/bin</code></span>

Placez vous dans le dossier splashscreens par exemple qui est partagé via samba sur le réseau local (

cd ~/Retropie/splashcreens/
) puis exécutez la commande raspi2png en changeant le nom de l’image
<span class="hljs-selector-tag">raspi2png</span> <span class="hljs-selector-tag">-p</span> <span class="hljs-selector-tag">retropiescreenshot</span><span class="hljs-selector-class">.png</span>

Cet article Astuces et réglages avancés d’EmulationStation et RetroArch sur RetroPie ou RecalBox est apparu en premier sur Projets DIY - Domotique et objets connectés à faire soi-même.

Déballage et montage du kit imprimante 3D Anet A8-B version 2018

$
0
0

L’Anet A8 est un excellent kit d’imprimante 3D d’entrée de gamme. L’Anet A8 est un clone de la Prusa i3. Si vous débutez en impression 3D, c’est un bon choix car vous n’allez pas vous ruiner et vous trouverez beaucoup d’aide et de tutoriels sur internet pour les réglages, les améliorations et les problèmes. Je vous propose une petite série d’articles pour apprendre comment l’assembler, la régler et imprimer vos premières pièces. Comme vous allez le voir, c’est une imprimante assez rapide à assembler et à prendre en main. On la trouver entre 120 et 150€ en temps normal un peu partout y compris sur Amazon. Gearbest fait souvent des promos, surtout en fin d’année. Il n’est pas rare de la trouver autour de 105€. Inutile de dire qu’à ce prix, il n’est plus très rentable de vouloir se lancer dans la réalisation de son imprimante 3D à partir d’un kit Arduino Mega !

Présentation du kit imprimante 3D Anet A8-B

Anet a fait quelques modifications sur le kit A8 d’origine. Vous trouverez très certainement les deux versions en vente sur les sites marchands. La version A8-B n’est pas fondamentalement différente du modèle original. Voici quelques différences visibles :

  • La tête d’impression est livrée pré-assemblée. Il faudra toutefois la démonter du berceau au moment de l’assemblage de celui-ci sur l’axe X
  • Le capteur de fin course de l’axe X a été déplacé. Auparavent, il était fixé verticalement le long l’axe Z. Maintenant, il est installé horizontalement au dessus du guidage. Aucun problème en soit, sauf la visserie qui n’est pas adaptée.
  • Anet indique que la carte de contrôle a été améliorée. Les améliorations sont détaillées ici.

L’imprimante est livrée dans un carton de 9kg environ. L’emballage est constitué de 3 étages de composants. Tout est parfaitement référencé. Ne cherchez pas de documentation papier, tout est sur la micro carte SD 8Go livrée avec un adaptateur USB. La qualité du kit est tout simplement impressionnante compte tenu du prix de vente !

Contrairement à certains fabricants qui impriment beaucoup d’éléments en PLA ou ABS, Anet a opté pour une structure en plaques d’acryliques. Le seul élément imprimé en 3D est le refroidisseur en forme de sifflet. Les deux guidages de l’axes X sont fabriqués par injection plastique.

Le premier plateau contient :

  • Le chariot en aluminium
  • La plateau chauffant
  • 7x supports à guidage linéaire
  • Les câbles
  • La visserie
  • Le cordon d’alimentation
  • 10m de PLA blanc
  • Le guide de courroie du plateau d’impression

kit anet a8 kit plateau 1

Le second plateau contient :

  • L’écran LCD
  • La carte mère
  • Le ventilateur de l’extrudeur
  • Un cordon USB
  • Une partie des éléments de structure
  • La carte micro SD et l’adaptateur USB

kit anet a8 kit plateau

Le troisième et dernier plateau contient :

  • Le reste des éléments de structure
  • 4 moteurs Nema. Les deux moteurs de gauche de plateau et du chariot. La roue crantée est déjà pré-assemblée. Les deux moteurs à droite sont les moteurs de l’axe Z. L’accouplement élastique est déjà pré-monté sur chaque moteur
  • Les deux supports (blanc)
  • Le ventilateur
  • Tiges filetés et axes
  • La tête d’extrusion pré-montée sur le chariot
  • Le bloc d’alimentation 110/220V vers 12V – 20A
  • Gaine noire
  • Colliers, support auto-collant, support à visser

kit anet a8 kit plateau

Spécifications techniques de l’Anet A8 et A8-B :

  • Surface d’impression : 220 x 220 x 240mm
  • Vitesse d’impression : 120 mm/s
  • Diamètre du nez de la tête d’impression : 0.4 mm
  • Epaisseur de couche : entre 0.1 et 0.3 mm
  • Précision de position des axes X et Y : 0.012 mm
  • Précision de positionnement de l’axe Z : 0.004 mm
  • Matériaux compatibles : ABS, PLA, TPU, fluorescent, Nylon PVA, PP, bois, HIPS
  • Diamètre filament : 1.75mm
  • Structure : plaque d’acrylique
  • Ecran LCD de configuration avec 5 boutons de commande
  • Modes d’impression :
    • En ligne par câble USB depuis Cura ou autre logiciel d’impression 3D
    • Hors ligne avec une carte SD
  • Format de fichiers supportés : Gcode, OBJ, STL
  • Tension d’alimentation: 12V
  • Poids de l’imprimante : 8.5 kg
  • Dimensions
    • Imprimante 3D : 510 x 400 x 415 mm
    • Carton d’emballage : 520x350x220 mm
  • Température d’utilisation : 10 à 30°C
  • Certifications : EMC,FCC,LVD,RoHs

Aucun outillage à prévoir

Autre point fort de ce kit, tous les outils sont prévus :

  • 2 tournevis cruciforme
  • 1 pince coupante
  • 4 clés six pans (BTR)
  • 1 pince plate

outils kit imprimante 3d anet a8

Technique d’assemblage utilisée

Pour arriver à ce prix très bas, il n’y a aucun usinage. Les plaques en acrylique noir qui composent la structure sont assemblées par vissage. Les plaques sont positionnées entre elles à l’aide d’un système tenon-mortaise. L’écrou vient s’insérer dans une rainure puis on vient fixer la plaque en vis à vis avec une vis. Une fois assemblée, la structure est très rigide.

anet a8 technique assemblage vissage

Assemblage du kit imprimante 3D Anet A8-B

C’est parti pour l’assemblage. C’est une question de goût mais pour ma part, j’ai préféré retirer le film protecteur des plaques d’acrylique avant de commencer. Cela donne un aspect “bois” à l’imprimante si on le laisse. Par contre une fois assemblé, vous risquez d’avoir du mal à l’enlever.

Anet livre une notice de montage sur la cléUSB très bien faite. Si l’anglais ne vous pose pas de problème, vous y trouverez quelques infos utiles.

Etape 1 : assemblage de l’arrière de l’Anet A8

Step 1 anet a8 a8-B assemblyPour cette étape, vous aurez besoin

12 vis M3 x 18mm
12 écrous M3

Rien de particulier pour cette étape.

 

 

Etape 2

On ajoute les deux plaques qui serviront pour l’axe Z. Elles sont fixées par 4 vis M3x18.

Vous aurez besoin :

4 vis M3 x 18mm
4 écrous M3

 

 

Etapes 3 et 4 : support arrière sur plateau chauffant

Vous allez avoir besoin de :

  • Les éléments de structure (voir la photos)
  • Le moteur Nema marqué Y-Motor
  • Un contacteur fin de course marqué Y EndStop
  • 2 vis M2 x 12mm
  • 3 écrous M3
  • 3 vis M3 * 18mm

Fixez le support du capteur fin de course puis utilisez deux vis M2x12. Tournez le vers la gauche. Fixez ensuite le moteur. Placez le connecteur vers l’avant de l’imprimante.

  • Step 3 anet a8 a8-B assembly parts
  • Step 4 anet a8 a8-B assembly

Etapes 5 et 6 : fin de l’assemblage de la base

Vous allez avoir besoin de

  • La plaque avant
  • Le guide de courroie pré-assemblé
  • 2 tiges filetées de longueur 400mm
  • 12 écrous et rondelles M8
  • 2 vis M3 x 18mm
  • 2 écrous M3

Fixer le guide de courroie sur la plaque avant. Assembler ensuite le support arrière fabriqué à l’étape 4 avec le support avant à l’aide de la tige fileté M8 comme sur la photo et les schémas. Inutile de serrer, il faudra ajuster la longueur à l’étape suivante.

  • Step 5 anet a8 a8-B assembly
  • Step 6 anet a8 a8-B assembly

Etape 7 : guidage chariot plateau chauffant

Vous allez avoir besoin de

  • 2 axes de longueur 380mm
  • 4 vis M3 x 18mm
  • 4 écrous M3
  • 4 platines de butée d’axe
  • 4 guidages linéaire

Insérez les deux axes en y insérant sur chacun deux guidages linéaire. Ajustez la longueur en vissant ou dévissant les tiges filetés M8 (étape précédente) pour que les axes affleurent les plaques avant et arrière de l’axe Y. Serrez tous les écrous M8. Fixez les 4 butées d’arrêt des axes de guidage du chariot.

  • Step 7 anet a8 a8-B assembly

Etapes 8 et 9 : montage du chariot en aluminium

On passe au choses sérieuses (enfin). Dans cette étape, on va monter le chariot du plateau chauffant. Vous aurez besoin des pièces suivantes :

  • Support plateau en aluminium (en forme de H)
  • 2 taquets d’arrêt
  • 4 vis M4 x 14mm
  • 16 vis M4 x 8mm

Commencez par retirer le film de protection des plaques d’aluminium. Inutile de laisser une source d’incendie ou d’intoxication sur une machine qui chauffe. Fixez les deux taquets d’arrêts de la courroie crantée avec les 4 vis M4 x 14mm en retournant le support. Fixez le chariot sur les guidages linéaires à l’aide de vis M6 x 8 mm.

  • Step 8 anet a8 a8-B assembly
  • Step 8 anet a8 a8-B assembly

Etape 10 : fixation de la courroie de l’axe Y

On va maintenant installer la courroie de l’axe Y. Tournez l’imprimante pour avoir accès à l’arrière du chariot. Fixez la courroie en vissant le 1er arrêt. La partie de la courroie tournée vers le plateau. Ensuite faites passer la courroie, d’abord dans la guide puis remontez en passant par le moteur. Passez la courroie dans le 2ème arrêt et vissez légèrement pour pouvoir tendre la courroie sans qu’elle recule. Coupez la courroie en laissant 2 ou 3 cm de sur-longueur. Tendez la courroie. Les deux bords doivent pouvoir se joindre avec une légère résistance. Si le plateau ne se déplace pas correctement, il faudra re-tendre. Vissez complètement la courroie. Vous pouvez couper l’excès mais laissez en assez pour avoir une prise s’il faut ajuster la tension ultérieurement.

Testez en faisant déplacer le plateau d’avant en arrière.

  • Step 8 anet a8 a8-B assembly

Etape 11 : montage du plateau chauffant

Pour cette étape, vous aurez besoin du matériel suivant :

  • Le plateau chauffant
  • 4 vis M3 x 30mm
  • 4 ressort
  • 4 écrous papillon

Le connecteur du plateau chauffant doit être orienté vers l’arrière de l’imprimante. La face recouverte d’un scotch jaune vers le haut. Fixez le plateau chauffant en insérant une vis M3x30 à chaque angle. Intercallez un ressort entre le plateau chauffant et le chariot. Vissez sur 10mm pour compresser le ressort. On pourra régler plus facilement la planéité du plateau ultérieurement.

Etape 12 : supports axes Z

La base de l’imprimante est terminée. On va maintenant assembler l’axe Z. Matériel nécessaire

  • 2 Moteurs Nema marquée Z-Axis
  • 10 Vis M3 x 18 mm
  • 8 vis M3 x 12mm
  • 2 vis M3 x 25mm
  • 12 écrous M3

Commencez par assembler les deux supports moteur. Ensuite, vous pourrez les insérer facilement sur les montants. Faites attention à l’orientation des plaques. A chaque fois la tige de l’axe Z doit être à l’extérieur. Fixez ensuite chaque moteur avec 4 vis M3x12. Fixez chaque tige fileté à l’aide des vis de blocage situés sur les accouplements élastiques.

Etape 16 : chariot extrudeur (axe X)

Pour cette étape, c’est un mixe entre le montage de la base de l’imprimante et les axes Z. Vous aurez besoin du matériel suivant :

  • 2 axes (tiges lisses) de 436mm
  • 3 guidage linéaire à billes

Avant d’installer les tiges, vérifiez qu’il ne reste pas une bavure sur la chape. Elle peut gêner l’insertion des axes. Insérez les 2 axes (tiges lisses) sur environ 20 cm. Il faut un peu forcer. faites attention à ne pas vous blesser. Vous pouvez vous aider d’un maillet si c’est vraiment trop dur. Glisser deux guidages linéaire sur l’axe du haut et un sur l’axe du bas. Terminez d’insérer les axes dans la chape en vis à vis. Avant d’insérer les axes, alignez en tournant un accouplement élastique. Les axes sont rentrés en forces.

Etape 17, 18, 19, 20, 21 : montage de l’extrudeur

L’extrudeur est déjà installé sur le chariot. Dévissez la vis située en dessous. Faites glisser le chariot vers la droite pour sortir l’extrudeur de la rainure. Vous allez avoir besoin de :

  • 12 vis M4 x 8mm pour fixer le chariot 
  • Ventilateur extrudeur
  • 2 vis M3 x 18mm
  • 4 écrous M3

Commencez par berceau de l’extrudeur sur les guidages linéaires à l’aide des 12 vis M4x8. Pour les 4 vis du bas, utilisez le second tournevis (gris) qui est plus long en le passant par un trou en vis à vis.

Vissez sur environ 10mm un écrou M3 sur 2 vis M3x18. Vissez ensuite ces 2 vis de chaque coté du guidage linéaire inférieur. Bloquez avec un contre-écrou. Vous venez d’assembler le système d’accrochage de la courroie de l’axe X.

Maintenant, passons à l’assemblage de l’extrudeur. C’est probablement l’étape la plus délicate de l’assemblage. Vous aller devoir dévisser les deux vis M4 qui maintiennent la tête d’extrusion. Faites attention, le ressort risque de sauter et de sortir de son logement. Ensuite assemblez le ventilateur. Tournez le afin que le câble ne soit pas vers le bas de la tête d’extrusion. Vissez le ventilateur à l’aide de 2 vis M3.

Etape 22, 23, 24 : montage de la courroie de l’axe X et installation de l’extrudeur

Matériel nécessaire

  • Le reste de la courroie
  • 4 colliers
  • Le moteur de l’axe X
  • 4 vis 6 pans M3 x 20mm
  • 4 rondelles M3
  • La buse de refroidissement en forme de sifflet
  • Refroidisseur de buse
  • 2 vis M3 x 18 mm
  • Capteur fin de course de l’axe X
  • 2 vis M2 x 12mm

Prenez le reste de la courroie crantée et formez une boucle en mettant les crans vers l’intérieur. Maintenez la boucle fermée avec deux colliers. Serrez légèrement les colliers pour maintenir la boucle tout en laissant assez de jeu pour ajuster pour faire glisser les colliers.

Insérez cette boucle sur la vis M3 de droite. La partie lisse de la courroie vers le haut. Insérez la courroie dans le guidage d’axe gauche en la faisant ressortir par le bas. Faites passer la courroie dans le guidage du deuxième axe Z.

Installez le moteur de l’axe X. Faites bien passer la courroie autour de la roue crantée. Fixez le moteur avec 4 vis M3 x 20 six pans. Tendez la courroie légèrement, faites une boucle autour de la seconde vis de fixation et coupez en laissant 4 ou 5 cm. Ne coupez pas trop court, vous pourrez ajuster après. Bloquez en serrant la boucle avec 2 colliers. Tendez la courroie en maintenant d’une main le chariot et de l’autre la courroie opposée. Les deux bords de la courroie doivent pouvoir se toucher avec une légère tension. Si elle n’est pas assez tendue, le chariot risque de mal se déplacer. Bloquez la boucle en serrant les colliers. Coupez les colliers.

Remettez en place l’extrudeur sur le chariot. Fixez le avec la vis M4x16 récupérée lors du démontage. Visser le contre-écrou de la tête d’impression avec la clé plate.

Fixez le ventilateur de refroidissement à l’aide de 2 vis M3x18mm sur le chariot. Insérez la buse de refroidissement en la tournant vers la tête d’impression.

Enfin, fixez le capteur fin de course de l’axe X avec deux vis auto-taraudeuses.

Etape 25 : montage de l’écran LCD

Maintenant, on va s’occuper de toute la partie électronique. On commence par l’écran LCD. Vous aurez besoins de :

  • L’écran LCD
  • La plaque de protection arrière
  • 4 entretoises blanches M3 x 7mm 
  • 4 vis M3 x 18mm
  • 4 rondelles 
  • 4 écrous M3

Insérez l’écran dans son logement. Servez-vous des boutons pour trouver l’orientation. Intercalez une entretoise entre l’écran et l’imprimante. Maintenez en place la plaque arrière et vissez l’ensemble avec une vis M3 x 18.

Etape 26 : installation du bloc d’alimentation 12V – 20A

Le bloc d’alimentation se fixe sur le coté droit de l’Anet A8 à l’aide de 3 vis M3 x 12mm.

Etape 27 : installation de la carte mère

Fixez la carte mère en orientant le port USB vers le haut. Intercalez une entretoise M3 x 15 entre la carte mère et le montant de l’imprimante 3D. Utilisez 4 vis M3 x 18 mm pour fixer celle-ci.

Présentation de la carte mère de l’Anet A8

La carte mère de l’A8-B présente quelques améliorations qui sont détaillées ici.

  • Les connecteurs de l’extrudeur, plateau chauffant et alimentation ont été remplacés par des connecteurs à vis.
  • Les poles de bornier d’alimentation ont été inversés
  • Chaque moteur disposait d’un potentiomètre pour ajuster le courant. Il n’ y a plus que l’axe Z qui est réglable maintenant
  • Un nouveau connecteur (référence J3) a été ajouté. Il permet de communiquer via un bus ISP avec le micro-contrôleur.

anet a8 a8-b motherboard carte mere francais

Câblage

La câblage est un vrai jeu d’enfant. Tous les câbles sont référencés. Juste une petite astuce, comme il n’y a pas assez de place sur la carte mère pour écrire le libellé complet des capteurs, c’est l’initial de ce dernier qui est indiqué. Voici la correspondance :

  • E T : Extrudeur (Extruder Thermistor)
  • B T : plateau chauffant (Hotbed Thermistor)
  • S Z : capteur axe Z (sensor Z-axis)
  • S Y : capteur axe Y (sensor Y-axis)
  • S X : capteur axe X (sensor X-axis)

Remarques :

  • La polarité de l’alimentation 12V était inversée sur la carte mère livrée dans on kit. Respectez la polarité de la carte et pas celle de la notice, sinon ça va fumer 🙁
  • Le câblage au niveau du connecteur du capteur de fin de course de l’axe Y était inversé. Au premier démarrage, le plateau ne s’est pas arrêté, ça fait bizarre !

Raccordement au secteur

Suivez à la lettre de schéma de câblage indiqué sur votre notice. Voici celui de mon A8. Il peut être différent d’un lot à l’autre. Ne branchez pas le cordon au secteur durant cette étape.

Vérifications et mise en route

Prenez le temps de vérifier le câblage, surtout la polarité et le raccordement au secteur. Une fois que tout est correct pour vous, mettez sous tension.

Vous devriez obtenir un écran de ce type sur l’affichage LCD. Les axes restent immobile à la mise sous tension.

anet a8 a8-b startup premier demarrage

Finitions

Utilisez le passe câble noir pour protéger tous les câbles de l’imprimantes. Anet propose quelques exemples d’organisation. L’astuce est de faire secteur par secteur en coupant la longueur nécessaire. Voici quelques photos de mon Anet A8 terminée.

Montage du support de bobine

En bonus, l’Anet A8 est livrée avec un petit dévidoir pour bobine de PLA ou ABS. Il a le mérite d’exister mais cela reste un système d’appoint. Lorsque la bobine sera presque vide, il va glisser vers l’imprimante. Heureusement, il y a plein de modèles à imprimer sur Thingiverse.

Améliorer votre A8

L’Anet A8 est une imprimante très populaire. Compte tenu de son prix très accessible, elle a rapidement suscité un grand intérêt. La communauté de passionnés très active a mis à disposition sur Thingiverse plusieurs pièces qu’il vous suffit d’imprimer pour améliorer votre Anet A8 :

thingiverse anet a8 prusa i3 piece amelioration

Voilà, l’assemblage de l’Anet A8 est terminée. Dans le prochain tutoriel, nous verrons comment régler l’axe Z et la planétité du plateau. Nous le ferrons avec le capteur fin de course livré avec la machine ainsi qu’avec un capteur de proximité (auto-levelling).

Imprimante 3D Anet A8 en promo

Accessoires et pièces de rechange pour les imprimantes 3D Anet A6 ou A8

Anet A6, plus robuste, plateau chauffant jusqu’à 100°C

L’Anet A6 est une version améliorée de l’A8. Elle est un peu plus chère.

Cet article Déballage et montage du kit imprimante 3D Anet A8-B version 2018 est apparu en premier sur Projets DIY - Domotique et objets connectés à faire soi-même.

Installer le firmware Skynet3D v2.3 (dérivé de Marlin) sur l’Anet A8, A6 ou A2 (avec auto-leveling)

$
0
0
skynet3d anet anet3d a8 a8-b

Le firmware d’origine de l’Anet A8 ne prend pas en charge la fonction d’auto-leveling qui permet de compenser les défauts de planéité du plateau d’impression. On ne trouve même plus la fonction qui permet de remplacer le capteur de fin de course de l’axe Z par un palpeur mécanique ou magnétique. Heureusement, la carte mère de l’Anet A8, A8-B et A6 est construite autour d’un micro-contrôleur Atmega1284P de la société Microchip très classique. On va pouvoir installer le firmware Skynet3D Thijs Kroesbergen (son compte GitHub) développé à partir du firmware Marlin depuis 2016. Si vous préférez conserver le firmware officiel, Anet3D a mis à disposition sur sa dropbox un lien vers un firmware prenant en charge l’auto-leveling (je n’ai pas encore testé). Dommage, il n’est proposé que pour l’A8.

Ou récupérer le firmware Skynet3D ?

Le firmware Skynet3D a été initié par Thijs Kroesbergen (son compte GitHub) en 2016. Il est disponible sur GitHub ici. On trouve beaucoup de tutoriels sur internet ainsi que des liens vers Dropbox. Le projet semble maintenant être soutenu par une grande communauté qui par ailleurs est très active sur Facebook.

https://www.facebook.com/skynet3ddevelopment

https://www.facebook.com/groups/OFFICIALAnet3DprinterSupportGroup/

Je vous conseille donc de télécharger le firmware Skynet3D directement sur GitHub ici pour avoir la dernière version. En plus du firmware, le projet contient l’IDE Arduino, Cura 15.04.6 ainsi que le fichier STL du cube de test. Petit regret, tous les logiciels sont en version Windows. Nous allons voir comment faire pour les utilisateurs macOS.

Le projet GitHub est livré avec tout ce qu’il faut pour configurer le firmware et l’installer sur la carte mère. Téléchargez le projet

skynet3D project folder

Décompressez l’archive ZIP. Voici le contenu du projet

  • Cura 15.x
  • Arduino 1.8.x
  • Firmware Skynet3D v2.x
    • Plusieurs configurations pour les imprimantes Anet A2, A6 et A8 (compatible A8-B)

Comment ré-installer le firmware d’origine ?

Attention. L’installation du firmware Skynet3D sur votre imprimante 3D A8, A6 ou A2 va effacer le firmware d’origine ainsi que tous les réglages. Voici les liens pour télécharger les firmwares. N’hésitez pas à me signaler un lien cassé. J’ai trouvé les liens ici.

Firmware de l’Anet3D A6https://www.dropbox.com/s/sh4uyr37ouz6i3a/A6-FirmwareUpdate.zip?dl=1

Firmware de l’Anet3D A8https://www.dropbox.com/s/vho6pr8mf30x9nz/A8-firmware_update.zip?dl=1

Firmware de l’Anet3D A8-L (avec capteur auto-leveling)https://www.dropbox.com/s/xb4pz30pjxvc62a/A8-L_firmwareUpdate.zip?dl=1

Les firmwares sont livrés sous la forme d’un fichier hexadecimal qu’il faut ensuite téléverser sur le micro-contrôleur Atmega1284P de la carte mère. Anet3D met à mis à disposition une notice ainsi que l’utilitaire Avrdudess pour le faire depuis un PC Windows.

https://www.dropbox.com/s/achvqfszam66jb1/firmware_Reset.zip?dl=1

Avrdude est également disponible sur macOS. Pour cela, il faudra l’installer manuellement avec Brew. Ouvrez le Terminal puis exécutez la commande

brew install avrdude --with-usb

Brew installe la dernière version disponible d’avrdude (ici la 6.3)

avrdude --version
avrdude: illegal option -- -
Usage: avrdude [options]
Options:
  -p <partno>                Required. Specify AVR device.
  -b <baudrate>              Override RS-232 baud rate.
  -B <bitclock>              Specify JTAG/STK500v2 bit clock period (us).
  -C <config-file>           Specify location of configuration file.
  -c <programmer>            Specify programmer type.
  -D                         Disable auto erase for flash memory
  -i <delay>                 ISP Clock Delay [in microseconds]
  -P <port>                  Specify connection port.
  -F                         Override invalid signature check.
  -e                         Perform a chip erase.
  -O                         Perform RC oscillator calibration (see AVR053). 
  -U <memtype>:r|w|v:<filename>[:format]
                             Memory operation specification.
                             Multiple -U options are allowed, each request
                             is performed in the order specified.
  -n                         Do not write anything to the device.
  -V                         Do not verify.
  -u                         Disable safemode, default when running from a script.
  -s                         Silent safemode operation, will not ask you if
                             fuses should be changed back.
  -t                         Enter terminal mode.
  -E <exitspec>[,<exitspec>] List programmer exit specifications.
  -x <extended_param>        Pass <extended_param> to programmer.
  -y                         Count # erase cycles in EEPROM.
  -Y <number>                Initialize erase cycle # in EEPROM.
  -v                         Verbose output. -v -v for more.
  -q                         Quell progress output. -q -q for less.
  -l logfile                 Use logfile rather than stderr for diagnostics.
  -?                         Display this usage.

avrdude version 6.3, URL: <http://savannah.nongnu.org/projects/avrdude/>

Nous verrons comment ré-installer le firmware d’origine dans un prochaine tutoriel.

Préparer l’IDE Arduino sous macOS ou Windows pour Skynet3D

Sur Windows, il n’y a rien à faire (à part choisir le fichier de configuration). Sous macOS (et sur Linux), il faut installer manuellement la configuration de la carte. Commencez par récupérer l’IDE Arduino pour macOS ici. Installez l’IDE Arduino comme n’importe quel autre logiciel.

Quelque soit votre environnement, si vous utilisez déjà l’IDE Arduino, voici comment faire pour ajouter la définition de la carte mère des imprimantes Anet.

Fermez l’IDE Arduino et ouvrez les Documents (sur macOS ou Windows). Ouvrez le dossier Arduino puis hardware.

Dans le projet Skynet3D, ouvrez le dossier Arduino-1.8.0 puis hardawre. Copiez le dossier Anet et collez le dans le dossier hardware de l’IDE Arduino précédemment ouvert.

copy anet board hardware ide arduino folder

Avant d’allez plus loin, profitez en pour supprimer le fichier platform.local.txt qui se trouve dans le sous-dossier avr. En effet (sur macOS du moins), ce fichier génère cette erreur de compilation

fork/exec /usr/local/bin/generate_version_header_for_marlin: no such file or directory
Erreur de compilation pour la carte Anet V1.0

Installer le firmware Skynet3D 2.3.x depuis l’IDE Arduino

Maintenant, ouvrez le dossier SkynetV2.3.2 puis ouvrez le dossier Configuration Profiles. Vous allez y trouver la configuration pour les 3 imprimantes Anet3D A8, A6 et A2. La configuration pour l’A8 fonctionne également pour l’A8-L (version 2018). Pour l’A8, on a 6 configurations possibles (que l’on peut encore personnaliser manuellement) :

  • 5buttonkeypad- autolevel- front left sensor : version la plus populaire avec les 5 boutons de contrôle
  • 5buttonkeypad- autolevel- stock anet sensor
  • 5buttonkeypad- no autolevel : pas de capteur d’auto-leveling
  • fullgraphicslcd- autolevel- front left sensor
  • fullgraphicslcd- autolevel- stock anet sensor
  • fullgraphicsLcd- no autolevel

Copiez le fichier configuration.h qui correspond à votre imprimante et collez le à la racine du projet (au même niveau que le fichier SkynetV2.3.2.ino.

Tout est prêt, lancez l’IDE Arduino et ouvrez le croquis SkynetV2.3.2.ino

skynet3d open ino file ide arduino

Dans le menu Outils, sélectionnez la carte Anet v1.0 dans les cartes.

skynet3d ide arduino motherboard

Branchez l’imprimante à votre ordinateur. Attendez qu’elle soit détectée par votre ordinateur. Si elle n’est pas détectée automatiquement, suivez ce tutoriel pour installer le driver manuellement. Sur Windows, le drivers ce trouve dans le dossier Documentation -> Troubleshoot -> Troubleshoot -> Anet Board Drivers. Dézippez le fichier CH340G_windows.zip et installez le drivers CH340G pour windows.

Une fois que l’imprimante est détectée par votre système, choisissez le port COM sur lequel elle est branchée

skynet3d anet port com

Vérifiez que le programmateur AVRISP mkll est bien sélectionné

Faites une vérification du code en cliquant sur le bouton Check

Si vous n’avez aucune erreur, vous pouvez téléverser

Ne débranchez pas le câble USB, ne mettez pas votre ordinateur en veille et ne débranchez pas l’imprimante du secteur durant cette opération au risque de rendre la carte mère inutilisable.

L’opération est assez longue et il n’y a aucun barre de progression. Soyez patient ! A la fin de l’opération, l’IDE Arduino vous indique Téléversement terminé. L’imprimante redémarre sur le firmware Skynet3D. Tout est prêt pour la prochaine étape, l’auto-leveling.

skynet3d anet anet3d a8 a8-b

Imprimante 3D Anet A8 en promo

Accessoires et pièces de rechange pour les imprimantes 3D Anet A6 ou A8

Anet A6, plus robuste, plateau chauffant jusqu’à 100°C

L’Anet A6 est une version améliorée de l’A8.

Cet article Installer le firmware Skynet3D v2.3 (dérivé de Marlin) sur l’Anet A8, A6 ou A2 (avec auto-leveling) est apparu en premier sur Projets DIY - Domotique et objets connectés à faire soi-même.


Réinstaller le firmware d’origine sur une imprimante 3D Anet A6 ou A8 (avec auto-leveling)

$
0
0
anet a8 auto leveling firmware upgrade a6 a2

La semaine dernière, nous avons vu comment installer le firmware Skynet3D sur une Anet A8-B pour profiter de la fonction d’auto-leveling du firmware Marlin. En mettant au point le tutoriel, je suis tombé sur les liens de téléchargement du firmware d’origine des Anet3D A6 et A8. Avec surprise, un firmware prenant en charge l’auto-leveling est également proposé au téléchargement. Je profite donc de l’occasion pour faire un petit tutoriel rapide pour vous expliquer comment ré-installer le firmware d’origine d’Anet3D depuis Windows ou macOS. N’hésitez pas à demander dans les commentaires s’il faut aussi regarder comment faire sur Linux.

Télécharger les firmwares d’origine d’anet3D

Commencez par télécharger le firmware qui correspond à votre imprimante 3D. N’hésitez pas à me signaler un lien cassé. J’ai trouvé les liens ici, sur un forum complètement par hasard.

Firmware de l’Anet3D A6https://www.dropbox.com/s/sh4uyr37ouz6i3a/A6-FirmwareUpdate.zip?dl=1

Firmware de l’Anet3D A8https://www.dropbox.com/s/vho6pr8mf30x9nz/A8-firmware_update.zip?dl=1

Firmware de l’Anet3D A8-L (avec capteur auto-leveling)https://www.dropbox.com/s/xb4pz30pjxvc62a/A8-L_firmwareUpdate.zip?dl=1

Télécharger Avrdude pour Windows

Les firmwares sont livrés sous la forme d’un fichier hexadecimal qu’il faut ensuite téléverser sur le micro-contrôleur Atmega1284P de la carte mère. Anet3D met à mis à disposition une notice ainsi que l’utilitaire Avrdudess pour le faire depuis un PC Windows.

https://www.dropbox.com/s/achvqfszam66jb1/firmware_Reset.zip?dl=1

Avrdude est déjà intégré dans l’archive pour l’A8 (mais pas pour l’A8-L et l’A6)

Installer la commande avrdude sur macOS (ou Linux)

avrdude est également disponible sur macOS. Pour l’installer, vous aurez déjà besoin d’installer Brew (si cela n’est pas déjà fait). Brew est un gestionnaire de paquet qui permet d’ajouter des librairies (et des logiciels) qui manquent au système d’Apple. Il s’utilise très simplement que ça brew nom_du_paquet (page officielle du projet).

node-red mongodb brew

Ouvrez un Terminal et collez cette commande

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Répondez aux questions pour terminer l’installation de Brew sur votre Mac.

Ensuite, exécutez cette commande pour installer arvdude

brew install avrdude --with-usb

A la fin de l’installation, vérifiez qu’avrdude est correctement installé (ici la 6.3)

avrdude --version
avrdude: illegal option -- -
Usage: avrdude [options]
Options:
  -p <partno>                Required. Specify AVR device.
  -b <baudrate>              Override RS-232 baud rate.
  -B <bitclock>              Specify JTAG/STK500v2 bit clock period (us).
  -C <config-file>           Specify location of configuration file.
  -c <programmer>            Specify programmer type.
  -D                         Disable auto erase for flash memory
  -i <delay>                 ISP Clock Delay [in microseconds]
  -P <port>                  Specify connection port.
  -F                         Override invalid signature check.
  -e                         Perform a chip erase.
  -O                         Perform RC oscillator calibration (see AVR053). 
  -U <memtype>:r|w|v:<filename>[:format]
                             Memory operation specification.
                             Multiple -U options are allowed, each request
                             is performed in the order specified.
  -n                         Do not write anything to the device.
  -V                         Do not verify.
  -u                         Disable safemode, default when running from a script.
  -s                         Silent safemode operation, will not ask you if
                             fuses should be changed back.
  -t                         Enter terminal mode.
  -E <exitspec>[,<exitspec>] List programmer exit specifications.
  -x <extended_param>        Pass <extended_param> to programmer.
  -y                         Count # erase cycles in EEPROM.
  -Y <number>                Initialize erase cycle # in EEPROM.
  -v                         Verbose output. -v -v for more.
  -q                         Quell progress output. -q -q for less.
  -l logfile                 Use logfile rather than stderr for diagnostics.
  -?                         Display this usage.

avrdude version 6.3, URL: <http://savannah.nongnu.org/projects/avrdude/>

Installer le firmware d’origine de l’Anet A8 depuis Windows

Décompressez le fichier firmware_Reset.zip. Branchez l’imprimante. Si c’est la première fois, attendez que le driver soit installé. Lancer avrdudess.exe. Dans la fenêtre qui s’ouvre, configurez les paramètres comme ceci

  1. Programmer (option -c) : arduino

  2. MCU (-p) Atmega1284P

  3. Port COM (-P)

  4. Débit du port série (-b) 57600 (bauds)

  5. Chemin vers le firmware (-U). Sélectionnez le firmware que vous souhaitez ré-installer sur l’imprimante

  6. Cliquez sur GO pour lancer l’installation.

avrdudess install anet a8 a6 autoleveling firmware windows

Installer le firmware en ligne de commande sur macOS

Heureusement pour nous, la commande à exécuter sur macOS est indiquée sur l’image de l’outil Windows. On va devoir lui indiquer quelques paramètres

  • -c arduino

  • -p m1284p

  • -P le port COM qu’on va récupérer avec la commande ls /dev/tty* 

  • -b 57600 (bauds)

  • -U flash:w:chemin_fichier_hex

Branchez l’imprimante au Mac et ouvrez un Terminal puis exécutez la commande

ls /dev/tty*
  pour récupérer le port COM sur lequel elle est accessible. Ici, elle est sur /dev/tty.wchusbserial1420 
ls /dev/tty*
/dev/tty				/dev/ttyqf				/dev/ttyse				/dev/ttyv0
/dev/tty.Bluetooth-Incoming-Port	/dev/ttyr0				/dev/ttysf				/dev/ttyv1
/dev/tty.wchusbserial1420		/dev/ttyr1				/dev/ttyt0				/dev/ttyv2
....

Ouvrez le dossier dans lequel vous avez dé-zippé le firmware puis exécutez la commande avrdude en l’adaptant à votre configuration.

avrdude -c arduino -p m1284p -P /dev/tty.wchusbserial1420 -b 57600 -U flash:w:/Users/christophe/Downloads/A8-L_firmwareUpdate.hex

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.03s

avrdude: Device signature = 0x1e9705 (probably m1284p)
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "/Users/christophe/Downloads/A8-L_firmwareUpdate.hex"
avrdude: input file /Users/christophe/Downloads/A8-L_firmwareUpdate.hex auto detected as Intel Hex
avrdude: writing flash (108024 bytes):

Writing | ################################################## | 100% 42.14s

avrdude: 108024 bytes of flash written
avrdude: verifying flash memory against /Users/christophe/Downloads/A8-L_firmwareUpdate.hex:
avrdude: load data flash data from input file /Users/christophe/Downloads/A8-L_firmwareUpdate.hex:
avrdude: input file /Users/christophe/Downloads/A8-L_firmwareUpdate.hex auto detected as Intel Hex
avrdude: input file /Users/christophe/Downloads/A8-L_firmwareUpdate.hex contains 108024 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 38.19s

avrdude: verifying ...
avrdude: 108024 bytes of flash verified

avrdude: safemode: Fuses OK (E:00, H:00, L:00)

avrdude done.  Thank you.

Et voilà, à la fin de l’installation l’imprimante redémarre avec le firmware d’origine !

anet a8 auto leveling firmware upgrade

Maintenant, on dispose bien de la fonction d’auto-leveling présentée par le technicien d’Anet3D dans cette vidéo.

Imprimante 3D Anet A8 en promo

Accessoires et pièces de rechange pour les imprimantes 3D Anet A6 ou A8

Anet A6, plus robuste, plateau chauffant jusqu’à 100°C

L’Anet A6 est une version améliorée de l’A8.

Cet article Réinstaller le firmware d’origine sur une imprimante 3D Anet A6 ou A8 (avec auto-leveling) est apparu en premier sur Projets DIY - Domotique et objets connectés à faire soi-même.

Octoprint, serveur pour imprimante 3D. Partie 1, Octopi et installation manuelle sur Raspbian Stretch (Raspberry Pi 3)

$
0
0

Octoprint est un serveur d’impression de fichier 3D entièrement écrit en Python, il peut fonctionner sur un PC Windows, sur macOS et bien évidemment sur Linux. Il est parfaitement adapté au Raspberry Pi. Octoprint est maintenant un projet mature. Il peut fonctionner sur tous les modèles de Raspberry Pi (y compris le tout premier modèle A). Le Raspberry Pi Zero W semble toutefois poser des problèmes (pertes de connexion WiFi) actuellement. Octoprint est un projet Open Source et gratuit développé par Gina Häußge, alias fossel.

C’est quoi et à quoi ça sert Octoprint et Octopi ?

Octoprint est un serveur d’impression pour imprimante 3D. C’est un logiciel qu’on peut installer sur un PC Windows ou Linux, un MAC. Mais c’est sur un Raspberry Pi qu’Octoprint est le plus intéressant. La petite taille et la faible consommation de ce mini-PC permet de le laisser allumer durant les longues heures nécessaire à l’impression des pièces en 3D.

Octoprint est le nom du projet qui a été démarré par Gina Häußge, alias fossel sur GitHubVous pouvez soutenir le projet en devenant un Patron de Gina ici. Octopi est une image de la distribution Raspbian Jessie Lite sur lequel Octoprint est pré-installé. On peut la télécharger ici. Lisez ce tutoriel si vous voulez installer ultérieurement le bureau Pixel et ré-installer des logiciels sur le Raspberry Pi.

pixel_desktop on retropie

Que peut-on faire avec Octoprint ?

  • Importer des modèles STL et les découper directement sans passer par un logiciel tel que Cura. En fait Octoprint utilise le moteur de découpe de Cura (CuraEngine) pour découper les modèles STL. La découpe (Slice en anglais, c’est l’opération qui permet de préparer les déplacements de la tête d’impression et de générer le fichier gcode utilisable par l’imprimante. Le Slicer de Cura est directement intégré à l’interface d’Octoprint. Tous les paramètres de découpe (de votre imprimantes 3D) sont personnalisables.

  • Piloter l’imprimante depuis l’interface WEB : déplacer les axes, renvoyer les axes aux origines, allumer/éteindre les ventilateurs, pré-chauffer la buse ou le plateau…

  • Visualiser l’impression en cours à l’aide d’une Webcam ou une caméra CSI pour le Raspberry Pi.
  • Démarrer, suspendre, annuler une impression depuis l’interface WEB ou depuis une application mobile. Octoprint permet de gérer une file d’attente de fichiers à imprimer
  • Ajouter des plugins spécialisés dont voici quelques exemples :
    • Arrêt d’urgence
    • Estimation du coût d’impression
    • Gestion du magasin de filament. La quantité consommée pour chaque pièce est déduite de la bobine. Pratique pour estimer assez précisément ce qui reste sur une bobine.
    • Réglage de la planétité du plateau (Bed Leveling)
    • … plus de 50 plugins sont disponibles

octoprint plugins overview

Et plein d’autres choses !

Matériel nécessaire

Pour ce premier tutoriel sur Octoprint, on va partir d’une configuration très simple à base de Raspberry Pi 3 ou Raspberry Pi Zero W. On ajoutera une caméra ou une webcam ultérieurement.

1ère solution : utiliser OctoPi, Octoprint pré-installé sur l’image de Raspbian

Rien de bien compliqué ici. Il suffit de télécharger l’image de Raspbian sur lequel Octoprint est déjà pré-installé. C’est l’image OctoPi. On utilisera un logiciel de préparation de carte SD tel que Etcher disponible sur toutes les plateformes. Allez sur la page de téléchargement pour récupérer la dernière version compatible avec le Raspberry Pi A, B, A+, B+, B2, 3, Zero et Zero W

octopi download page

Ne décompressez pas l’archive. Lancez Etcher et sélectionnez l’image d’Octopi. Insérez la carte SD dans le lecteur ou avec un adaptateur USB. Enfin, lancez la gravure de l’image.

 

etcher octopi octoprint sd card raspberry pi

Une fois l’opération terminée, Rtcher éjecte automatiquement la carte SD. Retirez celle-ci du lecteur et insérez la de nouveau. Depuis de gestionnaire de fichier sous Windows ou le Finder sur macO, ouvrez la carte SD. Elle porte le nom boot. Ouvrez le fichier octopi-network.txt avec un éditeur de texte.

Attention, n’utilisez pas le WordPad de Windows ou TextEdit sur macOS. Utilisez un éditeur de texte pour développeur. Je vous conseille d’installer l’excellent Sublime Text. Vous pouvez également utiliser Notepad++, Atom ou VSCode (Visual Studio Code). WordPad ou TextEdit risquent de modifier l’encodage des fins de lignes. Il est différent d’un système à l’autre. Le fichier de configuration WiFi serait par conséquent inutilisable.

octoprint octopi network wifi configuration

On a plusieurs options commentées à notre disposition. .

  • WPA/WPA2 secured
  • WEP secured, à proscrire absolument. Les réseaux WEP ne sont plus sécurisés depuis des années !
  • Open/unsecured, euh décidément NON.

Dé-commentez la configuration WPA/WPA2 secured puis indiquez le SSI (nom du réseau WiFi) et le mot de passe (wpa-psk)

## WPA/WPA2 secured
iface wlan0-octopi inet manual
    wpa-ssid "NOM-DU-RESEAU-WIFI"
    wpa-psk "MOT-DE-PASSE-WIFI"

Enregistrez et éjectez la carte SD. Insérez la carte SD dans le lecteur de carte SD du Raspberry Pi puis mettez ce dernier sous tension. Ici avec un Raspberry Pi Zero W. Attendez au moins 30 secondes avant de poursuivre, le temps que le système Linux soit démarré.

insert sd card raspberry pi zerow

Se connecter en SSH à Octopi

Octopi étant basé sur la distribution Raspbian Jessie Lite, on reste en terrain connu. Par chance (c’est aussi une belle faille de sécurité), le port SSH est ouvert par défaut. Si vous n’avez pas connecté d’écran au Raspberry Pi Zero, vous pouvez utiliser Angry IP Scanner (gratuit) pour trouver l’adresse IP d’Octopi sur votre réseau. POur en savoir plus sur SSH, lisez cet article.

angry ip scanner octopi octoprint raspberry pi

Mais ce n’est pas nécessaire. On peut s’y connecter avec le nom de domaine. Par défaut, c’est octopi, ce qui donne ssh pi@octopi.local. Au passage, on récupère l’adresse IP du Raspberry Pi Zero W, ici 192.168.1.35.

ssh pi@octopi.local
The authenticity of host 'octopi.local (192.168.1.35)' can't be established.
ECDSA key fingerprint is 1e:e6:f7:2d:a6:14:fd:60:b1:08:b9:36:25:e4:83:3e.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'octopi.local' (ECDSA) to the list of known hosts.
pi@octopi.local's password: 

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.

-bash: warning: setlocale: LC_ALL: cannot change locale (fr_FR.UTF-8)
-bash: warning: setlocale: LC_ALL: cannot change locale (fr_FR.UTF-8)

SSH is enabled and the default password for the 'pi' user has not been changed.
This is a security risk - please login as the 'pi' user and type 'passwd' to set a new password.

-bash: warning: setlocale: LC_ALL: cannot change locale (fr_FR.UTF-8)

------------------------------------------------------------------------------
Access OctoPrint from a web browser on your network by navigating to any of:

    http://octopi.local
    http://192.168.1.35

https is also available, with a self-signed certificate.
------------------------------------------------------------------------------
This image comes without a desktop environment installed because it's not 
required for running OctoPrint. If you want a desktop environment you can 
install it via

    sudo /home/pi/scripts/install-desktop
------------------------------------------------------------------------------
OctoPrint version : 1.3.4
OctoPi version    : 0.14.0
------------------------------------------------------------------------------

2nd solution : installer Octoprint sur Raspbian Stretch sur un Raspberry Pi 3

OctoPrint est suffisamment léger pour fonctionner en parallèle d’autres logiciels sur le Raspberry Pi 3. Si vous découvrez le Raspberry Pi, commencez par ce tutoriel pour installer et configurer Raspbian (WiFi, clavier, SSH…). Comme j’utilise toujours le même Raspberry Pi 3 pour écrire mes tutoriels, je vous propose de passer un peu plus de temps sur l’installation manuelle depuis les sources.

Avant d’installer OctoPrint, vous pouvez commencer par mettre Raspbian à jour

sudo apt-get -y update

OctoPrint étant écrit en Python, on va vérifier et installer les librairies nécessaires

sudo apt-get -y install python-pip python-dev python-setuptools python-virtualenv git libyaml-dev build-essential

Si vous êtes connecté en root, changez d’utilisateur. Placez vous à la racine du compte pi par exemple (c’est plus facile pour la maintenance). Téléchargez ensuite le dépôt du projet depuis GitHub puis ouvrez le dossier du projet

cd
git clone --depth 1 https://github.com/foosel/OctoPrint.git
cd Octoprint

Octoprint a été développé en Python2, si vous avez les deux versions de Python (2.7 et 3.5) sur votre distribution, on va devoir spécifier la version de Python qu’il faut utiliser. Octoprint s’installe dans un environnement virtuel Python. Pour faire (très très) simple, c’est un répertoire dans lequel on installe tout ce qu’il faut pour faire fonctionner un script Python.

Pour savoir si Python3 est installé sur votre distribution, exécutez cette commande.

python3 --version
Python 3.4.2

Pour connaître le chemin du python2.7, on peut utiliser la commande Linux whereis. Vous pouvez également vous rendre dans le dossier /usr/bin/. Donc ici Python 2.7 se trouve dans le dossier

/usr/bin/python2.7
whereis python2
python2: /usr/bin/python2 /usr/bin/python2.7 /usr/bin/python2.7-config /usr/lib/python2.6 /usr/lib/python2.7 /etc/python2.7 /usr/local/lib/python2.7 /usr/include/python2.7 /usr/share/man/man1/python2.1.gz

Maintenant qu’on connait l’emplacement de Python2.7, on va créer un environnement virtuel Python dans lequel on installera Octoprint. On indique le chemin de Python2 avec le paramètre –python.

virtualenv --python=/usr/bin-python2.7 venv

On va installer la commande PIP qui permet à Python d’installer des dépendances dans cet environnement virtuel

./venv/bin/pip install pip --upgrade

Enfin, on lance l’installation d’Octoprint. L’installation est assez longue, comptez au moins 15 minutes.

./venv/bin/python setup.py install

L’installation terminée, on lance Octoprint manuellement avec la commande 

./venv/bin/octoprint

Première connexion à l’interface Web d’Octoprint

Octoprint est accessible depuis n’importe quel ordinateur sur votre réseau local (on verra dans un prochain tutoriel comment utiliser Octorpint depuis un smartphone). C’est son principal intérêt. Pour accéder à l’interface WEB d’Octoprint, on dispose de plusieurs solutions :

  • Avec son adresse IP, http://ADRESSE_IP:5000. Pour connaître l’adresse IP, exécutez la commande ifconfig dans un autre Terminal.
  • Avec le nom de domaine du Raspberry Pi. Avec l’image OctoPi, l’adresse par défaut est http://octopi.local:5000. Sur la distribution Raspbian, ouvrez l’adresse http://raspberrypi.local:5000 

A la première connexion, on arrive sur un assistant de configuration

octoprint startup assistant configuration

Il est fortement conseillé de définir un utilisateur surtout si vous avez l’intention de rendre accessible votre imprimante 3D depuis internet. Cliquez sur Keep Access Control Enable pour activer la sécurité entrante.

octoprint startup assistant configuration access control

Octoprint vérifie à intervalle régulier que la connexion internet est disponible. Vous pouvez indiquer un serveur DNS ou laisser celui de google par défaut.

Nous verrons dans la seconde partie comment installer le moteur de découpe (Slicing engine) CuraEngine. Si vous avez déjà CuraEngine d’installé, indiquez le chemin vers celui-ci. Sur Octopi, il n’y a que le profile de découpe (slicing profile) à télécharger.

octoprint startup assistant configuration cura engine

La découpe nécessite de disposer d’un profile d’imprimante. Vous pouvez récupérer celui de votre imprimante directement sur Cura. Attention toutefois, Octoprint prend en charge les profiles jusqu’à la version 15.04 de Cura. Si vous avez la nouvelle version d’installée (2.x ou 3.x), il faudra re-créer un profile pour votre imprimante en téléchargeant une ancienne version de Cura ici. Ici j’ai récupéré le profile de l’Anet A8. octoprint startup assistant configuration printer profile

Voilà, c’est prêt

octoprint startup assistant configuration done

Si vous avez loupé une étape ou que vous ne disposiez pas de tous les éléments, pas de panique, vous pourrez terminer la configuration en cliquant sur la petite clé plate dans le coin supérieur droit de l’écran.

octoprint anet a8 raspberry pi manual install 3dbenchy boat

C’est terminé pour ce premier tutoriel. Dans les prochains articles, nous découvrirons comment importer des fichiers STL, les découper (Slice) avec le moteur de découpe Cura Engine, les imprimer et comment piloter l’imprimante 3D depuis Octoprint.

Tous les tutoriels sur Octoprint

Cet article Octoprint, serveur pour imprimante 3D. Partie 1, Octopi et installation manuelle sur Raspbian Stretch (Raspberry Pi 3) est apparu en premier sur Projets DIY - Domotique et objets connectés à faire soi-même.

Mise à jour du firmware Marlin d’un kit imprimante 3D RepRap. Exemple avec l’Anet A8 avec l’IDE Arduino

$
0
0
marlin firmware anet a8 3d printer update

Marlin est un firmware projet Open Source employé dans le plupart des kits d’imprimantes 3D Reprap. La majorité des fabricants personnalisent ce firmware pour l’adapter à leurs imprimantes. C’est par exemple le cas d’Anet3D. Comme tout projet informatique, le firmware évolue, soit pour ajouter de nouvelles fonctions, soit pour corriger des bugs. Il peut être intéressant de mettre à jour le firmware de votre imprimante 3D par exemple pour ajouter la fonction d’auto-leveling (auto-bed) si elle n’est pas proposée par le firmware d’origine. C’est par exemple le cas pour l’Anet A8 si on veut remplacer le capteur de fin de course de l’axe Z par un capteur de proximité. Dans l’article précédent, nous avons vu comment installer le firmware Skynet3D qui n’est rien d’autre que le firmware Marlin avec des fichiers de configuration pré-définis pour les imprimantes 3D A8, l’A6 et l’A2.

Que devient le firmware d’origine ?

Il va être tout simplement effacé ainsi que tous les réglages. S vous avez une Anet A6 ou A8, suivez ce tutoriel pour ré-installer le firmware d’origine.

Sur quelle imprimante 3D peut-on installer le firmware Marlin ?

Le firmware Marlin peut être installé sur les cartes mères d’un très grand nombre de kit d’impression 3D.Le firmware Marlin est avant tout un programme Arduino. La communauté qui développe le firmware Marlin depuis novembre 2011 (historique des versions) adapte le code pour qu’il soit possible de l’installer sur les micro-contrôleurs des kits d’imprimantes 3D. C’est également très intéressant pour les fabricants de kits économiques (Anet, ) qui peuvent l’utiliser sans avoir à supporter les coûts de développement et de maintenance.

Voici la liste des cartes mères supportées par la version 1.1.8 (décembre 2017). La liste est disponible sur la documentation officielle.

Petit info au passage, on retrouve dans la liste la carte Melzi utilisée sur les Dagoma Discovery et Disco Easy. Comme j’ai encore mon ancienne Discorey200 qui fonctionne, on verra dans le prochaine tutoriel comment mettre à jour le firmware.

Constante à utiliser dans la configuration MCU Fichier de repérage des broches Nom de la carte mère
BOARD_3DRAG Arduino pins_3DRAG.h 3DRAG RAMPS v1.4
BOARD_AZTEEG_X3 Arduino pins_AZTEEG_X3.h Azteeg X3 RAMPS v1.4
BOARD_AZTEEG_X3_PRO Arduino pins_AZTEEG_X3_PRO.h Azteeg X3 PRO RAMPS v1.4
BOARD_BAM_DICE Arduino pins_RAMPS_14.h 2PrintBeta BAM&DICE
BOARD_BAM_DICE_DUE Arduino pins_BAM_DICE_DUE.h 2PrintBeta BAM&DICE Due
BOARD_BQ_ZUM_MEGA_3D Arduino pins_BQ_ZUM_MEGA_3D.h bq ZUM Mega 3D
BOARD_CHEAPTRONIC Arduino pins_CHEAPTRONIC.h Cheaptronic v1.0
BOARD_CHEAPTRONIC_V2 Arduino pins_CHEAPTRONIC_V2.h Cheaptronic v2.0
BOARD_CNCONTROLS_11 Arduino pins_CNCONTROLS_11.h Cartesio CN Controls V11
BOARD_CNCONTROLS_12 Arduino pins_CNCONTROLS_12.h Cartesio CN Controls V12
BOARD_ELEFU_3 Arduino pins_ELEFU_3.h Elefu RA
BOARD_FELIX2 Arduino pins_FELIX2.h FELIXprinters v2.0/3.0
BOARD_K8200 Arduino pins_K8200.h Velleman K8200 RAMPS v1.3
BOARD_K8400 Arduino pins_K8400.h Velleman K8400 RAMPS v1.4
BOARD_LEAPFROG Arduino pins_LEAPFROG.h Leapfrog Driver board
BOARD_MEGACONTROLLER Arduino pins_MEGACONTROLLER.h Mega Controller
BOARD_MEGATRONICS Arduino pins_MEGATRONICS.h MegaTronics
BOARD_MEGATRONICS_2 Arduino pins_MEGATRONICS_2.h MegaTronics v2.0
BOARD_MEGATRONICS_3 Arduino pins_MEGATRONICS_3.h MegaTronics v3.0
BOARD_MEGATRONICS_31 Arduino pins_MEGATRONICS_31.h MegaTronics v3.1
BOARD_MINIRAMBO Arduino pins_MINIRAMBO.h Mini RAMBo
BOARD_MKS_13 Arduino pins_MKS_13.h MKS v1.3
BOARD_MKS_BASE Arduino pins_MKS_BASE.h MKS BASE 1.0
BOARD_RAMBO Arduino pins_RAMBO.h RAMBo
BOARD_RAMPS_13_EEB Arduino pins_RAMPS_13.h RAMPS v1.3 (Extruder, Extruder, Bed)
BOARD_RAMPS_13_EEF Arduino pins_RAMPS_13.h RAMPS v1.3 (Extruder, Extruder, Fan)
BOARD_RAMPS_13_EFB Arduino pins_RAMPS_13_EFB.h RAMPS v1.3 (Extruder, Fan, Bed)
BOARD_RAMPS_13_EFF Arduino pins_RAMPS_13.h RAMPS v1.3 (Extruder, Fan, Fan)
BOARD_RAMPS_13_SF Arduino pins_RAMPS_13.h RAMPS v1.3 (Spindle, Controller Fan)
BOARD_RAMPS_14_EEB Arduino pins_RAMPS_14.h RAMPS v1.4 (Extruder, Extruder, Bed)
BOARD_RAMPS_14_EEF Arduino pins_RAMPS_14.h RAMPS v1.4 (Extruder, Extruder, Fan)
BOARD_RAMPS_14_EFB Arduino pins_RAMPS_14_EFB.h RAMPS v1.4 (Extruder, Fan, Bed)
BOARD_RAMPS_14_EFF Arduino pins_RAMPS_14.h RAMPS v1.4 (Extruder, Fan, Fan)
BOARD_RAMPS_14_SF Arduino pins_RAMPS_14.h RAMPS v1.4 (Spindle, Controller Fan)
BOARD_RAMPS_OLD Arduino pins_RAMPS_OLD.h RAMPS v1.0, v1.1, v1.2
BOARD_RIGIDBOARD Arduino pins_RIGIDBOARD.h RIGIDBOARD RAMPS v1.4
BOARD_RIGIDBOARD_V2 Arduino pins_RIGIDBOARD_V2.h RIGIDBOARD v2
BOARD_RUMBA Arduino pins_RUMBA.h RUMBA
BOARD_SAINSMART_2IN1 Arduino pins_SAINSMART_2IN1.h Sainsmart 2-in-1
BOARD_SCOOVO_X9H Arduino pins_SCOOVO_X9H.h abee Scoovo X9H
BOARD_ULTIMAIN_2 Arduino pins_ULTIMAIN_2.h Ultiboard v2.0
BOARD_ULTIMAKER Arduino pins_ULTIMAKER.h Ultimaker
BOARD_ULTIMAKER_OLD Arduino pins_ULTIMAKER_OLD.h Ultimaker “old electronics”
BOARD_ZRIB_V20 Arduino pins_BOARD_ZRIB_V20.h zrib V2.0 (Chinese RAMPS replica)
BOARD_BRAINWAVE Brainwave pins_BRAINWAVE.h Brainwave 1.0
BOARD_BRAINWAVE_PRO Brainwave pins_BRAINWAVE_PRO.h Brainwave Pro
BOARD_GEN7_12 Gen7 pins_GEN7_12.h Gen7 v1.1, v1.2
BOARD_GEN7_13 Gen7 pins_GEN7_13.h Gen7 v1.3
BOARD_GEN7_14 Gen7 pins_GEN7_14.h Gen7 v1.4
BOARD_GEN7_CUSTOM Gen7 pins_GEN7_CUSTOM.h Gen7 “Alfons3”
BOARD_MINITRONICS Minitronics pins_MINITRONICS.h Minitronics v1.0/1.1
BOARD_ANET_10 Sanguino pins_ANET_10.h Anet V1.0 by SkyNet3D
BOARD_AZTEEG_X1 Sanguino pins_AZTEEG_X1.h Azteeg X1
BOARD_GEN3_MONOLITHIC Sanguino pins_GEN3_MONOLITHIC.h Gen3 Monolithic Electronics
BOARD_GEN3_PLUS Sanguino pins_GEN3_PLUS.h Gen3+
BOARD_GEN6 Sanguino pins_GEN6.h Gen6
BOARD_GEN6_DELUXE Sanguino pins_GEN6_DELUXE.h Gen6 Deluxe
BOARD_MELZI Sanguino pins_MELZI.h Melzi
BOARD_MELZI_MAKR3D Sanguino pins_MELZI_MAKR3D.h Melzi “MaKr3d”
BOARD_OMCA_A Sanguino pins_OMCA.h Open Motion controller
BOARD_SANGUINOLOLU_11 Sanguino pins_SANGUINOLOLU_11.h Sanguinololu
BOARD_SANGUINOLOLU_12 Sanguino pins_SANGUINOLOLU_12.h Sanguinololu v1.2
BOARD_STB_11 Sanguino pins_STB_11.h STB V1.1
BOARD_OMCA SanguinoA pins_OMCA_A.h Open Motion controller “Alpha”
BOARD_SETHI Sethi 3D pins_SETHI.h Sethi 3D_1
BOARD_5DPRINT Teensy++ 2.0 pins_5DPRINT.h Makibox 5DPD8
BOARD_PRINTRBOARD Teensy++ 2.0 pins_PRINTRBOARD.h Printrboard
BOARD_PRINTRBOARD_REVF Teensy++ 2.0 pins_PRINTRBOARD_REVF.h Printrboard RevF
BOARD_SAV_MKI Teensy++ 2.0 pins_SAV_MKI.h SAV MkI
BOARD_TEENSY2 Teensy++ 2.0 pins_TEENSY2.h Teensy++ 2.0
BOARD_TEENSYLU Teensy++ 2.0 pins_TEENSYLU.h Teensylu 0.7

Télécharger le firmware Marlin

Le projet Marlin est hébergé sur GitHub sur cette page. Comme d’habitude, cliquez sur Clone or download puis Download ZIP. Décompressez et ouvrez le dossier du projet.

download marlin firmware

Comme vous pouvez le constater, vous pouvez également utiliser PlatformIO pour compiler et téléverser le firmware.

Nous allons maintenant préparer l’IDE Arduino pour pouvoir se connecter et téléverser sur l’Anet A8

Configurer l’IDE Arduino pour l’imprimante 3D Anet A8 ou A6

Contrairement à Skynet3D, Marlin n’est livré avec aucun fichier de configuration permettant de se connecter à l’imprimante (et compiler le code) depuis l’IDE Arduino. On va donc récupérer ce qu’il nous faut en téléchargeant Skynet3D sur GitHub ici  (vous pouvez suivre ce tutoriel en détail si ça vous intéresse). Décompressez le fichier ZIP de Skynet3D. Voici son contenu

skynet3D project folder

 

Installez l’IDE Arduino sur votre ordinateur (Windows, Linux ou macOS) depuis cette page si vous ne l’avez pas encore fait. Installez l’IDE Arduino comme n’importe quel autre logiciel.

Lancez une première fois l’IDE Arduino puis quittez le. Ouvrez le dossier Documents. Allez dans le dossier Arduino puis hardware.

Dans le projet Skynet3D, ouvrez le dossier Arduino-1.8.0 puis hardawre. Copiez le dossier Anet et collez le dans le dossier hardware de l’IDE Arduino précédemment ouvert.

copy anet board hardware ide arduino folder

Supprimez le fichier platform.local.txt qui se trouve dans le sous-dossier avr car ce fichier génère cette erreur de compilation

fork/exec /usr/local/bin/generate_version_header_for_marlin: no such file or directory
Erreur de compilation pour la carte Anet V1.0

Installer la librairie Sanguino

Pour les kits ReRap à base d’Arduino Mega 2560, il n’y a rien à installer pour se connecter à la carte mère. Pour les autres cartes, Marlin conseille d’installer la libraire Sanguino développée par Kristian Sloth Lauszus (page GitHub du projet). Cette librairie permet de se connecter à des cartes de développement à base d’Atmega 644, 644P, 1284P (8 ou 16Mhz), ce qui est le cas de la carte mère des imprimantes 3D Anet3D A2, A6 et A8. Le firmware Skynet3D utilise d’ailleurs cette librairie comme on peut le voir dans le fichier boards.txt qui se trouve dans le dossier arduino-1.8.0/hardware/anet/avr.

# See: https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5---3rd-party-Hardware-specification
# See: http://code.google.com/p/arduino/wiki/Platforms

##############################################################

menu.cpu=Processor

########################################
## Anet V1 (sanguino clone) -
########################################
anet.name=Anet V1.0

anet.upload.tool=arduino:avrdude
anet.upload.protocol=arduino
anet.upload.maximum_size=131072
anet.upload.speed=57600

anet.bootloader.low_fuses=0xD6
anet.bootloader.high_fuses=0xDA
anet.bootloader.extended_fuses=0xFD
anet.bootloader.unlock_bits=0x3F
anet.bootloader.lock_bits=0x0F

anet.build.mcu=atmega1284p
anet.build.f_cpu=16000000L
anet.build.board=AVR_SANGUINO
anet.build.core=arduino:arduino
anet.build.variant=sanguino

anet.bootloader.file=atmega/ATmegaBOOT_168_atmega1284p.hex
anet.bootloader.tool=avrdude

Malheureusement, ça ne fonctionne pas chez moi. J’obtiens les erreurs suivantes au moment de téléverser le code sur la carte mère.

Les variables globales utilisent 4161 octets (25%) de mémoire dynamique, ce qui laisse 12223 octets pour les variables locales. Le maximum est de 16384 octets.
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x73
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x74
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x61
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x72
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x74
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x0a
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x65
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x63
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x68
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x6f
Une erreur est survenue lors du transfert du croquis

Pour le moment, on est donc condamné à récupérer la librairie dans le projet Skynet3D en attendant une mise à jour de la librairie Sanguino. J’ai d’abord pensé que c’était un problème avec le bootloader et donc ré-installé le firmware d’origine mais sans succès. Si quelqu’un trouve la solution, je suis preneur.

Configurer le firmware Marlin pour l’Anet A8

Ouvrez le dossier contenant Marlin et allez dans le dossier Marlin puis example_configurations. Vous allez y trouver des fichiers de configuration pour les principales imprimantes listées précédemment. Beaucoup d’imprimantes sont aujourd’hui obsolètes

Collez le ou les fichiers de configuration de votre imprimante à la racine du projet (au même niveau que le fichier marlin.ino). Pour l’A6 ou l’A8, il y deux fichiers configuration.h et configuration_adv.h (configuration avancée).

copy anet a8 a6 3d printer configuration arlin firmware

Installer le firmware Marlin à l’aide de l’IDE Arduino

Tout est prêt. Lancez l’IDE Arduino et ouvrez le projet du firmware marlin.

ouvrir marlin ino ide arduino

Personnaliser le firmware, interface en français

Le firmware est pré-configuré mais on peut encore le personnaliser un peu plus. La première chose à faire est de mettre l’interface en français :D.

Pour cela cherchez la clé LCD_LANGUAGE. Indiquez fr, les caractères accentués (fr_utf8) ne s’affichent pas correctement.

On peut également personnaliser le nom de l’imprimante en dé-commentant la clé CUSTOM_MACHINE_NAME et en indiquant un nom.

Voilà, il ne reste plus qu’à téléverser le programme. L’imprimante redémarre avec le firmware Marlin fraichement installé.

marlin firmware anet a8 3d printer update

Et en français en prime 😀

marlin firmware anet a8 3d printer francais update

En prime, puisque vous êtes sur l’IDE Arduino, profitez-en pour ouvrir le moniteur série. Sélectionnez la vitesse configurée par la clé BAUDRATE dans le fichier configuration.h

ide arduino serial monitor anet a8 marlin firmware

Voilà, je ne peux malheureusement pas tester pour toutes les imprimantes du marché. Je compte sur vous pour nous aider à trouver les fichiers de configuration pour les autres imprimantes. Si vous rencontrez des difficultés ou si vous avez d’autres astuces, les commentaires sont à votre disposition.

Imprimante 3D Anet A8 en promo

Accessoires et pièces de rechange pour les imprimantes 3D Anet A6 ou A8

Anet A6, plus robuste, plateau chauffant jusqu’à 100°C

L’Anet A6 est une version améliorée de l’A8.

L’article Mise à jour du firmware Marlin d’un kit imprimante 3D RepRap. Exemple avec l’Anet A8 avec l’IDE Arduino est apparu en premier sur Projets DIY - Domotique et objets connectés à faire soi-même.

#Guide, quel module ESP8266 choisir, alimentation, programmer en C++ depuis l’Arduino IDE, MicroPython, ESP Easy

$
0
0
esp8266 guide choix choice achat buy

L’ESP8266 est sorti en 2014. Il est passé en quelques années d’un simple projet de module WiFi pour Arduino pour quelques euros à une carte de développement à part entière. L’ESP8266 est un véritable Arduino Killer. Il possède plusieurs entrées/sorties (GPIO), une liaison WiFi, un mode économie d’énergie (Sleep Mode) et peut se programmer indifféremment à l’aide de l’IDE Arduino ou en Lua (firmware NodeMCU).

La famille ESP8266

L’ESP8266 est développé par la société Chinoise Espressif. Sorti en octobre 2014, l’ESP8266 a tout de suite suscité un très grand engouement de la communauté. Le projet est soutenu par une large communauté que vous pouvez suivre ici. Ce module ne ce contente pas d’offrir une connexion Wifi aux projets Arduino, il dispose de ses propres entrées/sorties (GPIO) dont le nombre dépend du modèle.

Il existe déjà 18 versions de l’ESP8266 (au moment de la rédaction de cet article) dont voici les principales caractéristiques.

Attention. Les modules ESP8266 fonctionnent avec une tension de 3.3 Volts qu’il est dangereux de dépasser. Certaines cartes qui embarquent un régulateur de tension qui protège le module ESP8266 et permet d’utiliser une alimentation 5Volts (généralement entre 3.3 et 6.2 Volts).
Modèle Photo Certifications Antenne interne

Antenne externe

Dimensions

(mm)

Broches (GPIO) Fiche technique
ESP-01 esp8266 esp-01  Non approuvée FCC et CE Gravée sur le PCB

Non

14.3 x 24.8 8
ESP-02 esp8266 esp-02  ? Non

Oui

14.2 x 14.2 8
ESP-03 esp8266 esp-03 ? Céramique

Non

17.3 x 12.1 14
ESP-04 esp8266 esp-04 ?  ?

?

14.7 x 12.1 14
ESP-05 esp8266 esp-05  ? Non

Oui

14.2 x 14.2 5
ESP-06 esp8266 esp-06  Non approuvée FCC et CE ?

?

? 12+GND
ESP-07 esp8266 esp-07 Non approuvée FCC et CE Céramique

Oui

20.0 x 16.0 16
ESP-08 esp8266 esp-08 Non approuvée FCC et CE Non

Non

17.0 x 16.0 14
ESP-08 New  ? Non

Non

18.0 x 16.0 16
ESP-09 esp8266 esp-09 ? Non

Non

 10.0 x 10.0 12+GND
ESP-10 esp8266 esp-10 ? Non

Non

 14.2 x 10.0 5
ESP-11 esp8266 esp-11  ? Céramique

Non

 17.3 x 12.1 8
ESP-12 esp8266 esp-12 Certifié CE (n°BCTC-141212468)

Certifié FCC (n°2ADUIESP-12)

Gravée sur le PCB

Non

 24.0 x 16.0 16
ESP-12-E/Q esp8266 esp-12-eq Probablement les mêmes certifications que l’ESP-12 Gravée sur le PCB

Non

 24.0 x 16.0 22
ESP-13 esp8266 esp-13 ? Gravée sur le PCB

Non

 ? 18
ESP-14 esp8266 esp-14 Gravée sur le PCB

Non

 24.3 x 16.2 22
ESP-WROOM-02 esp8266 WROOM-02 CE

FCC

Gravée sur le PCB

Non

 20 x 18 x 3 18  Consulter
WT8266-S1 esp8266 WT8266-S1 Certifié CE (n°BCTC-150809775)

Certifié FCC (n°2AFOSWT8266)

Gravée sur le PCB

Non

 15.0 x 18.6 18 Consulter

Retrouvez tous les modèles disponibles à cette adresse (en anglais). Sources des images : esp8266.com.

Quel modèle choisir pour vos projets DIY

adaptateur adaptor esp8266 esp-07 esp-12 esp-12eIl existe de très nombreuses versions de l’ESP8266 (18 au moment de l’écriture de cet article). Cependant, parmi tous ces modèles, il y en a très peu qui sont adaptés à un usage pour des projets DIY (sans bricoler les brochages), c’est le cas de l’ESP-01 et de l’ESP-05.

Tous les autres modèles sont assemblés sous la forme d’un PCB à souder (SMD). Vous les trouverez le plus souvent déjà intégrés à une carte Arduino mais il existe également des platines d’adaptation au pas 2.54mm pour breadboard sur laquelle on viendra souder un module ESP8266 (ESP-07, ESP-08 ou ESP-12). Le modèle le plus populaire est l’ESP-12E (ou E/Q).

ESP-01

esp8266 esp-01L’ESP-01 est probablement le module le plus connu (et le plus vendu).Ce module très compact, pas plus grand qu’une pièce de 2€ (14,3 x 24,8mm), dispose de 512ko de mémoire flash, d’une antenne imprimée sur le PCB ainsi que 2 broches GPIO. C’est le module est idéal pour ajouter une connexion WiFi à un projet Arduino pour moins de 3€.

L’ESP-01 n’est pas directement utilisable sur une breadboard. Second point négatif, il n’est pas certifié CE ou FCC. J’ai constaté quelques perturbations du WiFi des appareils voisins lors de la mise sous tension. C’est peut être du à mon matériel.

ESP-05

esp8266 esp-05Contrairement à l’ESP-01, l’ESP-05 ne possède aucune broche GPIO. Très compact (14 x 14 mm), l’ESP-05 possède 4 broches au pas de 2.54mm (donc compatible avec une breadboard) 3.3V, GND, RX et TX. Vous pourrez également trouver certains modèles avec une 5ème broche de Reset. Il sera parfait pour ajouter une connexion WiFi à un projet Arduino pour 3,25€ environ.

Faites attention au moment de l’achat car tous les modèles vendus ne semblent pas être livrés avec le même firmware.

ESP-12E

L’ESP-12E est une version améliorée de l’ESP-12. L’ESP-12E possède 11 broches GPIO ainsi qu’un convertisseur analogique/numérique (ADC) avec une résolution de 10 bits.

C’est le module employé par presque toutes les cartes NodeMCU. Compacte et polyvalente, c’est la carte idéale pour réaliser des projets d’objets connectés.

Pour débuter, je vous conseille la WeMos d1 Mini. Elle est parfaitement prise en charge par l’IDE Arduino. Inutile de mettre la carte en mode Bootloader à chaque fois que vous voulez téléverser le programme depuis l’IDE Arduino

Comment alimenter un module ESP8266

Certains modules ESP8266 doivent être alimentés en 3.3 Volts et aucune protection n’existe. Voici plusieurs solutions pour alimenter vos modules.

Autre point important à connaitre. Si vous devez réinstaller le firmware (NodeMCU ou ESPEasy par exemple), l’alimentation électrique doit pouvoir délivrer 300mA durant le flashage du firmware. Certains câbles FTDI ne peuvent pas délivrer une puissance suffisante. Dans ce cas, une alimentation externe sera nécessaire.

Boitier pour piles AA

L’ESP est idéal pour développer des projets d’objets connectés. La première solution pour alimenter vos projets est d’utiliser un boitier pour piles AA. En fonction du nombre de piles 1,5V, la tension délivrée par le boitier d’alimentation sera plus ou moins élevé. Par exemple avec 4 piles AA de 1.5V, on pourra alimenter le module en 6V. Au delà, par exemple avec un boitier de 6 piles AA pouvant délivrer 9V, il faudra ajouter un régulateur de tension (par exemple un LD1117V33 détaillé plus bas).

Batterie LiPo 3,7V

wemos d1 mini shield batterie lipoCertaines cartes de développement sont équipées d’un connecteur JST pour batterie LiPo. C’est par exemple le cas de l’Olimexino-85S. WeMos propose un shield pour batterie LiPo équipé d’un connecteur JSH XH2-2.54mm qui permet d’alimenter et de recharger la batterie simultanément.

Caractéristiques du shield battery pour Wemos d1 mini

  • Tension de charge : nominale 5V (max. 10V)
  • Courant de charge : 0,5A par défaut. Souder le jumper J1 pour augmenter à 1A (attention, vérifier la compatibilité avec la batterie avant toute modification)
  • Batterie Lithium supportées : 3,3 à 4,2V
  • Convertisseur de tension jusqu’à 5V (1A max.)
  • Connecteur de batterie au format JST XH2-2.54mm
  • Connecteur micro-USB (OTG) pour recharge (5V, max. 10V)
  • Led verte : allumée lorsque la charge est terminée
  • Led rouge : allumée durant la recharge
  • Jumper J1 : permet d’augmenter le courant de charge de 0.5A à 1A

Optez pour une batterie d’au moins 850mAh pour un projet de sonde connectée qui publie sur un serveur en WiFi ses mesures toutes les heures.

Shield pour batterie 18650

Vendu moins de 2€ sur AliExpress ou eBay, ce shield permet d’alimenter très facilement vos projets d’objets connectés et même un Raspberry Pi à l’aide d’une batterie LiFePO4 18650. La carte est équipée d’un circuit permettant de recharger la batterie (attention à bien respecter la polarité) même en cours de fonctionnement à l’aide d’un connecteur micro-USB. Il est possible d’alimenter plusieurs cartes simultanément grâce à 3 sortie 5V et 3 sortie 3.3V (broches à souder) ainsi qu’un connecteur USB classique.  Voici les caractéristiques de la carte :

  • Alimentation électrique : 5V à 8V via un port micro USB jusqu’à 0.5A
  • Puissance de sortie
    • 5V via le port USB de type A
    • 3 connecteurs permettant de délivrer 3V jusqu’à 1A
    • 3 connecteurs permettant de délivrer 5V jusqu’à 2A
  • Divers : 1 sortie USB, LED pour l’état de charge (vert = batterie chargée, rouge = en charge)
  • Protection de la batterie (surcharge ou décharge excessive). Attention, pas de protection en cas d’inversion de polarité
  • Dimensions : 98 x 29 mm

En fonction de votre projet et de la fréquence d’envoi des données, choisissez une batterie de grande capacité.

3.3V 5V arduino power supply breadboard alimentation électrique

Alimentation pour breadboard 3.3V ou 5V

Durant toute la phase de développement et de mise au point de votre projet, il est très pratique d’utiliser une breadboard avec une alimentation 5V / 3.3V. On trouve des cartes d’alimentation pour breadboard à moins de 2€.

 

Alimentation 3.3V à l’aide d’un régulateur de tension LD1117V33

Vous pouvez utiliser une ancienne alimentation d’un smartphone. Pour cela vous aurez besoin d’un adaptateur jack muni d’un bornier à vis et d’un régulateur de tension (LD1117V33 par exemple) permettant de délivrer les 3.3 Volts nécessaires à l’ESP8266. Attention à ne pas dépasser la tension d’alimentation préconisée (documentation technique). Enfin, tenez compte dans la conception de vos projets que le LD1117 chauffe (beaucoup). Vous pouvez également ajouter un condensateur 10µF pour obtenir une alimentation plus stable.

alimentation 3.3V breadboard arduino LD1117 jack

Comment programmer un module ESP8266

Câble USB ou module FTDI ?

module ftdiLe modules ESP-12 (ou ESP-12E) sont généralement équipé d’un port USB. Un simple câble micro-usb sera suffisant. Certaines cartes doivent être programmées à l’aide d’un adaptateur Série/USB, appelé module FTDI que l’on peut se procurer pour 2.50€ environ.

Attention toutefois. Certains câbles FTDI ne sont pas en mesure délivrer les 300mA nécessaires au téléversement.

ESP Easy : aucune programmation nécessaire

ESP Easy est un firmware qui permet de programmer, ou plutôt de configurer le module ESP sur lequel il est installé. Pour en savoir plus, lisez cet article de présentation qui explique comment installer le firmware et réaliser une petite sonde de température ensuite intégrée à Jeedom.

esp easy configuration device dht22

Pour aller plus loin, voici les derniers tutoriels publiés sur le firmware ESP Easy

Développer en C++ avec l’IDE Arduino

Si vous débutez la programmation Arduino ou que vous découvrez les modules ESP8266, c’est sans doute la solution la plus simple pour débuter. La librairie ESP8266Wifi est maintenant très aboutie et simplifie grandement la programmation. C’est un argument qui penche également en faveur de l’IDE Arduino. Lisez ce tutoriel pour bien démarrer avec les modules ESP8266 et l’IDE Arduino (installation des librairies, GPIO, Web Serveur, Client Web).

esp8266 web server spiffs bootstrap dht22 bmp180 google charts

Correspondance des broches entre Arduino et ESP8266 (NodeMCU)

L’ESP8266 se programme exactement comme un Arduino, il faudra juste rechercher la correspondance des broches pour votre carte. Voici par exemple la correspondance des broches d’une Wemos D1 Mini.

Correspondance Pins GPIO WeMos D1 mini

Correspondance des broches de la Wemos D1 Mini. Source : http://www.wemos.cc

Librairies ESP8266Wifi

Le projet de la librairie ESP8266Wifi se trouve sur github ici. Elle propose les fonctions suivantes :

  • Connexion à un point d’accès
  • Connexion à un serveur (un Broker MQTT par exemple)
  • Envoi / réception de messages à un serveur
  • Re-connexion automatique

Messages d’erreurs et remèdes

Voici une liste d’erreurs et de remèdes (non exhaustive) que vous pouvez rencontrer lorsque vous programmer un ESP8266 à l’aide de l’IDE Arduino.

Message Causes possibles Remèdes possibles
warning: espcomm_sync failed
error: espcomm_open failed
error: espcomm_upload_mem failed
L’ESP n’est pas en Flashing Mode

Impossible de communiquer via la liaison Série

Choisir ArduinoISP comme programmateur

Vérifier le branchement de la liaison Série (inverser TX/RX)

Le GPIO0 est-il bien au GND ?

Votre alimentation trop faible. Elle doit délivrer au moins 300mA lors du flashage du firmware

Ajoutez une résistance de rappel sur le GPIO0 ou relier le GND de l’alimentation 3.3V  au GND du module FTDI

Débranchez/remettez sous tension l’ESP8266

Débrancher/rebrancher sur un autre port USB votre module FTDI

Redémarrer l’ordinateur (si le module FTDI est toujours introuvable)

En Lua (NodeMCU)

NodeMCU est un firmware qui permet de programmer les modules ESP8266 dans un langage appelé Lua. Vous pouvez consulter le projet  open-source NodeMCU ici. Il existe deux versions de NodeMCU :

  • NodeMCU v0.9 pour les modules ESP-12
  • NodeMCU v1.0 pour les modules ESP-12E

Pour programmer en Lua, le plus simple est d’utiliser ESPlorer présenté (rapidement) dans cet article.

En MicroPython

Si vous avez déjà quelques notions en Python, vous pouvez installer le firmware MicroPython. C’est un portage du langage Python pour les modules ESP8266. La syntaxe est exactement la même. On retrouve toutes les fonctions de base du langage ainsi que des fonctions spécifiques aux modules ESP8266. Gestion du WiFi, du GPIO…

Voici une série de tutoriels pour débuter en MicroPython

Comment installer un firmware

Il est très simple de changer le firmware d’un ESP8266. Sachez que le firmware (NodeMCU, ESP Easy) est effacé dès que l’on procède à un téléversement depuis l’IDE Arduino. Voici plusieurs articles qui traitent du sujet.

L’article #Guide, quel module ESP8266 choisir, alimentation, programmer en C++ depuis l’Arduino IDE, MicroPython, ESP Easy est apparu en premier sur Projets DIY - Domotique et objets connectés à faire soi-même.

Problème d’axe X inversé sur l’Anet A8, diagnostic et solutions. Devrait fonctionner avec Prusa i3 et A6

$
0
0
anet a8 a8-b motherboard carte mere francais

Lors de montage de mon imprimante Anet3D A8 pour écrire le premier tutoriel sur les étapes de montage, il me manquait quelques photos (finalement, c’est une chance !). J’ai donc décidé de démonter l’extrudeur et le chariot pour prendre les clichés manquants. Après remontage, impossible de renvoyer l’axe X à son origine ! J’imagine ne pas être le seul dans ce cas, j’en profite donc pour faire un article rapide pour vous aider à trouver l’origine du problème et les différentes solutions qui existent.

Le montage de la courroie est inversée

La première solution que l’on trouve sur internet, c’est le montage inversé de la courroie du chariot extrudeur.

Anet3D a publié une vidéo assez bien faite qui explique dans quel sens on doit monter la courroie. Dans mon cas, ce n’était pas l’origine du problème. J’avais tout testé une première fois avec succès et remonté à l’identique la courroie. Mais comme tout le monde, quand ça ne fonctionne pas, on pense s’être trompé. J’ai donc testé dans tous les sens sans succès.

Modifier le câblage du moteur

La seconde solution que l’on trouve sur les forums, c’est inverser le sens de rotation du moteur pas à pas.

Ne le faites surtout pas ! Vous risquez d’abîmer les connecteurs et il est beaucoup plus facile de le faire en changeant le sens des axes directement dans le firmware Marlin ou Skynet3D.

Inverser le sens des axes (de l’axe X) dans le firmware Marlin ou Skynet3D

Nous avons vu comment installer le firmware Skynet3D dédié aux imprimantes Anet A8, A6 et A2 dans ce tutoriel et Marlin dans celui-ci. Il est possible d’inverser le sens de chaque axe à l’aide de clé dans le fichier configuration.h. Ouvrez le firmware SkyNet ou Marlin (c’est exactement la même chose) sur l’IDE Arduino puis ouvrez le fichier Configuration.h.

Trouvez la clé INVERT_X_DIR puis passer à true (ou false) selon le cas

// Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way.
#define INVERT_X_DIR false
#define INVERT_Y_DIR false
#define INVERT_Z_DIR true

Après avoir testé l’inversion de sens de l’axe X avec le 2 firmwares, j’ai du me résigner à penser que le pire était arrivé  😕

Panne de la carte mère

Et oui, la carte mère était défectueuse 🙁  J’ai donc commandé une nouvelle carte mère. Heureusement, j’ai pu trouver la version 1.5 qui est la plus récente sur Gearbest (environ 27€). On peut la repérer assez facilement sur les sites marchands avec la mention “upgrade” ou “Ramps1.4 Update Version”. La version 1.5 n’est pas fondamentalement différente de la version 1.0 comme nous l’avons vu

 

Voilà, j’espère que vous ne rencontrerez pas ce problème avec votre imprimante 3D. Heureusement que les pièces détachées sont très bon marché. Si vous avez rencontré des problèmes similaires, n’hésitez pas à utiliser les commentaires pour partager les solutions.

L’article Problème d’axe X inversé sur l’Anet A8, diagnostic et solutions. Devrait fonctionner avec Prusa i3 et A6 est apparu en premier sur Projets DIY - Domotique et objets connectés à faire soi-même.

Viewing all 610 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>