{"id":25822981,"url":"https://github.com/novecento99/nuvolino","last_synced_at":"2025-07-13T09:39:40.039Z","repository":{"id":223958253,"uuid":"762018924","full_name":"Novecento99/Nuvolino","owner":"Novecento99","description":null,"archived":false,"fork":false,"pushed_at":"2024-05-16T06:40:56.000Z","size":38095,"stargazers_count":1,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-28T17:16:28.925Z","etag":null,"topics":["air","cloud","data","ikea","iot","pm","pm25","sensor","vindstyrka"],"latest_commit_sha":null,"homepage":"https://novecento99.github.io/Nuvolino/","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/Novecento99.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":"2024-02-22T23:25:26.000Z","updated_at":"2024-11-12T09:08:47.000Z","dependencies_parsed_at":"2024-02-25T00:31:12.047Z","dependency_job_id":"562efdb2-0cb5-4b1d-8a05-b4df83cc0674","html_url":"https://github.com/Novecento99/Nuvolino","commit_stats":null,"previous_names":["novecento99/albinoair","novecento99/nuvolino"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Novecento99/Nuvolino","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Novecento99%2FNuvolino","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Novecento99%2FNuvolino/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Novecento99%2FNuvolino/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Novecento99%2FNuvolino/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Novecento99","download_url":"https://codeload.github.com/Novecento99/Nuvolino/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Novecento99%2FNuvolino/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265121396,"owners_count":23714503,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["air","cloud","data","ikea","iot","pm","pm25","sensor","vindstyrka"],"created_at":"2025-02-28T11:34:56.468Z","updated_at":"2025-07-13T09:39:40.021Z","avatar_url":"https://github.com/Novecento99.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Nuvolino\n\nthis projects accesses the Ikea VINDSTYRKA air quality sensor raw data and send them to thingspeak channels, which can therefore visualized in a comprehnsive website (e.g. https://novecento99.github.io/Nuvolino/) (yeah I'm not good at making websites). \n\n\u003cimg src=\"Images/ikea.jpeg\" width=\"500px\"\u003e\n\nTo do so, you will need:\n- a microcontroller (such as ESP32, ESP8266 or a D1 Mini)\n- some jumpers to solder your micro to the sensor\n- basic soldering skills\n- screwdrives: the outer screws are heaxagon, while the inner ones are classical phillips\n- a (free) thingspeak account\n\n\nThe Ikea VINDSTYRKA is based on the SEN54 sensor, which is the top choice for its price class. Providing good accuracy for 10+ years. It measure PM1.0, PM2.5, PM4.0, PM10.0 (these last two with less accuracy then the other two.), temperature humidity and tvoc.\n\nhttps://sensirion.com/products/catalog/SEN54/\n\n## How to build this project\n\n### step 1: teardown \nFirst, you have to tear down the Ikea device. Be careful and do it with patience. \n\nwith an hexagon screwdriver take out the first 4 screws:\n\n![alt text](Images/first.png)\n\nsecondly, with a sharp knife remove the glue and deattach the screen:\n\n![alt text2](Images/second.png)\n\na cat will spawn to judge your work\n\n![alt text3](Images/cat.png)\n\nthis it the PCB:\n\n![alt text4](Images/PCB.jpeg)\n\n### step 2: soldering\n\nWhat I HIGLY suggest now is to **NOT** solder on test points, since they are very delicate and chances are that you're going to break the ikea microcontroller. \n\nInstead, take the cable that connect the sensor to the PCB, cut it in half and therefore solder 4 cables to the microcontroller.\n\nSpecifically, you need to solder 4 wires:\n- Vcc (5V or 3V depending on your microcontroller supply voltage)\n- GND (ground)\n- SDA (one of the two pins to perform the I2C connection)\n- SCL (the other pin to perform the I2C connection)\n\n\u003e need to put here photos\n\n### step 3: connect your microcontroller and test the connection\n\n4 wires: connect Vcc and Ground respectively to the correct pins to power your micro, while DSA and SCL are the two I2C protocol wires: the DSA and SCL corresponds to pins specific to the board your using.\n\nYou can easily find them by googling \"yourbard I2C default pins\". Here are some of them:\n\n|  **Board**  | **SDA** | **SCL** |\n|:-----------:|:-------:|:-------:|\n| ESP32 WROOM |  GPIO21 |  GPIO22 |\n| Arduino Uno |    A4   |    A5   |\n|   D1 Mini   |  GPIO4  |  GPIO5  |\n\n\nNow, download and install the [([Arduino IDE](https://www.arduino.cc/en/software))](https://github.com/Sensirion/arduino-i2c-sen5x), install through the Arduino library manager the thingspeak library. \nAnd install by adding them as a zip.\n\n[([Sen5X Github](https://github.com/Sensirion/arduino-i2c-sen5x))]\n\nUpload it to your microcontroller and connect it to your Ikea Vindistrka\n\nIf you can read the data on the serial monitor (beware to set the correct baudrate), you are ready to upload data to the cloud!\n\n### step 4: upload data to the cloud \nFirst of all, it is necessary to create a channel on ThingSpeak.com to which the data can be uploaded. \n\nYou can then Create a Channel, give your channel a name such as \"Nuvolino - yourCity\".\n\nGo to Channels-\u003e make a new channel.\n8 fields with this order:\n- PM1.0\n- PM2.5\n- PM4.0\n- PM10.0\n- Humidity\n- Temperature\n- tVOC\n- Nuvolino status\n\nHit save channel, and you will be taken to the current view of your new channel. Go to the API Keys tab and find your Write API Key. You will need to insert this into the sketch in order to write to your channel.\n\nDownload from this git firmware/Nuvolino.ino and \nconfigure the starting istructions:\n\n\u003eunsigned long Channel_ID = YourChannelIdHere;  //replace with your Channel ID\nconst char *API_key = \"YourKeyHere\";\nconst char *ssid = \"Your Wifi SSID here\";  // replace with your wifi ssid and wpa2 key\nconst char *pass = \"Your Wifi Password here\";\n\nUpload the firmware and you are done! open your channel, you will be able to see the data updated in real time in the channel view. You can also make gauges and numbers display by using the widget functions of thingspeak\n\n### step 5: deploy a website\nto make a website you just need to download the index.html in this git and substitute the iframes with the ones that you can easily take from your thingspeak channel\n\nThen, upload the index.html in a github project (or just clone this one) and go to settings-\u003eXXXX. There you can take your website online with a simple click. \n\n## Things to do\n- implement read_raw data to avoid spikes on reset\n- a connection to google home would be very cool\n- translations \n\n## Acknowledgements\n\n@olazzari for the utility provided (and endless patience), Ikea engineers to have lended an hand to makers by exposing and naming the test points so conveniently\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnovecento99%2Fnuvolino","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnovecento99%2Fnuvolino","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnovecento99%2Fnuvolino/lists"}