Sommario:

Incredibilmente facile da programmare!: 10 passaggi
Incredibilmente facile da programmare!: 10 passaggi

Video: Incredibilmente facile da programmare!: 10 passaggi

Video: Incredibilmente facile da programmare!: 10 passaggi
Video: JAVA in 10 MINUTI. 2024, Dicembre
Anonim
Image
Image
Incredibilmente facile da programmare!
Incredibilmente facile da programmare!

Oggi parlerò dell'STM32 Core, l'L476RG, che è il volto dell'Ultra Low Power. Lo puoi vedere a sinistra dell'immagine. Questo dispositivo ha due pin bar femmina, uno su ciascun lato, che non sono altro che i connettori per lo shield arduino. Questo è fantastico, no?

A mio parere, STMicroelectronics ha fatto questo nel suo kit di sviluppo perché sa che i professionisti usano questo chip. Questa azienda sta andando sempre più verso l'arduino. E questo vale anche per molti altri kit professionali STMicroelectronics.

Infine, per quanto riguarda il progetto di oggi, utilizzeremo due sensori DS18b20 oltre all'L476RG. Quindi realizzeremo un semplice assemblaggio utilizzando l'L476RG, importeremo una libreria nell'ambiente MBED, creeremo un programma nell'ambiente MBED e otterremo dati dall'L476RG tramite USB / seriale.

Ho già parlato un po' dell'L476RG in questo video: IL MODO PI FACILE PER PROGRAMMARE UN MICROCONTROLLORE, dove mostro come configurare l'ambiente MBED, che è online.

Alcune persone che seguono i miei video mi chiedono se STM32 sostituisce ESP32. Dico una cosa: non sostituisce e non potrebbe, perché sono due cose completamente diverse.

Questo chip STM32 è un microcontrollore, o meglio; non è un "cluster of things" come ESP32. Quindi il nome potrebbe sembrare simile, ma sono completamente diversi. L'STM32 è un microcontrollore generico, come un PIC, un Atmel, per esempio.

Passaggio 1: risorse utilizzate

Risorse utilizzate
Risorse utilizzate

1 nucleo L476RG

2 sensori DS18b20 (usiamo i comuni moduli waterproof in commercio)

1 resistore 4k7

Minischeda prototipi

Ponticelli per il collegamento

Passaggio 2: assemblaggio

Assemblea
Assemblea

Inizialmente effettueremo il montaggio utilizzando uno dei sensori di temperatura.

La sua potenza sarà di 5V.

Un resistore da 4k7 verrà utilizzato per eseguire un pull-up sulla linea dati (1-Wire).

Leggeremo i dati utilizzando il pin A0.

Passaggio 3: nuovo programma in MBED

Nuovo programma in MBED
Nuovo programma in MBED
Nuovo programma in MBED
Nuovo programma in MBED
Nuovo programma in MBED
Nuovo programma in MBED

Dopo aver configurato il tuo account in MBED e avervi effettuato l'accesso, creeremo un nuovo programma. Per fare ciò, fai clic con il pulsante destro del mouse su "I miei programmi" e seleziona "Nuovo programma…"

Conferma che la "Piattaforma" è conforme alla scheda che stai utilizzando.

Clicchiamo ora su "Modello".

Creeremo un programma basato sull'esempio "Visualizza un messaggio su PC utilizzando UART".

Immettere il nome del programma in "Nome programma".

Seleziona l'opzione "Aggiorna questo programma e le librerie all'ultima revisione".

Verrà creata una nuova cartella per il tuo programma, inclusa la libreria MBED predefinita e il file main.cpp.

Puoi usarlo per verificare se tutto funziona bene. Per farlo è sufficiente compilarlo e copiarlo sulla piattaforma.

Utilizzando un terminale seriale a tua scelta, puoi ricevere i seguenti messaggi.

Passaggio 4: importazione della libreria DS18b20

Importazione della libreria DS18b20
Importazione della libreria DS18b20

Poiché esistono diverse versioni di librerie per Ds18b20, importeremo utilizzando un URL in modo che il tuo esempio utilizzi la stessa libreria.

Passaggio 5: nuovo programma in MBED

Nuovo programma in MBED
Nuovo programma in MBED
Nuovo programma in MBED
Nuovo programma in MBED

Nel campo "URL di origine" compilare: https://os.mbed.com/users/Sissors/code/DS1820/ e fare clic su importa.

La tua libreria DS1820 dovrebbe apparire nella cartella del tuo programma.

Passaggio 6: codice sorgente

Include

Abbiamo iniziato includendo le librerie necessarie.

#include "mbed.h" //inclusão da biblioteca padrão do MBED#include "DS1820.h" //inclusão da biblioteca do sensor DS1820

Definiamo le costanti che rappresenteranno i pin utilizzati.

Si noti che il DS18b20 è un sensore con comunicazione 1-WIRE. Per questo utilizziamo la libreria che gestirà l'intero protocollo di comunicazione con i dispositivi. Ciò include l'identificazione di ogni dispositivo fino ai comandi di lettura.

#define PINO_DE_DADOS A0 //define o pino para leitura dos dados#define MAX_SENSORES 16 //define o número máximo para o vetor de sensori

Creiamo un vettore che punterà a ciascuno dei 16 possibili dispositivi collegati alla linea dati.

Sensore DS1820*[MAX_SENSORES]; //cria um vetor com 16 posições para os sensors

Avviamo il metodo main(), dove, utilizzando il metodo "unassignedProbe()" contenuto nella libreria DS1820, cerchiamo tutti i dispositivi disponibili nella linea di comunicazione.

Riempiamo il vettore del sensore con le istanze che rappresenteranno ciascuno dei sensori disponibili.

Lo facciamo fino a quando non viene trovato l'ultimo o fino a raggiungere il massimo di 16 sensori.

int main(){ int encontrados = 0; while(DS1820::unassignedProbe(PINO_DE_DADOS)) { //inizia a procurarti dei sensori di sensori[incontrados] = new DS1820(PINO_DE_DADOS); //cria uma instancia para o sensor encontrado encontrados++; if (encontrados == MAX_SENSORES) //verifica se atinggiu o máximo de sensoris break; }

Inviamo il numero di sensori trovati sulla linea.

printf("Dispositivi in contrasto: %d \r\n\n", in contrasto);

Avviamo un ciclo infinito, richiedendo che tutti i sensori disponibili calcolino le rispettive temperature, quindi iteriamo attraverso il vettore del sensore inviando le letture ottenute.

printf("Dispositivi in contrasto: %d \r\n\n", in contrasto); while(1) {sensore[0]->convertTemperature(true, DS1820::all_devices); //sollecita una temperatura di temperatura per tutti i dispositivi collegati per (int i = 0; itemperature()); //… e ritorno a temperatura printf("\r\n"); aspettare (1); }

Passaggio 7: dati ricevuti

Dati ricevuti
Dati ricevuti

Utilizzando un solo sensore, otteniamo la seguente uscita seriale.

Passaggio 8: inclusione di più sensori

Compresi più sensori
Compresi più sensori
Compresi più sensori
Compresi più sensori

Per testare il codice, introduciamo un altro sensore nella linea di comunicazione, semplicemente collegandolo in parallelo al primo sensore.

Ricordarsi di spegnere il gruppo prima di collegare nuovi sensori.

Al riavvio dell'assembly, abbiamo ottenuto il seguente output, senza alcuna modifica al codice sorgente.

Passaggio 9: visualizza la sorgente

#include "mbed.h" //inclusão da biblioteca padrão do MBED#include "DS1820.h" //inclusão da biblioteca do sensor DS1820 #define PINO_DE_DADOS A0 //define o pino para leitura dos dados #define MAX_SENSORES 16 //define o numero massimo per il vettore dei sensori DS1820* sensor[MAX_SENSORES]; //cria um vetor com 16 posições para os sensors int main() { int encontrados = 0; while(DS1820::unassignedProbe(PINO_DE_DADOS)) { //inizia a procurarti dei sensori sensor[encontrados] = new DS1820(PINO_DE_DADOS); //cria uma instancia para o sensor encontrado encontrados++; if (encontrados == MAX_SENSORES) //verifica se atinggiu o máximo de sensoris break; } printf("Dispositivi in contrasto(s): %d \r\n\n", incontri); while(1) {sensore[0]->convertTemperature(true, DS1820::all_devices); //sollecita una temperatura di temperatura per tutti i dispositivi collegati per (int i = 0; itemperature()); //… e ritorno a temperatura printf("\r\n"); aspettare (1); } }

Passaggio 10: file

PDF

Altri

Consigliato: