Arduino рд╕реНрдЯрд╛рд░реНрдЯрд░ рдмреНрд▓реВрдЯреВрде рд╡реЗрджрд░ рд╕реНрдЯреЗрд╢рди

рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ Arduino рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рдкрд╣рд▓рд╛ рдХрджрдо рдЙрдард╛рдиреЗ рдФрд░ рдЕрдкрдирд╛ рдореМрд╕рдо рд╕реНрдЯреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛ред рдореМрд╕рдо рд╕реНрдЯреЗрд╢рди рдореЗрдВ рджреЛ рдореЙрдбреНрдпреВрд▓ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗ: рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХрдиреЗрдХреНрдЯреЗрдб рд╕реЗрдВрд╕рд░ рд╕реЗ рдЬрд╛рдирдХрд╛рд░реА рдкрдврд╝реЗрдЧрд╛, рджреВрд╕рд░рд╛ рдПрдХ рдЫреЛрдЯреЗ рд╕реНрдХреНрд░реАрди рдкрд░ рд░реАрдб рдбреЗрдЯрд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ред рд╣рдо рд╕реВрдЪрдирд╛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреНрд▓реВрдЯреВрде рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред

рдореИрдВ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмреАрдЯреА рдореЙрдбреНрдпреВрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдЬрд╛рдирдХрд╛рд░реА рджреВрдВрдЧрд╛ред

рдЫрд╡рд┐

рддреЛ рдЪрд▓рд┐рдП!

рдХрд╣рд╛рдБ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ?


Arduino рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рдЕрдкрдиреЗ рдкрд╣рд▓реЗ рд╢рд┐рд▓реНрдк рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рд╡реНрдпрд╛рдкрдХ рдЬреНрдЮрд╛рди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, Amperka.ru рд╕реЗ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕рдмрдХ рдиреЗ рдмрд╣реБрдд рдорджрдж рдХреА ред

рдЯреНрд░реЗрдирд┐рдВрдЧ


рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрддреНрд╡реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА:

  • 500 k 500 рдлрд╝реЛрдЯреЛрд░реЗрд╕рд┐рд╕реНрдЯрд░ (X1)
  • рдмреИрд░реЛрдореАрдЯрд░ BMP085 (X1)
  • рдмреАрдЯреА-рдореЙрдбреНрдпреВрд▓ HC-05 (x2)
  • рдПрд▓рд╕реАрдбреА, рдПрд▓рд╕реАрдбреА LCM 1602 i2c (X1)
  • рдИрдореЗрд▓ рд╕реЗрдЯ рдШрдЯрдХ (рдмреНрд░реЗрдбрдмреЛрд░реНрдб, рдкреНрд░рддрд┐рд░реЛрдзреЛрдВ, рдбрд╛рдпреЛрдб) (X1)
  • Arduino UNO R3 (x2)

рдлрд░реНрдорд╡реЗрдпрд░ рдХреЗ рд▓рд┐рдП рд╣рдо рджреЗрд╢реА Arduino IDE рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред

рдореИрдВ рдЗрд╕ рддрдереНрдп рдкрд░ рдзреНрдпрд╛рди рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдореЙрдбреНрдпреВрд▓ HC-05 рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (06 рдирд╣реАрдВ!), рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ HC-06 рдорд╛рд╕реНрдЯрд░ рдореЛрдб рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ , рдЕрд░реНрдерд╛рддред рджреЛрдиреЛрдВ рдореЙрдбреНрдпреВрд▓ 06 рд▓реЗрдиреЗ рд╕реЗ рд╣рдо рдЙрдиреНрд╣реЗрдВ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдВрдЧреЗред рдореИрдВрдиреЗ рд╕рдВрдЧрддрддрд╛ рд╕рдорд╕реНрдпрд╛рдУрдВ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рджреЛрдиреЛрдВ HC-05 рдореЙрдбреНрдпреВрд▓ рд▓реЗрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдпрджрд┐ рдХреЛрдИ рд╣реЛред

рдмреАрдЯреА-рдореЙрдбреНрдпреВрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдиреАрдЪреЗ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдЫрд╡рд┐

рджреЛрдиреЛрдВ рдореЙрдбреНрдпреВрд▓ рдврд╛рд▓ рдореЗрдВ рдирд┐рд░реНрдорд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН, Arduino рдмреЛрд░реНрдб рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрдиреЗ рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред

рд╡рд┐рдзрд╛рдирд╕рднрд╛ рд╢реБрд░реВ рдХрд░реЛ


рд╣рдо рдПрдХ photoresistor рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВ


рдлреЛрдЯреЛрд╕реЗрд╕реНрдЯрд░ рдХрд╛ рдкреНрд░рддрд┐рд░реЛрдз рдЙрд╕ рдкрд░ рдкреНрд░рдХрд╛рд╢ рдШрдЯрдирд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдПрдХ рдкрд╛рд░рдВрдкрд░рд┐рдХ рд░реЛрдХрдиреЗрд╡рд╛рд▓рд╛ рдХреЗ рд╕рд╛рде рд╕рдВрдпреЛрдЬрди рдореЗрдВ рдПрдХ рдлреЛрдЯреЛрд░реЗрд╕рд┐рд╕реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдореЗрдВ рдПрдХ рд╡реЛрд▓реНрдЯреЗрдЬ рд╡рд┐рднрдХреНрдд рдорд┐рд▓рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рдХрд╛рд╢ рдХреЗ рд╕реНрддрд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдлреЛрдЯреЛрд╕реЗрд╕реНрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЧреБрдЬрд░рдиреЗ рд╡рд╛рд▓реЗ рд╡реЛрд▓реНрдЯреЗрдЬ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрддрд╛ рд╣реИред

рд╕реЗрдВрд╕рд░ рд╕реЗ рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рддрдВрддреНрд░ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ: analogRead (pin_number) рдлрд╝рдВрдХреНрд╢рди рдПрдХ рдорд╛рди рд▓реМрдЯрд╛рдПрдЧрд╛ рдЬреЛ рд░реЛрд╢рдиреА рдХреА рдбрд┐рдЧреНрд░реА рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░реЗрдЧрд╛ред рд╕реЗрдВрд╕рд░ рдХреА рд╕рдВрд╡реЗрджрдирд╢реАрд▓рддрд╛ рдХреЛ рд╡рд┐рднрд┐рдиреНрди рд░реЗрдЯрд┐рдВрдЧ рдХреЗ рдкреНрд░рддрд┐рд░реЛрдзреЛрдВ рдХреЗ рд╕рд╛рде рдЦреЗрд▓рдХрд░ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ; рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, 10kOhm рд╕рдмрд╕реЗ рдЕрдЪреНрдЫреА рд░реЗрдЯрд┐рдВрдЧ рд╣реИред

рдЫрд╡рд┐

рдХреЛрдб рдЙрджрд╛рд╣рд░рдг
int lightPin= 0; // ,    
void setup()
{
}
void loop()
{
  int light = analogRead(lightPin);
}


рджрдмрд╛рд╡ рдФрд░ рддрд╛рдкрдорд╛рди рд╕рдВрд╡реЗрджрдХ


рддрд╛рдкрдорд╛рди, рджрдмрд╛рд╡ рдФрд░ рдКрдВрдЪрд╛рдИ рдХреЛ рдорд╛рдкрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо BMP085 рдмреИрд░реЛрдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред

рдЫрд╡рд┐

BMP085 рдХреЛ Arduino рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ 4 рдкрд┐рди рдЪрд╛рд╣рд┐рдП:

  • Vcc - рдкреЙрд╡рд░ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ + 5v
  • SDA - Arduino (A4) рдкрд░ SDA
  • SCL - Arduino рдмреЛрд░реНрдб рдкрд░ SCL (A5)
  • рдЬреАрдПрдирдбреА - рдЬрдореАрди рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ

рдЫрд╡рд┐

рд╕реЗрдВрд╕рд░ рд╕реЗ рдорд╛рди рд▓реЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ Adafruit рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдХреЛрдб рдЙрджрд╛рд╣рд░рдг

#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP085_U.h>
Adafruit_BMP085_Unified bmp = Adafruit_BMP085_Unified(10085);
void setup(void)
{
/* Initialise the sensor */
  if(!bmp.begin())
  {
    /* There was a problem detecting the BMP085 ... check your connections */
    Serial.print("Ooops, no BMP085 detected ... Check your wiring or I2C ADDR!");
    while(1);
  }
}
void loop(void)
{
  sensors_event_t event;
  bmp.getEvent(&event);
  if (event.pressure)
  {
    float pressure = event.pressure;
    
    float temperature;
    bmp.getTemperature(&temperature);

    float seaLevelPressure = SENSORS_PRESSURE_SEALEVELHPA;
    float altitude = bmp.pressureToAltitude(seaLevelPressure, event.pressure); 
  }
}


Arduino рдЬреБрдбрд╝реЗ рд╕рднреА рд╕реЗрдВрд╕рд░ рдХреЗ рд╕рд╛рде
image

рдХрдиреЗрдХреНрд╢рди рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ


LCD1602 рдбрд┐рд╕реНрдкреНрд▓реЗ рдкрд┐рди BMP085 рдХреЗ рд▓рд┐рдП рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВ:

  • рдПрд▓рд╕реАрдбреА SDA -> Arduino SDA (A4)
  • LCD SCL -> Arduino SCL (A5)
  • рдПрд▓рд╕реАрдбреА GND -> Arduino GND
  • рдПрд▓рд╕реАрдбреА рд╡реАрд╕реАрд╕реА -> рдЕрд░реБрдбрд┐рдиреЛ 5 рд╡реА

рдЫрд╡рд┐

рдХреЛрдб рдЙрджрд╛рд╣рд░рдг
/*     LCD  1602. */  
#include <Wire.h>
#include <LiquidCrystal_I2C.h>  
LiquidCrystal_I2C lcd(0x27,16,2); // :  ,    
void setup()
{
    lcd.init();
    //  lcd
    lcd.backlight();
    //  
    //     1 
    lcd.print("Hello");
    //  
    lcd.setCursor(0, 1);
    //     2 
    lcd.print("World!");
    //  
}  
void loop()
{ }
// : http://xrobot.by/modules/lcd_4_4#ixzz3vQXoFKOj


рдмреНрд▓реВрдЯреВрде рдХрдиреЗрдХреНрд╢рди


рдФрд░ рдЕрдм рдордЬрд╝реЗрджрд╛рд░ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд▓рд┐рдПред рд╣рдо рдЕрдкрдиреЗ Arduino рдкрд░ рдмреАрдЯреА-рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реЗ рдврд╛рд▓реЛрдВ рдХреЛ "рд╕рдВрдпрдВрддреНрд░" рдХрд░рддреЗ рд╣реИрдВ:

рдЫрд╡рд┐

рдорд╛рд╕реНрдЯрд░ рдбрд┐рд╡рд╛рдЗрд╕ рд╕реНрд▓реЗрд╡ рдбрд┐рд╡рд╛рдЗрд╕ рд╕реЗ рдХрдиреЗрдХреНрдЯ рд╣реЛрдЧрд╛, рдЬреЛ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдХрдиреЗрдХреНрд╢рди рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдЧрд╛ред рдмреЛрд░реНрдб рдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ рд╣рдо рдПрдЪ рдкрд░ рд╕реНрд╡рд┐рдЪ рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рд╣рдорд╛рд░рд╛ рдорд╛рд╕реНрдЯрд░ рд╣реЛрдЧрд╛ред рджреВрд╕рд░реЗ рдмреЛрд░реНрдб рдкрд░ - рдПрд▓ рдореЗрдВ, рдпрд╣ рдПрдХ рджрд╛рд╕ рд╣реЛрдЧрд╛ред

рдЫрд╡рд┐

рдореЙрдбреНрдпреВрд▓ рдХреЛ Arduino рдореЗрдВ рд╕рдВрд▓рдЧреНрди рдХрд░рдХреЗ, рдЖрдк рд╕реЗрдЯрдЕрдк рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдорд╛рд╕реНрдЯрд░ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдмреАрдЯреА-рдореЙрдбреНрдпреВрд▓ рдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реЗрдЯ рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рд╣рдо рдпрд╣ рд╕реАрд░рд┐рдпрд▓ рдореЙрдирд┐рдЯрд░ (Ctrl + Shift + M) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд░реЗрдВрдЧреЗред рдореИрд╕реЗрдЬ рдХрд░рддреЗ рд╕рдордп, рдмреЙрдб рджрд░ -> 38400 рдФрд░ "рдПрдирдПрд▓ рдФрд░ рд╕реАрдЖрд░ рджреЛрдиреЛрдВ" рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХреА рдЬрд╛рддреА рд╣реИред

AT рдЖрджреЗрд╢ рднреЗрдЬрдиреЗ рдФрд░ рднреЗрдЬрдиреЗ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдПрдХ рдареАрдХ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдРрд╕рд╛ рд╣реИ - рдмреЛрд░реНрдб рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рддреЛ рдЖрдк рдЬрд╛рд░реА рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдпрд╣ рдХреБрдЫ рдХрджрдо рдкреАрдЫреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рдмреНрд▓реВрдЯреВрде рдореЙрдбреНрдпреВрд▓ рдХреЗ рдХрдиреЗрдХреНрд╢рди рдХреА рдЬрд╛рдВрдЪ рдХрд░ рд░рд╣рд╛ рд╣реИред

рдХреБрдЫ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдПрдЯреА рдХрдорд╛рдВрдб рдЬреЛ рдХрд╛рдо рдореЗрдВ рдЖ рд╕рдХрддреА рд╣реИрдВ:

рдПрдЯреА - рд╕рд┐рд░реНрдл "рдУрдХреЗ" рджреЗрддрд╛ рд╣реИ, рддреЛ рдХреНрдпрд╛ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ
рдПрдЯреА + рдПрдирдПрдПрдордИ? - рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдирд╛рдо рд▓реМрдЯрд╛рдПрдЧрд╛ред рдХреНрдпрд╛ рд╣рдо рдЕрдкрдирд╛ рдирд╛рдо рднреА рднреЗрдЬ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, AT + NAME = WEATHER_MONITOR
AT + ROLE? - рдХреБрдВрдЬреА рдХрдорд╛рдВрдб рдореЗрдВ рд╕реЗ рдПрдХ рдбрд┐рд╡рд╛рдЗрд╕, рдорд╛рд╕реНрдЯрд░ / рджрд╛рд╕ рдХреА рднреВрдорд┐рдХрд╛ рд╡рд╛рдкрд╕ рдХрд░ рджреЗрдЧрд╛ред рдЖрдк AT + ROLE = 0 - рджрд╛рд╕ рдореЛрдб, рдпрд╛ AT + ROLE = 1 - рдорд╛рд╕реНрдЯрд░ рдореЛрдб рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдХреЗ рдорд╛рди рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
AT + PSWD? - рдХрдиреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рдкрд┐рди рдХреЛрдб рдХреЛ рд╡рд╛рдкрд╕ рдХрд░ рджреЗрдЧрд╛ред
рдПрдЯреА + рдПрдбреАрдбреАрдЖрд░? - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рдкрддрд╛ рд▓реМрдЯрд╛рдПрдЧрд╛, "14: 2: 110007"ред рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рднреЗрдЬреЗ рдЧрдП рдПрдЯреА-рдХрдорд╛рдВрдб рдореЗрдВ рдкрддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдХреЛрд▓рди ":" рдХреЛрдорд╛ рд╕реЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП ",", рдЕрд░реНрдерд╛рддред "14: 2: 110007" -> "14,2,110007"ред

рдЧреБрд▓рд╛рдо рд╕реЗрдЯрдЕрдк


рдпрд╣рд╛рдВ рдХрд┐рд╕реА рднреА рдмреЙрдбреА рдореВрд╡рдореЗрдВрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдмрд╕ рдмреЛрд░реНрдб рдХреЛ рд╕рддреНрддрд╛ рдореЗрдВ рдкреНрд▓рдЧ рдХрд░реЗрдВред

Master'a


. .

  1. AT+ORGL,
  2. , AT+NAME=myname.
  3. AT+RMAAD тАФ ┬л┬╗.
  4. AT+PSWD=1234 тАФ
  5. AT+ROLE=1 тАФ , master .
  6. AT+CMODE=1 тАФ , .

. .

  1. AT, , .
  2. AT+INIT тАФ . ERROR(17) тАФ , , .
  3. AT+INQ тАФ BT-,
  4. AT + LINK = <рдкрддрд╛> - рджрд╛рд╕ рдбрд┐рд╡рд╛рдЗрд╕ рд╕реЗ рд╕реАрдзрд╛ рд╕рдВрдмрдВрдз рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрдиреЗрдХреНрд╢рди рдХрдорд╛рдВрдб рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ: AT + LINK = 14,2,110007ред

рдЕрдВрддрд┐рдо рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдбрд╛рдпреЛрдб рдХрдо рдЖрд╡реГрддреНрддрд┐ рдкрд░ рдлреНрд▓реИрд╢ рдХрд░реЗрдЧрд╛, рдЬреЛ рдПрдХ рд╕рдлрд▓ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред

рдлрд┐рдирд┐рд╢ рд▓рд╛рдЗрди


рдпрд╣ рд▓рдЧрднрдЧ рд╕рднреА рд╣реИред рдпрд╣ рд╕реНрдХреЗрдЪ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдореМрд╕рдо рдбреЗрдЯрд╛ рдХреЛ рдкрдврд╝рддреЗ-рд╕реНрд╡реАрдХрд╛рд░рддреЗ-рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ, рддреЛ рдЖрдк рдмреНрд░реЗрдбрдмреЛрд░реНрдб рдХреЛ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЯрд╛рдВрдХрд╛ рд▓рдЧрд╛рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдВрд░рдЪрдирд╛ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВред

рдХрд╛рдо рдХрд╛ рдирддреАрдЬрд╛
image
image
image
image

рдирдореВрдиреЗ:

рдореМрд╕рдо рдореЙрдирд┐рдЯрд░ рдХреЛрдб
#include <SoftwareSerial.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>  

LiquidCrystal_I2C lcd(0x27,16,2); // :  ,    

#define rxPin 2
#define txPin 3

SoftwareSerial btSerial(rxPin, txPin);

bool isDisplayingMode = true;
 
void setup()
{
   lcd.init();
   lcd.backlight();
   // define pin modes for tx, rx pins:
   pinMode(rxPin, INPUT);
   pinMode(txPin, OUTPUT);
   btSerial.begin(38400); 
   Serial.begin(38400);
   Serial.println("Serial started");
   
           
   lcd.print("    Waiting");
   lcd.setCursor(0, 1);
   lcd.print(" for connection");
   
   btSerial.println("AT");
   while (!btSerial.available());
   while (btSerial.available() > 0)
        char c = btSerial.read();
   btSerial.println("AT+INIT");
   while (!btSerial.available());
   while (btSerial.available() > 0)
        char c = btSerial.read();
   btSerial.println("AT+INQ");
   while (!btSerial.available());
   while (btSerial.available() > 0)
        char c = btSerial.read();
   btSerial.println("AT+LINK=2014,5,191146");  
   while (!btSerial.available());
   while (btSerial.available() > 0)
        char c = btSerial.read();   
}

void loop()
{   
  int i = 0;
  char someChar[32] = {0};
  // when characters arrive over the serial port...
  bool availible = Serial.available();
  if(availible) {
    do{
        someChar[i++] = Serial.read();
      //As data trickles in from your serial port you are grabbing as much as you can, 
      //but then when it runs out (as it will after a few bytes because the processor 
      //is much faster than a 9600 baud device) you exit loop, which then restarts, 
      //and resets i to zero, and someChar to an empty array.So please be sure to keep this delay 
      delay(3);                  
 
    }while (Serial.available() > 0);

    lcd.clear();
    Serial.println(i);
    btSerial.println(someChar);
    Serial.println(someChar);
  }
 
  lcd.setCursor(0, 0);
  while(btSerial.available()) 
      {
        if (isDisplayingMode)
        {
          lcd.clear();
          isDisplayingMode = false;
        }
        char c = (char)btSerial.read();
        Serial.print(c);          
        if (c != 13 && c != 10)
          lcd.print(c);
        if (c == '\n')
          lcd.setCursor(0, 1);
      }
}


рдореМрд╕рдо рд╕реЗрдВрд╕рд░ рдХреЛрдб
#include <SoftwareSerial.h>
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP085_U.h>

Adafruit_BMP085_Unified bmp = Adafruit_BMP085_Unified(10085);
int lightSensorPin = 0;

#define rxPin 2
#define txPin 3

SoftwareSerial btSerial(rxPin, txPin);

struct SensorData
{
  float Pressure;
  float Temperature;
  float Altitude;
  float Lightness;
  void DisplaySensorData()
{
    Serial.print("Light:       ");
    Serial.print(this->Lightness, 2);
    Serial.println("%");
    Serial.print("Altitude:    "); 
    Serial.print(this->Altitude); 
    Serial.println(" m");
    Serial.print("Temperature: ");
    Serial.print(this->Temperature);
    Serial.println(" C");
    /* Display atmospheric pressue in hPa */
    Serial.print("Pressure:    ");
    Serial.print(this->Pressure);
    Serial.println(" hPa");
    Serial.println("");
}

void DisplaySensorDataInTwoRows()
{
    Serial.print("Temp: "); Serial.print(this->Temperature); Serial.println(" C");
    Serial.print("Pr: "); Serial.print(this->Pressure); Serial.println(" Pa");
    delay(1000);    
    Serial.print("Alt: "); Serial.print(this->Altitude); Serial.println(" m");
    Serial.print("Light: "); Serial.print(this->Lightness); Serial.println(" %");
    delay(1000);
}
void SendDataToRemote()
{
    btSerial.print("Temp: "); btSerial.print(this->Temperature); btSerial.print(" C\n");
    btSerial.print("Pr:   "); btSerial.print(this->Pressure); btSerial.print(" hPa\n");
    delay(5000);    
    btSerial.print("Alt:   "); btSerial.print(this->Altitude); btSerial.print(" m\n");
    btSerial.print("Light: "); btSerial.print(this->Lightness); btSerial.print(" %  \n");
    delay(5000);
}
};



void displaySensorDetails(void)
{
  sensor_t sensor;
  bmp.getSensor(&sensor);
  
  Serial.println("------------------------------------");
  Serial.print  ("Sensor:       "); Serial.println(sensor.name);
  Serial.print  ("Driver Ver:   "); Serial.println(sensor.version);
  Serial.print  ("Unique ID:    "); Serial.println(sensor.sensor_id);
  Serial.print  ("Max Value:    "); Serial.print(sensor.max_value); Serial.println(" hPa");
  Serial.print  ("Min Value:    "); Serial.print(sensor.min_value); Serial.println(" hPa");
  Serial.print  ("Resolution:   "); Serial.print(sensor.resolution); Serial.println(" hPa");  
  Serial.println("------------------------------------");
  Serial.println("");
  delay(500);
}

void setup(void) 
{
   // define pin modes for tx, rx pins:
   pinMode(rxPin, INPUT);
   pinMode(txPin, OUTPUT);
   btSerial.begin(38400);
   
  Serial.begin(9600);
  Serial.println("Pressure Sensor Test"); Serial.println("");
  
   
  /* Initialise the sensor */
  if(!bmp.begin())
  {
    /* There was a problem detecting the BMP085 ... check your connections */
    Serial.print("Ooops, no BMP085 detected ... Check your wiring or I2C ADDR!");
    while(1);
  }
    
  /* Display some basic information on this sensor */
  displaySensorDetails();
}
int counter = 0;
void loop(void) 
{
  /* Get a new sensor event */ 
  sensors_event_t event;
  bmp.getEvent(&event);
  SensorData data;
  /* Display the results (barometric pressure is measure in hPa) */
  if (event.pressure)
  {
    data.Pressure = event.pressure;
    
    float temperature;
    bmp.getTemperature(&temperature);
    data.Temperature = temperature;

    /* Then convert the atmospheric pressure, and SLP to altitude         */
    /* Update this next line with the current SLP for better results      */
    float seaLevelPressure = SENSORS_PRESSURE_SEALEVELHPA;
    float altitude = bmp.pressureToAltitude(seaLevelPressure, event.pressure);
    data.Altitude = altitude;  
    
    int lightValue = analogRead(lightSensorPin);
    float lightValueInPercent = 1.0 * lightValue / 1024 * 100;
    data.Lightness = lightValueInPercent;
    
    //data.DisplaySensorDataInTwoRows();    
  }
  else
  {
    Serial.println("Sensor error");
  }
  Serial.println("");
  data.SendDataToRemote();
}


рд╡рд╣ рд╕рдм рд╣реИред рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

Source: https://habr.com/ru/post/hi388605/


All Articles