Introduction: Bio Monitoring
Hello everyone,
In the context of a student project, we were asked to publish an article describing all the process.
We will then present you how our bio monitoring system works.
It is meant to be a portable device that allows to monitor the humidity, temperature and luminosity inside a greenhouse, here at the Université Pierre-et-Marie-Curie Campus, in Paris.
Step 1: Components
Floor sensors: Temperature (Grove 101990019) and Moisture (Grove 101020008)
Air sensors: Temperature and moisture DHT22 (present outside of the box)
Luminosity sensor : Adafruit TSL2561
Microcontroller: STM32L432KC
Energy: Battery (3,7 V 1050 mAh), Solar cells and voltage regulator (LiPo Rider Pro 106990008)
LCD screen (128X64 ADA326)
Communication: Sigfox module (TD 1208)
Wifi module: ESP8266
Step 2: Software
Arduino: This interface allowed us to upload our codes into
our microcontroller to control the different values of the sensors. The microcontroller can be programmed to analyze and produce electrical signals, so as to perform various tasks such as home automation (control of household appliances - lighting, heating ...), driving a robot, embedded computing, etc.
Altium Designer: It was used to design the PCB of our electronic card to accommodate our various sensors.
SolidWorks: SolidWorks is 3D computer-aided design software that runs on Windows. We designed a custom box for our card, our various sensors, and an LCD display. The generated files are sent to a 3D printer that will manufacture our prototype.
Step 3: Conception
The first step was to perform various tests on the
sensors to analyze the values returned to us and in what format.
Once all the interesting values were processed and selected, we were able to instantiate the different sensors one by one. So we could have a first prototyping done on a pad Labdec.
Once the codes were completed and prototyping we were
able to switch to the PCB. We made the fingerprints of the various components routing the card according to our prototype.
We have tried to optimize the space to the maximum; our card is 10cm in diameter which is relatively compact.
Step 4: Housing
In parallel we designed our case. It was better for us
to finalize our case and volume management after completing the card to have a compact result matching the shape of the card. We made a hexagon with the screen embedded on the surface too optimize the space
Multiple faces to manage the sensors on the case: Connectivity on the front for outdoor sensors: Our humidity, light and temperature sensor too, of course.
It allowed us to limit the humidity risks in the housing reduced to the maximum
Step 5: Optimization of the Energy Consumption
To analyze the differents sources of consumption we
have used a Shunt Resistance (1 ohm)
So we could have measure that: there is a Peak power of a hundred mA (~ 135 mA) when our system communicate and there is a continuous consumption of sensors and the screen about ~ 70mA. After calculation we have estimated an autonomy of 14 hours for out 1050mAh battery.
Solution :
Sensor management by interrupts before sending
The most impacting action is the scrutation economy so we have change the sending frequency but we could also put some interruption.
Step 6: Communication
We used a module to communicate with a Dashboard:
Actoboard
Sigfox is a network which has huge benefits such as very Longue Range and low consumption. However it is mandatory to have a low flow of data.(Low Flow Long Range)
Thanks to this synergy we resulted to a Real Time Monitoring with accessible data online
Step 7: Results
Here we can see the result of our work done during a semester. We were
able to combine theoretical and practical skills. We are happy with the results; we have a pretty well finished product compact and meeting our specifications. Altough, we are having some issues with the actoboard communication since we finished soldering the last components. WIP !
Step 8: Ressources
Attachments
- SSD1306.SLDPRT
- SSD1306plan.PDF
- SSD1306plan.SLDDRW
- tsl2561.SLDPRT
- Assemblage1.SLDASM
- Octogone.SLDPRT
- Octogone_bas.SLDPRT
- bold_font.h
- ssd1306.cpp
- ssd1306.h
- standard_font.h
- TSL2561.cpp
- TSL2561.h
- DHT.lib
- EI-2I4_ProjetLong1_Assemblage_avec_sigfoxV1.uvoptx
- EI-2I4_ProjetLong1_Assemblage_avec_sigfoxV1.uvprojx
- main.cpp
- mbed.bld
- mbed_config.h
- OneWire.lib
- SSD1306.lib
- TSL2561.lib
- DHT.cpp
- DHT.h
- AnalogIn.h
- AnalogOut.h
- BusIn.h
- BusInOut.h
- BusOut.h
- CAN.h
- DigitalIn.h
- DigitalInOut.h
- DigitalOut.h
- Ethernet.h
- FlashIAP.h
- I2C.h
- I2CSlave.h
- InterruptIn.h
- InterruptManager.h
- LowPowerTicker.h
- LowPowerTimeout.h
- LowPowerTimer.h
- PortIn.h
- PortInOut.h
- PortOut.h
- PwmOut.h
- i2c_api.h
- lp_ticker_api.h
- pinmap.h
- port_api.h
- pwmout_api.h
- rtc_api.h
- serial_api.h
- sleep_api.h
- spi_api.h
- ticker_api.h
- trng_api.h
- us_ticker_api.h
- mbed.h
- ATCmdParser.h
- Callback.h
- CallChain.h
- CircularBuffer.h
- critical.h
- CThunk.h
- DirHandle.h
- FileBase.h
- FileHandle.h
- FileLike.h
- FilePath.h
- FileSystemHandle.h
- FileSystemLike.h
- FunctionPointer.h
- LocalFileSystem.h
- mbed_application.h
- mbed_assert.h
- mbed_critical.h
- mbed_debug.h
- mbed_error.h
- mbed_interface.h
- mbed_mem_trace.h
- mbed_mktime.h
- mbed_poll.h
- mbed_preprocessor.h
- mbed_retarget.h
- mbed_rtc_time.h
- mbed_semihost_api.h
- mbed_sleep.h
- mbed_stats.h
- mbed_toolchain.h
- mbed_wait_api.h
- NonCopyable.h
- platform.h
- PlatformMutex.h
- rtc_time.h
- semihost_api.h
- SingletonPtr.h
- sleep.h