|
|
(10 intermediate revisions by the same user not shown) |
Line 1: |
Line 1: |
− | <noinclude>{{Featured}}</noinclude>{{Project
| + | #REDIRECT [[ESP8266]] |
− | |State=Active
| |
− | |Members=Prodigity, Da Syntax, xopr
| |
− | |Description=Playing around with cheap wifi modules
| |
− | }}== synopsis ==
| |
− | To make the ESP8266 more accessible to everyone I have created a "programmer" which allows for easy firmware uploading and communication with the module.
| |
− | | |
− | [[Image:Runprogrun.JPG|335px|thumb|Behold, the ESP^2 (esp egg salad programmer).]]
| |
− | | |
− | === Revision 1.1 ===
| |
− | [[User:Xopr|xopr]] Modified the ESP^2 a bit:
| |
− | * Added three wires (VCC, GND and GPIO2) for Dallas temperature sensor debugging (wire ends are insulated)
| |
− | * Added pullup resistor was added so GPIO0 can be used after the device has been booted
| |
− | * Added resistor to the 5V ESP^2 TX signal (should be two diodes I guess, the resistor divider didn't work)
| |
− | | |
− | == Using Arduino 1.6.4 to program the ESP8266 ==
| |
− | Taken from https://github.com/esp8266/arduino
| |
− | | |
− | * Install Arduino 1.6.4 from the [http://www.arduino.cc/en/main/software Arduino website].
| |
− | * Start Arduino and open Perferences window.
| |
− | * Enter ''http://arduino.esp8266.com/package_esp8266com_index.json'' into Additional Board Manager URLs field. You can add multiple URLs, separating them with commas.
| |
− | * Open Boards Manager from Tools > Board menu and install ESP8266 platform (and don't forget to select your ESP8266 board from Tools > Board menu after installation).
| |
− | * For the ESP^2, the device name (under Linux) is /dev/ttyACM3
| |
− | * Change the programmer from ''AVRISP mkII'' to ''ArduinoISP''
| |
− | * poweroff ESP (either unplug the USB or pull the device from the socket
| |
− | * set the switch to ''prog''
| |
− | * poweron the ESP
| |
− | * You can now upload your sketch
| |
− | | |
− | === Webserver serving JSON ===
| |
− | | |
− | This sketch provides a webserver-like interface and provides a json file (somewhat compatible with [[SpaceAPI]])
| |
− | There is a version running in the space in a 'hot' zone, and accessible on [http://192.168.1.132 http://192.168.1.132]
| |
− | | |
− | You can find the code [[ESP8266-DS18S20|here]]
| |
− | | |
− | === SpaceAPI ===
| |
− | | |
− | The new [[SpaceAPI]] is a combination of some PHP, MySQL, and some ESP modules updating the space state and sensor data.
| |
− | The ESP sketch sketch will have several features like space state switch, indicator, Dallas temperature and other sensors, which can be enabled compile-time.
| |
− | | |
− | === SpaceState ===
| |
− | | |
− | This sketch is a web client and will update the SpaceState
| |
− | | |
− | You can find the code [[ESP8266-SpaceState|here]]
| |
− | | |
− | == loading scripts from a webserver ==
| |
− | | |
− | I ([[User:Da Syntax|Da Syntax]]) got tired from typing the scripts line for line into the lua console of the nodeMCU firmware. I wrote a little function to load the scripts from a webserver running on my laptop. This way I can just save the script on my laptop and load it to my ESP8266 calling 2 functions ( netload() and dofile("netloaded.lua") )
| |
− | <pre>function netload()
| |
− | conn=net.createConnection(net.TCP, 0)
| |
− | conn:on("receive", function(conn, payload)
| |
− | print(payload)
| |
− | file.open("netloaded.lua", "w")
| |
− | file.write(payload)
| |
− | file.close()
| |
− | end)
| |
− | conn:connect(8080,"192.168.1.193")
| |
− | conn:send("GET /test.lua HTTP/1.1\r\nHost: www.example.com\r\n" .."Connection: keep-alive\r\nAccept: */*\r\n\r\n")
| |
− | end
| |
− | </pre>
| |
− | === Future plans ===
| |
− | | |
− | *Send mac address of the wifi module in get so the web server can return device specific firmwares
| |
− | *Put the script between specific tags so there won't be any problems with headers that are added by the web server + gives the possibility to add meta data (e.g. version of script or a signature)
| |
− | *Create a nice php/mysql webapp to easily manage the scripts per module
| |