Latest Entries »

In the previous post PART 1  we explored the ways to make the local IP address of PC/ESP8266 STATIC.

In this part 2 we shall see how to make your Dynamic Public IP as STATIC using NO-IP account & then Port forward to the server started on port 350 of ESP.


First let us do the PORT FORWARD  settings.

For this , type in your Router’s Gateway IP in the browser & log in to Router’s Settings.Here my Router’s gateway is

The PORT Forwarding is done under VIRTUAL SERVER.

For different Router , you can check out this excellent link which guides settings for almost all types of Routers in the World.

In my case the VIRTUAL SERVER is under ADVANCED —> NAT



Under Virtual Server feed in the WAN & LAN ports as 350.

Under LAN IP feed in the static IP of our ESP8266.Here it is which we made static as described in part 1.

Once the APPLY CHANGES button is clicked , the entry appears under Forwarding Table.

Image 2




Next is the Windows firewall settings to allow communication through port 350.

Open Windows Firewall with Advanced Security.

Click on Inbound Rules & then New Rule.


Image 3


Select Rule Type as PORT.

protocol as TCP.


Image 4

Under Action select “Allow the Connection”

& tick mark all under the Profile.

Provide a Name for the Rule & save it.

Image 5



Now open the Putty window where you’ve connected ESP8266 ( refer part 1 for details)

Before starting server , issue the command


Then start the server on port 350 using


Image 111

Now the Server starts listening on PORT 350.


Convert Public IP to STATIC

The external world communicates with your ESP server using the Public IP of your Network.This IP is generally DYNAMIC which means it changes on every boot of your Router.

To make it STATIC we shall use a service called NO-IP which converts your public IP to a Domain name & follows the changes.


Sign up by providing your EMAIL.

Image 6

LOG IN  your NO-IP account.

Under Dynamic DNS click on ADD HOSTNAME.

Image 7

Enter the host name, for e.g , as   testmyiot  & from the dropdown select a domain , say,

Now your new host name is


Image 8

Next , click on Device Configuration Assistant.

Image 9


Under the dropdown select the host name we created ,


Image 10

Next step is to fill in the Device details.

Device type is SERVER

Device Brand is WEB SERVER

Router make – select your router name .If not found in list then select other

& then enter Router type as Home.

Image 12

On the Next window answer NO

We shall come back to this window shortly after setting the Router for NO-IP.

Image 13


On the next window , before clicking YES to log in device, go to the Router settings in browser where you typed in

Image 14


Click on SERVICE & then DDNS.

Most of the Routers support NO-IP & is listed on the drop down.

Select NO-IP

Image 15

Feed in the Host Name as

Provide the email & password you used to create the NO-IP account.

Image 17

Click on ADD to save to DDNS Table of Router.

Now go back to your NO-IP account window.

Click YES to log in device.

Image 18

On next window click on TEST CONNECTION

Image 19

After a short time you should see SUCCESS.

Now you’re done with DDNS settings.You need not go further to Port forward tab, as we’ve already done it.

Image 20


Following is the procedure , in case your Router doesn’t support NO-IP .

If you do not see NO-IP under drop down of DDNS settings of Router,

go back to your NO-IP account & click YES to the question “Is there a computer always running on your Network?”.


Image 22


You’ll be taken to next window to download DUC.

DUC- Dynamic Update Client is a software which runs in the background of your PC to follow your public IP.

Download it & install.

Image 23

Before FINISH ensure to tick mark “Run DUC in the background”

Image 24

Now you’ll be asked to login your NO-IP account again

Image 25

Once you log in, the following windows appear.

Select the host name you created & click save.

Image 26

Now you can see all TICK marks in the DUC window.

DUC runs in the background & follows your public IP to the domain name you created.

Image 28


You can test the access to ESP server now from a distant PC.

From anywhere in the world , make open a PUTTY window.

Select RAW & feed in the host name & port as 350.

Image 29

You get CONNECTED to the ESP server


Watch this demo video :




cooltext753793315   cooltext753790696

This post is all about converting your device address in Network to STATIC & establish PORT FORWARDING.

For IOT projects it is easy to test in local setup using  the LAN IP starting with 192.x.x.x .But from outside world this IP cannot be reached.Here I will walk you through the steps to contact the local IP from outside world.This procedure is a major step needed in IOT projects  , without which external control is not possible.

Following is the setup of my Network. A ROUTER is on the top of the network for which the Internet Service Provider is Airtel . The Router is WIFI enabled so that I can connect multiple devices wirelessly.

Total 3 devices are connected to the Router as shown below.




On switching on the power , the Router (DHCP enabled) assigns local IP addresses to all the devices connected.The IP address assigned is DYNAMIC which means , it changes every time I switch on the Router.

There are two types of IP addresses: STATIC & DYNAMIC

STATIC addresses are just that – unchanging

Dynamic IP addresses are assigned on-the-fly & keeps on changing by every reboot.

Because most home users tend to turn their computers off, even broadband connections, such as DSL and cable, continue to use dynamic addresses. If your computer is off, you don’t need an IP address so someone else might get to use it.

Each time you connect to the internet, your ISP assigns you an IP address to use. This IP address is the Public IP which others use to communicate to your PC.This IP address is DYNAMIC which changes every time you newly connect to web.

The next time you connect, you might get a different address. If you’re only connecting out to the internet, that’s all you need.

If you expect people to connect in, say you want to run a web server that you want people to be able to find and visit, you’ll most likely need a STATIC IP address. A static IP is assigned by your ISP at an extra cost which is unnecessary for a home network.

In this post I shall explain the ways of changing the LOCAL IP address  as well as the PUBLIC IP address to STATTIC.Suppose you run a web server on your ESP or Raspberry PI & wish to connect from external world.It will work only for the first time , as you use Dynamic IP to communicate.

Next time you power up , the IP address might have changed.So using a STATIC IP is a must .


SETTING the Local IP of PC / Laptop to STATIC :


In my network the PC assigned a Dynamic IP of

Run –> CMD –> ipconfig /all       reveals the  address details as seen below :



Here you can see the Default Gateway is which is the IP of the Router .To port forward settings we need to use this IP on a browser to enter the settings , which we will see later in the post.

Local IP assigned to the PC is the IPV4 address

Let us change this to STATIC now.

Open the CONTROL PANEL –> NETWORK and Internet  –> Network and Sharing center

Click on “Change adapter settings”

Image 10


Right Click on the Network connection & select Properties

Image 11


Select the Internet Protocol Version 4 & double click on it.

Image 12

Now you see the following screen where selection is done by default to obtain IP automatically.

Change this selection o “USE the following IP address “ & enter the IP as

The first three bytes must match that of the default gateway address which is

The last byte can be assigned at your will , within the IP range allowed by the router.

Here I change the IP to  Note that only the last byte I’ve changed.

Subnet mask & Default gateway are entered as seen in the ipconfig /all window above.


Image 13


DNS server address also changed as seen in the screen shot below

Image 14

Image 15

Reboot your PC to see the changes effective.

Now the IP address of my PC will be & remains STATIC even after reboot.

The above task can also be done automatically by a trial software :



You can download the trial version here :

The trial version allows all other tools except port forwarding.Open the tool & click on STATIC IP Address & follow the guidelines to fix your PC’s IP as STATIC.


STATIC IP for other devices ESP & Raspberry PI:


For making the Raspberry Pi’s Local IP to STATIC you can follow this blog :


Regarding the IP of ESP8266 we need not change anything.Once the STATION IP is assigned to ESP8266 , the module remembers the Access Point it has connected & the STA IP assigned .

or issue the command


Image 16

The ESP module remembers the Access Point it has joined with & the IP till you quit the AP.

But on Reset it seems to get changed.

The only way to assign STATIC IP to ESP module is through the Router settings.

In your browser type in the IP address of your Gateway , here it is

Under LAN setup look out for DHCP settings.

In latest Routers you see a setting called DHCP RESERVATIONS.

In the IP Address field, type the IP address to assign to the computer or server.
Choose an IP address from the router’s LAN subnet, such as 192.168.1.x.

Type the MAC address of the ESP MODULE server.
As the ESP has already joined the AP, it  is already on your network, you can copy its MAC address from the Attached Devices screen and paste it here.

Here I will show an example of setting the Static IP in DHCP Reservation under BEETEL Router

In almost all the Routers the settings are the same.Just look out for the wordings Open-mouthed smileHCP RESERVATION” or “DHCP STATIC “ under the LAN setup.




Under DHCP STATIC tab , enter the IP address you want to fix for the ESP module



Feed in the MAC ADDRESS of the ESP device.


You can learn the MAC address from the AT command AT+CIFSR of ESP module.


The MAC address to be entered without any special character like colon.Please check out your Router settings for entering the MAC address (generally given near the MAC address box , how to feed in the address).


Click on ADD to save the settings


Now RESET or power back the ESP module.

The IP address will be the same for ever.The Router will always assign the IP you’ve set for the ESP module.



In a  D-Link router, it is under  the setup.Go to Setup / Network settings / DHCP reservation. You can then ask the router to give a given MAC address a fixed IP address.
Alternatively, the ESP can request a certain IP address from the router which we’ve seen in the example of Beetel Router above.

Now that the STATIC IP is assigned, let us see the methods of PORT FORWARDING & converting your public IP to STATIC using NO-IP account in PART 2.


In the previous post part-1 I explained the initial setup of starting a Server on PC on a port , setting the Windows firewall to allow the port for external communication , PORT FORWARDING set up in the Router config, etc..

In this part 2 I’ll show a practical demo of sending Temperature data to the Server.

As given in part 1 , start a server on distant PC on port 350 & do the port forwarding settings in Router config as explained.

A LM35 sensor is connected to pin A0 of Arduino & a GSM SIM900A is connected to pins 7 , 8 , Gnd of Arduino. As Soft Serial library is used in the code , pins 7 & 8 are declared as soft Rx & Tx.

The Rx pin goes to Tx of GSM , Tx connected to Rx of GSM , GND is made common.An external power source of 12v 1A is used for the GSM.

Download the Arduino code HERE


#include <SoftwareSerial.h>
SoftwareSerial myGsm(7,8);
float temp;
int tempPin = 0;
void setup()




myGsm.println(“AT+CSTT=\”bsnlnet\”,\”\”,\”\””);//setting the APN,username & password


myGsm.println(“AT+CIFSR”); //get IP address





void loop()

void printSerialData()


void sendtemp()
temp = analogRead(tempPin);
temp = temp * 0.48828125;
Serial.print(“TEMPERATURE = “);



The Analog pin A0 is assigned as tempPin to read the LM 35 sensor data.

Initially any previous IP connection is SHUT  using the command


This is essential to start a fresh TCP/IP comnnection.

Single IP connection mode is set by


GPRS is attached using


Task is started with the command


The Access Point Name of the mobile service provider can be known  by placing the SIM on your Android mobile. It’s shown under

Settings  –> More..  –>  Cellular Networks –> Access Point Names

In my case the APN is bsnlnet , user name & password are empty



Then we bring up the Wireless connection with GPRS using


This takes a little moment , so a delay of 6 secs is a must in the code.

The IP address assigned by GPRS is obtained by


Now we start up TCP connection with Server IP address & Port number of distant server


Once the connection is established , we send data using


A CTRL+Z is required to send data which is executed using hex 1A


Upload the code to Arduino & open the Serial monitor to watch the AT commands executed



Following is the screen shot at the Server side.


Image 3




This tutorial is of 2 parts.

First part explains the following :

–Starting a Server on your PC  & start listening on a port (say 350) . For this we use SOCKET TEST or HERCULES software

— Once the port is listening , we test communication locally using PuTty

— Windows Firewall setting has to be done for a NEW INBOUND RULE allowing port 350 for communication.

— For connecting to this port from external world , PORT FORWARDING to be done in Router’s Virtual Server setting so that any contact to the public IP is routed to the PORT 350 .


Second part is practical demo using GSM SIM900 or ESP8266 with Arduino.


The following picture shows my simple home network connections.A BINATONE make Router is used to connect to the Internet provider Airtel Broadband.The IP address of the Router is

which is the Gateway IP address used to access the settings on Router.My Laptop is connected over WIFI to this Router.The Router assigns a local IP address to my PC which is

Apart from these, the Internet Provider assigns a Public IP to my Network which is

This is the IP by which external world can contact my network.

Note that all these IP addresses are DYNAMIC & changes every time I power up the Router.

In another post I’ll explain how to make these IP addresses STATIC , so that the IP remain the same always.



All the Network Tools I’ve used for this demo can be downloaded HERE.

Let us start  a server on port 350 using the SOCKET TEST tool.

This tool allows us to start a server easily.Click on the SERVER Tab & then feed in the port number where you want to listen.



Now the server is up & running.It starts listening on port 350.

Remember to avoid the standard ports like 80 ( http) , 21 (FTP), 23 (TELNET), 22 (SSH) ,etc which are well known ports ,pre assigned for the particular protocol.

The dynamic range of port number you can assign goes up to 65535 or 2^16-1 (16 bits).

The IP address of the router can be known from the command window

RUN –> CMD –> ipconfig

The Default Gateway IP is the address of the Router.





Once the port is assigned for the server , you can use the ADVANCED PORT SCANNER tool to verify the port on the particular IP.

In the screen shot below you can see that the port number 350 is discovered as a TCP Server port on my PC whose local IP is



While the port scanner is scanning , you get messages on your SOCKET TEST window.

Here you can see the Port scanner software connecting to the port & then disconnecting after scanning.



Alternatively you can use a PUTTY serial port tool to test local communication.

Select the connection type as RAW & provide the host IP which is & thtn the port number 350


Click on open , to see the New client connection on the Socket test window.



Now you can test two way communication between  socket test (server) & putty ( client).





The Windows Firewall settings has to be done to allow the port 350 to listen from outside.

Open the Windows Firewall & Advanced Security window.

Click on Inbound Rules & then New Rule.



Select the Rule Type as PORT & in the next screen select protocol as TCP.

Under Specified local ports feed the port number as 350



Under Action window select Allow the Connection

Next window is Profile window , here tick mark all – Domain,Public & Private.

Provide a name to the Rule & save it.

Now your PORT 350 is allowed to listen by the Windows Firewall.




This step is final where you redirect the incoming request to the port number of local IP where the server is started.

Here my local PC’s IP is   &  server is started on port 350.

Anyone from external world connecting to my public IP has to be directed to the port 350 on local IP

This is called PORT FORWARDING , which is very widely used in CCTV Remote viewing & in Gaming.

The setting has to be done in your Router.

Type in the Gateway IP of your Router , here it is , on your browser & provide the user name & password.

Here is an excellent website showing all screen shots of almost all Routers in the world


Mine is BINATONE Router.

You’ve to search for something called VIRTUAL SERVER on the router setting.




For my Router it’s hidden under ADVANCED SETUP –> NAT –> VIRTUAL SERVER

For more details you can visit the above portforward link

Create a new Virtual server listing by entering the

— Port number , which is 350 .Enter same number at all fields like start & stop.

— Local IP address , here you provide the IP where server is started ,

— save the listing



Once saved , the port number 350 is open to outside world.

Online port open test tools are available


Once you open the link , your public IP will be automatically shown.

Fill in the PORT number to be checked & click on CHECK button.

If you see SUCCESS , then you’re done with PORT FORWARDING






Following is the list of AT commands used by the GSM SIM900A to contact the server.

This is for part 2 of the post.PART 2 LINK HERE



cooltext753793315   cooltext753790696



This post is on retrieving particular Data from a web page using SIM900A & Arduino.

For e.g we shall retrieve the Blog Status hits of my blog in which you’re reading this.

We’ve to create an API link for this data so that data can be retrieved using SIM900A.

To create API link we use the website.

First let us read the XPATH details of the data wanted as below :

The procedure is related to Google Chrome WebBrowser


Image 1


Right click on the data to be retrieved & click on INSPECT .




A highlighted code will be displayed on which Right click & then select COPY  –> COPY XPATH



The copied XPATH detail has to be used in THINSPEAK account to create the API link.

Open your thingspeak account & click on APPS –> THINGHTTP



Click on NEW THINGSPEAK to create a new “thing”.



You can provide a suitable Name for the App & under URL provide the website link from where you want the data from.

Method is GET & version is 1.1



Scroll down to bottom & under the PARSE STRING field paste the XPATH copied from the website.


Click on SAVE & you see the API LINK generated.



You can use this API link in your browser to confirm the data retrieved.

Image 15

Now let us see the practical application using SIN900A GSM & ARDUINO.

The connections between Arduino & GSM are :

Rx of GSM —> pin 8 (Tx) of Arduino   (since we use the SoftSerial in Arduino code , we declare pins 7 & 8 for Serial communication)

Tx of GSM –> pin 7 (Rx) of Arduino


A separate power source is required for the GSM.

Following are the AT commands used


DOWNLOAD Arduino code HERE


#include <SoftwareSerial.h>
SoftwareSerial myGsm(7,8);

void setup()


myGsm.println(“AT+SAPBR=3,1,\”CONTYPE\”,\”GPRS\””);//setting the SAPBR,connection type is GPRS

myGsm.println(“AT+SAPBR=3,1,\”APN\”,\”\””);//setting the APN,2nd parameter empty works for all networks


myGsm.println(“AT+HTTPINIT”); //init the HTTP request

myGsm.println(“AT+HTTPPARA=\”URL\”,\”\””);// setting the httppara,
//the second parameter is the website from where you want to access data

myGsm.println(“AT+HTTPACTION=0”);//submit the GET request
delay(8000);//the delay is important if the return datas are very large, the time required longer.
myGsm.println(“AT+HTTPREAD=0,20”);// read the data from the website you access

myGsm.println(“AT+HTTPTERM”);// terminate HTTP service


void loop()

void printSerialData()



AT+SAPBR is used to declare the Connection Type as GPRS

& Then the APN –Access Point Name of the mobile service provider is given.

An empty string also will work.Or you can slide the SIM into your Android mobile

under Settings –. More –> Cellular Networks  –> Access Point Names

you get the APN details

AT+SAPBR=1,1  enables the GPRS & APN settings & then HTTP is initialized with AT+HTTPINIT

HTTP parameters are then provided as “URL” & the API link we created earlier.

Note to use HTTP ( not HTTPS) in the link, as we use AT commands for HTTP only here.

AT+HTTPACTION=0 enables GET action

The GSM respons with


Here 0 means GET action & 200 means OK , 12 bytes are retrieved.

If you get 600 instaed of 200 ,then it means a Network Error.

AT+HTTPREAD command is used to read the Data.


Image 11

cooltext753793315   cooltext753790696


A6 GSM  is introduced by the makers of ESP8266 , AI-THINKER.

The module is much cheaper than SIM900 & connections are quite simple.In this post we shall see how to connect with Arduino to make a call & send SMS.

A mobile adapter is enough to power up the A6 GSM module.The Vcc pin of GSM must be looped with PWR_KEY pin.This acts as a chip enable.You can leave this connected or remove after a moment.The module just requires a HIGH trigger at PWR_KEY pin while started.

A valid SIM is used at the back side of the module.The SIM slot provided is for a Micro SIM.If you ‘ve a Nano SIM you need to use a converter to fit the slot.

The RxD pin of A6 GSM is connected to Tx of Arduino

The TxD pin of A6 goes to Rx of Arduino.

GND pin of A6 to GND of Arduino.







Power up the module & then after a moment make a call to the SIM number used in the GSM module from another phone.If you get the RING Back tone , it means the module is ready.As there is no LED indication provided , this initial step is required to confirm working.


Making a CALL


Connect the USB cable of PC to Arduino & upload this code for making a call.Remember to disconnect connections at Rx/Tx before uploading the code.

Image 1


The mobile number to be called is stored in an Array of char variable.

In the void setup() code we begin Serial communication at 9600 baud.Though the default baud rate of A6 GSM is 115200 , it is effective to use 9600 baud .

ATD command followed by the number to be called is used to make a call.

A semicolon at the end is not a must as in SIM900.The call will be made even if you do not use a semicolon.

After a delay of 8 secs ATH command is sent to terminate the call.

You can open the Serial monitor of Arduino & watch the AT commands landing.You should set the baud rate as 9600 in the Serial monitor as well.

The void loop() function is left empty.In case you try the code inside loop , the call will be repeatedly

made for ever.


Sending SMS

Now let us see the method to send SMS.

Following screenshot shows the code for sending SMS.

Image 2


DOWNLOAD Arduino code HERE


which will allow you to read and write SMS messages as strings instead of hexadecimal characters.

Serial.println is used to send the AT command with a New line (Enter).

After a delay of 2 seconds next command


is sent.The target phone number is to be given within double quotes. Note the usage of

Serial.write(0x22)  which is the ASCII equivalent for double quotes.

0D followed by 0A are the ASCII equivalents for  CARRIAGE RETURN & LINE FEED.

The delay of 2 seconds is a must after setting the GSM to text mode AT+CMGF=1

Try this code without the delay , you won’t get response.

After the 0D , 0A a delay of 2 seconds is provided & then the message to be sent is given.

CTRL+Z is finally given to send the message.

This is provided by the ASCII equivalent 1A or char(26)

Watch this video :



cooltext753793315    cooltext753790696

TOUCH screen LCDs are now available for use with Raspberry PI.

7 Inch LCDs work straight from the box as soon as you plug it onto your PI.No driver is required , but the touch response is poor & screen width is not full.

This post walks you through the steps of installing proper Drivers for touch to work smoothly & also installation of virtual keyboard is introduced.

The 7 inch LCD used here has a resolution of 800 x 480 pixels & the screen is Capacitive Touch.

HDMI interface is provided for Display &  USB interface for touch control. Both the HDMI & USB cables are provided in the box.

Connect the HDMI cable to the HDMI port of Raspberry PI & THE USB cable to any one port of the RPI.Slide the mini switch to ON position.

Provide a 5v 2Amp power source to the RPI , no separate power is required for the LCD

Image 2


7in_1    7in_3


Connect the RJ45 cable from the Internet providing Router to the RJ45 jack of Raspberry PI.In case of PI3 also this internet connection is a must for driver download & setup.Later you can switch on the WIFI on PI3 to connect with internet.

Insert the micro SD card with the latest RPI3 RASPBIAN Image on to the PI & switch ON the power.

You can see the initial screen is not Full screen. But interestingly , the touch will work.

Image 3


step 1 : CONFIG.txt editing to get FULL Screen Display :

To get the full screen display , you need to edit the CONFI.TXT file inside /boot folder.You can remove the SD card & plug it to PC using a card reader.

Open the folder & look out for the CONFIG.TXT file .Open this file using Wordpad or Notepad++.

Scroll down to the end of the file & append these lines :

Image 4


Setting max_usb_current=1 sets the available current over USB to 1.2A (default is 600mA)
This can help if you have a decent power supply (2A, at least) and need to power the external Touch screen display.

For supporting HDMI modes that aren’t from the official CEA/DMT list of modes
use  hdmi_mode=87

& then define the CVT – Coordinated Video Timings

The  hdmi_cvt 800 400 60 6 0 0 0
defines the timings of the component video signal

hdmi_cvt=<width> <height> <framerate> <aspect> <margins> <interlace> <rb>
width        width in pixels
height       height in pixels
framerate    framerate in Hz
aspect       aspect ratio 1=4:3, 2=14:9, 3=16:9, 4=5:4, 5=16:10, 6=15:9
margins      0=margins disabled, 1=margins enabled
interlace    0=progressive, 1=interlaced


Save this changes.Remove the SD card & plug it to RPI.

On rebooting you can find the FULL SCREEN display , but sadly the TOUCH performance will degrade. The touch selection will not be the one you insisted on touch.

To solve this problem you need to install the drivers.


step 2 : TOUCH DRIVER DOWNLOAD & Preparation

To install the Drivers , open the browser on PI & browse to

Scroll down to the driver section & download the driver which says




Click on the link to Download.

By default the tar file will be downloaded to  /root/Downloads


Using FILE MANAGER locate this folder & copy the downloaded tar file.

Now paste this file under /home/pi/Downloads

Right click the file & click on Extract Here..  to unzip the file.




Now you can see the unzipped folder.

Copy the PATH to this folder or note down the path , as we need it to install from within the Terminal.





Open the Terminal & change directory to the PATH copied as in above step.

The path is  /home/pi/Downloads

Note the capital D in Downloads , as Linux is case sensitive.

To list the contents use ls  command

The list will display the folder LCD-show which contains the driver we need.



Change Directory to LCD-show.

ls to list the contents

LCD-800×480-show  is the driver we need to install.



To install use the command  dot forward slash LCD7-800×480-show



The RPI will Reboot automatically & displays Full Screen.

Now try the TOUCH Functionality.It will be breeze to use the touch now, after driver installation.


step 4 : VIRTUAL KEYBOARD Installation

Now is the time to install the virtual keyboard .This avoids the physical keyboard & is a must for a touch screen.

Under Terminal type in

sudo apt-get install matchbox-keyboard

The keyboard installation starts.

When prompted , enter y to continue.



Once the installation is over you can see the KEYBOARD under Accessories.



If the KEYBOARD Icon is not seen under Accessories , click on

Preferences —> Main Menu Editor.


Under Main Menu Editor , put a tick mark against KEYBOARD.

A reboot is required.


Now open the KEYBOARD & enjoy.



Watch this demo VIDEO :


5 inch TOUCH SCREEN for RPI :–hdmi.html


cooltext753793315    cooltext753790696


After the huge success of the ESP8266 IOT modules , the AI-THINKER company now introduces the new GSM Module A6.In near future this module will be available at half the price of SIM900.




This is mini GSM / GPRS core development board based on GPRS A6 module. It supports dual-band GSM/GPRS network, available for GPRS and SMS message data remote transmission.
The board features compact size and low current consumption. With power saving technique, the current consumption is as low as 3mA in sleep mode.

– Working frequency: quad-band network, 850 / 900 / 1800 / 1900MHz
– Working voltage: 4.5~5.5V DC (On-board voltage regulator circuit supply power for A6 module)
– Working current: maximum of 2A
– Sleep current: 5mA
– Onboard Micro SIM card holder, you can install Micro SIM card
– Onboard Micro USB interface for external power supply
– Communication Interface: TTL serial port
– Baud rate: 115200bps and it can also be set by AT command.
– Interface logic voltage: 3.3V
– Make and answer phone calls using a headset and electret microphone.
– Send and receive SMS messages.
– Send and receive GPRS data (TCP/IP, HTTP, etc.) .




To test the module we make use of an USB-TTL module built on CP2102 .



The connections between A6 GSM & CP2102 module are :

A6 GSM             USB-TTL Board

———-       ————

UART_TXD    —>  Rx

UART_RXD    —>  Tx

GND            –>    GND

The A6 GSM can be powered up with a cell phone charger for which a mini usb socket is provided at the back side.Its advisable to use 5v 2Amp adapter.

Insert a valid SIM to the SIM holder seen at the bottom side of the module.




Connect the USB-TTL board to the PC & open the Device Manager to note the COM port alloted.

Open the TERMINAL Software & select this port .Select baud rate as 115200 & click connect.





The GSM module takes around 10 secs to boot up & finally you get CREG 1.

Now you can type in AT commands.The GSM A6 module requires a Carriage Return after every AT command .You can tick mark the CR found at the bottom right of Terminal before sending any command.Or you can make use of the SET MACROS function .Here you store the AT commands followed by $ sign & then 0D .

The $ sign is to Append & the 0D is the ASCII for Carriage Return.


AT commands are stored in M1,M2,M3,… as shown in screen shot above.

Now if you click on M1 , AT command is sent with CR & you get OK response.

Clicking M2 will send ATDxxxx to dial a number . The semicolon after the number is not a must as in SIM900.

ATH disconnects the call.

To send SMS

AT+CMGF=1  to set the TEXT Mode


Now you get a  >   symbol & the module waits for you to type in the message.

After typing the test message a CTRL+Z is to be sent .This is done by appending 1A which is the ASCII for the CTRL+Z

Watch this demo video :



cooltext753793315    cooltext753790696


Image 2


Image 1


Introducing a new ESP8266 Development Board with an ESP-12, a 3x AA battery holder, a voltage regulator, an RGB LED, several red LEDs, and a light sensor LDR on the ADC input all on one board.

The board can be controlled by an open source Android App which is available from the AI-THINKER Website.

GPIO pins are extended with berg pins for easy external connections. RXD,TXD & GND pins are provided for programming / firmware upgrading. A yellow jumper is provided to pull GPIO0 pin to GND during programming. During normal operation this jumper must be removed.

The board is powered by 3 nos AA batteries , for which a battery box is already wired. On board 3.3v regulator is provided for a stable power supply.

No power switch or Reset switch is provided. To switch off you need to pull out one of the batteries.

The board comes pre-loaded with a demo which does actually seem to work.  If you have an Android based phone or tablet you can download AI-Thinker’s app to control and mix the color balance on the RGB LED and to switch the other LEDs on and off.

The Android Application can be downloaded from :


There are also 6 red LEDs fixed with the necessary resistors connected to GPIO16, GPIO14, GPIO5, GPIO4, GPIO0 and GPIO2. A BLUE LED is always ON if the board is powered.

The GPIO13, GPIO12 and GPIO15 are connected to a RGB LED which allows you color mixing using PWM.


The analog-digital converter is also available on a pin & connected to a light resistor. This lets you quickly test the ADC and you still can clip the resistor off if you want to measure another analog source.Remember the range of ADC is max 1v & not 0 to 3.3v

If you don’t want to use the light sensor or the LEDs you can simply clip them off. Then you’ll just have an  ESP8266 with 3xAA power supply, 9 available GPIO pins and one ADC.

On the playstore of your Android device search for  IOT DEMO App & install it.

Open the Settings & enable WIFI of the Android phone.Now power on the ESP board to see the AI-THINKER SSID on your mobile.

PAIR this with the ESP board using password ai-thinker

Now open the app & touch on LED 1 to 6 , to see the corresponding light glowing on the ESP board.On the top you can see 3 icons with sliders in the App. Use this to mix colors on the 3 color LED of ESP board.

Once the functioning of board is verified , you can proceed to connect the GPIO pins of ESP board with a 4 channel Relay board.

The 4 channel relay board used requires a separate power source of 5V, 1amp.For demo 2 of the GPIO pins are connected to relay 1 & relay 3.The GND pins of both ESP & the Relay. board to be made common.

You can watch this video to learn the home automation basics with ESP board :




cooltext753793315    cooltext753790696


A regular LCD requires a lot of wires (parallel interface) to be connected with a Microcontroller.The Serial LCD  backpack built on PCF8574 IC uses the I2C bus to convert  the parallel interface to a serial one.This needs only 2 wires SDA & SCL , apart from the power connections.

The I2C backpack can be soldered on to the LCD .It can be used for 16 x 2 , 16 x 4  &  20 x 4 LCDs that have HD44780 IC .




The blue preset is to adjust the contrast of the LCD. The black jumper on the left is to enable the Backlight of LCD. The I2C device has a HEX address by which a microcontroller can communicate with it.This is set by the 3 bits A0,A1 ,A2 .If no jumper is present , it is HIGH &  a jumper means LOW. By default all the 3 jumpers are open . ie., A0,A1 A2 all are 1s.

By setting this address lines you can connect upto 8 devices to the same I2C bus.

Eight programmable slave addresses possible using these three address pins.



The I2C bus has 2 bidirectional active wires SDA & SCL .They are joined to positive supply through a pull up resistor of 4k7.When the bus is  idle both lines are pulled high.

The expanders can be configured to have a unique 7 bit address. The first 4 bits are factory configured to

0100 for PCF8574/PCF8574T

0111 for PCF8574A

The lower 3 bits are settings on device pins A2,A1,A0.

The eighth bit specifies whether the following data is a Read  or Write operation.

Following table describes how the address is arrived.By default the factory setting is A2,A1,A0 all open leading to all 111.

First 4 bits are factory set to 0100 for PCF8574T/PCF8574 .If the port expander IC is PCF8574A , the first 4 bits will be 0111.

For calculating the address a 0 is added at the MSB (R/W bit not taken into account for calculation)

Hence the default I2C address of the module is HEX 0x27 .






Now let us see how to use this backpack with Arduino UNO.

To start with download the latest Library from this link :

NewliquidCrystal_1.3.4 is the latest file at the time of writing this blog


Unzip the downloaded file & copy the folder NewliquidCrystal.

Paste this folder into your Arduino libraries folder.

Generally the path is C:\ProgramFiles\Arduino\libraries





Now open the Arduino IDE (make sure your Arduino IDE is the latest version).

Under File –> Examples , you can see the NewliquidCrystal



To know the I2C address of the device there is a scan code in Arduino forum.

Before starting the test , make sure that the I2C back pack is soldered properly on to the LCD.Here we make use of a 16 x 2 LCD.

Connections between Arduino & I2C LCD  are done as below :



Upload the scanner code on to the Arduino. Open the Serial monitor & set the baud rate to 115200.

The code scans for the I2C devices & lists the address in HEX format.

In our test we’ve connected a backpack I2C with no jumpers on A2,A1,A0 , which results in 0x27

This is the Slave address of the device.



The LCD Library & some sample code can be downloaded from :


Once the connections are made, open the Arduino IDE .Make sure that you use the IDE later than 1.6.0 version.

The Hello world sketch includes 2 header files – wire.h &  LiquidCrystal_I2C.h

A new object named lcd is instantiated using the constructor LiquidCrystal_I2C which takes parameters 0x27,2,1,0,4,5,6,7

Here 0x27 is the slave address of I2C backpack.



The next parameter 2 represents P2 pin of PCF8574 which is connected to EN of the LCD.

The parameter 1 is the P1 pin connected to R/W of LCD.

The parameter 0 is the P0 pin connected to RS of LCD.

4,5,6,7 are the 4 data pins connected to D4,D5,D6,D7 of LCD.

Inside setup , lcd.begin(16,2) ;   initializes the 16 x 2 LCD .Then the lcd.setBacklightPin(3,POSITIVE);

makes the P3 pin makes the P3 pin to control the backlight of LCD.

lcd.setBacklightPin(HIGH);  makes the P3 pin go High, which turns on the NPN transistor.This provides GND to the LED pin of LCD As the other LED pin is already connected to Vcc through the jumper , the LCD backlight glows.

lcd.home(); takes the cursor to 1st column , 1st Row of LCD.

lcd.print() prints the message.

lcd.setCursor(0,1); takes the cursor to 1st Column , 2nd Row. Make note that the counting starts from 0.

The following is the connection diagram between PCF8574 IC & the LCD .Once you solder the backpack on to LCD, these connections come into effect.


Image 2



Image 3


The next sketch is lcd_serialprint.

This code waits for you to type in message in the serial monitor of Arduino & then displays it on the LCD.




Next code shows the capability of connecting more than 1 device to the same I2C bus.

2 LCDs are connected to the same I2C bus A4,A5 of Arduino.External power source is used as Arduino can’t source power to both LCDds.

The backpack connected to 16 x2 LCD has no jumpers soldered to A0,A1,A2 .Hence the address is the default 0x 27.


The backpack connected to 20 x 4 LCD has A0 pin soldered, which makes the address 0x26.

By initiating the LCDs with their slave address, messages can be displayed on to the correct slave LCD.








cooltext753793315   cooltext753790696