Hardware components | ||||||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
![]() |
| × | 2 | |||
![]() |
| × | 2 | |||
| × | 6 | ||||
![]() |
| × | 1 | |||
![]() |
| × | 1 | |||
Software apps and online services | ||||||
![]() |
| |||||
at first I wanted to make my mini arm robot can be controlled and monitored by using wireless control. then I found the NRF24L01 module. which device can send command data to my robot with different frequency channels so that the robot can do the movement and monitoring simultaneously
on the display on the remote control the train is right and KI is left with centimeter units and carrying it is the volt value of the battery.
Mini ARM Robot
#include <nRF24L01.h>
#include <RF24.h>
#include <RF24_config.h>
#include <SPI.h>
uint64_t pipeTx = 0x4A1001LL; //alamat lawan #ROBOT
uint64_t pipeRx = 0x4A1002LL; //alamat sendiri #Joystick
uint8_t CE=9; uint8_t CSN=10;
int msg[1]; int datain; int bawa; int tinggal;
RF24 Radio(CE, CSN);
void setup()
{
Serial.begin(9600);
Radio.begin();
Radio.setChannel(100);
Radio.setPALevel(RF24_PA_HIGH);
Radio.setDataRate(RF24_2MBPS);
Radio.openWritingPipe(pipeTx);
pinMode(6, INPUT); pinMode(5, INPUT);pinMode(2,OUTPUT);
}
void loop()
{
if ( Radio.available() ){digitalWrite(2,HIGH); delay(10);}
bawa=digitalRead(6);
tinggal=digitalRead(5);
if (bawa==0){msg[0]=1; Radio.write(msg, 1); Serial.println("bawa");digitalWrite(2,HIGH);}
else if (tinggal==0){msg[0]=2; Radio.write(msg, 1); Serial.println("tinggal");digitalWrite(2,HIGH);}
}
#include <nRF24L01.h>
#include <printf.h>
#include <RF24.h>
#include <RF24_config.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <SPI.h>
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
uint64_t pipeTx = 0x4A1101LL; //alamat lawan #ROBOT
uint64_t pipeRx = 0x4A1102LL; //alamat sendiri #Joystick
uint8_t CE=9; uint8_t CSN=10; int n=0; boolean Flag = false;
RF24 Radio(CE, CSN);
unsigned char buff[33];
float Vi,R1,R2;
struct Pack {
int data1;
int data2;
} packet;
void setup()
{
Serial.begin(9600);
R1=10000.0; R2=33000.0;
Radio.begin();
lcd.begin(16,2);
lcd.backlight();
lcd.clear();
Radio.setChannel(110);
Radio.setPALevel(RF24_PA_HIGH);
Radio.setDataRate(RF24_2MBPS);
Radio.openReadingPipe(1, pipeRx);
Radio.startListening();
}
void loop()
{
if ( Radio.available())
{
lcd.clear();
Radio.read(&packet, sizeof (packet));
lcd.setCursor(0,0);
lcd.print("Ka");
lcd.setCursor(10,0);
lcd.print("Ki");
if(packet.data1<=80 && packet.data2<=80)
{
lcd.setCursor(3,0);
lcd.print(packet.data1);
lcd.setCursor(13,0);
lcd.print(packet.data2);
}
else
{
lcd.setCursor(3,0);
lcd.print("Err");
}
}
int sensorValue = analogRead(A0);
float voltage = sensorValue * (5.0 / 1023.0);
Vi = voltage / (R2/(R1+R2));
//lcd.clear();
lcd.setCursor(10,1);
lcd.print("V");
lcd.setCursor(5,1);
lcd.print(Vi*3 );
delay(500);
}
#include <nRF24L01.h>
#include <printf.h>
#include <RF24.h>
#include <RF24_config.h>
#include <SPI.h>
uint64_t pipeTx = 0x4A1201LL; //alamat lawan #ROBOT
uint64_t pipeRx = 0x4A1202LL; //alamat sendiri #Joystick
uint8_t CE=9; uint8_t CSN=10;
int msg[1]; int datain;
int maju; int mundur; int kanan; int kiri;
RF24 radio(CE, CSN);
void setup()
{
Serial.begin(9600);
radio.begin();
radio.setChannel(120);
radio.setPALevel(RF24_PA_HIGH);
radio.setDataRate(RF24_2MBPS);
radio.openWritingPipe(pipeTx); delay(50);
pinMode(5, INPUT); pinMode(6, INPUT); pinMode(7, INPUT); pinMode(8, INPUT);
pinMode(2,OUTPUT);
}
void loop()
{
if ( radio.available() ){digitalWrite(2,HIGH); delay(10);}
maju=digitalRead(6);
mundur=digitalRead(5);
kanan=digitalRead(7);
kiri=digitalRead(8);
if (maju==0)
{msg[0]=1; radio.write(msg, 1); Serial.println("maju");digitalWrite(2,HIGH);}
if (mundur==0)
{msg[0]=2; radio.write(msg, 1); Serial.println("mundur");digitalWrite(2,HIGH);}
if (kanan==0)
{msg[0]=3; radio.write(msg, 1); Serial.println("kanan");digitalWrite(2,HIGH);}
if (kiri==0)
{msg[0]=4; radio.write(msg, 1); Serial.println("kanan");digitalWrite(2,HIGH);}
else{digitalWrite(2, LOW);}
}
#include <nRF24L01.h>
#include <RF24.h>
#include <RF24_config.h>
#include <SPI.h>
#include <Servo.h>
Servo bawah; Servo kanan; Servo kiri;
int msg[1];
uint64_t pipeTx = 0x4A1002LL; //alamat lawan #JOYSTICK
uint64_t pipeRx = 0x4A1001LL; //alamat sendiri #ROBOT
uint8_t CE=9; uint8_t CSN=10;
RF24 Radio(CE, CSN);
void awal(){bawah.write(120); kanan.write(80); kiri.write(100);}
void buka(){kanan.write(40); kiri.write(140);}
void tutup(){kanan.write(120); kiri.write(80);}
void angkat(){bawah.write(120);}
void turun(){bawah.write(10);}
void bawa()
{buka();delay(1000);turun();delay(1000);tutup();delay(1000);angkat();}
void tinggal()
{turun();delay(1000);buka();delay(1000);angkat();delay(1000);tutup();delay(1000);}
void setup()
{
Serial.begin(9600);
Radio.begin();
Radio.setChannel(100) ;
Radio.setPALevel(RF24_PA_HIGH);
Radio.setDataRate(RF24_2MBPS);
Radio.openReadingPipe(1, pipeRx);delay(50);
Radio.startListening();
bawah.attach(2); kanan.attach(3); kiri.attach(4);
awal();
}
void loop()
{
if ( Radio.available() )
{
Radio.read(msg,1);
if(msg[0]==1){Serial.println("bawa");bawa();}
else if(msg[0]==2){Serial.println("tinggal");tinggal();}
}
}
#include <nRF24L01.h>
#include <printf.h>
#include <RF24.h>
#include <RF24_config.h>
#include <SPI.h>
#define trigPin1 2
#define echoPin1 3
#define trigPin2 5
#define echoPin2 4
uint64_t pipeTx = 0x4A1102LL; //alamat lawan #JOYSTICK
uint64_t pipeRx = 0x4A1101LL; //alamat sendiri #ROBOT
uint8_t CE=9; uint8_t CSN=10;
RF24 radio(CE, CSN);
long duration1, distance1;
long duration2, distance2;
struct Pack {
int data1;
int data2;
} packet;
void setup()
{
Serial.begin(9600);
radio.begin();
radio.setChannel(110);
radio.setPALevel(RF24_PA_HIGH);
radio.setDataRate(RF24_2MBPS);
radio.stopListening();
radio.openWritingPipe(pipeTx); delay(50);
pinMode(trigPin1, OUTPUT);pinMode(echoPin1, INPUT);pinMode(trigPin2, OUTPUT);pinMode(echoPin2, INPUT);
}
void loop()
{
digitalWrite(trigPin1, LOW); delayMicroseconds(2);
digitalWrite(trigPin1, HIGH); delayMicroseconds(10);
digitalWrite(trigPin1, LOW);
duration1 = pulseIn(echoPin1, HIGH);
distance1 = (duration1/2) / 29.1;
packet.data1 = distance1;
digitalWrite(trigPin2, LOW);delayMicroseconds(2);
digitalWrite(trigPin2, HIGH);delayMicroseconds(10);
digitalWrite(trigPin2, LOW);
duration2 = pulseIn(echoPin2, HIGH);
distance2 = (duration2/2) / 29.1;
packet.data2 = distance2;
radio.write(&packet, sizeof(packet));
delay(500);
}
#include <nRF24L01.h>
#include <printf.h>
#include <RF24.h>
#include <RF24_config.h>
#include <SPI.h>
int msg[1];
int IN1A = 8; int IN2A = 9; int IN3A = 10; int IN4A = 11;
int IN1B = 7; int IN2B = 6; int IN3B = 5; int IN4B = 4;
uint64_t pipeTx = 0x4A1202LL; //alamat lawan #JOYSTICK
uint64_t pipeRx = 0x4A1201LL; //alamat sendiri #ROBOT
RF24 radio(49, 53);
void maju()
{digitalWrite(IN1B, HIGH);digitalWrite(IN2B, LOW);digitalWrite(IN3B, LOW);digitalWrite(IN4B, HIGH);}
void mundur()
{digitalWrite(IN1B, LOW);digitalWrite(IN2B, HIGH);digitalWrite(IN3B, HIGH);digitalWrite(IN4B, LOW);}
void kanan()
{digitalWrite(IN1A, LOW);digitalWrite(IN2A, HIGH);digitalWrite(IN3A, LOW);digitalWrite(IN4A, HIGH);}
void kiri()
{digitalWrite(IN1A, HIGH);digitalWrite(IN2A, LOW);digitalWrite(IN3A, HIGH);digitalWrite(IN4A, LOW);}
void nstop()
{digitalWrite(IN1B, HIGH); digitalWrite(IN1A, HIGH);digitalWrite(IN2B, HIGH); digitalWrite(IN2A, HIGH);
digitalWrite(IN3B, HIGH); digitalWrite(IN3A, HIGH);digitalWrite(IN4B, HIGH); digitalWrite(IN4A, HIGH);}
void putar()
{digitalWrite(IN1A, LOW);digitalWrite(IN2A, HIGH);digitalWrite(IN3A, HIGH);digitalWrite(IN4A, LOW);digitalWrite(IN1B, LOW);digitalWrite(IN2B, HIGH);
digitalWrite(IN3B, LOW);digitalWrite(IN4B, HIGH);}
void putar1()
{digitalWrite(IN1A, HIGH);digitalWrite(IN2A, LOW);digitalWrite(IN3A, LOW);digitalWrite(IN4A, HIGH);digitalWrite(IN1B, HIGH);digitalWrite(IN2B, LOW);
digitalWrite(IN3B, HIGH);digitalWrite(IN4B, LOW);}
void setup()
{
Serial.begin(9600);
radio.begin();
radio.setChannel(120);
radio.setPALevel(RF24_PA_HIGH);
radio.setDataRate(RF24_2MBPS);
radio.openReadingPipe(1, pipeRx);
radio.startListening();
pinMode(IN1A, OUTPUT); pinMode(IN2A, OUTPUT);pinMode(IN3A, OUTPUT); pinMode(IN4A, OUTPUT);
pinMode(IN1B, OUTPUT); pinMode(IN2B, OUTPUT);pinMode(IN3B, OUTPUT); pinMode(IN4B, OUTPUT);
}
void loop()
{
if ( radio.available() )
{
radio.read(msg,1);
if(msg[0]==4){Serial.println("maju");kanan();delay(100);}
if(msg[0]==1){Serial.println("mundur");kiri();delay(100);}
if(msg[0]==2){Serial.println("kanan");maju();delay(100);}
if(msg[0]==3){Serial.println("kiri"); mundur();delay(100);}
else{nstop();}
}
else {Serial.println("disconnect");nstop();}
}
17 projects • 17 followers
Master student at Intelligent Control and Systems Engineering Department



_wzec989qrF.jpg?auto=compress%2Cformat&w=48&h=48&fit=fill&bg=ffffff)







_3u05Tpwasz.png?auto=compress%2Cformat&w=40&h=40&fit=fillmax&bg=fff&dpr=2)
Comments