7 Segment Display Interface Arduino

00.28 Posted by Ali Mahfud , No comments
Antarmuka 7-Segment pada Arduino


Contoh penggunaan 7 segment pada Arduino
1. One Digit Up Counter
    - Merangkai rangkaian seperti gambar di atas
Sketch :
/*
* One-digit up counter
* Displays number 0 to 9 (up counter) on one digit 7-seg display cc
*/
// bits representing segments a through g and dp for number 0-9
const byte numeral[10] = {
//abcdefg and dp
B11111100, // 0
B01100000, // 1
B11011010, // 2
B11110010, // 3
B01100110, // 4
B10110110, // 5
B00111110, // 6
B11100000, // 7
B11111110, // 8
B11100110, // 9
};
// pins for decimal point and each segment
// dp,g,f,e.d.c.b.a
const int segmentPins[8] = {9,8,7,6,5,4,3,2};
void setup()
{
for(int i=0; i < 8; i++)
{
pinMode(segmentPins[i], OUTPUT); // set all pins to output
}
}
void loop()
{
for(int i=0; i <= 10; i++)
{
showDigit(i);
delay(1000);
}
// the last value if i is 10 and this will turn the display off
delay(2000); // pause two seconds with the display off
}
// Displays a number from 0 through 9 on a 7-segment display
// any value not within the range of 0-9 turns the display off
void showDigit( int number)
{
boolean isBitSet;
for(int segment = 1; segment <= 8; segment++)
{
if( number < 0 || number > 9){
isBitSet = 0; // turn off all segments
}
else{
// isBitSet will be true if given bit is 1
isBitSet = bitRead(numeral[number], segment);
}
//isBitSet = ! isBitSet; // use this line if common anode display
digitalWrite( segmentPins[segment], isBitSet);
}
}

2. Display Input Potensiometer
Sketch:
/*
* Display input potensiometer
* Displays number 0 to 9 from a potensio on one digit 7-seg display cc
*/
// bits representing segments a through g and dp for number 0-9
const byte numeral[10] = {
// abcdefg and dp
B11111100, // 0
B01100000, // 1
B11011010, // 2
B11110010, // 3
B01100110, // 4
B10110110, // 5
B00111110, // 6
B11100000, // 7
B11111110, // 8
B11100110, // 9
};
// pins for decimal point and each segment
// dp,g,f,e.d.c.b.a
const int segmentPins[8] = {9,8,7,6,5,4,3,2};
void setup()
{
Serial.begin(9600);
for(int i=0; i < 8; i++)
{
pinMode(segmentPins[i], OUTPUT); // set all pins to output
}
}
void loop()
{
int potVal = analogRead(A0); // pin A0 for potensio
potVal=map(potVal,0,1023,0,9);
Serial.println(potVal);
showDigit(potVal);
}
// Displays a number from 0 through 9 on a 7-segment display
// any value not within the range of 0-9 turns the display off
void showDigit( int number)
{
boolean isBitSet;
for(int segment = 1; segment <= 8; segment++)
{
isBitSet = bitRead(numeral[number], segment);
//isBitSet = ! isBitSet; // use this line if common anode display
digitalWrite( segmentPins[segment], isBitSet);
}
}

3. Multiplexing two digit display 7 Segment (7 Segment 2 digit)
Sketch:
/*
* Multiplexing two-digit display sketch
* Displays the value of a potensio (0 - 99) on a multiplex two-digit display
*/
// bits representing segments a through g and dp for number 0-9
const int numeral[10] = {
//abcdefg and dp
B11111100, // 0
B01100000, // 1
B11011010, // 2
B11110010, // 3
B01100110, // 4
B10110110, // 5
B00111110, // 6
B11100000, // 7
B11111110, // 8
B11100110, // 9
};
// pins for decimal point and each segment
// dp,g,f,e.d.c.b.a
const int segmentPins[8] = {1,2,3,4,5,6,7,8};
const int nbrDigits= 2; // the number of digits in the LED display
//digit 1 2
const int digitPins[nbrDigits] = {10,11}; // 10=MSD, 11=LSD
void setup()
{
Serial.begin(9600);
for(int i=0; i < 8; i++)
pinMode(segmentPins[i], OUTPUT); // set all segs and dp pins to outp
for(int i=0; i < nbrDigits; i++)
pinMode(digitPins[i], OUTPUT);
}
void loop()
{
int potVal = analogRead(A0); // pin A0 connected to potensio
potVal = map(potVal,0,1023,0,99);
Serial.println(potVal);
showNumber(potVal);
}
void showNumber( int number)
{
if(number == 0)
showDigit(0, nbrDigits-1) ; // display 0 in the rightmost digit
else
{
// display the value corresponding to each digit
// leftmost digit is 0, rightmost is one less than the number of places
for (int digit = nbrDigits-1; digit >= 0; digit--)
{
if(number > 0)
{
showDigit(number % 10, digit) ;
number = number / 10;
}
}
}
}
// Displays given number on a 7-segment display at the given digit position
void showDigit( int number, int digit)
{
digitalWrite( digitPins[digit], HIGH );
for (int segment = 1; segment < 8; segment++)
{
boolean isBitSet = bitRead(numeral[number], segment);
// isBitSet will be true if given bit is 1
isBitSet = ! isBitSet; // use this line for common cathode display
digitalWrite(segmentPins[segment], isBitSet);
}
delay(5);
digitalWrite(digitPins[digit], LOW );
}

Antarmuka Sensor Arduino

14.45 Posted by Ali Mahfud , No comments
Antarmuka Sensor Pada Arduino

1. LDR Light Sensor

Source Code:
/*
LDR blinking rate sketch
Blink a LED with a rate based on light intensity upon an LDR
*/
const int ledPin = 2; // LED connected to digital pin 2
const int ldrPin = 0; // connect LDR to analog input 0
void setup()
{
  pinMode(ledPin, OUTPUT); // enable output on the led pin
  Serial.begin(9600);
}
void loop()
{
  int rate = analogRead(ldrPin); // read the analog input
  Serial.println(rate);
  digitalWrite(ledPin, HIGH); // set the LED on
  delay(rate); // wait duration dependent on light level
  digitalWrite(ledPin, LOW); // set the LED off
  delay(rate);
}

2. LM35 Temperature Sensor

Source Code:
/*
LM35 sketch
Prints the temperature to the Serial Monitor
*/
const int lm35Pin = 0; // LM35 connected to analog input pin 0
void setup()
{
  Serial.begin(9600);
}
void loop()
{
  int tempVal = analogRead(lm35Pin);
  Serial.print(tempVal); Serial.print(" > ");
  float millivolts = (tempVal / 1024.0) * 5000;
  float celsius = millivolts / 10; // sensor output is 10mV / Celsius
  Serial.print(celsius);
  Serial.print(" degrees Celsius, ");
  Serial.print( (celsius * 9)/ 5 + 32 ); // converts to fahrenheit
  Serial.println(" degrees Fahrenheit");
  delay(1000); // wait for one second
}

3. Dimmer

Source Code:
/*
LDR dimmer sketch
Dim a LED based on light intensity upon an LDR
*/
const int ledPin = 2; // LED connected to digital pin 2
const int ldrPin = 0; // connect LDR to analog input 0
void setup()
{
  pinMode(ledPin, OUTPUT);
  Serial.begin(9600);
}
void loop()
{
  int ldrVal = analogRead(ldrPin);
  Serial.println(ldrVal);
  delay(200);
  ldrVal = constrain(ldrVal, 20,150);
  int ledLevel = map(ldrVal,20,150, 255,0);
  analogWrite (ledPin, ledLevel);
}

4. Temperature Indicator

Source Code:
/*
LM35 sketch
Turn on a LED if temperature is greater than a threshold
*/
const int lm35Pin = 0; // sensor connected to this analog pin
const int ledPin = 2; // digital output pin for LED
const int threshold = 25; // the degree that will turn on the LED
void setup()
{
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);
}
void loop()
{
  int tempVal = analogRead(lm35Pin);
  long celsius = (tempVal * 500L) /1024; // 10 mV per degree celcius
  Serial.print(celsius);
  Serial.print(" degrees Celsius: ");
  if(celsius > threshold)
  {
    digitalWrite(ledPin, HIGH); // LED on
    Serial.println("LED is ON");
  }
  else
  {
    digitalWrite(ledPin, LOW);
    Serial.println("LED is OFF"); // LED off
  }
  delay(1000); // wait for one second
}

5. PIR Motion Detector

Source Code:
/*
PIR sketch
Turn on a LED if motion is detected
*/
const int ledPin = 9; // choose the pin for the LED
const int pirPin = 2; // choose the input pin for the PIR sensor
void setup() 
{
  pinMode(ledPin, OUTPUT); // declare LED as output
  pinMode(pirPin, INPUT); // declare PIR as input
}
void loop() 
{
  int pirVal = digitalRead(pirPin); // read input value
  if (pirVal == HIGH) // check if the input is HIGH
  {
    digitalWrite(ledPin, HIGH); // turn LED on if motion is detected
    delay(500);
    digitalWrite(ledPin, LOW); // turn LED off
  }
}

6. IR Distance Sensor

Source Code:
/*
IR-distance sketch
Display distance of object from Sharp Distance Sensor 2Y0A02
(on Serial Monitor)
*/
const int irPin = 0; // choose the pin for the IR distance sensor
float irVal, cm; //Must be of type float for pow()
void setup()
{
  Serial.begin(9600);
}
void loop()
{
  irVal = analogRead(irPin);
  //inches = 4192.936 * pow(sensorValue,-0.935) - 3.937;
  cm = 10650.08 * pow(irVal,-0.935) - 10;
  delay(100);
  Serial.print("Distance (cm) : ");
  Serial.println(cm);
}

Antarmuka Switch Arduino

13.34 Posted by Ali Mahfud , No comments
Antarmuka Switch Pada Arduino

1. Push Button

Source Code:
int ledPin = 13; // choose the pin for the LED
int switchPin = 2; // choose the input pin (for a pushbutton
int val = 0; // variable for reading the pin status
void setup() 
{
  pinMode(ledPin, OUTPUT); // declare LED as output
  pinMode(switchPin, INPUT); // declare pushbutton as input
}
void loop()
{
  val = digitalRead(switchPin); // read input value
  if (val == LOW) { // check if the input is LOW
  digitalWrite(ledPin, LOW); // turn LED OFF:
}
else 
{
  digitalWrite(ledPin, HIGH); // turn LED ON:
}
}

2. Swtich to Blink or Fade
Source Code:
/*
Blink or fade switch
Choose between Blink or Fade the LED connected to digital
pin 9, when pressing a pushbutton attached to pin 2.
The circuit:
* LED attached from pin 9 to ground
* pushbutton attached to pin 2 from +5V
* 10K resistor attached to pin 2 from ground
*/
int ledPin = 9; // choose the pin for the LED
int switchPin = 2; // choose the input pin (for a pushbutton
int val = 0; // variable for reading the pin status
int fadeval = 0;
void setup()
{
  pinMode(ledPin, OUTPUT); // declare LED as output
  pinMode(switchPin, INPUT); // declare pushbutton as input
}
void loop()
{
  val = digitalRead(switchPin); // read input value
  if (val == HIGH) { // pushed button means do blinking
    digitalWrite(ledPin, LOW); // turn LED OFF:
    delay(50);
    digitalWrite(ledPin,HIGH); //turn LED ON:
    delay(50);
  }
  else
  { // else button isn't pressed so do fading
    for(fadeval = 0 ; fadeval <= 255 ; fadeval +=5) { // fade in
    analogWrite(ledPin, fadeval); // sets the value
    delay(10);
    }
    for(fadeval = 255; fadeval >= 0 ; fadeval -=5) { // fade out
    analogWrite(ledPin, fadeval);
    }
  }
}
3. Toggle
Source Code:
// Toggle switch
/* The circuit:
* LED attached from pin 13 to ground
* pushbutton attached to pin 8 from +5V
* 10K resistor attached to pin 8 from ground
*/
int switchPin = 8;
int ledPin = 13;
boolean lastButton = LOW;
boolean ledOn = false;
void setup()
{
  pinMode(switchPin, INPUT);
  pinMode(ledPin, OUTPUT);
}
void loop()
{
  if (digitalRead(switchPin) == HIGH && lastButton == LOW)
  {
    ledOn = !ledOn;
    lastButton = HIGH;
  }
  else
  {
    lastButton = digitalRead(switchPin);
  }
  digitalWrite(ledPin, ledOn);
}

4. PWM Switch

Source Code:
// PWM Switch (with debounce)
int switchPin = 8;
int ledPin = 3;
boolean lastButton = LOW;
boolean currentButton = LOW;
int ledLevel = 0;
void setup()
{
  pinMode(switchPin, INPUT);
  pinMode(ledPin, OUTPUT);
}
boolean debounce(boolean last)
{
  boolean current = digitalRead(switchPin);
  if (last != current)
{
  delay(5);
  current = digitalRead(switchPin);
}
return current;
}
void loop()
{
  currentButton = debounce(lastButton);
  if (lastButton == LOW && currentButton == HIGH)
  {
    ledLevel = ledLevel + 51;
  }
  lastButton = currentButton;
  if (ledLevel > 255) ledLevel = 0;
  analogWrite(ledPin, ledLevel);
}

5. Interactive Traffic Lights

Source Code:
// Interactive Traffic Lights
int carRed = 12; // assign the car lights
int carYellow = 11;
int carGreen = 10;
int pedRed = 9; // assign the pedestrian lights
int pedGreen = 8;
int button = 2; // button pin
int crossTime = 5000; // time allowed to cross
unsigned long changeTime; // time since button pressed
void setup() 
{
  pinMode(carRed, OUTPUT);
  pinMode(carYellow, OUTPUT);
  pinMode(carGreen, OUTPUT);
  pinMode(pedRed, OUTPUT);
  pinMode(pedGreen, OUTPUT);
  pinMode(button, INPUT); // button on pin 2
  digitalWrite(carGreen, HIGH); // turn on the green light
  digitalWrite(pedRed, HIGH);
}
void loop() 
{
  int state = digitalRead(button);
  // check if button is pressed and it is over 5s since last button press
  if (state == HIGH && (millis() - changeTime) > 5000) {
    changeLights(); // Call the function to change the lights
  }
}
void changeLights()
{
  digitalWrite(carGreen, LOW); // green off
  digitalWrite(carYellow, HIGH); // yellow on
  delay(2000); // wait 2 seconds
  digitalWrite(carYellow, LOW); // yellow off
  digitalWrite(carRed, HIGH); // red on
  delay(1000); // wait 1 second till its safe
  digitalWrite(pedRed, LOW); // ped red off
  digitalWrite(pedGreen, HIGH); // ped green on
  delay(crossTime); // wait for preset time period
                    // flash the ped green
  for (int x=0; x<10; x++)
  {
    digitalWrite(pedGreen, HIGH);
    delay(250);
    digitalWrite(pedGreen, LOW);
    delay(250);
  }
  // turn ped red on
  digitalWrite(pedRed, HIGH);
  delay(500);
  digitalWrite(carYellow, HIGH); // yellow on
  digitalWrite(carRed, LOW); // red off
  delay(1000);
  digitalWrite(carGreen, HIGH);
  digitalWrite(carYellow, LOW); // yellow off
  changeTime = millis(); // record the time since last change of
                        // lights
}

Fungsi Base Station Controller (BSC)

20.30 Posted by Ali Mahfud No comments
BASE STATION CONTROLLER (BSC)

FUNGSI BSC
BSC mengontrol bagian utama dari jaringan radio (RBS). Tugas yang paling penting adalah untuk memastikan kemungkinan tertinggi utilisasi dari radio resources.
Fungsi utama dari area BSC adalah:
1) Manajemen Radio Network
2) Manajemen RBS
3) Penanganan TRC
4) Manajemen Jaringan Transmisi
5) Operasi internal BSC dan Pemeliharaan
6) Penanganan koneksi MS

1. Manajemen Jaringan Radio
Manajemen jaringan radio meliputi tugas-tugas berikut:
• Administrasi data jaringan radio diantaranya:
- Deskripsi Data Cell (misalnya identitas sel, nomor saluran BCCH, kekuatan output maksimum dan minimum dalam sel, jenis RBS, dll)
- Sistem Informasi Data (misalnya informasi tentang apakah ada atau tidak pelarangan akses sel, daya output maksimum yang diperbolehkan dalam sel, identitas saluran BCCH dalam sel tetangga)
- Penempatan Data (misalnya peringkat sel yang digunakan dalam HCS dan situasi beban lalu lintas yang tinggi )
- Pembagian beban sharing data, parameter yaitu untuk memaksa penyerahan awal dari sel padat
• Traffic dan pengukuran event (misalnya, jumlah upaya panggilan, kepadatan, tingkat lalu lintas untuk sel, tingkat lalu lintas untuk MS, jumlah handover, jumlah koneksi menurun, dll).
• Pengukuran Channel Idle
RBS mengumpulkan statistik dari MS tentang kekuatan dan kualitas sinyal. Statistik ini kemudian digunakan selama proses alokasi kanal, sehingga saluran dengan interferensi rendah dialokasikan untuk panggilan.

2. Manajemen RBS
Implementasi RBS Ericsson adalah transceiver-terorientasi, memastikan fitur redundansi yang baik. Ini berarti bahwa sedikit mungkin peralatan untuk beberapa transceiver.
Tugas utama manajemen RBS adalah:
• Konfigurasi RBS:
Ini melibatkan alokasi frekuensi untuk kombinasi saluran dan tingkat daya untuk setiap sel sesuai dengan peralatan yang tersedia. Jika peralatan rusak, maka akan menyebabkan hilangnya saluran yang penting, dan rekonfigurasi peralatan yang diaktifkan, mengorbankan saluran yang kurang penting.
• Penanganan software RBS:
Hal ini melibatkan kontrol beban Program.
• Pemeliharaan peralatan RBS (RBS Maintenance):
Kesalahan RBS serta gangguan dicatat dan ter-log secara terus menerus.

3. Penanganan TRC
Meskipun TRAUs terletak di TRC, Sebuah BSC sebagai pengendali sumber daya radio dari jaringan GSM, sebenarnya mengkoordinasikan sumber dari TRAU untuk panggilan. Selama call set-up, BSC menginstruksikan TRC untuk mengalokasikan perangkat TRA untuk panggilan. Jika tersedia, TRC mengkonfirmasi alokasi perangkat TRA. Perangkat TRA dianggap berada di bawah kendali BSC selama panggilan.

4. Manajemen Jaringan Transmisi
Jaringan transmisi untuk BSC termasuk link ke dan dari MSC / VLR dan RBS.
Dalam hal ini melibatkan tugas-tugas berikut:
• Penanganan Transmisi Interface
Bagian ini menyediakan fungsi untuk administrasi, pengawasan, pengujian dan kesalahan lokalisasi link ke RBS. BSC mengkonfigurasi, mengalokasikan dan mengawasi 64 kbits / s sirkuit link PCM ke RBS. Bagian ini juga secara langsung mengontrol remote switch di RBS yang mengaktifkan penggunaan efisien dari sirkuit 64 kbits / s.

5. Operasi Internal BSC dan Pemeliharaan
Operasi dan pemeliharaan tugas dapat dilakukan secara lokal di BSC atau jarak jauh dari OSS. Operasi internal BSC dan pemeliharaan melibatkan fitur berikut:
• Pemeliharaan TRH:
Administrasi, pengawasan dan pengujian Transceiver Handler (TRH) dilakukan dalam BSC. TRH terdiri dari hardware dan software. Sebuah TRH terletak pada Regional Processor for the Group (RPG). Satu RPG melayani beberapa transceiver. Terdapat beberapa RPG di BSC.
• Kontrol beban Processor di BSC
Fungsi ini memastikan bahwa bila prosesor dalam situasi yang berlebihan, sejumlah besar panggilan masih bisa ditangani oleh BSC. Jika terlalu banyak panggilan yang diterima,  persyaratan real time seperti waktu call set-up tidak dapat dipenuhi. Untuk mencegah hal ini, beberapa panggilan perlu ditolak jika situasi beban tinggi.

6. Penanganan Koneksi MS
A. Call Set Up
Call Set up melibatkan proses berikut:
• Paging:
BSC mengirimkan pesan paging ke RBS didefinisikan dalam LA. Situasi beban di BSC diperiksa sebelum perintah paging dikirim ke RBS.
• Signaling set-up:
Selama call set-up, koneksi MS ditransfer ke SDCCH dialokasikan oleh BSC. Jika MS memulai koneksi, BSC memeriksa beban prosesor sebelum permintaan diproses lebih lanjut.
• Penugasan kanal trafik:
Setelah SDCCH diterima, prosedur call set-up terus dilakukan dengan tugas dari TCH oleh BSC. Karena ini terjadi, fungsi pengawasan kanal radio di BSC diinformasikan bahwa MS telah diperintahkan untuk mengubah saluran.

B. Selama Panggilan
Fungsi utama BSC selama panggilan adalah:
• Power Control Dinamis di MS dan RBS:
BSC menghitung daya output MS dan BTS yang memadai berdasarkan pengukuran yang diterima dari uplink dan downlink. Hal ini dikirim ke BTS dan MS setiap 480 ms untuk menjaga kualitas koneksi yang baik.
• Locating:
Fungsi ini terus menerus mengevaluasi hubungan radio ke MS, dan, jika perlu, menyarankan peralihan ke sel lain. Saran ini berisi daftar handover calon sel. Keputusan ini didasarkan pada hasil pengukuran dari MS dan BTS. Proses locating diproses di BSC.
• Handover:
Jika fungsi locating mengusulkan bahwa handover harus berlangsung, BSC kemudian memutuskan sel yang akan handover dan memulai proses handover. Jika sel milik BSC lain, MSC / VLR harus terlibat dalam handover. Namun, dalam handover, maka sebuah MSC / VLR dikontrol oleh BSC. Tidak ada pengambilan keputusan dilakukan di MSC karena tidak memiliki informasi real time tentang sambungan.
• Frekuensi Hopping:
Dua jenis hopping didukung oleh BSC:
- Baseband hopping: ini melibatkan hopping antara frekuensi pada transceiver yang berbeda dalam sel.
- Synthesizer hopping: Hal ini melibatkan hopping dari frekuensi ke frekuensi pada transceiver yang sama dalam sebuah sel.


Konfigurasi Hardware pada BSC

Regional Processor (RP) melakukan semua penanganan protokol dan kapasitas yang menuntut pekerjaan menjaga CP untuk melakukan program dan penanganan data. Transceiver Handler (TRH) menangani pengukuran processing untuk algoritma locating dari pelanggan seluler. Signalling Terminal Central (STC) digunakan untuk berkomunikasi dengan remote regional prosesor dan digunakan ketika berkomunikasi dengan Radio Base Station (RBS). Panggilan dari MSC akan ditangani oleh semi-permanent grup switch dan dikirim ke BTS melalui Exchange Terminal Circuits (ETC).




Sumber: translate dari http://tel3pedia.blogspot.com/

Project LED Arduino UNO

16.27 Posted by Ali Mahfud , No comments
Praktikum Arduino UNO dengan LED

1. Blink
/*
  Blink
  Turns on an LED on for one second, then off for one second, repeatedly.
 
  This example code is in the public domain.
 */
 
// Pin 13 has an LED connected on most Arduino boards.
// give it a name:
int led = 13;

// the setup routine runs once when you press reset:
void setup() {                
  // initialize the digital pin as an output.
  pinMode(led, OUTPUT);     
}

// the loop routine runs over and over again forever:
void loop() {
  digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);               // wait for a second
  digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);               // wait for a second
}

2. Fade


// Fading LED
int value = 0; // variable to keep the actual value
int ledpin = 9; // light connected to digital pin 9
void setup()
{
// nothing for setup
}
void loop()
{
  for(value = 0 ; value <= 255; value+=5) // fade in (from min to max)
  {
  analogWrite(ledpin, value); // sets the value (range from 0 to 255)
  delay(30); // waits for 30 milli seconds to see the dimming effect
}
for(value = 255; value >=0; value-=5) // fade out (from max to min)
{
  analogWrite(ledpin, value);
  delay(30);
  }
}

3. Candle Light

/*
* CandleLight
*
* Use random numbers to emulate a flickering candle with a
* PWM'd LED
*
*/
int ledPin = 6; // select the pin for the LED
int val = 0; // variable that holds the current LED brightness
int delayval = 0; // variable that holds the current delay time
void setup() 
{
  randomSeed(0); // initialize the random number generator
  pinMode(ledPin, OUTPUT); // declare the ledPin as an OUTPUT
}

void loop() 
{
  val = random(100,255); // pick a random number between 100 - 255
  analogWrite(ledPin, val); // set the LED brightness
  delayval = random(50,150); // pick a random num between 50, 150
  delay(delayval); // delay that many milliseconds
}

4. Moodlight

/*
* RGB_LEDs sketch
* RGB LEDs driven from analog output ports
*/
const int redPin = 6; // choose the pin for each of the LEDs
const int greenPin = 5;
const int bluePin = 3;
const boolean invert = false; // set true if common anode, false if
// common cathode
int color = 0; // a value from 0 to 255 representing the hue
int R, G, B; // the Red Green and Blue color components

void setup()
{
// pins driven by analogWrite do not need to be declared as outputs
}

void loop()
{
  int brightness = 255; // 255 is maximum brightness
  hueToRGB( color, brightness); // function to convert hue to RGB
  // write the RGB values to the pins
  analogWrite(redPin, R);
  analogWrite(greenPin, G);
  analogWrite(bluePin, B );
  color++; // increment the color
  if(color > 255)
  color = 0;
  delay(10);
}

// function to convert a color to its Red, Green, and Blue components.
void hueToRGB( int hue, int brightness)
{
  unsigned int scaledHue = (hue * 6);
  unsigned int segment = scaledHue / 256; // segment 0 to 5 around
  // the color wheel
  unsigned int segmentOffset = scaledHue - (segment * 256); // position
  // within the seg
  unsigned int complement = 0;
  unsigned int prev = (brightness * ( 255 - segmentOffset)) / 256;
  unsigned int next = (brightness * segmentOffset) / 256;
  if(invert)
  {
    brightness = 255-brightness;
    complement = 255;
    prev = 255-prev;
    next = 255-next;
  }
  
  switch(segment ) {
        case 0: // red
    R = brightness;
    G = next;
    B = complement;
    break;
    
    case 1: // yellow
    R = prev;
    G = brightness;
    B = complement;
    break;
    
    case 2: // green
    R = complement;
    G = brightness;
    B = next;
    break;
    
    case 3: // cyan
    R = complement;
    G = prev;
    B = brightness;
    break;
    
    case 4: // blue
    R = next;
    G = complement;
    B = brightness;
    break;
    
    case 5: // magenta
    default:
    R = brightness;
    G = complement;
    B = prev;
    break;
  }
}


Sumber : Catatan Praktikum

Memulai Arduino UNO

14.06 Posted by Ali Mahfud , No comments


Getting Started dengan Arduino UNO pada Windows

Kali ini saya ingin share cara menggunakan Arduino Uno, bagi yang ingin berkecimpung di dunia Mikrokontroler dapat membaca tutorial dibawah..

1.      Menggunakan Arduino dan USB cable
Pada tutorial ini, kami mengasumsikan anda menggunakan Arduino Uno.

Anda juga membutuhkan USB kabel (A to B): atau dengan kata lain kabel USB printer. Kalau sudah dicolok dengan kabel USB printer ke PC/Laptop, tidak usah lagi menggunakan adapter power.

2.      Download Arduino IDE
Arduino IDE merupakan software dimana untuk mengupload sketch (istilah coding pada Arduino) ke Arduino UNO.

Arduino IDE 1.0.5 dapat di download disini
Kemudian install Arduino IDE tersebut.

3.      Install Driver pada PC/Laptop supaya Arduino Uno terbaca.
·        Colok Arduino Uno dengan USB kabel dan hubungkan ke PC, tunggu hingga Windows memulai proses installasi driver. Setelah beberapa saat akat tampil pesan gagal.
·        Masuk ke Control Panel > Cari Device Manager.
·        Lihat port (COM&LPT) yang ada pada device manager. Cari yang namanya “Arduino UNO (COMxx)”
·        Klik kanan pada port tersebut pilih “Update Driver Software”.
·        Selanjutnya, pilih “Browse my computer for Driver software”.
·        Cari Folder Arduino IDE 1.0.5 tadi yang sudah terinstall biasanya ada di C:/Program Files/Arduino. Pilih yang folder driver. Telihat seperti Gambar dibawah.

4.      Menjalankan Arduino IDE 1.0.5
Dengan cara mendouble click Arduino IDE yang sudah terinstall.

5.      Buka file example Blink
Open contoh LED blink dengan cara File > Examples > 1.Basics > Blink


6.   Memilih Board Arduino yang dipakai dengan cara Tools > Board pilih tipe Arduino yang dipakai.
7.   Memilih serial port dari Tools > Serial Port menu, pastikan port serial Arduino terdeteksi dan tercentang.
8.   Compile sketch sebelum di upload ke Arduino. Apabila sudah “Done” maka lakukan Upload sketch dengan menekan tombol anak panah ke kanan.

Jika sketch sudah terupload, maka led yang ada di dekat pin 13 akan berkedip.

Selamat Mencoba….
Sumber : arduino reference from Arduino IDE 1.0.5



Radio Base Station (RBS)

21.52 Posted by Ali Mahfud No comments

RBS (Radio Base Station)
Sebuah RBS mencakup semua radio dan interface peralatan transmisi yang dibutuhkan pada site untuk menyediakan transmisi radio untuk satu atau beberapa sel. Keluarga RBS 2000 generasi kedua Ericsson RBS menawarkan produk dengan biaya keseluruhan yang rendah. Hal ini dicapai dengan fungsi performa Mean Time Between Failure (MTBF) yang panjang dan Mean Time To Repair (MTTR) yang pendek. Selain itu, produk ini cepat dan mudah untuk menginstal sehingga memberikan kemungkinan untuk mencapai jaringan roll out yang cepat. RBS 2000 menyediakan produk untuk instalasi indoor dan outdoor dan tersedia untuk GSM 900, GSM 1800 dan GSM 1900.

Contoh seri RBS 2000

FUNGSI RBS
Fungsi RBS dapat dibagi menjadi bidang-bidang berikut:
1.      Radio Resource
2.      Signal Processing
3.      Signal Link Management
4.      Synchronization
5.      Local Maintenance Handling
6.      Functional Supervision and testing

1.      Radio Resources
Fungsi utama sebuah RBS adalah untuk menyediakan koneksi dengan MS melalui antarmuka udara.(air interface). Yang termasuk tugas-tugas berikut:
·         Konfigurasi dan sistem start:
Konfigurasi site melibatkan pemuatan perangkat lunak dari BSC dan pengaturan parameter sebelum sistem startup, termasuk:
-          Frekuensi transmitter dan receiver
-          Output daya maksimum
-          Base Station Identity Code (BSIC)
·         Transmission Radio:
Untuk mengirimkan beberapa frekuensi menggunakan antena yang sama, combiner atau satu set combiners diperlukan. Daya transmisi dikendalikan dari BSC.
·         Radio Reception:
Selain penerimaan dari lalu lintas di saluran fisik, RBS utama berfungsi mendeteksi permintaan saluran dari MS (misalnya ketika panggilan sedang dibuat).



RBS listening permintaan saluran dan
mengukur uplink dan membangun koneksi

2.      Signal Processing
Sebuah RBS bertanggung jawab untuk pengolahan sinyal sebelum transmisi dan setelah penerimaan. Ini termasuk:
·         Ciphering menggunakan ciphering key
·         Coding Channel dan interleaving
·         Adaptive Equalization
·         Realization of diversity
·         Demodulation

3.      Signal Link Manajemen
Sebuah RBS mengelola link pensinyalan antara BSC dan MS, menerapkan protokol sesuai dengan informasi yang dikirim.

4.      Synchronization
Informasi waktu diekstrak PCM-link dari BSC dan dikirim ke modul waktu dalam RBS. Yang memungkinkan RBS untuk menyinkronkan dengan referensi frekuensi dan nomor frame TDMA yang benar.

5.      Local Maintenance Handling
Sebuah RBS memungkinkan operasi dan pemeliharaan fungsi yang harus dilakukan secara lokal di lokasi RBS, tanpa koneksi BSC. Dengan cara ini, teknisi lapangan dapat memelihara peralatan RBS dan software di site.

6.      Functional Supervision and testing
Mendukung Functional Supervision and testing RBS, baik menggunakan built-in tes selama operasi normal atau tes dijalankan oleh perintah.

IMPLEMENTASI RBS 2000
Semua jenis RBS dalam seri RBS 2000 memiliki karakteristik sebagai berikut:
·        Dukungan untuk fleksibilitas pengguna dengan menyediakan perangkat keras dan perangkat lunak modular desain.
·      Berorientasi Transceiver desain, yang menekankan menggunakan peralatan umum sesedikit mungkin memastikan kinerja yang dapat diandalkan.
·         Desain dan penggunaan ditujukan untuk menjaga siklus hidup sistem biaya rendah.
RBS 2000 series didasarkan pada standar unit perangkat keras yang disebut Unit diganti (RU). RU utama adalah:
·         Distribution Switch Unit (DXU)
·         Transceiver Unit (TRU)
·         Combining and Distribution Unit (CDU)
·         Power Supply Unit (PSU)
·         Energy Control Unit (ECU)



Unit RBS 2000 yang dapat diganti

Distribution Switch Unit (DXU)
DXU melakukan fungsi sebagai berikut:
·         Menyediakan antarmuka ke BSC
·         Mengelola sumber daya hubungan dan menghubungkan slot waktu lalu lintas dari link BSC ke TRU.
·         Kontrol sinyal untuk BSC dan melakukan konsentrasi
·       Ekstrak sinkronisasi informasi dari link dan menghasilkan referensi waktu untuk RBS Selain itu, DXU memiliki database yang menyimpan informasi tentang perangkat keras yang terpasang.

Transceiver Unit (TRU)
Satu TRU mencakup semua fungsi yang diperlukan untuk menangani satu operator radio (yaitu 8 slot waktu dalam satu frame TDMA). Hal ini bertanggung jawab untuk transmisi radio, penerima radio, amplifikasi daya dan pemrosesan sinyal. TRU berisi radio frekuensi test loop antara pemancar dan penerima. Fasilitas TRU test dengan cara menghasilkan sinyal dan mengulang kembali. TRU yang terhubung dengan bus untuk mengaktifkan frekuensi hopping. Beberapa produk RBS dapat berisi hingga 6 TRU.

Combining and Distribution Unit (CDU)
CDU adalah antarmuka antara TRU dan sistem antena 2-way. Tugas CDU adalah untuk menggabungkan sinyal yang akan dikirim dari berbagai transceiver dan untuk mendistribusikan sinyal yang diterima ke penerima. Semua sinyal difilter sebelum transmisi dan setelah penerimaan menggunakan filter bandpass. Berbagai jenis CDU telah dikembangkan untuk mendukung konfigurasi yang berbeda dalam RBS 2000. Mereka terdiri dari berbagai jenis CDUs, termasuk:
·         Tanpa combiners
·         Dengan combiners hybrid
·         Dengan combiners penyaring untuk mendukung konfigurasi besar
CDU dengan filter duplex memungkinkan untuk mengirim dan menerima menggunakan antena yang sama.



Contoh CDU tipe C

Power Supply Unit (PSU)
PSU menyearahkan tegangan listrik ke +24 VDC diperlukan untuk operasi RBS.

Control Unit Energi (ECU)
ECU mengontrol dan mengawasi peralatan listrik dan mengatur kondisi lingkungan di dalam kabinet. Perangkat lunak RBS di download dari BSC dan disimpan dalam non-volatile (flash memory) Program. Jika RBS bekerja, memori flash ini terus cell down time low karena lalu lintas tidak terganggu. Pemulihan kegagalan listrik juga dapat dilakukan dengan cepat.

RBS 2000 Family


RBS 2101

RBS 2102

RBS 2103
RBS 2301 and 2302


Sumber : terjemahan dari ( http://tel3pedia.blogspot.com )