Toto je starší verze dokumentu!
Obsah
Podpora pro projekty s Arduinem
Základní informace o Arduinu
používáme moduly Arduino Nano (které jsou fyzicky větší než Arduino Mini Pro)
http://arduino.cc
http://arduino.cc/en/Main/Boards
http://arduino.cc/en/Main/ArduinoBoardUno
http://arduino.cc/en/Main/ArduinoBoardNano
vývojové prostředí je k dipozici na adrese https://www.arduino.cc/en/Main/Software
Moduly původem z Číny používají USB-UART převodník CH340G, ovladač pro Windows lze stáhnout zde (verze 3.6.2021.12), případně na stránkách výrobce převodníku http://www.wch-ic.com/downloads/CH341SER_ZIP.html (anglická jazyková mutace stránek) a http://www.wch.cn/downloads/CH341SER_ZIP.html (čínská jazyková mutace; pozn. 02/2022 verze ovladače na čínských stránkách nemusí být vždy stejná jako na anglických, aktuálně je nejnovější verze pouze na čínských stránkách)
Oživení a ověření základní funkčnosti
Blikání LED
Seriová komunikace
Knihovny a příklady použití pro jednotlivé moduly
seznam dostupných modulů https://docs.google.com/spreadsheets/d/1eXgFiZbOv-FYLSS8f-wMkrtQ7ab7YqBjkbKZQvYHOg0/edit?usp=sharing
pozn.: pro zobrazení obsahu je třeba přihlášení přístupovými údaji ČVUT
BMP280
- Senzor barometrického tlaku a teploty
- Komunikace přes I2C, nebo SPI
» Více informací «
VL53L0X
- Time-of-Flight senzor vzdálenosti
- Komunikace přes I2C
- Měření až do 2m
» Vice informací «
MPU-9250
- Tříosý gyroskop, akcelerometr, magnetometr
- Komunikace přes I2C, nebo SPI
» Více informací «
HTU21D(F)
- Senzor teploty a vlhkosti
- Komunikace přes I2C
- Napájení 1.5 - 3.6V
- Nastavitelné rozlišení
- Vestavěné vyhřívání pro diagnostiku
- Snímání napájecího napětí
- Nastavitelné rozlišení
SparkFun_HTU21D_Breakout_Arduino_Library
Data sheet
HTU21D | ARDUINO | ESP32 | |
---|---|---|---|
I2C | SDA | A4 | GPIO21 |
SCL | A5 | GPIO22 |
Výrobce doporučuje senzor po každém spuštění restartovat. Aktuální verze knihovny tuto funkci nenabízí, nicméně definuje příkaz SOFT_RESET. Následující kus kódu lze pro tento účel používat.
Wire.beginTransmission(HTU21D_ADDRESS); Wire.write(SOFT_RESET); Wire.endTransmission();
Knihovna obsahuje:
begin(&wirePort);
- wirePort
- I2C sběrnice
readTemperature();
- vrátí naměřenou teplotu [°C] jako float
readHumidity();
- vrátí naměřenou vlhkost [%] jako float
setResolution(resBits);
- Slouží k nastavení rozlišení pro teplotu a vlhkost
writeUserRegister(val);
- Slouží pro nastavení senzoru, val
- 8 bitů nastavení
readUserRegister();
- Slouží pro přečtení nastavení senzoru
První a poslední bit určuje nastavení rozlišení. Bit 6 indikuje napájecí napětí menší něž 2.25V (End of Battery). Bitem číslo 2 se zapíná nebo vypíná vestavěné vyhřívání. Pokud se senzor zahřeje, měl by měřit vyšší teplotu a nižší vlhkost. Díky tomu lze automaticky ověřit funkčnost senzoru. Více informací je v datasheetu na straně 13.
- HTU21D.ino
#include <Wire.h> #include "SparkFunHTU21D.h" // Kód je psaný pro verzi knihovny 1.1.3 HTU21D htu; void setup() { Serial.begin(9600); Serial.println("\nHTU21D test"); htu.begin(); // Spuštění komunikace se senzorem htuReset(); // Knihovna tuto funkci neobsahuje printInfo(); /* Zápis do registru: vypnutí OTP, změna rozlišení na 8bitů pro vlhkost a 12bitů pro teplotu */ htu.writeUserRegister(USER_REGISTER_DISABLE_OTP_RELOAD | USER_REGISTER_RESOLUTION_RH8_TEMP12); } void loop() { printInfo(); delay(1000); } void htuReset() { Wire.beginTransmission(HTU21D_ADDRESS); Wire.write(SOFT_RESET); Wire.endTransmission(); } void printInfo() { float temp = htu.readTemperature(); // Měření teploty float humd = htu.readHumidity(); // Měření vlhkosti uint8_t userReg = htu.readUserRegister(); // Načtení registru Serial.println("\n\nteplota\t\tvlhkost\t\tbattery\t\theater\t\tOTP reload\trozliseni\tregistr"); Serial.print(temp); Serial.print("°C\t\t"); Serial.print(humd); Serial.print("%\t\t"); Serial.print(userReg & USER_REGISTER_END_OF_BATTERY ? "low" : "ok"); Serial.print("\t\t"); Serial.print(userReg & USER_REGISTER_HEATER_ENABLED ? "on" : "off"); Serial.print("\t\t"); Serial.print(userReg & USER_REGISTER_DISABLE_OTP_RELOAD ? "disable" : "enable"); Serial.print("\t\t"); switch (userReg & USER_REGISTER_RESOLUTION_MASK) { // rozlišení [teplota + vlhkost] case USER_REGISTER_RESOLUTION_RH12_TEMP14: Serial.print("14 + 12\t\t"); break; case USER_REGISTER_RESOLUTION_RH8_TEMP12: Serial.print("12 + 8\t\t"); break; case USER_REGISTER_RESOLUTION_RH10_TEMP13: Serial.print("13 + 10\t\t"); break; case USER_REGISTER_RESOLUTION_RH11_TEMP11: Serial.print("11 + 11\t\t"); break; } for(int i = 7; i >= 0; i--) Serial.print(bitRead(userReg, i)); // Výpis registru }
Digitální teploměr DS18B20
Dallas Temperature Control Library http://www.milesburton.com/?title=Dallas_Temperature_Control_Library
praktické poznámky k OneWire sběrnici http://playground.arduino.cc/Learning/OneWire
příklady použití
nano_ds18b20.zip
Čidlo vlhkosti a teploty DHT11
podpora pro sensory DHT11 http://playground.arduino.cc/Main/DHT11Lib
poznámky k čidlům DHTxx http://playground.arduino.cc/Main/DHTLib
příklady použití
nano_dht.zip
Čidlo úrovně osvětlení BH1750
pozn.: modul označen GY-30
popis použití modulu BH1750 (s knihovnou BH1750) http://blog.venca-x.cz/arduino-mereni-svetelne-intenzity-s-bh1750/
popis použití modulu BH1750 (bez knihovny) http://blog.simtronyx.de/en/measurement-of-illuminance-with-a-bh1750fvi-breakout-board-gy-30-and-an-arduino-uno/
příklady použití
nano_bh1750.zip
Čidlo atmosférického tlaku BMP180
pozn.: modul označen GY-68, kompatibilní s BMP085
základní popis modulu https://laborja.wordpress.com/venta/arduino/gy-68-pressure-sensor-bmp180/
knihovna Adafruit BMP085 https://github.com/adafruit/Adafruit_BMP085_Unified
knihovna Adafruit sensors https://github.com/adafruit/Adafruit_Sensor
příklady použití:
příklad sensorapi z knihovny Adafruit BMP085
RTC DS1307
Time Library http://playground.arduino.cc/code/time
DS1307 RTC Library https://www.pjrc.com/teensy/td_libs_DS1307RTC.html
poznámky k použití Time Library http://forum.arduino.cc/index.php?topic=128928.0
poznámky k použití RTC modulu
http://uart.cz/78/obvod-realneho-casu-ds1307/
http://uart.cz/383/arduino-a-obvod-realneho-casu/
příklady použití
hodiny s knihovnou Time
RTC s knihovnou DS1307RTC
hodiny s knihovnou Time a synchronizací s RTC DS1307
LCD
knihovna LiquidCrystal https://www.arduino.cc/en/Reference/LiquidCrystal
API pro znakové displeje http://playground.arduino.cc/Code/LCDAPI
knihovny pro I2C displeje (rozcestník pro různé I2C čipy) http://playground.arduino.cc/Code/LCDi2c
podpora připojení displeje k Arduinu (rozcestník pro různé typy displejů) http://playground.arduino.cc/Code/LCD
další poznámky
http://www.instructables.com/id/I2C-LCD-Controller-the-easy-way/
http://www.geeetech.com/wiki/index.php/Serial_I2C_1602_16×2_Character_LCD_Module
https://arduino-info.wikispaces.com/LCD-Blue-I2C
příklady použití
nano_lcd_test.zip, pozn. displeje s modrým podsvícením mají adresu 0x27 (obvyklejší adresa i u jiných displejů), displeje se zeleným podsvícením mají adresu 0x3F (méně obvyklá adresa), viz https://forum.arduino.cc/index.php?topic=369998.0
SD Card
knihovna SD Library https://www.arduino.cc/en/Reference/SD
poznámky ke komunikaci s SD kartou https://www.arduino.cc/en/Reference/SDCardNotes
příklady použití
nano_sd_card.zip
Servo
"Digitalni potenciometr"- rotacni enkoder
pozn.: modul označen KY-040
https://bigdanzblog.wordpress.com/2014/08/16/using-a-ky040-rotary-encoder-with-arduino/
http://www.pjrc.com/teensy/td_libs_Encoder.html
TV výstup (kompozitní video)
knihovna TVout http://playground.arduino.cc/Main/TVout
poznámky k použití knihovny
http://robodoupe.cz/2014/arduino-a-vystup-na-tv-prijimac-2/
https://code.google.com/p/arduino-tvout/wiki/FunctionalDescription
příklady použití
nano_tv.zip
Senzory plynů MQ
Senzory plynů řady MQ
(např. MQ3 - senzor koncentrace alkoholu, MQ9 - senzor koncentrance hořlavých plynů atd.)
příklady použití
gas_sensor_mq.zip
další informace
http://playground.arduino.cc/Main/MQGasSensors
https://www.mysensors.org/build/gas
Senzor osvětlení - Flying Fish
příklady použití
flyingfishsensor.zip
další informace
https://defendtheplanet.net/2016/01/01/5v-light-detector-analog-digital-flying-fish-mh-sensor-series/
PIR Senzor
Čidlo pohybu PIR senzor
příklady použití
pir_sensor.zip
další informace
https://learn.adafruit.com/pir-passive-infrared-proximity-motion-sensor/using-a-pir
http://playground.arduino.cc/Code/PIRsense
Převodníky úrovní
typické převodníky úrovní 5 V/3,3 V mohou vypadat např. jako https://www.laskarduino.cz/prevodnik-logickych-urovni-i2c-5v-na-3v/ nebo https://www.laskarduino.cz/4-kanaly-obousmerny-prevodnik-logickych-urovni-5v-a-3-3v/, běžně používané zapojení je pak uvedeno např. v https://drive.google.com/open?id=0B4B30jzMyzG8MHVzeWg0dXMwdG8
Přenos a záznam dat do PC
Arduino lze použít jako jednoduchý měřící systém k PC nebo tabletu. Na odkazu najdete program, který umožňuje číst, vizualizovat a ukládat data z Arduina. Je možné i řídít průběh měření. Komunikace s PC nebo tabletem probíhá přes USB kabel nebo BlueTooth.
Vývojové desky s WiFi rozhraním
Vývojové desky s procesorem ESP 8266 (např. desky Wemos D1 mini a NodeMCU)
instalace podpory desek s chipem ESP 8266 do Arduino IDE https://github.com/esp8266/Arduino
příklad použití
wemosd1mini_webserver.zip
Uvedený příklad použití vychází z příkladu zde. Odkazovaný příklad obsahuje kromě možnosti odesílat HTML stránku i možnost připojit se pomocí JSON a ukládat data Google scriptem do tabulky na Google Drive.
Vývojové desky s procesorem ESP-WROOM-32
instalace podpory desek s chipem ESP-WROOM-32 do Arduino IDE https://navody.arduino-shop.cz/navody-k-produktum/jednoducha-instalace-esp32-do-arduino-ide.html
pozn.: aktuální verze jádra jsou na adrese
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
původní adresu v konfiguraci Arduino IDE je potřeba přepsat, nikoli pouze doplnit novou
podpora pro práci s deskami s ESP 8266 a ESP 32
ESP Exception Decoder https://github.com/me-no-dev/EspExceptionDecoder
Další vzorové kódy
autor: Václav Langer
připraveno pro Workshop 2015, doposud neověřeno