Shoutbox

Pro přidání zprávy se musíte přihlásit.

23-02-2019 16:38
Už jsem ho našel Úsměv Ten zelený zákal je sviňa.

23-02-2019 15:58
Byl tady článek -video o Visual Studio Code. Jsem slepý a nemohu jej najít Smutný Je někde?

23-01-2019 12:33
Pokus o Teslovu cievku na PCB https://www.youtu.
..2SEBqSLDsI
Zatial ziadne vrazdiace iskry. Inak ako vzdy, nemam sajnu ako to fuguje Úsměv

14-01-2019 15:53
To Petus: diky. Po zaregistrovani obdrzite e-mailovou adresu nick@chipned.cz, v menu Prihlaseni je pristupna moznost predavat soukrome zpravy (zapnout upozorneni).

11-01-2019 10:28
mohu psát

10-01-2019 21:41
Tak to udelame jinak. Kdo tu chce mit ucet, napise mi na chiptron@chipned.c
z svou prezdivku. Ja mu vygeneruju heslo, ktere si zmeni a psat sem budou moci jen registrovani.

Sdílejte nás



RSS feeds

STM32duino IV. - Čteme teplotu a vlhkost z Si7021 (I2C sběrnice)Tisk

Ve čtvrtém díle našeho seriálu o STM32duino se konečně podíváme na slibovanou I2C sběrnici.
Ukážeme si výchozí I2C sběrnici a také připojení SDA,SCL na jiné GPIO.

Všechny díly seriálu o STM32duino:
STM32duino I. - Jak začít s STM32 jako Arduino
STM32duino II. - Ovládáme GPIO
STM32duino III. - Komunikujeme pomocí Serial (USART)
STM32duino IV. - Čteme teplotu a vlhkost z Si7021 (I2C sběrnice)


Mikrokontroléry STM32 mohou obsahovat více I2C sběrnic.
Velmi důležitým dokumentem bude opět tento soubor popisující zapojení Nucleo vývojových desek.
http://www.st.com/content/ccc/resource/technical/document/user_manual/98/2e/fa/4b/e0/82/43/b7/DM00105823.pdf/files/DM00105823.pdf/jcr:content/translations/en.DM00105823.pdf

Knihovna pro ovládání čidla Si7021 je tato:
https://github.com/LowPowerLab/SI7021

Zapojení I2C pro vaší Nucleo vývojovou desku s STM32 najdete níže.
Je to výřez ze soubotu PeripheralPins.cpp.



Základní zapojení je následující. SDA je připojeno na PB9 (D14), SCL na PB8 (D15). Alternativní zapojení je pak SCL-PB6 (D10) a SDA-PB7.



I2C1 sběrnice na výchozích pinech:
Celý kód naleznete zde.
#include
#include

SI7021 sensor;

// the setup function runs once when you press reset or power the board
void setup()
{
sensor.begin(); // initialization of Si7021 sensor
Serial.begin(9600); // initialization of Serial (STLink), 9600 Bd

// wait for serial
while (!Serial) {
delay(100);
}

Serial.println("Test of Si7021");

if (!sensor.begin())
{
Serial.println("Si7021 sensor wasn't found");
while (true);
}
}


// the loop function runs over and over again forever
void loop()
{
// send data through onboard USB-UART converter (STLink)
Serial.print("Temperature: ");
Serial.print(String(sensor.getCelsiusHundredths()/100.0, 2*/)); // 2450 = 24.50 °C
Serial.println(" °C");

Serial.print("Humidity: ");
Serial.print(sensor.getHumidityPercent());
Serial.println(" %");
delay(1000);
}


I2C1 sběrnice na alternativních pinech:
Celý kód naleznete zde.
Důležitou změnou jsou funkce Wire.setSCL(PB6) a Wire.setSDA(PB7) definující změnu zapojení.

#include
#include

SI7021 sensor;

// the setup function runs once when you press reset or power the board
void setup()
{
Wire.setSCL(PB6); // alternative pinout of I2C1_SCL - PB6 (Morpho con) instead of PB8 (D15)
Wire.setSDA(PB7); // alternative pinout of I2C1_SDA - PB7 (D10) instead of PB9 (D14)

sensor.begin(); // initialization of Si7021 sensor
Serial.begin(9600); // initialization of Serial (STLink), 9600 Bd

// wait for serial
while (!Serial)
{
delay(100);
}

Serial.println("Test of Si7021 and STM32duino");

if (!sensor.begin())
{
Serial.println("Si7021 sensor wasn't found");
while (true);
}
}


// the loop function runs over and over again forever
void loop()
{
// send data through onboard USB-UART converter (STLink)
Serial.print("Temperature: ");
Serial.print(String(sensor.getCelsiusHundredths()/100.0, 2)); // 2450 = 24.50 °C
Serial.println(" °C");

Serial.print("Humidity: ");
Serial.print(sensor.getHumidityPercent());
Serial.println(" %");
delay(1000);
}




I2C2 sběrnice a výchozích pinech
Celý kód naleznete zde.

Stejně jako při použití alternativního zapojení I2C1 sběrnice, důležité jsou funkce setSDA a setSCL.
Správnou volbou GPIO se automaticky nastaví jiná I2C sběrnice.
V tomto případě SCL-PB10 (D6) a SDA-PB3 (D3). Automaticky se tedy vybere I2C2 jako hlavní I2C sběrnice.

#include
#include

SI7021 sensor;

// the setup function runs once when you press reset or power the board
void setup()
{
Wire.setSCL(PB_6); // alternative pinout of I2C1_SCL - PB6 (Morpho con) instead of PB8 (D15)
Wire.setSDA(PB_7); // alternative pinout of I2C1_SDA - PB7 (D10) instead of PB9 (D14)

sensor.begin(); // initialization of Si7021 sensor
Serial.begin(9600); // initialization of Serial (STLink), 9600 Bd

// wait for serial
while (!Serial)
{
delay(100);
}

Serial.println("Test of Si7021 and STM32duino");

if (!sensor.begin())
{
Serial.println("Si7021 sensor wasn't found");
while (true);
}
}


// the loop function runs over and over again forever
void loop()
{
// send data through onboard USB-UART converter (STLink)
Serial.print("Temperature: ");
Serial.print(String(sensor.getCelsiusHundredths()/100.0, 2)); // 2450 = 24.50 °C
Serial.println(" °C");

Serial.print("Humidity: ");
Serial.print(sensor.getHumidityPercent());
Serial.println(" %");
delay(1000);
}


Pro I2C sběrnice číslo 3 pak platí podobné jako u předchozích příkladech.



A to je v tomto díle o STM32duino vše. Pokud se vám díl líbil, budu rád, když jej budete sdílet s hastagem #STM32duino.
Zatím nikdo nekomentoval. Buďte první kdo vloží svůj komentář.

Přidat komentář

Pro přidání komentáře musíte být přihlášený.

Upozornění

Administrátor těchto stránek ani autor článků neručí za správnost a funkčnost zde uvedených materiálů.
Administrátor těchto stránek se zříká jakékoli odpovědnosti za případné ublížení na zdraví či poškození nebo zničení majetku v důsledku elektrického proudu, chybnosti schémat nebo i teoretické výuky. Je zakázané používat zařízení, která jsou v rozporu s právními předpisy ČR či EU.
Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva.
Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ.