Hardware | Pojďme programovat elektroniku | Programování

Pojďme programovat elektroniku: Vyzkoušíme ultrazvukový dálkoměr, detektor pohybu, deště a další kouzla

  • Vyzkoušíme si senzory na pokročilých sběrnicích
  • Budeme ultrazvukem měřit vzdálenost
  • Detekujeme déšť i pohyb
Pojďme programovat elektroniku: Vyzkoušíme ultrazvukový dálkoměr, detektor pohybu, deště a další kouzla

Další kapitola, další cesta do minulosti. Inženýři z Philips Semiconductor v roce 1982 navrhli sběrnici I²C, která dokázala propojit počítač s hromadou zařízení podobně jako 1-Wire s předchozí kapitoly. I²C je už ale mnohem pokročilejší a rychlejší rozhraní, potřebuje tedy dva signální vodiče: datový SDA a synchronizační SCL. Senzor, který komunikuje skrze I²C, má proto typicky čtyři vývody: napětí (VIN), zem (GND), SDA a SCL.

Pokud na signální piny SDA a SCL napojíte v sérii hromadu senzorů a dalších zařízení, které komunikují na této sběrnici, musí je mikropočítač nějak identifikovat. K tomu slouží 7bitová adresa (číslo 0 až 127). Když chce tedy mikropočítač komunikovat jen s jedním zařízením, pošle sice signál skrze sběrnici I²C do všech připojených zařízení, ale odpoví mu pouze to se správnou adresou.

Mikropočítače mají na desce buď dedikované piny SDA a SCL, anebo pro ně slouží některé z A/D pinů. Na Arduino Uno to je A4 (SDA) a A5 (SCL) a pro práci s touto sběrnicí se používá knihovna Wire.

Maličký tlakoměr, vlhkoměr a teploměr v jednom

Jestli se naprostý začátečník nevyzná ve sběrnici 1-Wire, pak bude I²C ještě mnohem větší oříšek a to i při použití knihovny Wire. Naštěstí i zde mají často konkrétní zařízení vlastní knihovnu a platí to i o barometru BME280, který seženete na eBay aspol. v mnoha laciných kopiích za cenu okolo stokoruny.

Klepněte pro větší obrázek Klepněte pro větší obrázek
Miniaturní digitální senzor BME280 v různých podobách

Senzor obsahuje barometr a pomocné teplotní a vlhkostní čidlo, které vnitřní čip používá k výpočetním korekcím. Suma sumárum tedy tento malý integrovaný obvod o velikosti micro SD spočítá atmosférický tlak, relativní vlhkost vzduchu, teplotu vzduchu a ještě nadmořskou výšku.

Na internetu se potuluje hned několik populárních knihoven pro různé varianty meteočipu. Ty laciné za stovku z eBaye a s rozhraním I²C budou fungovat třeba s touto od cactus.io (v případě komplikací je třeba vygooglit jinou).

Kód je díky použití obou knihoven opět naprosto jednoduchý. Na začátku programu jsem musel stanovit adresu barometrického čidla. Zpravidla se jedná o hodnotu 0x76 nebo 0x77, nicméně si s využitím knihovny Wire si můžete napsat i tento jednoduchý vyhledávač, který projde jednu možnou adresu za druhou a vypíše ty, na kterých ve vašem případě odpovídá nějaké zařízení.

Klepněte pro větší obrázek Klepněte pro větší obrázek
Připojení barometru pomocí I2C na desce Arduino Uno, kde lze pro spoje SDA a SCL použít piny A5 a A4. Když se však dobře podíváte, uvidíte, že má deska i vlastní dedikované piny pro SDA a SCL vpravo nahoře pod červeným tlačítkem RESET.

Tak a teď už pouze stačí vše nastartovat a díky knihovně a jejím metodám v časové smyčce opět periodicky číst hodnotu tlaku v milibarech, relativní vlhkost vzduchu v procentech, teplotu ve stupních a případně i výšku, kterou lze spočítat z rozdílu mezi aktuálním tlakem a typickým tlakem při hladině moře.

Klepněte pro větší obrázek
A konečně výstup programu opět skrze sériovou linku do připojeného počítače

Kód programu

Nakonec opět kód celého projektu, který je stále jednoduchý, protože obsahuje dvě rozměrné knihovny. To se podepíše i na velikosti celého programu, který už v tomto případě citelně zaplní paměť Arduina. Na to je třeba pamatovat a knihovny používat pouze tam, kde je to opravdu třeba.

#include <Wire.h>
#include <cactus_io_BME280_I2C.h>

// Barometr je na adrese 0x76
BME280_I2C bme(0x76);

void setup() {
  // Nastav seriovou linku
  Serial.begin(9600);
  while(!Serial){;}
  Serial.println("*** Ukazka digitalniho barometru BME280 ***");
  // Nastartuj senzor BME280
  bme.begin();
  bme.setTempCal(-1);
  Serial.println("Tlak [hPa]\tVlhkost [%]\tTeplota [stC]");
}

void loop() {
  // Precti data ze senzoru BME280
  bme.readSensor(); 
  
  // Ziskej a vypis tlak v milibarech (hPa)
  Serial.print(bme.getPressure_MB()); Serial.print("\t\t");

  // Ziskej a vypis relativni vlhkost v %
  Serial.print(bme.getHumidity()); Serial.print("\t\t");

  // Ziskej a vypis teplotu ve stupnich Celsia
  Serial.println(bme.getTemperature_C());

  // Pockej deset sekund a vse opakuj
  delay(10000);
}

Takže to máme základní demonstraci analogového a digitálního čidla a sofistikovanějšího barometru. Teď se pojďme podívat na další – bizarní detektor dešťových kapek. Bude opět analogový, takže to bude jednoduché. Šup do další kapitoly!

Témata článku: Technologie, Hardware, IoT, Pojďme programovat elektroniku, Programování, Arduino, Pohyb, Zajímavosti, Sigfox, Logická jednička, Celý kód, Detektor, Print, Posila, Pulse, Nejvyšší hodnota, Wholesale, Čidlo, Analogový signál, Autíčko, Barometr, Kapitola, Falešný poplach, GME, Celé číslo, Stolní počítače na Mall.cz


Určitě si přečtěte

Windows 10 podle našich čtenářů: Poslali jste nám skoro 300 nápadů, jak je vylepšit

Windows 10 podle našich čtenářů: Poslali jste nám skoro 300 nápadů, jak je vylepšit

** Microsoft aktualizuje Windows 10 dvakrát ročně ** Jenže praktických novinek už není tolik jako dříve ** Poslali jste nám skoro 300 tipů, co by se měly Desítky ještě naučit

Jakub Čížek | 134

Starý smartphone nemusí skončit v koši. 10 způsobů, jak ho ještě můžete využít

Starý smartphone nemusí skončit v koši. 10 způsobů, jak ho ještě můžete využít

** Co dělat s vysloužilým chytrým telefonem? Neházejte ho do koše! ** Našli jsme pro vás deset možností, jak ho prakticky využít ** I stará zařízení tak mohou být užitečná

Karel Kilián | 47

3D tisk pro naprosté zelenáče: Co vyrobíte na laciném stroji za pár tisíc korun

3D tisk pro naprosté zelenáče: Co vyrobíte na laciném stroji za pár tisíc korun

** Domácí 3D tisk je dnes už finančně dostupný prakticky všem ** Lacinou tiskárnu pořídíte za pár tisíc korun ** Jak vlastně tisk probíhá a jak navrhnout, co vytisknout

Jakub Čížek | 66

Bývalý zaměstnanec Nokie vysvětluje, proč telefony s Windows Phone neuspěly

Bývalý zaměstnanec Nokie vysvětluje, proč telefony s Windows Phone neuspěly

** Za neúspěchem Microsoftu v mobilech stojí i Windows 8 ** Microsoft pozdě naskočil do rozjetého vlaku ** Uživatelé neměli zásadní důvody, proč přejít

Karel Kilián | 133



Aktuální číslo časopisu Computer

Speciál o přechodu na DVB-T2

Velký test herních myší

Super fotky i z levného mobilu

Jak snadno upravit PDF