Monitor Suhu & Kelembaban (Temperature & Humidity) Sensor DHT22 dan NodeMCU ESP8266 Interface 7Segment Modul
Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang dapat memonitor suhu dan kelembaban atau temperature dan humidity dengan menggunakan sensor DHT22. alat ini menggunakan interface 7Segment modul yang mana untuk menampilkan nilai suhu dan nilai kelembaban. untuk lebih jelasnya berikut adalah koding dan skemanya.
Tensimeter Digital Fuzzy logic Mamdani Library EFLL
Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang menggunakan Fuzzy Logic untuk tensimeter digital. alat ini seperti halnya tensimeter digital namun ada metode yang dipakai yaitu Fuzzy Logic Mamdani. alat ini terdapat fitur input kolesterol dan berat badan serta tinggi badan. untuk lebih jelasnya berikut adalah koding skemanya.
a. Skema
b. Program Arduino IDE
#include <Fuzzy.h>
#include <Arduino.h>
#include <math.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
//#include <SPI.h>
#include <Keypad.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
int counter;
int motor1 = 12;
int motor2 = 13;
int solenoid1 = 10;
int solenoid2 = 11;
int dataadc;
int tombolx;
int hitung;
float vol;
float mmhg;
float mmhgx;
int sistole;
int diastole;
int sistolex;
int diastolex;
int mark = 0;
long kolesterolnya, massanya;
long tinggi;
int hasilresiko;
int indekmassatubuh, kolesterolz;
float output1;
char customKey;
const byte ROWS = 4;
const byte COLS = 4;
char keys[ROWS][COLS] = {
{'1', '2', '3','A'},
{'4', '5', '6','B'},
{'7', '8', '9','C'},
{'*', '0', '#','D'}
};
byte rowPins[ROWS] = {2,3,4,5}; //connect to the row pinouts of the keypad
byte colPins[COLS] = {6,7,8,9}; //connect to the column pinouts of the keypad
Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara untuk membuat sebuah alat yang dapat memonitor PH dan Flow air dengan menggunakan aplikasi Blynk 2.0. untuk mikrokontroller yang dipakai yaitu Wemos D1 sehingga bisa digunakan untuk IOT. untuk lebih jelasnya berikut adalah komponen dan kodingnya.
Seringnya error terjadi saat upload koding ke Arduino nano disebabkan firmware yang dipakai oleh arduino nano berbeda sehingga cara uploadnya juga ada sedikit perubahan yang harus dilakukan yaitu menyamakan versi arduinonya sesuai firmware yang dipakai arduino nano. berikut adalah tutorial cara upload koding ke arduino nano step by step.
File PDF bisa di download di link berikut. LINK DOWNLOAD
Kendali Motor Stepper Driver TB6600 Fitur Kendali Arah Putaran Menggunakan Potensio
Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang dapat diatur arah putaran dan sudutnya dengan menggunakan potensio, jadi jika potensio ini berputar ke kanan maka motor stepper juga berputar ke kanan, jika potensio berputar ke arah kiri maka motor stepper juga akan bergerak ke arah kiri. jika potensio diam/stop maka motor stepper juga berhenti. untuk lebih jelasnya berikut adalah koding dan skemanya.
a. Skema Alat
b. Program Arduino IDE
#include <Wire.h>
#define dirPin 12
#define stepPin 11
int dataadc1,dataadc2,dataadcold;
int i;
int batasatas;
int batasbawah;
void setup() {
Serial.begin(9600);
pinMode(stepPin,OUTPUT);
pinMode(dirPin,OUTPUT);
}
void loop() {
dataadc1 = analogRead(A0);
delay(100);
Serial.print(dataadc1);
Serial.print(" : ");
Serial.println(dataadc2);
batasatas = dataadc2 + 15;
batasbawah = dataadc2 - 15;
if(dataadc1 > batasatas){
Serial.println("KIRI");
for(i=0;i<30;i++){
digitalWrite(dirPin, LOW); // putar CW jarum jam
digitalWrite(stepPin, HIGH);
delayMicroseconds(700); // ganti delay untuk mempercepat motor
digitalWrite(stepPin, LOW);
delayMicroseconds(700); // ganti delay untuk mempercepat motor
}
}
if(dataadc1 < batasbawah){
Serial.println("KANAN");
for(i=0;i<30;i++){
digitalWrite(dirPin, HIGH); // putar CCW jarum jam
digitalWrite(stepPin, HIGH);
delayMicroseconds(700); // ganti delay untuk mempercepat motor
digitalWrite(stepPin, LOW);
delayMicroseconds(700); // ganti delay untuk mempercepat motor
Kendali Motor Stepper Menggunakan Driver TB6600 dan Fitur Kendali Arah Putar dan Sudut Serta Kembali ke Posisi Awal
Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang dapat dikendalikan menggunakan pushbutton untuk arahnya dan potensio untuk mengatur sudut dari putaran motor stepper. alat ini juga tersedia fitur kembali ke posisi awal. untuk lebih jelasnya berikut adalah koding skemanya.
a. Skema Alat
b. Program Arduino IDE
#include <Wire.h>
#define dirPin 13
#define stepPin 12
int btkiri = 11;
int btkanan = 10;
int btreset = 9;
int dataadc;
int btkirix;
int btkananx;
int btresetx;
int kiri;
int kanan;
int pusat;
int langkah1,langkah2;
int derajat;
int i;
void setup() {
Serial.begin(9600);
pinMode(stepPin,OUTPUT);
pinMode(dirPin,OUTPUT);
pinMode(btkiri,INPUT_PULLUP);
pinMode(btkanan,INPUT_PULLUP);
pinMode(btreset,INPUT_PULLUP);
}
void loop() {
dataadc = analogRead(A0);
btkirix = digitalRead(btkiri);
btkananx = digitalRead(btkanan);
btresetx = digitalRead(btreset);
derajat = map(dataadc,0,1023,0,180);
Serial.print(pusat);
Serial.print(" : ");
Serial.print(langkah1);
Serial.print(" : ");
Serial.print(langkah2);
Serial.print(" : ");
Serial.println(derajat);
if(btkirix == 0){
delay(500);
for(i=0;i<derajat;i++){
digitalWrite(dirPin, LOW); // putar CW jarum jam
digitalWrite(stepPin, HIGH);
delayMicroseconds(700); // ganti delay untuk mempercepat motor
digitalWrite(stepPin, LOW);
delayMicroseconds(700); // ganti delay untuk mempercepat motor
}
kanan++;
}
if(btkananx == 0){
delay(500);
for(i=0;i<derajat;i++){
digitalWrite(dirPin, HIGH); // putar CCW jarum jam
digitalWrite(stepPin, HIGH);
delayMicroseconds(700); // ganti delay untuk mempercepat motor
digitalWrite(stepPin, LOW);
delayMicroseconds(700); // ganti delay untuk mempercepat motor
}
kiri++;
}
pusat = kanan - kiri;
langkah1 = kiri * derajat;
langkah2 = kanan * derajat;
if(btresetx == 0){
delay(500);
if(pusat > 0){ //ke kanan
for(i=0;i<langkah2;i++){ //balik ke kiri
digitalWrite(dirPin, HIGH); // putar CCW jarum jam
digitalWrite(stepPin, HIGH);
delayMicroseconds(700); // ganti delay untuk mempercepat motor
digitalWrite(stepPin, LOW);
delayMicroseconds(700); // ganti delay untuk mempercepat motor
}
pusat = 0;
kiri = 0;
kanan = 0;
}
if(pusat < 0){ // ke kiri
for(i=0;i<langkah1;i++){ //nalik ke kanan
digitalWrite(dirPin, LOW); // putar CCW jarum jam
digitalWrite(stepPin, HIGH);
delayMicroseconds(700); // ganti delay untuk mempercepat motor
digitalWrite(stepPin, LOW);
delayMicroseconds(700); // ganti delay untuk mempercepat motor
Monitor BPM Wireless NRF24L01 Multiple Transmitter Receiver MAX30100 Server Thingspeak
Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat alat yang dapat berfungsi sebagai penghitung Bpm pada 2 alat yang berbeda, alat ini menggunakan sistem wireless dengan 2 transmitter dan 1 receiver. untuk komunikasi wireless ini dengan menggunakan modul NRF24L01 pada 3 buah device tersebut. untuk sensor Bpmnya menggunakan MAX30100. untuk lebih jelasnya berikut adalah koding skemanya.
a. Skema Transmitter - Receiver
2. Program Arduino TRANSMITTER 1
#include <Wire.h>
#include <MAX30100_PulseOximeter.h>
#include <LiquidCrystal_I2C.h>
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
LiquidCrystal_I2C lcd(0x27,16,2); //library lcd
MAX30100* pulseOxymeter; //library
float sensorValue;
float tegangan;
int bpmku;
int counter;
float spo;
float bpm;
byte i;
byte present = 0;
byte type_s;
byte data[12];
byte addr[8];
float celsius, fahrenheit;
int cacah;
PulseOximeter pox;
uint32_t tsLastReport = 0;
String hrData = "";
void onBeatDetected()
{
// Serial.println("Beat!");
}
RF24 radio(9, 10); // CE, CSN
const uint64_t pipe = 0xE8E8F0F0E1LL;
float dataku[4];
float b;
void setup(void) {
lcd.begin();
lcd.clear();
lcd.noCursor();
Serial.begin(9600);
radio.begin();
radio.openWritingPipe(pipe);
pulseOxymeter = new MAX30100();
if (!pox.begin()) {
//Serial.println("FAILED");
for(;;);
} else {
//Serial.println("SUCCESS");
}
pox.setIRLedCurrent(MAX30100_LED_CURR_11MA);
pox.setOnBeatDetectedCallback(onBeatDetected);
}
void loop(void){
pox.update();
b = pox.getHeartRate();
//s = pox.getSpO2();
lcd.setCursor(0,0);
lcd.print("BPM1:");
lcd.print(b,1);
lcd.print(" ");
dataku[0] = 231; // code to identify the transmitter.
dataku[1] = b;
radio.write( dataku, sizeof(dataku) );
}
3. Program Arduino TRANSMITTER 2
#include <Wire.h>
#include <MAX30100_PulseOximeter.h>
#include <LiquidCrystal_I2C.h>
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
LiquidCrystal_I2C lcd(0x27,16,2); //library lcd
MAX30100* pulseOxymeter; //library
float sensorValue;
float tegangan;
int bpmku;
int counter;
float spo;
float bpm;
byte i;
byte present = 0;
byte type_s;
byte data[12];
byte addr[8];
float celsius, fahrenheit;
int cacah;
float b,s,t;
float dataku[4];
PulseOximeter pox;
uint32_t tsLastReport = 0;
String hrData = "";
void onBeatDetected()
{
// Serial.println("Beat!");
}
RF24 radio(9, 10); // CE, CSN
const uint64_t pipe = 0xE8E8F0F0E1LL;
void setup(void) {
lcd.begin();
lcd.clear();
lcd.noCursor();
Serial.begin(9600);
radio.begin();
radio.openWritingPipe(pipe);
pulseOxymeter = new MAX30100();
if (!pox.begin()) {
//Serial.println("FAILED");
for(;;);
} else {
//Serial.println("SUCCESS");
}
pox.setIRLedCurrent(MAX30100_LED_CURR_11MA);
pox.setOnBeatDetectedCallback(onBeatDetected);
}
void loop(void){
pox.update();
s = pox.getHeartRate();
lcd.setCursor(0,0);
lcd.print("BPM2:");
lcd.print(s,1);
lcd.print(" ");
dataku[0] = 434; // code to identify the transmitter.
dataku[1] = s;
radio.write( dataku, sizeof(dataku) );
}
4. Program Arduino Receiver
#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#include <Wire.h>
#include <ESP8266WiFi.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2); //library lcd
//Replace your wifi credentials here
const char* ssid = "HOTSPOTHPKU";
const char* password = "123456789";
String apiKey = "UYT689JHVVNMI9UV"; // Enter your Write API key from ThingSpeak
const char* resource = "/update?api_key=";
const char* server = "api.thingspeak.com";
int msg[1];
float b,s,t;
float data1;
float data2;
float dataku[4];
int cacah;
unsigned long lastReceiveTime = 0;
unsigned long currentTime = 0;
RF24 radio(D4,D3);
const uint64_t pipe = 0xE8E8F0F0E1LL;
WiFiClient client;
void setup(){
Serial.begin(9600);
radio.begin();
radio.openReadingPipe(1,pipe);
radio.startListening();
// Connect to WiFi network
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
lcd.begin();
lcd.clear();
lcd.noCursor();
lcd.setCursor(0,0);
lcd.print("BPM1:");
}
void loop(){
if (radio.available()) {
radio.read(dataku, sizeof(dataku));
Serial.print(dataku[0]);
Serial.print(" : ");
Serial.println(dataku[1]);
if(dataku[0] == 231.0) // header
{
data1 = dataku[1];
lcd.setCursor(0,0);
lcd.print("BPM1:");
lcd.print(data1,1);
lcd.print(" ");
}
if(dataku[0] == 434.0) // header
{
data2 = dataku[1];
lcd.setCursor(0,1);
lcd.print("BPM2:");
lcd.print(data2,1);
lcd.print(" ");
}
}
if(cacah > 500){
cacah = 0;
kirim();
}
cacah++;
delay(10);
}
void kirim(){
if (client.connect(server,80)) // "184.106.153.149" or api.thingspeak.com