İçindekiler:

Programlaması İnanılmaz Kolay!: 10 Adım
Programlaması İnanılmaz Kolay!: 10 Adım

Video: Programlaması İnanılmaz Kolay!: 10 Adım

Video: Programlaması İnanılmaz Kolay!: 10 Adım
Video: "Yazılım öğrenmenin tek yolu..." - George Hotz 2024, Temmuz
Anonim
Image
Image
Programlamak İnanılmaz Kolay!
Programlamak İnanılmaz Kolay!

Bugün sizlere Ultra Low Power'ın yüzü olan STM32 Core L476RG'den bahsedeceğim. Resmin solunda görebilirsiniz. Bu cihazın her iki tarafında birer tane olmak üzere iki dişi pin çubuğu vardır ve bunlar arduino blendajının konektörlerinden başka bir şey değildir. Bu harika, değil mi?

Bence STMicroelectronics bunu Geliştirme Kitinde yaptı çünkü profesyonellerin bu çipi kullandığını biliyor. Bu şirket giderek daha fazla arduinoya doğru gidiyor. Ve bu aynı zamanda diğer birçok profesyonel STMicroelectronics kitleri için de geçerlidir.

Son olarak bugün proje ile ilgili olarak L476RG'ye ek olarak iki adet DS18b20 sensörü kullanacağız. Yani L476RG kullanarak basit bir montaj yapacağız, bir kütüphaneyi MBED ortamına aktaracağız, MBED ortamında bir program oluşturacağız ve USB/Seri üzerinden L476RG'den veri alacağız.

Bu videoda zaten L476RG hakkında biraz konuştum: MİKRODENETLEYİCİ PROGRAMLAMANIN EN KOLAY YOLU, burada çevrimiçi olan MBED ortamının nasıl yapılandırılacağını gösteriyorum.

Videolarımı takip eden bazı kişiler bana STM32'nin ESP32'nin yerini alıp almadığını soruyor. Bir şey söylüyorum: onun yerini tutmaz ve alamaz, çünkü ikisi tamamen farklı şeylerdir.

Bu STM32 çipi bir mikrodenetleyicidir, daha doğrusu; ESP32'de olduğu gibi bir "şeyler kümesi" değildir. Yani isim benzer görünebilir, ancak tamamen farklıdırlar. STM32, örneğin bir PIC, bir Atmel gibi genel amaçlı bir mikro denetleyicidir.

Adım 1: Kullanılan Kaynaklar

Kullanılan Kaynaklar
Kullanılan Kaynaklar

1 Çekirdek L476RG

2 adet DS18b20 sensör (piyasadaki ortak su geçirmez modülleri kullanıyoruz)

1 4k7 direnç

Mini protokol

Bağlantı için jumperlar

2. Adım: Montaj

toplantı
toplantı

Montajı ilk olarak sıcaklık sensörlerinden birini kullanarak gerçekleştireceğiz.

Gücü 5V olacaktır.

Veri hattında (1-Wire) pull-up yapmak için 4k7 direnç kullanılacaktır.

A0 pinini kullanarak verileri okuyacağız.

Adım 3: MBED'de Yeni Program

MBED'de Yeni Program
MBED'de Yeni Program
MBED'de Yeni Program
MBED'de Yeni Program
MBED'de Yeni Program
MBED'de Yeni Program

Hesabınızı MBED'de kurduktan ve ona eriştiğinizde, yeni bir program oluşturacağız. Bunu yapmak için, "Programlarım" üzerine sağ tıklayın ve "Yeni Program …" seçeneğini seçin.

"Platform" un kullandığınız panoya uygun olduğunu onaylayın.

Şimdi "Şablon" a tıklıyoruz.

"UART kullanarak PC'de bir mesaj görüntüle" örneğine dayalı bir program oluşturacağız.

"Program Adı" alanına programın adını girin.

"Bu programı ve kitaplıkları en son revizyona güncelle" seçeneğini işaretleyin.

Varsayılan MBED kitaplığı ve main.cpp dosyası dahil, programınız için yeni bir klasör oluşturulacaktır.

Her şeyin iyi çalışıp çalışmadığını test etmek için kullanabilirsiniz. Bunu yapmak için, basitçe derleyin ve platforma kopyalayın.

Seçtiğiniz bir seri terminali kullanarak aşağıdaki mesajları alabilirsiniz.

Adım 4: DS18b20 Kitaplığını İçe Aktarma

DS18b20 Kitaplığını İçe Aktarma
DS18b20 Kitaplığını İçe Aktarma

Ds18b20 için birkaç kitaplık sürümü olduğundan, örneğinizin aynı kitaplığı kullanması için bir url kullanarak içe aktaracağız.

Adım 5: MBED'de Yeni Program

MBED'de Yeni Program
MBED'de Yeni Program
MBED'de Yeni Program
MBED'de Yeni Program

"Kaynak URL" alanına şu adresi girin: https://os.mbed.com/users/Sissors/code/DS1820/ ve içe aktar'ı tıklayın.

DS1820 kitaplığınız program klasörünüzde görünmelidir.

Adım 6: Kaynak Kodu

İçerir

Gerekli kütüphaneleri dahil ederek başladık.

#include "mbed.h" // MBED'yi dahil et

Kullanılan pinleri temsil edecek sabitleri tanımlarız.

DS18b20'nin 1 KABLOLU iletişimli bir sensör olduğunu unutmayın. Bu nedenle cihazlarla tüm iletişim protokolünü işleyecek kütüphaneyi kullanıyoruz. Bu, okuma komutlarına kadar her cihazı tanımlamayı içerir.

#define PINO_DE_DADOS A0 //pino para leitura dos dados#define MAX_SENSORES 16 //sensörlerin sayısını tanımla

Veri hattına bağlı olası 16 cihazın her birine işaret edecek bir vektör oluşturuyoruz.

DS1820* sensör[MAX_SENSORES]; // cria um vetor com 16 konumlu para os sensörleri

Ana () yöntemini başlatıyoruz, burada DS1820 kitaplığında bulunan "unassignedProbe ()" yöntemini kullanarak iletişim hattındaki tüm kullanılabilir cihazları arıyoruz.

Sensör vektörünü mevcut sensörlerin her birini temsil edecek örneklerle dolduruyoruz.

Bunu sonuncusu bulunana kadar veya maksimum 16 sensöre ulaşana kadar yapıyoruz.

int ana(){ int encontrados = 0; while(DS1820::unassignedProbe(PINO_DE_DADOS)) { //incia a procura por sensores sensor[encontrados] = new DS1820(PINO_DE_DADOS); //cria uma instancia para o sensor encontrado encontrados++; if (encontrados == MAX_SENSORES) // sensörlerin bozulmasının doğrulanması; }

Hatta bulunan sensör sayısını gönderiyoruz.

printf("Çeşitli anlaşma(lar): %d \r\n\n", anlaşmalar);

Mevcut tüm sensörlerin ilgili sıcaklıklarını hesaplamasını talep ederek sonsuz bir döngü başlatırız ve ardından elde edilen okumaları göndererek sensör vektörü boyunca yineleniriz.

printf("Çeşitli anlaşma(lar): %d \r\n\n", anlaşmalar); while(1) { sensor[0]->convertTemperature(true, DS1820::all_devices); //için (int i = 0; itemperature()); //… e bir sıcaklık geri dönüşü printf("\r\n"); bekle(1); }

7. Adım: Alınan Veriler

Veri alındı
Veri alındı

Tek bir sensör kullanarak aşağıdaki seri çıkışı elde ederiz.

8. Adım: Daha Fazla Sensör Dahil Etme

Daha Fazla Sensör Dahil Etme
Daha Fazla Sensör Dahil Etme
Daha Fazla Sensör Dahil Etme
Daha Fazla Sensör Dahil Etme

Kodu test etmek için, sadece ilk sensöre paralel olarak bağlayarak iletişim hattına başka bir sensör yerleştiriyoruz.

Yeni sensörleri bağlamadan önce tertibatı kapatmayı unutmayın.

Montajı yeniden başlatırken, kaynak kodunda herhangi bir değişiklik yapmadan aşağıdaki çıktıyı elde ettik.

9. Adım: Kaynağı Görüntüle

#include "mbed.h" // MBED'yi dahil et#"DS1820.h"yi dahil et // sensör DS1820'yi dahil et o Sensörler için en az sayı DS1820* sensörü[MAX_SENSORES]; //cria um vetor com 16 konumlar para os sensörler int ana() { int encontrados = 0; while(DS1820::unassignedProbe(PINO_DE_DADOS)) { //incia a procura por sensores sensor[encontrados] = new DS1820(PINO_DE_DADOS); //cria uma instancia para o sensor encontrado encontrados++; if (encontrados == MAX_SENSORES) // sensörlerin bozulmasının doğrulanması; } printf("Çeşitli anlaşma(lar): %d \r\n\n", anlaşmalar); while(1) { sensor[0]->convertTemperature(true, DS1820::all_devices); //için (int i = 0; itemperature()); //… e bir sıcaklık geri dönüşü printf("\r\n"); bekle(1); } }

Adım 10: Dosyalar

PDF

Diğerleri

Önerilen: