The Project board is for sharing projects based on Silicon Labs' component with other community members. View Projects Guidelines ›

Projects

    Publish
     
      • Portable sensor logger with LCD, Bluetooth LE & cloud connection

        Yuriy | 09/269/2016 | 12:16 PM

        Started as one of hobby project for weather logging/monitoring and to get known 
        more with the Cortex-M4 core, FPU and DSP, plus driving LCD/RAM by EFM32 EBI. 

        Using different FW and change the connected/installed sensors device may 
        used for different applications, such as environment/agricultural monitoring, 
        portable weather logging, experiment control or even for SmartHome devices 
        control through mobile gateway application.

        Now I’m looking for inspiration and motivation to continue and real world 
        application ideas.

         

         device.jpg

         

        Logger built on Wonder Gecko (EFM32WG380F256) (or Leopard Gecko for lower-price version) with BGM111 Bluetooth LE module. PCB size is 50x80mm. 
        Powered by 1200mAh Li-Po rechargeable battery (50x70x3mm) with charging from USB port. 
        Depending on modes can work up to several months without recharging.

        device-top.jpg

         

         

        There are different types of internally mounted and external sensors currently supported:

        - Bosch Sensortec BME280 sensor for temperature/humidity/air pressure (I2C)

        - SiliconLabs Si1133 UV and Ambient Light sensing (I2C)

        - Avago APDS-9250 RGB, IR and Ambient Light sensor (I2C)

        - NXP FXOS8700CQ 6-axis accelerometer and magnetometer (I2C)

        - Akustica AKU143 analog HD voice MEMS microphone with audio amplifier 
        MCP6143 to ADC input

        - Dallas/Maxim DS1820/DS18S20/DS18B20 1-Wire external temperature sensors through external jack connector to GPIO/ADC input

         

        device-bottom.jpg

        Data from sensors are captured by customizable time and algorithms and stored in 
        NOR FLASH memory and/or MicroSD card shared same USART in SPI mode. 

         

        Second USART in SPI is busy by BGM111 Bluetooth LE module communication for 
        talking with smartphone’s application. Sensors data sent by BLE custom services, 
        mobile app will store it and push to the cloud storage. Also device settings, 
        modes and parameters may be adjusted from the app.

         

        Same functionality is doubled by USB port partially. Device supports USB as custom 
        HID device for controlling/data reading, and MSD device for accessing to MicroSD card. 
        FW can be updated via USB CDC bootloader. Window C# .NET application works with 
        logger via HIDSharp library.

         

        EFM32 drivers 2.8” TFT LCD display module with ILI9341 controller from buydisplay.com. 
        Display is connected via EFM32 EBI by 8080 16-bit Parallel interface and support RGB 65K color at 320x240 resolution 16-bit width.

        Same EBI interface is shared with 8Mbit Ultra Low-Power Pseudo CMOS static RAM for frame GUI buffers (ISSI IS66WV51216).

        To the top of LCD screen capacitive touch screen is attached. It’s connected to the 
        MCU via I2C bus. LCD backlight is driven by PWM channel.

         

         HW-diagram.gif

         

        For keeping device current in sleep mode as low as possible RAM, TFT screen, MicroSD card 
        and MIC power can be turned-off by load switches.

         

        Custom GUI is built around using of memory frame buffer on SRAM memory copying to 
        LCD screen by DMA. GUI supports software anti-aliasing and alfa-channel transparency, 
        some kind of custom controls and widgets. 
        Wonder Gecko Coretx-M4 core with hardware FPU significantly improves GUI performance.

         

        Firmware is based on using FreeRTOS ver.9.0, gecko emlib and emusb, 
        Gecko BGLib + MCU as host, FatFS FAT file system library + 
        custom drivers for sensors and flash memory.

         

        Things to do still:

        - support for APDS-9960 proximity and gesture sensor for GUI control

        - audio ADC conversion and spectrum analysis

        - advanced scheduling for sensors data reading

        - implement sleep modes and reduce current consumption

        - develop mobile application and improve windows app, but it’s not my favorite area

        - cloud service for data manipulations

        - test LCD direct drive mode of EMF32 EBI

         

         

        Sample GUI pictures:

         

        GUI light 2.jpg

        GUI temperature.jpg

        GUI TPH.jpg

        GUI-time.jpg

         

        I'm not sure about sharing complete project here because it's close related to HW. But some files will be attached here.