Introduction: MATIMI - Monitoring and Assistive Technologies for Individuals With Mobility Impairments
As the title suggest, this project allows persons with motor disabilities (partial or full loss of control of body parts as a result of disease, trauma or defect) to acquire control of external devices and systems, such as lights, mechanical apparatus (electrical-mechanically controlled bed, as those used in hospitals), smartphones, computers, and many others. The projects also cover the monitoring and alarm signaling of various parameters of user's health (pulse, blood pressure and oxygen saturation, body temperature), and environment (ambient temperature, spot IR temperature, various hazardous gaseous concentrations in air, dust pollution concentration and gamma radiation dose count). All these parameters can be viewed graphically by a supervisor (be it a trained professional, or a family member) using a Windows PC or Android device via a local Wi-Fi interface or the Internet, through which the set upper and lower thresholds can also be viewed and modified. The alarm status (over or under set limits) is signaled by sending an alert SMS to a set number, displaying a message on a local Bluetooth-connected smartwatch, and also acoustically by the on-board piezo buzzer. The smartwatch also allows the supervisor real-time view of the measured parameters' current values and alarm(s) status. The assistive technology consists of an EEG and EMG signal amplification, capture and processing system, together with a more trivial sip-and-puff interface. The EMG signals will be from the user’s certain functioning muscles (for ex. the Trapezius group). This project was created as a contest entry for the 2016 edition of Digilent's Design Contest.
Step 1: Hardware Design
Pic1. All the components are mounted in an aluminum hard-box, for easier storage, transport and installation.
Pic2. The main part of the project is Digilent's Zybo board, a Xilinx Zynq XC7Z010 FPGA- powered board equipped with multiple peripherals. This provides the central data manipulation of the whole project, and was used due to its particular FPGA-ARM architecture combination (see manufacturer’s website). An USB cable is permanently mounted for easier connection to a PC for debugging. All PMOD (GPIO) connections were used, including the XADC (Xilinx analog-digital-converter) inputs. The other available interfaces could be used for future purposes.
Pic3,4,5. The next largest component is the EEG/EMG amplification and analog-digital conversion. As the target signals are of very low amplitude (in the order on tens, hundreds of nV) and frequency (0~60Hz, 70~100Hz respectively), the assembly is mounted in a separate, shielded box, to reduce external interference. The input stage (input protection, signal amplification, low- and high-pass analog filtering), power regulation, sip-and-puff pressure sensor signal amplification are all incorporated on one single PCB which was manually designed, manufactured and assembled (as noted by the non-coated copper traces), and includes optocoupled digital interface to the FPGA board, for added user protection from dangerous voltages. The power supply is available from a pack of batteries, isolated from the rest of the supplies, for even more protection. The A/D conversion is done using an off-the-shelf Texas Instruments ADS1278 Evaluation module, out of its 8 channels only 5 are used - two EEG, two EMG and one sip-and-puff. This part of the project is still work in progress, as it requires more complex signal acquisition and processing (difficulties including the signal probes and cables as seen in the fifth photo).
Pic6. On top of the EEG/EMG box a connection box was mounted, to allow easier interface with the main power supply (AC main line to 10,5V power adapter, or “power brick”), and also to:
a) Contec CMS50E Pulse Oximeter (for pulse count and blood oxygen saturation),
b) Maxim Integrated (Dallas Semiconductor) DS18B20 digital thermometer (for body temperature measurement, it being inserted under the user’s armpit).
Pic7,8. The blood pressure is measured using a standard consumer-level device (Beurer BM58) which was reversed-engineered and modified (see eight picture) so that the measurement can be started externally, and the measured results be transferred to the Zybo via a digital interface. As a result, 5 digital signals are required to be set/read by the main board, with the interface being SPI, in which the meter acts as a master.
Pic9. Next, the wireless interface modules are mounted next to each other. These include:
a) SimComm SIM800l, for the SMS send/receive function. Through it messages signaling that certain parameters measured are out of set thresholds can be sent to a pre-set number (i.e. the supervisor’s). It also allows sending the current values, following a request by the sender (request received also via SMS, using a keyword).
b) Espressif ESP8266, set as a Wi-Fi access-point, for wireless bi-directional transmission of data, as described in the project intro.
c) Digilent BT2 (Microchip RN42), which fulfills the connection to a Sony-Ericsson MN800 Liveview smartwatch, as noted before. The Bluetooth profile required is the most trivial one, SPP, which is present also on other cheaper Bluetooth-to-Serial modules (such as HC-05, HC-06), but those lack some hardware features that the RN42 has (external reset and connection status signals).
d) Generic Bluetooth HID module. As always, where there is genuine there are also Chinese generic clones. This particular one is used due to its HID profile, which allows the FPGA board to control any HID-compatible devices (PC, smartphone) via HID-compliant commands, thus simulation a Bluetooth keyboard.
Pic10. The next component is a Dallas DS1037 RTC module, which is used for setting the time and date on the Liveview smartwatch, due to the fact that the smartwatch time-keeping resets after each power cycle, and the correct time is required for stable usage. The module also includes a Microchip 24C32 EEPROM chip, onto which all the set thresholds for all measured parameters are stored and read from, so that there is no need for re-setting them after each FPGA power-cycle.
Pic11. Under the RTC board is an Melexis MLX90614 IR (infrared) temperature sensor. This allows non-contact measurement, and was used to detect high temperatures (most likely due to fires). Thus it is mounted sensor faced up (to measure the temperature above, as in a fire the heat rises up, so it is detected early). The chip also measures its case temperature, which is used as a local (ambient) temperature measurement.
Pic12. Next to the IR thermometer is a home-made buzzer board, which signals any alarms sent by the Zybo board.
The larger board on the right is an Pollin Geiger-Muller Zahler (Geiger-Muller counter), that allows measurement of ambient gamma radiation. As the output is a pulse for each ionizing tube pulse, the pulses are counted for each minute and translated to percent value out of the maximum permissible radiation dosage (1uSv per year).
Pic13. Above the radiation counter, the three gas and dust sensors are present. They consist of Hanwei Electronics MQ-8 (H2 concentration), MQ-9 (CO2 concentration) and MQ135 (hazardous gases concentration), and also a Sharp GP2Y1010AU0F to measure the dust-in-air concentration. As all of these sensor operate at a voltage of 5V and output the measurement as an analog value 0 to 5V, a resistor voltage-divider board was made to interface the outputs to the FPGA board’s analog-digital-converter (XADC) inputs, which operate on a range of 0 to 1V.
Pic14. To allow control of external devices, a board was made which allows optocoupled-interface to two analog servos and two SPDT relays, which can be connected to various devices (motorized bed, room lighting, etc.).
Pic15,16. Finally, to support all the mentioned modules, three power regulators where used to power: a) the FPGA board with the required 5V, 1.5A, b) the SIM800l GSM module with a non-standard voltage of 4.0V, at 2A, c) the ESP8266, Bluetooth HID clone, RTC, IR thermometer, and gas sensors modules with 5V, with a total current of about 1.5A. 2. Software Almost all is implemented on the FPGA using hard-coded VHDL, with all the required interfaces (UART, SPI, One-Wire, I2C) and devices logic done manually (with no libraries or IPs). The only part that is implemented on the ARM core(s) is the EEG/EMG data processing (digital filtering, DFFT).
Step 2: Software Design
This part is work in progress, but the code will be available on Digilent Design Contest’s website as soon as the end of the contest, on the second half of May.