This project stems from AIDE for People with Neurodegenerative Diseases and tries to solve a problem the patients have by the use of custom-made hardware. The problem revolves around the idea that these kind of patients often get lost or fall when waking up at night to go to the bathroom. This has serious implications for them and for the caregiver, which has to be aware of any movements the patient performs at night so they can help them. This often results in lack of proper sleep for the caregivers.
The proposed solution is simple but effective. It is a Caregiver Warning System which consists of three devices: a presence sensor installed in the patient's room, a warning receiver for the caregiver which has the task of waking her/him up and another warning receiver that should be given to an outside party for redundancy.
As it is a derived project which uses PHATSIM we can test the developed hardware in the simulator before implementing it in real-life.
- Usage with PHATSIM's virtual motion detector.
- Usage with a real world motion detector.
- Presence is detected. This means that the patient has woken up at night and that the caregiver must be warned in order to help her/him.
- Circuit Python receives the warning. This hardware lights up in red/orange and speaks out lout "Emergency, Juliet is up, emergency".
- The system waits now for the caregiver to acknowledge the warning by the press of a button.
- If the time passes by and the system doesn't detect the caregiver's interaction it will alert the secondary device, the ESP8266. This device can rest in an external location so we get redundancy in case of an emergency.
The experiments are designed so that every device (PC, Beaglebone Black Wifi and ESP8266's) should be connected to the same WiFi for MQTT to work. CircuitPlayground Express should be connected to the PC's serial port.
Both PC JAVA program mains set up the MQTT Broker.
git submodule init
git submodule update
Please refer to the "Getting Started" section of AIDEdevelopment's README
This is the main JAVA project and the brain of the system. It consists of two main classes: PhatPresenceSensor and LaunchHardwareLink. Each one of them cover one of the proposed experiments.
Both perform the same duties of managing a presence sensor. The difference is that in PHATSim the sensor is virtual whereas in the other one a real presence sensor is used.
For this, both call the same methods that init the HardwareLink which is used to communicate with the caregiver's hardware when the presence is detected. The important methods this class has are these:
- startHardwareLink() inits class, MQTT broker, client and serial interfaces.
- initWarnSequence() is called when movement in the room is detected in PHATSim.
- For the ESP8266's hardware sensor sending a MQTT message on topic "presence" with the message "alarm" has the same effects as calling initWarnSequence.
This is a C++ project developed using Platformio framework for the Adafruit Hardware. No external hardware is used in this example, just the included sensors in the PCB.
Internally the hardware keeps waiting for the serial character 'a' which means that the alarm has been triggered. When the alarm is triggered it will flash lights, speak out loud and wait for the caregiver to acknowledge the warning with the press of any button. Once the user has acknowledged the message a 'b' is returned through serial.
This is a C++ project developed using Platformio framework for the Espresiff's ESP8266 hardware. The other hardware required is a Seeedstudio OLED screen.
ESP8266 | OLED |
---|---|
3.3V | VCC |
GND | GND |
D2 | SDA |
D1 | SCL |
Internally the hardware keeps waiting for the MQTT message Warning! sent through the presence topic. Once this message arrives the OLED screen displays a big warning sign with the received message and a LED is switched on.
This is a wifi-enabled device so you should check ssid & password settings in the .ino.
This is a C++ project developed using Platformio framework for the Espresiff's ESP8266 hardware. The other hardware required is a Seeedstudio PIR Sensor.
ESP8266 | PIR |
---|---|
3.3V | VCC |
GND | GND |
D1 | D1 |
Internally the hardware keeps polling the PIR sensor every 3 seconds and if a movement is detected the MQTT message alarm is sent through the presence topic, initiating the chain of events.
This is a wifi-enabled device so you should check ssid & password settings in the .ino.
The experiments are designed to run from the JAVA classes, which automatically start an internal broker. If you want to test with an external one you can do so with Ubuntu's included one, mosquitto.
sudo apt update && sudo apt install mosquitto mosquitto-clients
To start broker run:
mosquitto -p 1986 -v
You can also use mosquitto_sub to watch a specific topic:
mosquitto_sub -h localhost -p 1986 -t topicName
You can use mosquitto_pub to send a message to any topic:
mosquitto_pub -h localhost -t "anyTopic" -m "message"