1
I
C. T.
Centrul de pregătire pentru performanță PERM în Programare –
Electronică – Robotică – Mecanică
Adresă sites PERM: https://sites.google.com/site/cpppetrumaior/
C.T. „Mircea cel Bătrân” C.T. „Petru Maior”
Secțiune: EDUCAȚIA ȘI ÎNVĂȚĂMÂNTUL
TEHNIC ȘI PROFESIONAL
Titlul: Optimizarea unei locuințe cu
comandă GSM
Autori:
Prof. Ing. Pițigoi Andrei
Prof. Ing. Gaidoș Nicoleta
2
Cuprins:
1. Optimizarea unei locuințe cu comandă GSM ....................................................................... 3
1.1. Noțiuni introductive ............................................................................................................ 3
1.2. Utilizare ........................................................................................................................... 4
1.3. Funcționarea elementelor componenente ........................................................................ 5
1.3.1. Arduino Atmega 2560 .............................................................................................. 5
1.3.2. Releu de comandă .................................................................................................... 5
1.3.4. Modul GSM .............................................................................................................. 6
1.3.5. Driver pentru motor de c.c. ...................................................................................... 8
1.3.6. Tastatură ................................................................................................................... 9
1.3.7. Senzor de temperatură ............................................................................................ 10
1.3.8. Senzor pentru telecomandă - Receptor Infrarosu CHQ1838.................................. 11
1.4. Interfață telefon ............................................................................................................. 12
1.5. Realizare practică .......................................................................................................... 13
1.6. Posibilități de extindere ................................................................................................. 14
1.7. Bibliografie .................................................................................................................... 14
3
1. Optimizarea unei locuințe cu comandă GSM
1.1. Noțiuni introductive
Conceptul de casă inteligentă prin contrast cu o casă tipică, reprezintă de exemplu:
pornirea aerului condiționat, închiderea luminii sau reglarea căldurii.
Electronicele și electrocasnicele într-o casă inteligentă pot fi comandate centralizat, de
la distanță. Utilizatorii vor putea crea principii de automatizare de genul “pornește centrala
termică și verifică temperatura”.
În prima fază inteligența se va traduce în posibilitatea de a controla de la distanță
dispozitivele din casă și setarea de reguli automate pentru funcționarea acestora. Poate în
viitor vom vorbi și de inteligențe artificiale care vor decide ce este mai bine pentru noi, însă
momentan nu este cazul.
Cea mai frecventa întrebare este probabil “la ce ne folosește o casa inteligenta?”
➢ Oferă siguranță și confort
➢ Este un loc dotat cu tehnologie, deci ”cool”
➢ Comandă funcționarea echipamentelor de la distanță prin satelit
➢ Permite monitorizarea permanentă a casei de la distanță
➢ Conține materiale ecologice și sisteme neconvenționale de producere a energiei
electrice (ex. panouri solare).
➢ Și lista poate continua…!
4
În cabinetul proiectului PERM era macheta unei case și așa a venit ideea….
Partea practică s-a efectuat pe un model de casă în miniatură prezentată în imaginea de
mai jos.
1.2. Utilizare
Rezumat. Realizarea comenzilor prin GSM are drept obiectiv optimizarea funcționării
instalațiilor și echipamentelor electrice, utilizând instrucțiuni de programare în limbajul
C++.
Schema de principiu
Pentru realizarea proiectului am avut în vedere să proiectez următoarele componente:
componenta hardware și componenta software.
Componenta hardwer cuprinde următoarele componente: conductoare electrice,
relee de comandă, motor de c.c., modul GSM, dulie, bec, radiator electric, senzor de
temperatură, tastatură, senzor fotoelectric, alimentatoare și leduri.
Componenta software cuprinde următorul program: Arduino.
În figura de mai jos se prezintă schema bloc pentru simplificarea funcționării
comenzilor GSM.
5
Schemă bloc
1.3. Funcționarea elementelor componenente
1.3.1. Arduino Atmega 2560
1.3.2. Releu de comandă
6
Program:
Releul de comandă acționează aprindere și stingerea unui led.
void setup() {
Serial.begin(9600);
pinMode(36,OUTPUT);
}
void loop() {
bec();
}
void bec(){
digitalWrite(36,HIGH);
delay(1000);
digitalWrite(36,LOW);
delay(1000);
}
1.3.4. Modul GSM
Program EMISIE:
Modul GSM transmite la telefon o valoare numerică sub formă zecimală.
char b[10];
int c;
void setup() {
Serial.begin(115200);
Serial2.begin(38400);
}
void loop() {
while(Serial2.available()) Serial.write(Serial2.read());
while(Serial.available()) Serial2.write(Serial.read());
trimitere();
delay(100);
}
void trimitere()
7
{
Serial2.print("\r");
delay(1000);
Serial2.print("AT+CSCS=\"GSM\"\r");
delay(1000);
Serial2.print("AT+CMGF=1\r");
delay(1000);
Serial2.print("AT+CMGS=\"+40727083523\"\r");
delay(1000);
c=250;
b[10]=itoa(c,b,10);
Serial2.print(b);
delay(1000);
Serial2.write(0x1A);
delay(1000);
}
Program RECEPȚIE:
Telefonul transmite un SMS la modul GSM.
int a;
bool ledStatus;
void setup()
{
Serial.begin(115200);
Serial2.begin(38400);
delay(100);
Serial2.print("AT+CMGF=1\r");
delay(100);
Serial2.print("AT+CSCS=\"GSM\"");
Serial2.print("\r");
delay(100);
Serial2.print("AT+CMGF=1\r");
delay(100);
Serial2.print("AT+CNMI=1,2,0,0,0\r");
delay(100);
Serial2.println("AT+CMGD=1");
delay(100);
}
char currentLine[500] = "";
int currentLineIndex = 0;
bool nextLineIsMessage = false;
void loop() {
if(Serial2.available()){
char lastCharRead = Serial2.read();
if(lastCharRead == '\r' || lastCharRead == '\n'){
String lastLine = String(currentLine);
if(lastLine.startsWith("+CMT:")){
8
Serial.println(lastLine);
nextLineIsMessage = true;
}else if(lastLine.length() > 0) {
if(nextLineIsMessage) {
Serial.println(lastLine);
a=atoi(lastLine.c_str());
Serial.println(a);
if(a==44){
Serial.println("adevarat");
}else{
Serial.println("fals");
}
Serial.println("jhgft");
if(lastLine.indexOf("LED ON") >= 0){
ledStatus = 1;
}else if(lastLine.indexOf("LED OFF") >= 0) {
ledStatus = 0;
}
nextLineIsMessage = false;
}
}
for( int i = 0; i < sizeof(currentLine); ++i ) {
currentLine[i] = (char)0;
}
currentLineIndex = 0;
}else{
currentLine[currentLineIndex++] = lastCharRead;
}
}
}
1.3.5. Driver pentru motor de c.c.
Program:
Driver-ul acționează motorul electric de c.c.
int MOTOR1_PIN1 = 2;
int MOTOR1_PIN2 = 3;
void setup() {
pinMode(MOTOR1_PIN1, OUTPUT);
9
pinMode(MOTOR1_PIN2, OUTPUT);
Serial.begin(9600);
}
void loop() {
motor();
}
void motor() {
analogWrite(MOTOR1_PIN1,200);
analogWrite(MOTOR1_PIN2,0);
delay (1000);
analogWrite(MOTOR1_PIN1,0);
analogWrite(MOTOR1_PIN2,200);
delay(1000);
}
1.3.6. Tastatură
Tastatură Leduri
Program:
Tastatura pornește motorul electric de c.c. și aprinde ledurile.
#include <Keypad.h>
int MOTOR1_PIN1 = 2;
int MOTOR1_PIN2 = 3;
const byte ROWS = 4;
const byte COLS = 4;
char hexaKeys[ROWS][COLS] = {
{'1','4','7','*'},
{'2','5','8','0'},
{'3','6','9','#'},
{'A','B','C','D'}
};
byte rowPins[ROWS] = {44, 42, 40, 38};
byte colPins[COLS] = {52, 50, 48, 46};
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS,
COLS);
10
void setup(){
Serial.begin(9600);
pinMode(30,OUTPUT);
pinMode(20,OUTPUT);
pinMode(MOTOR1_PIN1, OUTPUT);
pinMode(MOTOR1_PIN2, OUTPUT);
}
void loop(){
tastatura();
}
void tastatura(){
char customKey = customKeypad.getKey();
if(customKey=='1'){
Serial.println(customKey);
digitalWrite(30,HIGH);
digitalWrite(20,LOW);
analogWrite(MOTOR1_PIN1,200);
analogWrite(MOTOR1_PIN2,0);
}else if(customKey=='2'){
Serial.println(customKey);
digitalWrite(20,HIGH);
digitalWrite(30,LOW);
analogWrite(MOTOR1_PIN1,0);
analogWrite(MOTOR1_PIN2,200);
}else if(customKey=='3'){
Serial.println(customKey);
digitalWrite(30,LOW);
digitalWrite(20,LOW);
analogWrite(MOTOR1_PIN1,0);
analogWrite(MOTOR1_PIN2,0);
}
}
1.3.7. Senzor de temperatură
Program:
Senzorul de temperatură citește temperatura într-un mediu ambiant.
int count=10;
int reztemp;
void setup() {
11
pinMode(A0,INPUT);
Serial.begin(9600);
}
void loop() {
temperatura();
Serial.println(reztemp);
delay(200);
}
void temperatura(){
int sumaTemperatura=0;
int temperatureCelsius=0;
for (int i =0; i<count; i++) {
int reading=analogRead(A0);
float voltage =reading*5.0;
voltage/=1024.0;
temperatureCelsius=(voltage-0.5)*100;
sumaTemperatura = sumaTemperatura + temperatureCelsius;
reztemp=sumaTemperatura/count;
}
}
1.3.8. Senzor pentru telecomandă - Receptor Infrarosu CHQ1838
Program:
Program: Senzorul CHQ1838 comandă acționarea unor echipamente electrice în funcție
de comaneziile primite de la telecomandă.int cu;
#include "IRremote.h"
int receptie = 2;
int a;
IRrecv irrecv(receptie);
decode_results results;
void setup(){
Serial.begin(9600);
irrecv.enableIRIn();
}
void loop() {
if (irrecv.decode(&results)) {
Serial.println(results.value, BIN);
a=results.value;
Serial.println(a);
irrecv.resume();
}
}
12
1.4. Interfață telefon
Intefața telefonului a fost realizată în programul MIT App Invertor, fiind un program
care utilizează o programare grafică.
Program MIT App Invertor
Interfață telefon
13
1.5. Realizare practică
Cursuri PERM
14
1.6. Posibilități de extindere Posibilitățile de extindere a studiului început în cadrul acestei teme se poate baza pe:
➢ Creștere numărului de senzori;
➢ Optimizarea funcționării senzorilor;
➢ Utilizarea temei în domeniul auto;
➢ Utilizarea temei în domeniul medicinii.
În realizarea proiectului s-au utilizate materiale și dispozitive care asigură un consum redus
de energie electrică, costuri minime și fără agresarea mediului înconjurător.
1.7. Bibliografie
1. Alexandru M., Sisteme de măsurare cu traductoare, Editura Matrixrom, 2012.
2. Alexandrescu L, Acustică aplicată, Editura Orator, Braşov 2004.
3. Barna E., Barna V., Cucu C., Miron, C., Mecanică fizică și acustică (II), Editura
Universității Bucureşti, 2010.
4. Barlea N-M, Fizica senzorilor, Editura Albastra, Cluj Napoca, 2000.
5. https://shopniac.ro/case-inteligente-1616/