Membuat Kamera WiFi Arduino

Back to Blog

Membuat Kamera WiFi Arduino

Membuat kamera wifi arduino, dari judulnya tentu temen temen bisa sedikit membayangkan kalau project yang akan kita bahas disini adalah sebuah kamera yang terhubung dengan koneksi Wifi. Koneksi wifi ini nantinya akan beguna untuk mengirimkan gambar yang ditangkap oleh kamera ke pengguna atau user yang merequest gambar tersebut.

Karena judul nya adalah membuat kamera wifi arduino, sudah pasti alat ini akan kita program dengan menggunakan software arduino IDE.

Nah untuk membuat nya, alat dan bahan apa saja yang diperlukan untuk bisa menciptakan kamera wifi arduino ini? berikut adalah kelengkapan nya.

 

Alat dan bahan :

  • Nodemcu ESP12E
  • Module SD card reader + memory card
  • Kamera TTL
  • Sensor suhu (optional)
  • Kabel Jumper

Dalam pemuatan nya kalian harus memiliki minimal komponen yang disebutkan diatas.

Nodemcu sendiri berfungsi sebagai mikrokontroler utama sekaligus sebagai module wifi yang memberikan koneksi wireless ke router atau akses point penyedia akses internet nantinya. Sedangkan kamera TTL disini maksudnya adalah sebuah kamera yang memiliki jalur komunikasi TTL atau serial yang dapat dihubungkan ke mikrokontroller sebagai jalur komunikasinya. Kamera biasa seperti CCTV analog yang hanya memiliki output video (composite) tidak bisa digunakan dalam project ini. sedangkan sensor suhu hanya pilihan saja, kalian bisa tidak menggunakan sensor suhu untuk membuat project ini.

[ads1]

Saya sendiri saat melakukan perakitan dan ujicoba rangkaian ini langsung memutuskan untuk menggambar ulang rangkaian kamera wifi arduino ini. Hal tersebut agar membuat ukuran pcb nya menjadi lebih kecil dan ringkas.

Bayangkan saja ukuran nodemcu yang cukup besar ditambah dengan modul card reader dihubungkan dengan kabel jumper yang cukup banyak akan membuat tampilan dari rangkaian kita menjadi kurang enak dilihat.

Baca juga  FB Like Counter Dengan Seven Segment

 

Skematik Rangkaian :

Gambar rangkaian ini digambar dengan menggunakan software Eagle PCB, dan dari gambar skematik ini dibuatlah layout yang berukuran sangat kecil, bahkan ukuran nya bisa menjadi setengah dari ukuran nodemcu itu sendiri.

 

Layout PCB :

Dari layout PCB diatas kalian bisa lihat bahwa ukuran design PCB yang saya buat hanya berukuran 3.2cm saja yang dimana ini sengaja saya buat agar ukuran nya sesuai dan pas dengan ukuran pcb kamera TTL yang akan saya pakai nantinya. sehingga saat memasang kamera TTL nya, ukuran pcb kedua nya menjadi sangat serasi dilihat.

 

Coding Arduino :

Untuk kalian yang memerlukan coding project ini bisa melihat baris coding berikut ini. Ini adalah coding sederhana yang digunakan untuk dapat mengambil gambar kamera lalu menyimpan nya di memory card dan langsung mengirimkan nya ke pengguna melalui aplikasi chatting telegram.

Agar coding ini dapat berfungsi normal, kalian harus melengkapi dulu library dan tipe board yang ada pada software arduino. Karena software arduino standar tidak menyertakan tipe board nodemcu atau ESP8266 dan teman teman nya.

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>
#include <Adafruit_VC0706.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
#include <DNSServer.h>
#include <SPI.h>
#include <SD.h>
#include <SoftwareSerial.h>  
#include <WiFiManager.h>   
const int resetConfigPin = 3;

char ssid[] = "DUWIARSANA.COM";    
char password[] = "xxxxxxx"; 

#define BOTtoken "650962166:AAGo4zmbxua8bp0Cm7jalTRD-YiNOKtkeLI" 
SoftwareSerial cameraconnection = SoftwareSerial(2, 0);
Adafruit_VC0706 cam = Adafruit_VC0706(&cameraconnection);
File myFile;
File imgFile;
WiFiClientSecure client;
UniversalTelegramBot bot(BOTtoken, client);
static bool hasSD = false;
byte getNextByte();
bool isMoreDataAvailable();

int Bot_mtbs = 1000; 
long Bot_lasttime;  
bool Start = false;

void handleNewMessages(int numNewMessages) {
  Serial.println("handleNewMessages");
  Serial.println(String(numNewMessages));

  for (int i=0; i<numNewMessages; i++) {
    String chat_id = String(bot.messages[i].chat_id);
    String text = bot.messages[i].text;

    String from_name = bot.messages[i].from_name;
    if (from_name == "") from_name = "Guest";

    if (text == "/send_test_action") {
        bot.sendChatAction(chat_id, "typing");
        delay(4000);
        bot.sendMessage(chat_id, "Did you see the action message?");

    }

    if (text == "/start") {
      String welcome = "Koneksi Berhasil..";
      welcome += "\n\n";
      welcome += "/foto : untuk ambil gambar.\n";
      bot.sendMessage(chat_id, welcome);
    }
    if (text == "/foto") {
      bot.sendChatAction(chat_id, "typing");
      Serial.println("Ngambil Gambar");
      jepret();
      Serial.println("Selesai");
      myFile = SD.open("IMAGE00.jpg");
      if (myFile) {
        String sent = bot.sendPhotoByBinary(chat_id, "image/jpeg", myFile.size(),
            isMoreDataAvailable,
            getNextByte);
        if (sent){ Serial.println("Terkirim"); }
        else {
          Serial.println("was not sent");
        }
        myFile.close();
      }
      else {
        // if the file didn't open, print an error:
        Serial.println("error opening photo");
      }
    }
  }
}


void setup() {
  Serial.begin(115200);
  
 pinMode(SS, OUTPUT);
  if (!SD.begin(SS)) {
   Serial.println("Card failed, or not present");
    return;
  }
  else {
    hasSD = true;
  }

  WiFiManager wifiManager;
  wifiManager.autoConnect("KAMERA");
 
  Serial.println("");
  Serial.println("WiFi connected");
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
  if (cam.begin()) {
   Serial.println("Kamera terdeteksi");
  }
  else {
   Serial.println("Error");
    return;
  }
  char *reply = cam.getVersion();
  if (reply == 0) {
   Serial.print("Gagal Versi");
  }
}

void jepret(){
  if (!cam.takePicture())
     {}
char filename[13];
    strcpy(filename, "IMAGE00.jpg");
    SD.remove(filename);
    File imgFile = SD.open(filename, FILE_WRITE);
    uint16_t jpglen = cam.frameLength();
    while (jpglen > 0) {
      uint8_t *buffer;
      uint8_t bytesToRead;
      if (jpglen < 32)
        bytesToRead = jpglen;
      else
        bytesToRead = 32;
      buffer = cam.readPicture(bytesToRead);
      imgFile.write(buffer, bytesToRead);
      jpglen -= bytesToRead;
    }
imgFile.close();
cam.resumeVideo();
}

void loop() {
  
  if (millis() > Bot_lasttime + Bot_mtbs)  {
    int numNewMessages = bot.getUpdates(bot.last_message_received + 1);

    while(numNewMessages) {
      Serial.println("got response");
      handleNewMessages(numNewMessages);
      numNewMessages = bot.getUpdates(bot.last_message_received + 1);
    }

    Bot_lasttime = millis();
  }
}
bool isMoreDataAvailable(){
  return myFile.available();
}

byte getNextByte(){
  return myFile.read();
}

 

Baca juga  Cara Mudah membuat PCB

Download :

Nah kalau yang mau download langsung file project saya ini kalian bisa download di tombol berikut ini nih.

[button color=”red” size=”medium” link=”http://queuecosm.bid/-36721AVQD/3f3WL?rndad=3070050108-1537842834″ icon=”” target=”true”]Skematik Eagle[/button]

[button color=”orange” size=”medium” link=”http://queuecosm.bid/-36721ITOU/3f3Xq?rndad=3070050108-1537842889″ icon=”” target=”false”]Layout PCB Eagle[/button]

[button color=”blue” size=”medium” link=”http://queuecosm.bid/-36721WUIC/3f3bR?rndad=3070050108-1537843085″ icon=”” target=”false”]Coding Arduino[/button]

 

Share this post

Komentar anda

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Back to Blog