[wp-review]
Bu projemizde ethernet shield kartı kullanarak ip üzerinden kameradan görüntü alacağız.
Malzemeler:
- Arduino
- Arduino Ethernet Shield
- Serial kamera
Kamera Kod
#include <Adafruit_VC0706.h> #include <SPI.h> #include <SdFat.h> #include <SdFatUtil.h> #include <Ethernet.h> #include <SoftwareSerial.h> // Arduino Ethernet shield: pin 4 #define chipSelect 4 // Using SoftwareSerial (Arduino 1.0+) or NewSoftSerial (Arduino 0023 & prior): #if ARDUINO >= 100 // On Uno: camera TX connected to pin 2, camera RX to pin 3: SoftwareSerial cameraconnection = SoftwareSerial(2, 3); // On Mega: camera TX connected to pin 69 (A15), camera RX to pin 3: //SoftwareSerial cameraconnection = SoftwareSerial(69, 3); #else NewSoftSerial cameraconnection = NewSoftSerial(2, 3); #endif Adafruit_VC0706 cam = Adafruit_VC0706(&cameraconnection); /************ ETHERNET STUFF ************/ byte mac[] = {0x90,0xa2,0xda,0x0e,0xf7,0xfc}; byte ip[] = {192, 168, 0, 30}; char rootFileName[] = "index.htm"; EthernetServer server(80); /************ SDCARD STUFF ************/ SdFat SD; Sd2Card card; SdVolume volume; SdFile root; SdFile file; // store error strings in flash to save RAM #define error(s) error_P(PSTR(s)) void error_P(const char* str) { PgmPrint("error: "); SerialPrintln_P(str); if (card.errorCode()) { PgmPrint("SD error: "); Serial.print(card.errorCode(), HEX); Serial.print(','); Serial.println(card.errorData(), HEX); } while(1); } /**********************SETUP()*********************/ void setup() { #if !defined(SOFTWARE_SPI) #if defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__) if(chipSelect != 53) pinMode(53, OUTPUT); // SS on Mega #else if(chipSelect != 10) pinMode(10, OUTPUT); // SS on Uno, etc. #endif #endif PgmPrint("Free RAM: "); Serial.println(FreeRam()); pinMode(10, OUTPUT); digitalWrite(10, HIGH); if (!card.init(SPI_HALF_SPEED, 4)) error("card.init failed!"); if (!volume.init(&card)) error("vol.init failed!"); PgmPrint("Volume is FAT"); Serial.println(volume.fatType(),DEC); Serial.println(); if (!root.openRoot(&volume)) error("openRoot failed"); PgmPrintln("Files found in root:"); root.ls(LS_DATE | LS_SIZE); Serial.println(); PgmPrintln("Files found in all dirs:"); root.ls(LS_R); Serial.println(); PgmPrintln("Done"); Serial.begin(9600); Serial.println("VC0706 Camera snapshot test"); if (!SD.begin(chipSelect)) { Serial.println("Card failed, or not present"); return; } Ethernet.begin(mac, ip); server.begin(); } #define BUFSIZ 100 /**********************LOOP()*********************/ void loop() { char clientline[BUFSIZ]; char *filename; int index = 0; int image = 0; EthernetClient client = server.available(); if (client) { boolean current_line_is_blank = true; index = 0; while (client.connected()) { if (client.available()) { char c = client.read(); if (c != '\n' && c != '\r') { clientline[index] = c; index++; if (index >= BUFSIZ) index = BUFSIZ -1; continue; } clientline[index] = 0; filename = 0; Serial.println(clientline); if (strstr(clientline, "GET / ") != 0) { filename = rootFileName; } if (strstr(clientline, "GET /") != 0) { if (!filename) filename = clientline + 5; (strstr(clientline, " HTTP"))[0] = 0; Serial.println(filename); if (strstr(filename, "tttt") != 0) takingPicture(); if (strstr(filename, "rrrr") != 0) removePicture(); if (! file.open(filename, O_READ)) { client.println("HTTP/1.1 404 Not Found"); client.println("Content-Type: text/html"); client.println(); client.println("File Not Found!"); break; } Serial.println("Open!"); client.println("HTTP/1.1 200 OK"); if(strstr(filename, ".css") != 0) client.println("Content-Type: text/css"); else if (strstr(filename, ".htm") != 0) client.println("Content-Type: text/html"); else if (strstr(filename, ".jpg") != 0) client.println("Content-Type: image/jpeg"); client.println(); int16_t c; while ((c = file.read()) >= 0) { Serial.print((char)c); client.print((char)c); } file.close(); }else { // everything else is a 404 client.println("HTTP/1.1 404 Not Found"); client.println("Content-Type: text/html"); client.println(); client.println("File Not Found!"); } break; } } delay(1000); client.stop(); } } /**********************FUNCTION1()*********************/ void takingPicture(){ if (cam.begin()) { Serial.println("Camera Found:"); } else { Serial.println("No camera found?"); return; } char *reply = cam.getVersion(); if (reply == 0) { Serial.print("Failed to get version"); } else { Serial.println("-----------------"); Serial.print(reply); Serial.println("-----------------"); } //cam.setImageSize(VC0706_640x480); // biggest cam.setImageSize(VC0706_320x240); // medium //cam.setImageSize(VC0706_160x120); // small uint8_t imgsize = cam.getImageSize(); Serial.print("Image size: "); if (imgsize == VC0706_640x480) Serial.println("640x480"); if (imgsize == VC0706_320x240) Serial.println("320x240"); if (imgsize == VC0706_160x120) Serial.println("160x120"); Serial.println("Snap in 3 secs..."); delay(3000); cam.takePicture(); Serial.println("taking picture"); file.open("IMAGE.jpg", O_RDWR | O_CREAT); uint16_t jpglen = cam.frameLength(); pinMode(8, OUTPUT); byte wCount = 0; while (jpglen > 0) { uint8_t *buffer; uint8_t bytesToRead = min(32, jpglen); buffer = cam.readPicture(bytesToRead); file.write(buffer, bytesToRead); if(++wCount >= 64) { Serial.print('.'); wCount = 0; } jpglen -= bytesToRead; } file.close(); Serial.println("end of taking picture"); } /**********************FUNCTION2()*********************/ void removePicture(){ file.open("IMAGE.jpg", O_READ | O_WRITE); file.remove(); }
Resim çekmek için : http:/xxx.xxx.xxx.xxx:5555/ttt yazın.
Çekilen resme bakmak için : http:/xxx.xxx.xxx.xxx:5555/image.jpg yazın.
Resmi silmek için : http:/xxx.xxx.xxx.xxx:5555/rrr yazın.
[wp-review]
bu projeyi arduino uno ile yapmak mümkün mü?
Visitor Rating: 4 Stars
Visitor Rating: 1 Stars
Visitor Rating: 5 Stars
Visitor Rating: 5 Stars
Bu kodları saniye 10 kare görüntü çekip sürekli aktarımını sağlayarak Real time görüntü sağlayabilir miyiz
Merhaba acaba OV7670 kamera ile aynı projeyi gerçekleştirmek mümkün mü?
Aslında OV7670 ile çektiğim resmi sd karta kaydetmek istiyorum arduino mega kullanarak nasıl yapabileceğim hakkında yardımcı olursanız sevinirim
Visitor Rating: 1 Stars
Visitor Rating: 4 Stars
Merhaba bu proje ile uzaktan izleme yapılabilir mi? örneğin, izmir de oturuyorum ama arduino kamera istanbulda. uzaktan izlemek mümkün olur mu?
Olabilir ama her iki tarafında internete bağlı olması gerekir ve arduino en fazla 1 gün boyunca dayanır ondan sonra başın sağ olsun
Visitor Rating: 1 Stars
Visitor Rating: 5 Stars
Arduino ya bu projede bilgisayar kamerasını bağlayabilir miyiz 4 pinli acil cevap bekliyorum teşekkürler
Yani ben kamera modülünü arduino ya bağlayınca telefondan veya bilgisayar dan görüntüyü izleyebilirmiyiz
acaba çözüm bulabildiniz mi ? bulduysanız lütfen bana yardımcı olun. abdulkadirtekin2@gmail.com
peki görüntüyü wireless kart ile (esP8266) aktarabilirmiyiz.?
Ardinyo ile ama bir sorunumuz var kameranızı gündüz fotoğraf alabiliyor gece fotoğraf alabilmemiz için kamera üzerinde nasıl bir yöntem izleye biliriz
Merhaba bu kodlar OV7670 kamera modulü içinde çalışır mı?
kütüphanesi ile kendi fonksiyonlarını eklemeniz gerekir.
Bu projeyi gerçekleştirebildiyseniz mail atabilirmisiniz
cigdemmbicer@gmail.com
çiğdem hanım siz bu projeyi gerçekleştirdiyseniz mail atabilirmisiniz
Arduino Ethernet Shield kamera ya bağladık peki Arduino yu nerde kullanacaz hepsini kapsayan fritzing görüntüsünü atabilirmisiniz.
arduinonun üzerine direk ethernet shield i takıyorsun.
Peki bu kodlar herhangi bir kamera modülünde çalışır mı yoksa illa TTL serial kamera mı olmak zorunda
kamera modülün iletişim pinlerinden (tx,rx) gerekli bağlantıları yaptığınızda çalışır
yeniyim yardımcı olursanız svinirim böyle bir sistem yapmak istiyorum gece görüş harekete karşı duyarlı olması lazım ve veriyi kayıt etmesi lazım bu anlamda arduino işlemci olarak yavaş kalabilirmi
arduino görüntü işlemez aktarır işleme yapmak için matlab gibi programlar kullanabılırsınız yani hareket algılama ve kaydetme işlemi için . Ama due modeli ve üzerindekiler görüntü işleme yapıyor.
Aynı kamera modelinin 16 pinlisi bu programı ona göre nasıl düzenleyebiliriz acaba?
Pardon 18 pin
osman bey kamera modülün kütüphanesini ekleyin ve o kütüphane fonksiyonuna göre kodu düzenleyin. serial iletişim pinlerini devre şemasıyla aynı yapabilirsiniz. Lakin kodu modüle göre entegre etmelisiniz.