modul 3

Smart Parking





1. Pendahuluan
[Kembali]

Seiring bertambahnya populasi dan juga jumlah kendaraan bermotor, maka semakin berkurang juga lahan parkir yang tersedia. Nantinya akan memaksa si pemilik kendaraan untuk memarkirkan kendaraannya hanya di tempat terbuka, tanpa ada pengawasan. Hal ini akan berakibat membuka kesempatan bagi oknum yang untuk melakukan tindak kriminal seperti pencurian

    Oleh karena itu ,diperlukan suatu inovasi agar dapat menjamin keamanan kendaraan. Salah satu bentuk perwujudannya adalah dengan menggunakan Smart Garage yang memungkinkan pemilik kendaraan dapat memarkirkan kendaraannya dengan aman



2. Tujuan [Kembali]

  • Memenuhi tugas Mikrroprosesor dan Mikrokontroler 
  • Menjelaskan prinsip Aplikasi ESP 32 UART 
  • Mensimulasikan rangkaian yang menggunakan Aplikasi ESP 32 UART 

3. Alat dan Bahan [Kembali]

a. Power Supply




b. Voltmeter

c. Baterai


Spesifikasi dan Pinout Baterai

  • Input voltage: ac 100~240v / dc 10~30v
  • Output voltage: dc 1~35v
  • Max. Input current: dc 14a
  • Charging current: 0.1~10a
  • Discharging current: 0.1~1.0a
  • Balance current: 1.5a/cell max
  • Max. Discharging power: 15w
  • Max. Charging power: ac 100w / dc 250w
  • Jenis batre yg didukung: life, lilon, lipo 1~6s, lihv 1-6s, pb 1-12s, nimh, cd 1-16s
  • Ukuran: 126x115x49mm
  • Berat: 460gr





Bahan

a. Resistor


Spesifikasi :





b. Arduino Uno V2


Spesifikasi:

c. Jumper


d. Sensor PIR


Spesifikasi :
ItemValue
Input VoltageDC 4.5V ~ 20V
Static Current<50uA
Output Signal0V / 3V (Output high when motion detected)
Sensing Range7 meters (120 degree cone)
Delay time8s ~ 200s (adjustable)
Operating Temperature-15℃ ~ +70℃
Dimensions24mm*32mm*25mm(Height with lens)
Weight6.6g



e. Relay 



Spesifikasi :
  • Trigger Voltage (Voltage across coil) : 12V DC
  • Trigger Current (Nominal current) : 70mA
  • Maximum AC load current: 10A @ 250/125V AC
  • Maximum DC load current: 10A @ 30/28V DC
  • Compact 5-pin configuration with plastic moulding
  • Operating time: 10msec Release time: 5msec
  • Maximum switching: 300 operating/minute (mechanically)                                                                        
f. Motor DC

  •  DC Motor Specifications
    • Standard 130 Type DC motor
    • Operating Voltage: 4.5V to 9V
    • Recommended/Rated Voltage: 6V
    • Current at No load: 70mA (max)atNo-load Speed: 9000 rpm
    • Loaded current: 250mA (approx)
    • Rated Load: 10g*cm
    • Motor Size: 27.5mm x 20mm x 15mm
    • Weight: 17 grams


g. Matrix-8X8 



h. Seven Segment



i. Motor Driver


j. Sensor Suhu ( LM 35 )

k. Lampu 








4. Dasar Teori [Kembali]

a. Arduino Uno 


Arduino adalah pengendali mikro single-board yang bersifatopen-source, diturunkan dari Wiring platform, dirancang untuk memudahkan penggunaan elektronik dalam berbagai bidang. Hardware arduino memiliki prosesor Atmel AVR dan software arduino memiliki bahasa pemrograman C.Memori yang dimiliki oleh Arduino Uno sebagai berikut : Flash Memory sebesar 32KB, SRAM sebesar 2KB, dan EEPROM sebesar 1KB. Clock pada board Uno menggunakan XTAL dengan frekuensi 16 Mhz. Dari segi daya, Arduino Uno membutuhkan tegangan aktif kisaran 5 volt, sehingga Uno dapat diaktifkan melalui koneksi USB. Arduino Uno memiliki 28 kaki yang sering digunakan. Untuk Digital I/O terdiri dari 14 kaki, kaki 0 sampai kaki 13, dengan 6 kaki mampu memberikan output PWM (kaki 3,5,6,9,10,dan 11). Masing-masing dari 14 kaki digital di Uno beroperasi dengan tegangan maksimum 5 volt dan dapat memberikan atau menerima maksimum 40mA. Untuk Analog Input terdiri dari 6 kaki, yaitu kaki A0 sampai kaki A5. Kaki pin merupakan tempat input tegangan kepada Uno saat menggunakan sumber daya eksternal selain USB dan adaptor.

ATMega328 merupakan bagian mikrokontroler yang ada pada arduino R3 keluaran dari atmel yang mempunyai arsitektur RISC (Reduce Instruction Set Computer) yang mana setiap proses eksekusi data lebih cepat dari pada arsitektur CISC (Completed Instruction Set Computer). Mikrokontroler ini memiliki beberapa fitur antara lain:
1. Memiliki EEPROM (Electrically Erasable Programmable Read Only Memory) sebesar 1KB sebagai tempat penyimpanan data semi permanen karena EEPROM tetap dapat menyimpan data meskipun catu daya dimatikan.
2. Memiliki SRAM (Static Random Access Memory) sebesar 2KB.
3. Memiliki pin I/O digital sebanyak 14 pin 6 diantaranya PWM (Pulse Width Modulation) output.
4. 32 x 8-bit register serba guna.
5. Dengan clock 16 MHz kecepatan mencapai 16 MIPS.
6. 32 KB Flash memory dan pada arduino memiliki bootloader yang menggunakan 2 KB dari flash memori sebagai bootloader.
7. 130 macam instruksi yang hampir semuanya dieksekusi dalam satu siklus clock.


b. Resistor



Resistor merupakan salah satu komponen yang digunakan dalam sebuah sirkuit atau rangkaian elektronik. Resistor berfungsi sebagai resistansi/ hambatan yang mampu mengatur atau mengendalikan tegangan dan arus listrik rangkaian. Resistor mempunyai nilai resistansi (tahanan) tertentu yang dapat memproduksi tegangan listrik di antara kedua pin dimana nilai tegangan terhadap resistansi tersebut berbanding lurus dengan arus yang mengalir, berdasarkan persamaan hukum Ohm :




c. Power Supply
Vcc berfungsi untuk memberikan tegangan kepada input, dimana disini diberikan kepada switch.




d. Jumper
Kabel jumper adalah suatu istilah kabel yang ber-diameter kecil yang di dalam dunia elektronika digunakan untuk menghubungkan dua titik atau lebih dan dapat juga untuk menghubungkan 2 komponen elektronika. Kabel jumper jenis ini digunakan untuk koneksi male to male pada kedua ujung kabelnya.



e. Sensor PIR


PIR (Passive Infrared Receiver) merupakan sebuah sensor berbasiskan infrared. Akan tetapi, tidak seperti sensor infrared kebanyakan yang terdiri dari IR LED dan fototransistor. PIR tidak memancarkan apapun seperti IR LED. Sesuai dengan namanya ‘Passive’, sensor ini hanya merespon energi dari pancaran sinar inframerah pasif yang dimiliki oleh setiap benda yang terdeteksi olehnya. Benda yang bisa dideteksi oleh sensor ini biasanya adalah tubuh manusia

Diagram sebsor PIR:



PIR (Passive Infrared Receiver) merupakan sebuah sensor berbasiskan infrared. Akan tetapi, tidak seperti sensor infrared kebanyakan yang terdiri dari IR LED dan fototransistor. PIR tidak memancarkan apapun seperti IR LED. Sesuai dengan namanya ‘Passive’, sensor ini hanya merespon energi dari pancaran sinar inframerah pasif yang dimiliki oleh setiap benda yang terdeteksi olehnya. Benda yang bisa dideteksi oleh sensor ini biasanya adalah tubuh manusia.

Sensor PIR ini bekerja dengan menangkap energi panas yang dihasilkan dari pancaran sinar inframerah pasif yang dimiliki setiap benda dengan suhu benda diatas nol mutlak. Seperti tubuh manusia yang memiliki suhu tubuh kira-kira 32 derajat celcius, yang merupakan suhu panas yang khas yang terdapat pada lingkungan. Pancaran sinar inframerah inilah yang kemudian ditangkap oleh Pyroelectric sensor yang merupakan inti dari sensor PIR ini sehingga menyebabkan Pyroelectic sensor yang terdiri dari galium nitrida, caesium nitrat dan litium tantalate menghasilkan arus listrik. Mengapa bisa menghasilkan arus listrik? Karena pancaran sinar inframerah pasif ini membawa energi panas. Prosesnya hampir sama seperti arus listrik yangterbentuk ketika sinar matahari mengenai solar cell.

Grafik Respon Pir terhadap suhu


Grafik sensor pir terhadap jarak, kecepatan,arah objek







f. Relay



Relay adalah Saklar (Switch) yang dioperasikan secara listrik dan merupakan komponen Electromechanical (Elektromekanikal) yang terdiri dari 2 bagian utama yakni Elektromagnet (Coil) dan Mekanikal (seperangkat Kontak Saklar/Switch). Relay menggunakan Prinsip Elektromagnetik untuk menggerakkan Kontak Saklar sehingga dengan arus listrik yang kecil (low power) dapat menghantarkan listrik yang bertegangan lebih tinggi. Sebagai contoh, dengan Relay yang menggunakan Elektromagnet 5V dan 50 mA mampu menggerakan Armature Relay (yang berfungsi sebagai saklarnya) untuk menghantarkan listrik 220V 2A.



Ada besi atau yang disebut dengan nama inti besi dililit oleh sebuah kumparan yang berfungsi sebagai pengendali.  Sehingga kumparan kumparan yang diberikan arus listrik maka akan menghasilkan gaya elektromagnet.  Gaya tersebut selanjutnya akan menarik angker untuk pindah dari biasanya tutup ke buka normal.  Dengan demikian saklar menjadi pada posisi baru yang biasanya terbuka yang dapat menghantarkan arus listrik.  Ketika armature sudah tidak dialiri arus listrik lagi maka ia akan kembali pada posisi awal, yaitu normal close.

Fitur:

1. Tegangan pemicu (tegangan kumparan) 5V

2. Arus pemicu 70mA

3. Beban maksimum AC 10A @ 250 / 125V

4. Maksimum baban DC 10A @ 30 / 28V

5. Switching maksimum

g. Motor DC




Terdapat dua bagian utama pada sebuah Motor Listrik DC, yaitu Stator dan Rotor. Stator adalah bagian motor yang tidak berputar, bagian yang statis ini terdiri dari rangka dan kumparan medan. Sedangkan Rotor adalah bagian yang berputar, bagian Rotor ini terdiri dari kumparan Jangkar. Dua bagian utama ini dapat dibagi lagi menjadi beberapa komponen penting yaitu diantaranya adalah Yoke (kerangka magnet), Poles (kutub motor), Field winding (kumparan medan magnet), ArmatureWinding (Kumparan Jangkar), Commutator (Komutator)dan Brushes (kuas/sikat arang).

Pada prinsipnya motor listrik DC menggunakan fenomena elektromagnet untuk bergerak, ketika arus listrik diberikan ke kumparan, permukaan kumparan yang bersifat utara akan bergerak menghadap ke magnet yang berkutub selatan dan kumparan yang bersifat selatan akan bergerak menghadap ke utara magnet. Saat ini, karena kutub utara kumparan bertemu dengan kutub selatan magnet ataupun kutub selatan kumparan bertemu dengan kutub utara magnet maka akan terjadi saling tarik menarik yang menyebabkan pergerakan kumparan berhenti



Untuk menggerakannya lagi, tepat pada saat kutub kumparan berhadapan dengan kutub magnet, arah arus pada kumparan dibalik. Dengan demikian, kutub utara kumparan akan berubah menjadi kutub selatan dan kutub selatannya akan berubah menjadi kutub utara. Pada saat perubahan kutub tersebut terjadi, kutub selatan kumparan akan berhadap dengan kutub selatan magnet dan kutub utara kumparan akan berhadapan dengan kutub utara magnet. Karena kutubnya sama, maka akan terjadi tolak menolak sehingga kumparan bergerak memutar hingga utara kumparan berhadapan dengan selatan magnet dan selatan kumparan berhadapan dengan utara magnet. Pada saat ini, arus yang mengalir ke kumparan dibalik lagi dan kumparan akan berputar lagi karena adanya perubahan kutub. Siklus ini akan berulang-ulang hingga arus listrik pada kumparan diputuskan.



                    

h. Lampu

Light Emitting Diode atau sering disingkat dengan LED adalah komponen elektronika yang dapat memancarkan  cahaya monokromatik ketika diberikan tegangan maju. LED merupakan keluarga Dioda yang terbuat dari bahan semikonduktor.


i. Dioda

Dioda adalah komponen elektronika yang terdiri dari dua kutub dan berfungsi menyearahkan arus. Komponen ini terdiri dari penggabungan dua semikonduktor yang masing-masing diberi doping (penambahan material) yang berbeda, dan tambahan material konduktor untuk mengalirkan listrik.Dioda memiliki simbol sebagai berikut :
Gambar Simbol Dioda

Cara Kerja Dioda

Secara sederhana, cara kerja dioda dapat dijelaskan dalam tiga kondisi, yaitu kondisi tanpa tegangan (unbiased), diberikan tegangan positif (forward biased), dan tegangan negatif (reverse biased).

A. Kondisi tanpa tegangan

Pada kondisi tidak diberikan tegangan akan terbentuk suatu perbatasan medan listrik pada daerah P-N junction. Hal ini terjadi diawali dengan proses difusi, yaitu bergeraknya muatan elektro dari sisi n ke sisi p. Elektron-elektron tersebut akan menempati suatu tempat di sisi p yang disebut dengan holes. Pergerakan elektron-elektron tersebut akan meninggalkan ion positif di sisi n, dan holes yang terisi dengan elektron akan menimbulkan ion negatif di sisi p. Ion-ion tidak bergerak ini akan membentuk medan listrik statis yang menjadi penghalang pergerakan elektron pada dioda.

B. Kondisi tegangan positif (Forward-bias)

Pada kondisi ini, bagian anoda disambungkan dengan terminal positif sumber listrik dan bagian katoda disambungkan dengan terminal negatif. Adanya tegangan eksternal akan mengakibatkan ion-ion yang menjadi penghalang aliran listrik menjadi tertarik ke masing-masing kutub. Ion-ion negatif akan tertarik ke sisi anoda yang positif, dan ion-ion positif akan tertarik ke sisi katoda yang negatif. Hilangnya penghalang-penghalang tersebut akan memungkinkan pergerakan elektron di dalam dioda, sehingga arus listrik dapat mengalir seperti pada rangkaian tertutup.

C. Kondisi tegangan negatif (Reverse-bias)

Pada kondisi ini, bagian anoda disambungkan dengan terminal negatif sumber listrik dan bagian katoda disambungkan dengan terminal positif. Adanya tegangan eksternal akan mengakibatkan ion-ion yang menjadi penghalang aliran listrik menjadi tertarik ke masing-masing kutub. Pemberian tegangan negatif akan membuat ion-ion negatif tertarik ke sisi katoda (n-type) yang diberi tegangan positif, dan ion-ion positif tertarik ke sisi anoda (p-type) yang diberi tegangan negatif. Pergerakan ion-ion tersebut searah dengan medan listrik statis yang menghalangi pergerakan elektron, sehingga penghalang tersebut akan semakin tebal oleh ion-ion. Akibatnya, listrik tidak dapat mengalir melalui dioda dan rangkaian diibaratkan menjadi rangkaian terbuka.

D. Rumus

rumus


j. Voltmeter

Volt meter DC merupakan alat ukur yang berfungsi untuk mengetahui beda potensial tegangan DC antara 2 titik pada suatu beban listrik atau rangkaian elektronika.


k. Baterai
Baterai (Battery) adalah sebuah alat yang dapat merubah energi kimia yang disimpannya menjadi energi Listrik yang dapat digunakan oleh suatu perangkat Elektronik. Hampir semua perangkat elektronik yang portabel seperti Handphone, Laptop, Senter, ataupun Remote Control menggunakan Baterai sebagai sumber listriknya. Dengan adanya Baterai, kita tidak perlu menyambungkan kabel listrik untuk dapat mengaktifkan perangkat elektronik kita sehingga dapat dengan mudah dibawa kemana-mana. Dalam kehidupan kita sehari-hari, kita dapat menemui dua jenis Baterai yaitu Baterai yang hanya dapat dipakai sekali saja (Single Use) dan Baterai yang dapat di isi ulang (Rechargeable). Baterai simbol seperti gambar di bawah ini:

Gambar Simbol Baterai


l. LCD
 LCD (Liquid Crystal Display) adalah suatu jenis media tampil yang menggunakan kristal cair sebagai penampil utama. Adapun fitur yang disajikan dalam LCD ini adalah terdiri dari 16 karakter dan 2 baris, mempunyai 192 karakter tersimpan, terdapat karakter generator terprogram, dapat dialamati dengan mode 4 bit dan 8 bit, dilengkapi dengan back light.

        Proses inisialisasi pin arduino yang terhubung ke pin LCD RS, Enable, D4, D5, D6, dan D7, dilakukan dalam baris LiquidCrystal (2, 3, 4, 5, 6, 7), dimana LCD merupakan variabel yang dipanggil setiap kali intruksi terkait LCD akan digunakan. 

       Pada Proyek Akhir ini LCD dapat menampilkan karakternya dengan menggunakan library yang bernama LiquidCrystal. Berikut ada beberapa fungsifungsi dari library LCD: 
  1. begin() Untuk begin() digunakan dalam inisialisasi interface ke LCD dan mendefinisikan ukuran kolom dan baris LCD. Pemanggilan begin() harus dilakukan terlebih dahulu sebelum memanggil instruksi lain dalam library LCD. Untuk syntax penulisan instruksi begin() ialah sebagai berikut. lcd.begin(cols,rows) dengan lcd ialah nama variable, cols jumlah kolom LCD, dan rows jumlah baris LCD. 
  2. clear() Instruksi clear() digunakan untuk membersihkan pesan text. Sehingga tidak ada tulisan yang ditapilkan pada LCD.
  3. setCursor() 19 Instruksi ini digunakan untuk memposisikan cursor awal pesan text di LCD. Penulisan syntax setCursor() ialah sebagai berikut. lcd.setCursor(col,row) dengan lcd ialah nama variable, col kolom LCD, dan row baris LCD. 
  4. print() Sesuai dengan namanya, instruksi print() ini digunakan untuk mencetak, menampilkan pesan text di LCD. Penulisan syntax print() ialah sebagai berikut.lcd.print(data) dengan lcd ialah nama variable, data ialah pesan yang ingin ditampilkan.
m. Sensor LM35

Sensor suhu LM35 adalah komponen elektronika yang memiliki fungsi untuk mengubah besaran suhu menjadi besaran listrik dalam bentuk tegangan. Sensor Suhu LM35 yang dipakai dalam penelitian ini berupa komponen elektronika elektronika yang diproduksi oleh National Semiconductor. LM35 memiliki keakuratan tinggi dan kemudahan perancangan jika dibandingkan dengan sensor suhu yang lain, LM35 juga mempunyai keluaran impedansi yang rendah dan linieritas yang tinggi sehingga dapat dengan mudah dihubungkan dengan rangkaian kendali khusus serta tidak memerlukan penyetelan lanjutan.
    Meskipun tegangan sensor ini dapat mencapai 30 volt akan tetapi yang diberikan kesensor adalah sebesar 5 volt, sehingga dapat digunakan dengan catu daya tunggal dengan ketentuan bahwa LM35 hanya membutuhkan arus sebesar 60 µA hal ini berarti LM35 mempunyai kemampuan menghasilkan panas (self-heating) dari sensor yang dapat menyebabkan kesalahan pembacaan yang rendah yaitu kurang dari 0,5ºC pada suhu 25ºC 



Grafik LM35


5. Percobaan [Kembali]

    a. Prosedur[Kembali]

1. Siapkan komponen yang diperlukan
2. Susunlah rangkaian sesuai dngan panduan
3. Inputkan codingan pada software arduino IDE
4. Running rangkaian 


Komunikasi UART (Universal Asynchronous Receiver Transmitter) adalah metode komunikasi data secara serial antara dua perangkat. Komunikasi serial berarti data dikirim satu bit demi satu bit, satu per satu. Arduino Uno memiliki satu antarmuka UART yang terletak pada pin 0 (RX) dan pin 1 (TX). Pin RX digunakan untuk menerima data dari perangkat lain, sedangkan pin TX digunakan untuk mengirim data ke perangkat lain.Untuk menggunakan komunikasi UART pada Arduino Uno, Anda perlu menghubungkan pin RX dan TX Arduino Uno ke pin RX dan TX perangkat lain. Setelah itu, Anda perlu menginisialisasi komunikasi serial di kedua perangkat.

Komunikasi UART dapat digunakan untuk berbagai keperluan, seperti:

  • Menghubungkan Arduino Uno ke komputer untuk mengirim dan menerima data.
  • Menghubungkan Arduino Uno ke sensor atau perangkat lain.
  • Menghubungkan Arduino Uno ke jaringan komputer.

Pin RX dan TX adalah pin yang digunakan untuk komunikasi serial pada Arduino Uno. Pin RX digunakan untuk menerima data dari perangkat lain, sedangkan pin TX digunakan untuk mengirim data ke perangkat lain.

Pin RX dan TX menggunakan level tegangan logic 5V atau 3.3V, sesuai dengan hardware yang digunakan. Jika berbeda tenganganya kalian dapat menggunakan rangkaian pembagi tegangan (voltage devider) atau level converter.

Berikut adalah fungsi pin RX dan TX secara lebih detail:

  • Pin RX
    • Mengirim data ke Arduino Uno dari perangkat lain.
    • Data yang dikirim ke Arduino Uno akan diinterpretasikan sebagai data biner.
    • Data biner tersebut dapat berupa karakter, angka, atau data lainnya.
  • Pin TX
    • Mengirim data dari Arduino Uno ke perangkat lain.
    • Data yang dikirim dari Arduino Uno harus berupa data biner.
    • Data biner tersebut dapat berupa karakter, angka, atau data lainnya.
Prinsip Kerja

    Jika terdapat kendaraan yang masuk ke ruang parkir, maka sensor infrared pertama yang terdapat pada pintu masuk ruang parkir akan mendeteksi kendaraan tersebut, sehingga sensor infra red akan aktif.Dan juga sensor PIR akan aktif jika ada kendaraan yang masuk yang mengakibatkan lampu pada ruangan parkir menyala . Secara bersamaan terlihat pada LED jumlah kendaraan yang telah terparkir didalamnya
    Dan pada pintu keluar juga terdapat sensor infra red yang akan mendeteksi jika terdapat kendaraan yang keluar dari ruangan parkir, yang nantinya pada LED akan terbaca total kendaraan yang tersisa di dalam ruangan parkir



    b. Hardware[Kembali]

  1. Sensor infrared
  2. sensor PIR
  3. sensor suhu
  4. arduino uno
  5. LCD
  6. Matrix 8X8
  7. IC 74LS139
  8. L298 Motor Driver
  9. LED-Red
  10. Lamp
  11. Relay
  12. Motor




     c. Rangkaian Simulasi dan Prinsip Kerja[Kembali] 



Komunikasi UART (Universal Asynchronous Receiver Transmitter) adalah metode komunikasi data secara serial antara dua perangkat. Komunikasi serial berarti data dikirim satu bit demi satu bit, satu per satu. Arduino Uno memiliki satu antarmuka UART yang terletak pada pin 0 (RX) dan pin 1 (TX). Pin RX digunakan untuk menerima data dari perangkat lain, sedangkan pin TX digunakan untuk mengirim data ke perangkat lain.Untuk menggunakan komunikasi UART pada Arduino Uno, Anda perlu menghubungkan pin RX dan TX Arduino Uno ke pin RX dan TX perangkat lain. Setelah itu, Anda perlu menginisialisasi komunikasi serial di kedua perangkat.

Komunikasi UART dapat digunakan untuk berbagai keperluan, seperti:

  • Menghubungkan Arduino Uno ke komputer untuk mengirim dan menerima data.
  • Menghubungkan Arduino Uno ke sensor atau perangkat lain.
  • Menghubungkan Arduino Uno ke jaringan komputer.

Pin RX dan TX adalah pin yang digunakan untuk komunikasi serial pada Arduino Uno. Pin RX digunakan untuk menerima data dari perangkat lain, sedangkan pin TX digunakan untuk mengirim data ke perangkat lain.

Pin RX dan TX menggunakan level tegangan logic 5V atau 3.3V, sesuai dengan hardware yang digunakan. Jika berbeda tenganganya kalian dapat menggunakan rangkaian pembagi tegangan (voltage devider) atau level converter.

Berikut adalah fungsi pin RX dan TX secara lebih detail:

  • Pin RX
    • Mengirim data ke Arduino Uno dari perangkat lain.
    • Data yang dikirim ke Arduino Uno akan diinterpretasikan sebagai data biner.
    • Data biner tersebut dapat berupa karakter, angka, atau data lainnya.
  • Pin TX
    • Mengirim data dari Arduino Uno ke perangkat lain.
    • Data yang dikirim dari Arduino Uno harus berupa data biner.
    • Data biner tersebut dapat berupa karakter, angka, atau data lainnya.
Prinsip Kerja

    Jika terdapat kendaraan yang masuk ke ruang parkir, maka sensor infrared pertama yang terdapat pada pintu masuk ruang parkir akan mendeteksi kendaraan tersebut, sehingga sensor infra red akan aktif.Dan juga sensor PIR akan aktif jika ada kendaraan yang masuk yang mengakibatkan lampu pada ruangan parkir menyala . Secara bersamaan terlihat pada LED jumlah kendaraan yang telah terparkir didalamnya
    Dan pada pintu keluar juga terdapat sensor infra red yang akan mendeteksi jika terdapat kendaraan yang keluar dari ruangan parkir, yang nantinya pada LED akan terbaca total kendaraan yang tersisa di dalam ruangan parkir.     
    Jika jumlah kendaraan sudah mencapai batas maksimum ( 100 kendaraan ) maka pintu masuk ruang parkir tidak akan terbuka dan pada matriks akan terbaca "Parkiran Penuh"



    d. Flowchart dan Listing Program[Kembali]








Program pada arduino 
// Program to exercise the MD_MAX72XX library
//
// Uses most of the functions in the library
#include <MD_MAX72xx.h>
//#include <SPI.h>

// Turn on debug statements to the serial output
#define  DEBUG  1
#define led 5
#define lampu 9
#define B 7
#define A 6

#if  DEBUG
#define PRINT(s, x) { Serial.print(F(s)); Serial.print(x); }
#define PRINTS(x) Serial.print(F(x))
#define PRINTD(x) Serial.println(x, DEC)

#else
#define PRINT(s, x)
#define PRINTS(x)
#define PRINTD(x)

#endif

// Define the number of devices we have in the chain and the hardware interface
// NOTE: These pin numbers will probably not work with your hardware and may
// need to be adapted
#define HARDWARE_TYPE MD_MAX72XX::PAROLA_HW
#define MAX_DEVICES  11

#define CLK_PIN   13  // or SCK
#define DATA_PIN  11  // or MOSI
#define CS_PIN    10  // or SS

// SPI hardware interface
MD_MAX72XX mx = MD_MAX72XX(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
// Arbitrary pins
// MD_MAX72XX mx = MD_MAX72XX(HARDWARE_TYPE, DATA_PIN, CLK_PIN, CS_PIN, MAX_DEVICES);

// We always wait a bit between updates of the display
#define  DELAYTIME  100  // in milliseconds

void scrollText(char *p)
{
  uint8_t charWidth;
  uint8_t cBuf[8];  // this should be ok for all built-in fonts

  mx.clear();

  while (*p != '\0')
  {
    charWidth = mx.getChar(*p++, sizeof(cBuf) / sizeof(cBuf[0]), cBuf);

    for (uint8_t i=0; i<=charWidth; i++)  // allow space between characters
    {
      mx.transform(MD_MAX72XX::TSL);
      if (i < charWidth)
        mx.setColumn(0, cBuf[i]);
      delay(DELAYTIME);
    }
  }
}
void spiral()
// setPoint() used to draw a spiral across the whole display
{
  PRINTS("\nSpiral in");
  int  rmin = 0, rmax = ROW_SIZE-1;
  int  cmin = 0, cmax = (COL_SIZE*MAX_DEVICES)-1;

  mx.clear();
  while ((rmax > rmin) && (cmax > cmin))
  {
    // do row
    for (int i=cmin; i<=cmax; i++)
    {
      mx.setPoint(rmin, i, true);
      delay(DELAYTIME/MAX_DEVICES);
    }
    rmin++;

    // do column
    for (uint8_t i=rmin; i<=rmax; i++)
    {
      mx.setPoint(i, cmax, true);
      delay(DELAYTIME/MAX_DEVICES);
    }
    cmax--;

    // do row
    for (int i=cmax; i>=cmin; i--)
    {
      mx.setPoint(rmax, i, true);
      delay(DELAYTIME/MAX_DEVICES);
    }
    rmax--;

    // do column
    for (uint8_t i=rmax; i>=rmin; i--)
    {
      mx.setPoint(i, cmin, true);
      delay(DELAYTIME/MAX_DEVICES);
    }
    cmin++;
  }
}

void bounce()
// Animation of a bouncing ball
{
  const int minC = 0;
  const int maxC = mx.getColumnCount()-1;
  const int minR = 0;
  const int maxR = ROW_SIZE-1;

  int  nCounter = 0;

  int  r = 0, c = 2;
  int8_t dR = 1, dC = 1;  // delta row and column

  PRINTS("\nBouncing ball");
  mx.clear();

  while (nCounter++ < 200)
  {
    mx.setPoint(r, c, false);
    r += dR;
    c += dC;
    mx.setPoint(r, c, true);
    delay(DELAYTIME/2);

    if ((r == minR) || (r == maxR))
      dR = -dR;
    if ((c == minC) || (c == maxC))
      dC = -dC;
  }
}

void intensity()
// Demonstrates the control of display intensity (brightness) across
// the full range.
{
  uint8_t row;

  PRINTS("\nVary intensity ");

  mx.clear();

  // Grow and get brighter
  row = 0;
  for (int8_t i=0; i<=MAX_INTENSITY; i++)
  {
    mx.control(MD_MAX72XX::INTENSITY, i);
    if (i%2 == 0)
      mx.setRow(row++, 0xff);
    delay(DELAYTIME*3);
  }

  mx.control(MD_MAX72XX::INTENSITY, 8);
}

void blinking()
// Uses the test function of the MAX72xx to blink the display on and off.
{
  int  nDelay = 500;

  PRINTS("\nBlinking");
  mx.clear();

  while (nDelay > 0)
  {
    mx.control(MD_MAX72XX::TEST, MD_MAX72XX::ON);
    delay(nDelay);
    mx.control(MD_MAX72XX::TEST, MD_MAX72XX::OFF);
    delay(nDelay);

    nDelay -= DELAYTIME;
  }
}

void scanLimit(void)
// Uses scan limit function to restrict the number of rows displayed.
{
  PRINTS("\nScan Limit");
  mx.clear();

  mx.control(MD_MAX72XX::UPDATE, MD_MAX72XX::OFF);
  for (uint8_t row=0; row<ROW_SIZE; row++)
    mx.setRow(row, 0xff);
  mx.control(MD_MAX72XX::UPDATE, MD_MAX72XX::ON);

  for (int8_t s=MAX_SCANLIMIT; s>=0; s--)
  {
    mx.control(MD_MAX72XX::SCANLIMIT, s);
    delay(DELAYTIME*5);
  }
  mx.control(MD_MAX72XX::SCANLIMIT, MAX_SCANLIMIT);
}

void transformation1()
// Demonstrates the use of transform() to move bitmaps on the display
// In this case a user defined bitmap is created and animated.
{
  uint8_t arrow[COL_SIZE] =
  {
    0b00001000,
    0b00011100,
    0b00111110,
    0b01111111,
    0b00011100,
    0b00011100,
    0b00111110,
    0b00000000
  };

  MD_MAX72XX::transformType_t  t[] =
  {
    MD_MAX72XX::TSL, MD_MAX72XX::TSL, MD_MAX72XX::TSL, MD_MAX72XX::TSL,
    MD_MAX72XX::TSL, MD_MAX72XX::TSL, MD_MAX72XX::TSL, MD_MAX72XX::TSL,
    MD_MAX72XX::TSL, MD_MAX72XX::TSL, MD_MAX72XX::TSL, MD_MAX72XX::TSL,
    MD_MAX72XX::TSL, MD_MAX72XX::TSL, MD_MAX72XX::TSL, MD_MAX72XX::TSL,
    MD_MAX72XX::TFLR,
    MD_MAX72XX::TSR, MD_MAX72XX::TSR, MD_MAX72XX::TSR, MD_MAX72XX::TSR,
    MD_MAX72XX::TSR, MD_MAX72XX::TSR, MD_MAX72XX::TSR, MD_MAX72XX::TSR,
    MD_MAX72XX::TSR, MD_MAX72XX::TSR, MD_MAX72XX::TSR, MD_MAX72XX::TSR,
    MD_MAX72XX::TSR, MD_MAX72XX::TSR, MD_MAX72XX::TSR, MD_MAX72XX::TSR,
    MD_MAX72XX::TRC,
    MD_MAX72XX::TSD, MD_MAX72XX::TSD, MD_MAX72XX::TSD, MD_MAX72XX::TSD,
    MD_MAX72XX::TSD, MD_MAX72XX::TSD, MD_MAX72XX::TSD, MD_MAX72XX::TSD,
    MD_MAX72XX::TFUD,
    MD_MAX72XX::TSU, MD_MAX72XX::TSU, MD_MAX72XX::TSU, MD_MAX72XX::TSU,
    MD_MAX72XX::TSU, MD_MAX72XX::TSU, MD_MAX72XX::TSU, MD_MAX72XX::TSU,
    MD_MAX72XX::TINV,
    MD_MAX72XX::TRC, MD_MAX72XX::TRC, MD_MAX72XX::TRC, MD_MAX72XX::TRC,
    MD_MAX72XX::TINV
  };

  PRINTS("\nTransformation1");
  mx.clear();

  // use the arrow bitmap
  mx.control(MD_MAX72XX::UPDATE, MD_MAX72XX::OFF);
  for (uint8_t j=0; j<mx.getDeviceCount(); j++)
    mx.setBuffer(((j+1)*COL_SIZE)-1, COL_SIZE, arrow);
  mx.control(MD_MAX72XX::UPDATE, MD_MAX72XX::ON);
  delay(DELAYTIME);

  // run through the transformations
  mx.control(MD_MAX72XX::WRAPAROUND, MD_MAX72XX::ON);
  for (uint8_t i=0; i<(sizeof(t)/sizeof(t[0])); i++)
  {
    mx.transform(t[i]);
    delay(DELAYTIME*4);
  }
  mx.control(MD_MAX72XX::WRAPAROUND, MD_MAX72XX::OFF);
}

void transformation2()
// Demonstrates the use of transform() to move bitmaps on the display
// In this case font characters are loaded into the display for animation.
{
  MD_MAX72XX::transformType_t  t[] =
  {
    MD_MAX72XX::TINV,
    MD_MAX72XX::TRC, MD_MAX72XX::TRC, MD_MAX72XX::TRC, MD_MAX72XX::TRC,
    MD_MAX72XX::TINV,
    MD_MAX72XX::TSL, MD_MAX72XX::TSL, MD_MAX72XX::TSL, MD_MAX72XX::TSL, MD_MAX72XX::TSL,
    MD_MAX72XX::TSR, MD_MAX72XX::TSR, MD_MAX72XX::TSR, MD_MAX72XX::TSR, MD_MAX72XX::TSR,
    MD_MAX72XX::TSR, MD_MAX72XX::TSR, MD_MAX72XX::TSR, MD_MAX72XX::TSR, MD_MAX72XX::TSR, MD_MAX72XX::TSR, MD_MAX72XX::TSR, MD_MAX72XX::TSR,
    MD_MAX72XX::TSL, MD_MAX72XX::TSL, MD_MAX72XX::TSL, MD_MAX72XX::TSL, MD_MAX72XX::TSL, MD_MAX72XX::TSL, MD_MAX72XX::TSL, MD_MAX72XX::TSL,
    MD_MAX72XX::TSR, MD_MAX72XX::TSR, MD_MAX72XX::TSR,
    MD_MAX72XX::TSD, MD_MAX72XX::TSU, MD_MAX72XX::TSD, MD_MAX72XX::TSU,
    MD_MAX72XX::TFLR, MD_MAX72XX::TFLR, MD_MAX72XX::TFUD, MD_MAX72XX::TFUD
  };

  PRINTS("\nTransformation2");
  mx.clear();
  mx.control(MD_MAX72XX::WRAPAROUND, MD_MAX72XX::OFF);

  // draw something that will show changes
  for (uint8_t j=0; j<mx.getDeviceCount(); j++)
  {
    mx.setChar(((j+1)*COL_SIZE)-1, '0'+j);
  }
  delay(DELAYTIME*5);

  // run thru transformations
  for (uint8_t i=0; i<(sizeof(t)/sizeof(t[0])); i++)
  {
    mx.transform(t[i]);
    delay(DELAYTIME*3);
  }
}

void wrapText()
// Display text and animate scrolling using auto wraparound of the buffer
{
  PRINTS("\nwrapText");
  mx.clear();
  mx.wraparound(MD_MAX72XX::ON);

  // draw something that will show changes
  for (uint16_t j=0; j<mx.getDeviceCount(); j++)
  {
    mx.setChar(((j+1)*COL_SIZE)-1, (j&1 ? 'M' : 'W'));
  }
  delay(DELAYTIME*5);

  // run thru transformations
  for (uint16_t i=0; i<3*COL_SIZE*MAX_DEVICES; i++)
  {
    mx.transform(MD_MAX72XX::TSL);
    delay(DELAYTIME/2);
  }
  for (uint16_t i=0; i<3*COL_SIZE*MAX_DEVICES; i++)
  {
    mx.transform(MD_MAX72XX::TSR);
    delay(DELAYTIME/2);
  }
  for (uint8_t i=0; i<ROW_SIZE; i++)
  {
    mx.transform(MD_MAX72XX::TSU);
    delay(DELAYTIME*2);
  }
  for (uint8_t i=0; i<ROW_SIZE; i++)
  {
    mx.transform(MD_MAX72XX::TSD);
    delay(DELAYTIME*2);
  }

  mx.wraparound(MD_MAX72XX::OFF);
}

void showCharset(void)
// Run through display of the the entire font characters set
{
  mx.clear();
  mx.update(MD_MAX72XX::OFF);

  for (uint16_t i=0; i<256; i++)
  {
    mx.clear(0);
    mx.setChar(COL_SIZE-1, i);

    if (MAX_DEVICES >= 3)
    {
      char hex[3];

      sprintf(hex, "%02X", i);

      mx.clear(1);
      mx.setChar((2*COL_SIZE)-1,hex[1]);
      mx.clear(2);
      mx.setChar((3*COL_SIZE)-1,hex[0]);
    }

    mx.update();
    delay(DELAYTIME*2);
  }
  mx.update(MD_MAX72XX::ON);
}

char message;
bool showMessage = true;

void setup()
{
    mx.begin();
#if  DEBUG
  Serial.begin(57600);
#endif
  Serial.begin(9600);
  pinMode(led, OUTPUT);
  pinMode(lampu, OUTPUT);
  pinMode(A, OUTPUT);
  pinMode(B, OUTPUT);
}
void loop()
{
  if (Serial.available())
  {
  message = Serial.read();
  if (message == 'P'){
    digitalWrite(lampu, 1);
  }
  else if (message == 'p'){
    digitalWrite(lampu, 0);
  }
 
  if (message == 'F' && showMessage) {
      digitalWrite(led, 1);
      scrollText("Parkiran Penuh");
      showMessage = false; // Set variabel penanda menjadi false setelah pesan ditampilkan
    } else if (message == 'f') {
      digitalWrite(led, 0);
      mx.clear();
      showMessage = true; // Set variabel penanda menjadi true ketika menerima pesan 'f' untuk memungkinkan tampilan pesan 'F' lagi
    }

  if (message == 'S'){
    digitalWrite(A, 1);
    digitalWrite(B, 0);
  }
  else if (message == 's'){
    digitalWrite(A, 0);
    digitalWrite(B, 0);
  }
  }
}
    e. Video Simulasi[Kembali]

  • video teori lcd
  • video teori arduino
  • video teori Infrared



 

    f. Download File[Kembali]

Download rangkaian klik disini
Download HMTL klik disini
Download listing program klik disini
Download video simulasi rangkaian klik disini
  • Download Library
Download library Arduino klik disini
Download library Infrared sensor klik disini
Download library LCD klik disini
Download library PIR sensor klik disini
  • Download datasheet 
Download datasheet Arduino UNO klik disini
Download datasheet Infrared Sensor klik disini
Download datasheet LCD klik disini





Tidak ada komentar:

Posting Komentar

Entri yang Diunggulkan

                                     BAHAN PRESENTASI UNTUK MATAKULIAH                                                 ELEKTRONIKA 2022 Nama...

Postingan Populer