Assalamualaikum Wr Wb
Kali ini saya akan share project yang telah selesai saya lakukan yaitu untuk membuat timbangan BMI yang dapat menampilkan status BMI seseorang menggunakan Sensor Ping Dan Load Cell. Sebelum masuk ke koding dan teknisnya mari kita bahas dulu apa itu BMI dan penjelasan singkatnya agar kita paham konsep apa yang akan kita pakai pada project ini.
Apa Itu BMI ?
BMI adalah singkatan dari Body Mass Index, yang merupakan ukuran yang digunakan untuk menilai proporsionalitas perbandingan antara tinggi dan berat seseorang. ... Rumus untuk BMI adalah berat badan (dalam kilogram) dibagi dengan tinggi badan kuadrat (dalam meter), atau disingkat
(BMI = BB/TB2)
Berikut adalah klasifikasi dari perhitungan BMI yang akan menjadi standar perhitungan kita nanti.
Apa saja yang dibutuhkan untuk membuat alat ini ?
untuk penjelasan dan demonya kita lanjut dipostingan berikutnya ya heheheheh
Kali ini saya akan share project yang telah selesai saya lakukan yaitu untuk membuat timbangan BMI yang dapat menampilkan status BMI seseorang menggunakan Sensor Ping Dan Load Cell. Sebelum masuk ke koding dan teknisnya mari kita bahas dulu apa itu BMI dan penjelasan singkatnya agar kita paham konsep apa yang akan kita pakai pada project ini.
Apa Itu BMI ?
BMI adalah singkatan dari Body Mass Index, yang merupakan ukuran yang digunakan untuk menilai proporsionalitas perbandingan antara tinggi dan berat seseorang. ... Rumus untuk BMI adalah berat badan (dalam kilogram) dibagi dengan tinggi badan kuadrat (dalam meter), atau disingkat
(BMI = BB/TB2)
Berikut adalah klasifikasi dari perhitungan BMI yang akan menjadi standar perhitungan kita nanti.
Apa saja yang dibutuhkan untuk membuat alat ini ?
1. Arduino Uno / Nano / Mega
2. Sensor Ping / Ultrasonic
3. Loadcell Yang Support Sampai 150 kg Atau Lebih
4. Mekanik Profil untuk Peletakan Sensor dan Loadcell
Nah setelah semua tersedia mari kita bahas cara kerja alat yang akan kita buat, pada dasarnya alat yang kan kita buat akan menggunakan prinsip pengukuran jarak dari reference point untuk menentukan tinggi orang yang akan diukur, kemudian loadcell akan digunakan untuk mengukur berat badan dari orang yang akan diukur, setelah semua selesai maka mikrokontroler akan melakukan perhitungan berapa BMI orang yang diukur.
nah berikut adalah kodenya
Nah setelah semua tersedia mari kita bahas cara kerja alat yang akan kita buat, pada dasarnya alat yang kan kita buat akan menggunakan prinsip pengukuran jarak dari reference point untuk menentukan tinggi orang yang akan diukur, kemudian loadcell akan digunakan untuk mengukur berat badan dari orang yang akan diukur, setelah semua selesai maka mikrokontroler akan melakukan perhitungan berapa BMI orang yang diukur.
nah berikut adalah kodenya
#include "HX711.h" // HX711.DOUT - pin #A1 // HX711.PD_SCK - pin #A0 // triggerPIn 13 // echoPin 12 HX711 scale(A1, A0); #define trigPin 13 #define echoPin 12 #define led 11 #define led2 10 #define button1 9 #define button2 8 #define button3 7 #define button4 6 long beratBadan,BMI,idealMin,idealMax; long tinggiBadan; bool regUkur = 0; void setup() { Serial.begin (9600); pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); pinMode(led, OUTPUT); pinMode(led2, OUTPUT); pinMode(button1, INPUT); pinMode(button2, INPUT); pinMode(button3, INPUT); pinMode(button4, INPUT); Serial.print("BMI Project"); } void loop() { while (regUkur==0){ if(digitalRead(button1)==0){ ukurTBdanBB(); regUkur=1; } Serial.print("Cek BMI?"); Serial.print("Tekan Tombol 1"); } while (regUkur==1){ if (button2 == 1){ //cetak aktual data } if (button3 == 1){ //cetak BMI Rekomendasi data } if (button4 == 1){ //tombol keluar dari menu regUkur=0; } if (BMI < 17.0){ Serial.println("Kurus Berat"); } else if ((BMI >=17.0)&&(BMI<18.5)){ Serial.println("Kurus Berat"); } else if ((BMI >=18.5)&&(BMI<25.0)){ Serial.println("Ideal"); } else if ((BMI >=25.1)&&(BMI<27.0)){ Serial.println("Gemuk Ringan"); } else if (BMI >27){ Serial.println("Obesitas"); } Serial.println("Berat Ideal Anda"); Serial.print("Min :"); Serial.print(idealMin); Serial.print(" Max :"); Serial.println(idealMax); Serial.print(" Cetak ? "); delay(500); } } long getTinggi(){ long duration, distance, tinggi; digitalWrite(trigPin, LOW); // Added this line delayMicroseconds(2); // Added this line digitalWrite(trigPin, HIGH); // delayMicroseconds(1000); - Removed this line delayMicroseconds(10); // Added this line digitalWrite(trigPin, LOW); duration = pulseIn(echoPin, HIGH); distance = (duration/2) / 29.1; tinggi = 200 - distance; return tinggi; } void calibrationHx711(){ Serial.println("Before setting up the scale:"); Serial.print("read: \t\t"); Serial.println(scale.read()); // print a raw reading from the ADC Serial.print("read average: \t\t"); Serial.println(scale.read_average(20)); // print the average of 20 readings from the ADC Serial.print("get value: \t\t"); Serial.println(scale.get_value(5)); // print the average of 5 readings from the ADC minus the tare weight (not set yet) Serial.print("get units: \t\t"); Serial.println(scale.get_units(5), 1); // print the average of 5 readings from the ADC minus tare weight (not set) divided // by the SCALE parameter (not set yet) scale.set_scale(2280.f); // this value is obtained by calibrating the scale with known weights; see the README for details scale.tare(); // reset the scale to 0 Serial.println("After setting up the scale:"); Serial.print("read: \t\t"); Serial.println(scale.read()); // print a raw reading from the ADC Serial.print("read average: \t\t"); Serial.println(scale.read_average(20)); // print the average of 20 readings from the ADC Serial.print("get value: \t\t"); Serial.println(scale.get_value(5)); // print the average of 5 readings from the ADC minus the tare weight, set with tare() Serial.print("get units: \t\t"); Serial.println(scale.get_units(5), 1); // print the average of 5 readings from the ADC minus tare weight, divided // by the SCALE parameter set with set_scale Serial.println("Readings:"); } long getBeratBadan(){ long berat; berat = scale.get_units(); return berat; } void ukurTBdanBB(){ tinggiBadan=getTinggi(); beratBadan=getBeratBadan(); Serial.print("Tinggi Badan :"); Serial.print(tinggiBadan); Serial.println(" cm"); Serial.print("Berat Badan :"); Serial.print(beratBadan); Serial.println(" kg"); delay(5000); BMI=beratBadan/(pow(tinggiBadan,2)/10000); idealMin=18.5*(pow(tinggiBadan,2)/10000); idealMax=25*(pow(tinggiBadan,2)/10000); delay(500); }
untuk penjelasan dan demonya kita lanjut dipostingan berikutnya ya heheheheh
Emoticon Emoticon