Publicat la data

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!

Publicat la data

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);
}
//-----------------
Publicat la data

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!
Publicat la data

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

Publicat la data

Cum se utilizează Arduino GSM Shield SIM900

Cum se utilizează Arduino GSM Shield SIM900

Arduino GSM Shield SIM900

61ghxz8k5-l-_sl1001_6105emsgh7l-_sl1001_

Modulul poate fi alimentat de una din două moduri:

1. Sursă de alimentare separată.
2. De la Arduino.

Puteți alege sursa de alimentare de la comutatorul DIP de lângă Antenă.

De obicei, modulul are priza proprie. Așadar, îl puteți alimenta de la o sursă de alimentare separată de aproximativ 12V / 1A sau 5V / 2A.

Aceasta pentru puterea maximă sau puterea maximă de intrare pentru modul la efectuarea apelurilor.

Dar, de asemenea, puteți alimenta modulul direct de la Arduino ca pe orice alt shield. Acest lucru va face ca Vcc și GND ale modulului să fie conectate la Vcc și GND de la placa Arduino, dar acesta alimentat la +5v și 2A (acest lucru nu prea este recomandat, deoarece acest modul necesită o putere mare în modul transmisie).

Notă : Când alimentați modulul de la o sursă de alimentare externă, Arduino nu poate fi alimentat din modul. Deci, aveți nevoie și de o sursă de alimentare separată pentru Arduino.

fnfy5s3jzd6t4nh-large

Puteți porni și opri modulul apăsând butonul POWER pentru o secundă.
Puteți face acest lucru cu ușurință de fiecare dată când trebuie să vă utilizați modulul.

Dar dacă doriți ca modulul dvs. să funcționeze mereu, trebuie să porniți automat modulul folosind funcția Software Power ON.

Aveți nevoie doar de trei lucruri pentru a utiliza această caracteristică:

1- Trebuie uniți pinii JP Jumper de pe modul. Acest jumper activează caracteristica din hardware-ul modulului.
2- Trebuie să conectați Arduino PIN 9 la PIN 9 pe modul și acest PIN va fi dedicat exclusiv acestui scop.
3- Trebuie să rulați fragmentul de cod care alimentează modulul. Acest cod simulează de obicei apăsarea butonului Power pentru o secundă.

digitalWrite(9,HIGH);

delay(1000);

digitalWrite(9,LOW);

delay(5000);

Puteți comunica și controla SIM900 GSM Module folosind comenzi AT folosind funcții Serial() sau SoftSerial().
Există atât de multe comenzi utile AT pe care le puteți utiliza în mod obișnuit.

De exemplu:

– Answer incoming call : GPRS.println(„ATA;”);

– Hang up a call : GPRS.println(„ATH;”);

Descărcați : SIM900_AT_Command_Manual_V1.03.pdf

Receiving a Call

void ListenToCall()
{
// Display any text that the
shield sends out on the serial monitor
if(GPRS.available() >0) {
// Get the character from the cellular serial port
// With an incomming call, a „RING” message is sent out
incoming_char=GPRS.read();
// Check if the shield is sending a „RING” message
if (incoming_char==’R’) {
delay(10);
Serial.print(incoming_char);
incoming_char=GPRS.read();
if (incoming_char ==’I’) {
delay(10);
Serial.print(incoming_char);
incoming_char=GPRS.read();
if (incoming_char==’N’) {
delay(10);
Serial.print(incoming_char);
incoming_char=GPRS.read();
if (incoming_char==’G’) {
delay(10);

Serial.print(incoming_char);
// If the message received from the shield is RING

Called = Called + 1 ;

delay (1000);

}
}
}
}
}
}

 

Making a Call

void Call_PhoneNumber()

{ GPRS.println(„ATD + xxxxxxxxxx;”);

delay(1000);

}

 

Alimentarea Arduino UNO

Așadar, puteți alimenta modulul GSM de la o sursă de alimentare de 12 V, dar trebuie să vă alimentați placa Arduino sau microcontrollerul principal.
În acest caz, este posibil să aveți nevoie de o alimentare suplimentară de 5V.
Asta înseamnă că poate furniza Arduino sau Microcontroller atât timp cât este conectat la sursa de alimentare.

YouTube : How to Use Arduino GSM Shield SIM900

sau

instructables.com

Publicat la data

Termometru UNO cu ceas și data – Sandu Ilie Cristian

Termometru cu ceas și data – Sandu Ilie Cristian

1      crystisandu3@gmail.com

Componente necesare :
    -I2C 16x2 LCD
    -DHT11 Temperature and humidity sensor
    -MH -Real-Time-Clock Modules - 2 
    -Arduino UNO

termometru-ceas-data-sandu-ilie-cristian-1
pin component -> pin placa
RTC
    VCC -> 5V
    GND -> GND
    CLK -> /6
    DAT -> 7
    RST -> 8

SENZOR TEMPERATURA

    DATA -> 4
    VCC -> 3,3V
    GND -> GND

DISPLAY

    GND -> GND
    VCC -> 5V
    SDA -> A4 
    SCL -> A5

//--------------------------------
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <dht.h>
#include <virtuabotixRTC.h>

dht DHT;
#define DHT11_PIN 4
int tmp;
int hum;

LiquidCrystal_I2C lcd (0x27, 2 ,1,0,4,5,6,7,3,POSITIVE);
virtuabotixRTC myRTC(6, 7, 8);

byte temp[] = {
 B00100,
 B01010,
 B01010,
 B01110,
 B01110,
 B11111,
 B11111,
 B01110
};

byte humi[] = {
 B00100,
 B00100,
 B01010,
 B01010,
 B10001,
 B10001,
 B10001,
 B01110
};


void setup(){
 lcd.begin(16,2);
 lcd.createChar(0, temp);
 lcd.createChar(1, humi);
 lcd.clear ();
 pinMode(4,INPUT);
 Serial.begin(9600);
}

void loop()
{
 int d = DHT.read11(DHT11_PIN);
 myRTC.updateTime();
 lcd.setCursor ( 0, 0 );// prima linie
 lcd.print(char(0));
 lcd.print(DHT.temperature);
 lcd.print("C");
 lcd.print(" ");
 lcd.print(char(1));
 lcd.print(DHT.humidity);
 lcd.print("%");
 lcd.setCursor ( 0, 1 );// a doua linie 
 lcd.print(myRTC.hours);
 lcd.print(":");
 lcd.print(myRTC.minutes);
 lcd.print(" ");
 lcd.print(myRTC.dayofmonth);
 lcd.print("/");
 lcd.print(myRTC.month);
 lcd.print("/");
 lcd.print(myRTC.year);
 
 delay(1000);
}
//--------------------------------
termometru-ceas-data-sandu-ilie-cristian-4
termometru-ceas-data-sandu-ilie-cristian-2
termometru-ceas-data-sandu-ilie-cristian-3
Publicat la data

Folosirea Motor Driver Shield L293D pentru Controlul Motoarelor DC, Stepper și Servo cu Arduino

Folosirea Motor Driver Shield L293D pentru Controlul Motoarelor DC, Stepper și servo cu Arduino

image1

Shieldul L293D Motor Driver & 74HC595 Shift Register

Poate comanda:
4 motoare cc bidirecționale cu selectare a vitezei pe 8 biți (0-255)
2 motoare pas cu pas (unipolare sau bipolare) interleaved
sau micro-stepping.
2 servomotoare

image2

L293D este un driver de motor H-Bridge dual-channel care poate comanda o pereche de motoare DC sau un motor pas cu pas.
Pentru că shieldul are două chipuri de L293D, aceasta înseamnă că poate comanda în mod individual până la patru motoare de curent continuu, ceea ce îl face ideal pentru construirea unei platforme robot cu patru roți. Poate livra până la 0,6A pe motor.
Are de asemenea, un registru de deplasare 74HC595 care extinde 4 pini digitali ai Arduino la cele 8 direcții de control ale celor două cipuri L293D.

Alimentarea

image3

Există trei feluri în care se pot alimenta motoarele prin intermediul shieldului.
O sursă de alimentare unică DC atât pentru Arduino cât și pentru motoare:
(dacă doriți să aveți o singură sursă de curent continuu atât pentru Arduino, cât și pentru motoare, conectați-o doar la mufa DC de pe arduino sau la blocul EXT_PWR cu 2 pini de pe shield. Jumperul de alimentare rămâne la locul lui. Puteți utiliza această metodă numai atunci când tensiunea de alimentare a motorului este mai mică de 9V.)
Sau (Recomandat) Arduino alimentat prin USB și motoarele printr-o sursă de curent continuu: (conectați cablul USB, conectați alimentarea de motoare la blocul EXT_PWR de pe shield. Asigurați-vă că jumperul este scos.)
Sau două surse de alimentare cu curent continuu, una pentru Arduino și alta pentru motoare: (dacă doriți să aveți 2 surse separate de alimentare DC pentru arduino și motoare. Conectați sursa de alimentare pentru Arduino în mufa DC și conectați alimentarea de motoare la EXT_PWR. Asigurați-vă că jumperul este scos.)

Shieldul mai are: o matrice de rezistoare pulldown pentru a menține motoarele oprite în timpul alimentării.
LED-ul de la bord indică faptul că alimentarea moto
arelor este în regulă. Dacă nu este aprins, motoarele nu vor funcționa.
Are și butonul de resetare al lui Arduino.

AVERTIZARE
NU furnizați
tensiune la intrarea EXT_PWR atunci când jumperul este în shield. Poate deteriora shieldul și, de asemenea, Arduino!

Conexiuni de iesire

image4

Conexiunile de ieșire ale ambelor cipuri L293D sunt la marginea shieldului cu două terminale cu șurub cu 5 pini, M1, M2, M3 și M4. Puteți conecta la aceste terminale patru motoare de curent continuu cu tensiuni cuprinse între 4,5 și 24V.
Fiecare canal de pe modul poate furniza până la 600mA motorului DC.
Dar curentul furnizat la motor depinde și de sursa de alimentare a sistemului.
De asemenea, puteți conecta două motoare pas cu pas la bornele de ieșire. Un motor pas cu pas la motor M1-M2 și altul la M3-M4.
Terminalul GND este prevăzut
în situația în care aveți un motor pas cu pas unipolar.
Shieldul are și liniile de ieșire PWM de 16 biți pentru două servomotoare cu 3 pini.

Pinii nefolositi de la Arduino

Nu sunt utilizați Pinii digitali 2, 13 și pinii analogici A0-A5.

AFMotor Library

O gasiti pe: https://github.com/adafruit/Adafruit-Motor-Shield-library

Folosirea L293D Shield

Acum, că știm totul despre Shield, putem începe să o legăm la Arduino!
Începeți prin conectarea
shieldului în partea superioară a lui Arduino.

Acum conectați motorul la bornele motoarelor M1, M2, M3 sau M4. În exemplul nostru îl conectăm la M4.
Apoi, conectați alimentarea motoarelor. Deși puteți conecta motoarele de curent continuu cu tensiuni cuprinse între 4,5 și 2
4V la shield, în exemplul nostru folosim motoare DC de 9V. Deci, vom conecta sursa externă de alimentare de 9V la terminalul EXT_PWR.

image5

Exemplu de cod:

#include <AFMotor.h>

AF_DCMotor motor(4);

void setup() 
{
        //Set initial speed of the motor & stop
        motor.setSpeed(200);
        motor.run(RELEASE);
}

void loop() 
{
        uint8_t i;

        // Turn on motor
        motor.run(FORWARD);
        
        // Accelerate from zero to maximum speed
        for (i=0; i<255; i++) 
        {
                motor.setSpeed(i);  
                delay(10);
        }
        
        // Decelerate from maximum speed to zero
        for (i=255; i!=0; i--) 
        {
                motor.setSpeed(i);  
                delay(10);
        }

        // Now change motor direction
        motor.run(BACKWARD);
        
        // Accelerate from zero to maximum speed
        for (i=0; i<255; i++) 
        {
                motor.setSpeed(i);  
                delay(10);
        }

        // Decelerate from maximum speed to zero
        for (i=255; i!=0; i--) 
        {
                motor.setSpeed(i);  
                delay(10);
        }

        // Now turn off motor
        motor.run(RELEASE);
        delay(1000);
}

Explicatie:

Codul începe prin includerea AFMotor.h.
AF_DCMotor (motorPort #);

Trebuie să declaram numărul portului la care este conectat motorul. Pentru portul M1 scrieți 1, pentru M2 scrieți 2 și așa mai departe.
Dacă doriți să conectați mai multe motoare ,
declarați separat pentru fiecare motor. De exemplu, următorul fragment de cod creează două AFmotor.

AF_DCMotor motor1(1);
AF_DCMotor motor2(2);

În Setup, pur și simplu setam turația de rotire.
Funcția setSpeed (viteză) stabilește viteza motorului. Viteza variază de la 0 la 255, cu 0 fiind oprit și 255 ca accelerație maximă.

Puteți seta viteza ori de câte ori doriți în cod.
Funcția Run (cmd) stabilește modul de funcționare al motorului.

Valorile valide pentru comandă sunt:
FORWARD – derulat înainte (direcția actuală de rotație va depinde de cablarea motorului)
BACKWARD – rulați înapoi (rotirea va fi în direcția opusă față de FORWARD)
RELEASE – Opriți motorul. Aceasta elimină puterea de la motor și este echivalentă cu setSpeed (0).

Pentru motorul stepper unipolar 28BYJ-48

Dacă utilizați motorul stepper unipolar 28BYJ-48, motorul respectiv se alimenteaza la 5V și oferă 48 de pași pe revoluție. Deci, conectați alimentarea externă de 5V la terminalul EXT_PWR.
Nu uitați să scoateți jumperul PWR. Acum conectați motorul la terminalele motorului pas cu pas M1-M2 (port # 1) sau M3-M4 (port # 2). În ex
emplul nostru îl conectăm la M3-M4.

image6

Pentru NEMA 17 bipolar stepper

Dacă utilizați motorul bipolar NEMA 17, de obicei alimentat la 12V și oferă 200 de pași pe revoluție. Deci, conectați sursa externă de alimentare de 12V la terminalul EXT_PWR.
Nu uitați să scoateți jumperul PWR.
Acum conectați motorul la terminalele motorului pas cu pas M1-M2 (port # 1) sau M3-M4 (port # 2). În
exemplul nostru îl conectăm la M3-M4.

image7

Arduino Code

Următorul cod vă va oferi o înțelegere completă cu privire la modul de control al unui motor stepper unipolar sau bipolar cu shieldul L293D și este același pentru ambele motoare, cu excepția parametrului stepsPerRevolution.
Modificați acest parametru conform specificațiilor motorului înainte de a încerca schița. De exemplu, pentru NEMA 17 setați-l la 200 și pentru 28BYJ-48 setați-l la 48.

Exemplu cod:

#include <AFMotor.h>

// Number of steps per output rotation
// Change this as per your motor's specification
const int stepsPerRevolution = 48;

// connect motor to port #2 (M3 and M4)
AF_Stepper motor(stepsPerRevolution, 2);

void setup() {
  Serial.begin(9600);
  Serial.println("Stepper test!");

  motor.setSpeed(10);  // 10 rpm   
}

void loop() {
  Serial.println("Single coil steps");
  motor.step(100, FORWARD, SINGLE); 
  motor.step(100, BACKWARD, SINGLE); 

  Serial.println("Double coil steps");
  motor.step(100, FORWARD, DOUBLE); 
  motor.step(100, BACKWARD, DOUBLE);

  Serial.println("Interleave coil steps");
  motor.step(100, FORWARD, INTERLEAVE); 
  motor.step(100, BACKWARD, INTERLEAVE); 

  Serial.println("Micrsostep steps");
  motor.step(100, FORWARD, MICROSTEP); 
  motor.step(100, BACKWARD, MICROSTEP); 
}

Explicatie:

Codul începe prin includerea bibliotecii AFMotor.h.
Al doilea motor AF_Stepper (48, 2); creează un obiect al bibliotecii. Aici trebuie să
declarați pașii per revoluție ai motorului și numărului portului la care este conectat motorul ca parametri.
În secțiunea de configurare și buclă a codului, pur și simplu sunăm sub două funcții pentru a controla direcția de turație și de rotire a unui motor.
Funcția setSpeed ​​(rpm) stabilește viteza motorului, în cazul în care rpm este numărul de rotații pe minut dorit.
Funcția step (pasi, direcție, tipul pasilor) este apelată de fiecare dată când doriți să se miște motorul. #step este numărul de pași pe care doriți să îi urmați. direcția este FORWARD sau BACKWARD, iar valorile valide pentru tipul pasului sunt:
SINGLE – o singură bobină este energizată la un moment dat.
DOUBLE – Două bobine sunt alimentate la un moment dat pentru un cuplu mai mare.
INTERLEAVE – alternați între unic și dublu pentru a crea o jumătate de pas între ele. Acest lucru poate duce la o funcționare mai ușoară, dar din cauza jumătății suplimentare, viteza este redusă la jumătate.
MICROSTEP –
Pentru a crea un număr de „micro-pași” între fiecare pas complet. Acest lucru are ca rezultat o rezoluție mai fină și rotație mai ușoară, dar cu o pierdere de cuplu.

Comanda Servo Motors cu L293D Shield

Comanda servo cu L293D este la fel de simplă.
Shieldul are ieșire PWM de 16 biți pentru două servomotoare cu 3 pini.

Pinii 9 și 10 de la Arduino.
Puterea servo vine de la regulatorul de 5 V de la Arduino, deci nu trebuie să conectați nimic la terminalul EXT_PWR.

image8

Exemplu cod:

#include <Servo.h> Servo myservo; // create servo object to control a servo int pos = 0; // variable to store the servo position void setup() { // attaches the servo on pin 10 (or pin 9) to the servo object myservo.attach(10); } void loop() { // sweeps from 0 degrees to 180 degrees for(pos = 0; pos <= 180; pos += 1) { myservo.write(pos); delay(15); } // sweeps from 180 degrees to 0 degrees for(pos = 180; pos>=0; pos-=1) { myservo.write(pos); delay(15); } }

Succes!

Publicat la data

Cum sa controlezi doua motoare cu Arduino și să creezi un roboțel mașină

Cum sa controlezi doua motoare cu Arduino și să creezi un roboțel mașină controlat de Arduino

2-motors-circuit

Am folosit motoare DC la 9 volti, puteti folosi motoare DC de la 5v la 12v. Atentie mare la conectarea firelor.

Exemplu Cod :

void setup() {
pinMode(11, OUTPUT);
pinMode(10, OUTPUT);

pinMode(6, OUTPUT);
pinMode(5, OUTPUT);

}

void loop() {
digitalWrite(11, HIGH);
digitalWrite(6, HIGH);

delay(1000); // Wait for 1000 millisecond(s)

digitalWrite(11, LOW);
digitalWrite(6, LOW);

delay(1000); // Wait for 1000 millisecond(s)

digitalWrite(10, HIGH);
digitalWrite(5, HIGH);

delay(1000); // Wait for 1000 millisecond(s)

digitalWrite(10, LOW);
digitalWrite(5, LOW);

delay(1000); // Wait for 1000 millisecond(s)

}

Publicat la data

Cum folosim senzorul soil (Soil Hygrometer Humidity)

Cum folosim senzorul soil (Soil Hygrometer Humidity)

Soil-Hygrometer-Humidity-Detection-Module-roboromania-fata

Sunt doua moduri de folosire

Este un proiect Arduino care necesită cunoştinţe medii în domeniu.

Senzor soil ieșire digitala și setam procentul de umiditate din trimmerul senzorului, exemplu:

arduino-soil-digital

Cod :

// varianta iesire digitala

int rel_pin = 10;
int sensor_pin = 2;

void setup() {
pinMode(rel_pin, OUTPUT);
pinMode(sensor_pin, INPUT);

}

void loop() {

if(digitalRead(sensor_pin) == HIGH){
digitalWrite(rel_pin, HIGH);
} else {
digitalWrite(rel_pin, LOW);
delay(1000);
}
}
// ––––––-

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

Senzor soil ieșire analogica și setam procentul de umiditate din trimmerul senzorului, exemplu:

arduino-soil-analog

Cod :

// varianta iesire analogica
int rel_pin = 10;
int sensor_pin = A0;

int output_value = 0;
int setup_value = 50; // se seteaza in cod intre 0% si 100%

void setup() {
Serial.begin(9600);
pinMode(rel_pin, OUTPUT);
digitalWrite(rel_pin, LOW);
}

void loop() {
output_value= analogRead(sensor_pin);

output_value = map(output_value,550,0,0,100);
Serial.print(„Mositure : „);
Serial.print(output_value);
Serial.println(„%”);
delay(1000);

if(output_value < setup_value){

digitalWrite(rel_pin, HIGH);
} else {
digitalWrite(rel_pin, LOW);
delay(1000);
}
}
//––––––-

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

E simplu, trebuie doar să fim atenți la conectarea pinilor, corespunzător sketch-ului Arduino folosit.
Dar puteți veni la sediul nostru și vă învățăm noi cat putem … vă ajutăm și la montaj …

Colectivul magazinului roboromania.ro vă urează succes !  După realizare va rugam sa trimiteți poze și sugestii.