Melanjutkan tulisan Mencoba Nano 33 BLE Sense saatnya mencoba sensor-sensor yang ada pada modul ini. Sensor yang ada adalah 3D accelerometer, 3D gyroscope, 3D magnetometer (LSM9DS1), MEMS Digital Microphone (MP34DT05), Digital Proximity, Ambient Light, RGB and Gesture (APDS9960), Tekanan Udara (LPS22HB), Suhu dan Kelambaban (HTS221) Chip sensornya kecil kecil sekali!

Langsung saja, untuk mencoba Microphone, bisa kita lihat di sample skecthnya. Pastikan Board sudah bisa terpilih, driver terpasang dan Port juga sudah benar, cek di tulisan Mencoba Nano 33 BLE Sense. Selanjutnya pilih di bagian example -> PDM ->PDMSerialPlotter

Program ini menggunakan mikrofon on-board untuk mendengarkan audio dan memplotnya pada plotter serial. Kita akan melakukan kompilasi yang sangat lambat, membutuhkan waktu sekitar 10 menit untuk mengkompilasi dan mengunggah program. Ini karena integrasi Mbed OS dengan Arduino IDE, semoga Komunitas Arduino bisa memberikan solusi untuk ini.

Sedangkan untuk mencoba sensor-sensor lain, perlu mengistall library sesuai dengan chip sensornya berikut:

Selanjutnya gunakan contoh sketch berikut:
#include <Arduino_LSM9DS1.h> //IMU
#include <Arduino_LPS22HB.h> //Tekanan
#include <Arduino_HTS221.h> //Suhu dan kelembaban
#include <Arduino_APDS9960.h> //Gerakan, cahaya dan proksimiti
void setup(){
Serial.begin(9600);
if (!IMU.begin())
{ Serial.println("Chip IMU tidak ditemukan!"); while (1);}
if (!BARO.begin())
{ Serial.println("Chip Sensor Tekanan tidak ditemukan!"); while (1);}
if (!HTS.begin())
{ Serial.println("Chip Sensor Suhu & Kelembaban tidak ditemukan!"); while (1);}
if (!APDS.begin())
{ Serial.println("Chip Gesture, cahaya dan proksimiti tidak ditemukan!"); while (1);}
}
float accel_x, accel_y, accel_z;
float gyro_x, gyro_y, gyro_z;
float mag_x, mag_y, mag_z;
float Pressure;
float Temperature, Humidity;
int Proximity;
void loop()
{
//Accelerometer
if (IMU.accelerationAvailable()) {
IMU.readAcceleration(accel_x, accel_y, accel_z);
Serial.print("Accelerometer = ");Serial.print(accel_x); Serial.print(", ");Serial.print(accel_y);Serial.print(", ");Serial.println(accel_z);
}
delay (200);
//Gyroscope
if (IMU.gyroscopeAvailable()) {
IMU.readGyroscope(gyro_x, gyro_y, gyro_z);
Serial.print("Gyroscope = ");Serial.print(gyro_x); Serial.print(", ");Serial.print(gyro_y);Serial.print(", ");Serial.println(gyro_z);
}
delay (200);
//Magnetometer
if (IMU.magneticFieldAvailable()) {
IMU.readMagneticField(mag_x, mag_y, mag_z);
Serial.print("Magnetometer = ");Serial.print(mag_x); Serial.print(", ");Serial.print(mag_y);Serial.print(", ");Serial.println(mag_z);
}
delay (200);
//Pressure
Pressure = BARO.readPressure();
Serial.print("Tekanan= ");Serial.println(Pressure);
delay (200);
//Temperature
Temperature = HTS.readTemperature();
Serial.print("Suhu= ");Serial.println(Temperature);
delay (200);
//Humidity
Humidity = HTS.readHumidity();
Serial.print("Kelembaban= ");Serial.println(Humidity);
delay (200);
//Proximity
if (APDS.proximityAvailable()) {
Proximity = APDS.readProximity();
Serial.print("Proksimiti= ");Serial.println(Proximity);
}
delay (200);
Serial.println();
delay(1000);
}
HAsil bisa dilihat di serial monitor
