Senior Embedded Software & Hardware developer
Höhere Stufe (5-10 Jahre)
Diese Stelle ist nicht mehr aktiv, aber Sie können Ihre Bewerbung senden
This job is ONLY for this project!:
- Hardware design
- C/C++, embedded C and assembler
- programming ARM and ATMEL micro controllers
- would be a plus if he's got experience in digital signal processing, capable of filtering a very high level of noise, preferably with prior knowledge in filtering audio or radio signals
The project is a magnetic stripe card reader.
Everything has been done previously on ATXMEGA32A4, but because of the requests, a new hardware has been made with ATSAMD21E16A micro controller. Because everything was moved from 8bit to 32bit controller, the firmware had to be rewritten.
Before it was written in assembler, but now is written in C.
Status so far:
- Hardware is made from 2 parts:
USB connection interface.
The device itself - The firmware has to be made according with this hardware which is already made.
- USB communication - already implemented with in-code samples of using it .
- The magnetic stripe reading part is also there but was not tested, also more functionality on the microcontroller was configured or initialized.
- Data encryption
What's left to be done:
- USB connection hardware interface has to be remade as the connection pads where made in “mirror“.
- Data on the flash should be encrypted with a one-time programmable encryption key.
- The device should also have a "demo mode" with limited number of swipes and be upgradable by entering a one-time programmable upgrade code.
- The device should have an access password (configurable - as in reprogrammable).
- The one-time programmable encryption key, one-time programmable upgrade key and configurable password would preferably be stored internally in the microcontroller in any of it's non-volatile memories, all 3 parameters should be set on first start of an unconfigured device.
- Investigate the source of the incredible noise level currently seen by the ADC (Hint: possible reason: signal output from the DAC, if this is the case it could be easily avoided by connecting the DAC output pin to ground and disabling the DAC)
- The device should be able to decode an f2f signal on 2 channels readable by ADC channels 5 and 6
- Common pin is ADC channel 2 (same as DAC VOUT), however in differential mode it should also work with this pin grounded
- Data is to be stored sequentially into the flash and retrieved from there only when connected to USB. Once this functionality is done you can focus on power saving. There is a pin which will be connected to ground when the usb is connected, you should configure it with pull-up enabled and only enable the usb controller when it's actually connected.
- Also make sure to lower operating frequency when not connected to USB since 48MHz is way too much for the application. With a new frequency you will also have to adapt the ADC prescaler. Make sure to sample at higher than 50Khz/channel for an accurate result.
The sampling and decoding code is already written but will not work due to the huge noise.
There is a variable named threshold in the structure for each track, this was currently manually set and is likely not the proper one, this should instead be auto-detected at bootup of the device from the max difference between 2 consecutive noise samples... Do at leastsamples before setting this value.
- Once everything else works you can further reduce power usage by using the dma controller and event system and processing data in bigger chunks at one time and sleeping between sampling and processing instead of busy-waiting for a result from the ADC
Deadline: 3 weeks!
***** Price: 4,000Euro. Bonus if finished in 2 weeks! *****
Location can be anywhere.