Smart Hand sanitizer

Smart Hand sanitizer © CC BY

Smart hand sanitizer will take place of employee attendance system and temperature gun with smart notification and record data.

  • 46 views
  • 0 comments
  • 5 respects

Components and supplies

Necessary tools and machines

Apps and online services

About this project

In this COVID-19 pandemic period which is a global outbreak, hand hygiene is the core preventive measure in the spread of the disease as advised by WHO (World Health Organization) which includes washing hands with water and soap regularly, hand sanitizing using hand sanitizers, etc.

Hygiene refers to the practices conducive to maintaining health and preventing disease especially through cleanliness such as washing hands, coughing in the elbow etc. Hand washing helps to prevent any diseases that spread through contact. In order to eliminate most of the germs on the hands, we need to apply a good hand washing practice. In most healthcare settings, alcohol-based hand sanitizers are preferable to hand washing with soap and water because it can be easily tolerated and it is also more effective at reducing bacteria. Hand sanitizer is a liquid, gel, or foam generally used to decrease infectious agents on the hands. A sanitizer is designed to kill germs on skin, objects and surfaces.

This project aim to design and implement a low cost smart hand sanitizer dispenser with door controller. It is based on ARDUINO MKR 1010 wifi (Micro-controller), Thermal temperature sensor and Ultrasonic rangefinder sensor (an ultrasonic sensor is used to check the presence of hands below the outlet of the sanitizer machine), RFID (attendance if you are an employee) that can help to solve the challenges faced by security guards at different stations such as bank doors, school gates, hospital gates etc.

In enforcing this hand sanitizing action before letting people in to where ever they intend to enter as some people are not willing to collaborate, some look at it as a wastage of their time and also sometimes security guards can let some people in without sanitizing and without check body temperature just because they are their friends or family or relatives, which is very risky. Therefore, the smart hand sanitizer is stationed at the entrance door and it is connected to the door in such a way that it controls it. That is to say, when a person(s) wants to access the entrance door, they must first sanitizer their hands or else the door will remain locked. With smart hand sanitizer dispenser, if you are employee first put Your RFID tag near RFID scanner after that put hand under smart sanitizer then the sanitizer outlet dropping some amount into your hands at that time thermal temp sensor automatically check body temperature, If temperature is normal it commands to the micro-controller to turn on the servo motor and it will open the entrance door and allow a person to enter and lighting up a green LED and in the other case if temperature is high so it will indicate RED led and beep a buzzer. Otherwise, the door will neither unlock nor open but a Both LED will continuously blink and send your Entry time, date and your Body temperature data in a google sheet with all personal details. so admin will monitor all employee details through google sheet.

We are also able to get attendance system in this smart hand sanitizer. So need to use that old fingerprint scanner machine and all. Just ID card will work.

With Help of This smart sanitizer no need to touch anything. So it is true to say “TOUCH LESS DO MORE”.

Inventiveness :

  • Sanitizing Proper hands and not touch everywhere is a must to prevent COVID-19. However, pressing the bottle nozzle, Open the door of offices, shops, factories is unhygienic. Let's avoid and go touch less with Smart Sanitizer, that will ensure that you maintain proper hygiene and health in public spaces. Many Automatic Sanitizers are available in market but it only sanitize your hands nothing else it is useful but some time we need something more.so we come with something different idea about this employee attendance using RFID and automatically check body temperature even they sanitize their hands and save the all data threw internet and admin will see and track all the data of every employee in Our Dashboard We try solve the problem so that no need to touch anything. this is different from other automatic sanitizers.

Hardware :

1. Arduino MKR 1010 Wifi

Arduino MKR1000 has been designed to offer a practical and cost effective solution for makers seeking to add Wi-Fi connectivity to their projects with minimal previous experience in networking.It is based on the Atmel ATSAMW25 SoC (System on Chip), that is part of the SmartConnect family of Atmel Wireless devices, specifically designed for IoT projects and devices.

The ATSAMW25 is composed of three main blocks:

  • SAMD21 Cortex-M0+ 32bit low power ARM MCU
  • WINC1500 low power 2.4GHz IEEE® 802.11 b/g/n Wi-Fi
  • ECC508 CryptoAuthentication

The ATSAMW25 includes also a single 1x1 stream PCB Antenna.

2. MLX90614

The MLX90614 is an Infra Red thermometer for noncontact temperature measurements. Both the IR sensitive thermopile detector chip and the signal conditioning ASSP are integrated in the same TO-39 can. its low noise amplifier, 17-bit ADC and powerful DSP unit, a high accuracy and resolution of the thermometer is achieved. The thermometer comes factory calibrated with a digital PWM and SMBus (System Management Bus) output. As a standard, the 10-bit PWM is configured to continuously transmit the measured temperature in range of -20…120˚C, with an output resolution of 0.14˚C. The factory default POR setting is SMBus.

3. RC0522

The RC522 is a 13.56MHz RFID module that is based on the MFRC522 controller from NXP semiconductors. The module can supports I2C, SPI and UART and normally is shipped with a RFID card and key fob. It is commonly used in attendance systems and other person/object identification applications.The RC522 is a RF Module that consists of a RFID reader, RFID card and a key chain. The module operates 13.56MHz which is industrial (ISM) band and hence can be used without any license problem. The module operates at 3.3V typically and hence commonly used in 3.3V designs. It is normally used in application where certain person/object has to be identified with a unique ID.

4. ULTRASONIC SENSOR LV MAXSONAR EQUIVALENT MB1040

Features of the MB1040, LV-MaxSonar-EZ4, include one-inch resolution, the narrowest beam width of any sensor in the LV‑MaxSonar‑EZ sensor line, range information from upto 254 inches, a 20Hz read rate, and various output options: pulse-width, analog voltage, and RS232 serial.The MB1040 is a great choice for applications where only larger objects need to be detected.The MB1040 from the LV‑MaxSonar‑EZ line of sensors is a very small, less than one cubic inch, ultrasonic sensor component module. This sensor comes with mounting holes provided on the circuit board for easy installation in nearly all applications.

In addition, the MB1040 learns the ringdown pattern when commanded to start ranging. This helps the sensor to learn the environment and can help the sensor ignore obstacles that are present at power-up.

5. Servo Motor

A servo motor is an electrical device which can push or rotate an object with great precision. If you want to rotate and object at some specific angles or distance, then you use servo motor. It is just made up of simple motor which run through servo mechanism. If motor is used is DC powered then it is called DC servo motor, and if it is AC powered motor then it is called AC servo motor. We can get a very high torque servo motor in a small and light weight packages. Doe to these features they are being used in many applications like toy car, RC helicopters and planes, Robotics, Machine etc.

6. DC water pump

A pump is a device that moves fluids or sometimes slurries, by mechanical action, typically converted from electrical energy into Hydraulic energy. Pumps can be classified into three major groups according to the method they use to move the fluid: direct lift, displacement, and gravity pumps.Pumps operate by some mechanism (typically reciprocating or rotary), and consume energy to perform mechanical work moving the fluid. Pumps operate via many energy sources, including manual operation, electricity, engines, or wind power, and come in many sizes, from microscopic for use in medical applications, to large industrial pumps.

7. Potentiometer

A potentiometer is a three-terminal resistor with a sliding or rotating contact that forms an adjustable voltage divider.If only two terminals are used, one end and the wiper, it acts as a variable resistor or rheostat.The measuring instrument called a potentiometer is essentially a voltage divider used for measuring electric potential (voltage); the component is an implementation of the same principle, hence its name.

Potentiometers are commonly used to control electrical devices such as volume controls on audio equipment

How's Dashboard Look ?

Home Page :

User Data Page :

Registration Page :

Read Tag ID :

User Temperature Data :

phpMyAdmin :

1. Create one table for user data.

2. Create second table for user temperature and it's also take data of attendance.

For Firebase and Google sheet :

Status to showcase :

  • Sanitizing hands is a must to prevent COVID-19. For factories, offices, hospitals, shops are Increasing concerns regarding health safety and precautionary measures for wellness. This factor is expected to drive the market growth.
  • Transformation of lifestyle of individuals resulting in increased healthcare expenditure and better health measures; this factor is expected to drive the growth of the market.
  • Cost-effective and Employee attendance with health record track features even with purifying capabilities associated with this product is expected to drive the market growth To facilitate smooth usage, one can adjust the volume of the spray mist/sanitizer that will be dispenses. Also, its Zero Drop design minimizes leakage and ensures high precision for disinfecting hands. It sprays the right amount of sanitizer and also becomes ready for the next person quickly within seconds. Smart Sanitizer lowers the overall cost of using sanitizer in a premise.
  • It results in lower pilferage and optimized consumption. Sanitizer can be purchased in bulk and environmental wastage of disposable sanitizer bottles can also be reduced.

Future scope :

  • At this time we target Offices, Factories, Companies employees but in the upcoming version we add the functionality for a Visitor of any Shops, hotels, Banks, hospitals etc. so this machine will work for both employee of organization and Visitor also.
  • Also add employee dashboard when the employee also Monitor their data.

Conclusion :

  • The system surely help in implementing the hand hygiene without any challenges as it is a must to sanitizer if you are to access any entry point. It is much safer and more recommended due to its touch less property which zeros down any chances for cross contamination. This is a user friendly system that anyone can make use of. It can be concluded here that the system has been successfully implemented and the aim is achieved without any deviations.

Code

Smart Hand SanitizerArduino
For Google firebase and google sheet
/*
   Component List :
   1. Pump : https://www.ebay.com/c/15012640609#oid253232507165
   2. IR Sensor : https://robotantra.com/robotantra-ir-proximity-sensor-for-line-follower-and-obstacle-sensing-robots.html
   3. RFID Reader/Writer : https://bm-es.com/product/rfid-reader-writer-rc522/?gclid=EAIaIQobChMIksmsz_up6gIVkn0rCh2YEQ8mEAYYBSABEgJcovD_BwE
   4. MLX90614 : https://www.adafruit.com/product/1748
*/

#include <Adafruit_MLX90614.h>
#include <NTPClient.h>
#include <Servo.h>
#include <WiFiUdp.h>
#include <SPI.h>
#include <MFRC522.h>
#include <WiFiNINA.h>
#include "Firebase_Arduino_WiFiNINA.h"


const long utcOffsetInSeconds = 19800;
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "pool.ntp.org", utcOffsetInSeconds);

#define FIREBASE_HOST "hs300620-81959.firebaseio.com"
#define FIREBASE_AUTH "4UV274Ppbz10pIGhz6AJevIDCSBoVbvgIfVgv7Wy"

const char *host = "api.pushingbox.com";

#define SS_PIN 10
#define RST_PIN 9
MFRC522 mfrc522(SS_PIN, RST_PIN);   // Create MFRC522 instance.

#define red 0     // Red led Connected on pin D1 
#define green 1   // Green led Connected on pin D1
#define buzzer 7  
#define pwPin 3   // PWM Pin for maxsonar sensor
#define door 2    // Servo motor connected on pin D2 to open the door 
#define potPin A2 // Potentiometer Connected on Analog Pin A2
#define pump 4    // DC Senitizer Pump connected on pin D4 

long pulse, inches; //variables needed to store values of Sonar sensor 
Servo servo;   // create servo object to control a servo
boolean a = true;
int val=0;

char ssid[] = "DDIK Makadia";        // your network SSID
char pass[] = "kidd123456789";    // your network password
int status = WL_IDLE_STATUS;     // the Wifi radio's status

Adafruit_MLX90614 mlx = Adafruit_MLX90614();

int noOfEm = 1;
String UserID[1] = {"BD 31 15 2B"};
String path = "/Test";
FirebaseData firebaseData;

void setup()
{
  Serial.begin(115200);   // Initiate a serial communication
  SPI.begin();      // Initiate  SPI bus
  mfrc522.PCD_Init();   // Initiate MFRC522
  mlx.begin();     // Initiate MLX90614
  servo.attach(door); // attaches the servo on pin 2
  Serial.println("Approximate your card to the reader...");
  Serial.println();
  timeClient.begin();
  pinMode(red, OUTPUT);
  pinMode(green, OUTPUT);
  pinMode(buzzer,OUTPUT);
  pinMode(pump,OUTPUT);

  if (WiFi.status() == WL_NO_MODULE) {
    Serial.println("Communication with WiFi module failed!");
    while (true);
  }
  String fv = WiFi.firmwareVersion();
  if (fv < WIFI_FIRMWARE_LATEST_VERSION) {
    Serial.println("Please upgrade the firmware");
  }
  while (status != WL_CONNECTED) {
    Serial.print("Attempting to connect to WPA SSID: ");
    Serial.println(ssid);
    status = WiFi.begin(ssid, pass);
    delay(300);
  }
  Serial.print("You're connected to the network");
  printCurrentNet();
  printWifiData();

  Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH, ssid, pass);
  Firebase.reconnectWiFi(true);
}

void loop()
{
  if ( ! mfrc522.PICC_IsNewCardPresent())
  {
    return;
  }
  if ( ! mfrc522.PICC_ReadCardSerial())
  {
    return;
  }
  Serial.print("UID tag :");
  String content = "";
  byte letter;
  for (byte i = 0; i < mfrc522.uid.size; i++)
  {
    Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " ");
    Serial.print(mfrc522.uid.uidByte[i], HEX);
    content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
    content.concat(String(mfrc522.uid.uidByte[i], HEX));
  }
  content.toUpperCase();
  for (int i = 0; i < noOfEm; i++) {
    if (content.substring(1) == UserID[i]) //change here the UID of the cards that you want to give access
    {
      digitalWrite(red, LOW);
      digitalWrite(green, HIGH);
      servo.write(180);
      digitalWrite(buzzer,HIGH);
      delay(1000);
      digitalWrite(buzzer,LOW);
      servo.write(0);
      Serial.print("Ambient = ");
      Serial.print(mlx.readAmbientTempC());
      Serial.print("*C\tTarget= ");
      Serial.print(mlx.readObjectTempC());
      Serial.println("*C");
      timeClient.update();
      int day1 = timeClient.getDay(); //0 means sunday 
      int hours = timeClient.getHours();
      int minutes = timeClient.getMinutes();
      int seconds = timeClient.getSeconds();
      String time1 = String(day1) + " " + String(hours) + ":" + String(minutes) + ":" + String(seconds);
      Serial.println(time1);
      Firebase.setInt(firebaseData, path + "/" + (i + 1) + "/" + time1 , mlx.readObjectTempC());
      WiFiClient client;
      const int httpPort = 80;
      if (!client.connect(host, httpPort)) {
        Serial.println("connection failed");
        return;
      }
      String url = "/pushingbox?";
      url += "devid=";
      url += "v5435C84E0614CC7";
      url += "&Data=" + i;
      Serial.println(url);
      client.print(String("GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n");
      unsigned long timeout = millis();
      while (client.available() == 0) {
        if (millis() - timeout > 4000) {
          client.stop();
          return;
        }
      }
      while (client.available()) {
        String line = client.readStringUntil('\r');
        Serial.print("Data Sent!");
      }
    }
    else {
      digitalWrite(red, HIGH);
      digitalWrite(green, LOW);
      digitalWrite(buzzer,HIGH);
      Serial.println(" Access denied");
    }
  }
  
  pinMode(pwPin, INPUT);  //Used to read the pulse that is being sent by the MaxSonar device.
  pulse = pulseIn(pwPin, HIGH);
  inches = pulse / 147;
  Serial.print(inches);
  Serial.println("in, ");
  //delay(500);
  val = analogRead(potPin); // Potentiometer Reading Value

  if (inches < 4)
  {
    while (a == true)
    {
      digitalWrite(pump, HIGH);
      delay(val);
      digitalWrite(pump,LOW);
      a = false;
      break;
    }
    while (a == false)
    {
      digitalWrite(pump,LOW);
      delay(1500);
      a = true;
      break;
    }
    
  }
}

void printWifiData() {
  IPAddress ip = WiFi.localIP();
  Serial.print("IP Address: ");
  Serial.println(ip);
  byte mac[6];
  WiFi.macAddress(mac);
  Serial.print("MAC address: ");
  printMacAddress(mac);
}
void printCurrentNet() {
  Serial.print("SSID: ");
  Serial.println(WiFi.SSID());
  byte bssid[6];
  WiFi.BSSID(bssid);
  Serial.print("BSSID: ");
  printMacAddress(bssid);
  long rssi = WiFi.RSSI();
  Serial.print("signal strength (RSSI):");
  Serial.println(rssi);
}
void printMacAddress(byte mac[]) {
  for (int i = 5; i >= 0; i--) {
    if (mac[i] < 16) {
      Serial.print("0");
    }
    Serial.print(mac[i], HEX);
    if (i > 0) {
      Serial.print(":");
    }
  }
  Serial.println();
}
LocalDashboard Arduino
#include <Wire.h>
#include <ArduinoHttpClient.h>
#include <Adafruit_MLX90614.h>
#include <SPI.h>
#include <MFRC522.h>
#include <WiFiNINA.h>

#define SS_PIN 15  //--> SDA / SS is connected to pinout D2
#define RST_PIN 2  //--> RST is connected to pinout D1
MFRC522 mfrc522(SS_PIN, RST_PIN);  //--> Create MFRC522 instance.

#define ON_Board_LED 4  //--> Defining an On Board LED, used for indicators when the process of connecting to a wifi router

#define echoPin 5 // attach pin 4 Arduino to pin Echo of HC-SR04
#define trigPin 18 //attach pin 5 Arduino to pin Trig of HC-SR04

#define red 19
#define green 21
#define sanitizer 22
#define buzzer 23

long duration; // variable for the duration of sound wave travel
int distance; // variable for the distance measurement

int status = WL_IDLE_STATUS;     // the Wifi radio's status
const char* ssid = "DDIK Makadia";
const char* password = "kidd123456789";

WiFiServer server(80);  //--> Server on port 80

int readsuccess;
byte readcard[4];
char str[32] = "";
String StrUID;

Adafruit_MLX90614 mlx = Adafruit_MLX90614();

int noOfEm = 2;
String UserID[2] = {"A0 60 65 A3", "06 FF 39 1B"};

void setup() {
  Serial.begin(115200); //--> Initialize serial communications with the PC
  SPI.begin(); // Init SPI bus
  mfrc522.PCD_Init(); // Init MFRC522
  mfrc522.PCD_DumpVersionToSerial(); // Show details of PCD - MFRC522 Card Reader details
  mlx.begin();
  delay(500);

  if (WiFi.status() == WL_NO_MODULE) {
    Serial.println("Communication with WiFi module failed!");
    while (true);
  }
  String fv = WiFi.firmwareVersion();
  if (fv < WIFI_FIRMWARE_LATEST_VERSION) {
    Serial.println("Please upgrade the firmware");
  }
  while (status != WL_CONNECTED) {
    Serial.print("Attempting to connect to WPA SSID: ");
    Serial.println(ssid);
    status = WiFi.begin(ssid, password);
    delay(300);
  }
  Serial.print("You're connected to the network");
  printCurrentNet();
  printWifiData();
  pinMode(red, OUTPUT);
  pinMode(green, OUTPUT);
  pinMode(sanitizer, OUTPUT);
  pinMode(buzzer, OUTPUT);
  pinMode(trigPin, OUTPUT); // Sets the trigPin as an OUTPUT
  pinMode(echoPin, INPUT); // Sets the echoPin as an INPUT

  pinMode(ON_Board_LED, OUTPUT);
  digitalWrite(ON_Board_LED, HIGH); //--> Turn off Led On Board

  Serial.print("Connecting");
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");

  }
  Serial.println("");
  Serial.print("Successfully connected to : ");
  Serial.println(ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());

  Serial.println("Please tag a card or keychain to see the UID !");
  Serial.println("");
}

void loop() {
  // put your main code here, to run repeatedly
  readsuccess = getid();

  if (readsuccess) {
    HTTPClient http;    //Declare object of class HTTPClient
    String UIDresultSend, postData;
    UIDresultSend = StrUID;
    //Post Data
    postData = "UIDresult=" + UIDresultSend;
    http.begin("http://192.168.2.180:8080/nodemcu/getUID.php");  //Specify request destination
    http.addHeader("Content-Type", "application/x-www-form-urlencoded"); //Specify content-type header
    int httpCode = http.POST(postData);   //Send the request
    String payload = http.getString();    //Get the response payload
    Serial.println(UIDresultSend);
    Serial.println(httpCode);   //Print HTTP return code
    Serial.println(payload);    //Print request response payload
    http.end();  //Close connection
    delay(1000);
  }

  if ( ! mfrc522.PICC_IsNewCardPresent())
    return;
  if ( ! mfrc522.PICC_ReadCardSerial())
    return;
  Serial.print("UID tag :");
  String content = "";
  byte letter;
  for (byte i = 0; i < mfrc522.uid.size; i++)
  {
    content.concat(String(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "));
    content.concat(String(mfrc522.uid.uidByte[i], HEX));
  }
  content.toUpperCase();
  for (int i = 0; i < noOfEm; i++) {
    if (content.substring(1) == UserID[i]) //change here the UID of the card/cards that you want to give access
    {
      digitalWrite(red, LOW);
      digitalWrite(green, HIGH);
      Serial.print("Ambient = ");
      Serial.print(mlx.readAmbientTempC());
      Serial.print("*C\tTarget= ");
      Serial.print(mlx.readObjectTempC());
      Serial.println("*C");
   
      digitalWrite(green, LOW);
    }
    else
    {
      digitalWrite(red, HIGH);
      digitalWrite(green, LOW);
      Serial.println("Access denied");
    }
  }
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);    // Sets the trigPin HIGH (ACTIVE) for 10 microseconds
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);   // Reads the echoPin, returns the sound wave travel time in microseconds
  duration = pulseIn(echoPin, HIGH);
  // Calculating the distance
  distance = duration * 0.034 / 2; // Speed of sound wave divided by 2 (go and back)
  // Displays the distance on the Serial Monitor
  Serial.println(distance);
  if (distance < 100) {
    digitalWrite(sanitizer, HIGH);
    delay(500);
  }
  else {
    digitalWrite(sanitizer, LOW);
  }
}

int getid() {
  if (!mfrc522.PICC_IsNewCardPresent()) {
    return 0;
  }
  if (!mfrc522.PICC_ReadCardSerial()) {
    return 0;
  }
  Serial.print("THE UID OF THE SCANNED CARD IS : ");
  String uid;
  String temp;
  for (int i = 0; i < 4; i++) {
    if (mfrc522.uid.uidByte[i] < 0x10) {
      temp = "0" + String(mfrc522.uid.uidByte[i], HEX);
    }
    else temp = String(mfrc522.uid.uidByte[i], HEX);
    if (i == 3) {
      uid =  uid + temp;
    }
    else uid =  uid + temp;
  }
  StrUID = uid;
  Serial.println("UID " + uid);
  mfrc522.PICC_HaltA();
  return 1;
}
void printWifiData() {
  IPAddress ip = WiFi.localIP();
  Serial.print("IP Address: ");
  Serial.println(ip);
  byte mac[6];
  WiFi.macAddress(mac);
  Serial.print("MAC address: ");
  printMacAddress(mac);
}
void printCurrentNet() {
  Serial.print("SSID: ");
  Serial.println(WiFi.SSID());
  byte bssid[6];
  WiFi.BSSID(bssid);
  Serial.print("BSSID: ");
  printMacAddress(bssid);
  long rssi = WiFi.RSSI();
  Serial.print("signal strength (RSSI):");
  Serial.println(rssi);
}
void printMacAddress(byte mac[]) {
  for (int i = 5; i >= 0; i--) {
    if (mac[i] < 16) {
      Serial.print("0");
    }
    Serial.print(mac[i], HEX);
    if (i > 0) {
      Serial.print(":");
    }
  }
  Serial.println();
}
Dashboard
Dashboard for user data, registration and read tag ID.

Schematics

Schematic
Hackster project schem  msldux9v0g
Circuit Diagram
Circuit diagram rlmmndtdid

Comments

Similar projects you might like

Scent-terrific Smart Candle

Project tutorial by Darian Johnson

  • 4,993 views
  • 0 comments
  • 35 respects

Octopod: Smart IoT Home/Industry Automation Project

Project tutorial by Saksham Bhutani

  • 16,042 views
  • 12 comments
  • 48 respects

Smart Battery Charger Multiplexer with Smart Display

Project tutorial by leonzak

  • 6,651 views
  • 8 comments
  • 21 respects

Smart cane

by saurabhrobotic

  • 7,355 views
  • 23 comments
  • 44 respects

RFID Based Smart Attendance System

Project showcase by team_chkr

  • 5,385 views
  • 1 comment
  • 14 respects
Add projectSign up / Login