{"id":20070353,"url":"https://github.com/jimmadge/semis","last_synced_at":"2026-05-12T14:36:16.640Z","repository":{"id":131125914,"uuid":"349191704","full_name":"JimMadge/semis","owner":"JimMadge","description":"🌱 A greenhouse climate monitor using Arduino, BME280 and ST7789 ","archived":false,"fork":false,"pushed_at":"2021-07-14T14:44:26.000Z","size":2062,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-02T11:48:35.045Z","etag":null,"topics":["arduino","bme280","maker","pimoroni","st7789"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JimMadge.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2021-03-18T19:18:38.000Z","updated_at":"2022-05-18T10:27:53.000Z","dependencies_parsed_at":null,"dependency_job_id":"d8201c2f-fbc2-4205-bc20-6b4d36bbc2e8","html_url":"https://github.com/JimMadge/semis","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/JimMadge/semis","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JimMadge%2Fsemis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JimMadge%2Fsemis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JimMadge%2Fsemis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JimMadge%2Fsemis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JimMadge","download_url":"https://codeload.github.com/JimMadge/semis/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JimMadge%2Fsemis/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32943771,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-12T09:19:52.626Z","status":"ssl_error","status_checked_at":"2026-05-12T09:17:33.438Z","response_time":102,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":["arduino","bme280","maker","pimoroni","st7789"],"created_at":"2024-11-13T14:22:16.694Z","updated_at":"2026-05-12T14:36:16.625Z","avatar_url":"https://github.com/JimMadge.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🌱 Semis 🌱\n\nA greenhouse climate monitor using Arduino, BME280 and ST7789\n\n- Temperature, humidity and pressure readings\n- Display activated by a button to save power\n- Minimum and maximum temperature with reset button\n\nHere is an example using an [Arduino\nNano](https://store.arduino.cc/arduino-nano) built on an [Adafruit perma-proto\nboard](https://www.adafruit.com/product/571) (excuse my messy soldering!):\n\n![prototype](.github/prototype.png)\n\n## Components\n\n- Arduino AVR based board, _e.g._ Uno/Nano/Leonardo/Micro\n- [Pimoroni BME280](https://shop.pimoroni.com/products/bme280-breakout)\n- [Pimoroni 1.3\" SPI Colour LCD\n  (240x240)](https://shop.pimoroni.com/products/1-3-spi-colour-lcd-240x240-breakout)\n  (ST7789)\n- Two switch buttons\n\nEquivalent BME280 and ST7789 breakout boards (or even building your own from\nmore basic components) may also work but I have not tested.\n\nThe essential features are,\n\n- I2C interface to the BME280\n- SPI interface to the ST7789\n- PWM control of the ST7789 backlight\n\n## Connections\n\nThe BME280 is controlled over I2C so the SDA and SCL pins of the breakout board\nshould be connected to SDA (A4) and SCL (A5) pins of the Arduino respectively.\n\nThe ST7789 is controlled over SPI so the SCK and MOSI pins of the breakout must\nbe connected to the Arduino SCK and MOSI pins (13 and 11 respectively). The CS\nand DC pins can be connected to any digital pins, 10 and 9 by default. The BL\npin should be connected to a PWM pin (to allow dimming of the display), 3 by\ndefault. If your breakout has a RST pin this is not used.\n\nThe display and min/max reset buttons are connected as pull-up inputs. The\ndefault pins are 7 and 8 respectively.\n\nIn summary the default pins are,\n\n- BME280\n  - SDA - SDA (A4)\n  - SCL - SCL (A5)\n- ST7789\n  - CS - 10\n  - SCK - SCK (13)\n  - MOSI - MOSI (11)\n  - DC - 9\n  - BL - 3\n- display button - 7\n- min/max reset button - 8\n\n## Building and installation\n\nUsing [`arduino-cli`](https://arduino.github.io/arduino-cli/latest/), ensure\nthat the AVR core is installed\n\n```\n$ arduino-cli core install arduino:avr\n```\n\nInstall the dependencies\n\n```\n$ arduino-cli lib install \"Adafruit ST7735 and ST7789 Library\" BME280\n```\n\nConfigure [`semis/semis.ino`](semis/semis.ino) with your text editor. In\nparticular you might want to adjust\n\n- `TFT_ROTATATION` - Rotates the image on the TFT to suit its orientation\n- `TFT_ON` - Brightness of TFT when on, this is an `int` in the range `0-255`\n- `DISPLAY_PIN` and `RESET_PIN` - The digital pins which the display on and\n  min/max reset switches are connected to respectively\n\nGet the port path and fqbn of your board, for example\n\n```\n$ arduino-cli board list\nPort         Type              Board Name  FQBN            Core\n/dev/ttyACM0 Serial Port (USB) Arduino Uno arduino:avr:uno arduino:avr\n```\n\nBuild the program\n\n```\n$ arduino-cli complie -b \u003cfqbn\u003e semis\n```\n\nwhere `\u003cfqbn\u003e` is the fully qualified board name for your Arduino board that\nyou got in the previous step.\n\nUpload the program to your Arduino\n\n```\n$ arduino-cli upload -b \u003cfqbn\u003e -p \u003cport\u003e semis\n```\n\nwhere `\u003cfqbn\u003e` and `\u003cport\u003e` are the fully qualified board name and port path of\nyour Arduino board.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjimmadge%2Fsemis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjimmadge%2Fsemis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjimmadge%2Fsemis/lists"}