Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <ESP8266WiFi.h>
- #include <WiFiClient.h>
- #include <ESP8266WebServer.h>
- #include <ESP8266mDNS.h>
- #include <Wire.h>
- #include <ArduCAM.h>
- #include <SPI.h>
- #include "memorysaver.h"
- WiFiClient client;
- #define DEBUGGING
- #define MAX_FRAME_LENGTH 64
- #define CALLBACK_FUNCTIONS 1
- const int CS = 16;
- ArduCAM myCAM(OV2640, CS);
- int led=2;
- void Camera(ArduCAM myCAM){
- pinMode(led, OUTPUT); digitalWrite(led, LOW);
- myCAM.clear_fifo_flag();
- myCAM.start_capture();
- while (!myCAM.get_bit(ARDUCHIP_TRIG, CAP_DONE_MASK));
- Serial.print("Picture captured. ");
- size_t len = myCAM.read_fifo_length();
- if (len >= 393216){ Serial.println("Over size."); return;}
- else if (len == 0){ Serial.println("Size is 0."); return;}
- Serial.print("Length in bytes: "); Serial.println(len); Serial.println();
- myCAM.CS_LOW(); myCAM.set_fifo_burst(); SPI.transfer(0xFF);
- if (client.connect("asi.lv", 80)) {
- while(client.available()) {String line = client.readStringUntil('\r');}
- String start_request = ""; String end_request = "";
- start_request = start_request +
- "\n--AaB03x\n" +
- "Content-Disposition: form-data; name=\"userfile\"; filename=\"CAM.JPG\"\n" +
- "Content-Transfer-Encoding: binary\n\n";
- end_request = end_request + "\n--AaB03x--\n";
- uint16_t full_length;
- full_length = start_request.length() + len + end_request.length();
- Serial.println("POST /alnis/webcammob1/mobilewebcam.php HTTP/1.1");
- Serial.println("Host: asi.lv");
- Serial.println("Content-Type: multipart/form-data; boundary=AaB03x");
- Serial.print("Content-Length: "); Serial.println(full_length);
- Serial.print(start_request); Serial.println("Here are sent picture data"); Serial.println(end_request);
- client.println("POST /alnis/webcammob1/mobilewebcam.php HTTP/1.1");
- client.println("Host: asi.lv");
- client.println("Content-Type: multipart/form-data; boundary=AaB03x");
- client.print("Content-Length: "); client.println(full_length);
- client.print(start_request);
- static const size_t bufferSize = 1024;
- static uint8_t buffer[bufferSize] = {0xFF};
- while (len) {
- size_t will_copy = (len < bufferSize) ? len : bufferSize;
- SPI.transferBytes(&buffer[0], &buffer[0], will_copy);
- if (!client.connected()) break;
- client.write(&buffer[0], will_copy);
- len -= will_copy;
- }
- client.println(end_request);
- myCAM.CS_HIGH(); digitalWrite(led, HIGH);
- }
- //delay(5000);
- while(client.available()){ String line = client.readStringUntil('\r'); Serial.print(line);}
- client.stop();
- while(client.available()){ String line = client.readStringUntil('\r'); Serial.print(line);}
- }
- void setup() {
- uint8_t vid, pid, temp;
- Wire.begin();
- Serial.begin(115200); Serial.println("ArduCAM Mini ESP8266 uploading photo to server");
- pinMode(CS, OUTPUT);
- SPI.begin();
- SPI.setFrequency(4000000); //4MHz
- myCAM.write_reg(ARDUCHIP_TEST1, 0x55);
- temp = myCAM.read_reg(ARDUCHIP_TEST1);
- if (temp != 0x55){Serial.println("SPI1 interface Error!");while(1);}
- myCAM.wrSensorReg8_8(0xff, 0x01);
- myCAM.rdSensorReg8_8(OV2640_CHIPID_HIGH, &vid);
- myCAM.rdSensorReg8_8(OV2640_CHIPID_LOW, &pid);
- if ((vid != 0x26) || (pid != 0x42)){Serial.println("Can't find OV2640 module!");while(1);}
- else{Serial.println("OV2640 detected.");}
- myCAM.set_format(JPEG); myCAM.InitCAM();
- //myCAM.OV2640_set_JPEG_size(OV2640_640x480);
- myCAM.OV2640_set_JPEG_size(6); //0...8
- myCAM.clear_fifo_flag(); myCAM.write_reg(ARDUCHIP_FRAMES, 0x00);
- WiFi.mode(WIFI_STA);
- Serial.println("Connecting to AP specified during programming");
- WiFi.begin("LMT-89B0", "331M372E70J");
- while (WiFi.status() != WL_CONNECTED) {delay(500); Serial.print("."); }
- Serial.print("\r\nWiFi connected IP address: ");
- Serial.println(WiFi.localIP());
- Serial.println();
- }
- void loop() {
- Camera(myCAM);
- Serial.println("Sleeping ...");
- // delay(60000);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement