Go to file
Christoph Thelen 14cdff107f
Update rmt translator (#3629)
* Choose the number of RMT buffers in the ws2812 module.

The number of buffers required for optimal operation should be selected
by the ws2812 module, not the caller.

* Add parameters for RGB LED bit times.

This patch adds compatibility for different RGB LEDS besides the WS2812.
ESP evaluation boards like the ESP32-C3-DevKitM-1 use an SK68XXMINI-HS
RGB LED which does not respond to the timings of this module.
The patch adds optional parameters for the bit timings to the write
function. If the new parameters are not supplied, the old values are used.
An example for the SK68XXMINI-HS is provided in the documentation.

* Remove restrictions from RTM translator.

The old RMT translator was not able to split the bits of the source
data into the size requested by the RMT transmitter. Either all 8 bits
of an input byte were translated or none.
The new routine removes the restriction by delivering exactly the
requested amount of data to the transmitter, which results in a more
balanced buffering of translated data under load.

* Add a parameter for the RGB LED reset time.

This patch introduces a new optional parameter for the reset time
in the RGB LED communication. The default is 51.2 microseconds. A
value of 0 sends no reset signal, which allows a small optimisation
for consecutive write commands.

Please note that the reset time of the old code should be 50
microseconds, as the define WS2812_DURATION_RESET suggested. Due to the
restrictions of the old RMT translator routine, it was slightly
increased to 51.2 microseconds. This patch keeps the value of 51.2
microseconds to be as compatible as possible.

* Minimize the time drift between RMT channels.

Place all RMT channels in a group to minimize the time drift between
the signals. Please note that this feature is not available on all
platforms.

* Fix the description of the SK6812 LED in the example code.

The SK6812 expects the data for the green LED first, then red and
finally blue. It should be described as a GRB LED.
2024-02-07 17:56:17 -05:00
.github Update to use node16 actions per github advice. 2022-10-12 16:14:40 +11:00
components Update rmt translator (#3629) 2024-02-07 17:56:17 -05:00
docs Update rmt translator (#3629) 2024-02-07 17:56:17 -05:00
examples consolidate telnet example 2016-01-06 23:18:42 +01:00
extcomp-template Improvements to external component/module support. 2023-01-17 14:08:47 +11:00
lua_compat Set missing DATABITS_8 property (#2672) 2019-04-22 11:41:13 +02:00
lua_examples Add touch sensor module (#2863) 2019-10-27 19:49:56 +01:00
lua_modules Joystick Lua library and example code (#2710) 2019-04-22 14:46:49 +02:00
sdk Upgrade to IDF v5.1.2 2024-02-02 14:50:57 +11:00
tools Update to IDF v4.4.3. 2023-02-09 15:52:38 +11:00
.gitignore Initial migration to IDFv5.0 2024-01-30 11:34:03 +11:00
.gitmodules ESP32 precompiled toolchain (#2730) 2019-04-22 14:45:27 +02:00
.readthedocs.yaml Fix the RTD configuration 2024-01-23 23:01:12 +01:00
CMakeLists.txt Initial support for using external components/modules. 2023-01-17 14:08:47 +11:00
CONTRIBUTING.md Switch from readthedocs.org to readthedocs.io 2016-04-28 08:09:35 +02:00
LICENSE update doc 2014-11-21 00:10:01 +08:00
Makefile Remove defunct extmod bits. 2023-01-17 14:08:47 +11:00
README.md Replace CI badge 2021-08-04 12:24:49 +02:00
install.sh idf4: overhaul to new build system, part 1 of 3 2021-07-15 16:27:03 +10:00
mkdocs.yml Add support for using multiple memory slots in rmt setup (#3568) 2024-02-01 20:31:56 -05:00
requirements.txt Remove old cryptography package lock. 2024-01-30 11:34:03 +11:00
sdkconfig.defaults IDF web server module (#3502) 2022-03-05 13:51:54 +11:00

README.md

NodeMCU on ESP32

Join the chat at https://gitter.im/nodemcu/nodemcu-firmware CI Documentation Status License

A Lua based firmware for ESP32 WiFi SOC

NodeMCU is an eLua based firmware for the ESP32 WiFi SOC from Espressif. The firmware is based on the Espressif IoT Development Framework and uses a file system based on spiffs. The code repository consists of 98.1% C-code that glues the thin Lua veneer to the SDK.

The NodeMCU firmware is a companion project to the popular NodeMCU dev kits, ready-made open source development boards with ESP8266-12E chips.

Summary

  • Easy to program wireless node and/or access point
  • Based on Lua 5.1.4 (without debug, os modules)
  • Asynchronous event-driven programming model
  • 10+ built-in modules
  • Firmware available with or without floating point support (integer-only uses less memory)
  • Up-to-date documentation at https://nodemcu.readthedocs.io

Programming Model

The NodeMCU programming model is similar to that of Node.js, only in Lua. It is asynchronous and event-driven. Many functions, therefore, have parameters for callback functions. To give you an idea what a NodeMCU program looks like study the short snippets below. For more extensive examples have a look at the /lua_examples folder in the repository on GitHub.

-- a simple HTTP server
srv = net.createServer(net.TCP)
srv:listen(80, function(conn)
	conn:on("receive", function(sck, payload)
		print(payload)
		sck:send("HTTP/1.0 200 OK\r\nContent-Type: text/html\r\n\r\n<h1> Hello, NodeMCU.</h1>")
	end)
	conn:on("sent", function(sck) sck:close() end)
end)
-- connect to WiFi access point
wifi.mode(wifi.STATION, true)

wifi.sta.on("connected", function() print("connected") end)
wifi.sta.on("got_ip", function(event, info) print("got ip "..info.ip) end)

-- mandatory to start wifi after reset
wifi.start()
wifi.sta.config({ssid="SSID", pwd="password", auto=true}, true)

Documentation

The entire NodeMCU documentation is maintained right in this repository at /docs. The fact that the API documentation is maintained in the same repository as the code that provides the API ensures consistency between the two. With every commit the documentation is rebuilt by Read the Docs and thus transformed from terse Markdown into a nicely browsable HTML site at https://nodemcu.readthedocs.io/en/dev-esp32/.

Support

See https://nodemcu.readthedocs.io/en/dev/en/support/.

License

MIT © zeroday/nodemcu.com