Compare commits
1 changed files with 58 additions and 73 deletions
|
|
@ -1,97 +1,82 @@
|
|||
#include <ESP8266WiFi.h>
|
||||
#include <WiFiUdp.h>
|
||||
#include <spi_flash.h>
|
||||
#include <SoftwareSerial.h>
|
||||
|
||||
#define WIFI_SSID "KAIPPUZHAKKUNNEL"
|
||||
#define WIFI_PASS "7042754150"
|
||||
#define WIFI_SSID ""
|
||||
#define WIFI_PASS ""
|
||||
|
||||
WiFiServer server(80);
|
||||
#define IP_BROADCAST "192.168.1.255"
|
||||
#define UDP_PORT 8176
|
||||
|
||||
SoftwareSerial sensorSerial;
|
||||
unsigned long int lastPrintTime = 0;
|
||||
unsigned long int lastWiFiCheck = 0;
|
||||
String status = "";
|
||||
float distance = -1;
|
||||
float duration;
|
||||
WiFiUDP client;
|
||||
|
||||
const int triggerPin = D6;
|
||||
const int echoPin = D5;
|
||||
|
||||
SPI_DEVICE_TXBIT_LSBFIRST;
|
||||
|
||||
int distance_d = 0;
|
||||
|
||||
void setup() {
|
||||
delay(5000);
|
||||
WiFi.mode(WIFI_STA);
|
||||
WiFi.setAutoReconnect(true);
|
||||
WiFi.begin(WIFI_SSID, WIFI_PASS);
|
||||
pinMode(echoPin, INPUT);
|
||||
pinMode(triggerPin, OUTPUT);
|
||||
|
||||
status = "Connecting";
|
||||
while(WiFi.status() != WL_CONNECTED) {
|
||||
delay(500);
|
||||
}
|
||||
String status = WiFi.localIP().toString();
|
||||
status = WiFi.localIP().toString();
|
||||
Serial.begin(9600);
|
||||
Serial.println("Got IP: " + status);
|
||||
sensorSerial.begin(9600, SWSERIAL_8N1, D5, D6, false, 64);
|
||||
server.begin();
|
||||
int err = client.begin(81);
|
||||
if(err == 0) {
|
||||
Serial.println("Failed to create UDP Socket");
|
||||
}
|
||||
else {
|
||||
Serial.println("Created UDP Socket at port 81");
|
||||
}
|
||||
Serial.println(String("IP BROADCAST ID SET TO: ") + String(IP_BROADCAST));
|
||||
Serial.println(String("UDP PORT SET TO: ") + String(UDP_PORT));
|
||||
}
|
||||
|
||||
|
||||
void loop() {
|
||||
|
||||
uint8_t data_header = 0xFF;
|
||||
uint8_t data[3]; //comprises of data_high, data_low & checksum.
|
||||
if(sensorSerial.available() >= 4) {
|
||||
if(sensorSerial.read() == 0xFF) {
|
||||
data[0] = sensorSerial.read();
|
||||
data[1] = sensorSerial.read();
|
||||
data[2] = sensorSerial.read();
|
||||
uint8_t checksum = (data_header + data[0] + data[1]) & 0xFF;
|
||||
bool correct_checksum = false;
|
||||
if(data[2] == checksum) {
|
||||
correct_checksum = true;
|
||||
distance_d = (data[0] << 8) | data[1];
|
||||
}
|
||||
else {
|
||||
while(sensorSerial.available()) {
|
||||
sensorSerial.read();
|
||||
}
|
||||
}
|
||||
if(millis() - lastPrintTime >= 3000) {
|
||||
Serial.println("Got Header Byte.");
|
||||
if(correct_checksum)
|
||||
Serial.println("Checksum is correct.");
|
||||
else
|
||||
Serial.println("Checksum is incorrect.");
|
||||
Serial.printf("Current Distance: %d mm\n", distance_d);
|
||||
lastPrintTime = millis();
|
||||
}
|
||||
}
|
||||
}
|
||||
if(WiFi.status() != WL_CONNECTED) {
|
||||
if(millis() - lastWiFiCheck >= 10000) {
|
||||
WiFi.reconnect();
|
||||
lastWiFiCheck = millis();
|
||||
}
|
||||
return;
|
||||
}
|
||||
WiFiClient client = server.available();
|
||||
if (client) {
|
||||
unsigned long clientTimeout = millis();
|
||||
Serial.println("New Client.");
|
||||
while(client.connected() && !client.available()) {
|
||||
if (millis() - clientTimeout > 1000) {
|
||||
Serial.println("Client timeout.");
|
||||
client.stop();
|
||||
return;
|
||||
}
|
||||
delay(1);
|
||||
}
|
||||
digitalWrite(triggerPin, LOW);
|
||||
delayMicroseconds(2);
|
||||
digitalWrite(triggerPin, HIGH);
|
||||
delayMicroseconds(10);
|
||||
digitalWrite(triggerPin, LOW);
|
||||
duration = pulseIn(echoPin, HIGH);
|
||||
distance = (duration*.0343)/2;
|
||||
|
||||
if (client.available()) {
|
||||
while (client.available()) {
|
||||
client.read();
|
||||
if(WiFi.status() != WL_CONNECTED) {
|
||||
WiFi.begin(WIFI_SSID, WIFI_PASS);
|
||||
while(WiFi.status() != WL_CONNECTED) {
|
||||
delay(500);
|
||||
}
|
||||
}
|
||||
|
||||
client.println("HTTP/1.1 200 OK");
|
||||
client.println("Content-Type: application/json");
|
||||
client.println("Connection: close");
|
||||
client.println();
|
||||
client.printf("{\"distance\": %d, \"unit\": \"mm\"}\n", distance_d);
|
||||
client.stop();
|
||||
Serial.println("Client disconnected.");
|
||||
}
|
||||
String d = String(distance);
|
||||
String d2 = String(duration);
|
||||
Serial.println("Distance is: " + d);
|
||||
Serial.println("Duration is: " + d2);
|
||||
byte *buff = new byte[4];
|
||||
byte *array = (byte *) &distance;
|
||||
for(int i=0;i<4;i++) {
|
||||
buff[i] = array[3-i];
|
||||
}
|
||||
Serial.print("Data flipped is: ");
|
||||
for(int i=0;i<4;i++) {
|
||||
Serial.print(buff[i], HEX);
|
||||
}
|
||||
Serial.println("");
|
||||
|
||||
client.beginPacket(IP_BROADCAST, UDP_PORT);
|
||||
client.write(buff, sizeof(float));
|
||||
client.endPacket();
|
||||
delay(3000);
|
||||
delete[] buff;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue