Arduino β ΡΡΠΎ Π½Π΅ ΠΏΡΠΎΡΡΠΎ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° Π΄Π»Ρ ΡΠ°Π΄ΠΈΠΎΠ»ΡΠ±ΠΈΡΠ΅Π»Π΅ΠΉ, Π° ΠΌΠΎΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π΄Π»Ρ ΠΌΠΎΠ΄Π΅ΡΠ½ΠΈΠ·Π°ΡΠΈΠΈ Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»Ρ. Π‘ Π΅Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π°, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΈ Π΄Π°ΠΆΠ΅ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡ ΡΡΠ°ΡΠ½ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π΅ΠΉ. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ ΠΌΡ ΡΠ°Π·Π±Π΅ΡΡΠΌ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ β ΠΎΡ ΠΏΡΠΎΡΡΡΡ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡΠΎΠ² Π΄ΠΎ ΡΠ»ΠΎΠΆΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅Π°Π»ΡΠ½ΠΎ ΡΠΎΠ±ΡΠ°ΡΡ ΡΠ²ΠΎΠΈΠΌΠΈ ΡΡΠΊΠ°ΠΌΠΈ.
ΠΡ ΡΠ·Π½Π°Π΅ΡΠ΅, ΠΊΠ°ΠΊ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ Arduino Nano ΠΈΠ»ΠΈ Uno ΠΊ Π±ΠΎΡΡΠΎΠ²ΠΎΠΉ ΡΠ΅ΡΠΈ Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»Ρ, ΠΊΠ°ΠΊΠΈΠ΅ Π΄Π°ΡΡΠΈΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΡΠΈΡΡΠ²Π°Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
Ρ Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»Ρ, ΠΈ ΠΊΠ°ΠΊ Π·Π°ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎ ΠΏΡΠΈ ΡΠΊΠ°ΡΠΊΠ°Ρ
Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΡ. ΠΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½Ρ Π½Π° ΡΠ΅Π°Π»ΡΠ½ΡΡ
Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»ΡΡ
ΠΈ Π°Π΄Π°ΠΏΡΠΈΡΠΎΠ²Π°Π½Ρ ΠΏΠΎΠ΄ 12Π/24Π Π±ΠΎΡΡΠΎΠ²ΡΡ ΡΠ΅ΡΡ. ΠΠ΅ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π³Π»ΡΠ±ΠΎΠΊΠΈΡ
Π·Π½Π°Π½ΠΈΠΉ ΡΠ»Π΅ΠΊΡΡΠΎΠ½ΠΈΠΊΠΈ β Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π±Π°Π·ΠΎΠ²ΡΡ
Π½Π°Π²ΡΠΊΠΎΠ² ΠΏΠ°ΠΉΠΊΠΈ ΠΈ ΡΠΌΠ΅Π½ΠΈΡ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠΎΠ΄.
1. ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ°: ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ Π΄Π»Ρ ΡΡΠ°ΡΡΠ°
ΠΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΏΡΠΈΡΡΡΠΏΠ°ΡΡ ΠΊ ΠΏΡΠΎΠ΅ΠΊΡΠ°ΠΌ, ΡΠ±Π΅Π΄ΠΈΡΠ΅ΡΡ, ΡΡΠΎ Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ Π½Π°Π±ΠΎΡ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΡ. ΠΠ΅Π· Π½Π΅Π³ΠΎ Π΄Π°ΠΆΠ΅ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠΈΠ΅ ΡΡ Π΅ΠΌΡ Π½Π΅ Π·Π°ΡΠ°Π±ΠΎΡΠ°ΡΡ.
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ:
- πΉ Arduino Nano ΠΈΠ»ΠΈ Uno (Π»ΡΡΡΠ΅ Nano β ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½Π΅Π΅ ΠΈ Π΄Π΅ΡΠ΅Π²Π»Π΅)
- πΉ ΠΡΡΠΎΡΠ½ΠΈΠΊ ΠΏΠΈΡΠ°Π½ΠΈΡ:
LM2596(ΠΏΠΎΠ½ΠΈΠΆΠ°ΡΡΠΈΠΉ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΠ΅Π»Ρ Ρ12ΠΠ΄ΠΎ5Π) - πΉ ΠΠ°ΠΊΠ΅ΡΠ½Π°Ρ ΠΏΠ»Π°ΡΠ° ΠΈ ΠΏΡΠΎΠ²ΠΎΠ΄Π°
"ΠΏΠ°ΠΏΠ°-ΠΌΠ°ΠΌΠ°" - πΉ ΠΠ°Π±ΠΎΡ ΡΠ΅Π·ΠΈΡΡΠΎΡΠΎΠ² (ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ
220 ΠΠΌΠΈ10 ΠΊΠΠΌ) - πΉ ΠΠΈΠΎΠ΄Ρ
1N4007(Π΄Π»Ρ Π·Π°ΡΠΈΡΡ ΠΎΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΡ)
ΠΠ»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»Ρ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ:
- π Π Π°Π·ΡΡΠΌ
OBD-II(Π΅ΡΠ»ΠΈ Π±ΡΠ΄Π΅ΡΠ΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ CAN-ΡΠΈΠ½ΠΎΠΉ) - π ΠΠ»Π΅ΠΌΠΌΡ
"ΠΌΠ°ΠΌΠ°"Π΄Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ ΠΏΡΠΈΠΊΡΡΠΈΠ²Π°ΡΠ΅Π»Ρ ΠΈΠ»ΠΈ Π°ΠΊΠΊΡΠΌΡΠ»ΡΡΠΎΡΡ - π Π’Π΅ΡΠΌΠΎΡΡΠ°Π΄ΠΎΡΠ½Π°Ρ ΡΡΡΠ±ΠΊΠ° (Π΄Π»Ρ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ ΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠΉ)
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°ΠΉΡΠ΅ Arduino Π½Π°ΠΏΡΡΠΌΡΡ ΠΊ12ΠΠ±ΠΎΡΡΠΎΠ²ΠΎΠΉ ΡΠ΅ΡΠΈ Π±Π΅Π· ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·Π°ΡΠΎΡΠ°. ΠΠΈΠΊΡΠΎΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ ΡΠ³ΠΎΡΠΈΡ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅LM2596ΠΈΠ»ΠΈ Π³ΠΎΡΠΎΠ²ΡΠΉ ΠΌΠΎΠ΄ΡΠ»Ρ Ρ Π·Π°ΡΠΈΡΠΎΠΉ ΠΎΡ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΡ.
ΠΠ»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ:
- π» Arduino IDE (ΡΠΊΠ°ΡΠ°ΡΡ Ρ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΡΠ°)
- π» ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ:
CAN-BUS(Π΅ΡΠ»ΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅ΡΠ΅ Ρ ΡΠΈΠ½ΠΎΠΉ),OneWire(Π΄Π»Ρ Π΄Π°ΡΡΠΈΠΊΠΎΠ² ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ),LiquidCrystal_I2C(Π΄Π»Ρ Π΄ΠΈΡΠΏΠ»Π΅Π΅Π²)
2. ΠΡΠΎΡΡΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ Π΄Π»Ρ Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ
ΠΡΠ»ΠΈ Π²Ρ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π»ΠΈ Ρ Arduino, Π½Π°ΡΠ½ΠΈΡΠ΅ Ρ ΡΡΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ². ΠΠ½ΠΈ Π½Π΅ ΡΡΠ΅Π±ΡΡΡ Π³Π»ΡΠ±ΠΎΠΊΠΈΡ Π·Π½Π°Π½ΠΈΠΉ ΠΈ ΠΏΠΎΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ½ΡΡΡ ΠΎΡΠ½ΠΎΠ²Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»ΡΠ½ΠΎΠΉ ΡΠ»Π΅ΠΊΡΡΠΈΠΊΠΎΠΉ.
2.1. ΠΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΡ Π°ΠΊΠΊΡΠΌΡΠ»ΡΡΠΎΡΠ°
ΠΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠ΅ΠΊΡΡΠ΅Π΅ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΠ΅ Π±ΠΎΡΡΠΎΠ²ΠΎΠΉ ΡΠ΅ΡΠΈ Π½Π° LED-ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡΠ΅ ΠΈΠ»ΠΈ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΌ ΡΠΊΡΠ°Π½Π΅. ΠΠΎΠ»Π΅Π·Π½ΠΎ Π΄Π»Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π·Π°ΡΡΠ΄Π° Π°ΠΊΠΊΡΠΌΡΠ»ΡΡΠΎΡΠ°, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π·ΠΈΠΌΠΎΠΉ.
ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ:
- π Arduino Nano
- π ΠΠΎΠ΄ΡΠ»Ρ
TM1637(4-ΡΠ°Π·ΡΡΠ΄Π½ΡΠΉ LED-Π΄ΠΈΡΠΏΠ»Π΅ΠΉ) - π ΠΠ΅Π»ΠΈΡΠ΅Π»Ρ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΡ (ΡΠ΅Π·ΠΈΡΡΠΎΡΡ
10 ΠΊΠΠΌΠΈ2.2 ΠΊΠΠΌ)
Π‘Ρ Π΅ΠΌΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ:
- ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΠ΅ Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΡ ΠΊ
A0(Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²ΡΠΉ Π²Ρ ΠΎΠ΄). - Π‘ΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΠ΅
TM1637Ρ Arduino ΠΏΠΎ ΡΡ Π΅ΠΌΠ΅:CLK β D2,DIO β D3. - ΠΠΈΡΠ°Π½ΠΈΠ΅
5ΠΠ±Π΅ΡΠΈΡΠ΅ ΡΠΎ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·Π°ΡΠΎΡΠ°LM2596.
ΠΠΎΠ΄ Π΄Π»Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ:
#include
const int analogPin = A0;
const int CLK = 2;
const int DIO = 3;
TM1637Display display(CLK, DIO);
void setup() {
display.setBrightness(7);
}
void loop() {
int sensorValue = analogRead(analogPin);
float voltage = sensorValue (5.0 / 1023.0) 3.0; // ΠΠΎΡΡΡΠΈΡΠΈΠ΅Π½Ρ Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ
display.showNumberDec(voltage, false);
delay(1000);
}
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΡΠ»ΠΈ Π½Π°ΠΏΡΡΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π°ΠΊΠΊΡΠΌΡΠ»ΡΡΠΎΡΠ΅ ΡΠΏΠ°Π»ΠΎ Π½ΠΈΠΆΠ΅ 11.8Π, ΡΡΠΎ ΠΊΡΠΈΡΠΈΡΠ½ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ ΡΠ°Π·ΡΡΠ΄Π°. ΠΠ΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Π·Π°ΡΡΠ΄ΠΈΡΠ΅ ΠΠΠ ΠΈΠ»ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ.
2.2. Π‘ΠΈΠ³Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ Π½Π΅Π·Π°ΠΊΡΡΡΠΎΠΉ Π΄Π²Π΅ΡΠΈ
ΠΠ²ΡΠΊΠΎΠ²ΠΎΠΉ ΠΈ ΡΠ²Π΅ΡΠΎΠ²ΠΎΠΉ ΡΠΈΠ³Π½Π°Π», Π΅ΡΠ»ΠΈ Π΄Π²Π΅ΡΡ ΠΈΠ»ΠΈ Π±Π°Π³Π°ΠΆΠ½ΠΈΠΊ ΠΎΡΡΠ°Π»ΠΈΡΡ ΠΏΡΠΈΠΎΡΠΊΡΡΡΡΠΌΠΈ. Π Π°Π±ΠΎΡΠ°Π΅Ρ ΠΎΡ ΠΊΠΎΠ½ΡΠ΅Π²ΠΈΠΊΠΎΠ² (ΡΡΠ°ΡΠ½ΡΡ Π΄Π°ΡΡΠΈΠΊΠΎΠ² Π΄Π²Π΅ΡΠ΅ΠΉ).
ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ:
- πͺ Arduino Nano
- πͺ ΠΡΠ΅Π·ΠΎΠΈΠ·Π»ΡΡΠ°ΡΠ΅Π»Ρ (Π·ΡΠΌΠΌΠ΅Ρ)
- πͺ Π’ΡΠ°Π½Π·ΠΈΡΡΠΎΡ
2N2222(Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ΅Π»Π΅) - πͺ Π Π΅Π»Π΅
5Π(Π΅ΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ ΡΠΏΡΠ°Π²Π»ΡΡΡ Π»Π°ΠΌΠΏΠΎΠΉ)
ΠΠΎΠ³ΠΈΠΊΠ° ΡΠ°Π±ΠΎΡΡ:
- ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ΅Π²ΠΈΠΊΠΈ Π΄Π²Π΅ΡΠ΅ΠΉ ΠΊ ΡΠΈΡΡΠΎΠ²ΡΠΌ Π²Ρ
ΠΎΠ΄Π°ΠΌ Arduino (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,
D4-D7). - ΠΡΠ»ΠΈ Ρ
ΠΎΡΡ Π±Ρ ΠΎΠ΄ΠΈΠ½ Π²Ρ
ΠΎΠ΄ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ
LOW(Π΄Π²Π΅ΡΡ ΠΎΡΠΊΡΡΡΠ°), Π²ΠΊΠ»ΡΡΠ°ΠΉΡΠ΅ Π·ΡΠΌΠΌΠ΅Ρ Π½Π° 3 ΡΠ΅ΠΊΡΠ½Π΄Ρ. - ΠΠΎΠ±Π°Π²ΡΡΠ΅ Π·Π°Π΄Π΅ΡΠΆΠΊΡ
delay(60000), ΡΡΠΎΠ±Ρ ΡΠΈΠ³Π½Π°Π» Π½Π΅ ΠΏΠΎΠ²ΡΠΎΡΡΠ»ΡΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΡΠ°ΡΡΠΎ.
ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Ρ Π»ΠΈ Π²ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅Π²ΠΈΠΊΠΈ ΠΊ Arduino?
ΠΡΡΡ Π»ΠΈ ΠΎΠ±ΡΠΈΠΉ ΠΌΠΈΠ½ΡΡ Π΄Π»Ρ Π²ΡΠ΅Ρ Π΄Π°ΡΡΠΈΠΊΠΎΠ²?
Π£ΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Π»ΠΈ Π΄ΠΈΠΎΠ΄ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΡΠΎΠΊΠ° Π½Π° ΡΠ΅Π»Π΅?
ΠΡΠΎΠ²Π΅ΡΠΈΠ»ΠΈ Π»ΠΈ Π²Ρ ΠΊΠΎΠ΄ Π½Π° ΠΌΠ°ΠΊΠ΅ΡΠ½ΠΎΠΉ ΠΏΠ»Π°ΡΠ΅?
-->
3. ΠΡΠΎΠ΅ΠΊΡΡ ΡΡΠ΅Π΄Π½Π΅ΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ
ΠΡΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΏΠΎΡΡΠ΅Π±ΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π½Π° Π½Π°ΡΡΡΠΎΠΉΠΊΡ, Π½ΠΎ Π΄Π°Π΄ΡΡ ΡΠ΅Π°Π»ΡΠ½ΡΡ ΠΏΠΎΠ»ΡΠ·Ρ Π² ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»Ρ ΠΈΠ»ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΡ.
3.1. Π¦ΠΈΡΡΠΎΠ²ΠΎΠΉ ΡΠ΅ΡΠΌΠΎΠΌΠ΅ΡΡ Π΄Π»Ρ Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»Ρ
ΠΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ ΠΎΡ
Π»Π°ΠΆΠ΄Π°ΡΡΠ΅ΠΉ ΠΆΠΈΠ΄ΠΊΠΎΡΡΠΈ Π½Π° OLED-ΡΠΊΡΠ°Π½Π΅. ΠΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ ΠΊ ΡΡΠ°ΡΠ½ΠΎΠΌΡ Π΄Π°ΡΡΠΈΠΊΡ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ ΠΈΠ»ΠΈ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ DS18B20.
ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ:
- π‘οΈ Arduino Nano
- π‘οΈ ΠΠ°ΡΡΠΈΠΊ
DS18B20(Π²ΠΎΠ΄ΠΎΠ½Π΅ΠΏΡΠΎΠ½ΠΈΡΠ°Π΅ΠΌΡΠΉ) - π‘οΈ ΠΠΈΡΠΏΠ»Π΅ΠΉ
OLED 128x64(I2C) - π‘οΈ Π Π΅Π·ΠΈΡΡΠΎΡ
4.7 ΠΊΠΠΌ(Π΄Π»Ρ ΠΏΠΎΠ΄ΡΡΠΆΠΊΠΈ Π»ΠΈΠ½ΠΈΠΈ Π΄Π°Π½Π½ΡΡ )
ΠΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ:
- ΠΠ°ΡΡΠΈΠΊ
DS18B20ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΊD2Ρ ΠΏΠΎΠ΄ΡΡΠΆΠΊΠΎΠΉ ΠΊ5ΠΡΠ΅ΡΠ΅Π· ΡΠ΅Π·ΠΈΡΡΠΎΡ. - ΠΠΈΡΠΏΠ»Π΅ΠΉ ΡΠΎΠ΅Π΄ΠΈΠ½ΡΠ΅ΡΡΡ ΠΏΠΎ
I2C:SCL β A5,SDA β A4. - ΠΠ»Ρ ΠΊΠ°Π»ΠΈΠ±ΡΠΎΠ²ΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΡΠ°ΡΠ½ΡΠΉ Π΄Π°ΡΡΠΈΠΊ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ (ΡΡΠ°Π²Π½ΠΈΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΈΡ).
ΠΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π°:
#include
#include
#include
#include
#include
#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
Adafruit_SSD1306 display(128, 64, &Wire, -1);
void setup() {
sensors.begin();
display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
}
void loop() {
sensors.requestTemperatures();
float tempC = sensors.getTempCByIndex(0);
display.clearDisplay();
display.setTextSize(2);
display.setCursor(0,0);
display.print("Temp: ");
display.print(tempC);
display.print(" C");
display.display();
delay(1000);
}
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΡΠ»ΠΈ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΠ° ΠΏΡΠ΅Π²ΡΡΠ°Π΅Ρ 105Β°C, Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»Ρ. ΠΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π° Π½Π΅ΠΈΡΠΏΡΠ°Π²Π½ΠΎΡΡΡ ΡΠ΅ΡΠΌΠΎΡΡΠ°ΡΠ° ΠΈΠ»ΠΈ ΠΏΠΎΠΌΠΏΡ.
ΠΠ»Ρ ΡΠΎΡΠ½ΠΎΡΡΠΈ ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΠ΅ Π΄Π°ΡΡΠΈΠΊ DS18B20 Π² ΠΌΠ΅ΡΠ°Π»Π»ΠΈΡΠ΅ΡΠΊΡΡ Π³ΠΈΠ»ΡΠ·Ρ ΠΈ Π·Π°ΠΊΡΠ΅ΠΏΠΈΡΠ΅ Π΅Ρ Π½Π° ΠΏΠ°ΡΡΡΠ±ΠΊΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΠΎΡ
Π»Π°ΠΆΠ΄Π΅Π½ΠΈΡ ΡΡΠ΄ΠΎΠΌ ΡΠΎ ΡΡΠ°ΡΠ½ΡΠΌ Π΄Π°ΡΡΠΈΠΊΠΎΠΌ.
3.2. ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΊΠΎΠΉ ΡΠ°Π»ΠΎΠ½Π°
ΠΠΊΠ»ΡΡΠ°Π΅Ρ ΡΠ²Π΅Ρ Π² ΡΠ°Π»ΠΎΠ½Π΅ ΠΏΡΠΈ ΠΎΡΠΊΡΡΡΠΈΠΈ Π΄Π²Π΅ΡΠΈ ΠΈ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ Π³Π°ΡΠΈΡ Π΅Π³ΠΎ ΠΏΠΎΡΠ»Π΅ Π·Π°ΠΊΡΡΡΠΈΡ. ΠΠΎΠΆΠ½ΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡ Ρ RGB-Π»Π΅Π½ΡΠΎΠΉ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π°ΡΠΌΠΎΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΡ.
ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ:
- π‘ Arduino Nano
- π‘ ΠΠΎΠ΄ΡΠ»Ρ ΡΠ΅Π»Π΅
5Π(Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π»Π°ΠΌΠΏΠΎΠΉ) - π‘ Π’ΡΠ°Π½Π·ΠΈΡΡΠΎΡ
IRLZ44N(Π΅ΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅ LED-Π»Π΅Π½ΡΡ) - π‘ ΠΠΎΠ½ΡΠ΅Π²ΠΈΠΊΠΈ Π΄Π²Π΅ΡΠ΅ΠΉ (ΡΡΠ°ΡΠ½ΡΠ΅ ΠΈΠ»ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅)
ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΡΠ°Π±ΠΎΡΡ:
- ΠΡΠΈ ΠΎΡΠΊΡΡΡΠΈΠΈ Π»ΡΠ±ΠΎΠΉ Π΄Π²Π΅ΡΠΈ Π²ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΊΠ° Π½Π° ΠΏΠΎΠ»Π½ΡΡ ΡΡΠΊΠΎΡΡΡ.
- ΠΠΎΡΠ»Π΅ Π·Π°ΠΊΡΡΡΠΈΡ Π²ΡΠ΅Ρ Π΄Π²Π΅ΡΠ΅ΠΉ ΡΡΠΊΠΎΡΡΡ ΠΏΠ»Π°Π²Π½ΠΎ ΡΠΌΠ΅Π½ΡΡΠ°Π΅ΡΡΡ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ 10 ΡΠ΅ΠΊΡΠ½Π΄.
- ΠΡΠ»ΠΈ Π΄Π²Π΅ΡΡ ΠΎΡΠΊΡΡΡΠ° Π΄ΠΎΠ»ΡΡΠ΅ 3 ΠΌΠΈΠ½ΡΡ, ΡΠ²Π΅Ρ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡ Π² ΡΠ΅ΠΆΠΈΠΌ ΡΠ½Π΅ΡΠ³ΠΎΡΠ±Π΅ΡΠ΅ΠΆΠ΅Π½ΠΈΡ (ΠΌΠΈΠ³Π°Π½ΠΈΠ΅).
ΠΠΎΠ΄ Π΄Π»Ρ ΠΏΠ»Π°Π²Π½ΠΎΠ³ΠΎ Π·Π°ΡΡΡ Π°Π½ΠΈΡ:
const int doorPins[] = {4, 5, 6, 7}; // ΠΠΈΠ½Ρ ΠΊΠΎΠ½ΡΠ΅Π²ΠΈΠΊΠΎΠ²
const int ledPin = 9; // PWM-ΠΏΠΈΠ½ Π΄Π»Ρ LED
int brightness = 0;
unsigned long previousMillis = 0;
void setup() {
for (int i = 0; i < 4; i++) {
pinMode(doorPins[i], INPUT_PULLUP);
}
pinMode(ledPin, OUTPUT);
}
void loop() {
bool anyDoorOpen = false;
for (int i = 0; i < 4; i++) {
if (digitalRead(doorPins[i]) == LOW) {
anyDoorOpen = true;
break;
}
}
if (anyDoorOpen) {
brightness = 255;
analogWrite(ledPin, brightness);
previousMillis = millis();
} else {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis <= 10000) { // 10 ΡΠ΅ΠΊΡΠ½Π΄ Π½Π° Π·Π°ΡΡΡ
Π°Π½ΠΈΠ΅
brightness = map(currentMillis - previousMillis, 0, 10000, 255, 0);
brightness = constrain(brightness, 0, 255);
analogWrite(ledPin, brightness);
} else {
analogWrite(ledPin, 0);
}
}
}
4. Π‘Π»ΠΎΠΆΠ½ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ Π΄Π»Ρ ΠΎΠΏΡΡΠ½ΡΡ
ΠΡΠΈ ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΡΡΠ΅Π±ΡΡΡ Π·Π½Π°Π½ΠΈΠΉ CAN-ΡΠΈΠ½Ρ, ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°ΠΌΠΈ ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π°Π½Π½ΡΠΌΠΈ ΠΈ ΠΈΠ½ΠΎΠ³Π΄Π° Π²ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΡΡΠ²Π° Π² ΡΡΠ°ΡΠ½ΡΡ ΡΠ»Π΅ΠΊΡΡΠΈΠΊΡ Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»Ρ. ΠΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ ΡΡΠΎΠΈΡ ΡΡΠΈΠ»ΠΈΠΉ.
4.1. Π‘ΡΠΈΡΡΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ Ρ CAN-ΡΠΈΠ½Ρ
ΠΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ ΡΠΎ Π²ΡΠ΅Ρ
Π΄Π°ΡΡΠΈΠΊΠΎΠ² Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»Ρ: ΡΠΊΠΎΡΠΎΡΡΡ, ΠΎΠ±ΠΎΡΠΎΡΡ Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»Ρ, ΡΡΠΎΠ²Π΅Π½Ρ ΡΠΎΠΏΠ»ΠΈΠ²Π° ΠΈ Ρ.Π΄. ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡ ΠΌΠΎΠ΄ΡΠ»Ρ CAN-BUS Shield ΠΈΠ»ΠΈ MCP2515.
ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ:
- π‘ Arduino Uno (Π»ΡΡΡΠ΅ Mega Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π±ΠΎΠ»ΡΡΠ΅Π³ΠΎ ΠΎΠ±ΡΡΠΌΠ° Π΄Π°Π½Π½ΡΡ )
- π‘ ΠΠΎΠ΄ΡΠ»Ρ
MCP2515Ρ ΡΡΠ°Π½ΡΠΈΠ²Π΅ΡΠΎΠΌTJA1050 - π‘ ΠΠΈΡΠΏΠ»Π΅ΠΉ
NextionΠΈΠ»ΠΈTFT 3.5"Π΄Π»Ρ Π²ΡΠ²ΠΎΠ΄Π° Π΄Π°Π½Π½ΡΡ
ΠΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΊ CAN-ΡΠΈΠ½Π΅:
- ΠΠ°ΠΉΠ΄ΠΈΡΠ΅ ΡΠ°Π·ΡΡΠΌ
OBD-II(ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΠΎΠ΄ ΡΡΠ»ΡΠΌ). - ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΠ΅
CAN-HΠΈCAN-LΠΊ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ Π²ΡΠ²ΠΎΠ΄Π°ΠΌ ΠΌΠΎΠ΄ΡΠ»ΡMCP2515. - ΠΠΈΡΠ°Π½ΠΈΠ΅
12ΠΠ±Π΅ΡΠΈΡΠ΅ Ρ ΠΏΡΠΈΠΊΡΡΠΈΠ²Π°ΡΠ΅Π»Ρ ΡΠ΅ΡΠ΅Π· ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
ΠΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π° Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΡΠΊΠΎΡΠΎΡΡΠΈ:
#include
#include
MCP2515 mcp2515(10); // CS-ΠΏΠΈΠ½
void setup() {
Serial.begin(115200);
mcp2515.reset();
mcp2515.setBitrate(CAN_500KBPS);
mcp2515.setNormalMode();
}
void loop() {
struct can_frame canMsg;
if (mcp2515.readMessage(&canMsg) == MCP2515_OK) {
if (canMsg.can_id == 0x200) { // ID ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΡΠΎ ΡΠΊΠΎΡΠΎΡΡΡΡ (Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π°Π²ΡΠΎ)
int speed = canMsg.data[0];
Serial.print("Π‘ΠΊΠΎΡΠΎΡΡΡ: ");
Serial.print(speed);
Serial.println(" ΠΊΠΌ/Ρ");
}
}
}
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΠ΅ Π²ΡΠ΅ Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ CAN-ID Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ
. ΠΠ»Ρ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ SavvyCAN ΠΈΠ»ΠΈ CANalyze.
ΠΠ°ΠΊ Π½Π°ΠΉΡΠΈ Π½ΡΠΆΠ½ΡΠΉ CAN-ID?
ΠΠ»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠ² ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ:
1. ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΠ΅ Arduino Ρ MCP2515 ΠΊ OBD-II.
2. ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ Π²ΡΠ΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ Π² Serial Monitor.
3. ΠΠ°ΠΆΠΌΠΈΡΠ΅ Π½Π° ΠΏΠ΅Π΄Π°Π»Ρ Π³Π°Π·Π° ΠΈΠ»ΠΈ Π²ΠΊΠ»ΡΡΠΈΡΠ΅ ΠΏΠΎΠ²ΠΎΡΠΎΡΠ½ΠΈΠΊ β ΡΠ°ΠΊ Π²Ρ Π½Π°ΠΉΠ΄ΡΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ ΡΡΠΈΠΌΠΈ ΡΠΎΠ±ΡΡΠΈΡΠΌΠΈ.
4. ΠΠ°ΠΏΠΈΡΠΈΡΠ΅ CAN-ID ΠΈ Π±Π°ΠΉΡΡ Π΄Π°Π½Π½ΡΡ
, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡΡ.
4.2. Π‘ΠΈΡΡΠ΅ΠΌΠ° ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π΄Π°Π²Π»Π΅Π½ΠΈΡ Π² ΡΠΈΠ½Π°Ρ (TPMS)
Π‘Π°ΠΌΠΎΠ΄Π΅Π»ΡΠ½Π°Ρ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° ΡΡΠ°ΡΠ½ΡΠΌ Π΄Π°ΡΡΠΈΠΊΠ°ΠΌ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π±Π΅ΡΠΏΡΠΎΠ²ΠΎΠ΄Π½ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ NRF24L01 Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ Π΄Π°Π½Π½ΡΡ
Ρ ΠΊΠΎΠ»ΡΡ Π½Π° ΡΠ΅Π½ΡΡΠ°Π»ΡΠ½ΡΠΉ Π±Π»ΠΎΠΊ.
ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ:
- π 4 Γ Arduino Pro Mini (ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ Π½Π° ΠΊΠΎΠ»Π΅ΡΠΎ)
- π 4 Γ ΠΠ°ΡΡΠΈΠΊ Π΄Π°Π²Π»Π΅Π½ΠΈΡ
MPX5700ΠΈΠ»ΠΈHSCMRRN001PDAA3 - π 4 Γ ΠΠΎΠ΄ΡΠ»Ρ
NRF24L01(ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΠΈΠΊΠΈ) - π 1 Γ Arduino Nano (ΠΏΡΠΈΡΠΌΠ½ΠΈΠΊ Π² ΡΠ°Π»ΠΎΠ½Π΅)
- π ΠΠΈΡΠΏΠ»Π΅ΠΉ
LCD 1602ΠΈΠ»ΠΈOLED
Π‘Ρ Π΅ΠΌΠ° ΡΠ°Π±ΠΎΡΡ:
- ΠΠ°ΡΡΠΈΠΊΠΈ Π½Π° ΠΊΠΎΠ»ΡΡΠ°Ρ ΠΈΠ·ΠΌΠ΅ΡΡΡΡ Π΄Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΡΠ΅ 5 ΡΠ΅ΠΊΡΠ½Π΄.
- ΠΠ°Π½Π½ΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΏΠΎ ΡΠ°Π΄ΠΈΠΎ Π½Π° ΡΠ΅Π½ΡΡΠ°Π»ΡΠ½ΡΠΉ Π±Π»ΠΎΠΊ.
- ΠΡΠΈ ΠΏΠ°Π΄Π΅Π½ΠΈΠΈ Π΄Π°Π²Π»Π΅Π½ΠΈΡ Π½ΠΈΠΆΠ΅
1.8 Π±Π°ΡΠ²ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π·Π²ΡΠΊΠΎΠ²ΠΎΠΉ ΡΠΈΠ³Π½Π°Π».
ΠΠΎΠ΄ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΠΈΠΊΠ° (Π½Π° ΠΊΠΎΠ»Π΅ΡΠ΅):
#include
#include
#include
RF24 radio(7, 8); // CE, CSN
const byte address[6] = "00001";
void setup() {
radio.begin();
radio.openWritingPipe(address);
radio.setPALevel(RF24_PA_MIN);
radio.stopListening();
}
void loop() {
float pressure = analogRead(A0) * 0.00488; // ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ADC Π² Π΄Π°Π²Π»Π΅Π½ΠΈΠ΅
radio.write(&pressure, sizeof(pressure));
delay(5000);
}
ΠΠΎΠ΄ Π΄Π»Ρ ΠΏΡΠΈΡΠΌΠ½ΠΈΠΊΠ° (Π² ΡΠ°Π»ΠΎΠ½Π΅):
#include
#include
#include
#include
RF24 radio(7, 8);
const byte address[6] = "00001";
LiquidCrystal_I2C lcd(0x27, 16, 2);
float pressures[4] = {0};
void setup() {
radio.begin();
radio.openReadingPipe(0, address);
radio.setPALevel(RF24_PA_MIN);
radio.startListening();
lcd.init();
lcd.backlight();
}
void loop() {
if (radio.available()) {
float pressure;
radio.read(&pressure, sizeof(pressure));
// ΠΠ΄Π΅ΡΡ Π»ΠΎΠ³ΠΈΠΊΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ, Ρ ΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠΎΠ»Π΅ΡΠ° ΠΏΡΠΈΡΠ»ΠΈ Π΄Π°Π½Π½ΡΠ΅
// ΠΈ Π·Π°ΠΏΠΈΡΡ Π² ΠΌΠ°ΡΡΠΈΠ² pressures[]
}
lcd.clear();
for (int i = 0; i < 4; i++) {
lcd.setCursor(0, i/2);
lcd.print("T");
lcd.print(i+1);
lcd.print(":");
lcd.print(pressures[i], 1);
lcd.print("bar");
}
delay(1000);
}
ΠΠ»Ρ ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π°Π²Π»Π΅Π½ΠΈΡ Π΄Π°ΡΡΠΈΠΊΠΈ Π½ΡΠΆΠ½ΠΎ ΠΎΡΠΊΠ°Π»ΠΈΠ±ΡΠΎΠ²Π°ΡΡ. Π‘ΡΠ°Π²Π½ΠΈΡΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΈΡ Ρ ΠΌΠ°Π½ΠΎΠΌΠ΅ΡΡΠΎΠΌ ΠΏΡΠΈ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠΌ Π΄Π°Π²Π»Π΅Π½ΠΈΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, 2.0 Π±Π°Ρ) ΠΈ ΠΏΠΎΠ΄ΡΡΡΠΎΠΉΡΠ΅ ΠΊΠΎΡΡΡΠΈΡΠΈΠ΅Π½ΡΡ Π² ΠΊΠΎΠ΄Π΅.
5. ΠΡΠΎΠ΅ΠΊΡΡ Π΄Π»Ρ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ
Π£ΡΡΡΠΎΠΉΡΡΠ²Π°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΠΌΠΎΠ³ΡΡ Π·Π°ΡΠΈΡΠΈΡΡ Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»Ρ ΠΎΡ ΡΠ³ΠΎΠ½Π° ΠΈΠ»ΠΈ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ Π°Π²Π°ΡΠΈΠΉΠ½ΡΠ΅ ΡΠΈΡΡΠ°ΡΠΈΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠΌΠΌΠΎΠ±ΠΈΠ»Π°ΠΉΠ·Π΅Ρ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ Arduino ΠΈΠ»ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΎΠΏΠΎΠ²Π΅ΡΠ΅Π½ΠΈΡ ΠΎ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΈ.
5.1. ΠΠΌΠΌΠΎΠ±ΠΈΠ»Π°ΠΉΠ·Π΅Ρ Ρ RFID-ΠΌΠ΅ΡΠΊΠΎΠΉ
ΠΠ»ΠΎΠΊΠΈΡΡΠ΅Ρ Π·Π°ΠΏΡΡΠΊ Π΄Π²ΠΈΠ³Π°ΡΠ΅Π»Ρ, Π΅ΡΠ»ΠΈ ΡΡΠ΄ΠΎΠΌ Π½Π΅Ρ Π°Π²ΡΠΎΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΌΠ΅ΡΠΊΠΈ. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΌΠΎΠ΄ΡΠ»Ρ RC522 Π΄Π»Ρ ΡΡΠΈΡΡΠ²Π°Π½ΠΈΡ RFID-ΠΊΠ°ΡΡ.
ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ:
- π Arduino Nano
- π ΠΠΎΠ΄ΡΠ»Ρ
RC522 - π Π Π΅Π»Π΅
5Π(Π΄Π»Ρ ΡΠ°Π·ΡΡΠ²Π° ΡΠ΅ΠΏΠΈ Π·Π°ΠΆΠΈΠ³Π°Π½ΠΈΡ) - π RFID-ΠΊΠ°ΡΡΠ° ΠΈΠ»ΠΈ Π±ΡΠ΅Π»ΠΎΠΊ
Π‘Ρ Π΅ΠΌΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ:
- ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΠ΅
RC522ΠΊ Arduino:SDA β D10,SCK β D13,MOSI β D11,MISO β D12. - Π Π΅Π»Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΠ΅ ΠΊ
D8ΠΈ Π²ΡΠ°Π·ΡΡΠ² ΠΏΡΠΎΠ²ΠΎΠ΄Π°, ΠΈΠ΄ΡΡΠ΅Π³ΠΎ Π½Π° Π·Π°ΠΌΠΎΠΊ Π·Π°ΠΆΠΈΠ³Π°Π½ΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ,+12ΠΠ½Π° ΠΊΠ°ΡΡΡΠΊΡ). - ΠΠ°ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΉΡΠ΅ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ
UIDΠ²Π°ΡΠ΅ΠΉ ΠΌΠ΅ΡΠΊΠΈ Π² ΡΠΊΠ΅ΡΡ.
ΠΠΎΠ΄ ΠΈΠΌΠΌΠΎΠ±ΠΈΠ»Π°ΠΉΠ·Π΅ΡΠ°:
#include
#include
#define SS_PIN 10
#define RST_PIN 9
#define RELAY_PIN 8
MFRC522 mfrc522(SS_PIN, RST_PIN);
byte authorizedUID[4] = {0xA1, 0xB2, 0xC3, 0xD4}; // ΠΠ°ΠΌΠ΅Π½ΠΈΡΠ΅ Π½Π° UID Π²Π°ΡΠ΅ΠΉ ΠΊΠ°ΡΡΡ
void setup() {
SPI.begin();
mfrc522.PCD_Init();
pinMode(RELAY_PIN, OUTPUT);
digitalWrite(RELAY_PIN, LOW); // ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ°Π·ΠΎΠΌΠΊΠ½ΡΡ
}
void loop() {
if (!mfrc522.PICC_IsNewCardPresent()) {
return;
}
if (!mfrc522.PICC_ReadCardSerial()) {
return;
}
bool isAuthorized = true;
for (byte i = 0; i < 4; i++) {
if (mfrc522.uid.uidByte[i] != authorizedUID[i]) {
isAuthorized = false;
break;
}
}
if (isAuthorized) {
digitalWrite(RELAY_PIN, HIGH); // ΠΠ°ΠΌΡΠΊΠ°Π΅ΠΌ ΡΠ΅Π»Π΅
delay(5000); // ΠΠ΅ΡΠΆΠΈΠΌ 5 ΡΠ΅ΠΊΡΠ½Π΄ (Π²ΡΠ΅ΠΌΡ Π½Π° Π·Π°ΠΏΡΡΠΊ)
}
mfrc522.PICC_HaltA();
}
β οΈ ΠΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅: ΠΠ΅ΡΠ΅Π΄ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΎΠΉ ΠΈΠΌΠΌΠΎΠ±ΠΈΠ»Π°ΠΉΠ·Π΅ΡΠ° ΠΏΡΠΎΠ²Π΅ΡΡΡΠ΅, ΡΡΠΎ ΡΠ°Π·ΡΡΠ² ΡΠ΅ΠΏΠΈ Π·Π°ΠΆΠΈΠ³Π°Π½ΠΈΡ Π½Π΅ ΠΏΡΠΈΠ²Π΅Π΄ΡΡ ΠΊ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ΅ ECU. ΠΠ° Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»ΡΡ ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ·Π²Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ Π² Π±Π»ΠΎΠΊΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ.
5.2. ΠΠ°ΡΡΠΈΠΊ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ Ρ ΠΎΠΏΠΎΠ²Π΅ΡΠ΅Π½ΠΈΠ΅ΠΌ Π½Π° ΡΠ΅Π»Π΅ΡΠΎΠ½
ΠΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ SMS ΠΈΠ»ΠΈ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ Π² Telegram, Π΅ΡΠ»ΠΈ Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»Ρ Π½Π°ΡΠ°Π» Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π±Π΅Π· Π²Π°ΡΠ΅Π³ΠΎ Π²Π΅Π΄ΠΎΠΌΠ°. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ GSM-ΠΌΠΎΠ΄ΡΠ»Ρ SIM800L ΠΈ Π°ΠΊΡΠ΅Π»Π΅ΡΠΎΠΌΠ΅ΡΡ MPU6050.
ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ:
- π± Arduino Uno
- π± ΠΠΎΠ΄ΡΠ»Ρ
SIM800LΡ Π°Π½ΡΠ΅Π½Π½ΠΎΠΉ - π± ΠΠΊΡΠ΅Π»Π΅ΡΠΎΠΌΠ΅ΡΡ
MPU6050 - π± SIM-ΠΊΠ°ΡΡΠ° Ρ ΡΠ°ΡΠΈΡΠΎΠΌ Π΄Π»Ρ SMS/ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°
ΠΠΎΠ³ΠΈΠΊΠ° ΡΠ°Π±ΠΎΡΡ:
- ΠΠΊΡΠ΅Π»Π΅ΡΠΎΠΌΠ΅ΡΡ ΡΠΈΠΊΡΠΈΡΡΠ΅Ρ Π²ΠΈΠ±ΡΠ°ΡΠΈΠΈ ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ³Π»Π° Π½Π°ΠΊΠ»ΠΎΠ½Π°.
- ΠΡΠ»ΠΈ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»ΠΈΡΡΡ Π±ΠΎΠ»Π΅Π΅ 10 ΡΠ΅ΠΊΡΠ½Π΄, ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅ΡΡΡ SMS Π½Π° Π·Π°Π΄Π°Π½Π½ΡΠΉ Π½ΠΎΠΌΠ΅Ρ.
- ΠΠ»Ρ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΠΈ Π·Π°ΡΡΠ΄Π° ΠΌΠΎΠ΄ΡΠ»Ρ
SIM800LΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ΠΈΡΡΡ Π² ΡΠΏΡΡΠΈΠΉ ΡΠ΅ΠΆΠΈΠΌ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°ΠΌΠΈ.
ΠΠΎΠ΄ Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ SMS:
#include
#include
#include
MPU6050 mpu;
SoftwareSerial sim800l(7, 8); // RX, TX
void setup() {
Wire.begin();
mpu.initialize();
sim800l.begin(9600);
delay(1000);
sim800l.println("AT+CMGF=1"); // Π’Π΅ΠΊΡΡΠΎΠ²ΡΠΉ ΡΠ΅ΠΆΠΈΠΌ SMS
delay(100);
}
void loop() {
int16_t ax, ay, az;
mpu.getAcceleration(&ax, &ay, &az);
float movement = sqrt(ax*ax + ay*ay + az*az);
if (movement > 20000) { // ΠΠΎΡΠΎΠ³ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΡ
sendSMS("+79XXXXXXXXX", "ΠΠ²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΎ!");
delay(60000); // ΠΠ°ΡΠ·Π° 1 ΠΌΠΈΠ½ΡΡΠ°, ΡΡΠΎΠ±Ρ Π½Π΅ ΡΠΏΠ°ΠΌΠΈΡΡ
}
delay(1000);
}
void sendSMS(String number, String message) {
sim800l.print("AT+CMGS=\"");
sim800l.print(number);
sim800l.println("\"");
delay(100);
sim800l.print(message);
delay(100);
sim800l.write(26); // Ctrl+Z Π΄Π»Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ
delay(1000);
}
6. ΠΡΠΎΠ΅ΠΊΡΡ Π΄Π»Ρ ΠΊΠΎΠΌΡΠΎΡΡΠ°
Π£ΡΡΡΠΎΠΉΡΡΠ²Π°, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΠΎΠ΅Π·Π΄ΠΊΠΈ ΡΠ΄ΠΎΠ±Π½Π΅Π΅: Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ»ΠΈΠΌΠ°ΡΠΎΠΌ, Π³ΠΎΠ»ΠΎΡΠΎΠ²ΠΎΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΡ Ρ ΡΠΌΠ½ΡΠΌ Π΄ΠΎΠΌΠΎΠΌ.
6.1. ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΠΊΠ»ΠΈΠΌΠ°ΡΠ°
ΠΠΊΠ»ΡΡΠ°Π΅Ρ Π²Π΅Π½ΡΠΈΠ»ΡΡΠΎΡ ΠΈΠ»ΠΈ ΠΎΠ±ΠΎΠ³ΡΠ΅Π²Π°ΡΠ΅Π»Ρ ΡΠ°Π»ΠΎΠ½Π° Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ. ΠΠΎΠΆΠ½ΠΎ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠΎΠ²Π°ΡΡ Ρ CAN-ΡΠΈΠ½ΠΎΠΉ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΡΠ°ΡΠ½ΡΠΌ ΠΊΠ»ΠΈΠΌΠ°Ρ-ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΠΌ.
ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ:
- π¬οΈ Arduino Mega (Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ CAN ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ΅Π»Π΅)
- π¬οΈ ΠΠ°ΡΡΠΈΠΊ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΡ
DHT22 - π¬οΈ ΠΠΎΠ΄ΡΠ»Ρ ΡΠ΅Π»Π΅
4-ΠΊΠ°Π½Π°Π»ΡΠ½ΡΠΉ - π¬οΈ ΠΠ΅Π½ΡΠΈΠ»ΡΡΠΎΡ
12ΠΠΈΠ»ΠΈ Π½Π°Π³ΡΠ΅Π²Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ
ΠΠ»Π³ΠΎΡΠΈΡΠΌ:
- ΠΡΠ»ΠΈ ΡΠ΅ΠΌΠΏΠ΅ΡΠ°ΡΡΡΠ° Π²ΡΡΠ΅
25Β°Cβ Π²ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π²Π΅Π½ΡΠΈΠ»ΡΡΠΎΡ. - ΠΡΠ»ΠΈ Π½ΠΈΠΆΠ΅
18Β°Cβ Π²ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΎΠ±ΠΎΠ³ΡΠ΅Π². - ΠΠ°Π½Π½ΡΠ΅ Π²ΡΠ²ΠΎΠ΄ΡΡΡΡ Π½Π°
OLED-ΡΠΊΡΠ°Π½.
6.2. ΠΠΎΠ»ΠΎΡΠΎΠ²ΠΎΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»Ρ
Π£ΠΏΡΠ°Π²Π»ΡΠΉΡΠ΅ ΠΌΡΠ·ΡΠΊΠΎΠΉ, ΡΠ²Π΅ΡΠΎΠΌ ΠΈΠ»ΠΈ ΠΊΠ»ΠΈΠΌΠ°ΡΠΎΠΌ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π³ΠΎΠ»ΠΎΡΠΎΠ²ΡΡ
ΠΊΠΎΠΌΠ°Π½Π΄. ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΌΠΎΠ΄ΡΠ»Ρ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ ΡΠ΅ΡΠΈ LD3320 ΠΈΠ»ΠΈ EasyVR.
ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ:
- π€ Arduino Uno
- π€ ΠΠΎΠ΄ΡΠ»Ρ
EasyVR 3.0 - π€ Π£ΡΠΈΠ»ΠΈΡΠ΅Π»Ρ Π·Π²ΡΠΊΠ°
PAM8403(Π΄Π»Ρ ΠΌΠΈΠΊΡΠΎΡΠΎΠ½Π°) - π€ Π Π΅Π»Π΅ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π°ΠΌΠΈ
ΠΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄:
- "ΠΠΊΠ»ΡΡΠΈ ΠΎΠ±ΠΎΠ³ΡΠ΅Π² ΡΠΈΠ΄Π΅Π½ΠΈΠΉ" β Π·Π°ΠΌΡΠΊΠ°Π΅Ρ ΡΠ΅Π»Π΅ Π½Π° ΠΎΠ±ΠΎΠ³ΡΠ΅Π².
- "Π£Π²Π΅Π»ΠΈΡΡ Π³ΡΠΎΠΌΠΊΠΎΡΡΡ" β ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΈΠ³Π½Π°Π» Π½Π° ΠΌΠ°Π³Π½ΠΈΡΠΎΠ»Ρ ΠΏΠΎ
CANΠΈΠ»ΠΈIR. - "ΠΡΠΊΡΠΎΠΉ Π±Π°Π³Π°ΠΆΠ½ΠΈΠΊ" β Π°ΠΊΡΠΈΠ²ΠΈΡΡΠ΅Ρ ΠΏΡΠΈΠ²ΠΎΠ΄ Π·Π°ΠΌΠΊΠ° Π±Π°Π³Π°ΠΆΠ½ΠΈΠΊΠ°.
7. ΠΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠ° ΠΈ ΡΠ΅ΠΌΠΎΠ½Ρ Ρ Arduino
Arduino ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°ΡΡ ΠΌΠΎΡΠ½ΡΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠΌ Π΄Π»Ρ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠΈ Π½Π΅ΠΈΡΠΏΡΠ°Π²Π½ΠΎΡΡΠ΅ΠΉ Π°Π²ΡΠΎΠΌΠΎΠ±ΠΈΠ»Ρ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠ°Π±ΠΎΡΡ Π΄Π°ΡΡΠΈΠΊΠΎΠ² ΠΈΠ»ΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΠΏΠ΅ΠΉ.
7.1. Π’Π΅ΡΡΠ΅Ρ Π΄Π°ΡΡΠΈΠΊΠΎΠ² ABS
ΠΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΈΡΠΏΡΠ°Π²Π½ΠΎΡΡΡ Π΄Π°ΡΡΠΈΠΊΠΎΠ² ABS, ΠΈΠΌΠΈΡΠΈΡΡΡ Π²ΡΠ°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ»Π΅ΡΠ°. ΠΠΎΠ»Π΅Π·Π½ΠΎ Π΄Π»Ρ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ P0500 ΠΈΠ»ΠΈ C0035.
ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ:
- π§ Arduino Nano
- π§ Π’ΡΠ°Π½Π·ΠΈΡΡΠΎΡ
BC547(Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΈΠ³Π½Π°Π»ΠΎΠΌ) - π§ Π Π΅Π·ΠΈΡΡΠΎΡΡ
1 ΠΊΠΠΌΠΈ10 ΠΊΠΠΌ - π§ ΠΡΡΠΈΠ»Π»ΠΎΠ³ΡΠ°Ρ ΠΈΠ»ΠΈ ΠΌΡΠ»ΡΡΠΈΠΌΠ΅ΡΡ (Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° ΡΠΈΠ³Π½Π°Π»Π°)
Π‘Ρ Π΅ΠΌΠ° ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ:
- ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΠ΅ Π²ΡΠ²ΠΎΠ΄ Arduino ΠΊ Π±Π°Π·Π΅ ΡΡΠ°Π½Π·ΠΈΡΡΠΎΡΠ°.
- ΠΠΎΠ»Π»Π΅ΠΊΡΠΎΡ ΡΡΠ°Π½Π·ΠΈΡΡΠΎΡΠ° ΡΠΎΠ΅Π΄ΠΈΠ½ΠΈΡΠ΅ Ρ ΡΠΈΠ³Π½Π°Π»ΡΠ½ΡΠΌ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΎΠΌ Π΄Π°ΡΡΠΈΠΊΠ°
ABS. - ΠΠ°ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΉΡΠ΅ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΈΠΌΠΏΡΠ»ΡΡΠΎΠ² Ρ ΡΠ°ΡΡΠΎΡΠΎΠΉ
100 ΠΡ(ΡΠΌΡΠ»ΡΡΠΈΡ Π²ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ»Π΅ΡΠ°).
ΠΠΎΠ΄ Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΡΠΈΠ³Π½Π°Π»Π°:
const int absPin = 3;
void setup() {
pinMode(absPin, OUTPUT);
}
void loop() {
digitalWrite(absPin, HIGH);
delayMicroseconds(5000); // 100 ΠΡ = ΠΏΠ΅ΡΠΈΠΎΠ΄ 10 ΠΌΡ
digitalWrite(absPin, LOW);
delayMicroseconds(5000);
}
7.2. ΠΠΎΠ³Π³Π΅Ρ ΠΎΡΠΈΠ±ΠΎΠΊ OBD-II
ΠΠ°ΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΠΈ OBD-II Π² ΠΏΠ°ΠΌΡΡΡ Arduino ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΠΈΡ
Π½Π° ΡΠΊΡΠ°Π½. ΠΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠΈ Check Engine Π±Π΅Π· ΡΠΊΠ°Π½Π΅ΡΠ°.
ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ:
- π Arduino Mega (Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ
ELM327) - π ΠΠΎΠ΄ΡΠ»Ρ
ELM327(Bluetooth ΠΈΠ»ΠΈ USB) - π ΠΠ°ΡΡΠ° ΠΏΠ°ΠΌΡΡΠΈ
microSDΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΌ ΡΡΠ΅Π½ΠΈΡ
ΠΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠ΄Π° Π΄Π»Ρ ΡΡΠ΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ:
#include
SoftwareSerial elm(10, 11); // RX, TX
void setup() {
Serial.begin(9600);
elm.begin(9600);
delay(1000);
elm.println("ATZ"); // Π‘Π±ΡΠΎΡ
delay(1000);
elm.println("ATDPN"); // ΠΠΎΠΊΠ°Π·Π°ΡΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»
delay(1000);
elm.println