The Best College Academy of Our Small City

ELIN - SMK Negeri 1 Krangkeng Teknik ELektronika Industri

Mobil Pemadam Kebakaran dengan arduino uno

Monday, August 31, 2020

Didalam  membuat  proyek ini, kami akan membangun robot Pemadam Kebakaran sederhana yang dapat bergerak menuju api dan meniup angin dari putaran kipas. Pada versi originalnya digunakan pompa keluar air disekitarnya untuk memadamkan api, anda bisa cek disini untuk detailnya. Model kipas dalam robot ini  sangat sederhana yang akan mengajari kita konsep dasar robotika pemadam kebakaran.

Alat yang dibutuhkan :
Sensor api 1 x 5ch

2x fan kipas modul untuk robot

2 x mini motor  dc Gearbox + roda

Shield Driver l293d

 1 x 8 jumper kabel female to female

Rangkaian skematik 

pemograman :

#include <AFMotor.h> AF_DCMotor MotorL(1); // Motor for drive Left on M1 AF_DCMotor MotorR(2); // Motor for drive Right on M2 AF_DCMotor fanMotor(3); // Motor for Fan on M3 int val; void setup() { Serial.begin(115200); // set up Serial library at 115200 bps Serial.println("*SMARS Firefighter Mod*"); // Set the speed to start, from 0 (off) to 255 (max speed) MotorL.setSpeed(255); MotorL.run(FORWARD); MotorL.run(RELEASE); MotorR.setSpeed(255); MotorR.run(FORWARD); MotorR.run(RELEASE); fanMotor.setSpeed(255); fanMotor.run(FORWARD); fanMotor.run(RELEASE); } void loop() { flameangle(); // aligns the flame on the central sensor setdistance(); // move the robot in the right position int num= maxflame('v'); if (num> 996) { // verify the flame intensitiy fanMotor.run(FORWARD); // actives the fan motor for 2 seconds delay(2000); fanMotor.run(RELEASE); // deative the fan motor }; } //--------------------------------------------------------------------------- // The function maxflame() gets the values from the 5 channels and returns // the position where it finds the max value (if you give 'p' as argument l) // or the max value (if you give 'v' as argument l) // connections: //---------------------- // sensor arduino- // - A1 -. A0 - // - A2 -. A1 - // - A3 -. A2 - // - A4 -. A3 - // - A5 -. A4 - //---------------------- // int maxflame(char l) { int data[5]; // creating an array where store the sensor values int i; for (i=0; i<5; i++) { // read the sensor values and store them into the array data[i]= analogRead(i); }; int mv=0; // max value int mn; // max value position for (i=0; i<5; i++) { // check all the array's elements and sets mv to the maximum value measured and mn to the array's position i if (data[i]> mv) { mv=data[i]; mn=i; } }; if(l=='p') { // returns the position of the maximum value return mn; }; if(l=='v') { // returns the maximum value return mv; } } //--------------------------------------------------------------------------------------- // The function flameangle() move aligns the robot with the flame void flameangle(){ val= maxflame('p'); //store the position of the maxflame into the variable val if(val<2) { // if the position is on the right it makes the robot turn counterclockwise until the max val is measured on the central "eye" while (val!=2) { MotorL.setSpeed(80); MotorR.setSpeed(80); MotorL.run(FORWARD); MotorR.run(BACKWARD); val= maxflame('p'); }; }; Serial.println(val); if(val>2) { // if the position is on the link it makes the robot turn clockwise until the max val is measured on the central "eye" while(val!=2) { MotorL.setSpeed(80); MotorR.setSpeed(80); MotorR.run(FORWARD); MotorL.run(BACKWARD); val= maxflame('p'); }; }; if (val==2) { // When the robot is in front of the flame, it deactivates the motors MotorL.run(RELEASE); MotorR.run(RELEASE); } } //--------------------------------------------------------------------------------------- // The function setdistance() makes the robot move forward or backward until it is at a choosed distance void setdistance() { int md=998; //minimun distance int maxd=980; //maximum distance int tub=996; //tollerance val= maxflame('v'); //if the robot it's too near the flame, it go backward if(val> md) { MotorL.run(BACKWARD); MotorR.run(BACKWARD); } if(val>maxd && val<tub) { //if the robot it's too far from thr flame, it go forward MotorL.run(FORWARD); MotorR.run(FORWARD); } if(val>tub&& val<md) { // if it's at the right distance, it stops. MotorL.run(RELEASE); MotorR.run(RELEASE); } }





Robot RC Nirkabel/wireless nRF24L01 arduino

Sunday, August 30, 2020

Pada pembuatan Robot RC Nirkabel/wireless nRF24L01 membutuhkan  2 arduino , salah satunya ada yang berperan sebagai transmiter dan ada yang sebagai receiver. Untuk mengirim dan menerima data dengan jarak 100 meter lebih  diruang terbuka kecepatan transfer data hanya terbatas pada 250 Kbps dengan menggunakan modul nRF24L01.
Apa saja alat yang dibutuhkan diantaranya adalah:
1. 2 buah arduino uno
2.  2 buah modul nRF24L01
3.  Driver motor dc  l293d
4. 2 buah motor dc gearbox + ban
5. Baterai 12v + holder

Program Arduino Transmitter 

#include  <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"

int msg[1];
int datain;

int maju;
int mundur;
int kanan;
int kiri;

RF24 radio(9,10);

const uint64_t pipe = 0xE8E8F0F0E1LL;

void setup(void){

 Serial.begin(9600);
 radio.begin();
 radio.openWritingPipe(pipe);

 pinMode(13,OUTPUT);

 pinMode(7,INPUT);
 pinMode(6,INPUT);
 pinMode(5,INPUT);
 pinMode(4,INPUT);

 digitalWrite(7,HIGH);
 digitalWrite(6,HIGH);
 digitalWrite(5,HIGH);
 digitalWrite(4,HIGH);

 }

void loop(void){

maju = digitalRead(6);
mundur = digitalRead(4);
kiri = digitalRead(5);
kanan = digitalRead(7);

if(maju == 0){
 msg[0] = 1;
 radio.write(msg, 1);
 //Serial.println(msg[0]);
}
else if(mundur == 0){
 msg[0] = 4;
 radio.write(msg, 1);
 //Serial.println(msg[0]);
}
else if(kiri == 0){
 msg[0] = 3;
 radio.write(msg, 1);
 //Serial.println(msg[0]);
}
else if(kanan == 0){
 msg[0] = 2;
 radio.write(msg, 1);
 //Serial.println(msg[0]);
}
else{
 msg[0] = 5;
 radio.write(msg, 1);
 //Serial.println(msg[0]);
}


}



 Program Arduino Receiver / Slave 

#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"

int msg[1];

RF24 radio(9,10);

const uint64_t pipe = 0xE8E8F0F0E1LL;

//motor kiri
int mtr1 = 2;
int mtr2 = 3;

//motor kanan
int mtr3 = 4;
int mtr4 = 5;

void setup(void){

 Serial.begin(9600);
 radio.begin();
 radio.openReadingPipe(1,pipe);
 radio.startListening();
 pinMode(mtr1, OUTPUT);
 pinMode(mtr2, OUTPUT);
 pinMode(mtr3, OUTPUT);
 pinMode(mtr4, OUTPUT);

 }


 void loop(void){
 
 if (radio.available()){
   bool done = false; 
   while (!done){
     done = radio.read(msg, 1);   
     Serial.println(msg[0]);
  
     if (msg[0] == 1){  
     delay(10);
     digitalWrite(mtr1, HIGH);
     digitalWrite(mtr2, LOW);
     digitalWrite(mtr3, HIGH);
     digitalWrite(mtr4, LOW);
     //delay(200);
     }
     else if (msg[0] == 2){  
     delay(10);
     digitalWrite(mtr1, HIGH);
     digitalWrite(mtr2, LOW);
     digitalWrite(mtr3, LOW);
     digitalWrite(mtr4, LOW);
     //delay(200);
     }
     else if (msg[0] == 3){  
     delay(10);
     digitalWrite(mtr1, LOW);
     digitalWrite(mtr2, LOW);
     digitalWrite(mtr3, HIGH);
     digitalWrite(mtr4, LOW);
     //delay(200);
     }
     else if (msg[0] == 4){  
     delay(10);
     digitalWrite(mtr1, LOW);
     digitalWrite(mtr2, HIGH);
     digitalWrite(mtr3, LOW);
     digitalWrite(mtr4, HIGH);
     //delay(200);
     }
     else {  
     delay(10);
     digitalWrite(mtr1, LOW);
     digitalWrite(mtr2, LOW);
     digitalWrite(mtr3, LOW);
     digitalWrite(mtr4, LOW);
     //delay(200);
     }
     
     delay(10);
   }


 }
 else{
 Serial.println("No radio available");

 }
 }

Selamat mencoba, semoga berhasil.... 

Module Wireless nRF24L01

Friday, August 28, 2020

Komunikasi antar arduino dapat dilakukan dengan menggunakan modul Wireless nRF24L01. Modul ini dapat Aplikasikan pada mobil Rc, perahu RC dll...  

IC nRF24L01 adalah transceiver buatan nordic semiconductor yang bekerja pada frekuensi 2,4 GHz dengan konsumsi daya sangat rendah.  Sebagai transceiver, peranti ini dapat mengirim dan menerima data.  Pada jarak 1000 meter diruang terbuka kecepatan transfer data hanya terbatas pada 250 Kbps, namun hal itu akan, tercapai bila antena luar digunakan. 





Modul nRF24L01 tanpa antena

Modul nRF24L01 dengan antena 

Tutorial pengendalian led dengan modul nRF24L01

Alat Dan bahan yang dibutuhkan adalah :
  1. Arduino Uno 2 pcs
  2. Modul Wireless RF nRF24L01 2 pcs
  3. LED 5mm merah
  4. Push Button
  5. Resistor 220 ohm
  6. Breadboard
  7. Kabel Jumper
  8. Komputer + Software IDE Arduino
Skematik arduino Uno sebagai pengendali (TX)
Dan sebagai Pengendali  RX

 program untuk TX

#include <SPI.h> //penyertaan library header penggunaan interface SPI
#include <nRF24L01.h> //penyertaan library header nRF24L01
#include <RF24.h> //penyertaan library header RF24
int pesan[1];
RF24 radio(9,10); //instruksi untuk chip enable, dan chip selector
const uint64_t pipe = 0xE8E8F0F0E1LL;
int pushbutton = 2; //nama alias pin.2 dengan nama pushbutton
 
void setup(void){
Serial.begin(9600); //penggunaan serial monitor dengan kecepatan 9600bps
radio.begin(); //instruksi memulai prosedur pembacaan module
radio.openWritingPipe(pipe);
pinMode(pushbutton, INPUT);} //deklarasi pushbutton sebagai input
 
void loop(void){
if (digitalRead(pushbutton) == HIGH){ //jika pushbutton ditekan
pesan[0] = 111;
radio.write(pesan, 1);}} //mengirim data

program untuk RX
 
#include <SPI.h> //penyertaan library header penggunaan interface SPI
#include <nRF24L01.h> //penyertaan library header nRF24L01
#include <RF24.h> //penyertaan library header RF24
 
int pesan[1];
RF24 radio(9,10); //pin yang dideklarasikan untuk chip enable, chip selector
const uint64_t pipe = 0xE8E8F0F0E1LL;
int LED = 2; //nama alias untuk pin.2 yaitu LED
 
void setup(void){
Serial.begin(9600); //menggunakan serial monitor pada 9600bps
radio.begin(); //instruksi prosedur mulai pembacaan module
radio.openReadingPipe(1,pipe);
radio.startListening();
pinMode(LED, OUTPUT);} //deklarasi pin sebagai output
 
void loop(void){
if (radio.available()){ //jika terbaca data di module
bool selesai = false;
while (!selesai){ //perulangan apabila selesai = TRUE
selesai = radio.read(pesan, 1);
Serial.println(pesan[0]); //menuliskan informasi di serial monitor
if (pesan[0] == 111){delay(10);digitalWrite(LED, HIGH);} //jika sesuai data, maka LED akan menyala
else {digitalWrite(LED, LOW);}
delay(10);}} //nilai tunda 10 ms untuk pembacaan data berikutnya
else{Serial.println("No radio available");}}


 
 Bila Ada belum punya library
bila tidak bisa download ini
slamat mencoba Semoga berhasil...