Go to file
Stefan Ostermann 9b462b7eaf missing files 2023-07-15 19:54:48 +02:00
.vscode First experiments 2023-05-28 00:32:39 +02:00
images missing files 2023-07-15 19:54:48 +02:00
include missing files 2023-07-15 19:54:48 +02:00
lib missing files 2023-07-15 19:54:48 +02:00
src working rfid, more player capabilities 2023-07-09 23:00:24 +02:00
test First experiments 2023-05-28 00:32:39 +02:00
.gitignore ignore 2023-07-09 23:01:54 +02:00
README.md RFID 2023-06-28 23:47:52 +02:00
platformio.ini Card Reader WIP 2023-06-18 23:58:30 +02:00

README.md

HannaBox

Microcontroller

D1 Mini ESP32 Due to mp3 playback it needs a multicore esp 32:

This library only works on multi-core ESP32 chips like the ESP32-S3. It does not work on the ESP32-S2 or the ESP32-C3 warning

Pins

Amplifier

26 -> DIN
27 -> BCLK
25 -> LRC
5V -> Vin
GND -> GND

SD Card

CS -> 22 (D1)
MOSI -> 23 (D7)
CLK -> 18 (D5)
MISO -> 19 (D6)

RFID Reader


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

Buttons

Start / Stop -> 17 and GND

TODOs

  • Card Reader with SPI. Configure hspi, second SPI channel? Or does SD Card + RFID run at the same channel?

https://github.com/earlephilhower/ESP8266Audio

Running two SPI devices at once