The wearable AC cum Heater was already printed in EFY. Within the wearable AC cum heater, the fan will rotate and funky the physique primarily based on the temperature and vice versa.
We proposed among the extra options for this product that are mentioned beneath.
On this challenge, we moreover proposed a transportable well being monitoring gadget utilizing a Coronary heart charge and temperature sensor. The info might be despatched to the ThingSpeak cloud utilizing ESP8266 Node MCU. On this challenge, we now have used the ESP8266 NODE MCU, Temperature sensor, Coronary heart charge sensor, and OLED show. This proposed on-line well being monitoring system is used to measure physique temperature and pulse charge with none human intervention, and the information is distributed to the cloud and cellular widget for physician’s prognosis functions. It’s useful through the Covid pandemic scenario. An IoT know-how has been used on this challenge for sharing the affected person temperature and coronary heart charge information to the physician’s cell phone for taking speedy care. These information are saved within the cloud and it may be used as a knowledge set. In future, by utilizing this information set the cardiovascular danger may be predicted by utilizing the machine studying algorithm
Elements Used:
- ESP 8266 NODE MCU
- Temperature Sensor (LM23)
- Coronary heart charge Sensor (KY039)
- OLED Show (128×64)
Circuit Diagram:
Design Process:
- The sensor pins are related to the corresponding pins of ESP8266 NODE MCU as per the circit diagram.
- USB mini adapter cable used to energy up the ESP8266 Module.
- Create the channel within the ThingSpeak app and channel API key copied in this system.
- Set WiFi connection to the NODE MCU sort SSID and Password in this system.
- The analog voltage obtained from the temperature sensor and transformed into temperature in diploma Celsius by utilizing the ADC with the next conversion formulation.
LM35_TempC_Sensor1 = Voltage / 10;
LM35_TempF_Sensor1 = (LM35_TempC_Sensor1 * 1.8) + 32;
- Equally the digital coronary heart charge worth obtained from the heartbeat sensor.
- Each the values ship to OLED show by means of SDL and SCL pins.
- Additionally the measures values ship to Thingspeak cloud.
Machine Working:
Machine related to Hand:
Temperature and Coronary heart Fee values ship to Cell widget:
Temperature and Coronary heart Fee values ship to ThingSpeak Cloud:
Prototype Working Video Hyperlink.
Code:
#embrace <Wire.h> #embrace <SPI.h> #embrace <Adafruit_GFX.h> #embrace <Adafruit_SSD1306.h> #embrace <WiFi.h> #embrace "ThingSpeak.h" #outline SCREEN_WIDTH 128 // OLED show width, in pixels #outline SCREEN_HEIGHT 64 // OLED show top, in pixels #outline OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin) Adafruit_SSD1306 show(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); const char* ssid = "HeartStrokeDetector"; // your community SSID (identify) const char* password = "[email protected]"; // your community password int correlation; WiFiClient shopper; unsigned lengthy myChannelNumber = 1700318; const char * myWriteAPIKey = "8SBFEZ26FALQC4CA"; #embrace "esp_adc_cal.h" unsigned lengthy lastTime = 0; unsigned lengthy timerDelay = 30000; #outline LM35_Sensor1 39 int xpin=34; int ypin=35; int LM35_Raw_Sensor1 = 0; float LM35_TempC_Sensor1 = 0.0; float LM35_TempF_Sensor1 = 0.0; float Voltage = 0.0; int datapin=36; int rely=0; unsigned lengthy temp=0; int fallflag; void setup() { Serial.start(9600); WiFi.mode(WIFI_STA); ThingSpeak.start(shopper); // Initialize ThingSpeak if(WiFi.standing() != WL_CONNECTED){ Serial.print("Making an attempt to attach"); whereas(WiFi.standing() != WL_CONNECTED){ WiFi.start(ssid, password); delay(5000); } } if (!show.start(SSD1306_SWITCHCAPVCC, 0x3C)) { Serial.println(F("SSD1306 allocation failed")); for (;;); // Do not proceed, loop endlessly } show.show(); delay(100); show.clearDisplay(); } void loop() { LM35_Raw_Sensor1 = analogRead(LM35_Sensor1); // Calibrate ADC & Get Voltage (in mV) Voltage = readADC_Cal(LM35_Raw_Sensor1); // TempC = Voltage(mV) / 10 LM35_TempC_Sensor1 = Voltage / 10; LM35_TempF_Sensor1 = (LM35_TempC_Sensor1 * 1.8) + 32; int x = analogRead(xpin); //learn from xpin delay(1); // int y = analogRead(ypin); //learn from ypin delay(1); temp=millis(); whereas(millis()<(temp+10000)) { if(analogRead(datapin)<100) { rely=rely+1; whereas(analogRead(datapin)<100); } } rely=rely*6; show.clearDisplay(); show.setTextSize(2); show.setTextColor(WHITE); if(rely==0) { show.setCursor(0, 30); show.print("HB:"); show.print(rely); } else { rely = map(rely, 60, 120, 68, 84); // rely = constrain(sensorValue,68, 84); show.setCursor(0, 30); show.print("HB:"); show.print(rely); } show.setCursor(0, 10); show.print("TEMP:"); // show.setCursor(6, 10); show.print(LM35_TempC_Sensor1); if((x>1500)&&(x<1800)) { show.setTextSize(1); show.setCursor(0, 50); show.print("FALL:"); show.print("FORWARD"); fallflag=1; } else if((x>2100)&&(x<2300)) { show.setTextSize(1); show.setCursor(0, 50); show.print("FALL:"); show.print("BACKWARD"); fallflag=2; } else if((y>1500)&&(y<1800)) { show.setTextSize(1); show.setCursor(0, 50); show.print("FALL:"); show.print("LEFT"); fallflag=3; } else if((y>2100)&&(y<2300)) { show.setTextSize(1); show.setCursor(0, 50); show.print("FALL:"); show.print("RIGHT"); fallflag=4; } else { show.setTextSize(1); show.setCursor(0, 50); show.print("FALL:"); show.print("NORMAL"); fallflag=0; } show.show(); correlation=rely+LM35_TempC_Sensor1; ThingSpeak.setField(1, LM35_TempC_Sensor1); //ThingSpeak.setField(1, temperatureF); ThingSpeak.setField(2, rely); ThingSpeak.setField(3, fallflag); ThingSpeak.setField(4, correlation); // Write to ThingSpeak. There are as much as 8 fields in a channel, permitting you to retailer as much as 8 totally different // items of data in a channel. Right here, we write to discipline 1. int m = ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey); lastTime = millis(); temp=0; rely=0; correlation=0; delay(1000); } uint32_t readADC_Cal(int ADC_Raw) { esp_adc_cal_characteristics_t adc_chars; esp_adc_cal_characterize(ADC_UNIT_1, ADC_ATTEN_DB_11, ADC_WIDTH_BIT_12, 1100, &adc_chars); return(esp_adc_cal_raw_to_voltage(ADC_Raw, &adc_chars));}}