Building a IoT Sensor from GPRS Module

Version 1

    Shortly say that I build a Sensor Info sender using Intel Edison, ADS1115 Module and SIM800L to make a sensor data sender. And I use IBM Bluemix as Cloud platform. Everything worked now, it takes about two months for me as a beginner, so I'd like to share things about this, hopefully can help other people.

     

    Before Coping and Sharing pls inform me firstly, wish you have a good time with Intel Edison:P

     

     

     

    Inhalt

    1      Introduce. 3

    1. 1.1       Target 3
    2. 1.2       Resources and Tools. 4
    3. 1.2.1        Components. 4
    4. 1.3       Realizing Method. 7

    2      Concepts & Terminology. 8

    1. 2.1       Intel Edison. 8
    2. 2.2       Intel Edison mini-breakout 9
    3. 2.3       ADS1115. 10
    4. 2.4       SIM800L. 11
    5. 2.5       MQTT Protocol 12
    6. 2.6       Mosquitto. 12
    7. 2.7       AT command. 13
    8. 2.8       Yocto. 13
    9. 2.9       Bitbake command. 13
    10. 2.10     Make command. 14

    3      Methodology and Implementation. 15

    1. 3.1       Hot Spot setting. 15
    2. 3.2       ADS1115 Module Setting. 15
    3. 3.2.1        Check normally working: 15
    4. 3.2.2        Setting. 15
    5. 3.3       SIM800L Module Setting. 17
    6. 3.3.1        Check. 17
    7. 3.3.2        Signal check. 17
    8. 3.3.3        Set the Module as default Internet port 17
    9. 3.3.4        Recreating Yocto image. 19
    10. 3.4       Node Red. 25
    11. 3.4.1        Installing. 25
    12. 3.4.2        Customized to Node.js and API 25
    13. 3.4.3        Configure using Explorer 26
    14. 3.4.4        set autorun. 27

    4      Test Cases. 28

    5      Results and Discussions. 28

    6      Summary. 29

    1. 6.1       Platform comparison. 29

    7      Scope for Future Work. 30

    1. 7.1       Switching to Raspberry PI or other platform. 30
    2. 7.2       Improving of Current-Voltage conversion circuit 30
    3. 7.3       Better GPRS module. 30
    4. 7.4       Custom Circuit board. 30

    8      Bibliography. 30

    9      Annexure. 31

     

     

     

     

     

     

     

     

     

     

    1 Introduce

    1.1 Target

    To satisfy the require of the modern technology from customers from different fields, the products become more variable. The concept of Industry 4.0 and IoT System become increasingly popular, it contributes the digitalizing of modern factory, so that people can check the status of every procedure of factory, and make optimizing for producing. And all these data of factory are available everywhere – as long as there is Internet.

     

    The target of this project is to build a data sender for industrial sensors, the output of the sensors is 4-20 Ma, those sensors can be temperature, moisture, light sensors and so on, the signal will be modified into understandable information and sent to Cloud Platform on the Internet. And manager can check the values of sensors at any time. When the value is out of range (the working component is too hot for example), this sender should send SMS and Email to the manager’s Cellphone and Email address.

     

     

     

    1.2 Resources and Tools

    1.2.1 Components

    1.2.1.1 Intel Edison

    For this case of IoT System, a smart microcontroller for embedded system is ideal. Especially for the individual creators, who do not have much technical resources and time to develop a brand new embedded system with software. So a system available for Linux has much more advantages and is especially attractive for individual developers, most of the application and protocol for Linux are reachable on the Internet, what the developers should do is to combine the modules they need and make sure that they are working fine together.

    Moreover, a data-sender does not need to provide strong Calculating ability, which is enough to run Linux system and some scrips.

    Thinking about the popular tiny developing Platform on the market, Raspberry PI zero W and Intel Edison are hot discussed. After comparison is Edison selected because of better timing ability, allowing real-time processes to run independently from the Linux core, which can be very important in embedded systems with a high cost of failure. It also ensures that stringent real-time applications can be handled without requiring a real-time Linux kernel.

    1.2.1.2 ADS1115

    In order to catch 4 – 20 ma signal, there are two ways to realize.

    • Current sensor
    • Voltage sensor with resistance

    Current sensor seems to be integral and save more place. But the modules and types on the market are not too much, and technical datasheets are not too much. To do a quick and dirty realizing, a voltage sensor with two 220 Ohm resistor is needed.

    Features:

    Qualified for Automotive Applications

    AEC-Q100 Qualified With the Following Results:

    – Temperature Grade 1: –40°C to +125°C

    – HBM ESD Classification 2

    – CDM ESD Classification C4B

    Wide Supply Range: 2.0 V to 5.5 V

    Low Current Consumption: 150 μA (Continuous-Conversion Mode)

    Programmable Data Rate: 8 SPS to 860 SPS

    Single-Cycle Settling

    Internal Low-Drift Voltage Reference

    Internal Oscillator

    I2C Interface: Four Pin-Selectable Addresses

    Four Single-Ended or Two Differential Inputs (ADS1115-Q1)

    Programmable Comparator (ADS1114-Q1 and ADS1115-Q1)

    1.2.1.3 SIM800L

    2G GPRS module is already an aging module and easy to operate, thinking about the circumstance of the factory, 3G and LTE signal can be not well functioning either. So a simple made-in-china module is totally enough.

    Actually, this module is the most unstable component of the whole system. There are multiple factors causing that, which will be introduced later.

     

     

     

     

     

     

     

     

     

    1.3 Realizing Method

    Target is to make a system that can transfer signal info information and to send the information to the terminal and dashboard, and to create alarm during emergent situation.

    Info and alarm sending: the Internet connecting will be realized by GPRS module, and a software called Node-red will be installed in Intel Edison, so that all the information can be easily transferred to different kinds of other information.

    Settings: To set Intel Edison, the GPRS module will not be used because of the weak signal and big delay in data transfer, Intel Edison will be set as a WIFI hotspot and laptop or smartphone can connect to that. SSH protocol will be used.

     

    2 Concepts & Terminology

    2.1 Intel Edison


    The Intel Edison is a computer-on-module offered by Intel as a development system for wearable devices and Internet of Things devices. The system was initially announced to be the same size and shape as an SD card and containing a dual-core Intel Quark x86 CPU at 400 MHz communicating via Bluetooth and Wi-Fi. A later announcement changed the CPU to a 22 nm Silvermont dual-core Intel Atom CPU, and in September 2014 a second version of Edison was shown at IDF, which was bigger and thicker than a standard SD card.

     

     

     

    1. 1
    2. 2
      1. 2.1

    2.2 Intel Edison mini-breakout

    2.3 ADS1115

     

     

     

     

     

     

     

    2.4 SIM800L


     

     

     

     

     

     

     

     

     

     

     

     

    2.5 MQTT Protocol

    MQTT (MQ Telemetry Transport or Message Queue Telemetry Transport) is an ISO standard (ISO/IEC PRF 20922) publish-subscribe-based "lightweight" messaging protocol for use on top of the TCP/IP protocol. It is designed for connections with remote locations where a "small code footprint" is required or the network bandwidth is limited. The publish-subscribe messaging pattern requires a message broker. The broker is responsible for distributing messages to interested clients based on the topic of a message. Andy Stanford-Clark and Arlen Nipper of Cirrus Link authored the first version of the protocol in 1999.

    The specification does not specify the meaning of "small code footprint" or the meaning of "limited network bandwidth". Thus, the protocol's availability for use depends on the context. In 2013, IBM submitted MQTT v3.1 to the OASIS specification body with a charter that ensured only minor changes to the specification could be accepted. MQTT-SN  is a variation of the main protocol aimed at embedded devices on non-TCP/IP networks, such as ZigBee.

    Historically, the "MQ" in "MQTT" came from IBM's MQ Series message queuing product line. However, queuing itself is not required to be supported as a standard feature in all situations.

    Alternative protocols include the Advanced Message Queuing Protocol, the IETF Constrained Application Protocol, XMPP and Web Application Messaging Protocol (WAMP).

    2.6 Mosquitto

    Eclipse Mosquitto™ is an open source (EPL/EDL licensed) message broker that implements the MQTT protocol versions 3.1 and 3.1.1. MQTT provides a lightweight method of carrying out messaging using a publish/subscribe model. This makes it suitable for "Internet of Things" messaging such as with low power sensors or mobile devices such as phones, embedded computers or microcontrollers like the Arduino.

    Mosquitto is an iot.eclipse.org project

    2.7 AT command

    The Hayes command set is a specific command language originally developed by Dennis Hayes[1] for the Hayes Smartmodem 300 baud modem in 1981.

    The command set consists of a series of short text strings which can be combined to produce commands for operations such as dialing, hanging up, and changing the parameters of the connection. The vast majority of dial-up modems use the Hayes command set in numerous variations.

    The command set covered only those operations supported by the earliest 300 bit/s modems. When new commands were required to control additional functionality in higher speed modems, a variety of one-off standards emerged from each of the major vendors. These continued to share the basic command structure and syntax, but added any number of new commands using some sort of prefix character – & for Hayes and USR, and \ for Microcom, for instance. Many of these re-standardized on the Hayes extensions after the introduction of the SupraFAXModem 14400 and the subsequent market consolidation that followed.

    2.8 Yocto

    The Yocto Project is a Linux Foundation workgroup whose goal is to produce tools and processes that will enable the creation of Linux distributions for embedded software that are independent of the underlying architecture of the embedded software itself. The project was announced by the Linux Foundation in 2010.[1] In March 2011, the project aligned itself with OpenEmbedded, an existing framework with similar goals, with the result being The OpenEmbedded-Core Project.

    The Yocto Project is an open source project whose focus is on improving the software development process for embedded Linux distributions. The Yocto Project provides interoperable tools, metadata, and processes that enable the rapid, repeatable development of Linux-based embedded systems.

    2.9 Bitbake command

    BitBake is a make-like build tool with the special focus of distributions and packages for embedded Linux cross compilation although it is not limited to that. It is inspired by Portage, which is the package management system used by the Gentoo Linux distribution. BitBake existed for some time in the OpenEmbedded project until it was separated out into a standalone, maintained, distribution-independent tool. BitBake is co-maintained by the Yocto Project and the OpenEmbedded project.

    BitBake recipes specify how a particular package is built. It includes all the package dependencies, source code locations, configuration, compilation, build, install and remove instructions. It also stores the metadata for the package in standard variables.[3]

    The BitBake recipes consist of the source URL (http, https, ftp, cvs, svn, git, local file system) of the package, dependencies and compile or install options. During the build process they are used to track dependencies, performing native or cross-compilation of the package and package it so that it is suitable for installation on the local or a target device. It is also possible to create complete images consisting of a root file system and kernel. As a first step in a cross-build setup, the framework will attempt to create a cross-compiler toolchain suited for the target platform.

    2.10 Make command

    The purpose of the make utility is to determine automatically which pieces of a large program need to be re-compiled, and issue the commands necessary to recompile them. This documentation describes the GNU implementation of make, which was written by Richard Stallman and Roland McGrath, and is currently maintained by Paul Smith. Many of the examples listed below show C programs, since they are most common, but you can use make with any programming language whose compiler can be run with a shell command. In fact, make is not limited to programs. You can use it to describe any task where some files must be updated automatically from others whenever the others change.

     

     

     

     

    3 Methodology and Implementation

    3.1 Hot Spot setting

    Connect the ‘console’ port of your Edison to the USB port a computer and follow the Intel instructions for setting up a serial terminal.

    Then switch your Intel Edison into access point mode:

    $ systemctl stop wpa_supplicant

    $ systemctl start hostapd

    This stops the default wifi client and starts the host access point daemon. To ensure this setup boots on startup, you also need to tweak the start up scripts:

    $ systemctl disable wpa_supplicant

    $ systemctl enable hostapd

    3.2 ADS1115 Module Setting

    3.2.1       Check normally working:

    Connect ADS1115 to Intel Edison by I2C (VDD, GND, SCL, SDA), and test function by using i2cdetect:

    And 48 is the address of ADS1115, if there is not, check the connecting and power supply.

    3.2.2       Setting

    System should be installed with npm and MRAA libraries:

    Sudo opkg install npm

    Sudo npm install mraa

     

    Configure using Node.js

    1. Datasender.js:

    "use strict" ;

    function getCurrent(i){

        return (ads1115.getSample(0x3000 + 0x1000 * i)).toFixed(8);

    }

     

    1. exports.getCurrent = getCurrent;

     

    var ADS1X15 = require('jsupm_ads1x15'); 

    var ads1115 = new ADS1X15.ADS1115(1, 0x48);  

    ads1115.setGain(0);                              // Set to 6.144 (GAIN_TWOTHIRD)  233333333333333333333

    ads1115.setSPS();                               // Set to 128 SPS 

     

     

     

     

     

     

     

     

     

    3.3 SIM800L Module Setting

    3.3.1       Check

    The connecting is serial communication (UART), so after the connecting, test UART by microcom:

    sudo microcom -s 115200 /dev/ttyMFD1

    Type at enter to see the answer from SIM800L module.

    3.3.2       Signal check

    Plug a SIM card to the module, and test the function by AT command in the microcom:

    If SIM card needs password to unlock, type in AT+CPIN=XXXX to unlock.

    3.3.3       Set the Module as default Internet port

    It is possible to connect to Internet by using AT command, but using AT command makes programming much more complex, to fix this problem, the GPRS module should be set as PPP device, and Intel Edison can use GPRS without any concerning about AT command.

    The connecting before is like this:

    The target in the end should be like this:

    And use ping command:

    The delay is about 500ms-600ms, it means that the configuration is succeeded.

    3.3.4       Recreating Yocto image

    Yocto is the linux system installed in Intel Edison. It does not have PPP features, so we should custom a new Yocto image, which supports PPP.

    Tools: Ubuntu 14.04

    3.3.4.1 3.3.4.1 Prepare

    On ubuntu terminal:

    Sudo apt-get update

    Sudo apt-get upgrade

    Sudo apt-get update npm openjdk-7-jdk openjdk-7-jre build-essential git diffstat gawk chrpath texinfo libtool gcc-multilib nodejs gyp libsdl1.2-dev

    Download Yocto creating tools package: http://iotdk.intel.com/src/3.5/edison/iot-devkit-yp-poky-edison-20160606.zip

    1. Unzip.

    Increase the Root Partition Size:

    For the custom image the Root Partition size can be not enough, so it can be optionally increased.

    1. 1. Change directory to the extracted file: cd edison-src
    2. 2. Open device-software/meta-edison-distro/recipes-bsp/u-boot/files/edison.env
    3. 3. Go to the partitions= section

           Go to the partitions= section

           Find the partition labeled rootfs.

           Change the value to 640MB, the default value is 512MB.

           After the rootfs partition has been changed, save and close the file.

    1. 4. Open device-software/meta-edison-distro/recipes-core/images/edison-image.bb

           Find IMAGE_ROOTFS_SIZE.

           Change the value to 655360, the default value is 524288. This value is in kb and needs to match the value changed in step 5.

           After the IMAGE_ROOTFS_SIZE has been changed, save and close the file.

    3.3.4.2 Bitbake

    Bitbaking can take hours of time, it is about the Processing Speed of the computer. And about 150GB hard disk space should be sure.

    proceed to remove the following packages from the edison-image.bb file, the location is in <path-to>/iot-devkit-yp-poky-edison-20160606/poky/meta-intel-edison/meta-intel-edison-distro/recipes-core/images/

        IMAGE_INSTALL += "iotkit-comm-js"

        IMAGE_INSTALL += "iotkit-comm-c-dev"

    cx@cx:~/iot-devkit-yp-poky-edison-20160606/iot-devkit-yp-poky-edison-20160606$ source poky/oe-init-build-env build_edison/

    cx@cx:~/iot-devkit-yp-poky-edison-20160606/iot-devkit-yp-poky-edison-20160606/build_edison$ bitbake edison-image u-boot

    3.3.4.3 Configure using menuconfig

    After bitbaking, the main structure of Yocto is already created, and now we should use menuconfig to add PPP feature to the Yocto image.

    ~/iot-devkit-yp-poky-edison-20160606/iot-devkit-yp-poky-edison-20160606/build_edison$ bitbake virtual/kernel -c menuconfig

    And enable all the PPP options, save .config.

    Search the file named .config. And search the file defconfig, defconfig can be variable, check the contents of defconfig, find the one, which has similar contents with .config, replace defconfig with .config.

    Use bitbake Edison-image u-boot again.

    3.3.4.4 Flash the image

    cx@cx:~/iot-devkit-yp-poky-edison-20160606/iot-devkit-yp-poky-edison-20160606/poky/meta-intel-edison/utils/flash$ ./postBuild.sh

    then:

    zip -r toFlash.zip toFlash

    My driver on Ubuntu doesn’t work, if your works, follow the reference, if not, copy that folder to Windows folder, and change to windows, use dfu-util-0.9-win64 to Flash the ROM.

    3.3.4.5 Set PPP using PPPD tool

    After flashing the image, intel Edison should already have the PPP feature, a folder called PPP should be seen in folder /etc

    Now some PPP tools will be installed:

    Sudo opkg update

    sudo opkg install ppp-dbg

    sudo opkg install ppp-dev

    sudo opkg install ppp-doc

    sudo opkg install ppp-l2tp

    sudo opkg install ppp-minicom

    sudo opkg install ppp-oa

    sudo opkg install ppp-oe

    sudo opkg install ppp-password

    sudo opkg install ppp-radius

    sudo opkg install ppp-tools

    sudo opkg install ppp-winbind

    sudo opkg install ppp

    after installing, configure the setting file:

    sudo nano /etc/ppp/peers/provide

    # MUST CHANGE: replace ******** with the phone number of your provider.

    # The /etc/chatscripts/pap chat script may be modified to change the

    noauth

    # example configuration for a dialup connection authenticated with PAP or CHAP

    #

    # This is the default configuration used by pon(1) and poff(1).

    # See the manual page pppd(8) for information on all the options.

     

    # MUST CHANGE: replace myusername@realm with the PPP login name given to

    # your by your provider.

    # There should be a matching entry with the password in /etc/ppp/pap-secrets

    # and/or /etc/ppp/chap-secrets.

    #user "myusername@realm"

     

    # MUST CHANGE: replace ******** with the phone number of your provider.

    # The /etc/chatscripts/pap chat script may be modified to change the

    # modem initialization string.

    connect "/usr/sbin/chat -v -f /etc/chatscripts/gprs -T internet"

     

    # Serial device to which the modem is connected.

    /dev/ttyMFD1

     

    # Speed of the serial line.

    115200

     

    # Assumes that your IP address is allocated dynamically by the ISP.

    noipdefault

    # Try to get the name server addresses from the ISP.

    usepeerdns

    # Use this connection as the default route.

    defaultroute

     

    # Makes pppd "dial again" when the connection is lost.

    persist

     

    # Do not ask the remote to authenticate.

    noauth

    and another file:

    sudo nano /etc/chatscripts/gprs

    TIMEOUT 30

    ABORT "BUSY"

    ABORT "ERROR"

    ABORT "NO CARRIER"

     

    ''      AT

    OK              ATS0=0

    OK              ATE0V1

    OK AT+CGDCONT=1,"IP","internet"

    OK              ATD*99***1#

    CONNECT         ''

    Save and close, back to /etc/ppp/peers, try calling the PPP service:

    pppd call provider &

    after about 15 seconds, check the status by:

    ifconfig

    Try ping 8.8.8.8,

    3.4 Node Red

    3.4.1       Installing

    sudo opkg install libmraa0

    sudo opkg install nodejs

    sudo npm install -g –unsafe-perm node-red

    now run node red by:

    node-red

    and be sure the laptop and Intel Edison are in the same Ethernet, enter Node Red console using explorer.

    3.4.2       Customized to Node.js and API

    See node_red.js

    var http = require('http');

    var express = require("express");

    var RED = require("node-red");

     

    // Create an Express app

    var app = express();

     

    // Add a simple route for static content served from 'public'

    1. app.use("/",express.static("public"));

     

    // Create a server

    var server = http.createServer(app);

     

    // Create the settings object - see default settings.js file for other options

    var settings = {

       

      httpAdminRoot:"/red",

      httpNodeRoot: "/api",

      functionGlobalContext: {

     

          sensor:require('./sensor')

      }    // enables global context

    };

     

    // Initialise the runtime with a server and settings

    1. RED.init(server,settings);

     

    // Serve the editor UI from /red

    1. app.use(settings.httpAdminRoot,RED.httpAdmin);

    // Serve the http nodes UI from /api

    1. app.use(settings.httpNodeRoot,RED.httpNode);

     

    1. server.listen(3000);

     

    // Start the runtime

    1. RED.start();

    And in main.js side:

    "use strict" ;

     

    var APP_NAME = "IoT Sensor Rread" ;

    var datasender = require("./datasender");

     

    var childprocess = require('child_process');//node-red used as childprocess

    //var rednode = require("./rednode")    //used as normal process is also possible

    var rednode = childprocess.fork('/home/root/.node_app_slot/rednode.js');

     

    1. console.log("Initializing " + APP_NAME + '\n') ;

    3.4.3       Configure using Explorer

    Open Explorer, type in http://eidons.local:3000/red      

    Set the interval time of pump as 1 second, it means Node Red will check the sensor value for every 1 second.

    In function node sensor value:

    var sensor0 = global.get('sensor')

    1. msg.payload = [sensor0.getCurrent(1), sensor0.getCurrent(2)];

    return msg;

    In function node alarm:

    var st = '';

    if ((msg.payload[0]) > 1) {

    st = "Deiner erster Sensor hat Problem gemacht!!!\nDer Wert ist " msg.payload[0] + "!!!!!!!!\n";

     

    }

    else

    {

        st = -1;

    }

     

    if ((msg.payload[1]) > 1) {

        st = st + "Deiner zweiter Sensor hat Problem gemacht!!!\nDer Wert ist " msg.payload[0] + "!!!!!!!!\n";

    }

    else

    {

    }

    1. msg.payload = st;

    return msg;

    edit a trigger, set the interval time of alarm, because for every 1 second a alarm will be sent.

    Set some alarm output, Twitter or Email, Twilio for example.

    3.4.4     set autorun

    Connect to Edison SSH

    root@edison:/etc/init.d# sudo nano SensorStart.sh

    Type in:

    #!/bin/sh

    sudo systemctl disable wpa_supplicant

    cd /etc/ppp/peers

    sudo pppd call provider &

    sudo systemctl enable hostapd

    sudo node /home/root/.node_app_slot/main.js &

    sudo echo "nameserver 8.8.8.8" > /etc/resolv.conf

    Save, exit.

    root@edison:/etc/init.d# chmod +x SensorStart.sh

    root@edison:/etc/init.d# update-rc.d SensorStart.sh defaults

    4 Test Cases

    A test case, is a set of test inputs, execution conditions, and expected results developed for a particular objective, such as to exercise a particular program path or to verify compliance with a specific requirement. A test case could simply be a question that you ask of the program. The point of running the test is to gain information, for example whether the program will pass or fail the test. Test case is the cornerstone of Quality Assurance whereas they are developed to verify quality and behavior of a product.

    5 Results and Discussions

    In three blocks of Test Case procedure, the whole system works fine, but it takes about tens of seconds to boot up. Intel Edison and Sensor module ADS1115 both have good robustness and can resist vibration of +0.5v/-0.5v of voltage. But the SIM800L module seems to be relative fragile and unstable, in high voltage situation tends to burn down, in low voltage situation the Indicator light may not glows or blinks, but the function and connection can be well working.

    6 Summary

    Back to summary of the whole project. The following aspects will be mentioned.

    6.1 Platform comparison

    It is mainly between Intel Edison and Raspberry PI zero W.

     

    Intel Edison was announced at CES in January 2014. And Raspberry PI Zero W project was firstly Launched at the end of February 2017. Actually, the both do not belong to same generation. This internship project “Sensor value sender” began at 01. March. At that  time the community of Zero W has not yet grown up. Obviously, Intel Edison has excellent output features and clock cut. The design of Intel Edison is merely like a product for engineer, and it satisfied the most request of industry. During this project this sample of Intel Edison is Flashed and forced rebooted many times, the power was sometimes suddenly cut off, and the GPIO ports are shorted frequently by mistake. But it comes to work as fine as before after re-plug of power. In such treat the Raspberry PI can burn so many times by the Experience of Author. Nevertheless, Intel Edison has following shorts:

    1. 1. Intel Edison is basically a product for IoT beginner or hand-made Geeker, who have no or few professional knowledges on whole automatic control industry. It means that it should be design friendly to use. Every generation of Raspberry PI has HDMI output feature, but Edison did not.
    2. 2. Intel Edison uses Yocto system made by Intel, and it has a packet manager opkg. Things are different from Apt-get in RasPI. And some features have to be customized by bitbaking the Image, which takes much energy and time.
    3. 3. It has limited ROM space of 4Gigabyte, which cannot be changed.
    4. 4. Because of strict design layout and relative small users group, it twice as expensive as RasPI.
    5. 5. As a result, Intel Edison’s community has just small amount of active users. There are much more users and ideas in Raspberry PI community, it means bigger future for a IoT device. And problems are solved slowly in Edison community.

    7 Scope for Future Work

    7.1 Switching to Raspberry PI or other platform.

    As the report of Golem, Intel will not support Edison project from 28.04.2017. The libraries will not refresh any more and the users keep reducing. It is sensible to change platform and I think personally Raspberry PI has better future.

    7.2 Improving of Current-Voltage conversion circuit

    The function of conversion is realized by resistance currently. A positive circuit should be designed so that it does not bring burden to the sensor, so that the high-quality data can be obtained.

    7.3 Better GPRS module

    SIM800L is cheap and easy to get from Internet. But it has bad quality, thinking about changing to another module.

    7.4 Custom Circuit board

    Currently the hole plate was used. Wires are melt by using melt station. Hand working product has bad quality and exterior.

    8 Bibliography

    1. 1.      How configure an Intel Edison as a Wireless Access Point

    Clinton Freeman, 12.05.2016

    https://reprage.com/post/how-to-configure-the-intel-edison-as-a-wireless-access-point

    1. 2.      I2C Interfacing on Intel Edison

    Marc, 24.10.2015

    https://m2aglabs.com/2015/04/10/i2c-interfacing-on-intel-edison/

    1. 3.      QUICKSTART SIM800 (SIM800L) WITH ARDUINO

    Ayoma, 25.11.2015

    http://www.ayomaonline.com/programming/quickstart-sim800-sim800l-with-arduino/

    1. 4.      Setting up GPRS with SIM800L

    Webside: Explore Embedded

    https://www.exploreembedded.com/wiki/Setting_up_GPRS_with_SIM800L

    1. 5.      Connect a GPRS modem to Intel® Edison

    By Naga Venkata Raghu Kiran K. (Intel), 29.03.2015

    https://software.intel.com/en-us/articles/connect-a-gprs-modem-to-intel-edison

    1. 6.      Intel® Edison Board Support Package

    User Guide 05.2015

    http://download.intel.com/support/edison/sb/edisonbsp_ug_331188007.pdf

    1. 7.      Build an Intel® Edison Board Image Using Bitbake

    https://software.intel.com/en-us/node/593591

    1. 8. Edison-Module und Arduino-Board werden eingestellt

    Alexander Merz, 28.4.2017

    https://www.golem.de/news/intel-edison-module-und-arduino-board-werden-eingestellt-1704-127567.html