Pseudo-Medical Monitor: Difference between revisions

From LVL1
Jump to navigation Jump to search
Line 230: Line 230:


===Library Modification===
===Library Modification===
<code>
<nowiki>
// In this Library : <nowiki>#</nowiki>include <SparkFunMLX90614.h>  
// In this Library : #include <SparkFunMLX90614.h>  


//Change the following line in the bool IRTherm::I2CReadWord(byte reg, int16_t * dest) routine.
//Change the following line in the bool IRTherm::I2CReadWord(byte reg, int16_t * dest) routine.
Line 248: Line 248:


       _i2cPort->requestFrom(_deviceAddress, (uint8_t) 3, (uint32_t)reg, (uint8_t)1, (uint8_t)true);
       _i2cPort->requestFrom(_deviceAddress, (uint8_t) 3, (uint32_t)reg, (uint8_t)1, (uint8_t)true);
</code>
</nowiki>


===Defines - Variables - Routines===
===Defines - Variables - Routines===

Revision as of 21:37, 16 October 2021

Pseudo-Medical Monitor for Christmas Cheap Gift

In preparation for the expected Christmas Gift availability crisis, I present the Pseudo-Gift of the season. The time honored tradition of knockoff products hitting the market before Christmas is alive and well. What better than a multi-property knockoff device? Star Trek / Arduino / Medical knockoff device gift for everyone. This Pseudo-Medical Tricorder ripoff is the stocking stuffer for 2021.

Operations

  • Thermal Image from AMG8833 Sensor.
  • Ambient and Object Temperature from MLX90614 Sensor.
  • Distance of device from user via VL53L0X Laser TOF Sensor.
  • Pulse Rate from MAX30102 Sensor
  • Fingerprint Scan image capture from Capacitive Sensor with ID809 processing capabilities.

Parts List

  • Arduino Due Generic Clone (alternative: ITEADUINO DUE)

  • Arduino Mega Prototype Shield Generic Clone (alternative: KEYESTUDIO)

  • MLX90614 Contactless Temperature Sensor Generic Clone (alternative: )

  • AMG8833 Thermal Imager Sensor Generic Clone (alternative: TinyCircuits)

  • VL53L0X TOF Laser Distance Sensor Generic Clone (alternative: Onyehn)

  • MAX30102 Pulse and O2 Saturation Sensor Generic Clone (alternative: MH-ET Live)

  • Capacitive Touch Fingerprint Scanner Generic Clone (alternative: DFROBOT)

  • 160x128 LCD TFT SPI 1.8" Module with SD Socket Generic Clone (alternative: Heyaodz111208)

Wiring

Pin Mapping
Due Pin Function MLX90614 AMG8833 VL53L0X MAX30102 FP Scan TFT SD Socket
3 Interrupt IRQ
4 Interrupt INT
5 Interrupt INT
6 Digital I/O GPIO1
7 Digital I/O XSHUT
8 Digital I/O SD_CS
9 Digital I/O RST
10 Digital I/O CS
11 Digital I/O AO
18 TX_1 RX
19 RX_1 TX
20 SDA SDA SDA SDA SDA
21 SCL SCL SCL SCL SCL
SPI MISO SD_MISO
SPI MOSI SDA SD_MOSI
SPI SCK SCK SD_SCK

Code

Special Libraries

#include <Adafruit_GFX.h>

#include <Adafruit_ST7735.h>

#include <Adafruit_VL53L0X.h>

#include <Adafruit_AMG88xx.h>

#include <MAX30105.h>

#include <SparkFunMLX90614.h>

#include <DFRobot_ID809.h>

Library Modification

// In this Library : #include <SparkFunMLX90614.h> 

//Change the following line in the bool IRTherm::I2CReadWord(byte reg, int16_t * dest) routine.

//

//  I2C processing change needed for Arduino Due implementation

//

// Comment Out Line Below

//	_i2cPort->requestFrom(_deviceAddress, (uint8_t) 3, (uint8_t) true); 

// Add Line Below

      _i2cPort->requestFrom(_deviceAddress, (uint8_t) 3, (uint32_t)reg, (uint8_t)1, (uint8_t)true);

Defines - Variables - Routines

#include <Wire.h>
#include <SPI.h>

#include <Adafruit_GFX.h>    
#include <Adafruit_ST7735.h> 
#include "Adafruit_VL53L0X.h"
#include <Adafruit_AMG88xx.h>
#include <MAX30105.h>
#include <SparkFunMLX90614.h> 
#include <DFRobot_ID809.h>
#include "bmpHeader.h"
#include <SD.h>

#include "TFT_Stuff.h"

#include "HB_Stuff.h"
#include "AMG_Stuff.h"
#include "VL_Stuff.h"
#include "CT_Stuff.h"
#include "FP_Stuff.h"

void setup()
{
  Wire.begin();
  Serial.begin(115200);

  Serial.println("SETUP - Begin");
  Serial.println("TFT");
  setup_TFT();
  Serial.println("CT");
  setup_CT();
  Serial.println("AMG");
  setup_AMG();
  Serial.println("VL");
  setup_VL();  
  Serial.println("HB");
  setup_HB();
  Serial.println("FP");
  setup_FP();
  Serial.println("SETUP - End");
}



void loop()
{
  VL_Frame();
  AMG_Frame();
  CT_Frame();
  FP_Frame();
  HB_Frame();
}