Motorcykel/PushBike larmsystem (6 / 7 steg)
Steg 6: Systemets funktion
Efter sköljningen vid är det första koden gör att kontrollera om torka knappen trycks (om det är pressade och för mer än 5 sekunder det kontrollerar EEPROM för alla andra värden än 0xFF och skriva 0xFF till dessa platser, rensa EEPROM men minimera antalet skriva cykler). Detta är vad du kommer att behöva göra skulle du förlora Master Card.
Den kontrollerar sedan EEPROM minnesadress 1. Om detta läge inte håller nummer 143 (som det brukar på första växeln på) sedan vet det att en Master Card inte har definierats. Systemet kommer nu att vänta tills du skannar ett tag/kort, när du gör det kommer att lagra kort unikt ID i till EEPROM och skriva värdet 143 i minnesadress 1. Detta kort då blir Master Card och används för att ställa in systemet i till "Program Mode".
Systemet kontrollerar nu ständigt för ett giltigt tag/kort. Vid denna punkt kommer du inte har några giltiga Taggar/kort som har lagts till i åtkomstlistan. För att göra detta måste du skanna Master Card igen. Nu systemet kommer att gå till "Program Mode", som kommer att framgå av de intermittent signaler från summern (eller cykling genom röda, gröna och blå LED-färger). Att lägga till en kort/tagg tillgång lista Skanna bara den och systemet kommer att lägga till unikt ID i listan. Om detta kort lades redan tidigare systemet ser som unikt ID redan i EEPROM och tar bort den, praktiskt om du vill ta bort alla kort från listan. Du kan lägga till/ta bort fler Taggar/kort på denna punkt, och när du är klar bara skanna Master Card igen för att avsluta "Program-läge".
Kontrollera om master card definieras, om inte låta användaren välja ett master card
Detta också nyttigt att bara omdefiniera Master Card
Du kan hålla andra EEPROM poster bara skriva än 143 till EEPROM adress 1
EEPROM adress 1 bör hålla magiska nummer som är "143"
om (EEPROM.read(1)! = 143)
{
Serial.println F ("ingen Master Card definieras").
Serial.println F ("Scan en PICC att definiera som Master Card").
göra
{
successRead = getID(); anger successRead till 1 när vi få läsa från läsare annars 0
digitalWrite (blueLed, LED_ON); visualisera Master Card måste definieras
Delay(200);
digitalWrite (blueLed, LED_OFF);
Delay(200);
} medan (! successRead); programmet går längre medan ingen framgångsrik Läs
för (int j = 0; j < 4; j ++) / / slinga 4 gånger
{
EEPROM.write (2 + j, readCard [j]); skriva att skannade PICC'S UID till EEPROM, start från adress 3
}
EEPROM.write (1, 143); skriva till EEPROM vi har definierat Master Card
Serial.println F ("Master Card definieras").
}
Serial.println(F("---"));
Serial.println (F ("Master Card UID"));
för (int jag = 0; jag < 4; i ++) / / läsa Master Card UID från EEPROM
{
masterCard [i] = EEPROM.read (2 + i); skriva den till masterCard
Serial.Print (masterCard [i], HEX);
}
Serial.println("");
Serial.println(F("---"));
Delay(2000);
Serial.println (F ("allt redo"));
Serial.println F ("väntar PICCs som ska genomsökas").
cycleLeds(); allt är redo, kan ge användaren lite feedback
Nu när du har ett giltigt tag/kort du kan arm systemet genom att skanna och du bör höra ett pip från summern. Skanna det igen kommer att avväpna systemet och ljuder två pipsignaler från summern.
Med systemet beväpnade, om MPU6050 detekterar rörelse som överstiger de gränser som du tidigare anges i början av skissen (ACCEL_SENSITIVITY och GYRO_SENSITIVITY) överför NRF24L01 helt enkelt nummer 1 ut till mottagarenheten. Mottagarenheten konfigureras för att generera några larm villkor när den tar emot nummer 1 som visas senare.
Följande funktion inom den sändande skissen är vad som används för att överföra:
void triggerAlarm()
{
nu disabe MFRC522
pinMode (RST_PIN, OUTPUT);
digitalWrite (RST_PIN, låg);
pinMode (SS_PIN, OUTPUT);
digitalWrite (SS_PIN, låg);
Delay(50);
byte sendCommand = 1;
digitalWrite (SS, hög);
digitalWrite (CHIP_ENABLE, låg);
digitalWrite (CHIP_SELECT, hög); Aktivera NRF24L01
SPI.begin();
radio.setPALevel(RF24_PA_MAX); Tx inställd på max effekt
radio.setDataRate(RF24_250KBPS); bättre räckvidd
radio.setChannel(108); 2.508 GHz - ovanför de flesta WiFi kanaler
radio.BEGIN();
radio.setRetries (15, 15);
radio.setPayloadSize(8);
radio.openWritingPipe (pipes[0]); anger Tx adress
radio.openReadingPipe (1, pipes[1]); Anger antalet RXS och adresser
radio.startListening();
Delay(10);
radio.stopListening();
radio.write (& sendCommand, sizeof sendCommand); Skicka ett kommando
radio.startListening();
radio.powerDown();
nu åter aktivera MFRC522
SPI.begin();
mfrc522. PCD_Init();
mfrc522. PCD_SetAntennaGain (mfrc522. RxGain_max);
}
Observera att MFRC522 inaktiveras innan vi använder NRF24L01 som de delar SPI bussen för kommunikation. Det finns även några andra inställningar ta noterar att vi också måste ställa in i systemets mottagare. Vi har satt på radion till max effekt, 250KB/s data Betygsätt och kanalisera 108 att hjälpa till med utbud.
När radion är klar sänder styrsignal (nummer 1) radion är inställd avstängning och MFRC RFID läsaren aktiveras igen.