Documente Academic
Documente Profesional
Documente Cultură
SISTEME MECATRONICE
LABORATOARELE: 5,6
Data: 31.03.2022
Laborator 5: Achiziția datelor pe portul analogic
Placa de dezvoltare cu ESP32
1. Descriere schemă hardware
2. Utilizare porturi analogice
Laborator 6: Aplicații
3. Scriere programe pentru placa de dezvoltare
Mediază valorile citite
4. Aplicații cu potențiometrul
Aprinde/stinge led-uri la valori predefinite citite de pe potențiometru
5. Interfațare cu un sistem Wi-Fi
Afișează pe o pagină web valorile citite de la
- Potențiometru
- Senzorul TME
- Acționează un servomotor și afișează valorile trimise către servo
A. Potențiometrul este conectat la pinul 34, ADC6.
Codul în Arduino:
#define POTENTIOMETER_PIN 34 // ESP32 pin GIOP36 (ADC0) connected to Potentiometer pin
#define LED_PIN 4 // ESP32 pin GIOP21 connected to LED's pin
#define ANALOG_THRESHOLD 20
void setup() {
Serial.begin(115200);
pinMode(LED_PIN, OUTPUT); // set ESP32 pin to output mode
}
void loop() {
int analogValue = analogRead(POTENTIOMETER_PIN); // read the input on analog pin
Serial.println(analogValue);
delay(500);
if (analogValue > ANALOG_THRESHOLD) {
digitalWrite(LED_PIN, HIGH); // turn on LED
Serial.println("turn on LED"); }
else {
digitalWrite(LED_PIN, LOW); // turn off LED
Serial.println("turn off LED");
}
}
/*********
Rui Santos
Complete project details at https://randomnerdtutorials.com
*********/
void setup() {
Serial.begin(115200);
delay(1000);
IPAddress IP = WiFi.softAPIP();
Serial.print("AP IP address: ");
Serial.println(IP);
server.begin();
}
void loop(){
WiFiClient client = server.available(); // Listen for incoming clients
// Reading potentiometer value
potValue = analogRead(potPin);
Serial.println(potValue);
delay(500);
int LM35_Raw_Sensor1 = 0;
float LM35_TempC_Sensor1 = 0.0;
float LM35_TempF_Sensor1 = 0.0;
float Voltage = 0.0;
void setup() {
Serial.begin(115200);
delay(1000);
IPAddress IP = WiFi.softAPIP();
Serial.print("AP IP address: ");
Serial.println(IP);
server.begin();
}
void loop(){
WiFiClient client = server.available(); // Listen for incoming clients
// Reading potentiometer value
potValue = analogRead(potPin);
Serial.print("Potensiometru = ");
Serial.println(potValue);
delay(500);
//////////////////////////////////////////////////////////Temperatura/////////////////////////////
// Read LM35_Sensor1 ADC Pin
LM35_Raw_Sensor1 = analogRead(LM35_Sensor1);
// Calibrate ADC & Get Voltage (in mV)
Voltage = readADC_Cal(LM35_Raw_Sensor1);
// TempC = Voltage(mV) / 10
LM35_TempC_Sensor1 = Voltage / 10;
LM35_TempF_Sensor1 =(LM35_TempC_Sensor1 * 1.8) + 32;
delay(100);
////////////////////////////////////////////////////////////PRINTARE///////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////POTENTIOMETRU//////////////////
client.println("<body><h1>Potentiometru</h1>");
client.println("Potentiometru=");
client.println(potValue);
delay(1000);
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Temperatura/////////
client.print("Temperatura = ");
client.print(LM35_TempC_Sensor1);
client.print(" grade Celsius ");
}
uint32_t readADC_Cal(int ADC_Raw)
{
esp_adc_cal_characteristics_t adc_chars;
Codul în Arduino:
/*********
Rui Santos
*********/
#include <WiFi.h>
#include <Servo.h>
WiFiServer server(80);
String header;
int pos1 = 0;
int pos2 = 0;
// Current time
void setup() {
Serial.begin(115200);
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
delay(500);
Serial.print(".");
Serial.println("");
Serial.println("WiFi connected.");
Serial.println(WiFi.localIP());
server.begin();
void loop(){
currentTime = millis();
previousTime = currentTime;
String currentLine = ""; // make a String to hold incoming data from the client
while (client.connected() && currentTime - previousTime <= timeoutTime) { // loop while the client's connected
currentTime = millis();
header += c;
// if the current line is blank, you got two newline characters in a row.
if (currentLine.length() == 0) {
// HTTP headers always start with a response code (e.g. HTTP/1.1 200 OK)
// and a content-type so the client knows what's coming, then a blank line:
client.println("Content-type:text/html");
client.println("Connection: close");
client.println();
client.println("<!DOCTYPE html><html>");
// Feel free to change the background-color and font-size attributes to fit your preferences
client.println("<script src=\"https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js\"></script>");
// Web Page
client.println("</body></html>");
if(header.indexOf("GET /?value=")>=0) {
pos1 = header.indexOf('=');
pos2 = header.indexOf('&');
myservo.write(valueString.toInt());
Serial.println(valueString);
client.println();
break;
currentLine = "";
} else if (c != '\r') { // if you got anything else but a carriage return character,
header = "";
client.stop();
Serial.println("Client disconnected.");
Serial.println("");