Spisu treści:

Niezwykle łatwe do zaprogramowania!: 10 kroków
Niezwykle łatwe do zaprogramowania!: 10 kroków

Wideo: Niezwykle łatwe do zaprogramowania!: 10 kroków

Wideo: Niezwykle łatwe do zaprogramowania!: 10 kroków
Wideo: Od czego zacząć naukę programowania? 2024, Lipiec
Anonim
Image
Image
Niezwykle łatwe do zaprogramowania!
Niezwykle łatwe do zaprogramowania!

Dzisiaj opowiem o rdzeniu STM32, L476RG, który jest twarzą Ultra Low Power. Możesz to zobaczyć po lewej stronie obrazu. To urządzenie ma dwie żeńskie pin bary, po jednej z każdej strony, które są niczym innym jak złączami do nakładki arduino. To świetnie, nie?

Moim zdaniem STMicroelectronics zrobiło to w swoim zestawie rozwojowym, ponieważ wie, że profesjonaliści używają tego układu. Ta firma coraz bardziej zmierza w kierunku arduino. Dotyczy to również kilku innych profesjonalnych zestawów STMicroelectronics.

Wreszcie, jeśli chodzi o dzisiejszy projekt, oprócz L476RG użyjemy dwóch czujników DS18b20. Zrobimy więc prosty montaż za pomocą L476RG, zaimportujemy bibliotekę do środowiska MBED, stworzymy program w środowisku MBED i uzyskamy dane z L476RG przez USB / Serial.

Mówiłem już trochę o L476RG w tym filmie: ŁATWIEJSZY SPOSÓB PROGRAMOWANIA MIKROKONTROLERA, gdzie pokazuję, jak skonfigurować środowisko MBED, które jest dostępne online.

Niektóre osoby, które śledzą moje filmy, pytają mnie, czy STM32 zastępuje ESP32. Powiem jedno: nie zastąpi i nie mogło, bo to dwie zupełnie różne rzeczy.

Ten układ STM32 to mikrokontroler, a raczej; nie jest to „klaster rzeczy”, jak ESP32. Więc nazwa może wyglądać podobnie, ale są zupełnie inne. STM32 to mikrokontroler ogólnego przeznaczenia, taki jak na przykład PIC, Atmel.

Krok 1: Wykorzystane zasoby

Wykorzystane zasoby
Wykorzystane zasoby

1 rdzeń L476RG

2 czujniki DS18b20 (używamy popularnych na rynku modułów wodoodpornych)

1 rezystor 4k7

Minipłyta prototypowa

Zworki do połączenia

Krok 2: Montaż

montaż
montaż

Wstępnie wykonamy montaż za pomocą jednego z czujników temperatury.

Jego moc będzie wynosić 5V.

Rezystor 4k7 zostanie użyty do podciągania linii danych (1-Wire).

Odczytamy dane za pomocą pinu A0.

Krok 3: Nowy program w MBED

Nowy program w MBED
Nowy program w MBED
Nowy program w MBED
Nowy program w MBED
Nowy program w MBED
Nowy program w MBED

Po skonfigurowaniu konta w MBED i uzyskaniu do niego dostępu, utworzymy nowy program. Aby to zrobić, kliknij prawym przyciskiem myszy „Moje programy” i wybierz „Nowy program…”

Upewnij się, że „Platforma” jest zgodna z używaną płytą.

Teraz klikamy „Szablon”.

Stworzymy program na podstawie przykładu „Wyświetl komunikat na PC za pomocą UART”.

Wprowadź nazwę programu w "Nazwa programu".

Zaznacz opcję „Zaktualizuj ten program i biblioteki do najnowszej wersji”.

Zostanie utworzony nowy folder dla twojego programu, w tym domyślna biblioteka MBED i plik main.cpp.

Możesz go użyć do sprawdzenia, czy wszystko działa dobrze. Aby to zrobić, po prostu skompiluj go i skopiuj na platformę.

Korzystając z wybranego terminala szeregowego, możesz otrzymywać następujące komunikaty.

Krok 4: Importowanie biblioteki DS18b20

Importowanie biblioteki DS18b20
Importowanie biblioteki DS18b20

Ponieważ istnieje kilka wersji bibliotek dla Ds18b20, zaimportujemy je za pomocą adresu URL, aby Twój przykład używał tej samej biblioteki.

Krok 5: Nowy program w MBED

Nowy program w MBED
Nowy program w MBED
Nowy program w MBED
Nowy program w MBED

W polu „Source URL” wypełnij: https://os.mbed.com/users/Sissors/code/DS1820/ i kliknij import.

Twoja biblioteka DS1820 powinna pojawić się w folderze programu.

Krok 6: Kod źródłowy

Zawiera

Zaczęliśmy od włączenia niezbędnych bibliotek.

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

Definiujemy stałe, które będą reprezentować używane piny.

Zauważ, że DS18b20 jest czujnikiem z komunikacją 1-WIRE. Z tego powodu korzystamy z biblioteki, która obsłuży cały protokół komunikacji z urządzeniami. Obejmuje to identyfikację każdego urządzenia aż do poleceń odczytu.

#define PINO_DE_DADOS A0 //define o pino para leitura dos dados#define MAX_SENSORES 16 //define o maksymalnej liczbie czujników

Tworzymy wektor, który wskaże każde z 16 możliwych urządzeń podłączonych do linii danych.

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

Rozpoczynamy metodę main(), gdzie za pomocą metody „unassignedProbe()” zawartej w bibliotece DS1820 szukamy wszystkich dostępnych urządzeń w linii komunikacyjnej.

Wypełniamy wektor czujnika instancjami, które będą reprezentować każdy z dostępnych czujników.

Robimy to, dopóki nie zostanie znaleziony ostatni lub dopóki nie osiągniemy maksymalnie 16 czujników.

int main(){ int encontrados = 0; while(DS1820::unassignedProbe(PINO_DE_DADOS)) { //inicjacja czujnika [encontrados] = new DS1820(PINO_DE_DADOS); //cria uma instancia para o sensor encontrado encontrados++; if (encontrados == MAX_SENSORES) //verifica se atingiu o máximo de sensores break; }

Przesyłamy ilość czujników znalezionych na linii.

printf("Załącznik(i): %d \r\n\n", załączony);

Rozpoczynamy nieskończoną pętlę, żądając, aby wszystkie dostępne czujniki obliczały swoje temperatury, a następnie iterujemy przez wektor czujnika, wysyłając uzyskane odczyty.

printf("Załącznik(i): %d \r\n\n", załączony); while(1) { sensor[0]->convertTemperature(true, DS1820::all_devices); //solicita a leitura de temperatura para todos os dispositivos encontrados for (int i = 0; itemperature()); //… e retorna a temperatura printf("\r\n"); czekaj(1); }

Krok 7: Otrzymane dane

Odebrane dane
Odebrane dane

Używając pojedynczego czujnika otrzymujemy następujące wyjście szeregowe.

Krok 8: Dołącz więcej czujników

W tym więcej czujników
W tym więcej czujników
W tym więcej czujników
W tym więcej czujników

Aby przetestować kod, wprowadzamy kolejny czujnik w linię komunikacyjną, po prostu łącząc go równolegle z pierwszym czujnikiem.

Pamiętaj o wyłączeniu zespołu przed podłączeniem nowych czujników.

Po ponownym uruchomieniu asemblera otrzymaliśmy następujący wynik, bez żadnych zmian w kodzie źródłowym.

Krok 9: Wyświetl źródło

#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 maksymalna liczba czujników czujników DS1820*[MAX_SENSORES]; //cria um vetor com 16 pozycji dla czujników int main() { int encontrados = 0; while(DS1820::unassignedProbe(PINO_DE_DADOS)) { //inicjuj uruchomienie czujnika [encontrados] = new DS1820(PINO_DE_DADOS); //cria uma instancia para o sensor encontrado encontrados++; if (encontrados == MAX_SENSORES) //verifica se atingiu o máximo de sensores break; } printf("Załączone urządzenia: %d \r\n\n", podpisane); while(1) { sensor[0]->convertTemperature(true, DS1820::all_devices); //solicita a leitura de temperatura para todos os dispositivos encontrados for (int i = 0; itemperature()); //… e retorna a temperatura printf("\r\n"); czekaj(1); } }

Krok 10: Pliki

PDF

Inni

Zalecana: