Translate

Kendali LED / Device Via Internet dan Arduino

Kendali LED / Device via Internet dan Arduino (IoT)


                Pada malam hari ini saya akan menjelaskan mengenai bagaimana cara membuat alat berbasis internet atau bahasa kerennya "internet of things" dengan menggunakan Arduino Uno, prinsip kerja alat yang akan saya contohkan yaitu ada dua buah led yang akan dikendalikan on/off dengan menggunakan interface yang terpasang di web hosting, untuk web hosting bisa bermacam-macam, saya disini menggunakan idhostinger.com dengan status "gratis", maklum mahasiswa hehehe... . Alat ini tidak menggunakan webserver, namun komputer / laptop yang terkoneksi ke internet-lah yang akan menjadi webserver, jadi komputer mengambil data dari internet lalu dikirimkan ke arduino, Sistem kerja di interface hosting yaitu ada sebuah file bernama LEDstate.txt yang akan menampung data dari file led.php dan interface pakai control.html, berikut penjelasan lebih jelasnya.


 a. Arduino Uno





b. Web Hosting
- Pertama masuk ke web www.idhostinger.com
- Buat akun baru atau bisa masuk menggunakan akun google+ / facebook
- Buat hosting gratis dengan nama "www.chargingstation.hol.es" (contoh)
- Buka File Manager1 lalu buat 3 buah file berikut.

========
led.php
========
<?php
$onoroff = $_GET["state"]; // Declares the request from index.html as a variable
$textfile = "LEDstate.txt"; // Declares the name and location of the .txt file

$fileLocation = "$textfile";
$fh = fopen($fileLocation, 'w   ') or die("Something went wrong!"); // Opens up the .txt file for writing and replaces any previous content
$stringToWrite = "$onoroff"; // Write either 1 or 0 depending on request from index.html
fwrite($fh, $stringToWrite); // Writes it to the .txt file
fclose($fh);

header("Location: control.html"); // Return to frontend (control.html)
?>



========
control.html
========
<html>
<head>
<title>LED ON/OFF</title>
</head>
<body>

<p align="center">
<font size="8">

<!-- This part is a a link, which also sends a request to the php-document,telling it to write 1 or 0 to LEDstate.txt -->
<b>LAMPU 1 = &nbsp <a href="led.php?state=1">ON </a></b> /
<b><a href="led.php?state=0">OFF</a></b>
<br>
<b>LAMPU 2 = &nbsp <a href="led.php?state=2">ON</a></b> /
<b><a href="led.php?state=3">OFF</a></b>

</font>
</p>

</body>
</html>




===================
LEDstate.txt  (file kosong)
===================
 (kosong)





c. Setelah 3 file tersebut dibuat maka buat program Arduino berikut lalu upload

const int ledPin = 7;// the pin that the LED
const int ledPin2 = 6;
int incomingByte;      // a variable to read incoming serial data into

void setup() {
  // initialize serial communication:
  Serial.begin(9600);
  // initialize the LED pin as an output:
  pinMode(ledPin, OUTPUT);
  pinMode(ledPin2, OUTPUT);
}

void loop() {
  // see if there's incoming serial data:
    if (Serial.available() > 0) {
    // read the oldest byte in the serial buffer:
    incomingByte = Serial.read();
    // if it's a capital H (ASCII 72), turn on the LED:
    if (incomingByte == 'H') {
      digitalWrite(ledPin, HIGH);
    }
    if (incomingByte == 'L') {
      digitalWrite(ledPin, LOW);
    }
    // if it's an L (ASCII 76) turn off the LED:
    if (incomingByte == 'A') {
      digitalWrite(ledPin2, LOW);
    }
    if (incomingByte == 'B') {
      digitalWrite(ledPin2, HIGH);
    }

  }
}




d. Kemudian buat file Arduino | Processing berikut  lalu RUN

 import processing.serial.*;
 Serial port;

 void setup()  {

 port = new Serial(this, Serial.list()[0], 9600);  

}
 void draw() {

  String onoroff[] = loadStrings("http://chargingstation.hol.es/LEDstate.txt"); // Insert the location of your .txt file
  print(onoroff[0]);  // Prints whatever is in the file ("1" or "0")

  if (onoroff[0].equals("1") == true) {
    println(" - TELLING ARDUINO TO TURN LED ON");
    port.write('H'); // Send "H" over serial to set LED to HIGH

  }
 
  if (onoroff[0].equals("0") == true){

    println(" - TELLING ARDUINO TO TURN LED OFF");
    port.write('L');  // Send "L" over serial to set LED to LOW
 }

   if (onoroff[0].equals("3") == true) {
    println(" - TELLING ARDUINO TO TURN LED ON");
    port.write('A'); // Send "A" over serial to set LED to HIGH

  }
 
  if (onoroff[0].equals("2") == true){

    println(" - TELLING ARDUINO TO TURN LED OFF");
    port.write('B');  // Send "B" over serial to set LED to LOW
 }

  delay(1000); // Set your desired interval here, in milliseconds
 }




 e. Buka alamat yang tadi dibuat "http://chargingstation.hol.es/control.html"



f. Lihat apa yang terjadi pada LED saat tombol ditekan


g. VIDEO HASILNYA
 






sumber = http://projects.sindrelindstad.com/how-to-led-arduino-php-proc/

    

Membuat Alat kendali Untuk Tanaman Hidroponik

Membuat Alat kendali Untuk Tanaman Hidroponik


               Malam ini agak tidak enak badan tapi tak mengapa saya tetap akan mem-posting sesuatu yang bisa membuat pecinta elektronik bahagia, kali ini saya akan menjelaskan mengenai bagaimana cara membuat alat kendali otomatis untuk tanaman hidroponik, kendali otomatis yang disediakan pada contoh ini yaitu kendali waktu penyiraman dan kendali waktu kipas on/off serta blower on/off, selain itu juga ada pemantauan suhu dan kelembapan, Alat ini disetting untuk menyirami tanaman 2 kali dalam 1 hari dan juga kipas akan on saat suhu > 32 derajat celcius. berikut listing program dan skematiknya.



a. Skematik Minimum System





b. Program Bascom AVR

$regfile = "m16def.dat"
$crystal = 12000000

Config Lcdpin = Pin , Rs = Portc.6 , E = Portc.7 , Db4 = Portc.2
Config Lcdpin = Pin , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5
Config Lcd = 16 * 2

Cls
Cursor Off

Config Sda = Portc.1
Config Scl = Portc.0

Const Ds1307w = &HD0
Const Ds1307r = &HD1


Dim _sec As Byte
Dim _min As Byte
Dim _hour As Byte
Dim _day As Byte
Dim _month As Byte
Dim _year As Byte
Dim _weekday As Byte

Dim Sa(3) As String * 2
Dim Sb(3) As String * 2

Declare Sub Getdatetime
Declare Sub Settime
Declare Sub Getsec
Declare Sub Disptime
Declare Sub Dispdate
Declare Sub Format_00
Declare Sub Setdate
Declare Sub Subset

Dim I As Byte
Dim Flagset As Bit                                          '0 = Waktu, 1 = Tanggal
Dim Flagreset As Bit
Dim Line1 As String * 1

'=========================================RTC

Dim Weekday As Byte
Dim Jam_puluhan As Integer
Dim Jam_satuan As Integer
Dim Min_puluhan As Integer
Dim Min_satuan As Integer
Dim Sec_puluhan As Integer
Dim Sec_satuan As Integer
Dim Ax As Integer

Dim Detmerah1 As Eram Integer
Dim Detkuning1 As Eram Integer
Dim Dethijau1 As Eram Integer

Dim Merah1 As Integer
Dim Kuning1 As Integer
Dim Hijau1 As Integer

Dim Xjam As Byte
Dim Xmenit As Byte
Dim Ok_jam As Eram Byte
Dim Ok_menit As Eram Byte


Declare Sub Get_th(t As Byte , H As Byte)
Config Serialin = Buffered , Size = 128
Config Serialout = Buffered , Size = 128
Dht_put Alias Portb.2
Dht_get Alias Pinb.2
Dht_io_set Alias Ddrb.2
Dim T As Byte
Dim H As Byte
Dim Crc As Byte
Dim Mybyte As Byte
Dim Sensor_data As String * 40
Dim Tmp_str8 As String * 8
Dim Count As Byte
Enable Interrupts
Set Dht_io_set
Set Dht_put

Dim Jam As Byte , Menit As Byte , Tanggal As Byte , Bulan As Byte , Tahun As Byte
Dim Jamx As Eram Byte , Menitx As Eram Byte , Tanggalx As Eram Byte , Bulanx As Eram Byte , Tahunx As Eram Byte
Dim Lampon As Byte , Lampoff As Byte
Dim Lamponx As Eram Byte , Lampoffx As Eram Byte
Dim Pomon As Byte , Pomon2 As Byte
Dim Pomonx As Eram Byte , Pomon2x As Eram Byte

Dim A As Integer

'pompa air
Ddrb.3 = 1

'lampu LED
Ddrb.4 = 1

'tombol1
Ddrd.2 = 0
'tombol2
Ddrd.3 = 0
'tombol3
Ddrd.6 = 0
'tombol4
Ddrd.7 = 0

Ddrd.4 = 1
Ddrd.5 = 1


Tombolup Alias Pind.2
Tomboldown Alias Pind.3
Tombolselect Alias Pind.6
Tombolset Alias Pind.7

Set Portd.6
Set Portd.7
Set Portd.2
Set Portd.3


I = 13
Line1 = Chr(13)

'_sec = 00
'_hour = Jamx
'_min = 00
'Settime

'_day = 14
'_month = 3
'_year = 15
'Setdate

Main:


Portd.4 = 1
Portd.5 = 1

Lampon = Lamponx
Lampoff = Lampoffx
Pomon = Pomonx
Pomon2 = Pomon2x


A = 0


Do

'untuk menampilkan jam & tanggal
Getdatetime
Upperline
Dispdate
Lowerline
Disptime

Wait 3


If Tombolset = 0 Then
Goto Setting
End If


Call Get_th(t , H)
Cls

Upperline
Lcd "TMP: " ; T ; "C"
Lowerline
Lcd "HUM: " ; H ; "%"

Wait 5

If Tombolset = 0 Then
Goto Setting
End If

Cls

'kipas
Portd.5 = 0

'atur blower
If T > 32 Then
Portd.4 = 0
Else
Portd.4 = 1
End If

If _hour = Lampon Then
Portb.4 = 1
Elseif _hour = Lampoff Then
Portb.4 = 0
End If


If _hour = Pomon And A = 0 Then
Portb.3 = 1
Cls
Upperline
Lcd "POMPA NYALA"
Lowerline
Lcd "WAit 5 Menit"
Wait 300
Cls
Portb.3 = 0
A = 1
End If

If _hour = Pomon2 And A = 1 Then
Portb.3 = 1
Cls
Upperline
Lcd "POMPA NYALA"
Lowerline
Lcd "WAit 5 Menit"
Wait 300
Cls
Portb.3 = 0
A = 2
End If

If _hour = 23 Then
A = 0
End If




Loop




Sub Getdatetime:

I2cstart                                                    ' Generate start code
I2cwbyte Ds1307w                                            ' send address

I2cwbyte 0                                                  ' start address in 1307

I2cstart                                                    ' Generate start code
I2cwbyte Ds1307r                                            ' send address

I2crbyte _sec , Ack
I2crbyte _min , Ack                                         ' MINUTES
I2crbyte _hour , Ack                                        ' Hours
I2crbyte _weekday , Ack                                     ' Day of Week
I2crbyte _day , Ack                                         ' Day of Month
I2crbyte _month , Ack                                       ' Month of Year
I2crbyte _year , Nack                                       ' Year

I2cstop

_sec = Makedec(_sec) : _min = Makedec(_min) : _hour = Makedec(_hour)
_day = Makedec(_day) : _month = Makedec(_month) : _year = Makedec(_year)
End Sub

Sub Settime:
_sec = Makebcd(_sec) : _min = Makebcd(_min) : _hour = Makebcd(_hour)

I2cstart                                                    ' Generate start code
I2cwbyte Ds1307w                                            ' send address
I2cwbyte 0                                                  ' starting address in 1307
I2cwbyte _sec                                               ' Send Data to SECONDS
I2cwbyte _min                                               ' MINUTES
I2cwbyte _hour                                              ' Hours
I2cstop

End Sub

Sub Setdate

_day = Makebcd(_day) : _month = Makebcd(_month) : _year = Makebcd(_year)

I2cstart                                                    ' Generate start code
I2cwbyte Ds1307w                                            ' send address
I2cwbyte 4                                                  ' starting address in 1307
I2cwbyte _day                                               ' Send Data to SECONDS
I2cwbyte _month                                             ' MINUTES
I2cwbyte _year                                              ' Hours
I2cstop

End Sub

Sub Dispdate
Sa(1) = Str(_day)
Sa(2) = Str(_month)
Sa(3) = Str(_year)
Format_00
Lcd "Date: " ; Sb(1) ; "-" ; Sb(2) ; "-" ; Sb(3)
End Sub

Sub Disptime
Sa(1) = Str(_hour)
Sa(2) = Str(_min)
Sa(3) = Str(_sec)
Format_00
Lcd "Time: " ; Sb(1) ; ":" ; Sb(2) ; ":" ; Sb(3)
End Sub

Sub Format_00
For I = 1 To 3 Step 1
Sb(i) = Format(sa(i) , "00")
Next I
End Sub
Return



Sub Get_th(t As Byte , H As Byte)
 Count = 0
 Sensor_data = ""
 Set Dht_io_set
 Reset Dht_put
 Waitms 25
 Set Dht_put
 Waitus 40
 Reset Dht_io_set
 Waitus 40
 If Dht_get = 1 Then
    H = 1
    Exit Sub
 End If
  Waitus 80
  If Dht_get = 0 Then
    H = 2
    Exit Sub
  End If
  While Dht_get = 1 : Wend
   Do
    While Dht_get = 0 : Wend
    Waitus 30
     If Dht_get = 1 Then
       Sensor_data = Sensor_data + "1"
       While Dht_get = 1 : Wend
       Else
       Sensor_data = Sensor_data + "0"
    End If
    Incr Count
   Loop Until Count = 40
   Set Dht_io_set
   Set Dht_put
   Tmp_str8 = Left(sensor_data , 8)
   H = Binval(tmp_str8)
   Tmp_str8 = Mid(sensor_data , 17 , 8)
   T = Binval(tmp_str8)
   Tmp_str8 = Right(sensor_data , 8)
   Crc = Binval(tmp_str8)
   Mybyte = T + H
   If Mybyte <> Crc Then
      H = 3
   End If
End Sub

Return



Setting:

Cls

Do
Locate 1 , 1
Lcd "Set Jam "
Locate 2 , 1
Lcd "jam = " ; Jam

If Tombolup = 0 Then
Incr Jam
If Jam > 23 Then
Jam = 1
End If
Waitms 100
Cls
End If


If Tomboldown = 0 Then
Decr Jam
If Jam < 1 Then
Jam = 23
End If
Waitms 100
Cls
End If

If Tombolselect = 0 Then
Waitms 100
Bitwait Tombolselect , Set
Jamx = Jam
_hour = Jamx
Exit Do
End If
Loop


Cls


Do
Locate 1 , 1
Lcd "Set Menit "
Locate 2 , 1
Lcd "Menit = " ; Menit

If Tombolup = 0 Then
Incr Menit
If Menit > 59 Then
Menit = 0
End If
Waitms 100
Cls
End If


If Tomboldown = 0 Then
Decr Menit
If Menit < 1 Then
Menit = 59
End If
Waitms 100
Cls
End If

If Tombolselect = 0 Then
Waitms 100
Bitwait Tombolselect , Set
Menitx = Menit
_min = Menitx
Exit Do
End If
Loop

Settime

Cls

Do
Locate 1 , 1
Lcd "Set tanggal "
Locate 2 , 1
Lcd "tanggal = " ; Tanggal

If Tombolup = 0 Then
Incr Tanggal
If Tanggal > 31 Then
Tanggal = 1
End If
Waitms 100
Cls
End If


If Tomboldown = 0 Then
Decr Tanggal
If Tanggal < 1 Then
Tanggal = 31
End If
Waitms 100
Cls
End If

If Tombolselect = 0 Then
Waitms 100
Bitwait Tombolselect , Set
Tanggalx = Tanggal
_day = Tanggalx
Exit Do
End If
Loop

Cls

Do
Locate 1 , 1
Lcd "Set Bulan "
Locate 2 , 1
Lcd "bulan = " ; Bulan

If Tombolup = 0 Then
Incr Bulan
If Bulan > 12 Then
Bulan = 1
End If
Waitms 100
Cls
End If


If Tomboldown = 0 Then
Decr Bulan
If Bulan < 1 Then
Bulan = 12
End If
Waitms 100
Cls
End If

If Tombolselect = 0 Then
Waitms 100
Bitwait Tombolselect , Set
Bulanx = Bulan
_month = Bulanx
Exit Do
End If
Loop

Cls

Do
Locate 1 , 1
Lcd "Set Tahun "
Locate 2 , 1
Lcd "tahun = " ; Tahun

If Tombolup = 0 Then
Incr Tahun
If Tahun > 99 Then
Tahun = 0
End If
Waitms 100
Cls
End If


If Tomboldown = 0 Then
Decr Tahun
If Tahun < 1 Then
Tahun = 99
End If
Waitms 100
Cls
End If

If Tombolselect = 0 Then
Waitms 100
Bitwait Tombolselect , Set
Tahunx = Tahun
_year = Tahunx
Exit Do
End If
Loop

Setdate

Cls

Lampon = 0
Lampoff = 0

Do
Locate 1 , 1
Lcd "Lampu ON "
Locate 2 , 1
Lcd "jam = " ; Lampon

If Tombolup = 0 Then
Incr Lampon
If Lampon > 23 Then
Lampon = 0
End If
Waitms 100
Cls
End If


If Tomboldown = 0 Then
Decr Lampon
If Lampon < 1 Then
Lampon = 23
End If
Waitms 100
Cls
End If

If Tombolselect = 0 Then
Waitms 100
Bitwait Tombolselect , Set
Lamponx = Lampon

Exit Do
End If
Loop


Cls

Do
Locate 1 , 1
Lcd "Lampu OFF "
Locate 2 , 1
Lcd "jam = " ; Lampoff

If Tombolup = 0 Then
Incr Lampoff
If Lampoff > 23 Then
Lampoff = 0
End If
Waitms 100
Cls
End If


If Tomboldown = 0 Then
Decr Lampoff
If Lampoff < 1 Then
Lampoff = 23
End If
Waitms 100
Cls
End If

If Tombolselect = 0 Then
Waitms 100
Bitwait Tombolselect , Set
Lampoffx = Lampoff

Exit Do
End If
Loop


Lampon = Lamponx
Lampoff = Lampoffx


'POMPA AIR

Cls

Pomon = 0
Pomon2 = 0

Do
Locate 1 , 1
Lcd "Pompa ON 1 "
Locate 2 , 1
Lcd "jam = " ; Pomon

If Tombolup = 0 Then
Incr Pomon
If Pomon > 23 Then
Pomon = 0
End If
Waitms 100
Cls
End If


If Tomboldown = 0 Then
Decr Pomon
If Pomon < 1 Then
Pomon = 23
End If
Waitms 100
Cls
End If

If Tombolselect = 0 Then
Waitms 100
Bitwait Tombolselect , Set
Pomonx = Pomon

Exit Do
End If
Loop



Cls

Do
Locate 1 , 1
Lcd "Pompa ON 2 "
Locate 2 , 1
Lcd "jam = " ; Pomon2

If Tombolup = 0 Then
Incr Pomon2
If Pomon2 > 23 Then
Pomon2 = 0
End If
Waitms 100
End If


If Tomboldown = 0 Then
Decr Pomon2
If Pomon2 < 1 Then
Pomon2 = 23
End If
Waitms 100
End If

If Tombolselect = 0 Then
Waitms 100
Bitwait Tombolselect , Set
Pomon2x = Pomon2

Exit Do
End If
Loop


Pomon = Pomonx
Pomon2 = Pomon2x

Goto Main
Return






Mengakses LCD NOKIA 5110 Bascom AVR

Mengakses LCD NOKIA 5110 Bascom AVR


              Malam kian larut dalam keheningan, di malam yang dingin ini saya akan menjelaskan mengenai bagaimana cara mengakses LCD Nokia 5110 dengan menggunakan bascom AVR, Pada penjelasan kali ini saya mencontohkan bagaimana membuat text di LCD Nokia 5110, hanya sebatas text saja, untuk kebutuhan yang lain bisa dikembangkan sendiri seperti untuk menampilkan gambar atau menampilkan angka, yang harus diketahui dan diperhatikan bahwa lcd nokia ini bekerja pada level 3,3 v sehingga harus diberikan beberapa resistor agar arus dan teganganya bisa sesuai. berikut penjelasan program dan skemanya. Untuk download file library-nya bisa di download di link ini.



a. Minimum System




b. LCD Nokia 5110





 c. Cara Pasang MCU ke LCD Nokia 5110





 d. Program Bascom AVR

$regfile = "m32def.dat"
$crystal = 11059200
$hwstack = 32
$swstack = 8
$framesize = 52

'PIN DC
Config Portb.2 = Output
D3310dc Alias Portb.2

'PIN CE
Config Portb.3 = Output
D3310ce Alias Portb.3

'PIN DIN = portb.1, CLK = portb.0, RST = Reset
Config Spi = Soft , Din = None , Dout = Portb.1 , Ss = None , Clock = Portb.0

Spiinit
$include "3310init.bas"


Call D3310init

Do

'Call D3310clear
Call D3310position(1 , 0)
Call D3310print( "NOKIA 5110")
Call D3310position(7 , 1)
Call D3310print( " DEMO BY")
Call D3310position(2 , 4)
Call D3310print( "yanuar m")
Wait 5
'Call D3310invert
'Wait 5
'Call D3310uninvert
'Wait 5
Call D3310clear
Wait 1

Loop
End

$include "3310end.bas"

Return




e. VIDEO HASILNYA







Membuat Alat Monitoring Tegangan Menggunakan Android dan Bluetooth

Membuat Alat Monitoring Tegangan Menggunakan Android dan Bluetooth (Handphone menerima data dari MCU)


             Selamat malam, selamat beraktifitas malam, kali ini saya akan menjelaskan mengenai bagaimana cara membuat alat yang dapat menghubungkan antara handphone android dengan mikrokontroller, pada contoh kali ini saya akan mencoba menjelaskan mengenai mikrokontroller yang mendeteksi suatu tegangan, kemudian data tersebut dikirimkan ke handphone Android, jadi kalau biasanya komputer yang menerima data, sekarang yang menerima data adalah handphone Android, berikut penjelasan mengenai skema dan programnya.


a. Minimum System 




 b. Bluetooth HC-05




c. Program Android







d. Program Bascom

$regfile = "m16def.dat"
$crystal = 11059200


Config Adc = Single , Prescaler = Auto , Reference = Avcc

Cursor Off
Cls

Dim Dataadc As Word
Dim V As Single
Dim X As String * 5

Start Adc

Do

Dataadc = Getadc(0)

V = Dataadc * 5
V = V / 1023

X = Fusing(v , "#.##")

Print X


Locate 1 , 1
Lcd "adc= " ; Dataadc

Locate 2 , 1
Lcd "V= " ; X

Waitms 500
Loop




e. VIDEO HASILNYA







Mengakses LCD TFT 2.2 SPI 240*320 ARDUINO

Mengakses LCD TFT 2.2 SPI (240*320) ARDUINO


                Malam sebelum sidang TA, kali ini saya akan menjelaskan mengenai bagaimana cara mengakses LCD TFT menggunakan Arduino Mega, Lcd TFT yang dipakai adalah LCD TFT 2.2 ukuran 240*320. pada percobaan kali ini saya hanya menampilkan count down saja dan juga beberapa tulisan yang menjelaskan letak dan warnanya. Yang harus diperhatikan dalam bermain LCD TFT ini adalah konfigurasi pin dan level tegangannya, jangan menggunakan level tegangan 5v, gunakanlah level tegangan 3,3 volt sesuai dengan datasheet. Pada contoh ini digunakan IC CD4050 sebagai level shifter atau menurunkan level tegangan dari 5v menjadi 3,3 volt. alasan mengapa menggunakan Arduino mega karena daya tampung Arduino tipe ini lebih besar dibanding Arduino UNO jadi untuk mengembangkan program lebih banyak akan terasa mudah. untuk lebih jelasnya berikut adalah skematik dan programnya.


a. Arduino Mega




b. LCD TFT ILI9341 2.2 TFT (240*320)




c. Konfigurasi LCD TFT ke Arduino Mega

Pada contoh menggunakan Arduino Uno tapi pasangkan sesuai Arduino Mega

 Sumber : http://gordonsprojects.blogspot.com/2014/04/arduino-tft-serial-spi-22-ili9341.html



 d. Program Arduino IDE Count Down

//download library di link berikut lalu ekstrak di folder library Arduino
//http://www.4shared.com/zip/GEl6qr4_ba/UTFT.html

#include <memorysaver.h>
#include <UTFT.h>

// Declare which fonts we will be using
extern uint8_t SmallFont[];
extern uint8_t BigFont[];
extern uint8_t SevenSegNumFont[];


int hours = 24;
int minutes = 0;

int count=0;

UTFT myGLCD(TFT01_22SP,11,13,5,4,6);

void setup()
{
// initialize the serial communication:
Serial.begin(9600);
Serial.println("Starting 24 countdown");

myGLCD.InitLCD();
myGLCD.clrScr();
myGLCD.setFont(BigFont);
}

void displayDigits( int value , int x , int y ) {
String strValue = (value<10 ? "0" + String(value): String(value));
myGLCD.print(strValue , x, y );

}

void loop()
{
myGLCD.print("Text rotation", 0, 0);
myGLCD.setColor(0, 0, 255);
myGLCD.print("Arduino", 0, 16, 0);
myGLCD.print("Arduino", 319, 0, 90);
myGLCD.print("Arduino", 319, 239, 180);
myGLCD.print("Arduino", 0, 239, 270);

myGLCD.setColor( 255 , 0 , 0 );
myGLCD.print("Hello World", 80 , 160 , 0);

myGLCD.setFont(SevenSegNumFont);
myGLCD.setColor(0, 255, 0);
myGLCD.print(String(hours) , 100, 90 );
myGLCD.print(String(minutes) , 180 , 90);

while( true ) {
count++;

if( count%10000==0 ) {
Serial.println("Update");
Serial.flush();

if (--minutes<0) {
minutes=60;
if(--hours<0) {
hours=24;
}
}

displayDigits( hours , 100, 90);
displayDigits( minutes, 180 , 90);
}
}
}



 e. Program Arduino IDE Tampilkan Data ADC

//download library di link berikut lalu ekstrak di folder library Arduino
//http://www.4shared.com/zip/GEl6qr4_ba/UTFT.html

#include <memorysaver.h>
#include <UTFT.h>

// Declare which fonts we will be using
extern uint8_t SmallFont[];
extern uint8_t BigFont[];
extern uint8_t SevenSegNumFont[];

UTFT myGLCD(TFT01_22SP,11,13,5,4,6);

void setup()
{
// initialize the serial communication:
Serial.begin(9600);

myGLCD.InitLCD();
myGLCD.clrScr();
myGLCD.setFont(BigFont);
}

void displayDigits( int value , int x , int y ) {
//String strValue = (value<2000 ? "" + String(value): String(value));
String strValue = String(value);
myGLCD.print(strValue , x, y );

}

void loop()
{


myGLCD.setColor( 255 , 255 , 255 );
myGLCD.print("DATA ADC", 80 , 160 , 0);


while( true ) {
int sensorValue = analogRead(A0);


myGLCD.setFont(SevenSegNumFont);
myGLCD.setColor(0, 255, 0);
myGLCD.print(String(sensorValue), 100, 90 );

displayDigits(sensorValue , 100, 90);

delay(500);

}
 
}

  

 f. VIDEO HASILNYA








Membuat Alat Kendali dengan Accelerometer Hand Phone Android

Membuat Alat Kendali Robot dengan Accelerometer Hand Phone Android


            Di malam hari menjelang pagi ini, saya akan menjelaskan mengenai bagaimana cara mengakses accelero pada HP android yang digunakan untuk kendali arah gerak robot, jadi menggunakan HP Android yang memiliki fitur accelerometer, data yang diambil dengan memiringkan HP ke arah utara, selatan, timur dan barat, sehingga didapat nilai yang akan dikirimkan ke Arduino dengan perantara bluetooth, memang perantara yang digunakan adalah bluetooth sehingga jarak yang bisa dioptimalkan tidak-lah jauh, seperti halnya sensor accelero, pada tampilan di HP akan tampak nilai X, Y dan Z, namun yang dikirimkan ke Arduino bukanlah X, Y maupun Z tapi penjumlahan dari ketiga nilai X, Y dan Z sehingga akan dihasilkan nilai yang berbeda tiap gerakannya. Untuk lebih jelasnya berikut skema dan Programnya.


a. Hand Phone Android




b. Arduino  UNO




c. Bluetooth HC-05



d. Motor Driver L293




e. Program Arduino

int kiri = 4;
int kiri2 = 5;
int kanan = 3;
int kanan2 = 2;

int accelero;

void setup() {
Serial.begin(9600);
Serial.setTimeout(5);
}

void loop() {
 
if (Serial.available() > 0)
{
  accelero = Serial.parseInt();
 if (accelero >= 1 && accelero <= 3)
 {
 //maju
 digitalWrite(kiri, HIGH);
 digitalWrite(kiri2, LOW);
 digitalWrite(kanan, HIGH);
 digitalWrite(kanan2, LOW);
 }

 if (accelero >= 11 && accelero <= 12)
{
 //mundur
 digitalWrite(kiri, LOW);
 digitalWrite(kiri2, HIGH);
 digitalWrite(kanan, LOW);
 digitalWrite(kanan2, HIGH);
}

 if (accelero >= 13 && accelero <= 20)
 {
 //kiri
 digitalWrite(kiri, HIGH);
 digitalWrite(kiri2, LOW);
 digitalWrite(kanan, LOW);
 digitalWrite(kanan2, LOW);
 }

 if (accelero >= 4 && accelero <= 6)
 {
 //kanan
 digitalWrite(kiri, LOW);
 digitalWrite(kiri2, LOW);
 digitalWrite(kanan, HIGH);
 digitalWrite(kanan2, LOW);
 }

  if (accelero >= 7 && accelero <= 10)
 {
 //stop
 digitalWrite(kiri, LOW);
 digitalWrite(kiri2, LOW);
 digitalWrite(kanan, LOW);
 digitalWrite(kanan2, LOW);
 }


}

}



f. Program Android







g. Cara Pasang

Bluetooth      Arduino
Rx                  Tx
Tx                   Rx
Vcc                 5v
Gnd                Gnd


Motor Driver    Arduino
Vss                     Vin
Vcc                     5v
1A                      Pin 3
2A                      Pin 2
3A                      pin 5
4A                      pin 4


            Langkah diatas adalah langkah yang digunakan untuk menghubungkan antara Arduino dan Hp Android, namun bagaimana jika Hp Android di hubungkan ke mikrokontroller menggunakan Bascom AVR ?, jawabnya sama saja, langkah dan alatnya sama saja, yang berbeda adalah programnya, berikut adalah program menggunakan Bascom AVR dan video hasilnya.




h. Program Bascom AVR

$regfile = "m16def.dat"
$crystal = 11059200

Config Lcdpin = Pin , Rs = Portc.2 , E = Portc.3 , Db4 = Portc.4
Config Lcdpin = Pin , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7
Config Lcd = 16 * 2

Dim Cek As String * 20
Dim Datas As String * 20
Dim Id As String * 20
Dim I As Integer
Dim X As Single


Cls
Cursor Off


Datas = ""
I = 0

Do
Cek = Inkey()

If Cek <> "" Then
Incr I
Datas = Datas + Cek
Id = Mid(datas , 4 , 7 )
X = Val(id)

End If

Loop Until I > 7

I = 0

Cls
Cursor Off

Locate 2 , 1
Lcd X

If X > 7 And X < 9 Then
Upperline
Lcd "Tengah"
End If

If X >= 3 And X <= 5 Then
Upperline
Lcd "ATAS"
End If

If X < 3 Then
Upperline
Lcd "KANAN"
End If

If X >= 10 And X < 13 Then
Upperline
Lcd "BAWAH"
End If

If X > 13 Then
Upperline
Lcd "KIRI"
End If
Wait 1




i. VIDEO HASILNYA









Mengakses sensor MPX5700AP (Air pressure sensor / tekanan udara)

Mengakses sensor MPX5700AP (Air pressure sensor / tekanan udara)


           Kali ini saya akan menjelaskan mengenai bagaimaa cara mengakses sensor MPX5700AP, seperti yang telah diketahui sebelumnya bahwa sensor ini adalah sensor yang digunakan untuk mengetahui tekanan udara dalam sebuah benda, baik itu di dalam botol, didalam ban, dan lainnya, sensor ini bisa mengukur dengan range 0 to 700 kPa (0 to 101.5 psi) - 15 to 700 kPa (2.18 to 101.5 psi), serta tegangan outputnya berada di range 0.2 to 4.7 volt. berikut penjelasan gambar dan detailnya.

Pin 1: Signal out (0.2 volts to 4.9 volts)
Pin 2: Ground
Pin 3: 5 Volts
Pin 4: No connection
Pin 5: No connection
Pin 6: No connection 

Features :
• Differential and Gauge Applications Available
• 1.4% Maximum Error Over 0° to 85°C
• Patented Silicon Shear Stress Strain Gauge
• Temperature Compensated Over –40° to +125°C
• Offers Reduction in Weight and Volume Compared to Existing Hybrid Modules
• Durable Epoxy Unibody Element



1. Minimum System 



2. Program Bascom AVR

$regfile = "m16def.dat"
$crystal = 12000000

Config Lcdpin = Pin , Rs = Portc.6 , E = Portc.7 , Db4 = Portc.2
Config Lcdpin = Pin , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5
Config Lcd = 16 * 2


Ddrb.0 = 1

Config Adc = Single , Prescaler = Auto , Reference = Avcc

Cursor Off
Cls

Dim Dataadc As Word
Dim V As Single
Dim X As String * 5

Start Adc

Do

Dataadc = Getadc(0)

V = Dataadc * 5
V = V / 1023

X = Fusing(v , "#.##")

Locate 1 , 1
Lcd "adc= " ; Dataadc

Locate 2 , 1
Lcd "V= " ; X

Loop




3. Cara Merubah Volt ke kPa dan Psi dan mmHg


   v =(float)(Dataadc*5.0)/1023.0      
   kpa = (float)((v / 5)-0.04)/0.0012858
   Psi = (float)(kpa * 0.145)
   mmhg = (float)(kpa * 7.5)





4. VIDEO HASILNYA