The following is off topic, im posting here because I know from previous experience that the folks over here have the knowledge to help me.
I want to improve the range that 2 esp8266's can communicate. Or any device that uses wifi radio frequency to communicate.
I want them to communicate similar to the way moteino/arduino communicates. They should be able to send wireless messages without "connecting". They should be able to just repeatedly broadcast a message until the other node picks it up and returns confirmation.
I need help with the low level programming. I dont know where to start. There are basic concepts that im obviously missing.
Im not asking for specific code. I need direction for the concepts I need to learn.
I would greatly appreciate any help.
Thanks
QuoteThey should be able to send wireless messages without "connecting". They should be able to just repeatedly broadcast a message until the other node picks it up and returns confirmation.
I agree it would be very cool if we could hack the radio stack of the ESP8266. Unfortunately though the wifi drivers are only provided in binary form and there is no documentation whatsoever on that part of the chip. The wifi IP used in the esp8266 is also used in some popular sdcard wifi adapters (I think it was Atheros). Yet unfortunately they also come without open source wifi drivers. I've looked ... :)
Joe
I haven't looked at the ESP docs in a while but I believe you can use it to set up 'ad hoc' peer to peer connections which may be what you're looking for. Search the ESP docs for this term and see what you find. Let us know what you learn. I don't think it's off topic for this category.
Tom
Am I right that for simple machine to machine commands the current standardized Wi-Fi protocols are not efficient and decrease the effective range?
If we some how use these Wi-Fi chips just as radio transceivers for simple machine to machine commands would we in practical terms be able to communicate over longer distances?
Wi-Fi protocols I think were designed for large data transfers, when all you need is to send a command like turn Pin x high we need simpler protocols.
Technically speaking, Wi-Fi is an interoperability standard, whereas 802.11 is the IEEE standard that you probably mean. Setting aside MIMO and other multi-antenna schemes, you'd get the greatest range from 802.11 using BPSK at the lowest bit rate. So, in a sense, you could be more "efficient" than regular 802.11 (which will try to negotiate the best speed) by just picking the lowest bit-rate BPSK (which is part of the 802.11 standard) on both ends of the link and sticking to it.
I'd like to do what you are proposing too, and the big benefit would be that you could sleep an esp8266 and not lose a couple seconds when it wakes up just re-establishing the link with the router. That burns up a lot of unnecessary energy.
I think there may be a few areas of the the 802.11 standard that decreases effective range for simple machine to machine communication.
With faint radio reception the 802.11 connection standard is hard to accomplish. We dont need to "connect". Just broadcast a message.
Besides for range I want to be able to write cell phone apps that could send wireless commands without having to connect to a wifi network.
Is it technically possible to write code that would use the cheap wifi hardware available but not using 802.11? I understand from Joe that the answer is no.
Are all in agreement?
Thanks
The esp8266 sdk mentions the function:
wifi_send_pkt_freedom
Function:
Send user-defined 802.11 packets
Notes:
• Can send: unencrypted data packet, unencrypted beacon/probe req/probe resp.
Is this sort what im looking for?
If I construct the an 802.11 data packet correctly should this let me just send data from one device to another without establishing a network?
My programming skills are not that great..
Thanks
Cool! Sounds as though you may have actually found it.
Not sure what function to use to recieve the data.
Not sure if we could by pass the tcpip stack, so probably we need to include an ip address in the packet and we need to have the reciever thinks its on a network with an ip address.
For testing purposes is there a tool somewhere that could generate raw 802.11 packets?
Probably so. Historically speaking, Atheros has had the most "open" chipsets, and they've usually had linux drivers for them too. So, if you were to go looking, you'd probably find a tool to drive an Atheros 802.11 chip via a linux driver to create "raw" 802.11 packets, as you call them.
Probably to receive one of these "freedom" packets, you'd want a tool that does three things: 1. let's you set the modulation scheme (e.g. BPSK), 2. let's you set the bitrate, and 3. let's you listen in "promiscuous" mode, which should capture any well formed packets.
Even if the ESP8266 could only send freedom packets, it would still be a huge step forward.
http://espressif.com/sites/default/files/documentation/esp8266-technical_reference_en.pdf
Explains how to do sort of what I want with listening in promiscuous mode.
If anyone can help me with arduino ide code would be greatly appreciated.
Thanks