Il set di saldatura per albero di Natale 3D fai-da-te ha solo alcuni modelli preimpostati con il microcontrollore pre-flash.
In questo blog imparerai a programmare tu stesso il microcontrollore in modo che i singoli LED possano essere controllati per visualizzare i tuoi schemi sull'albero.
Il blog si riferisce esclusivamente a quello Kit di saldatura per albero di Natale 3D fai da te.
1 Processore di informazioni di base
Il processore utilizzato è un STC15W408 del produttore cinese STCmicro.
Questo si basa su un CISC 8051 (8 bit) (Ccomplesso Ioistruzione Impostare Carchitettura informatica). Questo è stato introdotto da Intel nel 1980. Per confronto viene considerato un ATmega328. Questo si basa su ARM RISC (Ristruito Ioistruzione Set Carchitettura informatica). La differenza concreta è il numero di operazioni aritmetiche che possono essere eseguite in un ciclo. I processori 8051 richiedono tipicamente più cicli di clock per un'operazione aritmetica, mentre la controparte ARM richiede solo un singolo clock per un'operazione. Tuttavia, l'STC15W408 è progettato in modo tale che non ci siano differenze significative nelle prestazioni tra i due processori.
Come già accennato in precedenza, l'STC15W408 è un processore a 8 bit, il che significa che un'unica operazione aritmetica è possibile solo con valori compresi tra 0 e 255. Questo sarebbe un problema per progetti complessi, poiché la velocità sarebbe drasticamente ridotta per numeri più alti. In questo caso dovrebbero essere utilizzati i moderni processori a 32 bit, come l'ESP32.
Forse ti starai chiedendo perché in questo kit viene utilizzato un processore a 8 bit come STC15W408. Questo perché qui vengono controllati solo i singoli pin IO e non sono necessari calcoli complessi.
Questo processore è quindi ideale per tale applicazione poiché è facile da programmare.
Piedinatura

Figura 1: Pinout del chip
Osservando la piedinatura del circuito, noterai che i pin IO sono etichettati da P0.X a P5.X. Questo perché il processore ha 5 registri IO da P0 a P5. Il numero dopo il numero di registro rappresenta il numero di bit nel registro.

Figura 2: Registro Pin P1 (estratto dalla scheda tecnica capitolo 4.7)
2 Collegamento del LED
Sulle schede sono presenti 37 LED con effetti RGB, ma non tutti i LED possono essere accesi singolarmente. Nell'immagine seguente, i gruppi collegati sono contrassegnati da numeri per facilitarne l'assegnazione.

Figura 3: vista laterale con LED numerati
Poiché la numerazione dei LED è la stessa su ciascun lato dell'albero, i quattro lati sono etichettati con lettere per poterli distinguere durante la mappatura dei pin.

Figura 4: vista dall'alto con pagine etichettate
La tabella seguente mostra tutti i pin IO con il nome del LED collegato. Gli IO mancanti da 1.0 a 1.5 non sono collegati ai 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 + sopra |
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 |
Ripristinare il circuito
Affinché il chip possa essere flashato, è necessario scollegarlo brevemente dall'alimentazione e quindi ricollegarlo. Pertanto, è necessario costruire un piccolo circuito a transistor per l'FT232, che è collegato a DTR Il pin può controllare l'alimentazione del chip.
Per costruire il programmatore avrai bisogno di:
Convertitore seriale FT232
Griglia forata min. 8x13 (ad esempio dal Assortimento di circuiti stampati)
Cavo (ad es. Assortimento di cavi in silicone)
Resistori 470Ω, 10kΩ, 100kΩ (ad es Assortimento di resistenze)
LED giallo (ad es. dal Gamma LED)
Transistor NPN BC547 (es. ->Amazzonia)
(facoltativo: Pogopin o Ponticello F2M per il collegamento ai pin UART dell'albero)

Figura 5: circuito del programmatore sulla breadboard
Costruisci il circuito come mostrato sopra. Si consiglia di non saldare la presa multipla destra direttamente sul PCB se non si utilizzano i Pogo Pin, poiché il programmatore non può essere collegato in questo modo. In alternativa si consiglia di collegare la presa multipla al circuito stampato tramite cavo.
Se il programmatore è configurato correttamente secondo lo schema elettrico, è possibile collegare il kit al kit tramite pin Pogo o pin strip. Per fare ciò, collegare la scheda ai quattro collegamenti sotto il chip come segue.
P31 (TX) = RX (FT232)
P30 (RX) = TX (FT232)
3V3 = VCC (FT232)
GND = transistor dell'emettitore
Assicurati che il ponticello FT232 sia impostato su 3V3, poiché un livello logico troppo alto potrebbe danneggiare il chip.
Software
L'STC15W408 non è compatibile con l'IDE Arduino. Il plugin PlatformIO per VS Code è una buona alternativa al solito IDE Arduino. Qui sono già incluse oltre 1000 schede diverse, compresi i chip STC.
Innanzitutto, installa l'IDE di Visual Studio Code. È possibile scaricare il file di installazione qui scaricare.
Dopo aver installato e aperto correttamente l'IDE, vai su Estensioni. Puoi aprirlo tramite la barra laterale sinistra (vedi contrassegno rosso nella figura) o utilizzando la scorciatoia da tastiera Ctrl+Maiusc+X.

Figura 6: menu Estensioni nella barra laterale sinistra
Cerca qui il plugin Platform IO e installalo.

Figura 7: Visualizzazione nella gestione delle estensioni
Successivamente, apri la home page di PlatformIO (barra laterale > Platform IO > Accesso rapido > PIO Home > Apri) e fai clic su "Nuovo progetto".

Figura 8: configurazione del progetto
In questa finestra ora puoi selezionare un nome per il progetto e la scheda. Qui devi fare come mostrato sopra STC15W408AS selezionare. Infine, conferma la configurazione del progetto tramite il file finire pulsante.
Dopo aver creato il progetto, non resta che aggiungere il codice. Per mantenere il file con il relativo codice il più chiaro possibile, viene utilizzato un file di intestazione esterno (.h) con tutte le dichiarazioni di registro richieste dal chip.
È possibile creare un file adatto al chip qui di Vincent Defert su GitHub.
Una volta scaricato il file, puoi inserirlo nella directory di VSCode src copia. Crea lì un nuovo file con il nome principale.c, che conterrà successivamente il programma da eseguire.
Codice di prova
Come primo test, tutti i LED dovrebbero essere accesi e poi spenti di nuovo dopo un certo ritardo.
Ora carica il seguente programma sul microcontrollore:
|
#include <stc15.h> //(1) |
In alternativa, il file è disponibile qui disponibile per il download.
Spiegazione:
(1) All'inizio è integrato il file di intestazione con le definizioni dei registri.
(2) Vengono quindi definite le macro per i due stati dei LED. Ciò migliora la chiarezza nella parte di routine. Normalmente, un IO nello stato HIGH accende un LED collegato. Questo perché l'anodo (+) del LED è solitamente collegato all'IO. Sul PCB del circuito stampato, tuttavia, il catodo (-) del LED è collegato all'IO, quindi è acceso solo in stato LOW.
Poiché un LED (diodo a emissione luminosa) è, come suggerisce il nome, un diodo, quando l'IO è in stato HIGH viene bloccato e quindi non si accende.
(3) Poiché nell'STC15W408 non sono integrati automaticamente metodi standard di Arduino come ad esempio delay(), qui viene implementata la funzione delay().
(4) Il completamento del ciclo di conteggio interno richiede circa un millisecondo. Questo ciclo viene quindi eseguito esattamente con il numero di millisecondi passati come parametro alla funzione. In questo modo può essere implementato un semplice ritardo, ma questo dipende dalla frequenza del clock del processore e può mostrare deviazioni anche con ritardi più lunghi.
(5) Con la seguente assegnazione dei registri, i pin IO sono impostati sulla modalità push-pull. Ciò consente il funzionamento con corrente elevata sul pin IO. Ulteriori informazioni sono disponibili nella scheda tecnica del chip ai capitoli 4.9.2 e 4.7.
(6) Qui i registri IO sono impostati sul valore HIGH in modo che tutti i LED siano inizialmente spenti.
(7) Nel loop, i pin IO/LED vengono accesi e spenti con una pausa di due secondi.
(8) Oltre a impostare un intero registro IO, nel registro è possibile impostare anche singoli bit; questi corrispondono ai singoli pin IO.
Il caricamento avviene semplicemente cliccando sulla freccia nella barra in basso.
Una volta completato con successo il caricamento, nel terminale dovrebbe apparire quanto segue:

Figura 9: Uscita nel terminale VS Code
Nota: quando si carica per la prima volta, questa è la prima cosa stcgal strumento installato automaticamente, necessario per eseguire il flashing del chip.
Conclusione
Dopo questo post sul blog, ora puoi programmare tu stesso l'STC15W408, che viene utilizzato nel kit dell'albero di Natale 3D, e visualizzare i tuoi modelli su di esso.
Sentiti libero di sperimentare gli innumerevoli modelli ora possibili con il kit.
Divertitevi a replicarlo :)
Per creare il blog sono state utilizzate le seguenti fonti pertinenti:
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
Se sei interessato, puoi leggerli per approfondire le basi. Interessanti anche i repository GitHub dei due progetti open source stcgal e stc-mcu-open-source.







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