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!

Posted on

Mini cântar Arduino și senzorul de greutate de 1kg

Mini cântar Arduino și senzorul de greutate de 1kg

mini-cantar

Arduino Code :
Atenție la fonturi dacă copiați codul

//-----------------
#include "HX711.h"
const int LOADCELL_DOUT_PIN = 2;
const int LOADCELL_SCK_PIN = 3;
HX711 scale;

#include <LiquidCrystal.h>
const int rs = A0, en = A1, d4 = A2, d5 = A3, d6 = A4, d7 = A5;
LiquidCrystal lcd(A0, A1, A2, A3, A4 ,A5);

void setup()
{
  lcd.begin(16, 2);
  Serial.begin(9600);
  delay(100);

  Serial.println("Weight ");
  Serial.println("Measuring...");
  scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);
  scale.set_scale(2280.f);
  scale.tare();
  
  lcd.print("Insert Weight");
  delay(100);
  lcd.clear();
 }

void loop()
{
  Serial.print("one reading:\t");
  Serial.print(scale.get_units(), 1);
  Serial.print("\t| average:\t");
  Serial.println(scale.get_units(10), 1);
  scale.power_down();      
  delay(100);
  scale.power_up();

  lcd.print("Weight :");
  delay(100);
  lcd.clear();
  delay(1);
  
  lcd.print(scale.get_units());    
  lcd.print("g");
  delay(100);
  lcd.clear();
  delay(1);
}
//-----------------
Posted on

Home Automation Arduino Project – Mici automatizări acasă

Home Automation Arduino Project

Mici automatizări acasă

Componente:

Arduino UNO
Modul Bluetooth HC-05
Modul 4 relee Arduino la 5v
Fire Dupont

a1

a2

Codul:

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

String voice;

#define relay1 2 //Connect relay1 to pin 2

#define relay2 3 //Connect relay2 to pin 3

#define relay3 7 //Connect relay1 to pin 2

#define relay4 8 //Connect relay2 to pin 3

void setup()

{

Serial.begin(9600); //Set rate for communicating with phone

pinMode(relay1, OUTPUT); //Set relay1 as an output

pinMode(relay2, OUTPUT);

pinMode(relay3, OUTPUT); //Set relay2 as an output

pinMode(relay4, OUTPUT);

digitalWrite(relay1, LOW); //Switch relay1 off

digitalWrite(relay2, LOW); //Swtich relay2 off

digitalWrite(relay3, LOW); //Switch relay1 off

digitalWrite(relay4, LOW); //Swtich relay2 off

}

void loop()

{

while(Serial.available()) //Check if there are available bytes to read

{

delay(10); //Delay to make it stable

char c = Serial.read(); //Conduct a serial read

if (c == ‘#’){

break; //Stop the loop once # is detected after a word

}

voice += c; //Means voice = voice + c

}

if (voice.length() >0)

{

Serial.println(voice);

if(voice == „*switch on”){

switchon();

}

else if(voice == „*switch off”){

switchoff();

}

else if(voice == „*bulb1 on”){

digitalWrite(relay1, LOW);

}

else if(voice == „*bulb1 off”){

digitalWrite(relay1, HIGH);

}

else if(voice == „*bulb2 on”){

digitalWrite(relay2, LOW);

}

else if(voice == „*bulb2 off”){

digitalWrite(relay2, HIGH);

}

else if(voice == „*fan1 on”){

digitalWrite(relay3, LOW);

}

else if(voice == „*fan1 off”){

digitalWrite(relay3, HIGH);

}

else if(voice == „*fan2 on”){

digitalWrite(relay4, LOW);

}

else if(voice == „*fan2 off”){

digitalWrite(relay4, HIGH);

}

voice=””;

}

}

void switchon() //Function for turning on relays

{

digitalWrite(relay1, LOW);

digitalWrite(relay2, LOW);

digitalWrite(relay3, LOW);

digitalWrite(relay4, LOW);

}

void switchoff() //Function for turning on relays

{

digitalWrite(relay1, HIGH);

digitalWrite(relay2, HIGH);

digitalWrite(relay3, HIGH);

digitalWrite(relay4, HIGH);

}

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

Pentru aplicația de telefon găsiți pe Google Play multe gratis, sau o puteți face simplu urmărind tutorialele de la :

App Diagram:

https://appinventor.mit.edu/

Succes!
Posted on

Controlul unui motor DC cu Arduino și 4 MOSFET

Controlul unui motor DC cu Arduino și 4 MOSFET

controlul-motordc-arduino-4mosfet-sch

Componente necesare :
4 MOSFET se alg in functie de curentul si tensiunea MOTORULUI DC
2 tranzistoare NPN (min 60v si 200mA)
2 tranzistoare PNP (min 60v si 200mA)
4 diode 100v 1A
4 rezistor 10k
4 rezistor 2k2

Descrierea funcționării :
In repaus pini sunt LOU
Când setați un pinul 1 HIGH cu microcontrolerul, tranzistorul Q7 NPN se comuta ON. Aceasta conectează baza tranzistorului Q5 de la GND la +12v astfel mosfeturile Q1 și Q4 conectează motorul la +12v și la GND. Pinul 2 HIGH conectează motorul la pozitiv și la GND în polaritatea opusă. Cele patru diode vă protejează tranzistorii împotriva supratensiunilor de tensiune care apar uneori atunci când un motor cu curent continuu este oprit brusc. Rezistențele de 10Kohm pun bazele tranzistoarelor la GND atunci când pinul de I/O trece pe LOU, iar rezistențele de 2200 ohm limitează curentul din pinii I/O pentru ai proteja.

controlul-motordc-arduino-4mosfet-activcontrolul-motordc-arduino-4mosfetmosfettranzistor