Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 232f19a

Browse files
updates in arduino codes
1 parent 6250eff commit 232f19a

File tree

2 files changed

+274
-0
lines changed

2 files changed

+274
-0
lines changed

‎gorjaw-projects/rfid_door.cpp‎

Lines changed: 159 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,159 @@
1+
#include "SPI.h"
2+
#include "MFRC522.h"
3+
#define SS_PIN 10
4+
#define RST_PIN 9
5+
6+
int button_state = 0;
7+
int buttonPin = 7;
8+
int ledIndicator = 2;
9+
int resetPin = 5;
10+
11+
int btn_state_pin = 3;
12+
int wifi_serial_pin = 4;
13+
int rfid_validation_pin = 6;
14+
15+
16+
int doorDelay = 500;
17+
long reset_timeout = 2400000;
18+
19+
20+
MFRC522 rfid(SS_PIN, RST_PIN);
21+
MFRC522::MIFARE_Key key;
22+
23+
int qtyOfCards = 15;
24+
String registeredCards[] = {
25+
"46:0C:C8:0F", //gulbahar
26+
"26:B8:3C:1E", //mike
27+
"A6:88:E8:21", //selbi ilmyradova
28+
"23:BB:97:79", //dowletyar
29+
"C6:1D:D6:21", //Merdan
30+
"06:75:BC:1E", //dowlpack
31+
"86:FA:DF:21", //mati
32+
"6A:2B:5C:9C", //mekan
33+
"66:E5:D6:21", //dayanch
34+
"8A:4B:81:7F", //keychain (line)
35+
"C9:CE:B1:C2", //keychain
36+
"56:9B:CC:0F", // merdan (green cutted)
37+
"A6:5C:37:11", // merdan (blue bus card)
38+
"80:86:80:74", // Gelneje (cleaner)
39+
"96:D2:CB:0F", // Bagtyyar, berkarar LANY
40+
41+
};
42+
43+
44+
void setup() {
45+
Serial.begin(115200);
46+
SPI.begin();
47+
rfid.PCD_Init();
48+
49+
pinMode (buttonPin,INPUT_PULLUP);
50+
pinMode (ledIndicator,OUTPUT);
51+
digitalWrite(resetPin,1);
52+
pinMode (resetPin, OUTPUT);
53+
digitalWrite(ledIndicator, 0);
54+
55+
pinMode (btn_state_pin, OUTPUT);
56+
digitalWrite(btn_state_pin, 0);
57+
pinMode (wifi_serial_pin, OUTPUT);
58+
digitalWrite(wifi_serial_pin, 0);
59+
pinMode (rfid_validation_pin, OUTPUT);
60+
digitalWrite(rfid_validation_pin, 0);
61+
}
62+
63+
64+
void loop() {
65+
buttonModule();
66+
rfidModule();
67+
wifiSerialModule();
68+
autoResetTimeout();
69+
}
70+
71+
72+
void openDoor(){
73+
digitalWrite(ledIndicator, 1);
74+
delay(doorDelay);
75+
digitalWrite(ledIndicator, 0);
76+
delay(500); // for electrical security
77+
}
78+
79+
80+
void validateCard(String ID_key){
81+
for (int i = 0; i < qtyOfCards; i++){
82+
if (ID_key.indexOf(registeredCards[i]) >= 0){
83+
84+
Serial.println("card validated " + millis());
85+
digitalWrite(rfid_validation_pin, 1);
86+
openDoor();
87+
Serial.println(registeredCards[i]);
88+
}
89+
}
90+
}
91+
92+
93+
void buttonModule(){
94+
button_state = digitalRead(buttonPin);
95+
if (button_state == 0){
96+
Serial.println("button clicked " + millis());
97+
98+
digitalWrite(btn_state_pin, 1);
99+
openDoor();
100+
}
101+
}
102+
103+
104+
void rfidModule(){
105+
if (!rfid.PICC_IsNewCardPresent() || !rfid.PICC_ReadCardSerial())
106+
return;
107+
108+
MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);
109+
if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI &&
110+
piccType != MFRC522::PICC_TYPE_MIFARE_1K &&
111+
piccType != MFRC522::PICC_TYPE_MIFARE_4K) {
112+
// Serial.println(F("Your tag is not of type MIFARE Classic."));
113+
return;
114+
}
115+
116+
String ID_key = "";
117+
for (byte i = 0; i < 4; i++) {
118+
ID_key +=
119+
(rfid.uid.uidByte[i] < 0x10 ? "0" : "") +
120+
String(rfid.uid.uidByte[i], HEX) +
121+
(i!=3 ? ":" : "");
122+
}
123+
ID_key.toUpperCase();
124+
125+
// Serial.print("Card key: ");
126+
Serial.println(ID_key);
127+
128+
validateCard(ID_key);
129+
130+
delay(1000);
131+
132+
rfid.PICC_HaltA();
133+
rfid.PCD_StopCrypto1();
134+
}
135+
136+
void wifiSerialModule(){
137+
String stream="";
138+
if (Serial.available()!=0){
139+
stream = Serial.readStringUntil('\n');
140+
stream.trim();
141+
if (stream.length()>0){
142+
if (stream == "open_door"){
143+
digitalWrite(wifi_serial_pin, 1);
144+
openDoor();
145+
}
146+
}
147+
}
148+
}
149+
150+
151+
void(* resetFunc) (void) = 0;
152+
153+
void autoResetTimeout(){
154+
if (millis() >= reset_timeout){
155+
digitalWrite(resetPin, 0);
156+
Serial.println("reset called " + millis());
157+
resetFunc();
158+
}
159+
}

‎gorjaw-projects/sensorSlave.cpp‎

Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
#include <dht.h>
2+
int dhtSensor = 5;
3+
dht = DHT;
4+
long x=millis();
5+
// gas sensor
6+
int gasSensor = A0;
7+
int gasThreshold = 400;
8+
int waterSensor = 15; // 15 or A1
9+
// indicators and states
10+
int buzzer = 11;
11+
int greenIndicator = 12;
12+
int redIndicator = 13;
13+
// relays and throttles
14+
int wentilationFan = 6;
15+
int heaterRelay = 7;
16+
int windowRelay = 8;
17+
int gasThrottle = 9;
18+
int waterThrottle = 10;
19+
20+
// treshold of temperature
21+
int minTempTresh = 10;
22+
int maxTempTresh = 25;
23+
24+
String stream;
25+
SoftwareSerial master (2,3);
26+
27+
void setup() {
28+
pinMode(gasSensor,INPUT);
29+
pinMode(waterSensor,INPUT_PULLUP);
30+
31+
pinMode(greenIndicator, OUTPUT);
32+
pinMode(redIndicator, OUTPUT);
33+
pinMode(windowRelay, OUTPUT);
34+
pinMode(heaterRelay, OUTPUT);
35+
pinMode(gasThrottle, OUTPUT);
36+
pinMode(waterThrottle, OUTPUT);
37+
pinMode(wentilationFan, OUTPUT);
38+
// stabilize the relays and outputs
39+
digitalWrite(gasThrottle,0);
40+
digitalWrite(waterThrottle,0);
41+
digitalWrite(wentilationFan,0);
42+
digitalWrite(heaterRelay,0);
43+
digitalWrite(windowRelay,0);
44+
45+
Serial.begin(9600);
46+
master.begin(9600);
47+
}
48+
49+
void loop() {
50+
if (master.available()){
51+
stream = master.readStringUntil('\n');
52+
stream.trim();
53+
if (stream.length()>0){
54+
if (stream == "1ach"){
55+
Serial.println("planZat")
56+
}
57+
}
58+
}
59+
gas();
60+
temp();
61+
heater();
62+
water();
63+
}
64+
65+
void gas(){
66+
int analogSensor = analogRead(gasSensor);
67+
if (analogSensor>gasThreshold){
68+
digitalWrite(greenIndicator,0);
69+
digitalWrite(redIndicator,1);
70+
digitalWrite(gasThrottle,1);
71+
digitalWrite(wentilationFan,1);
72+
tone(buzzer,1000,200);
73+
}
74+
else{
75+
digitalWrite(greenIndicator,1);
76+
digitalWrite(redIndicator,0);
77+
digitalWrite(gasThrottle,0);
78+
digitalWrite(wentilationFan,0);
79+
noTone(buzzer);
80+
}
81+
}
82+
83+
void temp(){
84+
if((x+4000)<millis()){
85+
float readData = DHT.read11(dhtSensor);
86+
unsigned int t=DHT.temperature;
87+
unsigned int h=DHT.humidity;
88+
Serial.println(t);
89+
x=millis();
90+
}
91+
}
92+
93+
void heater(){
94+
if(DHT.temperature<minTempTresh){
95+
// digitalWrite(windowRelay,1);
96+
digitalWrite(heaterRelay,1);
97+
}
98+
else if(DHT.temperature>maxTempTresh){
99+
digitalWrite(heaterRelay,0);
100+
// digitalWrite(windowRelay,0)
101+
}
102+
}
103+
104+
void water(){
105+
int waterState = digitalRead(waterSensor)
106+
if(waterState==0){
107+
// digitalWrite(windowRelay,1);
108+
digitalWrite(waterThrottle,1);
109+
tone(buzzer,700,200);
110+
}
111+
else{
112+
digitalWrite(waterThrottle,0);
113+
// digitalWrite(windowRelay,0)
114+
}
115+
}

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /