Selles postituses õpime kuidas kasutada Arduino Pro Mini valguse mõõtmisel. Täpsemalt öeldes mõõdame me valgustihedust (luks), mis näitab kui palju valgusvoogu (lm) langeb pinnaühikule (m2). Näiteks kui 1m2 langeb 1luumen, siis on pinna valgustihedus 1 luks. Orienteeruvad suurused:
- 0,2lux – kuuvalgus väljas
- 200lux – soovitav valgus ruumis olemiseks
- 300-500lux – soovitav lugemiseks
- 1500lux – vajalik peentöödeks
- 10 000lux – päike talvisel päeval
- 100 000lux – päike suvisel keskpäeval
Vajalikud komponendid
Loomulikult ei suuda Arduino Mini Pro ise valgust mõõta ja seepärast meil on vaja mõnda andurit ja ekraani tulemuse kuvamiseks.
- Arduino Mini Pro (aliexpress)
- BH1750 digitaalne valgussensor (aliexpress)
- 128*32 OLED ekraan (aliexpress)
- FTDI adapter (aliexpress) või Arduino Uno
Mis on Arduino Mini Pro
Mini Pro on Arduino arendusplaatide perekonna üks väiksemaid liikmeid.
Oma omaduste poolest ei jää ta kuidagi alla oma vanemale vennale Uno’le. Samuti on tal programmeeritav ATmega328P 16MHz protsessor, 32KB mälu jne. Oma väiksuse on ta saanud tänu USB sisendi kaotamisega.
Tabelit jälgides näeme, et võime toita seda kuni 12V pingega. Kuid siinkohal olla ettevaatlik, sest on olnud juhtumeid, kus 12V selle läbi kärsatab. Hoiame meie sisendpinge 5V ümber. Kui juba hoiatamiseks läks, siis ole tähelepanelik Pro Mini nõrgema kaksikvenna suhtes, sest too on varustatud ATmega168 protsessoriga ja kasutab vaid 3,3V.
Aduino Pro Mini programmeerimine
Kuna Arduino Pro Mini tuleb ilma USB liideseta, siis tuleb kuidagi sellele ligi pääseda, et oma kood sinna sokutada. Vaatame siinkohal kahte võimalust:
- FTDI adapter
- Arduino Uno
FTDI adapter ja ühendamine Pro Miniga
FTDI on ettevõte, mis on loonud FT232RL kivil baasil adapteri, mille abiga saad luua ühenduse ülemineku jadalt rööpsele (USB to UART). Valida on nö kaabel ja trükkplaadi versiooni.
Lisaks FTDI’le on turul ka näiteks Silicon Labs CP2102, Prolific Technologies PL2032HX jm. Kuna mul on FTDI trükkplaadi versioon pärit droonindusest, siis vaatame seda võimalust. Arduino Pro Mini programmeerimiseks ühenda juhtmed alljärgnevalt:
Pro Mini —> FTDI
BLK—>DTR
GND—>GND
VCC—>VCC
RXI—>TXO
TXO—>RXI
Ühenda FTDI adapter arvutiga ning esimest korda ühendamisel kannata ära draiverite paigaldamine. Windows 8 ja 10 peaks seda tegema automaatselt. Kui peaks mingi probleem olema, siis draiverid leiad siit: www.ftdichip.com/FTDrivers.htm
Seejärel ava Arduino IDE programm ning Tools alt vali:
- Board: Arduino Pro Mini
- Processor: ATmega328 (5V, 16MHz)
- Port: “COM5” (see võib erineda)
Ja testimiseks lae üles näiteks lihtne File>Example>01.Basics>Blink
Arduino Pro Mini programmeerimine Arduino Unoga
Kui FTDI adapterit pole, siis on võimalus Pro Mini programmeerida ka teise Arduino arendusplaadiga. Minul on käespärast Arduino Uno. Suurim erinevus FTDIga on, et kui enne ühendasime RX ja TX risti, siis siin on need otse ühendatud.
Pro Mini —> Uno
BLK—>RESET
GND—>GND
VCC—>5V
RXI—>RX
TXO—>TX
Seejärel ava Arduino IDE programm ning Tools alt vali:
- Board: Arduino Pro Mini
- Processor: ATmega328 (5V, 16MHz)
- Port: “COM4” (see võib erineda)
Ja testimiseks lae üles näiteks lihtne File>Example>01.Basics>Blink
Valgussensori ja ekraani ühendamine
Anname siis Arduino Pro Minile tööd. Mõõdame valgustihedust ja kuvame selle mingil ekraanil.
BH1750 valgussensor
BH1750 on digitaalne valgussensor, mis suhtleb Arduinoga läbi I2C protokolli. Andurist saadav tulemus on luksides (lx) ja ei pea eraldi ümberarvutama. Mõõdetav vahemik 1-65535lx ning töötab 3.3-5V peal.
Arduino koodi kirjutades on meil vaja vastavat teeki, mille leiad siit: https://github.com/claws/BH1750. Lisamiseks Arduino IDE vali menüüst Sketch>Include Library>Add .ZIP Library…
128*32 OLED ekraan
Ekraaniks olen valinud 128*32 OLED LCD, mis töötab SPI või IIC liidesega ning töötab 3.3-5V peal.
Töötamiseks kasutame teeki: https://github.com/olikraus/u8g2
Ekraani ja valgussensori ühendamine Arduino Pro Miniga
Mõlemad laiendusplaadid ühendame Arduino SDA ja SCL porti. Kuna seadmed on erinevad, siis on nende füüsilised aadressid erinevad ning Arduino suudab neil vahet teha.
Kood
Kui oled mõlemad teegid programmi tõmmanud, siis loome uue projekti ja lisame need programmi algusesse. U8g2 teek töötab päris paljude ekraanidega. Kui kasutad mõnda muud ekraani, siis ava teegiga kaasa tulevad näited. Seal on nimekiri töötavate ekraanidega. Lisaks sellele kasutame fonti, mille suurus on 24. Erksama päeva puhul ei jää ruumi kuvamiseks ja sel juhul vali väiksem font. U8g2 teegi puhul järgi kindlasti dokumentatsiooni, et millised funtksioonid on võimalikud ja kuidas valida fonti.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #include <U8g2lib.h> #include <BH1750.h> #include <Wire.h> U8G2_SSD1306_128X32_UNIVISION_1_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE, /* clock=*/ SCL, /* data=*/ SDA); // pin remapping with ESP8266 HW I2C BH1750 lightMeter; void setup() { u8g2.begin(); lightMeter.begin(); } void loop() { uint16_t lux = lightMeter.readLightLevel(); u8g2.setFont(u8g2_font_logisoso24_tf); u8g2.firstPage(); do{ u8g2.setCursor(0, 32); u8g2.println("Lux: "); u8g2.print(lux); } while (u8g2.nextPage()); delay(1000); } |
Valmis :)
0 responses on "Arduino Pro Mini ja valguse mõõtmine"