Advertisement
Guest User

OV2640 upload na sever ESP8266

a guest
Nov 7th, 2018
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <ESP8266WiFi.h>
  2. #include <WiFiClient.h>
  3. #include <ESP8266WebServer.h>
  4. #include <ESP8266mDNS.h>
  5.  
  6. #include <Wire.h>
  7. #include <ArduCAM.h>
  8. #include <SPI.h>
  9. #include "memorysaver.h"
  10.  
  11. WiFiClient client;
  12.  
  13. #define DEBUGGING  
  14. #define MAX_FRAME_LENGTH 64  
  15. #define CALLBACK_FUNCTIONS 1  
  16. const int CS = 16;
  17. ArduCAM myCAM(OV2640, CS);
  18.  
  19. int led=2;
  20.  
  21.  
  22. void Camera(ArduCAM myCAM){  
  23.   pinMode(led, OUTPUT); digitalWrite(led, LOW);
  24.   myCAM.clear_fifo_flag();
  25.   myCAM.start_capture();
  26.   while (!myCAM.get_bit(ARDUCHIP_TRIG, CAP_DONE_MASK));
  27.   Serial.print("Picture captured. ");
  28.  
  29.  
  30.   size_t len = myCAM.read_fifo_length();
  31.   if (len >= 393216){ Serial.println("Over size."); return;}
  32.   else if (len == 0){ Serial.println("Size is 0."); return;}
  33.   Serial.print("Length in bytes: "); Serial.println(len); Serial.println();
  34.   myCAM.CS_LOW(); myCAM.set_fifo_burst(); SPI.transfer(0xFF);
  35.  
  36.  
  37.   if (client.connect("asi.lv", 80)) {
  38.   while(client.available()) {String line = client.readStringUntil('\r');}
  39.  
  40.    
  41.   String start_request = ""; String end_request = "";
  42.   start_request = start_request +
  43.   "\n--AaB03x\n" +
  44.   "Content-Disposition: form-data; name=\"userfile\"; filename=\"CAM.JPG\"\n" +
  45.   "Content-Transfer-Encoding: binary\n\n";
  46.  
  47.   end_request = end_request + "\n--AaB03x--\n";  
  48.  
  49.   uint16_t full_length;
  50.   full_length = start_request.length() + len + end_request.length();
  51.  
  52.     Serial.println("POST /alnis/webcammob1/mobilewebcam.php HTTP/1.1");
  53.     Serial.println("Host: asi.lv");
  54.     Serial.println("Content-Type: multipart/form-data; boundary=AaB03x");
  55.     Serial.print("Content-Length: "); Serial.println(full_length);
  56.     Serial.print(start_request); Serial.println("Here are sent picture data"); Serial.println(end_request);
  57.  
  58.     client.println("POST /alnis/webcammob1/mobilewebcam.php HTTP/1.1");
  59.     client.println("Host: asi.lv");
  60.     client.println("Content-Type: multipart/form-data; boundary=AaB03x");
  61.     client.print("Content-Length: "); client.println(full_length);
  62.     client.print(start_request);
  63.  
  64.    
  65.   static const size_t bufferSize = 1024;
  66.   static uint8_t buffer[bufferSize] = {0xFF};
  67.   while (len) {
  68.       size_t will_copy = (len < bufferSize) ? len : bufferSize;
  69.       SPI.transferBytes(&buffer[0], &buffer[0], will_copy);
  70.       if (!client.connected()) break;
  71.       client.write(&buffer[0], will_copy);
  72.       len -= will_copy;
  73.       }
  74.  
  75.      client.println(end_request);
  76.      myCAM.CS_HIGH(); digitalWrite(led, HIGH);
  77.   }
  78.  
  79.   //delay(5000);
  80.   while(client.available()){ String line = client.readStringUntil('\r'); Serial.print(line);}
  81.   client.stop();  
  82.   while(client.available()){ String line = client.readStringUntil('\r'); Serial.print(line);}
  83. }
  84.  
  85.  
  86.  
  87. void setup() {
  88.   uint8_t vid, pid, temp;
  89.   Wire.begin();
  90.   Serial.begin(115200); Serial.println("ArduCAM Mini ESP8266 uploading photo to server");
  91.  
  92.   pinMode(CS, OUTPUT);
  93.   SPI.begin();
  94.   SPI.setFrequency(4000000); //4MHz
  95.  
  96.   myCAM.write_reg(ARDUCHIP_TEST1, 0x55);
  97.   temp = myCAM.read_reg(ARDUCHIP_TEST1);
  98.   if (temp != 0x55){Serial.println("SPI1 interface Error!");while(1);}
  99.  
  100.  
  101.   myCAM.wrSensorReg8_8(0xff, 0x01);
  102.   myCAM.rdSensorReg8_8(OV2640_CHIPID_HIGH, &vid);
  103.   myCAM.rdSensorReg8_8(OV2640_CHIPID_LOW, &pid);
  104.   if ((vid != 0x26) || (pid != 0x42)){Serial.println("Can't find OV2640 module!");while(1);}
  105.   else{Serial.println("OV2640 detected.");}
  106.  
  107.  
  108.  
  109.   myCAM.set_format(JPEG);  myCAM.InitCAM();
  110.   //myCAM.OV2640_set_JPEG_size(OV2640_640x480);
  111.   myCAM.OV2640_set_JPEG_size(6);   //0...8
  112.   myCAM.clear_fifo_flag(); myCAM.write_reg(ARDUCHIP_FRAMES, 0x00);  
  113.  
  114.  
  115.  
  116.   WiFi.mode(WIFI_STA);
  117.   Serial.println("Connecting to AP specified during programming");
  118.   WiFi.begin("LMT-89B0", "331M372E70J");
  119.   while (WiFi.status() != WL_CONNECTED) {delay(500); Serial.print("."); }
  120.   Serial.print("\r\nWiFi connected IP address: ");
  121.   Serial.println(WiFi.localIP());
  122.   Serial.println();
  123.   }
  124.  
  125.  
  126. void loop() {
  127.   Camera(myCAM);
  128.  
  129.   Serial.println("Sleeping ...");
  130. //  delay(60000);
  131. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement