arduinopebi
arduinopebi
Pebriani Artha
24 posts
Berisi project-project Arduino yang telah dikerjakan oleh Pebi dan tim. Jangan lupa KEEP READING di tiap post untuk detail project yang dikerjakan. Selamat membaca!
Don't wanna be here? Send us removal request.
arduinopebi · 8 years ago
Video
youtube
FINAL PROJECT: SMART PARKING DEMO (PART1)
0 notes
arduinopebi · 8 years ago
Video
youtube
FINAL PROJECT: SMART PARKING DEMO (PART 2)
0 notes
arduinopebi · 8 years ago
Text
FINAL REPORT : SMART PARKING
Dan berikut kelompok kami persembahkan final report dari tugas besar IMKA SMART PARKING.
Keep reading guys!
1. Identifikasi Masalah
Berikut merupakan masalah yang melatarbelakangi kami untuk membuat Project SmartParking.
1.   Pengendara kesulitan dalam menemukan tempat parkir yang kosong
2.   Pengendara tidak mengetahui apakah masih tersedia parkir atau tidak
3.   Pihak pengelola yang kurang dapat memantau tempat parkir yang mana yang kosong dan berapa jumlahnya
4.   Pihak pengelola yang tidak mengetahui informasi jumlah pengunjung atau traffic pengendara yang menggunakan tempat parkir
2. Alternatif Pemecahan Masalah
2.1  Alternatif Solusi
Dari beberapa permasalahan yang menjadi latar belakang project ini terdapat alternative pemecahannya yang dapat dijelaskan sebagai berikut
Tabel 1. Tabel Alternatif Pemecahan Masalah
Tumblr media
Dari tabel tersebut, dihasilkan sebuah konsep sistem yang dapan digambarkan sebagai berikut.
Tumblr media
Gambar 1. Konsep Smart Parking
2.2  Alternatif Solusi Implementasi
Berikut alternatif pemilihan teknologi untuk implementasi Smart Parking.
Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media
Tabel 2. Tabel Alternatif Solusi Implementasi
3. Spesifikasi Desain
Berikut merupakan komponen yang digunakan pada proyek Smart Parking.
Tumblr media
Gambar 2. Komponen Smart Parking
 Berikut merupakan input-output pada proyek Smart Parking.
Tumblr media
Protocol yang digunakan adalah TCP/IP karena proses upload data menggunakan jaringan internet pada laptop.
4. Desain Perangkat Keras
Berikut skema arduino, sensor, dan display dari sistem Smart Parking 
Tumblr media
Gambar 4. Skema Perangkat Keras Sistem 
Berikut adalah blok diagram dari sistem Smart Parking.
Tumblr media
Gambar 5. Blok DIagram Sistem
5. Desain Perangkat Lunak
Berikut adalah state transition diagram dari sistem Smart Parking.
Tumblr media
Gambar 6. State Transistion Diagram
6. Desain User Interaction
6.1  Tampilan Mobile Application
Berikut adalah tampilan dari mobile application Smart Parking
Tumblr media
Gambar 7. Tampilan Mobile Application
 6.1  Tampilan Web Application
Berikut adalah tampilan dari Web Application Smart Parking
Tumblr media
7. Implementasi Perangkat Keras
Berikut gambar dari implementasi perangkat keras sistem Smart Parking.
Tumblr media
Gambar 8. Implementasi Sistem Smart Parking
8. Implementasi Perangkat Lunak
8.1  Arduino
//Setting Library
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
 //Setting Servo
#include <Servo.h>
Servo myservo;
#define ServoM    12                                //Pin servo
#define BarLow    177                               //State servo saat palang pintu menutup
#define BarUp     95                                //State servo saat palang pintu membuka
 //Setting BLYNK
#define BLYNK_PRINT Serial1
#include <BlynkSimpleStream.h>
char auth[] = "8322a75d38ff44ce913d108b69efff42"; //Token untuk koneksi Blynk
 //Setting Blynk LED
WidgetLED ledb1(V5);                               //Virtual LED to show status on App
WidgetLED ledb2(V6);
WidgetLED ledb3(V7);
 //Setting OLED
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);
 #define NUMFLAKES 10
#define XPOS 0
#define YPOS 1
#define DELTAY 2
 #define LOGO16_GLCD_HEIGHT 16
#define LOGO16_GLCD_WIDTH  16
static const unsigned char PROGMEM logo16_glcd_bmp[] =
{ B00000000, B11000000,
 B00000001, B11000000,
 B00000001, B11000000,
 B00000011, B11100000,
 B11110011, B11100000,
 B11111110, B11111000,
 B01111110, B11111111,
 B00110011, B10011111,
 B00011111, B11111100,
 B00001101, B01110000,
 B00011011, B10100000,
 B00111111, B11100000,
 B00111111, B11110000,
 B01111100, B11110000,
 B01110000, B01110000,
 B00000000, B00110000 };
 #if (SSD1306_LCDHEIGHT != 32)
#error("Height incorrect, please fix Adafruit_SSD1306.h!");
#endif
 //Setting Button
int buttonIn = 10;          //Pin button keluar tempat parkir
int buttonOut = 11;         //Pin button masuk tempat parkir
int Available = 3;          //Initial state jumlah lahan parkir yang tersedia
int buttonStateIn = 0;      //Initial state button masuk tempat parkir
int buttonStateOut = 0;     //Initial state button keluar tempat parkir
  //Setting LED
int led1 = 7;               //Digital Pin LED 1
int led2 = 8;               //Digital Pin LED 2
int led3 = 9;               //Digital Pin LED 3
int state1 = LOW;           //Initial state LED 1
int state2 = LOW;           //Initial state LED 2
int state3 = LOW;           //Initial state LED 3
 //Setting status untuk data yang dikirim ke webhook
int prevstatus1 = 0;        //Status lahan parkir 1 (P1) previous
int prevstatus2 = 0;        //Status lahan parkir 2 (P2) previous
int prevstatus3 = 0;        //Status lahan parkir 3 (P3) previous
int status1 = 0;            //Status lahan parkir 1 (P1) current
int status2 = 0;            //Status lahan parkir 2 (P2) current
int status3 = 0;            //Status lahan parkir 3 (P3) current
 //Setting IR Sensor
int ir1 = 9;                //Analog Pin LED 1
int ir2 = 7;                //Analog Pin LED 2
int ir3 = 8;                //Analog Pin LED 3
 void setup()   {                
 //Debug console
 Serial.begin(9600);
 Blynk.begin(Serial, auth);
   //OLED
 display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  //Initialize with the I2C addr 0x3C (for the 128x32)
   //LED
 pinMode(led1,OUTPUT);
 pinMode(led2,OUTPUT);
 pinMode(led3,OUTPUT);
   //Button
 pinMode(buttonIn, INPUT);
 pinMode(buttonOut, INPUT);
 digitalWrite(buttonIn, HIGH);               //Connect button in
 digitalWrite(buttonOut, HIGH);              //Connect button out
//Servo
 myservo.attach(ServoM);                     //Attaches the servo
 myservo.write(BarLow);                      //Barrier in the low position
}
 //Scrolling text Smart Parking Area
void testscrolltext(void) {
 display.setTextSize(1);
 display.setTextColor(WHITE);
 display.setCursor(10,0);
 display.clearDisplay();
display.println("WelcomeSmartParking");
 display.println("Sisa Parkir");
 display.println(Available);
 display.display();
 delay(1);
}
 //Membuka gate
void bukaservo(void){
 myservo.write(BarUp);               //Palang pintu terbuka
 delay(3000);
 myservo.write(BarLow);              //Palang pintu tertutup
}
 //Sensor button
void button(int buttonState, int letak){
 if (buttonState == 0)
 {
   if (letak == 1) {                 //Kondisi mobil keluar
     if(Available!=0)
     {
       Available--;
       bukaservo();                  //Buka Gate
       delay(300);
       display.clearDisplay();       //Display OLED
       testscrolltext();
     }  
 } else {                            //Kondisi mobil masuk
   if(Available!=3)
   {
     Available++;
     bukaservo();                    //Buka gate
     delay(300);
     display.clearDisplay();         //Display OLED
     testscrolltext();
   }
 }
}
}
 void loop () {
   Blynk.run();
 testscrolltext();                          //Draw scrolling text
 //Button
 //Membaca input button
 buttonStateIn = digitalRead(buttonIn);    //Membaca state button In
 buttonStateOut = digitalRead(buttonOut);  //Membaca state button Out
   //Button Masuk
 button(buttonStateIn, 0);
   //Buton Keluar
 button(buttonStateOut, 1);
   //Baca IR
 bacaIR();
   //Display value available di Blynk
 Blynk.virtualWrite(V4,Available);
  }
 void bacaIR () {
 int sensorval1 = analogRead(ir1);   //Pin IR1
 int sensorval2 = analogRead(ir2);   //Pin IR2
 int sensorval3 = analogRead(ir3);   //Pin IR3
   //IR1
 if(sensorval1<150) {
   state1=HIGH;
   status1=1;
   ledb1.setValue(255);              //Set Pin V1 on pada Blynk
 } else {
   state1=LOW;
   status1=0;
   ledb1.setValue(0);                //Set Pin V1 off pada Blynk
 }
 digitalWrite(led1, state1);
   //IR2
 if(sensorval2<100) {
   state2=HIGH;
   status2=1;
   ledb2.setValue(255);              //Set Pin V2 on pada Blynk
 } else {
   state2=LOW;
   status2=0;
   ledb2.setValue(0);                //Set Pin V2 off pada Blynk
 }
 digitalWrite(led2, state2);
   //IR3
 if(sensorval3<100) {
   state3=HIGH;
   status3=1;
   ledb3.setValue(255);              //Set Pin V3 on pada Blynk
 } else {
   state3=LOW;
   status3=0;
   ledb3.setValue(0);                //Set Pin V3 off pada Blynk
 }
 digitalWrite(led3, state3);
//Kirim lewat webhook
if ((prevstatus1 != status1) or (prevstatus2 != status2) or (prevstatus3 != status3)) {
 Blynk.virtualWrite(V0, status1, status2, status3);
 prevstatus1 = status1;
 prevstatus2 = status2;
 prevstatus3 = status3;
}
delay(1000);
}
8.1  Kode API
<?php
     date_default_timezone_set('Asia/Jakarta');
       $servername = "localhost";
     $username = "id1585967_smartparking";
     $password = "smartparking";
     $dbname = "id1585967_smartparking";
       //Create connection
     $conn = new mysqli($servername, $username, $password, $dbname);
     $time = "SET `time_zone` = '".date('P')."'";
       if ($conn->query($time) == TRUE) {
           echo "Time set\n";
     } else {
           echo "Error: ".$time."<br>".$conn->error;
     }
       //Check connection
     if ($conn->connect_error){
           die("Connection failed: " . $conn-> connect_error);
     }
     echo "Connected successfully\n";
       if (getenv('REQUEST_METHOD') == 'POST') {
           $parkir = file_get_contents ("php://input");
           $dataParkir = json_decode($parkir, true); //decode JSON to associative array
             print_r($dataParkir);
             $P1 = $dataParkir["P1"];
           $P2 = $dataParkir["P2"];
           $P3 = $dataParkir["P3"];
           $Jumlah =  $P1+$P2+$P3;
             //Query SQL
           $lahan = "INSERT INTO LahanParkir (Waktu, Lahan1, Lahan2, Lahan3, Jumlah) VALUES (NOW()+INTERVAL 7 HOUR, $P1, $P2, $P3, $Jumlah)";
           if ($conn->query($lahan) == TRUE) {
                 echo "New record created successfully";
           } else {
                 echo "Error: ".$lahan."<br>".$conn->error;
           }
     }
       $conn->close();
?>
8.1  Web APP
<html>
     <body style = "background-color : #F0FFFF;">
     <head>
           <h1 align = "center">
           <img src="smartpark.png"></h1>
           <style>
                 table {
                       border-collapse: collapse;
                       width: 60%;
                 }
                   th, td {
                       text-align: center;
                       padding: 3px;
                       font-size: 20px;
                 }
                   tr:nth-child(even){background-color: #f2f2f2}
                   th {
                       background-color: #20B2AA;
                       color: white;
                 }
                 .button {
            display: inline-block;
            padding: 8px 18px;
            font-size: 13px;
            cursor: pointer;
            text-align: center;  
            text-decoration: none;
            outline: none;
            color: #fff;
            background-color: #20B2AA;
            border: none;
            border-radius: 8px;
            box-shadow: 0 6px #999;
           }
             .button:hover {background-color: #3e8e41}
             .button:active {
            background-color: #3e8e41;
            box-shadow: 0 2px #666;
            transform: translateY(4px);
           }
           </style>
     </head>
        <h2 style = "background-color : #2F4F4F" align="center">
     <font face="arial" size ="5" color ="white">DATA LAHAN PARKIR</font></h2>
       <span style="float:right;">
                 <div align="right">
                       <font size="5"><b>Tempat Parkir Kosong<br><br></b></font>
     <?php
           $servername = "localhost";
           $username = "id1585967_smartparking";
           $password = "smartparking";
           $dbname = "id1585967_smartparking";
           //Create connection
           $conn = new mysqli($servername, $username, $password, $dbname);
           $kosong =mysqli_query($conn, "SELECT Jumlah FROM LahanParkir WHERE ID = (SELECT MAX(ID) FROM LahanParkir)");
           $row1 = mysqli_fetch_assoc($kosong);
           $isinya = 3 - $row1['Jumlah'];
           echo "<div style ='font-size:50px;color:#000000'> $isinya </div>";
     ?>
                 </div>                  
     </span>
     <span style="float:left;">
           <div align="left">
                 <font size="5"><b>Total Kendaraan<br><br></b></font>
     <?php
           $kendaraan =mysqli_query($conn, "SELECT SUM(Jumlah) AS Jumlah FROM LahanParkir");
           $row = mysqli_fetch_assoc($kendaraan);
           $row1= $row['Jumlah'];
           echo "<div style ='font-size:50px;color:#000000'> $row1 </div>";
     ?>
           </div>
     </span>
     <table align="center">
           <thead>
                 <th>Waktu</th>
                 <th>Parkir 1</th>
                 <th>Parkir 2</th>
                 <th>Parkir 3</th>
           </thead>
           <?php
                 $result =mysqli_query ($conn, "SELECT * FROM LahanParkir");
                 foreach ($result as $row){  
                 echo "<tr>";
                 echo "<td>".$row['Waktu']."</td>";
                 echo "<td>".$row['Lahan1']."</td>";
                 echo "<td>".$row['Lahan2']."</td>";
                 echo "<td>".$row['Lahan3']."</td>";
                 echo "</tr>";
                 }
                 echo "</table>";
                 $conn->close();
           ?>
           </table>
           <br>
     </body>
</html>
Berikut merupakan pengaturan pada Blynk untuk LED yang menunjukkan tempat parkir terisi atau kosong. Ada 2 lainnya yang sejenis, yaitu P2 dan P3(berbeda pin).
Tumblr media
Gambar 9. Konfigurasi P1 Pada Blynk App
Berikut merupakan pengaturan pada Blynk untuk menampilkan sisa lahan parkir.
Tumblr media
Gambar 10. Konfigurasi Sisa Lahan pada Blynk App
Berikut pmerupakan pengaturan webhook pada Blynk. URL merupakan link API untuk melakukan POST ke database.
Gambar 11. Konfigurasi API pada Blynk App
9. Pengujian
Pengujian terhadap sistem SMART PARKING dilakukan dengan metode pengujian Black Box. Hasil pengujian yang diperoleh adalah sebagai berikut:
Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media Tumblr media
10. Kesimpulan dan Saran
Project Smart Parking dapat menjawab permasalahan di awal karena project ini dapat memberikan informasi ketersediaan lahan parkir serta dapat pula memberikan informasi lahan parkir yang kosong melalui Aplikasi dan Website. Project ini juga dapat memberikan informasi kepada pengelola mengenai traffic area parkir sehingga dapat digunakan lebih lanjut untuk keperluan pengelola. Ke depannya, kami berharap agar project ini dapat dikembangkan lagi sehingga semakin dapat memberikan kepuasan pada pengguna area parkir.
0 notes
arduinopebi · 8 years ago
Photo
Tumblr media
Intermezzo Final Project
Inilah si kecil ESP 8266 yang membuat Final Project ini menjadi panjaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaang
Awalnya sudah berhasil menghubungkan di Arduino Uno, namun kami beralih ke Arduino Mega dan belum berhasil. Sempat berhasil beberapa kali karena kami melakukan reset terhadap ESP 8266, tapi setelah itu untuk memunculkan OK di serial monitor saja belum bisa :(
1 note · View note
arduinopebi · 8 years ago
Text
Final Project Progress 4
Mencoba database dan mengakses Blynk Server
Karena kami terlalu serius mengerjakan, kami sampai lupa mendokumentasikan tahap ini :(
Inilah tahap terpanjang dalam project ini. Kami sangat terkendala dengan koneksi menggunakan ESP 8266 pada Arduino Mega.
Saat di coba di Uno, ESP 8266 ini sudah berhasil dan dapat digunakan sebagai koneksi untuk menghubungkan perangkat keras ke Blynk App, namun saat dicoba ke Arduino Mega tidak dapat bekerja sama sekali :(
Kami menghabiskan waktu cukup lama untuk mengotak atik ESP 8266 ini. Sebenarnya ada banyak pilihan untuk koneksi, bisa menggunakan ethernet shield atau nodeMCU juga, tapi kami tidak mendapatkan pinjaman :(
Hal yang membuat tahap ini sangat panjang adalah saat kita menentukan server dan database apa yang akan digunakan nantinya. Baerbagai alternatif dicoba, seperti thingspeak, blynk server, dll.
Saat itu kami berharap bisa mengaksses blynk server agar tidak 2 kali mengirimkan data dari device. Kami mencoba mengakses blynk server pada OS windows namun tak kunjung berhasil dan tidka terdapat tutorial dimaanapun, selanjutnya kami mencoba di Mac Os karena adda yang mengatakan lebih mudah.
Semalaman kami mengotak atik Blynk Server ini sampai suatu malam kami berhasil terhubung ke Blynk Server. Kami pun langsung mencobanya paada perangkat kami namun tetap tidak terhubung dengan smartphone yang terhubung ke blynk tersebut.
agar tugas ini bisa berprogres kami memutuskan menggunakan koneksi USB serial dengan meanfaatkan jaringan internet pada laptop. Dan tantangan kami selanjutnya adalah database.
Setelah berdiskusi dengan teman- teman yang lain, kami pun sepaakat untuk mencoba alternatif lain yaitu membuat API pada Blynk untuk terhubung ke database yang disediakan oleh 000webhost.
Cukup banyak konfigurasi yang harus dilakukan, seperti membuat APi, API handler, dan perubahan pada kode arduino.
Kami belum berhasil sampai dengan H-1 presentasi tugas besar dan sedih sekali rasanya kalau bagian sampai gagal karena usaha yang dilakukan cukup besar :(
Akhirnya benar benar H-1 pengumpulan, kami dibantu oleh Feisal, teman sekelas kami yang menggunakan cara yang sama, untuk menelusuri kesalahan. Dan ternyata keslahan kami hanya pada variabel yang digunakan tidak sesuai dan urutan virtual pinnya salah.
Big thanks to Feisal yang sudah membantu dan kelompok kami pun semangat lagi menyelesaikan tugas ini dan benar saja beberapa jam sebelum presentasi barulah tugas besar ini selesai dan siap dipresentasikan
1 note · View note
arduinopebi · 8 years ago
Text
Final Project Progress 3
Combining all and Arduino Mega!
Tibalah saatnya kelompok kami menggabungkan semua fungsi-fungsi perangkat keras yang sudah berhasil jika dijalankan satu persatu.
Secara garis besar, fungsi fungsi yang kami gabungkan adalah button dan counter kendaraan dihubungkan dengan servo, serta sensor dengan LED, dan dihubgkan ke blynk app.
Semua pin sudah diset berbeda untuk tiap fungsi, kemudian komponen juga sudah dipastikan dapat berfungsi dengan bik, program juga sudah bisa di compile, dan begitu diupload ke Arduino ada pesan error memory hampir penuh, tapi tetap bisa di upload.
Awalnya kami cuek saja dengan pesan tersebut yang penting program sudah terupload ke board.
tapi ternyata semua fungsinya tidak ada yang jalan. Kami seharian berusaha memperbaikinya. Mungkin program kami kurang efektif atau ada program yang salah, atau ada pin yang salah dan banyak atau atau lainnya.
Sudah berkutat berjam-jam dan kemudian ada yang menyarankan ke kami untuk menggunakan Arduino Mega karena jumlah memorinya lebih besar dan pinnya juga lebih banyak.
Kami pun langsung mencari pinjaman Arduino Mega ke anak elektro dan alhamdulillah dapat.
Besoknya kami memindahkan semua komponen dan melakukan konfigurasi ulang ke Arduino Mega, tidak banyak yang barubah dan saat dijalankan di arduino mega, semua fungsi dapat berjalan dengan semestinya.
Alhamdulillah, untuk perangkat keras sudah selesai.
Tantangan berikutnya adalah koneksi dan database!
1 note · View note
arduinopebi · 8 years ago
Text
Final Project Progress 2
Tumblr media
OLED; Conter Up and Down!
Untuk video Progress 2 ini bisa di cek DISINI
Sistem yang kami rancang ini menggunakan komponen elektronik yang yang cukup banyak. Kami menghitung-hitung jumlah pin yang digunakan dan ternyata memang sangat banyak...
Pada awalnya kami ingin menggunakan 7 segment untuk menampilan counter dari lahan parkir yang kosong dan menggunakan LCD untuk menampilkan tulisan Welcome dsb.
Setelah berdiskusi dengan asisten, kami berencana mengganti komponen yang memakan paling banyak pin dengan komponen lain yang jumlah pinnya lebih sedikit.
Kami pun mengganti 7 segment dan LCD dengan sebuah komponen bernama OLED! Dari yang jumlah pinnya belasan, dengan oled ini hanya menggunakan 4 pin. Skema yang digunakan juga tidak terlalu sulit.
Kami baru tau tentang adanya komponen OLED ini yang ternyata bisa memuat teks lebih banyak, lebih berwarna bahkan bisa bergerak gerak teksnya wahaha.
Begitu mendapatkan pinjaman OLED dari asisten, kami langsung mencobanya dan cukup menyenangkan menngotak-atik tulisan didalamnya.
Walaupun memang OLED ini seringkali tidak stabil dan suka mati sendiri :(
0 notes
arduinopebi · 8 years ago
Text
Final Project Progress 1
Infrared + Blynk!
Tumblr media
Untuk mengawali pengerjaan proyek yang cukup besar ini, kami akan memulainya dari menentukan sensor apa yang akan digunakan untuk melakukan pembacaan mobil di tempat parkir.
Alternatif yang ada adalah sensor cahaya, sensor tekan, ultrasonik, dan infrared. Dengan pertimbangan dan saran dari teman yang lain juga, kami pun memutuskan untuk menggunakan sensor infrared untuk pembacaan yang lebih tepat.
Kami mencoba menggunakan 1 sensor modul infrared, Kami mencoba 1 dulu, kalau gagal jadi gak terlalu rugi hehe. Memang penggunaan modul infrared ini lebih mudah daibandingkan menggunakan infrared yang bukan modul (memang seharusnya seperti itu). Kami pun melakukan konfigurasi pada jarak berapa infrared membaca dan langsung berhasil Alhamdulillah.
Selanjutnya, kami mencoba menghubungkan sensor dengan suatu indikator. Disini kami menggunakan LED sebagai indikator yang menunjukkan sensor berfungsi sekaligus menunjukkan bahwa tempat parkir tersebut telah terisi (LED menyala).
Mulanya saya cukup bingung mengenai pin-pin di arduino, tapi berkat tugas ini dan juga anggota kelompok yang sabar saya pun mengerti hehe.
Menuju ke tantangan selanjutnya yaituuuuuu, kami akan mencoba menghubungkan sensor ke perangkat lunak. Disini kami sepakat menggunakan Blynk App, dan mencoba salah satu tutorial penggunaannya di youtube. Pertama kalinya untuk saya mencoba menghubungkan perangkat keras dengan perangkat lunak.
Pada walnya gagal karena kami tidak paham mengenai virtual print yang ada di blynk, ternyata setelah diotak atik lama akhirnya bisa dan kami sangat senang..
Tantangan selanjutnya adalah mencoba hal diatas jika diterapkan di 3 infrared. Menarik
0 notes
arduinopebi · 8 years ago
Text
Final Project: ESP 8266
Salah satu aspek yang dipertimbangkan dalam tugas besar ini adalah project ini harus IoT lengkap sampai interfacingnya. Syarat dari IoT sudah jelas adalah terhubung ke internet dan device dapat dikendalikan melalui internet.
Kami harus menggunakan device tambahan untuk menghubungkan arduino ke internet, dan disini kami sepakat menggunakan ESP 8266.
ESP8266 merupakan modul wifi yang berfungsi sebagai perangkat tambahan mikrokontroler seperti Arduino agar dapat terhubung langsung dengan wifi dan membuat koneksi TCP/IP.
Modul ini membutuhkan daya sekitar 3.3v dengan memiliki tiga mode wifi yaitu Station, Access Point dan Both (Keduanya). Modul ini juga dilengkapi dengan prosesor, memori dan GPIO dimana jumlah pin bergantung dengan jenis ESP8266 yang kita gunakan. Sehingga modul ini bisa berdiri sendiri tanpa menggunakan mikrokontroler apapun karena sudah memiliki perlengkapan layaknya mikrokontroler.
Sumber http://www.warriornux.com/pengertian-modul-wifi-esp8266/
Kami mengikuti tutorial di kelas danmencoba skema yang diberikan. Cukup menantang menurut kami karena kami mencoba berkali-kali belum berhasil menghubungkan ESP 8266 ke board Arduino kami.
Ini mungkin akan menjadi project yang panjang....
0 notes
arduinopebi · 8 years ago
Text
Final Project?!
akhirnya masuk juga ke project terakhir arduino untuk matkul IMKA di semester 6 ini.
Sebenarnya sempat bingung juga mau bikin apa, yang jelas project ini harus berlatar belakang masalah yang terjadi di masyarakat..
Setelah kami berdiskusi dan berpikir project apa yang sekiranya feasible untuk dikerjakan, tim kami pun memilih....... SMART PARKING!
Melihat masalah dari masyarakat yang menghabiskan waktunya berlama lama berputar di area parkir tapi berujung dengan keluar lagi dan gajaddi parkir karena parkirnya penuh. Seandainya sejak awal pengendara tersebut sudah mengetahui jika parkir di tempat tersebut penuh, tentu dia tidak akan menghabiskan waktunya berputar ditempat parkir itu dan akan mencari area parkir yang lain.
Masalah lainnya adalah ketika pengendari kesulitan mencari tempat parkir yang kosong. Biasanya petugas hanya dapat memberitahu apakah amasih bisa parkir di area parkir tersebut atau tidak, namun pengendari tidak dapat menemukan lokasi pasti dari tempat parkir yang kosong.
Masalah lainnya lagi adalah kejahatan yang terjadi di area parkir biasanya baru ketahuan saat pengemudi kembali ke mobil dan pelakunya tidak bisa diketahui sama sekali.
Berangkat dari ketiga hal tersebut, kami berencana membuat sebuah sistem SMART PARKING yang dapat menampilkan jumlah mobil dalam gedung, lokasi tempat parkir yang kosong dan merekam sisi sisi dan sudut area parkir kemudian ditayangkan pada komputer petugas.
Harapannya sistem ini mempu memenuhi kebutuhan masyarakat dan pengelola parkir serta menyelesaikan masalah yang ada :)
0 notes
arduinopebi · 8 years ago
Text
Intermezzo Project 4
Perjalanan tak selalu mulus. Itu juga yang terjadi dalam pembuatan project 4 ini. Tim kami beberapa kali beberapa kali harus melalui hambatan sebelum akhirnya berhasil membuat kalkulator dengan LCD display. Yeaay!
Dan hambatan-hambatan yang kami lalui adalaaaah
1. Pesan online LCD. Jadi harus menunggu beberapa hari dulu, tidak bisa mengerjakan langsung saat tugas diberikan
2. Sedang ada kesibukan diluar akademik. Berhubung tim kami harus mengurus sebuah acara besar, jadi waktu kami cukup terkuran kesana dan akhirnya tugas ini tertunda :(
3. Baru ingat belum punya keypad. DIsaat sudan ingin mengerjakan, tim kami ternyata belum punya keypad, jadilah kami menunda lagi karenaa harus membeli keypad terlebih dahulu
5. LCD yang belum disolder. Setelah kami mendapatkan lcd yang kami pesan, ternyata tidak bisa langsung digunakan, tetapi masih harus disolder. Jadilah kami menunda lagi untuk menyolder lcd agar dapat digunakan.
dan akhirnyaaa kami pun menemukan waktu yang pas untuk mengerjakan tugas ini dan benr sekali tidak langsung berhasil.
Kami mencoba source code dari internet dan melakukan cukup banyak perubahan agar sesuai dengan kalkulator yang diinginkan. Setelah berkutat dengan rangkaian ini kurang lebih selama 2 jam, akhirnya berhasil. aklkulatornya selesai.
Tumblr media
Sebenarnya di project ini kami sangat berterimakasih pada Devita yang ternyata memiliki potensiometer yang kami pikir awalnya kami kurang bahan. Rasanya malas juga harus keluar kosan lagi hanya untuk membeli potensiiometer
0 notes
arduinopebi · 8 years ago
Text
Project 4 : Calculator with LCD Display
Tumblr media
Gak kerasa sudah masuk ke project 4...
Kami mempunyai waktu 2 minggu untuk mengerjakan project ini karena katanya cukup rumit dibandingkan project project sebelumnya. Alat dan bahannya juga banyak yang belum kami punya.
Di project 4 ini kami membuat ssebuah kalkulator dengan keypad dan pengerjaan serta hasilnya ditampilkan melalui 4x4 LCD Display. Di postingan ini saya akan menjelaskan sedikit bagaimana cara membuatnya.
Sebelum memulai, pertama-tama kami harus menyiapkan alat dan bahan sebagai berikut:
Tumblr media
alat dan bahan ini kemudian dirangkai dengan skema:
Tumblr media
sumber: http://www.microcontroller-project.com/calculator-using-arduino.html
Sementara sourcode yang digunakan juga berasal dari sumber yang sama dengan skema namun harus diubah cukup banyak dibeberapa bagian.Osurce code nya adalah sebagai berikut:
#include <LiquidCrystal.h> int getKey(); char getOper(); void result(float result); LiquidCrystal lcd(13, 12, 11, 10, 9, 8); int row[4]={7, 6, 5, 4}; int col[4]={3, 2, 1, 0}; int key1; char oper; int key2;
void setup() {  lcd.begin(16, 2);  for(int i=0;i<=3;i++)  {    pinMode(row[i], OUTPUT);    pinMode(col[i], INPUT);  }  for(int j=0;j<=3;j++)    digitalWrite(col[j], HIGH);  for(int k=0;k<=3;k++)    digitalWrite(row[k], HIGH);  lcd.print("CALCULATOR!!!!");  delay(500);  lcd.clear();  lcd.setCursor(0, 0); }
void loop() {  lcd.clear();  lcd.setCursor(0, 0 );  lcd.print("ENTER 1 NO =");  key1=getKey();  delay(500);  lcd.clear();  lcd.setCursor(0, 0);  lcd.print("ENTER 2 NO =");  key2=getKey();  delay(500);  lcd.clear();  lcd.setCursor(0, 0);  lcd.print("OPERATOR =");  oper=getOper();  delay(500);  lcd.clear();  lcd.setCursor(0, 0);  lcd.print("RESULT =");  switch(oper)      {       case '+':                result((float)key1+key2);                break;       case '-':                        result((float)key1-key2);                break;       case '/':                result((float)key1/key2);                break;       case '*':                result((float)key1*key2);                break;       case '^':                result((float)pow(key1,key2)+1);                break;       case '%':                result(key1%key2);                    break;        } }
int getKey() {  int key=13;  int Readrow,Readcol;  while(key!=1 && key!=2 && key!=3 && key!=4 && key!=5 && key!=6 && key!=7 && key!=8 && key!=9 && key!=0)  {    //Looping 1-9    for(int i=0;i<3;i++)    {      for (int j=0;j<3;j++)      {        digitalWrite(row[i], LOW);        Readrow=digitalRead(row[i]);  //angka 4        Readcol=digitalRead(col[j]);        if( (Readrow==LOW) && (Readcol==LOW))        {          lcd.print((i*3)+(j+1));          digitalWrite(row[i], HIGH);          return key=((i*3)+(j+1));          break;        }      }      digitalWrite(row[i], HIGH);    }    //Angka 0    digitalWrite(row[3], LOW);    Readrow=digitalRead(row[3]);    Readcol=digitalRead(col[1]);    if((Readrow==LOW) && (Readcol==LOW))    {      lcd.print("0");      digitalWrite(row[3], HIGH);      return key=0;    }    digitalWrite(row[3], HIGH);    key=13;  }//while loops ends  return 0; }//GetKey function ends
char getOper() {  int Readrow,Readcol;  char key='l';  while(key!='+' && key!='-' && key!='/' && key!='*' && key!='^' && key!='%' )  {    //Tanda +    digitalWrite(row[0], LOW);    Readrow=digitalRead(row[0]);    Readcol=digitalRead(col[3]);    if( (Readrow==LOW) &&( Readcol==LOW))    {      lcd.print("+");      digitalWrite(row[0], HIGH);      return key='+';    }    digitalWrite(row[0], HIGH);
   //Tanda -    digitalWrite(row[1], LOW);    Readrow=digitalRead(row[1]);    Readcol=digitalRead(col[3]);    if( (Readrow==LOW) && (Readcol==LOW))    {      lcd.print("-");      digitalWrite(row[1], HIGH);      return key='-';    }    digitalWrite(row[1], HIGH);
   //Tanda /    digitalWrite(row[2], LOW);    Readrow=digitalRead(row[2]);    Readcol=digitalRead(col[3]);    if( (Readrow==LOW) && (Readcol==LOW))    {      lcd.print("/");      digitalWrite(row[2], HIGH);      return key='/';    }    digitalWrite(row[2], HIGH);
   //Tanda x    digitalWrite(row[3], LOW);    Readrow=digitalRead(row[3]);    Readcol=digitalRead(col[3]);    if( (Readrow==LOW) && (Readcol==LOW))    {      lcd.print("*");      digitalWrite(row[3], HIGH);      return key='*';    }    digitalWrite(row[3], HIGH);
   //Tanda ^    digitalWrite(row[3], LOW);    Readrow=digitalRead(row[3]);    Readcol=digitalRead(col[0]);    if( (Readrow==LOW) && (Readcol==LOW))    {      lcd.print("^");      digitalWrite(row[3], HIGH);      return key='^';    }    digitalWrite(row[3], HIGH);
   //Tanda %    digitalWrite(row[3], LOW);    Readrow=digitalRead(row[3]);    Readcol=digitalRead(col[2]);    if( (Readrow==LOW) && (Readcol==LOW))    {      lcd.print("%");      digitalWrite(row[3], HIGH);      return key='%';      }    digitalWrite(row[3], HIGH);
 }//while loop ends  return '\0'; }//getOper function ends
void result(float result) {  int unitvalue,tenvalue,decimal;  float value=result;  if(result<0.0)  {    lcd.print("-");    value=result*(-1);  }  if(value>10.0)  {    tenvalue=(int)value/10;    lcd.print(tenvalue);  }  unitvalue=(int)value%10;  lcd.print(unitvalue);  lcd.print(".");  decimal=(int)((int)(value*10)%10);  lcd.print(decimal);
 delay(5000);  lcd.clear();  lcd.setCursor(0, 0); }
Cara menggunakan kalkulator nya dalah sama seperti kalkulator biasa, angka 0-9 menunjukkan angka sebenarnya, button A untuk “+”, button B untuk “-”, button C untuk “/” dan button D untuk “x”.
Selain 4 operator umum tersebut kami juga mencoba menambahkan 2 operator lain pada button “*” dan “#”. Kami mencoba menambahkan fungsi pangkat dan mod.
Fungsi mod berjalan dengan baik dan menghasilkan hasil yang benar. Namun saat kami mencoba fungsi pangkat ternyata belum berhasil :(
0 notes
arduinopebi · 8 years ago
Video
youtube
Project 4 : Calculator with LCD Display DEMO
Membuat kalkulator dengan keypad dan hasilnya ditampilkan dengan layar LCD
0 notes
arduinopebi · 8 years ago
Text
Project 3 : Temperature Sensor
Prooject ke-3 kami adalah melakukan pembacaan temperatur dan menampilkan hasil bacaannya ke serial monitor.
Alat dan bahan yang digunakan dalam project ini adalah:
Tumblr media
sementara skema yang digunakan adalah:
Tumblr media
dengan sourcecode:
float temperature;   int reading;   int lm35Pin = 5; void setup()   {    analogReference(INTERNAL);    Serial.begin(9600); } void loop()   {    reading = analogRead(lm35Pin);    temperature = reading / 9.31;    Serial.println(temperature);    delay(1000); }
sumber: https://www.rastating.com/reading-the-room-temperature-with-an-lm35-sensor/
yapp demikianlah project ini
1 note · View note
arduinopebi · 8 years ago
Video
youtube
Project 3: Temperature Sensor DEMO!
Project ini adalah menampilkan hasil pembacaan sesor temperatur pada serial monitor
0 notes
arduinopebi · 8 years ago
Text
Project 2: Intermezzo
Sebenarnya saat mengerjakan Project 2 menggunakan 7 segment sempat terjadi sesuatu.
Kelompok kami tidak langsung berhasil membuat counter up 7 segment itu bisa berfungsi semestinya. Beberapa kali kami mencoba namun 7 segment tidak juga menyala.
Kami sudah mengikuti skema rangkaian persis dengan yang ada, source code juga telah disesuaikan, resistor sudah dicoba-coba semua kemumngkinan bahkan kami sampai testing 7 segment ke rangkaian miliki orang lain untuk mengetes apakah rusak atau tidak.
Ternyata setelah ditelusuri sekali lagi untuk yang kesekian kali, ternyata kesalahan terjadi di penempatan komponen. Kami lupa ada bagian pada breadbord yang tidak tersambung.
Krik.
0 notes
arduinopebi · 8 years ago
Photo
Tumblr media
Behind The Scene ceritanya
0 notes