Доброго времени суток!
Подключал ли кто-то HC-SR04 к esp8266. Мои попытки успехом не увенчались. Пытался подключить выводы Trig и Echo от HC-SR04 к GPIO0 и GPIO2 соответственно. На питании 3.3v запрос дистанции (использовал код из библиотеки Ultrasonic из Arduino) возвращает ноль. Попытка подключить питание на сонар 5в, приводит к тому что не стартует esp8266 (синий светодиод на плате не загорается, т.е. вебсервер не стартует).
Может кто подскажет что не так делаю.
Вот код написанный под среду разработки Arduino(переделал пример из статьи с этого сайта):
Подключал ли кто-то HC-SR04 к esp8266. Мои попытки успехом не увенчались. Пытался подключить выводы Trig и Echo от HC-SR04 к GPIO0 и GPIO2 соответственно. На питании 3.3v запрос дистанции (использовал код из библиотеки Ultrasonic из Arduino) возвращает ноль. Попытка подключить питание на сонар 5в, приводит к тому что не стартует esp8266 (синий светодиод на плате не загорается, т.е. вебсервер не стартует).
Может кто подскажет что не так делаю.
Вот код написанный под среду разработки Arduino(переделал пример из статьи с этого сайта):
Код:
#include <ESP8266WiFi.h>
// Trig - 0, Echo - 2
// Ultrasonic ultrasonic(0, 2);
float dist_cm = 0;
#define Trig_pin 0
#define Echo_pin 2
long duration,distacne_cm,distance_inc;
#define CM 1
#define INC 0
const char* ssid = "Net341";
const char* password = "A3F28F89DB";
// Create an instance of the server
// specify the port to listen on as an argument
WiFiServer server(80);
long Timing()
{
digitalWrite(Trig_pin, LOW);
delayMicroseconds(2);
digitalWrite(Trig_pin, HIGH);
delayMicroseconds(10);
digitalWrite(Trig_pin, LOW);
duration = pulseIn(Echo_pin, HIGH);
return duration;
}
long Ranging(int sys)
{
Timing();
distacne_cm = duration /29 / 2 ;
distance_inc = duration / 74 / 2;
if (sys)
return distacne_cm;
else
return distance_inc;
}
void setup() {
Serial.begin(115200);
delay(10);
// инициализация пинов для ультрасоника
pinMode(Trig_pin, OUTPUT);
pinMode(Echo_pin, INPUT);
// prepare GPIO2
// pinMode(2, OUTPUT);
// digitalWrite(2, 0);
// Connect to WiFi network
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
// Start the server
server.begin();
Serial.println("Server started");
// Print the IP address
Serial.println(WiFi.localIP());
}
void loop() {
// Check if a client has connected
WiFiClient client = server.available();
if (!client) {
return;
}
// Wait until the client sends some data
Serial.println("new client");
while(!client.available()){
delay(1);
}
// Read the first line of the request
String req = client.readStringUntil('\r');
Serial.println(req);
client.flush();
dist_cm = Ranging(CM); // get distance
Serial.print(";dist=");
Serial.println(dist_cm);
client.flush();
// Prepare the response
String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nGPIO is now ";
//s += (dist_cm)?"high":"low";
s += dist_cm;
s += "</html>\n";
// Send the response to the client
client.print(s);
delay(1);
Serial.println("Client disonnected");
// The client will actually be disconnected
// when the function returns and 'client' object is detroyed
}