01.01.2014 03:16:09
jakabudisantosa

Jaringan Sensor Nirkabel dengan nRF24L01
Oleh : Jaka Budi Santosa , S.si, Apt.

Penggunaan xBee dan Bluethooth sebagai sarana nirkabel bagi saya masih terlalu mahal, untuk itu saya memilih 2.4G Wireless nRF24L01. Memang jangkauan tidak sejauh xBee, tapi masih sesuai dengan kantong saya. Sebagai contoh, seperti yang sudah dibahas di topik sebelumnya, saya gunakan sensor kelembaban dan suhu DHT11. Untuk penampil data saya menggunakan LCD 1602 3 wire (Topik sudah pernah saya bahas terdahulu).
Berikut skema dari rangkaian :

Komponen yang diperlukan :
   - 2 arduino (tipe apa saja)
   - 2 buah nRF24L01
   - 1 buah DHT11
   -  IC 74HC595
   - LCD 1602

Berikut program untuk arduino (Bagian Pemancar) :

#include
dht11 DHT11;
#define DHT11PIN 2
#include
#include "nRF24L01.h"
#include "RF24.h"
int NoData;
int mydata[5];
RF24 radio(9,10);
 
const uint64_t pipe = 0xE8E8F0F0E1LL;
void setup()
{
   NoData=0;
  Serial.begin(9600);
  Serial.println("DHT11 TEST PROGRAM ");
  Serial.print("LIBRARY VERSION: ");
  Serial.println(DHT11LIB_VERSION);
  Serial.println();
  radio.begin();
  radio.openWritingPipe(pipe);
  
}
void loop()
{
 
  Serial.println(" ");
  int chk = DHT11.read(DHT11PIN);
  Serial.print("Read sensor: ");
  switch (chk)
  {
    case 0: Serial.println("OK"); break;
    case -1: Serial.println("Checksum error"); break;
    case -2: Serial.println("Time out error"); break;
    default: Serial.println("Unknown error"); break;
  }     
      mydata[0] =DHT11.humidity;
      mydata[1] =DHT11.temperature;
      mydata[2] = (dewPoint(DHT11.temperature, DHT11.humidity));
      mydata[3] =(dewPointFast(DHT11.temperature, DHT11.humidity));
      mydata[4]= NoData;      
 radio.write( mydata, sizeof(mydata) );
 NoData=NoData+1;
 delay(1000);
}
//---------------------------hitungan---------------------------------------
double Fahrenheit(double celsius)
{
return 1.8 * celsius + 32;
}
double Kelvin(double celsius)
{
return celsius + 273.15;
}
double dewPoint(double celsius, double humidity)
{
double A0= 373.15/(273.15 + celsius);
double SUM = -7.90298 * (A0-1);
SUM += 5.02808 * log10(A0);
SUM += -1.3816e-7 * (pow(10, (11.344*(1-1/A0)))-1) ;
SUM += 8.1328e-3 * (pow(10,(-3.49149*(A0-1)))-1) ;
SUM += log10(1013.246);
double VP = pow(10, SUM-3) * humidity;
double T = log(VP/0.61078);   // temp var
return (241.88 * T) / (17.558-T);
}
double dewPointFast(double celsius, double humidity)
{
double a = 17.271;
double b = 237.7;
double temp = (a * celsius) / (b + celsius) + log(humidity/100);
double Td = (b * temp) / (a - temp);
return Td;
}//end of code

Untuk penerima data 
#include
#include "nRF24L01.h"
#include "RF24.h"
#include
int mydata[5];
 
RF24 radio(9,10);
ShiftLCD lcd(2, 3, 4);
const uint64_t pipe = 0xE8E8F0F0E1LL;
void setup(void)
{
  Serial.begin(9600);
  radio.begin();
  radio.openReadingPipe(1,pipe);
  radio.startListening();
  lcd.begin(16, 2);
  pinMode(5, OUTPUT);// memilih pin 5 untuk LED LCD
}
 
void loop(void)
{
  if ( radio.available() )
  { 
    bool done = false;
    while (!done)
    {
      done = radio.read( mydata, sizeof(mydata) );
          digitalWrite(5, HIGH); //LED LCD Menyala bila ada signal dari sensor
          lcd.setCursor(0, 0);
          lcd.print("No :");lcd.print(mydata[4]);
          lcd.setCursor(0, 1);
          lcd.print("H  :");lcd.print(mydata[0]);lcd.print(" %");
          lcd.setCursor(9, 1);
          lcd.print("C :");lcd.print(mydata[1]);lcd.print(" C");      
      }
  }
  else
  {
      lcd.print("No radio available");
      digitalWrite(5, LOW); //LED mati bila tidak ada signal
  }    
  delay(1000);
  lcd.clear();
}//end of code


/home/jakabudi/Dropbox/Arduino/Bekasi Utara-20140101-00668.jpg
Untuk lebih lanjut mengenai nRF24L01 silahkan lihat di maniacbug .
Penggunaan nRF24L01 yang lain adalah untuk remote control 
 


 

  
Comments 1Hits: 730  

27.07.2013 03:26:06
RIFarfa27

Bagaimana cara membuat sebuah robot car line follower berhenti pada suatu titik. dalam hal ini seperti Kereta api, berjalan mengikuti jalur (line follower) dan berhenti otomatis distasiun lalu kembali berjalan dalam beberapa waktu.

apa saja alat-alat yang dibutuhkan, skema rangkaian dan source code nya Smile


  
Comments 2Hits: 1341  

22.11.2012 11:46:30
puput311285

Karya : Puput Dani Prasetyo Adi, S.Kom

Univ : Fakultas Teknik Elektro , Konsentrasi : Teknik Kendali, Komputer & Elektronika

Universitas Hasanuddin Makassar 2011

XBee_DHT11_Skematic

Gambar 1. Skematik Rangkaian Suhu dan Kelembaban DHT11 dengan Komunikasi Xbee Serial 2 (ZigBee)

Xbee Serial 2 (ZigBee) bisa digunakan sebagai pengganti Kabel, XBee yang ada sekarang bisa dibeli lewat geraicerdas ini, XBee Xbee Serial 2 (ZigBee) bisa digunakan untuk memantau Suhu dan Kelembaban misalnya ruangan Operasi di suatu Rumah Sakit.

Untuk Sensor Suhu dan Kelembaban bisa dilihat di tutorial penulis sebelumnya, tinggal menambahkan Xbee Serial 2 (ZigBee) Pada skematiknya.

Sebenarnya apa perbedaan XBee Serial 2 dengan XBee Serial satu, perbedaannya adalah pada kinerja yang bisa dikerjakan oleh kedua XBee tersebut, pada XBee S1 hanya bisa digunakan untuk komunikasi point to point dan star, untuk Xbee S2 bisa digunakan untuk komunikasi Point to multipoint dan Mesh .

sebenarnya apa yang dibutuhkan untuk konfigurasi Xbee ?

minimal ada 2 Xbee yang dikonfigurasi menjadi router dan Koordinator, untuk koordinator dan Router hal-hal yang diperhatikan adalah :

1. PAN ID Harus sama, misal : 2345

2. Scan Channels, disini penulis menggunakan 1FFE

3. ATDH dan ATDL : adalah destination yang dituju

ATDH Berasal dari SH (Serial Number High)milik router atau koordinator yang dituju

ATDL Berasal dari SL (Serial Number Low) milik router atau koordinator yang dituju

berbeda lagi untuk Mesh Configuration (akan dibahas selanjutnya)

Config

Gambar 2. Konfigurasi Pada Koordinator XBee

maka dengan jarak maksimal 120 m dengan XBee S2 (zIGBee) bisa memantau suhu dan kelembaban ruangan operasi dirumah sakit atau ruangan lain, berbeda lagi dengan spesifikasi XBee yang lain, misalnya XBee Pro :http://www.digi.com/products/wireless-wired-embedded-solutions/zigbee-rf-modules/zigbee-mesh-module/xbee-zb-module#specs 

xctu-dht11

Gambar 3. tampilan Suhu dan Temperature pada X-CTU

bisa dikembangkan lagi, dengan interface di Internet dengan menggunakan PHP Language dan MySQL, berarti menambah dua lagi alat yaitu XIG (DIGI Xbee Internet Gateway X2 dan DIGI Access Point)

Selamat mencoba, semua alat bisa dipesan lewat Gerai cerdas...

Have Fun,

Puput Dani


  
Comments 3Hits: 2899  

27.08.2012 06:48:34
jakabudisantosa

Penggunaan LCD sebagai penampil data adalah hal yang umum. Pengguna arduino sudah sering menggunakan LCD dengan library LiquidCrystal yang dibundel dengan software Arduino. Hal yang memberatkan adalah pengunaan pin Output yang cukup boros untuk menjalankannya. Untuk mode 4 bit memerlukan 6 pin output, dan untuk mode 8 bit memerlukan 10 pin output. 

 Membeli serial LCD atau I2C LCD Backpack adalah cara mengatasi permasalahan pemborosan penggunaan pin output. Tapi cara tersebut cukup mahal. 

Setelah  berburu di belantara dunia maya, ditemukan solusi murah meriah untuk mengatasi pemborosan pin output pada penggunaan LCD. Cara murah itu yaitu dengan menggunakan Latched shit register 74HC595 . Hal ini biasa disebut 3 Wire LCD.  
Rekan-rekan bisa membacanya langsung ke sini
 Hanya saja Chris Parish hanya menyediakan Library yang hanya bisa digunakan pada Arduino versi di bawah 1.0. 
Dengan sedikit pengalaman membaca library, saya sedikit ubah library si Chris tadi, sehingga bisa digunakan pada Arduino Versi 1.0. dan bisa didownload di sini  . Penggunaan library ini sangat mudah , apalagi bagi pengguna library LiquidCrystal.

Berikut skemanya :
 


  3 wire LCD
Comments 16Hits: 3071  

29.03.2012 19:48:17
puput311285

MENAMPILKAN SUHU, TEMPERATURE DAN INTENSITAS CAHAYA

DENGAN ARDUINO UNO DAN SENSOR DHT11  DI LCD 16 X 2




OLEH. PUPUT DANI PRASETYO ADI
 

Sensor DHT11 Suhu dan Kelembaban

 

DHT11 adalah sensor Suhu dan Kelembaban, dia memiliki keluaran sinyal digital yang dikalibrasi dengan sensor suhu dan kelembaban yang kompleks. Teknologi ini memastikan keandalan tinggi dan sangat baik stabilitasnya dalam jangka panjang. mikrokontroler terhubung pada kinerja tinggi sebesar 8 bit. Sensor ini termasuk elemen resistif dan perangkat pengukur suhu NTC. Memiliki kualitas yang sangat baik, respon cepat, kemampuan anti-gangguan dan keuntungan biaya tinggi kinerja.

Setiap sensor DHT11 memiliki fitur kalibrasi sangat akurat dari kelembaban ruang kalibrasi. Koefisien kalibrasi yang disimpan dalam memori program OTP, sensor internal mendeteksi sinyal dalam proses, kita harus menyebutnya koefisien kalibrasi. Sistem antarmuka tunggal-kabel serial terintegrasi untuk menjadi cepat dan mudah. Kecil ukuran, daya rendah, sinyal transmisi jarak hingga 20 meter, sehingga berbagai aplikasi dan bahkan aplikasi yang paling menuntut. Produk ini 4-pin pin baris paket tunggal. Koneksi nyaman, paket khusus dapat diberikan sesuai dengan kebutuhan pengguna.

spesifikasi

• Pasokan Voltage: 5 V

• Rentang temperatur :0-50 ° C kesalahan ± 2 ° C

• Kelembaban :20-90% RH ± 5% RH error

• Interface: Digital
 

Untuk menampilkan Suhu di layar Laptop

Program pada Arduino

#define DHT11_PIN 0      // define analog  port 0

byte read_dht11_dat()

{

  byte i = 0;

  byte result=0;

  for(i=0; i< 8; i++)

  {

    while(!(PINC & _BV(DHT11_PIN)))

    {};  // wait  forever until anlog input port 0 is '1'   (NOTICE: PINC reads all the analog input ports

    //and  _BV(X) is the macro operation which pull up positon 'X'to '1' and the rest positions to '0'. it is equivalent to 1<

    delayMicroseconds(30);

    if(PINC & _BV(DHT11_PIN))  //if analog input port 0 is still '1' after 30 us

      result |=(1<<(7-i)); this="" position="" is="" 1="" p="">

    while((PINC & _BV(DHT11_PIN)));  // wait '1' finish

    }

    return result;

}

void setup()

{

  DDRC |= _BV(DHT11_PIN);   //let analog port 0 be output port

  PORTC |= _BV(DHT11_PIN);  //let the initial value of this port be '1'

  Serial.begin(9600);

  Serial.println("Ready");

}             

void loop()    

{

  byte dht11_dat[5];   

  byte dht11_in;

  byte i;// start condition

  PORTC &= ~_BV(DHT11_PIN);    // 1. pull-down i/o pin for 18ms

  delay(18);

  PORTC |= _BV(DHT11_PIN);     // 2. pull-up i/o pin for 40us

  delayMicroseconds(1);

  DDRC &= ~_BV(DHT11_PIN);     //let analog port 0 be input port

  delayMicroseconds(40);     

  dht11_in = PINC & _BV(DHT11_PIN);  // read only the input port 0

  if(dht11_in)

  {

    Serial.println("dht11 start condition 1 not met"); // wait for DHT response signal: LOW

    delay(1000);

    return;

  }

  delayMicroseconds(80);

  dht11_in = PINC & _BV(DHT11_PIN); // 

  if(!dht11_in)

  {

    Serial.println("dht11 start condition 2 not met");  //wair for second response signal:HIGH

    return;

  }

  delayMicroseconds(80);// now ready for data reception

  for (i=0; i<5; i="" p="">

  {  dht11_dat[i] = read_dht11_dat();}  //recieved 40 bits data. Details are described in datasheet

  DDRC |= _BV(DHT11_PIN);      //let analog port 0 be output port after all the data have been received

  PORTC |= _BV(DHT11_PIN);     //let the  value of this port be '1' after all the data have been received

  byte dht11_check_sum = dht11_dat[0]+dht11_dat[1]+dht11_dat[2]+dht11_dat[3];// check check_sum

  if(dht11_dat[4]!= dht11_check_sum)

  {

    Serial.println("DHT11 checksum error");

  }

  Serial.print("Kelembaban = ");

  Serial.print(dht11_dat[0], DEC);

  Serial.print(".");

  Serial.print(dht11_dat[1], DEC);

  Serial.print("%  ");

  Serial.print("Suhu = ");

  Serial.print(dht11_dat[2], DEC);

  Serial.print(".");

  Serial.print(dht11_dat[3], DEC);

  Serial.println("C  ");

  delay(2000);  //fresh time

}

 

Output :

 

 

 

Gambar rangkaian Sensor DHT11 Pada ARDUINO UNO dan LCD 16 X 11


HASIL DAN FOTO SAAT EKSPERIMENT ATAU PERCOBAAN

 
 

Suhu dan kelembaban yang tampil di LCD

PROGRAM ARDUINO UNO UNTUK MENAMPILKAN SUHU, TEMPERATURE DAN INTENSITAS CAHAYA PADA SENSOR DHT11  DI LCD 16X2

 

//ReadHumTturDHT11alternate2

//ver 19Jly12

//This is a re-written DHT11/ DHT22 reading code.

//DHT stuff in subroutines.

//See for more information....

//http://sheepdogguides.som/arduino/ar3ne1humDHT11.htm

//N.B. "bit" is used in the narrow, computer "1 or 0"

//   sense throughout.

//"DHT" from sensor's names: DHT11, DHT22.

//DHT aka Aosong AM2302, and there's an AM2303 which

//seems to be in the same family.

//Comments on this based on Aosong AM2302, aka DHT22, datasheet.

//Believed to generally apply to DHT11 as well, except in the

//case of the DHT11, I believe the second and fourth bytes are

//always zero.

//***N.B.****

//The code WORKS... the comments may not yet be EXACTLY right.

//See the web-page cited above for latest news.

//This code works with a DHT11 humidity/ temperature sensing module

//from nuelectronics.com, complied with ver 0018 of the Arduino environment

//Sensor attached to P4 (nuelectonics shield)/ analog 0, aka digital 14.

//That "module", according to the

//nuelectronics site, and visual inspection simply provides for easy

//connection of an Aosong DHT11 unit to the nuelectronics datalogging

//shield. Only 3 wires are involved: Vcc, ground, and a single data

//line. One of the DHT11's 4 pins goes nowhere.

//You should not need to change anything except the next line to use

//the software with the sensor on a different line, or for a DHT22.

//Just "huffing" on the sensor from deeply filled lungs should show

//a near instant rise in humidity

//#define dht_PIN 0      //no ; here. deprecate ADC0...

//even though we are using it as a digital pin.

//Other parts of code restrict us to using

//ADC0-5, aka D14-19

#define dht_dpin 14 //no ; here. Set equal to channel sensor is on,

//where if dht_dpin is 14, sensor is on digital line 14, aka analog 0

#define LIGHT_SENSOR_PIN 1

// include the library code:

#include

// initialize the library with the numbers of the interface pins

LiquidCrystal lcd(2, 3, 4, 5, 6, 7);

byte bGlobalErr; //for passing error code back from complex functions.

byte dht_dat[4]; //Array to hold the bytes sent from sensor.

int light_intensity = 0;

unsigned int flip = 0;

void setup(){

        //Blink LED to detect hangs

        pinMode(13, OUTPUT);

        // set up the LCD's number of columns and rows:

        lcd.begin(16, 2);

        lcd.print("HALLO, PUPUT!");

        InitDHT(); //Do what's necessary to prepare for reading DHT

        //Serial.begin(9600);

        delay(300); //Let system settle

        //Serial.println("Humidity and temperature\n\n");

        delay(700); //Wait rest of 1000ms recommended delay before

        //accessing sensor

} //end "setup()"

void loop(){

        // set the cursor to column 0, line 1

        // (note: line 1 is the second row, since counting begins with 0):

        //lcd.setCursor(0, 1);

        // print the number of seconds since reset:

        //lcd.print("100");

        //lcd.print(millis()/1000);

        if ( flip & 1 )

        {

                digitalWrite(13, HIGH);

        } else {

                digitalWrite(13, LOW);

        }

        flip++;

        light_intensity=analogRead(LIGHT_SENSOR_PIN);

        ReadDHT(); //This is the "heart" of the program.

        //Fills global array dht_dpin[], and bGlobalErr, which

        //will hold zero if ReadDHT went okay.

        //Must call InitDHT once (in "setup()" is usual) before

        //calling ReadDHT.

        //Following: Display what was seen...

        switch (bGlobalErr) {

        case 0:

                lcd.setCursor(0, 0);

                // Serial.print("humdity = ");

                lcd.print("Suhu =      C");

                lcd.setCursor(7, 0);

                lcd.print( dht_dat[2], DEC);

                //Serial.print(dht_dat[0], DEC);

                //Serial.print(".");

                //Serial.print(dht_dat[1], DEC);

                //Serial.print("%  ");

                lcd.setCursor(0, 1);

                //Every 7 out of 15 times we show humidity, rest temp

                if ((flip % 15) > 7 )

                {

                        lcd.print("Kelembaban    %");

                        lcd.setCursor(11, 1);

                        lcd.print( dht_dat[0], DEC);

                } else {

                        lcd.print("Cahaya  =      ");

                        lcd.setCursor(8, 1);

                        lcd.print( light_intensity, DEC);

                }

                //Serial.print("temperature = ");

                //Serial.print(dht_dat[2], DEC);

                //Serial.print(".");

                //Serial.print(dht_dat[3], DEC);

                //Serial.println("C  ");

                break;

        case 1:

                //Serial.println("Error 1: DHT start condition 1 not met.");

                break;

        case 2:

                //Serial.println("Error 2: DHT start condition 2 not met.");

                break;

        case 3:

                //Serial.println("Error 3: DHT checksum error.");

                break;

        default:

                //Serial.println("Error: Unrecognized code encountered.");

                break;

        } //end "switch"

        delay(800); //Don't try to access too frequently... in theory

        //should be once per two seconds, fastest,

        //but seems to work after 0.8 second.

} // end loop()

/*Below here: Only "black box" elements which can just be plugged unchanged

   unchanged into programs. Provide InitDHT() and ReadDHT(), and a function

   one of them uses.*/

void InitDHT(){

        //DDRC |= _BV(dht_PIN);//set data pin... for now... as output

        //DDRC is data direction register for pins A0-5 are on

        //PORTC |= _BV(dht_PIN);//Set line high

        //PORTC relates to the pins A0-5 are on.

        //Alternative code...

//        if (dht_dpin-14 != dht_PIN){Serial.println("ERROR- dht_dpin must be 14 more than dht_PIN");};//end InitDHT

        pinMode(dht_dpin,OUTPUT); // replaces DDRC... as long as dht_dpin=14->19

        digitalWrite(dht_dpin,HIGH); //Replaces PORTC |= if dht_pin=14->19

} //end InitDHT

void ReadDHT(){

/*Uses global variables dht_dat[0-4], and bGlobalErr to pass

   "answer" back. bGlobalErr=0 if read went okay.

   Depends on global dht_PIN for where to look for sensor.*/

        bGlobalErr=0;

        byte dht_in;

        byte i;

        // Send "start read and report" command to sensor....

        // First: pull-down i/o pin for 18ms

        digitalWrite(dht_dpin,LOW); //Was: PORTC &= ~_BV(dht_PIN);

        delay(18);

        delayMicroseconds(600);//TKB, frm Quine at Arduino forum

/*aosong.com datasheet for DHT22 says pin should be low at least

   500us. I infer it can be low longer without any]

   penalty apart from making "read sensor" process take

   longer. */

//Next line: Brings line high again,

//   second step in giving "start read..." command

        digitalWrite(dht_dpin,HIGH); //Was: PORTC |= _BV(dht_PIN);

        delayMicroseconds(40); //DHT22 datasheet says host should

        //keep line high 20-40us, then watch for sensor taking line

        //low. That low should last 80us. Acknowledges "start read

        //and report" command.

//Next: Change Arduino pin to an input, to

//watch for the 80us low explained a moment ago.

        pinMode(dht_dpin,INPUT); //Was: DDRC &= ~_BV(dht_PIN);

        delayMicroseconds(40);

        dht_in=digitalRead(dht_dpin); //Was: dht_in = PINC & _BV(dht_PIN);

        if(dht_in) {

                bGlobalErr=1; //Was: Serial.println("dht11 start condition 1 not met");

                return;

        } //end "if..."

        delayMicroseconds(80);

        dht_in=digitalRead(dht_dpin); //Was: dht_in = PINC & _BV(dht_PIN);

        if(!dht_in) {

                bGlobalErr=2; //Was: Serial.println("dht11 start condition 2 not met");

                return;

        } //end "if..."

/*After 80us low, the line should be taken high for 80us by the

   sensor. The low following that high is the start of the first

   bit of the forty to come. The routine "read_dht_dat()"

   expects to be called with the system already into this low.*/

        delayMicroseconds(70);

//now ready for data reception... pick up the 5 bytes coming from

//   the sensor

        for (i=0; i<5; i="" p="">

                dht_dat[i] = read_dht_dat();

//Next: restore pin to output duties

        pinMode(dht_dpin,OUTPUT); //Was: DDRC |= _BV(dht_PIN);

//N.B.: Using DDRC put restrictions on value of dht_pin

//Next: Make data line high again, as output from Arduino

        digitalWrite(dht_dpin,HIGH); //Was: PORTC |= _BV(dht_PIN);

//N.B.: Using PORTC put restrictions on value of dht_pin

//Next see if data received consistent with checksum received

        byte dht_check_sum =

                dht_dat[0]+dht_dat[1]+dht_dat[2]+dht_dat[3];

/*Condition in following "if" says "if fifth byte from sensor

       not the same as the sum of the first four..."*/

        if(dht_dat[4]!= dht_check_sum)

        {bGlobalErr=3; } //Was: Serial.println("DHT11 checksum error");

}; //end ReadDHT()

byte read_dht_dat(){

//Collect 8 bits from datastream, return them interpreted

//as a byte. I.e. if 0000.0101 is sent, return decimal 5.

//Code expects the system to have recently entered the

//dataline low condition at the start of every data bit's

//transmission BEFORE this function is called.

        byte i = 0;

        byte result=0;

        for(i=0; i< 8; i++) {

                //We enter this during the first start bit (low for 50uS) of the byte

                //Next: wait until pin goes high

                while(digitalRead(dht_dpin)==LOW) ;  //Was: while(!(PINC & _BV(dht_PIN)));

                //signalling end of start of bit's transmission.

                //Dataline will now stay high for 27 or 70 uS, depending on

                //whether a 0 or a 1 is being sent, respectively.

                delayMicroseconds(30); //AFTER pin is high, wait further period, to be

                //into the part of the timing diagram where a 0 or a 1 denotes

                //the datum being send. The "further period" was 30uS in the software

                //that this has been created from. I believe that a higher number

                //(45?) would be more appropriate.

                //Next: Wait while pin still high

                if (digitalRead(dht_dpin)==HIGH) //Was: if(PINC & _BV(dht_PIN))

                        result |=(1<<(7-i)); add="" not="" just="" addition="" the="" 1="" p="">

                //to the growing byte

                //Next wait until pin goes low again, which signals the START

                //of the NEXT bit's transmission.

                while (digitalRead(dht_dpin)==HIGH) ;  //Was: while((PINC & _BV(dht_PIN)));

        } //end of "for.."

        return result;

} //end of "read_dht_dat()" 

 

 


  
Comments 16Hits: 8333  

26.01.2012 06:15:17
ejhon

untuk sementara saya baru bisa bikin coding untuk servo dan rfid buatan seedstudio segini saja dan belum sempurna, mohon di bantu dalam perbaikan codingnya. berikut saya lampirkan codingnya.

#include <NewSoftSerial.h>
#include <Servo.h>
byte query[8] = {
  0xAA, 0x00, 0x03, 0x25, 0x26, 0x00, 0x00, 0xBB};
#define rxPin 2
#define txPin 3
Servo myservo;  // create servo object to control a servo
int posopen;
int posclose;
int valservo;    // variable to read the value from the analog pin
NewSoftSerial rfid( rxPin, txPin );
void setup()
{
   Serial.begin(9600);
   rfid.begin(9600);
   myservo.attach(8);
 }

byte val;
int i ;
void loop()
{
  for (i=0 ; i<8 ; i++)
  {
    rfid.print(query[i]) ;
  }
  delay(50);
  while(rfid.available()>0)
 
  {
  val=rfid.read();
  Serial.print(val, HEX);
  Serial.print(" ");
  }
   
  Serial.println("--");
   if (Serial.available() >= 5)
     {
       myservo.write(90);
     for(posclose = 90; posclose>=2; posclose-=1)     // goes from 180 degrees to 0 degrees
     {                               
     myservo.write(posclose);      // tell servo to go to position in variable 'pos'
     delay(50);     // waits 15ms for the servo to reach the position
    Serial.flush();
   
     }
       Serial.print(valservo);
       Serial.println("########");
      myservo.write(90); 
     }
    
  }
 


  
Comments 3Hits: 1902  

06.10.2011 16:41:10
valfa007

Pertama kali belanja di Gerai Cerdas thn lalu (2010) adalah LED RGB (Waktu itu hanya Gerai Cerdas lho yang menyediakan LED RGB via OnlineShop  di daerah Indonesia Barat Wink), begitu saya terima langsung deh... saya coba pengendalian LED RGB pake Arduino yang dikoneksikan ke Komputer melalui serialport, Pembuatan GUI pada komputer dengan VB.net (visual studio 2008).

Berikut ini screenshot dan photo hasil eksperimen:

GUI yang direalisasi pada VB.net



Beberapa hasil warna yang dihasilkan, dan
mungkin sulit dicari warnanya untuk LED satuan biasa


Skematik pada Arduino (Duemilanove / Severino)


List Program untuk Arduino

// program kontrol LEDRGB melalui serial(RS232) 9600bps
// Mikrokontroler : Arduino Duemilanove
// Oleh :Aan Darmawan
// Tanggal : 26 Desember 2010
// cara pengendalian :terima informasi dari serial dengan kode "000" s/d "999"
// urutan pengendalian 1 byte red, 1 byte green dan 1 byte blue
// 0=berarti tergelap , 9=berarti terterang
// web http://valfa.blogspot.com
//
int ledrPin = 9;
int ledgPin = 10;    // LED dihubungkan ke digital PWM pin 9,10,11
int ledbPin = 11;
int faderValue = 0;
int fadegValue = 0;
int fadebValue = 0;

void setup() { 
Serial.begin(9600); // aktifkan komunikasi serial 9600 bps
pinMode(ledrPin,OUTPUT); pinMode(ledgPin,OUTPUT);
pinMode(ledbPin,OUTPUT);
}
void loop() {
 if(Serial.available()>0) // baca byte pertama sebagai data LED merah
{ faderValue = Serial.read();
faderValue=(faderValue-47)*10.34; }
if(Serial.available()>0) // baca byte kedua sebagai data LED hijau
 { fadegValue = Serial.read();
 fadegValue=(fadegValue-47)*22.00; }
 if(Serial.available()>0) // baca byte ketiga sebagai data LED biru
 { fadebValue = Serial.read();
fadebValue=(fadebValue-47)*25.50; }
// kirim ke PIN 9,10,11 (PWM)
 analogWrite(ledrPin, faderValue);
 analogWrite(ledgPin, fadegValue);
 analogWrite(ledbPin, fadebValue);
 delay(500);
}

Programming pada VB.net (visual studio 2008) Buat Disain GUI sebagai berikut:



Programming :
Public Class Form1
    Dim red, green, blue As Integer
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        ColorDialog1.ShowDialog()
        red = ColorDialog1.Color.R() \ 28.3333
        green = ColorDialog1.Color.G() \ 28.3333
        blue = ColorDialog1.Color.B() \ 28.3333
        TextBox1.Text = red & green & blue
        SerialPort1.Write(TextBox1.Text)
        BackColor = ColorDialog1.Color

    End Sub
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        TextBox1.ReadOnly=True
SerialPort1.PortName="COM2"  ' Sesuaikan dengan komputer anda
        SerialPort1.Open()
        SerialPort1.Write("000") 'RGB=000=black
    End Sub
End Class

Catatan:
Pada Properties Object SerialPort1, jangan lupa disesuaikan nama port serialnya
(SerialPort1.PortName) dengan yang tersedia di PC/Notebook anda.

Selamat bereksperimen.....


  VB.net | Pengendalian LED RGB | RGB LED | arduino
Comments 2Hits: 2871  

06.10.2011 09:08:31
admin

RFID_wiring
Beberapa waktu kemarin, ada seorang mahasiswa yang kesulitan untuk mencoba RFID module yang dibelinya beberapa waktu kemarin di Gerai Cerdas. Oleh sebab itu kami merasa perlu untuk membantunya juga mungkin Anda yang hendak menggunakan module tersebut namun belum mengetahui bagaimana cara menggunakannya.

Pertama hubungkan RFID module dan Arduino seperti gambar berikut :

RFID_wiring_Zoom

Berikut kami lampirkan kode pemprograman (sketch) sangat sederhana yang dapat Anda upload ke Arduino Anda untuk mengetahui bahwa ketika RFID tag didekatkan ke sensornya, maka ada kode unik yang masuk ke data serial Arduino.
 

/*-----------------------------------------------------------
RFID Seeed RDM800
Author : Gerai Cerdas
Date   : 05 Oktober 2011
Desc   : Pembaca RFID tag 13.56 MHz
------------------------------------------------------------*/

#include <NewSoftSerial.h>
byte query[8] = {
  0xAA, 0x00, 0x03, 0x25, 0x26, 0x00, 0x00, 0xBB};
#define rxPin 2
#define txPin 3

NewSoftSerial rfid( rxPin, txPin );

void setup() {
  Serial.begin(115200);
  rfid.begin(9600);
}

byte val;
int i ;
void loop() {
  for (i=0 ; i<8 ; i++){
    rfid.print(query[i]) ;
  }
  delay(50);
  while(rfid.available()>0){
    val=rfid.read();
    Serial.print(val, HEX);
    Serial.print(" ");
  }
  Serial.println("--");
}

Uji coba dengan mengaktifkan mode Serial Monitor, sehingga akan tampil layar sebagai berikut  :


  RFID | SeeedStudio | arduino
Comments 7Hits: 5382  

06.10.2011 08:21:25
admin

Thermal_P_2
Hi sahabat Gerai Cerdas,

Sekali-kali membuat aplikasi seperti printer kasir pakai Arduino yuk. Gampang kok. Bahan-bahan yang kita butuhkan adalah sebagai berikut :

  • 1x Seeeduino ATMEGA328 (atau yang sejenisnya : UNO, Duemilanove, atau tipe Arduino yang lain)

  • 1x Thermal Printer

  • 1x 7.2V Li-Po Battery (atau power supply biasa)

  • 1x Mini Kabel USB

  • 5x Jumper

Pertama-tama, hubungkan konektor printer dengan Arduino sebagai berikut :
THERMAL PRINTER ------------ ARDUINO
pin Rx                                            Pin Tx
Pin Tx                                            Pin Rx
Pin Gnd                                        Pin Gnd

Kemudian buat sketch dan upload ke Arduino sebagai berikut :


  thermal printer | seeeduino | micro thermal printer
Comments 3Hits: 2629  

06.10.2011 02:53:57
jakabudisantosa

Saya cukup frustasi, selagi semangat belajar Arduino, ternyata arduino Uno saya jebol. Mungkin karena bersemangat , terjadi kerusakan pada AtMega8u2, sehingga tidak bisa mengupload sketch ke AtMega328.
Karena melihat ada kemungkinan IC AtMega328 bisa dipakai lagi, IC tersebut dilucuti dari PCB Arduino uno, dan dipasang ke bread board... (kalo mau mesan ada kok di geraicerdas,(penulis juga mau)). Sedikit komponen yang perlu ditambahkan, yaitu :
1. Keramik kristal 16.000 MHz (1 buah)
2. Kapasitor 10pF (2 buah)
3. Saklar reset (1 Buah)

4.  7805 (1 Buah)

5.  ATmega328 (hasil melucuti board arduino Uno yang rusak)


Pasang IC ATMega328 pada breadboad, kemudian pasang VCC,GND dan instalasi resetnya.

boarduinoschEdit
 
 Nah untuk mengupload skecth diperlukan FTDI Break Out (geraicerdas). 

 FTDI_Basic_Break

Arduino(RXD) Pin 2 disambungkan ke TXD FTDI
Arduino(TXD) Pin 3 disambungkan ke RXD FTDI
RTS# dari tombol reset disambungkan ke DTR
VCC FTDI ke catu daya +5V
Gnd FTDI ke Gnd Board

Pasangkan kabel USB ....whalaaaaaaa........ada dapat bekerja kembali... 


  
Comments 6Hits: 3287  

04.10.2011 15:43:26
dianartanto

Belajar Arduino memang mengasyikkan. Apalagi bila ditambah dengan harga arduino uno yang lebih murah, wah tambah mengasyikkan. Baru-baru ini, saya iseng-iseng buka taman bermainnya Arduino, yaitu Arduino playground. Nggak sengaja ketemu dengan librari-nya sensor kapasitif (capacitive sensing library) yang dibuat oleh Bp. Paul Badger. Wah wah, hebat deh ni bapak, soalnya banyak sekali fungsi sensor kapasitif ini. Teman-teman bisa membuat saklar yang tersembunyi, karena dengan sensor ini, tidak perlu kontak langsung, hanya butuh nilai dielektrik yang besar. Air merupakan bahan dengan dielektrik yang besar, dan jari tangan kita mengandung banyak air. Jadi kita pun bisa membuat touch screen sederhana, he he he. Untuk lebih jelasnya silahkan melihat situs resminya: http://www.arduino.cc/playground/Main/CapSense, dan juga video contoh hasilnya: http://www.misenso.com/prototyping/playing-with-capacitive-sensor-or-aluminium-foil/139/

Terus, saya juga penasaran, saya coba sensor ini untuk mengukur ketinggian permukaan air. Wah, hasilnya lancar teman-teman. Oya, sebelum sampai ke bagian teknisnya, saya beri teorinya sedikit ya, hehehe. Alasan mengapa memilih menggunakan sensor kapasitif sebagai pendeteksi ketinggian air, ada banyak, beberapa di antaranya adalah, dengan sensor kapasitif, teman-teman dapat mengukur ketinggian air pada tempat-tempat tertutup, seperti botol infus, dll, di mana sensor ultrasonik tidak dapat digunakan. Dengan sensor kapasitif, tidak ada aliran arus, sehingga aman digunakan untuk bahan cairan yang mudah terbakar. Juga penghantar sensor kapasitif tidak perlu terpapar langsung dengan bahan cair yang dideteksi. Ini hal yang menarik, karena teman-teman bisa membuat penghantarnya dilapisi dengan cat atau bahan isolator yang lain. Jadi selain aman buat bahan cair yang dideteksi, juga aman buat penghantarnya, karena tidak akan terjadi korosi atau elektrolisis.

Langsung ke bagian teknisnya: Oya sebelum lupa, untuk botol infus, teman-teman bisa melapisi botol itu pada wadah botol dengan 2 buah potongan aluminium foil. Jadi pada dasarnya dibutuhkan 2 penghantar, yang saling berhadapan dengan sedikit sela untuk bahan dielektrik. Nilai kapasitansi akan berbanding lurus dengan bahan dielektrik dan penampang kedua penghantar, dan berbanding terbalik dengan jarak selanya. Dalam percobaan yang saya buat ini, saya menggunakan 2 buah potongan pcb, dan saya isolasi untuk membuat penghantarnya tidak terkena langsung dengan air. Jangan sampai penghantar tersebut kena air, karena nilai pengukurannya akan menjadi tak terhingga. Setelah itu, saya menambahkan kabel ke kedua penghantar tersebut, satu dihubungkan dengan ground dan satu dihubungkan dengan kaki digital arduino no 2. Kemudian saya tambahkan sebuah resistor di kaki 2 dan kaki 4. Nilai resistor ini antara 50 kohm sampai 50 Mohm. Semakin besar nilai resistansinya, semakin tinggi sensitivitas sensor. Bayangan saya, pengukuran nilai kapasitansi ini dilakukan dengan cara mengukur waktu pengisian muatan. Semakin lama pengisiannya, semakin besar nilai kapasitansinya

(mohon dikoreksi apabila salah). Oya, berikut kode programnya:

#include <CapSense.h>
CapSense cs_4_2 = CapSense(4,2);
void setup()
{
cs_4_2.set_CS_AutocaL_Millis(0xFFFFFFFF);
Serial.begin(9600);
}
void loop()
{
long tinggi = cs_4_2.capSense(30);
Serial.println(tinggi);
delay(100);
}


Untuk bisa mengkompilasi kode di atas, teman-teman harus menambahkan file CapSense04.zip pada folder libraries di dalam folder program Arduino ditempatkan. File tersebut bisa didownload di http://www.arduino.cc/playground/Main/CapSense, ke dalam folder library program Arduino. Oke, supaya tidak terlalu lama, teman-teman silahkan melihat videonya saja, di link berikut ini: http://www.youtube.com/watch?v=_GPvCxkWgbE

levelair2 

oya, gambar rangkaiannya:
gambar_rangkaian
Ok, begitu dulu, buat teman-teman semua, selamat dan sukses berkarya. 


  Sensor Kapasitif Pengukur Ketinggia
Comments 60Hits: 9258  

02.10.2011 23:49:11
yusviar

Hello World,

Di sini saya akan menjelaskan bagaimana percobaan saya menggunakan arduino untuk mengontrol servo dari sensor inframerah. Bagi pemula jangan bingung dulu guys, ini ga sesulit yang lo bayangin kog. yang penting kamu ngerangkainya bener aja..... pasti puas deh.... hasilnya, ketika kamu ngedekatin tanganmu ke sensor, maka servonya akan bergerak sesuai gerakan tangan kita. prinsipnya mungkin sama kaya pintu otomatis yang biasa ada di bank....
PASTINYA JOSS.....


Mula2 yang kamu butuhin barangnya antara lain :
1. Arduino Uno atau yang setara (KUDU HARUS!!!!)
2. Breadboard
3. kapasitor (1uf dan 22 uf)
4. regulator 5v
5. Sensor Jarak SHARP GP2Y0A21
6. Mini Servo SG-90
7. 1k ohm Resistor

jangan takud gan dengan alatnya, sebagian besar dijual di web ini kog www.geraicerdas.com

Langkahnya:

Pertama kamu harus tau cara nyambungin komponenya. bagan-nya kaya gini dab...
Servo_dan_ir_sensor
 Kemudian kalian coba copas code ini ke dalam program arduino anda. (kalo ga ada, donlod dulu)

//Mengontrol servo menggunakan info dari ir sensor

//Include Servo Library
#include

//mendefinisikan pin yang digunakan
int servoPin = 9;
int distPin = 0;

//membuat objek servo
Servo servoloe;

void setup()
{

//menambahkan servo ke dalam objek
servoloe.attach(servoPin);
}

void loop()
{
//Membaca sensor ir dan memberikan nilai
int dist = analogRead(distPin);
int pos = map(dist, 0, 1023, 0, 180);

//menyalakan servo
servoloe.write(pos);

}
diambil dari www.jeremyblum.com 

Kemudian uplod gan.....

uplod


Hasil akhirnya akan menjadi seperti ini.....

gambarnya


 Selamat mencoba gan, semoga bisa.......

 


  
Comments 13Hits: 3258  

01.10.2011 03:20:43
jakabudisantosa

Bermain -main dengan sensor cahaya untuk mengukur kecerahan pencahayaan di ruangan. Hasil pembacaan sensor ditampilakan pada LCD 20x4.
Bahan yang diperlukan:

Peralatan yang diperlukan:
1. Arduino UNO
2. LDR x 1
3. resistor 10K x 1
4. resistor 1K x 1
5. resistor 220R x 1
6. Bread Board x 1
7. LCD 20 x 4

Buat pembagi tegangan dengan menggunakan LDR dan resistor 10K. Hasilnya dibaca dengan pin A0 pada Arduino.


Hubungkan LCD dengan Arduino UNO :
- pin(1) VSS LCD --- Gnd 
- pin(2) VDD LCD --- +5V
- pin(3) Vo LCD --- hubungkan dengan resistor 1K ke Gnd
- pin(4) Rs LCD --- pin D12 Arduino
- pin(5) R/W LCD --- Gnd
- pin(6) E  LCD--- pin D11 Arduino
- pin(11) DB4 LCD ---  pin D5 Arduino
- pin(12) DB5 LCD ---  pin D4 Arduino
- pin(13) DB6 LCD ---  pin D3 Arduino
- pin(14) DB7  LCD ---  pin D2 Arduino
- pin(15) A LCD --- hubungkan dengan resistor 220R ke +5V
- pin(16) K LCD --- Gnd

Berikut sketc nya :

#include <LiquidCrystal.h>

// Membuat object LCD dan menentukan pin
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); 
/* Menentukan pin Analog untuk membaca sensor. 
hubungkan LDR dan R 10 K untuk mendapatkan pembagi voltage */
int photocellPin0 = 0; 
int photocellReading0; // hasil pembacaan analog
float Res0=10.0;

void setup(void) {
  lcd.begin(20, 4); // menSet display menjadi 20 columns dan 4 rows
}
void loop(void){
  photocellReading0 = analogRead(photocellPin0); // Membaca data analog
  float Vout0=photocellReading0*0.0048828125; // menghitung voltage
  int lux0=500/(Res0*((5-Vout0)/Vout0));
  
  //Nilai Lux cahaya
  lcd.setCursor(0,0);//tentukan cursor pada posisi kolom 0 dan row 0
  lcd.print("N Lux : ");
  lcd.setCursor(10,0);//tentukan cursor pada posisi kolom 10 dan row 0
  lcd.print(lux0);// tulis hasil perhitungan 
  lcd.setCursor(15,0);//tentukan cursor pada posisi kolom 1 dan row 1
  lcd.print("Lux/t");
  
  //Nilai Voltase
  lcd.setCursor(0,1);
  lcd.print("Voltage : ");
  lcd.setCursor(10,1);
  lcd.print(Vout0);
  lcd.setCursor(15,1);
  lcd.print(" V/t");
  
  //Nilai Output
  lcd.setCursor(0,2);
  lcd.print("Voltage: ");
  lcd.setCursor(10,2);
  lcd.print(photocellReading0);
  
  //Output
  lcd.setCursor(0,2);
  lcd.print("Output : ");
  lcd.setCursor(10,2);
  lcd.print(photocellReading0);
  
  // Kondisi Ruangan
  lcd.setCursor(0,3);
  lcd.print("Kondisi :");
  /* harga pembacaan kurang dari nilai 10 maka 
  kodisi dinyatakan sebagai GELAP */
  if (photocellReading0 < 10) { 
    lcd.setCursor(10,3);
    lcd.print("Gelap");
    /* harga pembacaan kurang dari nilai 200 maka 
    kodisi dinyatakan sebagai REDUP */
  } else if (photocellReading0 < 200) {
     lcd.setCursor(10,3);
     lcd.print("Redup");
     /* harga pembacaan kurang dari nilai 500 maka 
     kodisi dinyatakan sebagai CUKUP TERANG */
  } else if (photocellReading0 < 500) {
     lcd.setCursor(10,3);
     lcd.print("Ckp Terang");
     /* harga pembacaan kurang dari nilai 800 maka 
     kodisi dinyatakan sebagai TERANG */
  } else if (photocellReading0 < 800) {
    lcd.setCursor(10,3);
    lcd.print("Terang");
  } else {// selebihnya dinyatakan SANGAT TERANG
    lcd.setCursor(10,3); 
    lcd.print("Sgt Terang");
  } 
 delay(2000);//pengulangan pembacaan 
 lcd.clear();//menghapus data LCD
}


 
 Catatan: LDR dari arduino electtronic basic kit 


  
Comments 5Hits: 2946  

16.07.2011 21:01:58
Arjaya

Sebenarnya pihak Arduino sudah tidak memproduksi board Arduino Duemilanove dan Arduino Mega 1280 lagi. Dan sebagai gantinya pihak Arduino mengeluarkan board Arduino UNO (bentuk penyempurnaan dari Arduino Duemilanove) dan Arduino Mega 2560 (bentuk penyempurnaan dari Arduino Mega 1280). Jika di pasaran masih ada Arduino Duemilanove dan Arduino Mega 1280 yang asli buatan dari Arduino, maka itu adalah sisa stok yang masih ada di pasaran.

Arduino_Duemilanove__UNO


  
Comments 2Hits: 33481  

11.05.2011 09:49:31
Ubed

Apa yang dimaksud dan kegunaan sensor PIR?

Kegunaan sensor ini  memungkinkan Anda untuk mendeteksi gerakan.Mereka sering menyebut sensor ini sebagai PIR, "Pasif inframerah ", "piroelektrik", atau "IR gerakan" sensor./(Digital infrared motion sensor)

PIR pada dasarnya terbuat dari sensor piroelektrik (yang dapat anda lihat di atas sebagai logam bulat dapat dengan kristal segi empat di tengah), yang dapat mendeteksi tingkat radiasi inframerah. Semuanya memancarkan beberapa tingkat radiasi rendah, dan panas.Jika lebih banyak radiasi dipancarkan. Sensor detektor akan melihat besar kecilnya IR dari yang lain, dan output akan berayun tinggi atau rendah

SPECIFICATION:

  • Type: Digital
  • Supply Voltage:3-5V
  • Current:50μA
  • Working temperature:0℃-70℃
  • Output level(HIGH):4V
  • Output level(LOW):0.4V
  • Detect angle:110 Degree
  • Detect distance:7 meters
  • Size:28mm×36mm
  • Weight:25g

 

Membaca sensor PIR

Menghubungkan sensor PIR untuk mikrokontroler benar-benar sederhana. PIR bertindak sebagai output digital sehingga semua yang perlu Anda lakukan adalah menggunakan pin untuk flip tinggi (terdeteksi) atau rendah (tidak terdeteksi).

Power PIR Ke 5V dan ground terhubung ke ground. Lalu hubungkan output ke pin digital. Dalam contoh ini kita akan menggunakan pin 2.

Kode ini sangat sederhana, dan pada dasarnya hanya melacak apakah input ke pin 2  tinggi atau rendah. Sehingga ia akan mencetak pesan ketika gerakan sudah dimulai dan berhenti.

 
/*
 * PIR sensor tester
 */
 
int ledPin = 13;                // choose the pin for the LED
int inputPin = 2;               // choose the input pin (for PIR sensor)
int pirState = LOW;             // we start, assuming no motion detected
int val = 0;                    // variable for reading the pin status
 
void setup() {
  pinMode(ledPin, OUTPUT);      // declare LED as output
  pinMode(inputPin, INPUT);     // declare sensor as input
 
  Serial.begin(9600);
}
 
void loop(){
  val = digitalRead(inputPin);  // read input value
  if (val == HIGH) {            // check if the input is HIGH
    digitalWrite(ledPin, HIGH);  // turn LED ON
    if (pirState == LOW) {
      // we have just turned on
      Serial.println("Motion detected!");
      // We only want to print on the output change, not state
      pirState = HIGH;
    }
  } else {
    digitalWrite(ledPin, LOW); // turn LED OFF
    if (pirState == HIGH){
      // we have just turned of
      Serial.println("Motion ended!");
      // We only want to print on the output change, not state
      pirState = LOW;
    }
  }
}

  
Comments 3Hits: 5874  

09.05.2011 07:29:42
insansains

PENDAHULUAN

Sekarang adalah pengembangan dari sensor suhu yang telah kita buat sebelumnya. Kalau percobaan kemarin hanya mengirimkan data hasil pembacaan sensor suhu ke serial port, kali ini besarnya suhu yang terbaca akan kita tampilkan pada LCD (Liquid Crystal Display).

Untuk LCD yang digunakan pada project kali ini adalah LCD shield produksi DFRobot yang merupakan matriks LCD yang memiliki baris dan kolom sejumlah 48x84. LCD shield ini unik juga, karena selain memiliki backlight juga telah build-in dengan joystick mini sehingga bisa digunakan untuk tombol pilihan menu sebagaimana yang ada di handphone.

Harap diperhatikan ketika menggunakan shield LCD ini. Pin D2, D3, D4, D5, D6 digunakan untuk SPI interface. D7 digunakan untuk mengontrol backlight. Sedangkan A0 digunakan untuk input dari joystick (5 degree). Sehingga jika shield LCD4884 ini dipasangkan pada Arduino, pin-pin tersebut tidak dapat digunakan lagi untuk keperluan lainnya.

Bahan yang dibutuhkan

  • 1x Arduino UNO
  • 1x DFRobot LCD 48x84 shield
  • 1x Sensor Suhu LM35DZ
  • 1x BreadBoard
  • 1x Kabel USB tipe A-B
  • 3x Jumper

STEP BY STEP

  1. Rakit rangkaian
  2. Buat sketch dan upload ke Arduino
  3. Testing

Rakit rangkaian sebagaimana project sebelumnya, namun pin data data LM35 bukan lagi ke pin Analog 0 melainkan ke pin Analog 1.

Buat sketch dan upload ke Arduino

/*------------------------------------------------------------------
SENSOR SUHU LCD
Author        : Insan Sains
Date Created  : 
Last Modified : 17 April 2011
Language      : English for script
                Indonesia for Comments
Descriptions  : Sketch ini menampilkan nilai suhu di LCD 4884
                pin data LM35DZ (tengah) dihubungkan ke Analog 1
------------------------------------------------------------------*/

#include <LCD4884.h>
#include <stdlib.h>

#define pinDataLM35 1   // pin tengah LM35 ke port Analog 1

float temperature;      // variable untuk menyimpan data suhu
                        // float berarti hasilnya akan ada koma
                        // kalau int hasilnya berupa pembulatan

char buffer[8];         // untuk menyimpan float -> string

void setup() {
    lcd.LCD_init();
    lcd.LCD_clear();
}

void loop() {
    /* Baca output dari LM35 yang masuk ke pin analog 
       Data yang terbaca sudah dalam bentuk konversi ADC
       Konversi ADC = Vout/Vref*1023
       Jadi bukan dalam bentuk besaran tegangan lagi
       Jika ingin tahu tegangan output LM35 gunakan rumus di atas :
       Tegangan terbaca = Konversi ADC * tegangan referensi / 1024
       Ukur pin 2 dan 3 pd LM35 dengan multimeter untuk memastikan */
    temperature = analogRead(pinDataLM35);

    // Ubah data konversi ADC diatas menjadi besaran suhu 
    // menggunakan rumus konversi ADC
    temperature = temperature * (5.0 * 100.0/1024.0);

    // Kirim hasil pembacaan via serial port
    lcd.LCD_write_string(0,0," Suhu saat ini (Celcius) : ", MENU_NORMAL);
    lcd.LCD_write_string_big(15,2, dtostrf(temperature, 5,2, buffer), MENU_NORMAL);

    // Berikan pewaktuan agar tidak langsung berubah
    delay(500);

}

Save kemudian upload sketch di atas ke board Arduino.

Testing

Pasang LCD Shield, dan dapat terlihat sekarang LCD menampilkan besarnya suhu yang terukur.

DEVELOPMENT

  • Tambahkan animasi tampilan LCD

  lcd4884 | sensor suhu | lm35dz | arduino
Comments 3Hits: 4541  

09.05.2011 03:51:24
insansains


Bagi pengguna Ubuntu Linux 11.04, sekarang untuk menginstall IDE Arduino terbaru (versi 0022) sudah dapat dilakukan di repository nya langsung. Adapun langkah-langkahnya adalah sebagai berikut : Pada mode terminal tuliskan perintah berikut : > sudo apt-get install arduino Atau kalau tidak terbiasa dengan mode terminal, Anda dapat menggunakan fasilitas Ubuntu Software Center. Buka aplikasi tersebut. Kemudian pada kolom search, tuliskan "arduino". Setelah itu akan muncul informasi mengenai package "IDE
Arduino" Klik "Install".
Tunggu beberapa saat hingga IDE Arduino berhasil terinstall sempurna.

Klik "add to Launcher" untuk memunculkan icon Arduino agar mudah diakses di desktop.

Sekarang tampilan launcher Ubuntu 11.04 sudah mengandung Arduino (022). Happy programming with Arduino... Smile

Sumber : http://insansainsprojects.wordpress.com/2011/05/09/cara-install-ide-arduino-di-ubuntu-11-04/ 


  ubuntu | arduino
Comments 1Hits: 2824  

06.05.2011 21:59:59
jagokate

Eksperimen ini bertujuan untuk mengetahui suhu di suatu tempat menggunakan sensor suhu DS1621 dan Arduino Nano. Peralatan yang dibutuhkan antara lain:

  1. DFRduino Nano (Arduino Nano Compatible)
  2. Arduino Nano I/O Shield
  3. Breakout DS1621+kabel **
  4. PC/Laptop
  5. UartSbee V3.1Xbee 60mW Wire Antenna untuk wireless *

 

Berikut ini langkah-langkahnya:

  1. Pasang arduino nano pada shield I/O
  2. Hubungkan kabel dengan port IIC pada breakout DS1621 dan Arduino Nano I/O Shield (hati-hati, jangan terbalik)
  3. Hubungkan UartSbee ke port yang sesuai (Vcc, Tx, Rx, Gnd) menggunakan kabel benghubung
  4. Colokkan kabel mini USB ke arduino dan download program seperti biasa, untuk menampilkan hasil pembacaan bisa menggunakan hyperterminal.

 

*pengaturan menggunakan program x-ctu, perhatikan bautrate harus sama semua antara Arduino, xbee, dan komputer

**dibuat sendiri PCB nya, kabel memakai kabel pelangi yang dipasangi blackhousing

gambar layout PCBskematik DS1621breakout

 


  Xbee | Arduino Nano | DS1621 | IIC
Comments 2Hits: 2969  

22.04.2011 16:30:55
insansains

PENDAHULUAN

Ada banyak sensor yang bisa mengukur suhu. Kali ini akan digunakan sensor suhu yang umum digunakan, yang range suhu yang terukurnya cukup banyak namun akurasinya cukup tinggi. Dari segi harga, tergolong murah juga. Kurang dari 25 ribu. Kalau beli banyak, mungkin bisa sampai 10 ribuan. Komponen sensor suhu ini tergolong IC berbentuk mirip transistor, dengan kode LM35. Ada banyak tipe, tapi kali ini akan digunakan tipe LM35DZ. Kode dibelakangnya menunjukkan akurasi, suhu kerja, dan range yang terukur. Untuk lebih jelasnya dapat dilihat pada datasheetnya. Oke... langsung ajah praktek.... Bahan yang dibutuhkan :

  • 1x Arduino UNO
  • 1x Sensor Suhu LM35DZ
  • 1x BreadBoard
  • 1x Kabel USB tipe A-B
  • 3x Jumper

STEP BY STEP

1. Rakit rangkaian

2. Buat sketch dan upload ke Arduino

3. Testing

 

-> Rakit rangkaian sebagaimana gambar di bawah ini :

 


  sensor suhu | lm35 | arduino | lm35dz
Comments 2Hits: 7693  

20.04.2011 07:44:36
admin

Sambil melakukan testing terhadap beberapa produk baru, kami sharing cara penggunaan MP3 Shield produksi Seeeduino. Ini merupakan produk yang luar biasa. Beberapa fitur yang kami temukan diantaranya :

- Telah terpasang slot mini SD sebagai media penyimpanan

- Memiliki tombol pengaturan volume

- Memiliki tombol kontrol player (pause, play, next, prev)

- Tersedia dock untuk konektor IPod

- Mendukung beberapa file audio seperti : MP3, WAV, MWA, MIDI, OGG, FLAC

- Dapat melakukan perekaman suara (format output : OGG)

 

 

Hardware Detail of Music Shield

Untuk menjadikan Arduino yang kita punya dapat memutar file audio, maka cukup tambahkan shield MP3 player ini. Adapun tata caranya adalah sebagai berikut :

1. Pastikan ada file musik dalam mini SD yang akan digunakan

2. Download music_v1_13 dan juga library NewSoftSerial

 

 

3. Extract kedua file tersebut, dan simpan di folder ....\Arduino0022\libraries\

4. Buka IDE Arduino, dan pastikan board yang digunakan (Tools >> Board)

5. Buka contoh sketch yang ada pada File >> Examples >> Mucic_V1_13 >> Music

6. Upload sketch ke dalam Arduino

Selesai! Sekarang saatnya mendengarkan Arduino Anda memainkan lagu-lagu kesukaan Smile

 


  arduino | mp3 player
Comments 13Hits: 43932  

Page 1 of 2
«StartPrev12NextEnd»
 

Pencarian

Alamat Kami

alamat_kami

Penghargaan / Award

MERIT

Member Login






Latest Message: 1 day, 13 hours ago
  • arsyad : jumper
  • admin : @mranugraha : mohon maaf, stok tsb sold out
  • maranugraha : mas, rover 5 (tank ) ada stock gak ??
  • admin : @mushang98 : mohon maaf, produk tsb tdk tersedia di GC.
  • mushang98 : ATtiny2313 ada gag ?
  • mushang98 : ATtiny
  • whyudi : Pesanan 00004664 sudah saya terima di mojogedang,kondisi alat bagus tanpa ada yang rusak...trimakasih gerai cerdas...Sukses Selalu. Smile
  • Gerry : punya bca tidak?? klw ke mandiri agak lama
  • fazaragung : selamat siang
  • kks777 : ada orang ga disini? mau beli xbee donk tolong dibuka Crying or Very Sad

Only registered users are allowed to post

Newsletter

Subscribe Here
Copyright © 2014 Gerai Cerdas. All Rights Reserved.
Joomla! is Free Software released under the GNU/GPL License.