diff --git a/README.md b/README.md index e9538ea..fdc0a1e 100644 --- a/README.md +++ b/README.md @@ -41,53 +41,8 @@ RST -> 33 ``` -#### Registers +#### RFID Chip Registers -``` -Writing 0x7F to the "ComIEnReg" means the following: - - Bit 7: IRqInv=0 - Interrupts are active high - Bit 6: TxIEn=1 - Transmitter interrupt is enabled - Bit 5: RxIEn=1 - Receive interrupt is enabled - Bit 4: IdleIEn=1 - Idle interrupt is enabled - Bit 3: HiAlertIEn=1 - "High Alert" interrupt is enabled - Bit 2: LoAlertIEn=1 - "Low Alert" interrupt is enabled - Bit 1: ErrIEn=1 - Error interrupt is enabled - Bit 0: TimerIEn=1 - Timer interrupt is enabled - -The bits in the register "ComIrqReg" have the following meaning: - - Bit 7: Set1 - when written as 1, a bit value of 1 in bits 6-0 of the byte written set the corresponding register bit; when written as 0, bits 6-0 clear the corresponding register bit - Bit 6: TxIRq - Set when the last bit of Tx data has been sent - Bit 5: RxIRq - Set when the receiver detects the end of a valid data stream - Bit 4: IdleIRq - Set when the CommandReg changes the command field to the idle command - Bit 3: HiAlertIRq - Set when the Status1 register HiAlert bit is set - Bit 2: LoAlertIRq - Set when the Status1 register LoAlert bit is set - Bit 1: ErrIRq - Set when any bit in ErrorReg gets set - Bit 0: TimerIRq - Set when the TCounterValReg decrements to zero - -Writing 0x14 to the "DivIEnReg" has the following meaning: - - Bit 7: IRQPushPull=0 - IRQ is an open-drain output pin - Bit 6: reserved=0 - no known effect - Bit 5: reserved=0 - effect unknown - Bit 4: MfinActEn=1 - Allow the MFIN active interrupt request to trigger IRQ - Bit 3: reserved=0 - boundedly undefined - Bit 2: CRCIEn=1 - Permit the "DivIrqReg" bit CRCIRq to trigger IRQ - Bit 1: reserved=0 - do not set to 1 on pain of nothing - Bit 0: reserved=0 - has no purpose other than to confuse - -The register "DivIrqReg" corresponds to "DivIrqEn", and has the following bit definitions: - - Bit 7: Set2 - when written as 1, a bit value of 1 in bits 6-0 of the byte written set the corresponding register bit; when written as 0, bits 6-0 clear the corresponding register bit - Bit 6: reserved - don't ask - Bit 5: reserved - don't tell - Bit 4: MfinActIRq - MFIN is active - Bit 3: reserved - just leave it at zero and back away slowly - Bit 2: CRCIRq - when 1, the CalcCRC command is active and all data is processed - Bit 1: reserved - nothing to see here - Bit 0: reserved - are you feeling lucky, punk? -``` Interrupt method was not working because it seems reading a card does not trigger one. See https://arduino.stackexchange.com/a/76285 and https://github.com/miguelbalboa/rfid/blob/master/examples/MinimalInterrupt/MinimalInterrupt.ino diff --git a/src/globals.h b/src/globals.h index b3646f3..949a296 100644 --- a/src/globals.h +++ b/src/globals.h @@ -67,6 +67,8 @@ uint8_t buttontoignore = 0; uint32_t lastVoltage = 0; +uint loopCounter = 0; + const int startDelay = 250; String lastUid = ""; @@ -97,9 +99,9 @@ const long sleepDelay = 30000; */ //const long sleepMessageDelay = 1798000; -const long sleepMessageDelay = 22000; +const long sleepMessageDelay = 1798000; // wait until deep sleep:1800000 -const long sleepDelay = 25000; +const long sleepDelay = 1800000; #endif \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index 1e8a680..bd60c2a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -31,9 +31,11 @@ #define CS_SDCARD 22 -#define BAT_VOLTAGE_PIN 13 +#define BAT_VOLTAGE_PIN 35 -#define RFID_LOOP_INTERVAL 25 +#define RFID_LOOP_INTERVAL 30 + +#define VOLTAGE_LOOP_INTERVAL 5000 #include "globals.h" #include "WebContent.h" @@ -53,8 +55,6 @@ Audio audio; uint volume = 7; -uint rfid_loop = RFID_LOOP_INTERVAL; - AsyncWebServer server(80); DNSServer dns; @@ -110,6 +110,8 @@ void deactivateRFID() uint32_t getBatteryVoltageMv() { uint32_t voltage = analogReadMilliVolts(BAT_VOLTAGE_PIN); + Serial.print("Battery Voltage: "); + Serial.println(voltage*2); return voltage*2;//*2 because of the voltage divider. } @@ -456,9 +458,6 @@ void setup() lastVoltage = getBatteryVoltageMv(); - Serial.print("Battery Voltage in mV: "); - Serial.println(lastVoltage); - // first parameter is name of access point, second is the password AsyncWiFiManager wifiManager(&server, &dns); @@ -659,11 +658,10 @@ void loop() Serial.println("Previous not yet implemented!"); } - rfid_loop--; - if (rfid_loop == 0) + + if (loopCounter % RFID_LOOP_INTERVAL == 0) { - rfid_loop = RFID_LOOP_INTERVAL; deactivateSD(); activateRFID(); if (rfid.PICC_IsNewCardPresent()) @@ -672,6 +670,13 @@ void loop() readRFID(); } } + + if (loopCounter % VOLTAGE_LOOP_INTERVAL == 0) + { + lastVoltage = getBatteryVoltageMv(); + } + + loopCounter++; } void loop2(void *parameter)