Posted on

Termometru de precizie cu LM335

Termometru de precizie cu Arduino si LM335

Rezoluția acestui termometru este de 0,4°C (0,4 K).

Acest proiect Arduino arată cum să construiți un termometru digital folosind senzorul de temperatură analogic LM335, unde valorile temperaturii sunt imprimate pe ecranul LCD 1602 (în grade Celsius și Kelvin).

Senzorul LM335 este un dispozitiv cu 3 pini care convertește temperatura în tensiune analogică. Acest senzor necesită un modul ADC (Analog-to-Digital Converter) pentru a converti tensiunea analogică în date digitale.

Senzorul de temperatură LM335 are următoarele caracteristici (din fișa tehnică):

Calibrat direct la scara de temperatură Kelvin
1°C Precizie inițială disponibilă
Funcționează de la 400 μA la 5 mA
Impedanță dinamică mai mică de 1-Ω
Ușor de calibrat
Gamă largă de temperatură de funcționare pana la 200°C

LM335 are o tensiune breakdown direct proporțională cu temperatura absolută la 10 mV/°K.
Dacă tensiunea de ieșire a LM335, de exemplu, este 3,03 (3030 mV),
înseamnă că temperatura este: 303 Kelvin = 30 °Celsius.

Necesar componente:
Placa Arduino
LM335 Senzor de temperatură
Display LCD 16×2
LM4040 – 4,1 V (referință de tensiune de ieșire de 4,096 V)
Rezistor variabil de 10 k ohmi (sau potențiometru)
Rezistor de 2,2k ohmi
Rezistor de 1k ohm
Breadboard
Fire jumper

Senzorul LM335 are 3 pini (de la stânga la dreapta):
Pinul 1 pentru calibrare, neutilizat în acest exemplu,
Pin 2: ieșire,
Pin 3: GND

Pinul de ieșire al senzorului LM335 este conectat la pinul analogic Arduino 5 (A5).
Un rezistor este conectat între ieșirea senzorului LM335 și 5V,
am ales valoarea de 2,2k ohmi deoarece așa cum este scris în fișa de date pentru o acuratețe optimă,
curentul prin senzorul LM335 ar trebui să fie de 1mA.
De exemplu, dacă temperatura = 27 ° C, ieșirea va fi de 3,00 V
și să presupunem că tensiunea de alimentare este exact 5,00 V,
ceea ce înseamnă că curentul curge prin senzor este ( 5 – 3)/2,2 = 0,90 mA,
ceea ce este suficient de bun.
De asemenea, valoarea 2.2k este o valoare standard și bine folosită.

LCD 16×2 (2 rânduri și 16 coloane) este utilizat
pentru a afișa valorile temperaturii în grade Celsius și grade Fahrenheit unde:
RS —> Pinul digital Arduino 2
E —> Pinul digital Arduino 3
D4 —> Pinul digital Arduino 4
D5 —> Pinul digital Arduino 5
D6 —> Pinul digital Arduino 6
D7 —> Pinul digital Arduino 7
VSS, RW, D0, D1, D2, D3 și K sunt conectate la Arduino GND,
VEE o rezistență variabilă (sau potențiometru) de 10 k ohmi,
VDD la Arduino 5V și A la Arduino 5V prin rezistor de 330 ohmi.

Arduino code:

Posted on

Robot de urmărire linie folosind Arduino și modulul L298N pentru incepători

Robot de urmărire linie folosind Arduino și modulul L298N
Line Follower Robot Using Arduino And L298N Module

Robotul de urmărire a liniilor este un vehicul automat care urmează o linie vizuală neagră sau o cale pe o suprafață.
Folosește o linie neagră pe o suprafață albă sau o linie albă pe o suprafață neagră.
Vom învăța cum să facem un robot de urmărire a liniilor folosind Arduino și modulul de driver de motor L298N.

rfl

CUM FUNCȚIONEAZĂ ROBOTUL „LINE FOLLOWER” ?

Conceptul de robot de urmărire a liniilor este legat de transmiterea și recepția luminii. Culoarea albă reflectă toată lumina care cade pe ea, în timp ce culoarea neagră absoarbe toată lumina.
În acest robot de urmărire a liniilor, am folosit transmițătoare și receptoare IR.
Când lumina IR cade pe o suprafață albă, este reflectată înapoi către receptorul IR, generând unele modificări de tensiune care sunt analizate de Arduino.
Când lumina IR cade pe o suprafață neagră, este absorbită de suprafața neagră și nicio rază nu este reflectată înapoi, astfel încât receptorul IR nu primește nicio rază.
În acest proiect, când senzorul IR detectează o suprafață albă, starea de intrare Arduino devine HIGH, iar când detectează o linie neagră, devine LOW.
Pe baza acestor intrări, un Arduino Uno oferă ieșirea adecvată pentru a controla urmăritorul de linie.

SCHEMA CIRCUIT ROBOT LINIE FOLLER
LINE FOLLOWER ROBOT CIRCUIT DIAGRAM

Line-Follower-Circuit-Diagram

Urmați acest tabel pentru a vă face conexiunile.

L298N driver Pins –> Arduino Pins
ENA –> jumper
IN1 –> D9
IN2 –> D6
IN3 –> D5
IN4 –> D3
ENB –> jumper

Infrared Sensor pins –> Arduino pins
Vcc –> 5v
GND –> GND
Right IR sensor OUT –> D13
Left IR sensor OUT –> D12

Pentru modulul de driver de motor L298N, motoarele sunt conectate la bornele de motor ale modulului de driver de motor.
Driverul motorului are alte 3 borne, în care unul este de 12 volți conectat la baterie.
Terminalul GND este conectat la borna negativă a bateriei și, de asemenea, este conectat la pinul GND al plăcii Arduino
Si 5v este conectat la 5v a plăcii Arduino.

COD ARDUINO PENTRU ROBOT LINE FOLLOWER
ARDUINO CODE FOR LINE FOLLOWER ROBOT

// –––––––––––
// roboromania.ro
#define MOTOR_SPEED 60

int mot1=9;
int mot2=6;
int mot3=5;
int mot4=3;
int left=13;
int right=12;
int Left=0;
int Right=0;

void LEFT (void);
void RIGHT (void);
void STOP (void);

void setup() {
pinMode(mot1,OUTPUT);
pinMode(mot2,OUTPUT);
pinMode(mot3,OUTPUT);
pinMode(mot4,OUTPUT);
pinMode(left,INPUT);
pinMode(right,INPUT);
digitalWrite(left,HIGH);
digitalWrite(right,HIGH);
}

void loop() {
analogWrite(mot1,MOTOR_SPEED);
analogWrite(mot2,0);
analogWrite(mot3,MOTOR_SPEED);
analogWrite(mot4,0);
while(1) {
Left=digitalRead(left);
Right=digitalRead(right);
if((Left==0 && Right==1)==1)
LEFT();
else if((Right==0 && Left==1)==1)
RIGHT();
}
}

void LEFT (void) {
analogWrite(mot3,0);
analogWrite(mot4,30);
while(Left==0) {
Left=digitalRead(left);
Right=digitalRead(right);
if(Right==0) {
int lprev=Left;
int rprev=Right;
STOP();
while(((lprev==Left)&&(rprev==Right))==1) {
Left=digitalRead(left);
Right=digitalRead(right);
}
}
analogWrite(mot1,MOTOR_SPEED);
analogWrite(mot2,0);
}
analogWrite(mot3,MOTOR_SPEED);
analogWrite(mot4,0);
}

void RIGHT (void) {
analogWrite(mot1,0);
analogWrite(mot2,30);
while(Right==0) {
Left=digitalRead(left);
Right=digitalRead(right);
if(Left==0) {
int lprev=Left;
int rprev=Right;
STOP();
while(((lprev==Left)&&(rprev==Right))==1) {
Left=digitalRead(left);
Right=digitalRead(right);
}
}
analogWrite(mot3,MOTOR_SPEED);
analogWrite(mot4,0);
}
analogWrite(mot1,MOTOR_SPEED);
analogWrite(mot2,0);
}

void STOP (void) {
analogWrite(mot1,0);
analogWrite(mot2,0);
analogWrite(mot3,0);
analogWrite(mot4,0);
}
//––––––––––

YouTube

Succes!

Posted on

Sistem de urmărire solară cu două axe

Sistem de urmărire solară cu două axe

Tracker-ul solar cu două axe este unul dintre cele mai căutate proiecte.
Si este usor de realizat.

510775989001tracker2tracker3pg_

Cum functioneazã?
Când lumina soarelui apare pe urmăritorul solar începe să calculeze și să compare din ce direcție provine intensitatea maximă a soarelui.
Intensitatea maximă a luminii direct proporțională cu puterea maximă convertită.
Folosim LDR, care este cunoscut sub numele de fotorezistență, atunci când soarele luminează LDR, valoarea rezistorului LDR va scădea. Folosim două servomotoare care ajută la deplasarea panoului pe doua direcții.
Arduino citeste valorile rezistențelor LDR și acționează servomotoarele in unghiurile potrivite pentru o luminozitate maximă.

Componente:
• Arduino Uno
• 4 LDR
• 4- 10K Ohm Resistor
• 2- Servo Motor
• Solar Panel
• Jumper wire
• Breadboard

Solar-4

Cod:

// –––––––-

// roboromania.ro

#include <Servo.h>
Servo horizontal; // horizontal servo
int servoh = 180;
int servohLimitHigh = 175;
int servohLimitLow = 5;
// 65 degrees MAX

Servo vertical; // vertical servo
int servov = 45;
int servovLimitHigh = 100;
int servovLimitLow = 1;

// LDR pin connections
// name = analogpin;
int ldrlt = A0; //LDR top left – BOTTOM LEFT <— BDG
int ldrrt = A3; //LDR top rigt – BOTTOM RIGHT
int ldrld = A1; //LDR down left – TOP LEFT
int ldrrd = A2; //ldr down rigt – TOP RIGHT

void setup(){
horizontal.attach(9);
vertical.attach(10);
horizontal.write(180);
vertical.write(45);
delay(2500);
}
void loop() {
int lt = analogRead(ldrlt); // top left
int rt = analogRead(ldrrt); // top right
int ld = analogRead(ldrld); // down left
int rd = analogRead(ldrrd); // down right
int dtime = 10; int tol = 90; // dtime=diffirence time, tol=toleransi
int avt = (lt + rt) / 2; // average value top
int avd = (ld + rd) / 2; // average value down
int avl = (lt + ld) / 2; // average value left
int avr = (rt + rd) / 2; // average value right
int dvert = avt – avd; // check the diffirence of up and down
int dhoriz = avl – avr;// check the diffirence og left and rigt

if (-1*tol > dvert || dvert > tol)
{
if (avt > avd)
{
servov = ++servov;
if (servov > servovLimitHigh)
{servov = servovLimitHigh;}
}
else if (avt < avd)
{servov= –servov;
if (servov < servovLimitLow)
{ servov = servovLimitLow;}
}
vertical.write(servov);
}
if (-1*tol > dhoriz || dhoriz > tol) // check if the diffirence is in the tolerance else change horizontal angle
{
if (avl > avr)
{
servoh = –servoh;
if (servoh < servohLimitLow)
{
servoh = servohLimitLow;
}
}
else if (avl < avr)
{
servoh = ++servoh;
if (servoh > servohLimitHigh)
{
servoh = servohLimitHigh;
}
}
else if (avl = avr)
{
delay(5000);
}
horizontal.write(servoh);
}

delay(dtime);

}

//–––––––––

 

Succes!

Posted on

Verificarea calității aerului cu Arduino Uno si senzorul MQ-135

Verificarea calității aerului cu Arduino Uno si senzorul MQ-135

mq-135-1

mq-135-4

mq-135-2

Verificați calitatea aerului cu Arduino Uno si modulul detector de gaze pentru calitatea aerului MQ-135.

Red=5V

Green= Data (A0)

Black= Ground

Un cod simplu de exemplu :

//––––
int airquality = 0;
void setup()
{
Serial.begin(9600);
}
void loop(){
int sensorValue = analogRead(A0);
Serial.print(„Air Quality = „);
Serial.print(sensorValue);

Serial.print(„*PPM”);
Serial.println();
delay(1000);
}
//––––

mq-135-3

emo-avatar

Atenție la declararea pinilor.

Dacă copiați codul atenție la fonturi, unele trebuiesc rescrise.

Posted on

Beating heart Arduino MAX7219 8×8 LED matrix

Beating heart Arduino MAX7219 8×8 LED matrix

Acesta este un proiect foarte simplu pentru a afișa o inimă care bate cu o placă Arduino și o matrice LED de 8×8 cu driver MAX7219

Matrix Arduino MAX7219

Cablarea este foarte simplă :

PIN MAX7219 VCC> Arduino pin 5V

PIN MAX7219 GND> Arduino pin GND

PIN MAX7219 DIN> Arduino pin 2

PIN MAX7219 CS> Arduino pin 3

PIN MAX7219 CLOCK> Arduino pin 4

Sketch-ul Arduino nu folosește nicio bibliotecă, deci este bine să înțelegeți cum să lucrați direct cu cipul MAX7219 prin registre (through registers).

Cod :

//–––––––––––––-

int ANIMDELAY = 100;  // animation delay, deafault value is 100
int INTENSITYMIN = 0; // minimum brightness, valid range [0,15]
int INTENSITYMAX = 8; // maximum brightness, valid range [0,15]

int DIN_PIN = 2;      // data in pin
int CS_PIN = 3;       // load (CS) pin
int CLK_PIN = 4;      // clock pin

// MAX7219 registers
byte MAXREG_DECODEMODE = 0x09;
byte MAXREG_INTENSITY  = 0x0a;
byte MAXREG_SCANLIMIT  = 0x0b;
byte MAXREG_SHUTDOWN   = 0x0c;
byte MAXREG_DISPTEST   = 0x0f;

const unsigned char heart[] =
{
  B01100110,
  B11111111,
  B11111111,
  B11111111,
  B01111110,
  B00111100,
  B00011000,
  B00000000
};



void setup ()
{
  pinMode(DIN_PIN, OUTPUT);
  pinMode(CLK_PIN, OUTPUT);
  pinMode(CS_PIN, OUTPUT);

  // initialization of the MAX7219
  setRegistry(MAXREG_SCANLIMIT, 0x07);
  setRegistry(MAXREG_DECODEMODE, 0x00);  // using an led matrix (not digits)
  setRegistry(MAXREG_SHUTDOWN, 0x01);    // not in shutdown mode
  setRegistry(MAXREG_DISPTEST, 0x00);    // no display test
  setRegistry(MAXREG_INTENSITY, 0x0f & INTENSITYMIN);

  // draw hearth
  setRegistry(1, heart[0]);
  setRegistry(2, heart[1]);
  setRegistry(3, heart[2]);
  setRegistry(4, heart[3]);
  setRegistry(5, heart[4]);
  setRegistry(6, heart[5]);
  setRegistry(7, heart[6]);
  setRegistry(8, heart[7]);
}


void loop ()
{
  // second beat
  setRegistry(MAXREG_INTENSITY, 0x0f & INTENSITYMAX);
  delay(ANIMDELAY);
  
  // switch off
  setRegistry(MAXREG_INTENSITY, 0x0f & INTENSITYMIN);
  delay(ANIMDELAY);
  
  // second beat
  setRegistry(MAXREG_INTENSITY, 0x0f & INTENSITYMAX);
  delay(ANIMDELAY);
  
  // switch off
  setRegistry(MAXREG_INTENSITY, 0x0f & INTENSITYMIN);
  delay(ANIMDELAY*6);
}


void setRegistry(byte reg, byte value)
{
  digitalWrite(CS_PIN, LOW);

  putByte(reg);   // specify register
  putByte(value); // send data

  digitalWrite(CS_PIN, LOW);
  digitalWrite(CS_PIN, HIGH);
}

void putByte(byte data)
{
  byte i = 8;
  byte mask;
  while (i > 0)
  {
    mask = 0x01 << (i - 1);        // get bitmask
    digitalWrite( CLK_PIN, LOW);   // tick
    if (data & mask)               // choose bit
      digitalWrite(DIN_PIN, HIGH); // send 1
    else
      digitalWrite(DIN_PIN, LOW);  // send 0
    digitalWrite(CLK_PIN, HIGH);   // tock
    --i;                           // move to lesser bit
  }
}
//---------------------------------

emo-avataris work bro...
Posted on

Arduino Remote Bluetooth SPP-C on/off LED

Arduino Remote Bluetooth SPP-C on/off LED

Spp-C-Bluetooth-Slave-Module-roboromania-fat

Spp-C-Bluetooth-to-Serial-Arduino-remote

Avem nevoie de :
o placă de dezvoltare tip Arduino UNO (sau oricare)
un modul Bluetooth SPP-C
cabluri Dupont

Cel mai simplu cod : (atenție când copiați codul ar putea sa apară unele erori de la fonturi)

//roboromania.ro
#include <SoftwareSerial.h>
SoftwareSerial mySerial(8,7); // 8 –> pin TX, 7 –> pin RX
#define LED 13
void setup()
{
Serial.begin(9600);
mySerial.begin(9600);
pinMode(LED, OUTPUT);
}
void loop()
{
if (mySerial.available()) {
int inByte = mySerial.read();
Serial.println(inByte);
if(inByte == ‘1’){
digitalWrite(LED, LOW);
delay(500);
}
if(inByte == ‘2’){
digitalWrite(LED, HIGH);
delay(500);
}
}
}

Atenție la declararea pinilor.

Acum mai trebuiește instalată și configurată aplicația pentru telefon din Google Play :

Arduino bluetooth controller(cu iconita din figura)

ikon

Nume : JDY-31-SPP

Pin : 1234

Setați butoanele cu caracterele alese (in exemplu  ‘1’  și  ‘2’)

Se aprinde și se stinge LED(13) de pe placa Arduino.

Posted on

Work from home >> fake mouse movement keep you free from work

Work from home >> fake mouse movement keep you free from work

Cei care lucrează de acasă și trebuie să rămână conectați.   Those who work from home and need to stay connected.

Nimic mai simplu.  Nothing easier.

Placă de dezvoltare Arduino Leonardo în USB-ul PC sau laptop

Hai să vă dau și un exemplu de cod, deși e prea simplu.  Let me give you an example of code, although it’s too simple

#include „Mouse.h”

void setup() {
Mouse.begin();
}

void loop() {
Mouse.move(random(-10,10), random(-10,10), 0);
delay(1000);
}

 

Gata hai la cumparaturi …..

UNO (2)

Posted on

Acționarea unei lumini în curte cu Arduino și senzorul PIR cu timp variabil pe ON

Acționarea unei lumini în curte cu Arduino și senzorul PIR cu timp variabil pe ON emo cu ciocan

Arduino-pir-releu-bec

Necesar de piese :

Placa de dezvoltare Arduino (oricare),

Senzor PIR

Modul releu

Cod :

int Relay = 9;
int SensorPir = 8;
int timeDelay = 10; // timpul in sec.

void setup(){

pinMode(Relay, OUTPUT);
pinMode(SensorPir, INPUT);
}

void loop(){

if (digitalRead(SensorPir) == HIGH){
digitalWrite(Relay, HIGH);
delay(timeDelay*1000L);
} else {
digitalWrite(Relay,LOW);
}
}

 

emo-avatar

Posted on

Robot 4WD Roboromania autonom ocolire obstacole cu senzor cu ultrasunete

Robot 4WD Roboromania autonom ocolire obstacole cu senzor cu ultrasunete

Aveti nevoie de :
o Placă de dezvoltare tip Arduino UNO (oricare)
un Modul driver motoare L293N
un Senzor cu ultrasunete HCSR04
un Kit șasiu 4WD
cabluri Dupont

kit-4wd-ultra-robo

Cum asamblăm șasiul : https://www.youtube.com/watch?v=uW8YVcBjPGU

Cum instalam o platforma Arduino UNO :

https://roboromania.ro/manuale/Arduino-1-Starter-Kit-manual-roboromania.pdf

sau

https://roboromania.ro/arduino_books/Introduction-Arduino-2013.pdf

 

Cel mai simplu cod :

//––––––––––––––

// Robot 2WD Roboromania autonom ocolire obstacole
// roboromania.ro pentru ID Arduino.1.6.x atentie sa aveti „libraries” – > „NewPing”

// ––––––––––––––-

// Robot 2WD Roboromania autonom ocolire obstacole – versiunea corectata (si testata) 2018.02.03
// roboromania.ro

#include <NewPing.h>

#define TRIG_PIN 8
#define ECHO_PIN 7
#define MAX_DISTANCE 400
#define COLL_DIST 20 // distanta de coliziune la care robot stop si inapoi este de : 20cm
NewPing sonar(TRIG_PIN, ECHO_PIN, MAX_DISTANCE);

// L298n module
// 1(+)inainte dreapta = DrFr
// 2(+)inapoi dreapta = DrSp
// 3(+)inainte stanga = StFr
// 4(+)inapoi stanga = StSp

int DrFr = 3;
int DrSp = 2;
int StFr = 4;
int StSp = 5;

void setup() {
Serial.begin(9600);
pinMode(DrFr,OUTPUT);
pinMode(StFr,OUTPUT);
pinMode(DrSp,OUTPUT);
pinMode(StSp,OUTPUT);
digitalWrite(DrFr,LOW);
digitalWrite(StFr,LOW);
digitalWrite(DrSp,LOW);
digitalWrite(StSp,LOW);
}

int scan() {
return (sonar.ping() / US_ROUNDTRIP_CM); //masurare distanta in cm
}

void loop() {
int Dist = scan(); // masuram distanta curenta
// Serial.println(Dist);
if (( Dist > 0 ) || ( Dist < COLL_DIST )) { // daca distanta curenta < decit distanta de coliziune
moveStop();
moveBackward();
delay(500);
turnRight();
delay(300);
} else {
moveForward();
}
}

void moveStop() {
digitalWrite(DrFr,LOW);
digitalWrite(StFr,LOW);
digitalWrite(DrSp,LOW);
digitalWrite(StSp,LOW);
}

void moveForward() {
digitalWrite(DrFr,HIGH);
digitalWrite(StFr,HIGH);
digitalWrite(DrSp,LOW);
digitalWrite(StSp,LOW);
}

void moveBackward() {
digitalWrite(DrFr,LOW);
digitalWrite(StFr,LOW);
digitalWrite(DrSp,HIGH);
digitalWrite(StSp,HIGH);
}

void turnRight() {
digitalWrite(DrFr,LOW);
digitalWrite(StFr,HIGH);
digitalWrite(DrSp,HIGH);
digitalWrite(StSp,LOW);
}

void turnLeft() {
digitalWrite(DrFr,HIGH);
digitalWrite(StFr,LOW);
digitalWrite(DrSp,LOW);
digitalWrite(StSp,HIGH);
}

 

//––––––––––-

Alt exemplu de cod :

https://roboromania.ro/2018/02/04/robot-2wd-roboromania-autonom-ocolire-obstacole-realizat-de-stefan-ziegler-din-arad/

Posted on

Lua ESP8266MOD Server DHT 11(22)

Lua ESP8266MOD Server DHT 11(22)

pagina

Necesar:

  1. Modul Lua ESP8266MOD Wireless
  2. Senzor temperatură şi umiditate DHT11

  3. Breadboard 420

  4. Cabluri Dupont (10 bucaţi) tată-tată

ESP8266MOD DHT11/DHT22 Temperature and Humidity Web Server

esp8266mod-dht

În acest proiect, veți crea un server web independent cu un ESP8266 care afișează temperatura și umiditatea cu un senzor DHT11 sau DHT22 folosind Arduino IDE (rezistența din poză nu e neapărat necesară). Serverul web pe care îl veți construi poate fi accesat cu orice dispozitiv care are un browser în rețeaua dvs. locală.

Installing the DHT Library for ESP8266

1. Deschideți IDE-ul Arduino și accesați Sketch > Include Library > Manage Libraries. Managerul bibliotecii ar trebui să se deschidă.

2. Căutați „DHT” în caseta Căutare și instalați biblioteca DHT de la Adafruit.

adafruit_dht_library

3. După instalarea bibliotecii DHT de la Adafruit, tastați „Adafruit Unified Sensor” în caseta de căutare. Derulați până la capăt pentru a găsi biblioteca și a o instala.

adafruit_unified_sensor_library

După instalarea bibliotecilor, restart ID-ul Arduino.

Instalează :

Installing the ESPAsyncWebServer library:  https://github.com/me-no-dev/ESPAsyncWebServer

Installing the ESPAsync TCP Library:  https://github.com/me-no-dev/ESPAsyncTCP

Install the ESP8266 Board in Arduino IDE

4-install-esp8266-board

1-install-esp8266-board-add-on-in-arduino-ide-search-esp8266

2-esp8266-board-add-on-in-arduino-ide-installed

3-install-esp8266-board-add-on-in-arduino-ide-select-board

Deschideți ID-ul Arduino și copiați următorul cod :

// ROBOROMANIA LUA ESP8266MOD DHT
#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <Hash.h>
#include <ESPAsyncTCP.h>
#include <ESPAsyncWebServer.h>
#include <Adafruit_Sensor.h>
#include <DHT.h>

// completează cu nume și parolă locală Wifi network
const char* ssid = „DIGI-24”;
const char* password = „robo”;

#define DHTPIN D1 // Digital pin D1 connected to the DHT sensor

// tip senzor
#define DHTTYPE DHT11 // DHT 11
//#define DHTTYPE DHT22 // DHT 22 (AM2302)
//#define DHTTYPE DHT21 // DHT 21 (AM2301)

DHT dht(DHTPIN, DHTTYPE);

float t = 0.0;
float h = 0.0;

// Create AsyncWebServer object on port 80
AsyncWebServer server(80);
unsigned long previousMillis = 0; // will store last time DHT was updated

// Updates DHT readings every 10 seconds
const long interval = 10000;

const char index_html[] PROGMEM = R”rawliteral(
<!DOCTYPE HTML><html>
<head>
<meta name=”viewport” content=”width=device-width, initial-scale=1″>
<link rel=”stylesheet” href=”https://use.fontawesome.com/releases/v5.7.2/css/all.css” integrity=”sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr” crossorigin=”anonymous”>
<style>
html {
font-family: Arial;
display: inline-block;
margin: 0px auto;
text-align: center;
}
h2 { font-size: 2.0rem; }
p { font-size: 2.0rem; }
.units { font-size: 1.2rem; }
.dht-labels{
font-size: 1.5rem;
vertical-align:middle;
padding-bottom: 15px;
}
</style>
</head>
<body>
<h2>ESP8266 DHT SERVER ROBOROMANIA roboromania.ro</h2>
<p>
<i class=”fas fa-thermometer-half” style=”color:#059e8a;”></i>
<span class=”dht-labels”>Temperature</span>
<span id=”temperature”>%TEMPERATURE%</span>
<sup class=”units”>&degC</sup>
</p>
<p>
<i class=”fas fa-tint” style=”color:#00add6;”></i>
<span class=”dht-labels”>Humidity</span>
<span id=”humidity”>%HUMIDITY%</span>
<sup class=”units”>%</sup>
</p>

<p style=”font-size:80px”>&#128540;</p>
</body>
<script>
setInterval(function ( ) {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById(„temperature”).innerHTML = this.responseText;
}
};
xhttp.open(„GET”, „/temperature”, true);
xhttp.send();
}, 10000 ) ;

setInterval(function ( ) {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById(„humidity”).innerHTML = this.responseText;
}
};
xhttp.open(„GET”, „/humidity”, true);
xhttp.send();
}, 10000 ) ;
</script>
</html>)rawliteral”;

// Replaces placeholder with DHT values
String processor(const String& var){
//Serial.println(var);
if(var == „TEMPERATURE”){
return String(t);
}
else if(var == „HUMIDITY”){
return String(h);
}
return String();
}

void setup(){

Serial.begin(115200);
dht.begin();

// Connect to Wi-Fi
WiFi.begin(ssid, password);
Serial.println(„Connecting to WiFi”);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println(„.”);
}

// Print ESP8266 Local IP Address
Serial.println(WiFi.localIP());

// Route for root / web page
server.on(„/”, HTTP_GET, [](AsyncWebServerRequest *request){
request->send_P(200, „text/html”, index_html, processor);
});
server.on(„/temperature”, HTTP_GET, [](AsyncWebServerRequest *request){
request->send_P(200, „text/plain”, String(t).c_str());
});
server.on(„/humidity”, HTTP_GET, [](AsyncWebServerRequest *request){
request->send_P(200, „text/plain”, String(h).c_str());
});

// Start server
server.begin();
}

void loop(){
unsigned long currentMillis = millis();
if (currentMillis – previousMillis >= interval) {
// save the last time you updated the DHT values
previousMillis = currentMillis;
// Read temperature as Celsius (the default)
float newT = dht.readTemperature();
// Read temperature as Fahrenheit (isFahrenheit = true)
//float newT = dht.readTemperature(true);
// if temperature read failed, don’t change t value
if (isnan(newT)) {
Serial.println(„Failed to read from DHT sensor!”);
}
else {
t = newT;
Serial.println(t);
}
// Read Humidity
float newH = dht.readHumidity();
// if humidity read failed, don’t change h value
if (isnan(newH)) {
Serial.println(„Failed to read from DHT sensor!”);
}
else {
h = newH;
Serial.println(h);
}
}
}

//––––––––––––-

Atenție la declararea pinilor. Dacă copiați codul atenție la fonturi.

Pe serial veți afla IP-ul dat de server și dacă senzorul e ok.

serial

Serverul web pe care îl veți construi poate fi accesat cu orice dispozitiv care are un browser în rețeaua dvs. locală.

pagina

web-server-labeled

Succes!