Se rendre au contenu

Contrôler un Sprite 4K avec un Arduino

Matériel


Produits
  • Sprite 4K
  • Arduino Uno
  • Carte micro SD
  • Écran
  • Câble HDMI
  • Câble 3x0.34mm²
Accessoires
  • Câble USB-B
  • Alimentation pour Arduino
Outillage
  • Pince coupante
  • Pince à dénuder
  • Kit cosses et pince à sertir

Branchements


Câbler la prise I/O sur l'Arduino comme suit : 


Borne de la prise I/O

Description

Pin Arduino

1 : L

Alimentation 5V

non connecté.

2 : R

Sprite RX

3 (SoftwareSerial TX)

3 : 

Sprite TX

2 (SoftwareSerial RX)

4 : ⏚

Masse 0V

GND

Configuration du Sprite


  • Ouvrir le menu (bouton Setup de la télécommande)
  • Configurer
    • Play Mode : Video Control Mode
    • Control Mode : Serial Control
    • Baud Rate : 9600
    • Address : Do not use Address
    • Serial Feedback : Full Reporting (optionnel)
  • Mettre sur la carte micro SD au moins 2 fichiers vidéos nommés 000.mp4 et 001.mp4 (ou autre extension vidéo)
  • Mettre la carte micro SD dans le Sprite

Code


Utilise la librairie Proyectil MedeaWiz de Misael Reyes

  • Installer la bibliothèque Proyectil MedeaWiz depuis le Library Manager de l'IDE Arduino
  • Uploader le code ci-dessous
  • Ouvrir le moniteur sériel
  • Configurer le moniteur sériel : No Line Ending et 115200 baud

Le code suivant, inspiré du code d'exemple Sprite_Serial_Control_Tets.ino de la bibliothèque Proyectil MedeaWiz, permet de tester les fonctions de base du Sprite en saisissant des caractères dans le moniteur sériel de l'IDE. L'Arduino se comporte donc comme une télécommande.

/*
  Sprite Serial Control Test Program
  Romain Corthésy
  2026-01-29

  Based on : https://github.com/misa3L994/Sprite_Serial_Control/blob/main/examples/Sprite_Serial_Control_Tets/Sprite_Serial_Control_Tets.ino
  Programa de prueba para la cabecera medeaWize.h
  Misael Reyes
  25/ENE/2023
*/

#include "medeaWiz.h"
#include <SoftwareSerial.h>

byte answerVal;
Sprite sprite = Sprite();
SoftwareSerial Serial1(2, 3); // RX, TX
char c;

void setup()
{
    Serial.begin(115200); // Serial debug
    Serial1.begin(9600);  // Serial to Sprite
    sprite.begin(Serial1);
    menu('?'); // print the menu options.
}

void loop()
{
    answerVal = sprite.answerSprite();
    if (answerVal != 0)
    {
        Serial.print("Response : 0x");
        Serial.print(answerVal, HEX);
        if (answerVal == 0xEE)
        {
            Serial.print(" (end of file)");
        }
        Serial.println("");
    }
    if (Serial.available())
    {
        c = Serial.read();
        menu(c);
    }
}


void menu(char op)
{
    // Menu
    switch (op)
    {
    case '?':
    case 'h':
        Serial.println("Serial Control Sprite Basic Commands:");
        Serial.println(" ? Display Menu options. ");
        Serial.println(" L Play file 000 in loop");
        Serial.println(" F Play file 000, full volume ");
        Serial.println(" 1 Play 001 file");
        Serial.println(" p Play");
        Serial.println(" a pause");
        Serial.println(" > Next");
        Serial.println(" < Previous");
        Serial.println(" + Volume UP");
        Serial.println(" - Volume DOWN");
        Serial.println(" c Query total file count");
        Serial.println("");
        break;
        
    case '1':
        Serial.println("Play 001");
        sprite.play(0x01);
        break;
        
    case 'L':
        Serial.println("Play loop");
        sprite.playLoop(0x00);
        break;
        
    case 'F':
        Serial.println("Play file at full volume");
        sprite.setFullVolume();
        sprite.play(0x00);
        break;
        
    case 'p':
        Serial.println("Play");
        sprite.play();
        break;
        
    case 'a':
        Serial.println("Pause");
        sprite.pause();
        break;
        
    case '>':
        Serial.println("Next");
        sprite.playNext();
        break;
        
    case '<':
        Serial.println("Previous");
        sprite.playPrevious();
        break;
        
    case '+':
        Serial.println("Volume UP");
        sprite.volUp();
        break;
        
    case '-':
        Serial.println("Volume Down");
        sprite.volDown();
        break;
        
    case 'c':
        Serial.println("Query total file count");
        sprite.qTFiles();
        break;
    }
}



Aller plus loin


La bibliothèque Proyectil MedeaWiz contient également – en plus des fonctions "standards" comme play()pause() ou mute() – une fonction sendCmd() qui permet d'envoyer les commandes définies à la page 35 du Manuel de l'utilisateur du Sprite 4K : MedeaWiz® Sprite® 4K.pdf [en].

Ces commandes donnent un contrôle plus poussé du Sprite sans augmenter sensiblement la complexité du code. Il suffit d'appeler la fonction sendCmd() avec en paramètre la valeur hexadécimale de la commande.

/*
  Sprite Serial Control Test Program with sendCmd()
  Romain Corthésy
  2026-02-03
*/

#include "medeaWiz.h"
#include <SoftwareSerial.h>

Sprite sprite = Sprite();
SoftwareSerial Serial1(2, 3); // RX, TX

void setup()
{
    Serial1.begin(9600);  // Serial to Sprite
    sprite.begin(Serial1);
}

void loop()
{
    sprite.sendCmd(0x02);   // Play file 002.mp4
    delay(5000);
    sprite.sendCmd(0xFC, 0x02);   // Make 002.mp4 the new looping file
    delay(5000);
    sprite.sendCmd(0x05);   // Play file 005.mp4
    delay(5000);
}




Contrôler un Sprite 4K avec un Arduino
Romain Corthésy 6 février 2026
AUTres articles
Quel lecteur vidéo choisir  ?
Ce que nous avons testé... et bien testé!