PDA

View Full Version : Cheap WiFi modules



Heckler
- 4th December 2014, 06:12
Some very good information here...

5$ Arduino WiFi Module!? ESP8266 mini Tutorial/Re…: http://youtu.be/9QZkCQSHnko

If the link doesn't work , search YouTube for some of the text in the link above
The video is by "GreatScott!" and it's quite good.

ardhuru
- 6th December 2014, 08:55
A couple of days back, some guys ported a version of LUA (hadnt heard of that before), onto the ESP8266.

This replaces the stock firmware, and makes things much easier, apparently. Also lets you manipulate/read the ESP8266's own IO bits, enabling the module to be used as a standalone controller for simple tasks.

http://importhack.wordpress.com/2014/11/22/how-to-use-ep8266-esp-01-as-a-sensor-web-client/

Regards,

Anand

richard
- 8th December 2014, 09:01
getting the module to work smoothly is a bit of a challenge with the device talking duplex . have noticed that the response part that is required to verify action seems to always be preceded by two cr's (ascii 13) as circled in the attachments .
the latest firmware revision makes things a bit better by slowing to 9600 baud and giving the pic a bit more time to work
its all good fun
thanks to henrik for a good starting point

Heckler
- 9th December 2014, 04:24
Also, If you are trying to use Putty (terminal program) from your PC and some sort of usb.ftdi serial converter (caution!! 3v3 only) to communicate serially you have to enter CTRL+J to get the thing to take your command.

If you switch to something like "Termie.exe" it works without the CTRL+J.

Apparently putty has a problem properly sending either the carrage return or the line feed.

Also when using the CWJAP command you have to include the quote marks " when you enter your AP credentials.

I bought one of these off of amazon and it came configured to 9600 baud out of the box.

NOTE: another way to deal with the 3v3 requirment is to just power your PIC and the ESP module from a single lithium ion battery. No 3v3 to 5v0 converter needed :)

Question... how sensitive to over voltage is the 3v3 type devices? If I take my single lithium ion battery off the charger it usually has around 3.8 to 4.0v is that going to be destructive??

Heckler
- 9th December 2014, 05:01
henrik...

Thanks so much!! for your example.

I was able to connect to my ESP module via an FTDI/USB adapter and send the commands you listed in your example from a terminal program (termie.exe) and achieve the same results (after connecting to my device from a browser.

Now to sharpen up your code and program it into my favorite PIC :)

It's good simple examples like yours that can clear up a lot of confusion.

good stuff!!

richard
- 9th December 2014, 11:00
I guess now I have to learn html ,I think I need a <form or something \form> to get a value from the browser back to the pic .
any quick tips on how that works ,any simple example would be nice

richard
- 10th December 2014, 00:26
modified henriks html to this

< html>
<TITLE>PBP ESP8266 demo</TITLE>
<body>
<H1>Testing the ESP8266</H1>
<H3>Cool stuff!</H3> Page visits: 3
<inputname="v2"value="2">
<inputvalue="1"name="v1"type="submit">
</body>
</html>


it displays a input box and a button but the method of actually sending value back to the pic chip eludes me

richard
- 10th December 2014, 05:23
success

< TITLE>PBP ESP8266 demo</TITLE>
<H1>Testing the ESP8266</H1>
<H3>Cool stuff!</H3> Page visits: 4
<formmethod="get"action="set">
<inputmaxlength="5"value="2" name ="MyInput"size="5">
<inputvalue="Change MyInput"type="submit">
</form>

JKaiser
- 10th December 2014, 15:17
Here is a link to a few free software programs that some of you may find useful when testing communication. The TCP tool should be helpful for testing getting info between two ESPs.

https://www.simplecomtools.com/productcart/pc/viewCategories.asp?idCategory=5

John

richard
- 11th December 2014, 04:22
tried this


< DOCTYPE htmlPUBLIC"-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
< html><TITLE>PBP ESP8266 demo</TITLE>
< H1>Testing the ESP8266</H1>
< H3>Cool stuff!</H3> Page visits:3
< formmethod="get"action="set">
< inputmaxlength="5"value="3" name ="MyInput"size="5">
< inputvalue="Change MyInput"type="submit">
</ form></html>


but I have three android devices two lockup the eps8266 instantly,the other (asus transformer) is ok
I think as a web server these things are just too flaky , any simultaneous requests will cause instant lookup , the onboard wdt seems to ignore this state likewise for a soft reset .
fyi the ie browser connect/response pkt is upto 324 bytes, and for the transformer 490 bytes ,its not going to be pic friendly this way.

will try tcp/udp or even telnet next

HenrikOlsson
- 11th December 2014, 07:15
Hi Richard,
I haven't played any more so you're way ahead of me. Copy/pasting your HTML code into a .txt file (renamed to .htm of course) and opening it in IE does not look like anything really usable to me. Of course, I know very little HTML :-(

Regarding multiple connections, did you set it up to allow that and are you servicing the second connection request or just ignoring it?


fyi the ie browser connect/response pkt is upto 324 bytes, and for the transformer 490 bytes ,its not going to be pic friendly this way.
Why? You don't really need to grab the buffer everything in the PIC, you can parse it on the fly as it arrives. With that said, there are plenty of PICs available with RAM to spare, you do need to go to a 28pin 18F device to "max out" though.

/Henrik.

richard
- 11th December 2014, 08:00
the html code is a copy and paste from "komposer" a free html editor I found on the net , its really just what you did with an input field MyInput added in to a form and levered into your setup .
it does nothing useful just demonstrates sending data from the browser back to the pic. it works ok

if have stepped up to a pic18f45k20 so resources aren't an issue yet , biggest problem is if a connection is made while you are serving a page the incoming link request just stops everything dead .
and if you hit the refresh on the browser before current request (same connection ) is dealt with it all comes to a crashing halt.

parsing the data on the fly is a bit tricky if you are looking for multiple keys eg in the server loop I am looking for ,"busy" , "OK" and "MyInput" and trying to respond appropriately ,
I think I need to watch for "'Link", "Unlink" and "Error" too. I found it easier to swallow the lot and then pick the good bits out (a bit crude I admit but I'm looking at proof of concept here)

I'm not sure about the "channel" thing looking on the salea all link requests are ch 0 so far ,this is probably due to the CIPCLOSE=0 at the end of the served page, but if that's removed the browser locks up .
I know approx. nothing about http-html and it may stay that way for sanity reasons

richard
- 11th December 2014, 13:10
managed to capture problem on the logic analyser ,I might get this yet


ps the logicdata.txt file is a salea logic file not text , there's a wish for the forum allow logicdata files

richard
- 12th December 2014, 07:34
things improve if :-
1. I serve up the webpage in one continuous string
2. I control when the rxbuffer actually accumulates data (it auto triggers on a \r ( 0x10) ) , still needs a 350 byte buffer or 500 bytes for some browsers

the cache toggle signal in this example toggles when a rxbyte is cached and the reply signal when the rxbuff is emptied and parsed for data.

multiple connections still elude me , I find the behaviour of some browsers is quite baffling ,and they lock up the module upon connection .
hitting the refresh button while the current page is still coming causes the esp module to reset and start talking at a different baud rate , I can find no cure for this other than a hardware or a power on reset.

richard
- 15th December 2014, 10:58
I think I have a workable multi connection model worked out . it doesn't like a few browsers esp some Linux/android ones at this stage its been done in C
if anyone is interested PM me and you can get the ip address and have a go (its probably prudent not make it public) and you're welcome to the code too.
after playing with these things for days I think a multi connection version for pbp is not worth the effort and not necessary for me anyway . I really just want to monitor remote things and maybe tweak a few of their settings on the fly . one connection is amply for most if not all my requirements ,and it will be great just being able to set the time on the solar tracker for daylight savings time changes without having to get on the roof and plug the laptop into the tracker

richard
- 19th December 2014, 05:30
a header like this
HTTP/1.1 200 OK\r\nContent-Type: text/html\r\nConnection: close\r\nRefresh: yyy\r\nContent-Length: xxx\r\n\r\n

where yyy = refresh rate in seconds and xxx is the number of bytes in your page (the header not included) is a good thing

The AT+CIPCLOSE,NN is no required when you do this , although multiconnections are even more problematic a single user connection is more robust

ps this is a header not a <heading>

richard
- 21st December 2014, 05:19
Had a go at the cloud update ,it failed miserably and therefore i had to reflash device using the gpio0.low method and their flash tool.
I tried this version from their update site link 'ESP8266_AT_V00180902_04 (0018000902-AI03)_unconfirm version.bin '
it still reports its version as 0018000902-AI03 but the android devices can now connect without locking the esp8266 up and the stability of the unit is much improved things are looking up

richard
- 22nd December 2014, 12:33
a single connection pbp3 version than can turn a led on/off ,report the led state ,and allow a byte var to updated over the web , its fairly robust but not perfect

had a bit of trouble getting the line extender _ to work with arraywrite so watch out for the looooong lines and its still just proof of concept nothing fancy


'* Name : UNTITLED.BAS *
'* Author : [select VIEW...EDITOR OPTIONS] *
'* Notice : Copyright (c) 2014 [select VIEW...EDITOR OPTIONS] *
'* : All Rights Reserved *
'* Date : 29/11/2014 *
'* Version : 1.0 *
'* Notes : [pic18f45k20 *
'* : *
'************************************************* ***************
#CONFIG
CONFIG FOSC = INTIO67
CONFIG FCMEN = OFF
CONFIG IESO = OFF
CONFIG PWRT = OFF
CONFIG BOREN = SBORDIS
CONFIG BORV = 18
CONFIG WDTEN = ON
CONFIG WDTPS = 512
CONFIG CCP2MX = PORTC
CONFIG PBADEN = OFF
CONFIG LPT1OSC = OFF
CONFIG HFOFST = ON
CONFIG MCLRE = ON
CONFIG STVREN = ON
CONFIG LVP = OFF
CONFIG XINST = OFF
CONFIG DEBUG = OFF
CONFIG CP0 = OFF
CONFIG CP1 = OFF
CONFIG CP2 = OFF
CONFIG CP3 = OFF
CONFIG CPB = OFF
CONFIG CPD = OFF
CONFIG WRT0 = OFF
CONFIG WRT1 = OFF
CONFIG WRT2 = OFF
CONFIG WRT3 = OFF
CONFIG WRTC = OFF
CONFIG WRTB = OFF
CONFIG WRTD = OFF
CONFIG EBTR0 = OFF
CONFIG EBTR1 = OFF
CONFIG EBTR2 = OFF
CONFIG EBTR3 = OFF
CONFIG EBTRB = OFF
#ENDCONFIG


define OSC 64

osccon=$70 '64 mhz

trisb.7=0
trisc.6=0
trisc.1=0 'rst
trisd.1=0
DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 24h ' Enable transmit, BRGH = 1
DEFINE HSER_CLROERR 1 ' Clear overflow automatically
DEFINE HSER_SPBRG 130 ' 9600 Baud @ 64MHz, -0.02%
SPBRGH = 6
BAUDCON.3 = 1 ' Enable 16 bit baudrate generator





led var latd.1


page var byte[294]
head var byte[85]
buff var byte[22]
dummy VAR BYTE[15]
Hits VAR BYTE
tmp var word
myvar var byte
ch var byte

ASM
content_z = _head+77
ch_z = _page+76
hits_z = _page+100
my_z = _page+151
chk_z = _page+226
ENDASM
page[293]=0
head[84]=0
content_z var byte EXT
my_z var byte EXT
hits_z var byte EXT
ch_z var byte EXT
chk_z var byte EXT
PORTb.7=1 'debug out
OSCTUNE.6=1
PORTc.1=1 'rst
pause 4000
Serout2 PORTb.7,84,["ready",13,10]

ARRAYWRITE head,["HTTP/1.1 200 OK",13,10,"Content-Type: text/html",13,10,"Connection: close",13,10,"Content-Length: AAA",13,10,13,10]
arraywrite page ,["<TITLE>PBP ESP8266 demo</TITLE><H1>Testing the ESP8266</H1><H3>You are ch :-B of 5 </H3>Page visits:CCC<form method=",$22,"post",$22,"><input maxlength=",$22,"5",$22,"value=",$22,"DDD",$22,"name=",$22,"MyInput",$22," size=",$22,"5",$22,"><br><input type=",$22,"checkbox",$22," name=",$22,"led",$22,"value=",$22,"on",$22,"checked> led<br><input value=",$22,"Change MyInput",$22," type=",$22,"submit",$22,"></form>" ]




tmp=293
ARRAYWRITE content_z,3,,[dec3 tmp]
tmp=tmp+84
hits=0
myvar=0
led=0

Main:
' Issue a module reset
HSEROUT["AT+RST", 13, 10]
' Module should respond with a bunch of data and finally 'ready'
HSERIN[WAIT ("ready"), dummy[0]]

HSEROUT["AT+CWMODE=3", 13, 10]
PAUSE 100

HSEROUT["AT+CWJAP=", 34, "ssid", 34, "," ,34, "password", 34, 13, 10]
HSERIN[WAIT ("OK"), Dummy[0]]
PORTc.1=1


PORTc.1=0
' Allow multiple connections, module should respond with 'OK'
HSEROUT["AT+CIPMUX=1", 13, 10]
HSERIN[WAIT ("OK"), Dummy]

pause 50
PORTc.1=1
' Open port 80 (normal port for HTTP), module should respond with 'OK'
HSEROUT["AT+CIPSERVER=1,80", 13, 10]
HSERIN [WAIT ("OK"), Dummy[0]]
Serout2 PORTb.7,84,["run",13,10]
doop:

PORTc.1=0
' Here we need to wait for a client to connect and request data.
' When that happens the module will outout the HTTP header on the
' UART, we'll trig on the GET keyword.
HSERIN[WAIT("+IPD"),str Dummy\6] ;get ch number
ch_z=dummy[1]

HSERIN 100 , novar,[WAIT("MyInput="),str Dummy\5\10] 'parse input data if any
Serout2 PORTb.7,84,[#dummy[0],",",#dummy[1],",",#dummy[2],13,10]
myvar= (dummy[0]-$30)*100 + (dummy[1]-$30)*10 +(dummy[2]-$30) ' the myvar input field needs 3 chars and leading 0's for padding this could be better done
if dummy[4]= "l" then
led =1
else
led=0
endif
novar:
Hits = Hits + 1 ' update web array
ARRAYWRITE my_z,3,,[dec3 myvar]
ARRAYWRITE hits_z,3,,[dec3 hits]
if led then
ARRAYWRITE chk_z,7,,["checked"]
else
ARRAYWRITE chk_z,7,,[" "]
endif


' Prepare to send bytes
HSEROUT["AT+CIPSEND=0,",#(tmp+2), 13, 10]
HSERIN[WAIT (">"), Dummy[0]]
' Send the actual data
HSEROUT[str head,str page ,13, 10]

HSERIN[WAIT (" OK"), Dummy[0]]
'

Goto doop

HenrikOlsson
- 22nd December 2014, 13:03
Richard,
I haven't had time or motivation (read need) to play more with my modules as I'm currently working on some other stuff but I wanted to really thank you for your continued efforts and for sharing with the rest of us, keep up the good work!

Thanks!

/Henrik.

richard
- 22nd December 2014, 14:16
some slight improvements and a clean up , got rid of those pesky leading 0's for the data field and a half hearted attempt at multi ch servicing
I was hoping to get something to fit in a 12f1822 but a 16f1825 is a possibility I might get a IOT yet

still to do :-
1. figure out how to detect that the server function on the esp8266 has crashed , it still pings . it reports all the at+xxxx? status requests as good and still alive, but it wont serve web pages
2. detect when it reboots itself when things go awry
3. a reboot it when it dies



'* Name : UNTITLED.BAS *
'* Author : [select VIEW...EDITOR OPTIONS] *
'* Notice : Copyright (c) 2014 [select VIEW...EDITOR OPTIONS] *
'* : All Rights Reserved *
'* Date : 29/11/2014 *
'* Version : 1.0 *
'* Notes : [pic18f45k20 *
'* : *
'************************************************* ***************
#CONFIG
CONFIG FOSC = INTIO67
CONFIG FCMEN = OFF
CONFIG IESO = OFF
CONFIG PWRT = OFF
CONFIG BOREN = SBORDIS
CONFIG BORV = 18
CONFIG WDTEN = ON
CONFIG WDTPS = 512
CONFIG CCP2MX = PORTC
CONFIG PBADEN = OFF
CONFIG LPT1OSC = OFF
CONFIG HFOFST = ON
CONFIG MCLRE = ON
CONFIG STVREN = ON
CONFIG LVP = OFF
CONFIG XINST = OFF
CONFIG DEBUG = OFF
CONFIG CP0 = OFF
CONFIG CP1 = OFF
CONFIG CP2 = OFF
CONFIG CP3 = OFF
CONFIG CPB = OFF
CONFIG CPD = OFF
CONFIG WRT0 = OFF
CONFIG WRT1 = OFF
CONFIG WRT2 = OFF
CONFIG WRT3 = OFF
CONFIG WRTC = OFF
CONFIG WRTB = OFF
CONFIG WRTD = OFF
CONFIG EBTR0 = OFF
CONFIG EBTR1 = OFF
CONFIG EBTR2 = OFF
CONFIG EBTR3 = OFF
CONFIG EBTRB = OFF
#ENDCONFIG


define OSC 64

osccon=$70 '64 mhz

trisb.7=0
trisc.6=0

trisd.1=0
DEFINE HSER_RCSTA 90h ' Enable serial port & continuous receive
DEFINE HSER_TXSTA 24h ' Enable transmit, BRGH = 1
DEFINE HSER_CLROERR 1 ' Clear overflow automatically
DEFINE HSER_SPBRG 130 ' 9600 Baud @ 64MHz, -0.02%
SPBRGH = 6
BAUDCON.3 = 1 ' Enable 16 bit baudrate generator





led var latd.1


page var byte[294]
head var byte[85]
'buff var byte[22]
dummy VAR BYTE[15]
Hits VAR BYTE
tmp var word
myvar var byte
ch var byte

ASM
content_z = _head+77
ch_z = _page+76
hits_z = _page+100
my_z = _page+151
chk_z = _page+226
ENDASM
page[293]=0
head[84]=0
content_z var byte EXT
my_z var byte EXT
hits_z var byte EXT
ch_z var byte EXT
chk_z var byte EXT
PORTb.7=1 'debug out
OSCTUNE.6=1

pause 4000
Serout2 PORTb.7,84,["ready",13,10]

ARRAYWRITE head,["HTTP/1.1 200 OK",13,10,"Content-Type: text/html",13,10,"Connection: close",13,10,"Content-Length: AAA",13,10,13,10]
arraywrite page ,["<TITLE>PBP ESP8266 demo</TITLE><H1>Testing the ESP8266</H1><H3>You are ch :-B of 5 </H3>Page visits:CCC<form method=",$22,"post",$22,"><input maxlength=",$22,"5",$22,"value=",$22,"DDD",$22,"name=",$22,"MyInput",$22," size=",$22,"5",$22,"><br><input type=",$22,"checkbox",$22," name=",$22,"led",$22,"value=",$22,"on",$22,"checked> led<br><input value=",$22,"Change MyInput",$22," type=",$22,"submit",$22,"></form>" ]


' to test the ext vars line up ok
' Serout2 PORTb.7,84,["content ",str content_z \3 ,13,10] 'AAA
' Serout2 PORTb.7,84,["my ",str my_z \3 ,13,10] ,DDD
' Serout2 PORTb.7,84,["hits ",str hits_z \3 ,13,10] 'CCC
' Serout2 PORTb.7,84,["ch ",str ch_z \2 ,13,10] 'B
' Serout2 PORTb.7,84,["chk ",str chk_z \7 ,13,10] 'checked
' for hits= 0 to 10
' Serout2 PORTb.7,84,[#hits,"page z ",page[282+hits] ,13,10]
' next
' for hits= 0 to 10
' Serout2 PORTb.7,84,["head z ",head[73+hits] ,13,10]
' next
tmp=293
ARRAYWRITE content_z,3,,[dec3 tmp]
tmp=tmp+84
hits=0
myvar=0
led=0

Main:
' Issue a module reset
HSEROUT["AT+RST", 13, 10]
' Module should respond with a bunch of data and finally 'ready'
HSERIN[WAIT ("ready"), dummy[0]]

HSEROUT["AT+CWMODE=3", 13, 10]
PAUSE 100

HSEROUT["AT+CWJAP=", 34, "ssid", 34, "," ,34, "password", 34, 13, 10]
HSERIN[WAIT ("OK"), Dummy[0]]
PORTc.1=1



' Allow multiple connections, module should respond with 'OK'
HSEROUT["AT+CIPMUX=1", 13, 10]
HSERIN[WAIT ("OK"), Dummy]

pause 50

' Open port 80 (normal port for HTTP), module should respond with 'OK'
HSEROUT["AT+CIPSERVER=1,80", 13, 10]
HSERIN [WAIT ("OK"), Dummy[0]]
Serout2 PORTb.7,84,["run",13,10]
doop:


' Here we need to wait for a client to connect and request data.
' When that happens the module will outout the HTTP header on the
' UART, we'll trig on the GET keyword.
HSERIN[WAIT("+IPD"),str Dummy\6] ;get ch number
ch_z=dummy[1]

HSERIN 100 , novar,[WAIT("MyInput="),str Dummy\5\10] 'parse input data if any
'Serout2 PORTb.7,84,[#dummy[0],",",#dummy[1],",",#dummy[2],13,10]
myvar= 0
if (dummy[0]>$2f)&&(dummy[0]<$3a) then myvar= (dummy[0]-$30)
if (dummy[1]>$2f)&&(dummy[1]<$3a) then myvar= myvar*10 +(dummy[1]-$30)
if (dummy[2]>$2f)&&(dummy[2]<$3a) then myvar= myvar*10 +(dummy[2]-$30)
if dummy[4]= "l" then
led =1
else
led=0
endif
novar:
Hits = Hits + 1 ' update web array
ARRAYWRITE my_z,3,,[" "]
ARRAYWRITE my_z,3,,[dec myvar]
ARRAYWRITE hits_z,3,,[dec3 hits]
if led then
ARRAYWRITE chk_z,7,,["checked"]
else
ARRAYWRITE chk_z,7,,[" "]
endif


' Prepare to send bytes
HSEROUT["AT+CIPSEND=",ch_z,",",#(tmp+2), 13, 10]
HSERIN[WAIT (">"), Dummy[0]]
' Send the actual data
HSEROUT[str head,str page ,13, 10]

HSERIN[WAIT (" OK"), Dummy[0]]
'

Goto doop

richard
- 24th December 2014, 02:46
after playing with Elapsed_INT-18.bas for demon I decided to add it to the esp8266 demo for a bit of time stamping
also added a hardware rst to the esp module that activates at the slightest hint of trouble (often unnecessarily ), its a bit brutal but I can find no other way
it also now can report what state it was in before it needs a kick in the ass
enjoy

Charlie
- 26th December 2014, 08:25
I've been using an 18f1330 at 32 MHz, but I'm having a lot of trouble with reliable communications at 9600 BAUD. The ESP8266 does not seem to offer slower speed, and I'm losing bytes occasionally. The code is using DT_INTS-18 to try to clear the buffer as fast as possible. Do I really need to move to a device that supports 64 MHz? Is anybody having this thing work reliably at 32 MHz or less?

Ioannis
- 26th December 2014, 10:59
Post your code. Guesses cannot help you.

Ioannis

Charlie
- 26th December 2014, 19:00
Never mind. It's not an issue of speed - it's an issue of RAM. The 18F1330 only has 256 bytes. This is not nearly enough for the array size you need for sufficient buffer depth.
Digging in the bin for something bigger now.

Charlie
- 30th December 2014, 02:59
FYI for those of us that remember teletype which required a CR & LF in any order, these devices do not work that way.
You MUST send CR LF (10,13) in the correct order to work consistently. 10,13 will *sometimes* work, but not always.

richard
- 30th December 2014, 10:41
according to the http://www.electrodragon.com/w/Wi07c web site since firmware 0.92 the terminator is \r\n previously was \n\r.
\r\n has worked for all my ebay supplied esp2866's but the firmware needed updating for a decent result to be achievable
ps
cr=13=\r
lf=10=\n

Jumper
- 30th December 2014, 11:32
I have what might be a really stupid question.

Is it possible (and if it is then how) to send serial data from one wifi module to an other when they are both connected to the same wifi router?

I would like to remove some cables in a rs-485 network and replace then with uart wifi solution. I just dont know where to start.... well I have a wifi router :-) and the modules and lots of PICs and programmers . Does anyone know?

richard
- 30th December 2014, 11:50
Is it possible (and if it is then how) to send serial data from one wifi module to an other when they are both connected to the same wifi router?
you may not even need a router the esp modules can also act a access point . I have not tried that sort of comms yet but there are examples around on the web using TCP/UDP packets , or you could try TELNET mode . I think telnet is the closest match to what you want

Jumper
- 30th December 2014, 12:13
True, but I need to assign an IP to the module and I can not see any AT command for that ... and I really would like to have static IP so each module always had the same number even when the system is re-booted.

How else do we know who is on the other end of the net?

richard
- 30th December 2014, 13:06
if you do a AT+CIFSR you get two ip addresses the first is the modules ap address the second the dhcp address from your router , question is the first ip address identical on all modules ,maybe they can network that way. " silicon chip" magazine had an article on using these modules as ap's and assigning addresses to other devices using that ap , but I can find no mention of assigning the ap address anywhere . maybe you do need a router , most routers allow permanent address assignments/reservations (usually nested about ten levels deep in some arcane menu structure) .

Charlie
- 30th December 2014, 18:25
FYI for those of us that remember teletype which required a CR & LF in any order, these devices do not work that way.
You MUST send CR LF (10,13) in the correct order to work consistently. 13,10 will *sometimes* work, but not always.
Nothing worse than discovering a critical typo after the time to edit has expired. I've corrected it in the quote. Bottom line, use 10,13 in that order.

Ioannis
- 23rd January 2015, 14:21
I think this site might be interesting for the IoT:

https://thingspeak.com/

After registration you get a free channel for your data to be stored, graphed or used as you want.

Ioannis

ardhuru
- 23rd January 2015, 19:14
True. People have done amazing things with the ESP8266, and uploading to Thingspeak. Also absolves you from having to learn HTML, I guess.

For those yet to discover these, there have been a slew of development utilities for the ESP8266.

And, folks have ported LUA (remember CHDK for Canon point-and-shoots?!), a scripting language to the ESP. The benefit being to be able to use the microcontroller on the module directly to store and execute simple programs. And with its own IO, one wouldnt even need a pic for simple applications.

My favourites are ESPLORER (multi-purpose, works with stock firmware and LUA) and LuaLoader (only for LUA).

Regards,

Anand

dhouston
- 24th February 2015, 23:53
These are available from Amazon (some via Prime with free shipping) for about $8. Now, to see if I can talk some dialect of Basic to them.

rsocor01
- 25th February 2015, 01:14
I bought 5 of these modules for $13.45 plus $2.25 shipping on ebay. I can't wait to start playing with these modules.

ardhuru
- 25th February 2015, 08:33
Greetings, Dave!

There is indeed a basic-of-sorts, a scripting language called LUA thats already been ported to the ESP8266.

Makes things much easier, and other folks have developed IDEs to be able to upload/load LUA files directly on the module.

In fact LUA is getting so popular, they have a separate sub-form for LUA at www.esp8266.com

If this generates more interest, I'll post all the LUA related URLs in my record.

Regards,

Anand

gunayburak
- 5th March 2015, 11:07
if you do a AT+CIFSR you get two ip addresses the first is the modules ap address the second the dhcp address from your router , question is the first ip address identical on all modules ,maybe they can network that way. " silicon chip" magazine had an article on using these modules as ap's and assigning addresses to other devices using that ap , but I can find no mention of assigning the ap address anywhere . maybe you do need a router , most routers allow permanent address assignments/reservations (usually nested about ten levels deep in some arcane menu structure) .

Hello Richard ...

How did you figure out the pending client problem ... For example if a scenario occurs as follows ; First client connects to the server then the second one connects but its +IPD data will be missed while answering to the first client ... So will its channel number ... Do you have a solution for that ? Or perhaps there is an AT command I can't see that helps us to display the numbers of the channel IDs of the incoming and pending client requests ....

richard
- 5th March 2015, 12:18
How did you figure out the pending client problem
I did not get bullet proof solution with the pic chips I have. they lack sufficient ram but work ok for modest requests
The best solution I have found is to make a queue of ipds to serve
1. serve up your html/cgi page as one unbroken stream (needs heaps of ram) using int driven hardware serial method , note what ipd you have served and remove from queue
2. have a large rx buffer big enough for the biggest request form (about 450 bytes from an android device) this must be back ground int driven method too
3. when not serving , scan rx buffer for new +ipd add to queue
4. the whole process falls to bits if a requesting device asks for a refresh when a request is already pending for that ipd , this I find will lock the esp8266 up or cause it to reset and then lock up (post#50)

I have had much better results with an arduino mega2650 , the faster cpu and 8k of ram makes it easier to do things this way and C 's string functions help too

when I get around to it I will look at tcp/udp methods , its appears to be much more robust

gunayburak
- 5th March 2015, 17:45
I did not get bullet proof solution with the pic chips I have. they lack sufficient ram but work ok for modest requests
The best solution I have found is to make a queue of ipds to serve
1. serve up your html/cgi page as one unbroken stream (needs heaps of ram) using int driven hardware serial method , note what ipd you have served and remove from queue
2. have a large rx buffer big enough for the biggest request form (about 450 bytes from an android device) this must be back ground int driven method too
3. when not serving , scan rx buffer for new +ipd add to queue
4. the whole process falls to bits if a requesting device asks for a refresh when a request is already pending for that ipd , this I find will lock the esp8266 up or cause it to reset and then lock up (post#50)

I have had much better results with an arduino mega2650 , the faster cpu and 8k of ram makes it easier to do things this way and C 's string functions help too

when I get around to it I will look at tcp/udp methods , its appears to be much more robust

Very well ... Here is an another strange problem I keep having with my ESP-01 ... When the ESP disconnects from the WIFI of the router It gets hot (around 41 degrees and so on)... Have you ever had such an interesting problem ?

gunayburak
- 9th March 2015, 13:19
Is there anyone who can communicate with Pushingbox api service using this chip ? I can send datas to thingspeak and update it but since pushingbox is on a shared hosting I know things are different for it .. But how ? Anyone can give an aid ?