Le kit de soudure d'arbre de Noël 3D DIY ne comporte que quelques modèles prédéfinis avec le microcontrôleur pré-flashé.
Dans ce blog, vous apprendrez à programmer vous-même le microcontrôleur afin que les LED individuelles puissent être contrôlées pour afficher vos propres motifs sur l'arbre.
Le blog fait exclusivement référence à cela Kit de soudure de sapin de Noël DIY 3D.
1 Processeur d'informations de base
Le processeur utilisé est un STC15W408 du constructeur chinois STCmicro.
Ceci est basé sur un (8 bits) 8051 CISC (Ccomplexe Jeinstruction Ensemble Cinformatique). Celui-ci a été introduit par Intel en 1980. À titre de comparaison, un ATmega328 est considéré. Ceci est basé sur ARM RISC (R.instruit Jeinstruction Set Cinformatique). La différence concrète réside dans le nombre d’opérations arithmétiques pouvant être effectuées en un seul cycle. Les processeurs 8051 nécessitent généralement plusieurs cycles d'horloge pour une opération arithmétique, alors que leur homologue ARM ne nécessite qu'une seule horloge pour une opération. Cependant, le STC15W408 est conçu de telle manière qu'il n'y a pas de différence significative de performances entre les deux processeurs.
Comme déjà mentionné ci-dessus, le STC15W408 est un processeur 8 bits, ce qui signifie qu'une seule opération arithmétique n'est possible qu'avec des valeurs comprises entre 0 et 255. Cela poserait un problème pour les projets complexes, car la vitesse serait considérablement réduite pour des nombres plus élevés. Des processeurs 32 bits modernes devraient être utilisés ici, comme l'ESP32.
Vous vous demandez peut-être pourquoi un processeur 8 bits comme le STC15W408 est utilisé dans ce kit. En effet, seules les broches IO individuelles sont contrôlées ici et aucun calcul complexe n'est nécessaire.
Ce processeur est donc idéal pour une telle application car il est facile à programmer.
Brochage

Figure 1 : Brochage de la puce
En regardant le brochage du circuit, vous remarquerez que les broches IO sont étiquetées P0.X à P5.X. En effet, le processeur dispose de 5 registres IO P0 à P5. Le nombre après le numéro de registre représente le numéro de bit dans le registre.

Figure 2 : Registre des broches P1 (extrait de la fiche technique chapitre 4.7)
2 Connexion de la LED
Il y a 37 LED à effet RVB sur les cartes, mais chaque LED ne peut pas être allumée individuellement. Dans l'image ci-dessous, les groupes connectés sont marqués de numéros pour une affectation plus facile.

Figure 3 : Vue latérale avec LED numérotées
Cette numérotation des LED étant la même de chaque côté de l'arbre, les quatre côtés sont repérés par des lettres afin de pouvoir les distinguer lors du pin mapping.

Figure 4 : Vue de dessus avec pages étiquetées
Le tableau suivant montre toutes les broches IO avec le nom de la LED connectée. Les IO 1.0 à 1.5 manquants ne sont pas connectés aux LED.
|
1.6 |
A2 |
3.0 |
B1 |
|
1.7 |
A1 |
3.1 |
B2 |
|
2.0 |
D3 |
3.2 |
B3 |
|
2.1 |
D4 |
3.3 |
B4 |
|
2.2 |
D5 + ci-dessus |
3.4 |
B5 |
|
2.3 |
A5 |
3.5 |
C5 |
|
2.4 |
A4 |
3.6 |
C4 |
|
2.5 |
A3 |
3.7 |
C3 |
|
2.6 |
D2 |
5.4 |
C2 |
|
2.7 |
D1 |
5.5 |
C1 |
Circuit de réinitialisation
Pour que la puce soit flashée, elle doit être brièvement déconnectée de l'alimentation puis reconnectée. Par conséquent, un petit circuit à transistors doit être construit pour le FT232, qui est connecté au DTR La broche peut contrôler l'alimentation de la puce.
Pour construire le programmeur, vous aurez besoin de :
Convertisseur série FT232
Panneau quadrillé à trous min. 8x13 (par exemple du Assortiment de circuits imprimés)
Câble (par ex. Assortiment de câbles en silicone)
Résistances 470Ω, 10kΩ, 100kΩ (par exemple du Assortiment de résistances)
LED jaune (par ex. du Gamme LED)
Transistor NPN BC547 (par ex. ->Amazone)
(facultatif : Pogopins ou Cavalier F2M pour la connexion aux pins UART de l'arbre)

Figure 5 : Circuit du programmeur sur la planche à pain
Construisez le circuit comme indiqué ci-dessus. Il est recommandé de ne pas souder la barrette de prise droite directement sur le PCB si vous n'utilisez pas de broches pogo, car le programmateur ne peut pas être branché de cette manière. Alternativement, nous vous recommandons de connecter le bloc multiprise au PCB via un câble.
Si le programmateur est correctement configuré selon le schéma de circuit, vous pouvez connecter le kit au kit via des broches pogo ou une barrette de broches. Pour ce faire, connectez le circuit imprimé aux quatre connexions sous la puce comme suit.
P31 (TX) = Réception (FT232)
P30 (RX) = ÉMISSION (FT232)
3V3 = VCC (FT232)
GND = transistor émetteur
Assurez-vous que le cavalier FT232 est réglé sur 3V3, car un niveau logique trop élevé pourrait endommager la puce.
Logiciel
Le STC15W408 n'est pas compatible dans l'IDE Arduino. Le plugin PlatformIO pour VS Code est une bonne alternative à l'IDE Arduino habituel. Plus de 1000 cartes différentes sont déjà incluses ici, y compris les puces STC.
Tout d’abord, installez l’IDE Visual Studio Code. Vous pouvez télécharger le fichier d'installation ici télécharger.
Une fois l’EDI installé et ouvert avec succès, accédez à Extensions. Vous pouvez l'ouvrir soit via la barre latérale gauche (voir le marquage rouge sur la figure), soit en utilisant le raccourci clavier Ctrl+Shift+X.

Figure 6 : Menu Extensions dans la barre latérale gauche
Recherchez le plugin Platform IO ici et installez-le.

Figure 7 : Vue dans la gestion des extensions
Ensuite, ouvrez la page d'accueil de PlatformIO (Barre latérale > Platform IO > Accès rapide > Accueil PIO > Ouvrir) et cliquez sur « Nouveau projet ».

Figure 8 : Configuration du projet
Dans cette fenêtre, vous pouvez maintenant sélectionner un nom pour le projet et le tableau. Ici, vous devez faire comme indiqué ci-dessus STC15W408AS sélectionner. Enfin, confirmez la configuration du projet via le terminer bouton.
Après avoir créé le projet, il ne reste plus qu'à ajouter le code. Afin de garder le fichier avec le code correspondant aussi clair que possible, un fichier d'en-tête externe (.h) avec toutes les déclarations de registre requises par la puce est utilisé.
Vous pouvez créer un fichier adapté à la puce ici par Vincent Defert sur GitHub.
Une fois le fichier téléchargé, vous pouvez le placer dans le répertoire dans VSCode src copie. Créez-y un nouveau fichier avec le nom main.c, qui contiendra plus tard le programme à exécuter.
Code d'essai
Lors d'un premier test, toutes les LED doivent être allumées puis éteintes après un certain temps.
Chargez maintenant le programme suivant sur le microcontrôleur :
|
#include <stc15.h> //(1) |
Alternativement, le fichier est disponible ici disponible en téléchargement.
Explication :
(1) Au début, le fichier d'en-tête avec les définitions de registre est intégré.
(2) Des macros sont ensuite définies pour les deux états de LED. Cela améliore la clarté dans la partie de routine. Normalement, une IO à l'état HIGH allume une LED connectée. En effet, l'anode (+) de la LED est généralement connectée à l'IO. Cependant, sur le PCB du circuit imprimé, la cathode (-) de la LED est connectée à l'IO, elle n'est donc allumée qu'à l'état LOW.
Etant donné qu'une LED (diode électroluminescente) est, comme son nom l'indique, une diode, elle est bloquée lorsque l'IO est dans un état HIGH et ne s'allume donc pas.
(3) Puisqu'aucune méthode standard Arduino telle que delay() n'est automatiquement intégrée au STC15W408, la fonction delay() est implémentée ici.
(4) La boucle de comptage interne prend environ une milliseconde. Cette boucle est ensuite exécutée avec exactement le nombre de millisecondes qui ont été passées en paramètre à la fonction. Un simple retard peut être implémenté de cette manière, mais cela dépend de la fréquence d'horloge du processeur et peut également montrer des écarts avec des retards plus longs.
(5) Avec l'affectation de registre suivante, les broches IO sont réglées en mode push-pull. Cela permet un fonctionnement avec un courant élevé sur la broche IO. De plus amples informations peuvent être trouvées dans la fiche technique de la puce aux chapitres 4.9.2 et 4.7.
(6) Ici, les registres IO sont réglés sur la valeur HIGH afin que toutes les LED soient éteintes au début.
(7) Dans la boucle, les broches/LED IO sont allumées et éteintes avec une pause de deux secondes.
(8) En plus de définir un registre IO entier, des bits individuels peuvent également être définis dans le registre ; ceux-ci correspondent aux broches IO individuelles.
Le téléchargement se fait simplement en cliquant sur la flèche dans la barre du bas.
Une fois le téléchargement réussi, les éléments suivants devraient apparaître dans le terminal :

Figure 9 : Sortie dans le terminal VS Code
Remarque : lors du premier téléchargement, c'est la première chose à faire stcgal outil installé automatiquement, ce qui est nécessaire pour flasher la puce.
Conclusion
Après cet article de blog, vous pouvez désormais programmer vous-même le STC15W408, utilisé dans le kit Sapin de Noël 3D, et y afficher vos propres motifs.
N'hésitez pas à expérimenter les innombrables motifs désormais possibles avec le kit.
Amusez-vous à le reproduire :)
Les sources pertinentes suivantes ont été utilisées pour créer le blog :
https://www.stcmicro.com/datasheet/STC15F2K60S2-en.pdf
https://de.wikipedia.org/wiki/Intel_MCS-51
https://de.wikipedia.org/wiki/Reduced_Instruction_Set_Computer
https://de.wikipedia.org/wiki/Complex_Instruction_Set_Computer
Si vous êtes intéressé, vous pouvez les lire pour approfondir les bases. Les dépôts GitHub des deux projets open source stcgal et stc-mcu-open-source sont également intéressants.







1 commentaire
Peter
The Description is wrong! The ATmega328 is NOT based on the ARM Architecture! It has its own proprietary CPU Architecture named AVR! However it is also an RISC architecture as arm but that is the only common part.