Pseudo-Medical Monitor: Difference between revisions
| Line 254: | Line 254: | ||
_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> | |||
===Defines - Variables - Routines=== | |||
<code> | |||
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(); | |||
} | |||
</code> | </code> | ||
Revision as of 21:19, 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
Libraries
#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 <SD.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
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();
}







