{"id":4114,"date":"2024-09-09T08:54:25","date_gmt":"2024-09-09T15:54:25","guid":{"rendered":"https:\/\/www.donluc.com\/?p=4114"},"modified":"2024-09-09T08:54:25","modified_gmt":"2024-09-09T15:54:25","slug":"project-29-dfrobot-soil-moisture-sensor-mk28","status":"publish","type":"post","link":"https:\/\/www.donluc.com\/?p=4114","title":{"rendered":"Project #29 &#8211; DFRobot &#8211; Soil Moisture Sensor &#8211; Mk28"},"content":{"rendered":"<div style=\"width: 720px;\" class=\"wp-video\"><video class=\"wp-video-shortcode\" id=\"video-4114-1\" width=\"720\" height=\"480\" preload=\"metadata\" controls=\"controls\"><source type=\"video\/mp4\" src=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2024\/09\/DL2409Mk02W.mp4?_=1\" \/><a href=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2024\/09\/DL2409Mk02W.mp4\">https:\/\/www.donluc.com\/wp-content\/uploads\/2024\/09\/DL2409Mk02W.mp4<\/a><\/video><\/div>\n<p>&#8212;&#8212;<\/p>\n<p>#DonLucElectronics #DonLuc #DFRobot #ASM  #Smoke #CH4 #VOC #SHTC3 #SD #FireBeetle2ESP32E #Display #EEPROM #ESP32 #IoT #Arduino #Project #Fritzing #Programming #Electronics #Microcontrollers #Consultant<\/p>\n<p>&#8212;&#8212;<\/p>\n<p><a href=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2024\/09\/DL2409Mk02a.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2024\/09\/DL2409Mk02a.png\" alt=\"Soil Moisture Sensor\" width=\"720\" height=\"617\" class=\"alignnone size-full wp-image-4116\" srcset=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2024\/09\/DL2409Mk02a.png 720w, https:\/\/www.donluc.com\/wp-content\/uploads\/2024\/09\/DL2409Mk02a-300x257.png 300w\" sizes=\"auto, (max-width: 720px) 100vw, 720px\" \/><\/a><\/p>\n<p>&#8212;&#8212;<\/p>\n<p><a href=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2024\/09\/DL2409Mk02b.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2024\/09\/DL2409Mk02b.png\" alt=\"Soil Moisture Sensor\" width=\"720\" height=\"540\" class=\"alignnone size-full wp-image-4117\" srcset=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2024\/09\/DL2409Mk02b.png 720w, https:\/\/www.donluc.com\/wp-content\/uploads\/2024\/09\/DL2409Mk02b-300x225.png 300w\" sizes=\"auto, (max-width: 720px) 100vw, 720px\" \/><\/a><\/p>\n<p>&#8212;&#8212;<\/p>\n<p><a href=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2024\/09\/DL2409Mk02c.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2024\/09\/DL2409Mk02c.png\" alt=\"Soil Moisture Sensor\" width=\"720\" height=\"540\" class=\"alignnone size-full wp-image-4118\" srcset=\"https:\/\/www.donluc.com\/wp-content\/uploads\/2024\/09\/DL2409Mk02c.png 720w, https:\/\/www.donluc.com\/wp-content\/uploads\/2024\/09\/DL2409Mk02c-300x225.png 300w\" sizes=\"auto, (max-width: 720px) 100vw, 720px\" \/><\/a><\/p>\n<p>&#8212;&#8212;<\/p>\n<p><strong>Gravity: Analog Soil Moisture Sensor<\/strong><\/p>\n<p>A soil moisture sensor can read the amount of moisture present in the soil surrounding it. It&#8217;s an ideal for monitoring an urban garden, or your pet plant&#8217;s water level. This is a must have component for a IOT garden \/ Agriculture. The new soil moisture sensor uses Immersion Gold which protects the nickel from oxidation. Electroless nickel immersion gold has several advantages over more conventional surface platings such as HASL, including excellent surface planarity, good oxidation resistance, and usability for untreated contact surfaces such as membrane switches and contact points. This soil moisture arduino sensor uses the two probes to pass current through the soil, and then it reads that resistance to get the moisture level. More water makes the soil conduct electricity more easily, while dry soil conducts electricity poorly. This sensor will be helpful to remind you to water your indoor plants or to monitor the soil moisture in your garden.<\/p>\n<p><strong>DL2409Mk02<\/strong><\/p>\n<p>1 x DFRobot FireBeetle 2 ESP32-E<br \/>\n1 x Gravity: Analog Soil Moisture Sensor<br \/>\n1 x Adafruit MicroSD card breakout board+<br \/>\n1 x MicroSD 2 GB<br \/>\n1 x Fermion: MEMS Smoke Gas Detection Sensor<br \/>\n1 x Fermion: MEMS Methane CH4 Gas Detection Sensor<br \/>\n1 x Fermion: MEMS VOC Gas Detection Sensor<br \/>\n1 x Fermion: SHTC3 Temperature and Humidity Sensor<br \/>\n1 x Fermion: 2.0&#8243; 320&#215;240 IPS TFT LCD<br \/>\n1 x GDL Line 10 CM<br \/>\n1 x Lithium Ion Battery &#8211; 1000mAh<br \/>\n1 x Switch<br \/>\n1 x USB 3.1 Cable A to C<\/p>\n<p><strong>FireBeetle 2 ESP32-E<\/strong><\/p>\n<p>VOC &#8211; A1<br \/>\nCH4 &#8211; A2<br \/>\nSMO &#8211; A3<br \/>\nASM &#8211; A4<br \/>\nLED &#8211; 2<br \/>\nSCK &#8211; 18<br \/>\nMOSI &#8211; 23<br \/>\nMISO &#8211; 19<br \/>\nCS &#8211; 13<br \/>\nSCL &#8211; 22<br \/>\nSDA &#8211; 21<br \/>\nDC &#8211; D2<br \/>\nCS &#8211; D6<br \/>\nRST &#8211; D3<br \/>\nVIN &#8211; +3.3V<br \/>\nGND &#8211; GND<\/p>\n<p><strong>DL2409Mk02p<\/strong><\/p>\n<p><strong>DL2409Mk02p.ino<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"arduino\" data-enlighter-title=\"\">\r\n\/****** Don Luc Electronics \u00a9 ******\r\nSoftware Version Information\r\nProject #29 - DFRobot - Soil Moisture Sensor - Mk28\r\n29-28\r\nDL2409Mk02p.ino\r\nDL2409Mk02\r\n1 x DFRobot FireBeetle 2 ESP32-E\r\n1 x Gravity: Analog Soil Moisture Sensor\r\n1 x Adafruit MicroSD card breakout board+\r\n1 x MicroSD 2 GB\r\n1 x Fermion: MEMS Smoke Gas Detection Sensor\r\n1 x Fermion: MEMS Methane CH4 Gas Detection Sensor\r\n1 x Fermion: MEMS VOC Gas Detection Sensor\r\n1 x Fermion: SHTC3 Temperature and Humidity Sensor\r\n1 x Fermion: 2.0&quot; 320x240 IPS TFT LCD\r\n1 x GDL Line 10 CM\r\n1 x Lithium Ion Battery - 1000mAh\r\n1 x Switch\r\n1 x USB 3.1 Cable A to C\r\n*\/\r\n\r\n\/\/ Include the Library Code\r\n\/\/ EEPROM Library to Read and Write EEPROM\r\n\/\/ with Unique ID for Unit\r\n#include &quot;EEPROM.h&quot;\r\n\/\/ DFRobot Display GDL API\r\n#include &lt;DFRobot_GDL.h&gt;\r\n\/\/ Arduino\r\n#include &lt;Arduino.h&gt;\r\n\/\/ Wire\r\n#include &lt;Wire.h&gt;\r\n\/\/ SHTC3 Temperature and Humidity Sensor\r\n#include &quot;SHTSensor.h&quot;\r\n\/\/ SD Card\r\n#include &quot;FS.h&quot;\r\n#include &quot;SD.h&quot;\r\n#include &quot;SPI.h&quot;\r\n\r\n\/\/ Gravity: Analog Soil Moisture Sensor\r\nint iSoilMoisture = A4;\r\nint iSoilMoistureVal = 0;\r\nint zz = 0;\r\n\r\n\/\/ MEMS Smoke Gas\r\nint iSensorSmoke = A3;\r\nint iSensorValueSmoke = 0;\r\nint z = 0;\r\n\r\n\/\/ MEMS CH4 Gas\r\nint iSensorCH4 = A2;\r\nint iSensorValueCH4 = 0;\r\nint y = 0;\r\n\r\n\/\/ MEMS VOC Gas\r\nint iSensorVOC = A1;\r\nint iSensorValueVOC = 0;\r\nint x = 0;\r\n\r\n\/\/ MicroSD Card\r\nconst int chipSelect = 13;\r\nString zzzzzz = &quot;&quot;;\r\n\r\n\/\/ SHTC3 Temperature and Humidity Sensor\r\nSHTSensor sht;\r\n\/\/ Temperature\r\nfloat T;\r\n\/\/ Humidity\r\nfloat H;\r\n\r\n\/\/ Defined ESP32\r\n#define TFT_DC  D2\r\n#define TFT_CS  D6\r\n#define TFT_RST D3\r\n\r\n\/*dc=*\/ \/*cs=*\/ \/*rst=*\/\r\n\/\/ DFRobot Display 240x320\r\nDFRobot_ST7789_240x320_HW_SPI screen(TFT_DC, TFT_CS, TFT_RST);\r\n\r\n\/\/ LED Green\r\nint iLEDGreen = 2;\r\n\r\n\/\/ EEPROM Unique ID Information\r\n#define EEPROM_SIZE 64\r\nString uid = &quot;&quot;;\r\n\r\n\/\/ Software Version Information\r\nString sver = &quot;29-28&quot;;\r\n\r\nvoid loop() {\r\n\r\n  \/\/ Gravity: Analog Soil Moisture Sensor\r\n  isSoilMoisture();\r\n  \r\n  \/\/ MEMS Smoke Gas\r\n  isSmoke();\r\n  \r\n  \/\/ MEMS CH4 Gas\r\n  isCH4();\r\n  \r\n  \/\/ MEMS VOC Gas\r\n  isVOC();\r\n  \r\n  \/\/ SHTC3 Temperature and Humidity Sensor\r\n  isSHTC3();\r\n\r\n  \/\/ DFRobot Display 240x320 - Temperature and Humidity, VOC, CH4, Smoke\r\n  isDisplayTH();\r\n\r\n  \/\/ MicroSD Card\r\n  isSD();\r\n\r\n  \/\/ Delay 5 Second\r\n  delay( 5000 );\r\n\r\n}\r\n<\/pre>\n<p><strong>getCH4.ino<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"arduino\" data-enlighter-title=\"\">\r\n\/\/ MEMS CH4 Gas\r\n\/\/ is CH4\r\nvoid isCH4(){\r\n\r\n  \/\/ MEMS CH4 Gas\r\n  y = analogRead( iSensorCH4 );\r\n  iSensorValueCH4 = map(y, 1, 4095, 1, 10000);\r\n  \r\n}\r\n<\/pre>\n<p><strong>getDisplay.ino<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"arduino\" data-enlighter-title=\"\">\r\n\/\/ DFRobot Display 240x320\r\n\/\/ DFRobot Display 240x320 - UID\r\nvoid isDisplayUID() {\r\n\r\n    \/\/ DFRobot Display 240x320\r\n    \/\/ Text Display\r\n    \/\/ Text Wrap\r\n    screen.setTextWrap(false);\r\n    \/\/ Rotation\r\n    screen.setRotation(3);\r\n    \/\/ Fill Screen =&gt; black\r\n    screen.fillScreen(0x0000);\r\n    \/\/ Text Color =&gt; white\r\n    screen.setTextColor(0xffff);\r\n    \/\/ Font =&gt; Free Mono 9pt\r\n    screen.setFont(&amp;FreeMono9pt7b);\r\n    \/\/ TextSize =&gt; 1.5\r\n    screen.setTextSize(1.5);\r\n    \/\/ DFRobot Display\r\n    screen.setCursor(0, 30);\r\n    screen.println(&quot;DFRobot Display&quot;);\r\n    \/\/ Don Luc Electronics\r\n    screen.setCursor(0, 60);\r\n    screen.println(&quot;Don Luc Electronics&quot;);\r\n    \/\/ Version\r\n    screen.setCursor(0, 90);\r\n    screen.println(&quot;Version&quot;);\r\n    screen.setCursor(0, 120);\r\n    screen.println( sver );\r\n    \/\/ EEPROM\r\n    screen.setCursor(0, 150);\r\n    screen.println(&quot;EEPROM&quot;);\r\n    screen.setCursor(0, 180);\r\n    screen.println( uid );\r\n\r\n}\r\n\/\/ DFRobot Display 240x320 - Temperature and Humidity, VOC, CH4, Smoke\r\nvoid isDisplayTH() {\r\n  \r\n    \/\/ DFRobot Display 240x320\r\n    \/\/ Text Display\r\n    \/\/ Text Wrap\r\n    screen.setTextWrap(false);\r\n    \/\/ Rotation\r\n    screen.setRotation(3);\r\n    \/\/ Fill Screen =&gt; black\r\n    screen.fillScreen(0x0000);\r\n    \/\/ Text Color =&gt; white\r\n    screen.setTextColor(0xffff);\r\n    \/\/ Font =&gt; Free Mono 9pt\r\n    screen.setFont(&amp;FreeMono9pt7b);\r\n    \/\/ TextSize =&gt; 1.5\r\n    screen.setTextSize(1.5);\r\n    \/\/ Don Luc Electronics\r\n    screen.setCursor(0, 30);\r\n    screen.println(&quot;Don Luc Electronics&quot;);\r\n    \/\/ Temperature\r\n    screen.setCursor(0, 60);\r\n    screen.println( &quot;Temp: &quot; );\r\n    screen.setCursor(60, 60);\r\n    screen.println( T );\r\n    screen.setCursor(130, 60);\r\n    screen.println(&quot;Celsius&quot;);\r\n    \/\/ Humidity\r\n    screen.setCursor(0, 90);\r\n    screen.println(&quot;Humi: &quot;);\r\n    screen.setCursor(60, 90);\r\n    screen.println( H );\r\n    screen.setCursor(130, 90);\r\n    screen.println(&quot;% RH&quot;);\r\n    \/\/ MEMS VOC Gas\r\n    screen.setCursor(0, 120);\r\n    screen.println( &quot;VOC: &quot; );\r\n    screen.setCursor(60, 120);\r\n    screen.println( iSensorValueVOC );\r\n    screen.setCursor(130, 120);\r\n    screen.println(&quot;ppm&quot;);\r\n    \/\/ MEMS CH4 Gas\r\n    screen.setCursor(0, 150);\r\n    screen.println( &quot;CH4: &quot; );\r\n    screen.setCursor(60, 150);\r\n    screen.println( iSensorValueCH4 );\r\n    screen.setCursor(130, 150);\r\n    screen.println(&quot;ppm&quot;);\r\n    \/\/ MEMS Smoke Gas\r\n    screen.setCursor(0, 180);\r\n    screen.println( &quot;SMO: &quot; );\r\n    screen.setCursor(60, 180);\r\n    screen.println( iSensorValueSmoke );\r\n    screen.setCursor(130, 180);\r\n    screen.println(&quot;ppm&quot;);\r\n    \/\/ Gravity: Analog Soil Moisture Sensor\r\n    screen.setCursor(0, 210);\r\n    screen.println( &quot;ASM: &quot; );\r\n    screen.setCursor(60, 210);\r\n    screen.println( iSoilMoistureVal );\r\n    screen.setCursor(130, 210);\r\n\r\n}\r\n<\/pre>\n<p><strong>getEEPROM.ino<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"arduino\" data-enlighter-title=\"\">\r\n\/\/ EEPROM\r\n\/\/ isUID EEPROM Unique ID\r\nvoid isUID() {\r\n  \r\n  \/\/ Is Unit ID\r\n  uid = &quot;&quot;;\r\n  for (int x = 0; x &lt; 7; x++)\r\n  {\r\n    uid = uid + char(EEPROM.read(x));\r\n  }\r\n  \r\n}\r\n<\/pre>\n<p><strong>getSD.ino<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"arduino\" data-enlighter-title=\"\">\r\n\/\/ MicroSD Card\r\n\/\/ MicroSD Setup\r\nvoid isSetupSD() {\r\n\r\n    \/\/ MicroSD Card\r\n    pinMode( chipSelect , OUTPUT );\r\n    if(!SD.begin( chipSelect )){\r\n        ;  \r\n        return;\r\n    }\r\n    \r\n    uint8_t cardType = SD.cardType();\r\n\r\n    \/\/ CARD NONE\r\n    if(cardType == CARD_NONE){\r\n        ; \r\n        return;\r\n    }\r\n\r\n    \/\/ SD Card Type\r\n    if(cardType == CARD_MMC){\r\n        ; \r\n    } else if(cardType == CARD_SD){\r\n        ; \r\n    } else if(cardType == CARD_SDHC){\r\n        ; \r\n    } else {\r\n        ; \r\n    } \r\n\r\n    \/\/ Size\r\n    uint64_t cardSize = SD.cardSize() \/ (1024 * 1024);\r\n \r\n}\r\n\/\/ MicroSD Card\r\nvoid isSD() {\r\n\r\n  zzzzzz = &quot;&quot;;\r\n\r\n  \/\/DFR|EEPROM Unique ID|Version|\r\n  \/\/Temperature C|% RH|VOC|CH4|Smoke|Soil Moisture|*\\r\r\n  zzzzzz = &quot;DFR|&quot; + uid + &quot;|&quot; + sver + &quot;|&quot;\r\n  + String( T ) + &quot;|&quot; + String( H ) + &quot;|&quot;\r\n  + String( iSensorValueVOC ) + &quot;|&quot; + String( iSensorValueCH4 ) + &quot;|&quot;\r\n  + String( iSensorValueSmoke ) + &quot;|&quot; + String( iSoilMoistureVal ) + &quot;|*\\r&quot;;;\r\n\r\n  \/\/ msg + 1\r\n  char msg[zzzzzz.length() + 1];\r\n\r\n  zzzzzz.toCharArray(msg, zzzzzz.length() + 1);\r\n\r\n  \/\/ Append File\r\n  appendFile(SD, &quot;\/dfrdata.txt&quot;, msg );\r\n  \r\n}\r\n\/\/ List Dir\r\nvoid listDir(fs::FS &amp;fs, const char * dirname, uint8_t levels){\r\n    \r\n    \/\/ List Dir\r\n    dirname;\r\n    \r\n    File root = fs.open(dirname);\r\n    \r\n    if(!root){\r\n        return;\r\n    }\r\n    \r\n    if(!root.isDirectory()){\r\n        return;\r\n    }\r\n\r\n    File file = root.openNextFile();\r\n    \r\n    while(file){\r\n        if(file.isDirectory()){\r\n            file.name();\r\n            if(levels){\r\n                listDir(fs, file.name(), levels -1);\r\n            }\r\n        } else {\r\n            file.name();\r\n            file.size();\r\n        }\r\n        file = root.openNextFile();\r\n    }\r\n    \r\n}\r\n\/\/ Write File\r\nvoid writeFile(fs::FS &amp;fs, const char * path, const char * message){\r\n    \r\n    \/\/ Write File\r\n    path;\r\n    \r\n    File file = fs.open(path, FILE_WRITE);\r\n    \r\n    if(!file){\r\n        return;\r\n    }\r\n    \r\n    if(file.print(message)){\r\n        ;  \r\n    } else {\r\n        ;  \r\n    }\r\n    \r\n    file.close();\r\n    \r\n}\r\n\/\/ Append File\r\nvoid appendFile(fs::FS &amp;fs, const char * path, const char * message){\r\n    \r\n    \/\/ Append File\r\n    path;\r\n    \r\n    File file = fs.open(path, FILE_APPEND);\r\n    \r\n    if(!file){\r\n        return;\r\n    }\r\n    \r\n    if(file.print(message)){\r\n        ;  \r\n    } else {\r\n        ;  \r\n    }\r\n    \r\n    file.close();\r\n    \r\n}\r\n<\/pre>\n<p><strong>getSHTC3.ino<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"arduino\" data-enlighter-title=\"\">\r\n\/\/ SHTC3 Temperature and Humidity Sensor\r\n\/\/ SHTC3\r\nvoid isSHTC3(){\r\n\r\n  \/\/ SHTC3 Temperature and Humidity Sensor\r\n  if (sht.readSample()) {\r\n     \r\n     \/\/ Temperature\r\n     T = sht.getTemperature();\r\n     \/\/ Humidity\r\n     H = sht.getHumidity();\r\n\r\n  }\r\n\r\n}\r\n<\/pre>\n<p><strong>getSmoke.ino<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"arduino\" data-enlighter-title=\"\">\r\n\/\/ Smoke\r\n\/\/ isSmoke\r\nvoid isSmoke(){\r\n\r\n  \/\/ MEMS Smoke Gas\r\n  z = analogRead( iSensorSmoke );\r\n  iSensorValueSmoke = map(x, 1, 4095, 1, 1000);\r\n  \r\n}\r\n<\/pre>\n<p><strong>getSoilMoisture.ino<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"arduino\" data-enlighter-title=\"\">\r\n\/\/ Gravity: Analog Soil Moisture Sensor\r\n\/\/ Soil Moisture\r\nvoid isSoilMoisture(){\r\n\r\n  \/\/ Connect Soil Moisture Sensor to Analog 4\r\n  zz = analogRead( iSoilMoisture );\r\n\r\n  \/\/ iSoilMoistureVal =&gt; 0~900 Soil Moisture\r\n  iSoilMoistureVal = map( zz, 0, 4095, 0, 900);\r\n\r\n}\r\n<\/pre>\n<p><strong>getVOC.ino<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"arduino\" data-enlighter-title=\"\">\r\n\/\/ MEMS VOC Gas\r\n\/\/ is VOC\r\nvoid isVOC(){\r\n\r\n  \/\/ MEMS VOC Gas\r\n  x = analogRead( iSensorVOC );\r\n  iSensorValueVOC = map(x, 1, 4095, 1, 500);\r\n  \r\n}\r\n<\/pre>\n<p><strong>setup.ino<\/strong><\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"arduino\" data-enlighter-title=\"\">\r\n\/\/ Setup\r\nvoid setup()\r\n{\r\n  \r\n  \/\/ Give display time to power on\r\n  delay(100);\r\n\r\n  \/\/ EEPROM Size\r\n  EEPROM.begin(EEPROM_SIZE);\r\n  \r\n  \/\/ EEPROM Unique ID\r\n  isUID();\r\n  \r\n  \/\/ Delay\r\n  delay( 100 );\r\n\r\n  \/\/ Wire\r\n  Wire.begin();\r\n\r\n  \/\/ Delay\r\n  delay( 100 );\r\n\r\n  \/\/ SHTC3 Temperature and Humidity Sensor\r\n  sht.init();\r\n  \/\/ SHT3x\r\n  sht.setAccuracy(SHTSensor::SHT_ACCURACY_MEDIUM);\r\n\r\n  \/\/ Delay\r\n  delay( 100 );\r\n  \r\n  \/\/ DFRobot Display 240x320\r\n  screen.begin();\r\n\r\n  \/\/ Delay\r\n  delay(100);\r\n\r\n  \/\/ MicroSD Card\r\n  isSetupSD();\r\n\r\n  \/\/ Initialize the LED Green\r\n  pinMode(iLEDGreen, OUTPUT);\r\n\r\n  \/\/ iLEDGreen HIGH\r\n  digitalWrite(iLEDGreen, HIGH );\r\n\r\n  \/\/ DFRobot Display 240x320 - UID\r\n  \/\/ Don Luc Electronics\r\n  \/\/ Version\r\n  \/\/ EEPROM\r\n  isDisplayUID();\r\n\r\n  \/\/ Delay 5 Second\r\n  delay( 5000 );\r\n\r\n}\r\n<\/pre>\n<p>&#8212;&#8212;<\/p>\n<p><strong>People can contact us:<\/strong> https:\/\/www.donluc.com\/?page_id=1927<\/p>\n<p><strong>Teacher, Instructor, E-Mentor, R&#038;D and Consulting<\/strong><\/p>\n<ul>\n<li>Programming Language<\/li>\n<li>Single-Board Microcontrollers (PIC, Arduino, Raspberry Pi, Arm, Silicon Labs, Espressif, Etc&#8230;)<\/li>\n<li>IoT<\/li>\n<li>Wireless (Radio Frequency, Bluetooth, WiFi, Etc&#8230;)<\/li>\n<li>Robotics<\/li>\n<li>Automation<\/li>\n<li>Camera and Video Capture Receiver Stationary, Wheel\/Tank and Underwater Vehicle<\/li>\n<li>Unmanned Vehicles Terrestrial and Marine<\/li>\n<li>Machine Learning<\/li>\n<li>Artificial Intelligence (AI)<\/li>\n<li>RTOS<\/li>\n<li>Sensors, eHealth Sensors, Biosensor, and Biometric<\/li>\n<li>Research &#038; Development (R &#038; D)<\/li>\n<li>Consulting<\/li>\n<\/ul>\n<p><strong>Follow Us<\/strong><\/p>\n<p><strong>Luc Paquin \u2013 Curriculum Vitae &#8211; 2024<\/strong><br \/>\nhttps:\/\/www.donluc.com\/luc\/<\/p>\n<p><strong>Web:<\/strong> https:\/\/www.donluc.com\/<br \/>\n<strong>Facebook:<\/strong> https:\/\/www.facebook.com\/neosteam.labs.9\/<br \/>\n<strong>YouTube:<\/strong> https:\/\/www.youtube.com\/@thesass2063<br \/>\n<strong>Twitter:<\/strong> https:\/\/twitter.com\/labs_steam<br \/>\n<strong>Pinterest:<\/strong> https:\/\/www.pinterest.com\/NeoSteamLabs\/<br \/>\n<strong>Instagram:<\/strong> https:\/\/www.instagram.com\/neosteamlabs\/<br \/>\n<strong>DFRobot Luc.Paquin:<\/strong> https:\/\/edu.dfrobot.com\/dashboard\/makelogs<br \/>\n<strong>Hackster.io:<\/strong> https:\/\/www.hackster.io\/neosteam-labs<br \/>\n<strong>LinkedIn:<\/strong> https:\/\/www.linkedin.com\/in\/jlucpaquin\/<\/p>\n<p><strong>Don Luc<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8212;&#8212; #DonLucElectronics #DonLuc #DFRobot #ASM #Smoke #CH4 #VOC #SHTC3 #SD #FireBeetle2ESP32E #Display #EEPROM #ESP32 #IoT #Arduino #Project #Fritzing #Programming #Electronics #Microcontrollers #Consultant &#8212;&#8212; &#8212;&#8212; &#8212;&#8212; &#8212;&#8212; Gravity: Analog Soil Moisture Sensor A soil moisture sensor can read the amount of moisture present in the soil surrounding it. It&#8217;s an ideal for monitoring an urban garden, &#8230; <a title=\"Project #29 &#8211; DFRobot &#8211; Soil Moisture Sensor &#8211; Mk28\" class=\"read-more\" href=\"https:\/\/www.donluc.com\/?p=4114\" aria-label=\"Read more about Project #29 &#8211; DFRobot &#8211; Soil Moisture Sensor &#8211; Mk28\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[318,50,49,317,38,80,59,115,5,287,58,82,10],"tags":[6,361,92,362,102,4,320,87,83,85,24,9,84,27,344,328,360,33,34,108,363],"class_list":["post-4114","post","type-post","status-publish","format-standard","hentry","category-ddfrobot","category-arduino","category-consultant","category-dfrobot","category-digitalelectronics","category-esp32","category-fritzing","category-e-mentor","category-microcontrollers","category-program","category-arduino-programming","category-program-esp32","category-projects","tag-arduino","tag-asm","tag-battery","tag-ch4","tag-components","tag-consultant","tag-dfrobot","tag-display","tag-esp32","tag-fritzing","tag-microcontroller","tag-programming","tag-programming-esp32","tag-projects-2","tag-shtc3","tag-smoke","tag-soil-moisture-sensor","tag-technology","tag-video-blog","tag-vlog","tag-voc"],"_links":{"self":[{"href":"https:\/\/www.donluc.com\/index.php?rest_route=\/wp\/v2\/posts\/4114","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.donluc.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.donluc.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.donluc.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.donluc.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4114"}],"version-history":[{"count":2,"href":"https:\/\/www.donluc.com\/index.php?rest_route=\/wp\/v2\/posts\/4114\/revisions"}],"predecessor-version":[{"id":4191,"href":"https:\/\/www.donluc.com\/index.php?rest_route=\/wp\/v2\/posts\/4114\/revisions\/4191"}],"wp:attachment":[{"href":"https:\/\/www.donluc.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4114"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.donluc.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4114"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.donluc.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4114"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}