Arduino IoT Cloud meteostanice s OLED

Svět IoT (Internet of Things) je všude kolem nás a Arduino IoT Cloud nabízí kutilům možnost ovládat jejich zařízení kdykoliv a odkudkoliv na profesionální úrovni. O Arduino online nástrojích jsme si již v minulosti psali, teď se ale zdá, že to už opravdu bude stát za to.
S Arduino IoT Cloud můžete pomocí prohlížeče internetu dálkově ovládat nebo sledovat chod programu vašeho zařízení. V článku si ukážeme jednoduchou meteostanici s Arduino NANO 33 IoT, zobrazením dat na OLED a posíláním do IoT Cloud. Na závěr vyzkoušíme ovládání vašeho zařízení hlasem pomocí asistenta Alexa od Amazonu.
Obsah článku:
Měříme teplotu, tlak a vlhkost
Pro seznámení s Arduino Cloud jsem zvolil konstrukci jednoduché meteostanice postavené ze dvou mikropočítačů Arduino Nano 33 IoT. K prvnímu mikropočítači je přes sběrnici I2C připojen senzor BME280 pro měření teploty, tlaku a vlhkosti. K druhému mikropočítači je pomocí I2C připojen malý grafický OLED displej 0,96“, který měřené hodnoty zobrazuje. Zapojení je jednoduché a patrné z obrázků níže. Stačí propojit piny VCC, GND, SCL a SDA. Pin VCC je výstup +3V3 z Arduina. Oba mikropočítače se po zapnutí připojí ke cloudu pomocí WiFi sítě a sdílí měřené hodnoty. Při napájení Arduina 5 V do pinu VIN je potřeba počítat se střední hodnotou odebíraného proudu asi 75 mA, při zvýšení napájecího napětí na 18 V hodnota proudu klesne na 25 mA.


Mikropočítač Arduino Nano 33 IoT
Arduino Nano 33 IoT je mnohoúčelový mikropočítač vybavený gyroskopem, akcelerometrem, WiFi, Bluetooth, RTC a spínaným zdrojem v rozsahu vstupního napětí 5-18 V. Zapojením pinů je téměř shodné s původním Arduino Nano (DIL 30), ale napětí I/O obvodů je pouhých 3,3 V s maximální proudem výstupu 7 mA. Mikropočítač používá 32bitový procesor ARM SAMD21 Cortex-M0+ na frekvenci 48 MHz s 256 kB paměti SRAM a 1 MB paměti Flash. Díky integrovanému radiovému modulu uBlox NINA-W102 a kryptografickému čipu ATECC608A je ideální pro konstrukce zařízení IoT. Dokumentaci mikropočítače včetně schéma zapojení najdete třeba zde. Všestranné Arduino Nano 33 IoT je pro použití s IoT Cloud ideální.
Arduino IoT Cloud
Nano 33 IoT je jeden z mnoha mikropočítačů, který můžete programovat online pomocí webové aplikace Arduino IoT Cloud. Podrobný návod, jak pracovat s touto aplikací najdete třeba zde. Prostředí Arduino IoT Cloud je intuitivní a samo vás navede, co je potřeba udělat. Po nutné registraci a instalaci Arduino Create Agent lze pomocí USB připojit váš mikropočítač a začít vytvářet vlastní IoT projekt.
Každý nový uživatel má automaticky nastaven bezplatný plán, který umožňuje vytvořit až dvě IoT zařízení (Things) a využívat až 5 proměnných (Variables), pomocí kterých můžete svůj mikropočítač dálkově sledovat nebo ovládat. Nastudujte si omezení a možnosti rozšíření vašeho plánu. V záložce Thinks-Setup zadáte název svého nového zařízení, k němu přiřadíte a pojmenujete mikropočítač (Device), vytvoříte cloud proměnné a zadáte parametry WiFi sítě, ke které se mikropočítač připojí po zapnutí napájení.
Nastavení cloud proměnných meteostanice jsem vložil do úvodní poznámky programu. V záložce Thinks-Sketch dopíšete vaši část řídícího programu (viz výpis níže), který nakonec nahrajete do mikropočítače. Chod programu můžete sledovat pomocí sériového monitoru webové aplikace. Již vytvořené cloud proměnné se v programu znovu nedeklarují. Řídící panel svého nového zařízení si vytvoříte v záložce Dashboards. Samostatně lze navrhnout panel pro mobilní nebo desktopovou aplikaci. K sestavení řídícího panelu použijte nabídku Widgets. Jde například o tlačítka, přepínače, kontrolky nebo jiné grafické zobrazení hodnot proměnných. Prvky řídícího panelu se nakonec propojí s programem v mikropočítači pomocí vytvořených cloud proměnných.


Přístup z mobilu pomocí aplikace Arduino IoT Cloud Remote
Pro rychlý přístup k vašemu řídícímu panelu z mobilního telefonu si naistalujte aplikaci Arduino IoT Cloud Remote.

Ovládání Nano 33 IoT pomocí hlasového asistenta Alexa
Pro zpestření jsem v zařízení Meteo_Senzor vytvořil navíc proměnnou teplota_alexa, která je v cloudu deklarována jako Alexa kompatibilní proměnná a umožňuje čtení hodnoty pomocí hlasového asistenta Alexa od Amazonu. Zde je ovšem nutné do aplikace Alexa přidat Arduino dovednosti (Skill) a potom v záložce zařízení (Devices) vyhledat nová zařízení (Discover Devices). O to samé můžete Alexu požádat slovně v angličtině. Alexa by měla najít nové zařízení pro měření teploty, které si pak zařadíte do konkrétní místnosti. Potom už jen stačí Alexu požádat, aby vám řekla, jaká je teplota v konkrétní místnosti.

Program v Meteo_Senzor (Device_1)
/*
Nastavení cloud proměnných pro zařízení Meteo_Senzor:
teplota, Float (Basic types), Read only, Variable update periodically 1 s
teplota_alexa, CloudTemperatureSensor (Alexa compatible), Read only, Variable update periodically 1 s
tlak, Float (Basic types), Read only, Variable update periodically 1 s
vlhkost, Int (Basic types), Read only, Variable update periodically 1 s
*/
#include "thingProperties.h" // Parametry definované v Arduino IoT Cloud
#include <Adafruit_BME280.h>
Adafruit_BME280 bme;
float teplota_predchozi = 0;
float tlak_predchozi = 0;
int vlhkost_predchozi = 0;
void setup() {
Serial.begin(9600);
bme.begin(0x76); // I2C adresa čidla 0x76
delay (100);
initProperties(); // Parametry definované v Arduino IoT Cloud
ArduinoCloud.begin(ArduinoIoTPreferredConnection); // Připojení k Arduino IoT Cloud
setDebugMessageLevel(2); // Nastavení důležitosti výpisu zpráv na sérový monitor
ArduinoCloud.printDebugInfo();
}
void loop() {
ArduinoCloud.update();
delay (1000);
teplota = round (10 * bme.readTemperature()) / 10; // Převod na jedno desetinné místo
teplota_alexa = teplota;
delay (100);
tlak = round (bme.readPressure() / 10) / 10; // Převod na jedno desetinné místo a hPa
delay (100);
vlhkost = bme.readHumidity();
delay (100);
if (tlak_predchozi != tlak or teplota_predchozi != teplota or vlhkost != vlhkost_predchozi) {
Serial.print(teplota, 1); Serial.print(" °C ");
Serial.print(tlak, 1); Serial.print(" hPa ");
Serial.print(vlhkost, 1); Serial.println(" %");
teplota_predchozi = teplota;
tlak_predchozi = tlak;
vlhkost_predchozi = vlhkost;
}
}
Program v Meteo_OLED (Device_2)
/*
Nastavení cloud proměnných pro zařízení Meteo_OLED:
teplota, Float (Basic types), Read/Write, Variable update on change, In sync with Meteo_Senzor
tlak, Float (Basic types), Read/Write, Variable update on change, In sync with Meteo_Senzor
vlhkost, Int (Basic types); Read/Write, Variable update on change, In sync with Meteo_Senzor
*/
#include <Adafruit_SSD1306.h>
#include "thingProperties.h" // Parametry definované v Arduino IoT Cloud
Adafruit_SSD1306 display(128, 64, &Wire, -1); // OLED šířka, výška
void setup() {
Serial.begin(9600);
initProperties();
ArduinoCloud.begin(ArduinoIoTPreferredConnection);
setDebugMessageLevel(2);
ArduinoCloud.printDebugInfo();
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // Interní zdroj 3V3, I2C adresa OLED
display.setTextColor(SSD1306_WHITE); // Nastav bílý text na černém pozadí
display.cp437(true); // Použij znakovou sadu CP437
aktualizuj_OLED ();
}
void loop() {
ArduinoCloud.update();
delay (1000);
}
void onTeplotaChange() { // Při změně teploty
aktualizuj_OLED ();
}
void onTlakChange() { // Při změně tlaku
aktualizuj_OLED ();
}
void onVlhkostChange() { // Při změně vlhkosti
aktualizuj_OLED ();
}
void aktualizuj_OLED () {
display.setTextSize(2); // Nastav velikost textu
display.clearDisplay(); // Smaž displej
display.setCursor(0, 0); // Nastav počáteční pozici kurzoru
display.print("T="); display.print(teplota, 1); display.print(" ");
display.print(char(248)); display.println("C");
display.print("P="); display.print(tlak, 0); display.println(" hPa");
display.print("RH="); display.print(vlhkost); display.println(" %");
display.setTextSize(1); // Nastav velikost textu
if (ArduinoCloud.connected()) display.println("CLOUD - SPOJENO");
else display.println("CLOUD - NESPOJENO");
display.display();
}
- Sledovač slunce s Arduinem - 8.10.2025
- Ovládání microbit robota přes dálkový ovladač - 8.10.2025
- ESP IDE & Pico:ed – Instalace firmware a seznámení s editorem - 4.9.2025
