Skip to main content
Chemistry LibreTexts

3: BME688/ESPDevKitV1

  • Page ID
    440756
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)

    \( \newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\)

    ( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\)

    \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\)

    \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\)

    \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\)

    \( \newcommand{\Span}{\mathrm{span}}\)

    \( \newcommand{\id}{\mathrm{id}}\)

    \( \newcommand{\Span}{\mathrm{span}}\)

    \( \newcommand{\kernel}{\mathrm{null}\,}\)

    \( \newcommand{\range}{\mathrm{range}\,}\)

    \( \newcommand{\RealPart}{\mathrm{Re}}\)

    \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\)

    \( \newcommand{\Argument}{\mathrm{Arg}}\)

    \( \newcommand{\norm}[1]{\| #1 \|}\)

    \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\)

    \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    \( \newcommand{\vectorA}[1]{\vec{#1}}      % arrow\)

    \( \newcommand{\vectorAt}[1]{\vec{\text{#1}}}      % arrow\)

    \( \newcommand{\vectorB}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vectorC}[1]{\textbf{#1}} \)

    \( \newcommand{\vectorD}[1]{\overrightarrow{#1}} \)

    \( \newcommand{\vectorDt}[1]{\overrightarrow{\text{#1}}} \)

    \( \newcommand{\vectE}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash{\mathbf {#1}}}} \)

    \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)

    \(\newcommand{\avec}{\mathbf a}\) \(\newcommand{\bvec}{\mathbf b}\) \(\newcommand{\cvec}{\mathbf c}\) \(\newcommand{\dvec}{\mathbf d}\) \(\newcommand{\dtil}{\widetilde{\mathbf d}}\) \(\newcommand{\evec}{\mathbf e}\) \(\newcommand{\fvec}{\mathbf f}\) \(\newcommand{\nvec}{\mathbf n}\) \(\newcommand{\pvec}{\mathbf p}\) \(\newcommand{\qvec}{\mathbf q}\) \(\newcommand{\svec}{\mathbf s}\) \(\newcommand{\tvec}{\mathbf t}\) \(\newcommand{\uvec}{\mathbf u}\) \(\newcommand{\vvec}{\mathbf v}\) \(\newcommand{\wvec}{\mathbf w}\) \(\newcommand{\xvec}{\mathbf x}\) \(\newcommand{\yvec}{\mathbf y}\) \(\newcommand{\zvec}{\mathbf z}\) \(\newcommand{\rvec}{\mathbf r}\) \(\newcommand{\mvec}{\mathbf m}\) \(\newcommand{\zerovec}{\mathbf 0}\) \(\newcommand{\onevec}{\mathbf 1}\) \(\newcommand{\real}{\mathbb R}\) \(\newcommand{\twovec}[2]{\left[\begin{array}{r}#1 \\ #2 \end{array}\right]}\) \(\newcommand{\ctwovec}[2]{\left[\begin{array}{c}#1 \\ #2 \end{array}\right]}\) \(\newcommand{\threevec}[3]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \end{array}\right]}\) \(\newcommand{\cthreevec}[3]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \end{array}\right]}\) \(\newcommand{\fourvec}[4]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \\ #4 \end{array}\right]}\) \(\newcommand{\cfourvec}[4]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \\ #4 \end{array}\right]}\) \(\newcommand{\fivevec}[5]{\left[\begin{array}{r}#1 \\ #2 \\ #3 \\ #4 \\ #5 \\ \end{array}\right]}\) \(\newcommand{\cfivevec}[5]{\left[\begin{array}{c}#1 \\ #2 \\ #3 \\ #4 \\ #5 \\ \end{array}\right]}\) \(\newcommand{\mattwo}[4]{\left[\begin{array}{rr}#1 \amp #2 \\ #3 \amp #4 \\ \end{array}\right]}\) \(\newcommand{\laspan}[1]{\text{Span}\{#1\}}\) \(\newcommand{\bcal}{\cal B}\) \(\newcommand{\ccal}{\cal C}\) \(\newcommand{\scal}{\cal S}\) \(\newcommand{\wcal}{\cal W}\) \(\newcommand{\ecal}{\cal E}\) \(\newcommand{\coords}[2]{\left\{#1\right\}_{#2}}\) \(\newcommand{\gray}[1]{\color{gray}{#1}}\) \(\newcommand{\lgray}[1]{\color{lightgray}{#1}}\) \(\newcommand{\rank}{\operatorname{rank}}\) \(\newcommand{\row}{\text{Row}}\) \(\newcommand{\col}{\text{Col}}\) \(\renewcommand{\row}{\text{Row}}\) \(\newcommand{\nul}{\text{Nul}}\) \(\newcommand{\var}{\text{Var}}\) \(\newcommand{\corr}{\text{corr}}\) \(\newcommand{\len}[1]{\left|#1\right|}\) \(\newcommand{\bbar}{\overline{\bvec}}\) \(\newcommand{\bhat}{\widehat{\bvec}}\) \(\newcommand{\bperp}{\bvec^\perp}\) \(\newcommand{\xhat}{\widehat{\xvec}}\) \(\newcommand{\vhat}{\widehat{\vvec}}\) \(\newcommand{\uhat}{\widehat{\uvec}}\) \(\newcommand{\what}{\widehat{\wvec}}\) \(\newcommand{\Sighat}{\widehat{\Sigma}}\) \(\newcommand{\lt}{<}\) \(\newcommand{\gt}{>}\) \(\newcommand{\amp}{&}\) \(\definecolor{fillinmathshade}{gray}{0.9}\)

    This chapter will go over hooking up 3 BME688 sensors usingf SPI to an ESP32 Dev Kit V1 WiFi enabled chip.

     

    BME680/688

    the BME 680 or 688 are very similar sensor boards that measure temperature, humidity, pressure and VOC gas concentrations.  They can use either I2C or SPI serial communication protocols and this lesson will be using boards obtained from Adafruit, and the Adafruit tutorial is a good place to get further information. The difference between the 680 and the 688 is you can control the temperature over the metal oxide VOC sensor, which affects its selectivity for VOCs.

    the BME 688 circuit board

    clipboard_ef9f302ff2b12eecd92f898495a02c25a.pngFigure \(\PageIndex{1}\):Fritzing diagram of BME680 and an image of an AdaFruit BME 688 circuit board mounted on a PCB. (Belford CC 0.0)

     

     

    SPI Connections

    SPI (Serial Peripheral Interface) is one of the common serial communication protocols and is described in more detail in the Wired Systems section of Digital Communications of the IOST hyperlibrary. SPI communication uses 6 pins (note the BME680/688 has 7 pins and one is unused).  These are

    • VIN (Voltage In) - you can use 3-5 V DC as there is a 3.3 voltage regulator.  We will hook this up to a 3.3 Volt power supply
    • 3Vo - this is a 3.3 voltage output (the internal regulator will drop down a 5 V input to 3.3V and this can be output through this pin)
    • GND - Ground
    • SCK - Serial Clock - which is used to synchronize the various signals
    • SDO - Serial Data Out -  (MISO line) which is the output from BME 680 to the microcontroller
    • SDI - Serial Data In - (MOSI line) which is the input where the BME 680 receives data from the microcontroller
    • CS - Chip Select - this starts the serial transaction when it drops to low.

     

     

     

     

     

     

    ESP32 Dev Kit V1 PinOut

     

    clipboard_e939b2d77754fa7b79c23aab9e3c370ce.pngFigure \(\PageIndex{1}\): Copy and Paste Caption here. (Copyright; author via source)

     

    datasheet

    BME688/ESP32 circuit

     

    Parallel Hookup

     

    clipboard_e793e6791f334ee7e43b41edf004a4a87.pngFigure \(\PageIndex{1}\): Copy and Paste Caption here. (Copyright; author via source)

     

     

    Series Hookup

    clipboard_e0c7d5438b2afc0d881c9950aec06ec4c.pngFigure \(\PageIndex{1}\): Copy and Paste Caption here. (Belford CC BY)

     

    Key:

    • red - 5 V hot
    • white - ground
    • blue - Serial Clock (SCK) - input D18, common to all sensors
    • grey - Serial Data Out (SDO, MISO) - input 18, common to all sensors
    • purple - Serial Data In (SDI,MOSI) - input 17, common to all sensors
    • green - Chip Select (CS), unique input for each sensor
      • D14 - sensor 1
      • D13 - sensor 2
      • D05 - sensor 3

    3: BME688/ESPDevKitV1 is shared under a not declared license and was authored, remixed, and/or curated by LibreTexts.

    • Was this article helpful?