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 b882b8c

Browse files
authored
Merge pull request #2 from mikebionic/arduino_codes
Arduino codes readme update
2 parents 6250eff + 7ddc1f2 commit b882b8c

File tree

3 files changed

+275
-0
lines changed

3 files changed

+275
-0
lines changed

‎README.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ If you have a project to share, feel free to create a branch and send me a merge
1313
- Python Flask robo-cam control
1414
- Intravenous usage with SIM900 module
1515
- Fingerprint TTL and Adafruit based Door lock security system
16+
- RFID Tag based door lock & logger system
1617
- Height measurer with ultrasonic sensor
1718
- Automated Incubator system code
1819
- Magic mirror widget using Python Flask

‎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 によって変換されたページ (->オリジナル) /