Spresenseとガスセンサ BME680の接続
Addon ボードなのでSpresense本体に取り付けます。SPRESENSEのカメラコネクタに近い側に、この基板のロゴ「SPRESENSE BME680」とSPRESENSE基板上のSONYロゴの向きを揃えます。
LTE拡張ボードへの接続については、ガスセンサ BME680は認識しますが、センサデータ入力の最初はエラーとなり、以降はセンサデータの値の変化がなく、固定値で入力します。
次に、 LTE拡張ボードに接続しようとした資料を示します。
ガスセンサ BME680の信号を次のようにSpresenseの LTE拡張ボードに接続します。
Spresenseの LTE拡張ボードとガスセンサ BME680の接続の接続 ガスセンサ BME680 SpresenseのLTE拡張ボード GND GND 3.3v 3.3V SCL PWM2 SDA PWM3 ガスセンサ BME680 Addon ボードのPin配置を次に示します。
SpresenseのLTE拡張ボードに接続されているガスセンサ BME680のI2Cアドレスをスキャンするプログラム「i2c_scanner.ino」を実行すると、次にように、I2Cアドレス「0x77」が表示されます。なお「i2c_scanner.ino」は、「Wire1.begin()」等の「Wire」を「Wire1」に変更する必要があります。
考えられる原因 ー基板上のR3、R4のパターンはI2Cのプルアップ用の抵抗のためのものです。SPRESENSE基板上でプルアップされているため未実装ですが、他の基板で使う場合は適宜1005サイズの抵抗のはんだ付けが必要かも…。
ガスセンサ BME680スケッチの作成
画面左側のライブラリマネージャで「Adafruit_BME680」を検索して、ガスセンサ BME680スケッチのライブラリ「Adafruit_BME680」をインストールします。
次の手順でスケッチ例「bme682test」を取得します。
取得したスケッチ例「bme682test」を次に示します。spi関連はコメントにしました。
bme682test.ino
//#include <Wire.h>
//#include <SPI.h>
//#include <Adafruit_Sensor.h>
#include "Adafruit_BME680.h"
/*
#define BME_SCK 13
#define BME_MISO 12
#define BME_MOSI 11
#define BME_CS 10
*/
#define SEALEVELPRESSURE_HPA (1013.25)
Adafruit_BME680 bme(&Wire); // I2C
//Adafruit_BME680 bme(&Wire1); // example of I2C on another bus
//Adafruit_BME680 bme(BME_CS); // hardware SPI
//Adafruit_BME680 bme(BME_CS, BME_MOSI, BME_MISO, BME_SCK);
void setup() {
Serial.begin(9600);
while (!Serial);
Serial.println(F("BME680 test"));
if (!bme.begin()) {
Serial.println("Could not find a valid BME680 sensor, check wiring!");
while (1);
}
// Set up oversampling and filter initialization
bme.setTemperatureOversampling(BME680_OS_8X);
bme.setHumidityOversampling(BME680_OS_2X);
bme.setPressureOversampling(BME680_OS_4X);
bme.setIIRFilterSize(BME680_FILTER_SIZE_3);
bme.setGasHeater(320, 150); // 320*C for 150 ms
}
void loop() {
Serial.println(" 1");
if (! bme.performReading()) {
Serial.println("Failed to perform reading :(");
return;
}
Serial.println(" 2");
Serial.print("Temperature = ");
Serial.print(bme.temperature);
Serial.println(" *C");
Serial.print("Pressure = ");
Serial.print(bme.pressure / 100.0);
Serial.println(" hPa");
Serial.print("Humidity = ");
Serial.print(bme.humidity);
Serial.println(" %");
Serial.print("Gas = ");
Serial.print(bme.gas_resistance / 1000.0);
Serial.println(" KOhms");
Serial.print("Approx. Altitude = ");
Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
Serial.println(" m");
Serial.println();
delay(2000);
}
ガスセンサ BME680スケッチについては、「新しいセンサクライアントを作ってみる」に従ってスケッチを作成するように説明されていますが、指定されたライブラリには ガスセンサ BME680スケッチ例はありせんでした。
ガスセンサ BME680スケッチの実行
SpresenseとTFT液晶の接続
Spresense LTE拡張ボードとILI9341搭載2.8インチSPI制御タッチパネル付TFT液晶 MSP2807を次のように接続します。Spresense LTE拡張ボードのジャンパーピン「CN2」を3.3Vに接続します。3.3Vにレベルシフトされます。
| LTE拡張ボード | TFT液晶 |
|---|---|
| 3.3V | LED |
| SPI3_SCK | SCK |
| SPI3_MISO | SDO(MISO) |
| SPI3_MOSI | SDI(MOSI) |
| SPI3_CS0 | CS |
| PWM3(D03) | RESET |
| PWM2(D09) | DC |
| 3.3V | VCC |
| GND | GND |
SDOは9ピンで、LED信号の次になりますが、TFT液晶 MSP2807からの読み込みを行わない場合、接続する必要はありません。
表示スケッチの作成
- 画面左側のライブラリマネージャで「Adafruit_ILI9341」を検索して、「Adafruit_ILI9341」をインストールします。
- 表示スケッチは次に示すスケッチ例「graphicstest」を参照して作成します。
- 作成した表示スケッチ「SpresenselteILI9341.ino」を次に示します。
SpresenselteILI9341.ino
#include "SPI.h"
#include "Adafruit_ILI9341.h"
#define TFT_CS 32
#define TFT_RST 3
#define TFT_DC 9
Adafruit_ILI9341 tft = Adafruit_ILI9341(TFT_CS, TFT_DC, TFT_RST);
void setup() {
Serial.begin(115200);
Serial.println("ILI9341 text start!");
tft.begin();
tft.setRotation(3);
testText();
}
void loop(void) {
}
unsigned long testText() {
tft.fillScreen(ILI9341_BLACK);
unsigned long start = micros();
tft.setCursor(0, 0);
tft.setTextColor(ILI9341_WHITE); tft.setTextSize(1);
tft.println("Hello World!");
tft.setTextColor(ILI9341_YELLOW); tft.setTextSize(2);
tft.println(1234.56);
tft.setTextColor(ILI9341_RED); tft.setTextSize(3);
tft.println(0xDEADBEEF, HEX);
tft.println();
tft.setTextColor(ILI9341_GREEN);
tft.setTextSize(5);
tft.println("Groop");
tft.setTextSize(2);
tft.println("I implore thee,");
tft.setTextSize(1);
tft.println("my foonting turlingdromes.");
tft.println("And hooptiously drangle me");
tft.println("with crinkly bindlewurdles,");
tft.println("Or I will rend thee");
tft.println("in the gobberwarts");
tft.println("with my blurglecruncheon,");
tft.println("see if I don't!");
return micros() - start;
}
表示スケッチの実行
作成した表示スケッチを実行しても、データが表示されませんでした。原因不明
→「Adafruit_ILI9341」との接続が誤っていそう。情報が見つからない。








