+ All Categories
Home > Documents > Cyberplant...Arduino Nano ESP8266/ESP12e/NodeMCU dev board Lux-sensor TSL2561 WS2812b LED-strip 8stk...

Cyberplant...Arduino Nano ESP8266/ESP12e/NodeMCU dev board Lux-sensor TSL2561 WS2812b LED-strip 8stk...

Date post: 11-Mar-2020
Category:
Upload: others
View: 20 times
Download: 0 times
Share this document with a friend
14
INF1510 Cyberplant Teknisk dokumentasjon Luna Wei Shen (lunas) Herman Loennechen (hermanlo) Victor Risopatron (victori) The Faculty of Mathematics and Natural Sciences University of Oslo Norway
Transcript
Page 1: Cyberplant...Arduino Nano ESP8266/ESP12e/NodeMCU dev board Lux-sensor TSL2561 WS2812b LED-strip 8stk Soil Moisture Sensor YL-69 Soil Moisture Sensor kontroller YL-38 Temperature sensor

INF1510

Cyberplant

Tekniskdokumentasjon

Luna Wei Shen (lunas) Herman Loennechen (hermanlo)Victor Risopatron (victori)

The Faculty of Mathematics and Natural SciencesUniversity of Oslo

Norway

Page 2: Cyberplant...Arduino Nano ESP8266/ESP12e/NodeMCU dev board Lux-sensor TSL2561 WS2812b LED-strip 8stk Soil Moisture Sensor YL-69 Soil Moisture Sensor kontroller YL-38 Temperature sensor

Innhold1 Innledning 4

2 Video 4

3 Teknisk dokumentasjon av Cyberplant 43.1 Komponenter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53.2 Funksjoner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

4 Kode 54.1 Arduinokode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

5 Skjemaer og Datasheets 115.1 Arduino Nano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115.2 ESP8266 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125.3 TSL2561 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125.4 WS2812b . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135.5 YL-69 og YL-38 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145.6 TMP36(GZ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

Page 3: Cyberplant...Arduino Nano ESP8266/ESP12e/NodeMCU dev board Lux-sensor TSL2561 WS2812b LED-strip 8stk Soil Moisture Sensor YL-69 Soil Moisture Sensor kontroller YL-38 Temperature sensor
Page 4: Cyberplant...Arduino Nano ESP8266/ESP12e/NodeMCU dev board Lux-sensor TSL2561 WS2812b LED-strip 8stk Soil Moisture Sensor YL-69 Soil Moisture Sensor kontroller YL-38 Temperature sensor

INF1510 Cyberplant Teknisk Dokumentasjon

1 Innledning

Målet for prosjektet er å lage et produkt til vår målgruppe med problemstillingen"Hvordan kan vi hjelpe hobbygartnere med overvåkning av plantenes helse og inn-samling av plantedata?". Vår målgruppe ønsker en artifakt som kan hjelpe han medhage arbeidet og vårt mål er å lage en teknisk løsning som kan hjelpe han. Prototy-pen vår vil hjelpe vår målgruppe å se hvordan planten har det med tanke på vann,temperatur og lys til enhver tid og bidra med å gi han informasjon til hva som mågjøres for å gi planten bedre leveforhold.

2 Video

Videoen viser utviklingen av Cyberplant fra tidlig konsept til den endelige prototypen,1.gangsinteraksjon av målgruppe og demonstrasjon av funksjonene.

Videolink: https://www.youtube.com/watch?v=sUky9X-d9wo&feature=youtu.be

3 Teknisk dokumentasjon av Cyberplant

Figur 1: Oppkobling av krets

4

Page 5: Cyberplant...Arduino Nano ESP8266/ESP12e/NodeMCU dev board Lux-sensor TSL2561 WS2812b LED-strip 8stk Soil Moisture Sensor YL-69 Soil Moisture Sensor kontroller YL-38 Temperature sensor

INF1510 Cyberplant Teknisk Dokumentasjon

3.1 Komponenter

Arduino Nano

ESP8266/ESP12e/NodeMCU dev board

Lux-sensor TSL2561

WS2812b LED-strip 8stk

Soil Moisture Sensor YL-69

Soil Moisture Sensor kontroller YL-38

Temperature sensor TMP36 (36GZ)

6V driftspenning via 2 stk 3V CR2 lithium batterier.

3.2 Funksjoner

Cyberplant har følgende funksjoner:

Lyssensor fra 0-17000 Lux med varsling via LED-lys.

Temperatursensor fra -55°C til 150°C med varsling via LED-lys.

Jordfuktighet/humidity med varsling via LED-lys.

Støtte for seriell dataoverføring via kabel eller WiFi.

6-10 Volts driftspenning.

4 Kode

4.1 Arduinokode

Listing 1: Some Code

#inc lude <Wire . h>#inc lude <Adafruit_Sensor . h>#inc lude <Adafruit_TSL2561_U . h>#inc lude <Adafruit_NeoPixel . h>

byte humidity_sensor_pin = A1 ;byte humidity_sensor_vcc = 6 ;i n t tempPin = A2 ;i n t PIN = 7 ;i n t totalLEDs = 8 ;i n t de l ayva l = 250 ;i n t va l = 0 ; // t e s t v a l u e hum senso r to w i f i module

Adafruit_NeoPixel l e d s = Adafruit_NeoPixel ( totalLEDs , PIN ,↪→ NEO_GRB + NEO_KHZ800) ;

Adafruit_TSL2561_Unified t s l = Adafruit_TSL2561_Unified (↪→ TSL2561_ADDR_FLOAT, 12345) ;

void setup ( ) {

// Setup S e r i a lwhi l e ( ! S e r i a l ) ;

5

Page 6: Cyberplant...Arduino Nano ESP8266/ESP12e/NodeMCU dev board Lux-sensor TSL2561 WS2812b LED-strip 8stk Soil Moisture Sensor YL-69 Soil Moisture Sensor kontroller YL-38 Temperature sensor

INF1510 Cyberplant Teknisk Dokumentasjon

de lay (1000) ;S e r i a l . begin (9600) ;

// I n i t i a l i s e LEDsl ed s . begin ( ) ;l e d s . s e tBr i gh tne s s (50) ; // s e t s l e d s to s t r ength value

↪→ between 0−255l ed s . show ( ) ; // I n i t i a l i z e a l l p i x e l s to ’ o f f ’

// I n i t i a l i s e the humidity s enso r boardpinMode ( humidity_sensor_vcc , OUTPUT) ;d i g i t a lWr i t e ( humidity_sensor_vcc , LOW) ;

// I n i t i a l i s e the LUX−s enso r// I n i t i a l i s e the s enso ri f ( ! t s l . beg in ( ) ){

// Problem de t e c t i ng the TSL2561S e r i a l . p r i n t ("No TSL2561 detec ted ") ;whi l e (1 ) ;

}

// Display some bas i c in fo rmat ion on t h i s s enso rd i s p l aySen s o rDe t a i l s ( ) ;// Setup the s enso r gain and i n t e g r a t i o n timecon f i gu r eSenso r ( ) ;

S e r i a l . p r i n t l n ("") ;

}

i n t read_humidity_sensor ( ) {d i g i t a lWr i t e ( humidity_sensor_vcc , HIGH) ;de lay (250) ;i n t va lue = analogRead ( humidity_sensor_pin ) ;d i g i t a lWr i t e ( humidity_sensor_vcc , LOW) ;i n t humidity = 1023 − value ;

// Super dry 0−50i f ( humidity <= 50) {

de lay (500) ;l e d s . s e tP ix e lCo l o r (4 , 245 , 60 , 5) ; // orangel e d s . s e tP ix e lCo l o r (5 , 245 , 60 , 5) ; // orangel e d s . s e tP ix e lCo l o r (6 , 245 , 60 , 5) ; // orangel e d s . s e tP ix e lCo l o r (7 , 245 , 60 , 5) ; // orange

}// Dry 50 − 150i f ( humidity > 50 && humidity < 150) {

de lay (500) ;l e d s . s e tP ix e lCo l o r (4 , 245 , 60 , 5) ; // orangel e d s . s e tP ix e lCo l o r (5 , 245 , 60 , 5) ; // orangel e d s . s e tP ix e lCo l o r (6 , 190 , 0 , 250) ; // purplel e d s . s e tP ix e lCo l o r (7 ,190 , 0 , 250) ; // purple

}

// Need water

6

Page 7: Cyberplant...Arduino Nano ESP8266/ESP12e/NodeMCU dev board Lux-sensor TSL2561 WS2812b LED-strip 8stk Soil Moisture Sensor YL-69 Soil Moisture Sensor kontroller YL-38 Temperature sensor

INF1510 Cyberplant Teknisk Dokumentasjon

i f ( humidity > 150 && humidity < 300) {de lay (500) ;l e d s . s e tP i x e lCo l o r (4 , 190 , 0 , 250) ; // purplel e d s . s e tP i x e lCo l o r (5 , 190 , 0 , 250) ; // purplel e d s . s e tP i x e lCo l o r (6 , 190 , 0 , 250) ; // purplel e d s . s e tP i x e lCo l o r (7 , 0 , 0 , 150) ; // blue

}

// humid 300−500i f ( humidity > 300 && humidity < 500) {

de lay (500) ;l e d s . s e tP i x e lCo l o r (4 , 190 , 0 , 250) ; // purplel e d s . s e tP i x e lCo l o r (5 , 190 , 0 , 250) ; // purplel e d s . s e tP i x e lCo l o r (6 , 0 , 0 , 150) ; // bluel e d s . s e tP i x e lCo l o r (7 , 0 , 0 , 150) ; // blue

}

// so watery 500−600i f ( humidity > 500 && humidity < 600) {

de lay (500) ;l e d s . s e tP i x e lCo l o r (4 , 190 , 0 , 250) ; // purplel e d s . s e tP i x e lCo l o r (5 , 0 , 0 , 150) ; // bluel e d s . s e tP i x e lCo l o r (6 , 0 , 0 , 150) ; ; / / bluel e d s . s e tP i x e lCo l o r (7 , 0 , 0 , 150) ; // blue

}

// Fu l l 600−850i f ( humidity > 600 && humidity < 850) {

de lay (500) ;l e d s . s e tP i x e lCo l o r (4 , 0 , 0 , 150) ; // purplel e d s . s e tP i x e lCo l o r (5 , 0 , 0 , 150) ; // bluel e d s . s e tP i x e lCo l o r (6 , 0 , 0 , 150) ; ; / / bluel e d s . s e tP i x e lCo l o r (7 , 0 , 0 , 150) ; // blue

}

// submerged in water (MAX) 850+i f ( humidity >= 850) {

de lay (500) ;l e d s . s e tP i x e lCo l o r (4 , 255 , 0 , 0) ; // Redl ed s . s e tP i x e lCo l o r (5 , 190 , 0 , 250) ; // purplel e d s . s e tP i x e lCo l o r (6 , 0 , 0 , 255) ; // bluel e d s . s e tP i x e lCo l o r (7 , 0 , 0 , 255) ; // blue

}

return 1023 − value ;}

i n t read_temperature ( ) {// g e t t i n g the vo l tage read ing from the temperature s enso r

i n t read ing = analogRead ( tempPin ) ;// conver t ing that read ing to vo l tage , f o r 3 . 3 v arduino use

↪→ 3 .3f l o a t vo l t age = read ing ∗ 5 . 0 ;vo l tage /= 1024 . 0 ;

// p r i n t out the vo l tage// S e r i a l . p r i n t ( vo l tage ) ; S e r i a l . p r i n t l n (" v o l t s ") ;

7

Page 8: Cyberplant...Arduino Nano ESP8266/ESP12e/NodeMCU dev board Lux-sensor TSL2561 WS2812b LED-strip 8stk Soil Moisture Sensor YL-69 Soil Moisture Sensor kontroller YL-38 Temperature sensor

INF1510 Cyberplant Teknisk Dokumentasjon

// now pr in t out the temperaturef l o a t temperatureC = ( vo l tage − 0 . 5 ) ∗ 100 ; // conver t ing

↪→ from 10 mv per degree wit 500 mV o f f s e t// to degree s

↪→ ( (↪→ vo l tage↪→ − 500mV)↪→ t imes↪→ 100)

S e r i a l . p r i n t ( temperatureC ) ;

i f ( temperatureC < 10 . 0 ) {l e d s . s e tP ix e lCo l o r (0 , 0 , 0 , 255) ; // temp too low − blue

}

e l s e i f ( temperatureC > 32 . 0 ) {l e d s . s e tP ix e lCo l o r (0 , 255 , 0 , 0) ; // temp too high − red

}

e l s e {l e d s . s e tP ix e lCo l o r (0 , 0 , 255 , 0) ; // good temp − green

}

}

void d i s p l aySen s o rDe t a i l s ( void ){

sensor_t senso r ;t s l . ge tSensor (&senso r ) ;S e r i a l . p r i n t l n("−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−");S e r i a l . p r i n t (" Sensor : ") ; S e r i a l . p r i n t l n ( s enso r .

↪→ name) ;S e r i a l . p r i n t (" Driver Ver : ") ; S e r i a l . p r i n t l n ( s enso r .

↪→ ve r s i on ) ;S e r i a l . p r i n t (" Unique ID : ") ; S e r i a l . p r i n t l n ( s enso r .

↪→ sensor_id ) ;S e r i a l . p r i n t ("Max Value : ") ; S e r i a l . p r i n t ( s enso r .

↪→ max_value ) ; S e r i a l . p r i n t l n (" lux ") ;S e r i a l . p r i n t ("Min Value : ") ; S e r i a l . p r i n t ( s enso r .

↪→ min_value ) ; S e r i a l . p r i n t l n (" lux ") ;S e r i a l . p r i n t (" Reso lut ion : ") ; S e r i a l . p r i n t ( s enso r .

↪→ r e s o l u t i o n ) ; S e r i a l . p r i n t l n (" lux ") ;S e r i a l . p r i n t l n("−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−");S e r i a l . p r i n t l n ("") ;de lay (500) ;

}

// Conf igures the gain and i n t e g r a t i o n time f o r the TSL2561

void con f i gu r eSen so r ( void ){

// You can a l s o manually s e t the gain or enable auto−gain↪→ support

// t s l . setGain (TSL2561_GAIN_1X) ; // No gain . . . use in↪→ br i gh t l i g h t to avoid senso r s a tu ra t i on

// t s l . setGain (TSL2561_GAIN_16X) ; // 16x gain . . . use↪→ in low l i g h t to boost s e n s i t i v i t y

8

Page 9: Cyberplant...Arduino Nano ESP8266/ESP12e/NodeMCU dev board Lux-sensor TSL2561 WS2812b LED-strip 8stk Soil Moisture Sensor YL-69 Soil Moisture Sensor kontroller YL-38 Temperature sensor

INF1510 Cyberplant Teknisk Dokumentasjon

t s l . enableAutoRange ( t rue ) ; // Auto−gain . . .↪→ sw i t che s automat i ca l l y between 1x and 16x

// Changing the i n t e g r a t i o n time g i v e s you be t t e r s enso r↪→ r e s o l u t i o n (402ms = 16−b i t data )

t s l . s e t Integrat i onTime (TSL2561_INTEGRATIONTIME_13MS) ;↪→ // f a s t but low r e s o l u t i o n

// t s l . s e t Integrat i onTime (TSL2561_INTEGRATIONTIME_101MS) ;↪→ // medium r e s o l u t i o n and speed

// t s l . s e t Integrat i onTime (TSL2561_INTEGRATIONTIME_402MS) ;↪→ // 16−b i t data but s l owes t conve r s i on s

// Update these va lue s depending on what you ’ ve s e t above !S e r i a l . p r i n t l n("−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−");S e r i a l . p r i n t ("Gain : ") ; S e r i a l . p r i n t l n ("Auto") ;S e r i a l . p r i n t ("Timing : ") ; S e r i a l . p r i n t l n ("13 ms") ;S e r i a l . p r i n t l n("−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−");

}

void loop ( ) {

l e d s . show ( ) ; // This sends the updated p i x e l c o l o r to the↪→ hardware .

de lay ( de l ayva l ) ; // Delay f o r a per iod o f time ( in↪→ mi l l i s e c ond s ) .

// Get a new senso r eventsensors_event_t event ;t s l . getEvent(&event ) ;

// Display the r e s u l t s ( l i g h t i s measured in lux )i f ( event . l i g h t ){

S e r i a l . p r i n t (" I l luminance : ") ;S e r i a l . p r i n t ( event . l i g h t ) ;S e r i a l . p r i n t l n (" lux ") ;

}e l s e{

// I f event . l i g h t = 0 lux , no r e l i a b l e data from senso r (↪→ s a tu ra t i on )

S e r i a l . p r i n t l n (" Sensor over load ") ;}

i f ( event . l i g h t < 10 .0 && event . l i g h t != 0) {l ed s . s e tP i x e lCo l o r (1 , 0 , 0 , 255) ; // not enough l i g h t / n ight

↪→ time − blue}

i f ( event . l i g h t > 10 && event . l i g h t < 100 .0 ) {l e d s . s e tP i x e lCo l o r (1 , 190 , 0 , 250) ; // not enough l i g h t −

↪→ purple}

i f ( event . l i g h t > 100 && event . l i g h t < 10000 .0 ) {l e d s . s e tP i x e lCo l o r (1 , 0 , 250 ,0) ; //good s h i t − green

9

Page 10: Cyberplant...Arduino Nano ESP8266/ESP12e/NodeMCU dev board Lux-sensor TSL2561 WS2812b LED-strip 8stk Soil Moisture Sensor YL-69 Soil Moisture Sensor kontroller YL-38 Temperature sensor

INF1510 Cyberplant Teknisk Dokumentasjon

}

i f ( event . l i g h t > 10000 && event . l i g h t <= 17000 .0 ) {l e d s . s e tP ix e lCo l o r (1 , 250 , 0 ,0) ; // too much − red

}

S e r i a l . p r i n t (" Humidity (0−1023) : ") ;S e r i a l . p r i n t l n ( read_humidity_sensor ( ) ) ;S e r i a l . p r i n t (" Temperature : ") ;S e r i a l . p r i n t ( read_temperature ( ) ) ;S e r i a l . p r i n t l n (" C") ;de lay (1000) ;

}

10

Page 11: Cyberplant...Arduino Nano ESP8266/ESP12e/NodeMCU dev board Lux-sensor TSL2561 WS2812b LED-strip 8stk Soil Moisture Sensor YL-69 Soil Moisture Sensor kontroller YL-38 Temperature sensor

INF1510 Cyberplant Teknisk Dokumentasjon

5 Skjemaer og Datasheets

5.1 Arduino Nano

Datasheet: https://www.arduino.cc/en/uploads/Main/ArduinoNanoManual23.pdf

Figur 2: Skjema 1

Figur 3: Skjema 2

11

Page 12: Cyberplant...Arduino Nano ESP8266/ESP12e/NodeMCU dev board Lux-sensor TSL2561 WS2812b LED-strip 8stk Soil Moisture Sensor YL-69 Soil Moisture Sensor kontroller YL-38 Temperature sensor

INF1510 Cyberplant Teknisk Dokumentasjon

5.2 ESP8266

Datasheet: http://download.arduino.org/products/UNOWIFI/0A-ESP8266-Datasheet-EN-v4.3.pdf

Figur 4: ESP8266 PIN out

5.3 TSL2561

Datasheet: https://cdn-shop.adafruit.com/datasheets/TSL2561.pdf

Figur 5: TSL2561 Lux-sensor skjema

12

Page 13: Cyberplant...Arduino Nano ESP8266/ESP12e/NodeMCU dev board Lux-sensor TSL2561 WS2812b LED-strip 8stk Soil Moisture Sensor YL-69 Soil Moisture Sensor kontroller YL-38 Temperature sensor

INF1510 Cyberplant Teknisk Dokumentasjon

5.4 WS2812b

Datasheet: https://cdn-shop.adafruit.com/datasheets/WS2812B.pdf

Figur 6: WS2812b

13

Page 14: Cyberplant...Arduino Nano ESP8266/ESP12e/NodeMCU dev board Lux-sensor TSL2561 WS2812b LED-strip 8stk Soil Moisture Sensor YL-69 Soil Moisture Sensor kontroller YL-38 Temperature sensor

INF1510 Cyberplant Teknisk Dokumentasjon

5.5 YL-69 og YL-38

Figur 7: YL69 og YL-38

5.6 TMP36(GZ)

Datasheet: http://www.analog.com/media/en/technical-documentation/data-sheets/TMP35_36_37.pdf

Figur 8: TMP36-sensor skjema

14


Recommended