Showing posts with label mc. Show all posts
Showing posts with label mc. Show all posts

A Guide for Getting Started with ESP8266 and Arduino IDE


What is ESP8266?

The ESP8266 is a low-cost Wi-Fi microchip with full TCP/IP stack and microcontroller capability produced by Shanghai-based Chinese manufacturer, Espressif Systems. The chip first came to the attention with the ESP-01 module, made by a third-party manufacturer, Ai-Thinker.

This small module allows microcontrollers to connect to a Wi-Fi network and make simple TCP/IP connections using Hayes-style commands. It comes with default firmware which supports AT commands. But rather than default firmware you can upload your own program  or firmware with Arduino IDE or any other IDE. If you upload a new code the original firmware will be erased.

It costs less than 5 USD and become one of the best choice for IoT projects in very short span of time.

Note: The ESP32 is the ESP8266 successor. It adds a CPU core, faster Wi-Fi, more GPIOs, and supports Bluetooth 4.2 and Bluetooth low energy. Additionally, the ESP32 comes with touch sensitive pins, and built-in hall effect sensor and temperature sensor.

Development Boards

ESP8266 is just the name of the chip, many companies have designed their own boards that use this chip, so there are many different ESP8266 boards on the market. If you don't know the difference between all these different models, you might have a hard time deciding on what board to buy.
Some boards have all kinds of features on-board to help developing ESP8266 hardware and software: for example, a USB to Serial converter for programming, a 3.3V regulator for power, on-board LEDs for debugging, a voltage divider to scale the analog input. If you're a beginner, I would definitely recommend a development board. It's easier to get started if you don't have to worry about all these things.

1. Bare-bones boards and boards without a USB interface

If you want to add an ESP8266 to a small project, or if you want a cheaper  board, you might want to buy a board that doesn't have features like a USB to Serial converter for programming, a 3.3V regulator for power, on-board LEDs etc. In that case, you can buy one of the many ESP-## modules developed by AI Thinker. They contain just the ESP8266 and the necessary components to run it.

The Bare-bone category has 2 sub-categories: boards with a 3.3V regulator on-board, and boards with just the ESP8266 and a flash memory chip, without 3.3V regulator.

If your board doesn't have a 5V to 3.3V regulator, buy one separately. You could use an LM1117-3.3 for example. The on-board 3.3V regulator of most Arduino boards is not powerful enough to power the ESP.

To program the ESP-## modules developed by AI Thinker, you'll need a USB-to-Serial converter. The FTDI FT232RL is quite popular, because it can switch between 5V and 3.3V. It is essential that the USB-to-Serial converter you buy operates at 3.3V. If you buy a 5V model, you will damage the ESP8266. Other than FTDI FT232RL, Arduino Uno is second most popular way to program ESP-##.

2. Development boards with a USB interface

If you want ESP8266 with extra features then choose NodeMCU, SparkFun ESP8266 Thing - Dev Board, SparkFun Blynk Board, Adafruit Feather HUZZAH with ESP8266 Wi-Fi etc. These boards will show up in Device manager (Windows) or in lsusb (Linux) as soon as you plug them in. They have a 3.3V regulator on-board, and can be programmed over USB directly, so you don't need any external components to get it working. The only thing you may need to do, is solder on some headers.

Getting Started with Cheaper Boards (ESP8266 ESP-01 developed by AI Thinker)

The ESP8266 ESP-01 boards come with following specifications:

  • 8Mbit external QSPI flash memory (1MByte)
  • 32-bit Tensilica Xtensa LX106 CPU running 80MHz
  • 3.3V supply (current can spike 300mA+, depending on mode)
  • PCB-trace antenna
  • 2 x 4 dual-in-line pinout
  • 14.3 x 24.8mm
  • 1.5g


Coming to the pin configuration, the ESP-01 module consists of 8 pins and these pins are VCC, GND, TX, RX, RST, CH_PD, GPIO0 and GPIO2.

The following image shows the pin diagram of the ESP-01 Module.


Pin Description

VCC: It is the power pin through which 3.3V is supplied.
GND: It is the ground pin.
TX: This pin is used to transmit serial data to other devices.
RX: The RX pin is used to receive serial data from other devices.
RST: It is the Reset Pin and it is an active LOW Pin. (ESP8266 will reset if the RST pin receives LOW signal).
CH_PD: This is the chip enable pin and it is an active HIGH Pin. It is usually connected to 3.3V.
GPIO0: The GPIO0 (General Purpose I/O) Pin has dual functions – one for normal GPIO Operation and other for changing the Mode (Programming/Normal). Start in Programming mode if receive LOW signal.
GPIO2: This is GPIO Pin.

ESP8266 ESP-01 Boot Mode Selection

ESP8266 WiFi Module has two modes of operation: Programming Mode and Normal Mode.

Programming Mode: In Programming Mode, you can upload the program or firmware to the ESP8266 Module. In order to enable the Programming Mode, the GPIO0 pin must be connected to GND.

Normal Mode: Leave GPIO0 pin as it to run in normal mode. In Normal Mode, the uploaded program or firmware will run normally.

Also, the RST (Reset) will play an important role in enabling Programming Mode. The RST pin is an active LOW pin and hence, it is connected to GND through a Push Button. So, whenever the button is pressed, the ESP8266 Module will reset.

Testing Default Firmware (Official AT Firmware) Code on ESP8266 ESP-01

To test default AT firmware on ESP8266, you need A USB to Serial TTY adapter to connect with ESP8266,  FTDI FT232RL may work but if you didn’t get the wiring right you will fried the ESP8266. One of the best and safe option is to use the Arduino Uno as a Bridge, bypassing everything in the uno and talking to the ESP8266 directly.

Arduino Uno have an on-board USB-to-Serial converter, you can use that. So heres how this works. You can connect the reset pin on the Uno to GND to bypass the Arduino boot loader (If you Arduino Uno is not genuine, It may work without connecting reset pin to GND), then connect TX to TX, RX to RX, GND to GND, VCC and CH_PD to 3.3v, and leave the GPIO0, GPIO2, RST pin as it (Normal Mode run the default firmware code inside ESP8266).

VCC to 3.3V
GND to GND
TX to TX of Arduino UNO
RX to RX of Arduino UNO
CH_PD to 3.3V


1. Accessing ESP8266 from Arduino Serial Monitor in the Arduino IDE

Once you have it wired up, you should be able to use the Arduino Serial Monitor in the Arduino IDE to access the ESP8266. Remember you’ll connect to the port the Arduino is on.
As TX is connected to TX and RX is connected to RX, it is just like extending the wires for TX and RX and Serial Monitor in the Arduino IDE will access the ESP8266 directly.



Next make sure you choose “Both NL & CL” then adjust the Baud rate. My module was talking on 115200 baud but I’ve heard other models on 9600.
At this point you should be able to send an “AT” command and get an “OK” response. WoHoo! you’re talking to the ESP8266.

Now send "AT+GMR" to retrieve the Firmware version and keep it for future reference.

To connect wifi use AT+CWJAP="SSID", "Password" For more commands please refer


2. Accessing ESP8266 from Arduino Uno code

Remember one thing here, to access ESP8266 from arduino you need to connect RX pin of arduino to TX pin of ESP8266 and TX pin of arduino to RX pin of ESP8266 as here we are not just extending the wire but arduino is directly communicating to ESP8266. Also the RST pin of arduino should not be connected to GND, it should be left as it.

To access ESP8266 from code the wiring will have the TX of the Uno connected to the RX on the ESP8266 and the RX on the Uno talking to the TX on the ESP8266, but don’t do it yet. PROBLEM theres only one serial on the Uno but we need it for connecting the IDE to the UNO since it works over the USB Serial on the same pins. We can’t use one Serial for both. Thankfully we can use some code called SoftwareSerial to make a Virtual Serial port on the Arduino. This means that instead of connecting to the TX/RX we’ll connect to another pin set and have SoftwareSerial send commands to those pins instead.



Ok lets use pin 10 as RX and pin 11 as TX of Arduino. That can be achieved by using SoftwareSerial library of Arduino.

VCC to 3.3V
GND to GND
TX to 10 of Arduino UNO
RX to 11 of Arduino UNO
CH_PD to 3.3V

First we need to setup the virtual serial for the module. We’ll include the library and define the variable

#include <SoftwareSerial.h>
#define RX 10
#define TX 11
SoftwareSerial esp8266(RX,TX);

From here on we’ll talk to the ESP8266 through “esp8266” and we’ll talk to the IDE through “Serial”. Let’s try it in our setup function

void setup() {
 Serial.begin(9600);
 esp8266.begin(115200);
 }

Note that we set the Serial connection to a 9600 baud rate and the esp8266 connection to a 115200 baud rate. Make sure to set your IDE Serial Monitor to the right baud and set the esp8266.begin value to the baud rate of the module you confirmed earlier.

OK ready for the whole code base? here is the code Basically there’s a helper function called “sendCommand” that takes a command, a timeout value and the expected result as input.

#include <SoftwareSerial.h>

#define RX 10
#define TX 11

int countTrueCommand;
int countTimeCommand;
boolean found = false;
SoftwareSerial esp8266(RX,TX);

void setup() {

  Serial.begin(9600);
  esp8266.begin(115200);
  sendCommand("AT",5,"OK");
  sendCommand("AT+CWMODE=1",5,"OK");
}

void loop() {
   sendCommand("AT+CWLAP",20,"OK");
}

void sendCommand(String command, int maxTime, char readReplay[]) {
  Serial.print(countTrueCommand);
  Serial.print(". at command => ");
  Serial.print(command);
  Serial.print(" ");
  while(countTimeCommand < (maxTime*1))
  {
    esp8266.println(command);//at+cipsend
    if(esp8266.find(readReplay))//ok
    {
      found = true;
      break;
    }
    countTimeCommand++;
  }

  if(found == true)
  {
    Serial.println("Success");
    countTrueCommand++;
    countTimeCommand = 0;
  }
  if(found == false)
  {
    Serial.println("Fail");
    countTrueCommand = 0;
    countTimeCommand = 0;
  }
  found = false;
 }

Flashing Custom Program on ESP8266 ESP-01

ESP8266 ESP-01 is itself have a microcontroller with 2 GPIO pins, We can install our custom code or micro OS in this. The EspressIf itself provide various framework for ESP8266. Let's flash custom program first then we will check other options.

Even though ESP8266 WiFi Module is manufactured by Espressif Systems, the SoC is used by many third party manufacturers to implement their own custom modules. In my case, I have the ESP8266 ESP-01 Module by AI-Thinker.

Before proceeding into the process of custom program flash, it is important to configure the ESP8266 WiFi Module in Programming Mode and Arduino UNO as the USB to Serial Interface so GPIO0 pin should be connected to GND, RX to RX and TX to TX.

VCC to 3.3V
GND to GND
TX to TX of Arduino UNO
RX to RX of Arduino UNO
GPIO0 to GND
RST to GND through Push Button
CH_PD to 3.3V

Once the ESP8266 Module is powered ON, Push the RST button and open the Arduino IDE. In the Board options (Tools –> Board), select the “Generic ESP8266” Board. Select the appropriate port number in the IDE. Now, open new Sketch paste the code below, connect led on pin 2. Here, 2 means GPIO2 pin of the ESP8266 Module. Before you hit the upload make sure that GPIO0 is connected to GND first and then press the RST button.

void setup()
{
  pinMode(2, OUTPUT);
}

void loop()
{
  digitalWrite(2, HIGH);
  delay(1000);
  digitalWrite(2, LOW);
  delay(1000);
}

Now hit the upload button and the code will take a while to compile and upload. You can see the progress at the bottom of the IDE. Once the program is successfully uploaded, you can remove the GPIO0 from GND. The LED connected to GPIO2 will blink.

Updating/Flashing Official AT Firmware on ESP8266 ESP-01

The Official AT Firmware can be installed for two reasons: If you want to update the ESP8266 Firmware to its latest version or to completely install the new firmware (in case it was overwritten by any other program).

We will flash the official Espressif Systems’ firmware for ESP8266 Module using the official ESP8266 Flasher Tool provided by Espressif Systems which is the ESP8266 FLASH DOWNLOAD TOOL and Arduino UNO as the USB to Serial Interface.

Please note down the current Firmware version that you have retrieved by "AT+GMR" and make the circuit configuration same as during custom program upload.

1. Downloading the Latest ESP8266 Firmware

There are two types of SDK or Software Development Kits for ESP8266: Non-OS SDK and RTOS SDK. The Non-OS SDK, as the name suggests, isn’t based on any OS. Using this SDK, you can compile IOT_Demo and AT Commands. The RTOS SDK on the other hand is based on FreeRTOS. I’ll be using the Non-OS SDK (well, technically, the Firmware files based on the Non-OS SDK). The ESP8266 Firmware files are in the form of Binary Files i.e. .bin files.

Now since I will be using only the AT Command Set of the ESP8266, I will download only the Bin Files associated with the AT Commands. In order to download the AT Commands Firmware for ESP8266, visit the official link here or directly download from this link. You can download other version as well as per your choice.

2. Downloading the ESP8266 Flash Download Tool

You can directly download ESP8266 Flash Download Tool from this link.

3. Installing the Firmware in ESP8266

After opening the ESP8266 Flash Download Tool, you need to select the firmware files that we need to install. You need to upload four files at four different addresses. The following table will give you the list of files and their corresponding addresses.

NOTE: This list is for Firmware over the Air (FOTA) Flash Memory Mapping for ESP8266 Modules with 1MB of Flash. For other flash sizes, please refer to the ESP8266 Getting Started Guide from this link.

File
Address in Flash Memory
boot_v1.7.bin
0x00000
user1.1024.new.2.bin
0x10000
esp_init_data_default.bin
0xFC000
blank.bin
0xFE000


In the ESP8266 Download Tool, in the SPI Download Tab, select the necessary files in the “Download Path Config” option by click on the (…) button. Also, add the corresponding addresses in the space provided.

After selecting the four files and filling in the Addresses, set the crystal frequency to 26MHz (it is usually 26MHz but in case your ESP8266 board has a different crystal, enter that value). Next select the flash size. Since I have a 1MB flash on-board, I have selected the 8Mbit (which is equal to 1MB) flash size option.

Finally, select the correct COM Port and set the baud rate to 115200. Make sure that all the serial terminal are closed. Now click on START button. The flashing of the firmware in ESP8266 should begin. If you notice in the ESP8266 Firmware Flash Tool, the moment you click on START, you will get two MAC Address as AP and STA and also information about the Module in the DETECTED INFO section.

If everything goes well, the ESP8266 Module must be updated with new firmware. If there is any error, disconnect the USB cable, connect it once again, and after clicking on START, push the Reset button of the ESP8266.

You will get a FINISH message on the Tool and you can close the tool after this. Disconnect the GPIO0 from GND and reset the device. Open the serial monitor of Arduino once again and check for new firmware.


Comments and Questions welcome! Thanks for reading.
Read More

JavaScript microcontroller you can program wirelessly - Puck.js

Many companies have designed their own Bluetooth beacon mostly to find objects such as your keys or pets. Puck.js is also a Bluetooth 4.2 LE beacon, but has many more features including compatibility with the upcoming Bluetooth 5.0 standard, and some GPIOs programmable with JavaScript (Espruino implementation), and corresponding visual programming editor.

Puck.js beacon supports Google’s Eddystone and Apple’s iBeacon to advertise itself to other devices, as well as Web Bluetooth currently supported by Chrome, but with other browser soon to follow. The beacon also supports both slave and master modes. You can program the device by going to Espruino website with Chrome browser, connecting your Puck.js, and start programming by dragging blocks around, or directly using JavaScript, using one of ~100 example projects or from scratch.

Puck.js is a Nordic nRF52832 SoC beacon that can be programmed via Javascript. The Open Source JavaScript interpreter Espruino is installed in the beacon that allows the user to program what ends up in the advertising data based on the board’s NFC, temperature and magnetometer sensors. The 4 leds and 6 GPIO can also be controlled. Being advertising-data programmable it will support Eddystone, iBeacon or any other custom protocol you might wish to invent.

The hardware, software, libraries and documentation are all Open Source that future-proofs any ideas based on this beacon should the developer be no longer be able to support the product or if your design needs to move outside the original hardware and software scope.puckprogramming
Read More

The MicroPython Tutorial

MicroPython natively supports the Pyboard (https://github.com/micropython/pyboard). The Pyboard uses the STM32F405RGT6 MCU (MicroController Unit) which uses the ARM Cortex M4 core, while The WiPy (http://wipy.io/) is an Internet-of-Things (IoT) development platform which is a circuit board with a Wifi chip.

Running your first script

Once you get connected with Pyboard, There will be a drive 0:/ by the pyboard, and should contain the following 4 files:

  • boot.py -- this script is executed when the pyboard boots up. It sets up various configuration options for the pyboard.
  • main.py -- this is the main script that will contain your Python program. It is executed after boot.py.
  • README.txt -- this contains some very basic information about getting started with the pyboard.
  • pybcdc.inf -- this is a Windows driver file to configure the serial USB device.

The REPL Prompt

REPL stands for Read Evaluate Print Loop, and is the name given to the interactive Micro Python prompt that you can access on the pyboard. Using the REPL is by far the easiest way to test out your code and run commands.




To get a micro python prompt to write instructions directly to the board do,

screen /dev/ttyACM0

This is what you get from the help() function on micro python interpreter.

>>> help()         
Welcome to Micro Python!

For online help please visit http://micropython.org/help/.

Quick overview of commands for the board:
  pyb.info()    -- print some general information
  pyb.gc()      -- run the garbage collector
  pyb.delay(n)  -- wait for n milliseconds
  pyb.Switch()  -- create a switch object
                   Switch methods: (), callback(f)
  pyb.LED(n)    -- create an LED object for LED n (n=1,2,3,4)
                   LED methods: on(), off(), toggle(), intensity()
  pyb.Pin(pin)  -- get a pin, eg pyb.Pin('X1')
  pyb.Pin(pin, m, [p]) -- get a pin and configure it for IO mode m, pull mode p
                   Pin methods: init(..), value([v]), high(), low()
  pyb.ExtInt(pin, m, p, callback) -- create an external interrupt object
  pyb.ADC(pin)  -- make an analog object from a pin
                   ADC methods: read(), read_timed(buf, freq)
  pyb.DAC(port) -- make a DAC object
                   DAC methods: triangle(freq), write(n), write_timed(buf, freq)
  pyb.RTC()     -- make an RTC object; methods: datetime([val])
  pyb.rng()     -- get a 30-bit hardware random number
  pyb.Servo(n)  -- create Servo object for servo n (n=1,2,3,4)
                   Servo methods: calibration(..), angle([x, [t]]), speed([x, [t]])
  pyb.Accel()   -- create an Accelerometer object
                   Accelerometer methods: x(), y(), z(), tilt(), filtered_xyz()

Pins are numbered X1-X12, X17-X22, Y1-Y12, or by their MCU name
Pin IO modes are: pyb.Pin.IN, pyb.Pin.OUT_PP, pyb.Pin.OUT_OD
Pin pull modes are: pyb.Pin.PULL_NONE, pyb.Pin.PULL_UP, pyb.Pin.PULL_DOWN
Additional serial bus objects: pyb.I2C(n), pyb.SPI(n), pyb.UART(n)

Control commands:
  CTRL-A        -- on a blank line, enter raw REPL mode
  CTRL-B        -- on a blank line, enter normal REPL mode
  CTRL-C        -- interrupt a running program
  CTRL-D        -- on a blank line, do a soft reset of the board

For further help on a specific object, type help(obj)

To close the screen session do 'Ctrl + a' and 'Ctrl + d' in sequence.


For detail please refer to The tutorial, http://micropython.org/doc/tut-contents.


Read More

Node.js Vs MicroPython for IoT

Here are the major differences between Node.js and MicroPython for IoT.

Node.js

1- Node.js built to handle asynchronous I/O from the ground up that make it good choice for IoT.

2-Dependency resolution with npm is so much better. Although if you have to develop and run the code in both Windows and Linux in rare cases you may see some quirks.

3- Right now there are two new micro-controller boards seeking funding for Node.js - one on Kickstarter ( Espruino), and the other on Dragon Innovation’s new crowdfunding platform(Tessel ).

4- Other framework and boards includes The Thing System , Node Red, noduino, and DeviceJs.

MicroPython

1-Circuit-level control is possible with MicroPython.

2- MicroPython has special commands that interface directly with assembly. Specifically, the assembly accessible to MicroPython is the ARM Thumb-2 instruction set. As an example, the command "mov(R1, 0xff)" would move the hexadecimal number "ff" to register-1.

3- MicroPython natively supports the Pyboard (https://github.com/micropython/pyboard). The Pyboard uses the STM32F405RGT6 MCU (MicroController Unit) which uses the ARM Cortex M4 core. The hardware is 32-bits and runs at 168MHz. The Pyboard supports I2C, UART, SPC, and GPIO.


4-MicroPython is used in the WiPy (http://wipy.io/). The WiPy is an Internet-of-Things (IoT) development platform which is a circuit board with a Wifi chip. Developers can easily program the WiPy and upload new code via Over-The-Air (OTA) updates. The WiPy uses the TI CC3200 MCU (Cortex-M4 @ 80MHz), has 256 kilobytes or RAM, and supports WiFi-Direct. The WiPy can be used to make various wireless devices. The WiPy can also be interfaced with the Pyboard or many other motherboards and circuits via its GPIO pins, I2C bus, or SPI. WiPy's manufacturer is Bestronics (http://bestronics.eu/).

5- Right now LoPy seeking funding on Kickstarter, It is a MicroPython triple-network dev platform which doubles up as a LoRa Nano gateway and Arduino IDE compatible as stretch goal. It include a dual processor (each core running @ 160 MHz) + WiFi + BLE radio System on Chip, network processor handles the WiFi/BLE connectivity and the IPv6 and IPv4 stacks and main processor entirely free to run the user application along with the LoRa stack.

Read More

Internet Of Things - Impact on our life style and wealth

The Internet of Things is a growing network of everyday objects from industrial machines to consumer goods that can share information and complete tasks while you are busy making other plan. Our Bikes, our homes, our audio system and even our city streets will be connected to the Internet, creating a network of objects that is called the Internet of Things, or IoT for short. 

The IoT is creating a new world, a quantifiable and measurable world, made up of millions of sensors and devices that generate incessant streams of data and can make more timely and better informed decisions. This new connected world brings with it fundamental changes to society and can be used to improve our lives and our businesses in many ways. But how it impact our day to day life?, how does it work? And  Is IoT a new source of wealth creation?

How Internet of Things impact our day to day life?

In our day to day life prospective, IoT devices can be classified in three categories: 
  • Wearables
  • Smart home devices
  • M2M devices
Wearables are the devices that people carry with them, which usually connect via Bluetooth or WiFi to a smart phone, and from there to the Internet. This category includes devices such as smart watches, fitness bands and devices to help people to live more ’mindfully’ – increasing the wearer’s awareness of how well they sleep, how much they move around, monitoring their vital signs, tracking their exercises, tracking their gadgets etc. 

Smart home devices are also part of the IoT and usually connect to the Internet via ZigBee or  low power wireless communication and the home router. These include all domestic devices, from lights and light switches to motion sensors, thermostats, door locks and automated curtains. The smart phone also becomes an online dashboard and control device for Smart Home applications via its WiFi connection to the router.

The third category, M2M (Machine to Machine) devices, comprises devices that are directly connected to the cellular network and internet, such as vehicle that can report their location (in case of an accident or theft), vending machines that can alert when their stocks are running low, industrial machines that can predict their fault very early stage and alert before failure etc.

How does Internet of Things work?


Whatever the type of IoT device, it consist of a sensor, a micro-controller and a real time operating system running on micro-controller. Sensor will sniff a wide variety of information ranging from Location, Weather/Environment conditions, Grid parameters, Movement on assembly lines, Jet engine maintenance data to Health essentials of a patient. Microcontrollers and RTOS together create a IoT Gateway, that enables companies to seamlessly interconnect industrial infrastructure devices and secure data flow between devices and the cloud. 

At device end various range of hardware boards, like PanStamps, Raspberry Pi, and Pinoccio, different RTOS like Contiki, TinyOS and Kura, many communication technologies like Zigbee, 6LoWPAN, and WiFi and protocols like CoAP and MQTT are playing vital role to put these device online. On the other side at cloud end various type of infrastructure are there to provide a middle layer for IoT devices and real world, currently REST API is the best choice as a middle layer. Mobile Apps and Web Applications are working as presentation layer, providing UI to control and access IoT devices.

Is Internet of Things a new source of wealth creation?

Cisco estimates that 50 billion devices and objects will be connected to the Internet by 2020. Yet today, more than 99 percent of things in the physical world remain unconnected. The growth and convergence of processes, data, and things on the Internet will make networked connections more relevant and valuable than ever before. This growth creates unprecedented opportunities for industries, businesses, and people, but the real benefits of the Internet of Things will not, however, be realized until leading companies develop the next generation of applications that address specific business needs.

The IoT can potentially transform nearly every industry-locally and globally. It is creating new opportunities for business in four main ways

  • Advance business models:  The IoT will help companies create new value streams for customers, institute processes that speed time to market, triage market performance, and respond rapidly to customer needs. Uber is one of the example of such a business model.
  • Real-time critical information:  With IoT, organizations can capture more data about their processes and products in a more timely fashion to create new revenue streams, improve operational efficiency, and increase customer loyalty, e.g. vending machines that can alert when their stocks are running low.
  • Diversification of revenue streams:  The IoT can help companies create new services and new revenue streams on top of traditional products, e.g smart shopping malls and their automated inventory management system.
  • Efficient and intelligent operations:  Access to information from autonomous end points, as today’s smart grid already supplies to utility companies, will allow organizations to make on-the-fly decisions on pricing, logistics, sales, and support deployment, etc.
With policies to encourage interoperability, security, and property rights, the Internet of Things can begin to reach its full potential, if leaders truly start embracing data-driven decision making.
Read More