{"id":34607030,"url":"https://github.com/derf/esp8266-nodemcu-ssd1306","last_synced_at":"2026-05-26T00:32:04.547Z","repository":{"id":66579528,"uuid":"498483334","full_name":"derf/esp8266-nodemcu-ssd1306","owner":"derf","description":"ESP8266 Lua/NodeMCU framebuffer + module for SSD1306 OLEDs","archived":false,"fork":false,"pushed_at":"2026-01-25T09:13:18.000Z","size":321,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-26T00:12:43.092Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://finalrewind.org/projects/esp8266-nodemcu-ssd1306/","language":"Lua","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/derf.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSES/BSD-2-Clause.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-05-31T20:12:07.000Z","updated_at":"2026-01-25T09:13:21.000Z","dependencies_parsed_at":"2024-01-06T20:47:14.037Z","dependency_job_id":null,"html_url":"https://github.com/derf/esp8266-nodemcu-ssd1306","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/derf/esp8266-nodemcu-ssd1306","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/derf%2Fesp8266-nodemcu-ssd1306","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/derf%2Fesp8266-nodemcu-ssd1306/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/derf%2Fesp8266-nodemcu-ssd1306/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/derf%2Fesp8266-nodemcu-ssd1306/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/derf","download_url":"https://codeload.github.com/derf/esp8266-nodemcu-ssd1306/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/derf%2Fesp8266-nodemcu-ssd1306/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33498828,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-25T14:31:05.219Z","status":"ssl_error","status_checked_at":"2026-05-25T14:31:02.878Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-12-24T13:57:49.836Z","updated_at":"2026-05-26T00:32:04.530Z","avatar_url":"https://github.com/derf.png","language":"Lua","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ESP8266 Lua/NodeMCU framebuffer + module for SSD1306 OLEDs\n\nThis repository provides an ESP8266 NodeMCU Lua module (`ssd1306.lua`),\nframebuffer (`framebuffer.lua`) and fonts (`pixeloperator.lua`,\n`terminus16.lua`) for 128×64 and 128×32 **SSD1306** OLEDs connected via I²2C.\n\n## Dependencies\n\nssd1306.lua and framebuffer.lua have been tested with Lua 5.1 on NodeMCU\nfirmware 3.0.1 (Release 202112300746, integer build). They require the\nfollowing modules.\n\n* bit\n* i2c\n\n## Usage\n\nCopy **framebuffer.lua**, **ssd1306.lua** and (depending on your font choice)\n**pixeloperator.lua** or **terminus16.lua** to your NodeMCU board and set them\nup as follows.\n\n```lua\ni2c.setup(0, sda_pin, scl_pin, i2c.SLOW)\nssd1306 = require(\"ssd1306\")\nfn = require(\"pixeloperator\") -- or \"terminus16\"\nfb = require(\"framebuffer\")\ncollectgarbage()\n\nssd1306.init(128, 64) -- assuming that a 128x64 OLED is connected\nssd1306.contrast(128) -- medium contrast\nfb.init(128, 64) -- initialize framebuffer for 128x64 pixels\nfb.print(fn, \"Hello from NodeMCU!\\nHello yes, this is Lua\\n\")\nssd1306.show(fb.buf)\n```\n\n128×32 OLEDs are also supported by adjusting the arguments to `ssd1306.init`\nand `fb.init` accordingly.\n\n## Flashing\n\nThis repository contains a NodeMCU build that provides the required modules.\nYou can flash it using e.g. esptool:\n\n```bash\nesptool write_flash 0x00000 firmware/nodemcu-release-11-modules-2024-01-18-18-47-17-integer.bin\n```\n\nAfter flashing, the firmware will need a few seconds to initialize the\nfilesystem. You then flash the Python code, e.g. using nodemcu-uploader:\n\n```bash\next/nodemcu-uploader/nodemcu-uploader.py upload *.lua\n```\n\nAfterwards, you can check whether everything works using the serial connection,\ne.g.\n\n```bash\npyserial-miniterm --dtr 0 --rts 0 /dev/ttyUSB0 115200\n```\n\nYou may need to adjust the `/dev/tty` device name.\n\n## References\n\nMirrors of this repository are maintained at the following locations:\n\n* [Chaosdorf](https://chaosdorf.de/git/derf/esp8266-nodemcu-ssd1306)\n* [Finalrewind](https://git.finalrewind.org/derf/esp8266-nodemcu-ssd1306)\n* [GitHub](https://github.com/derf/esp8266-nodemcu-ssd1306)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fderf%2Fesp8266-nodemcu-ssd1306","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fderf%2Fesp8266-nodemcu-ssd1306","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fderf%2Fesp8266-nodemcu-ssd1306/lists"}