{"id":619,"date":"2024-08-28T16:04:51","date_gmt":"2024-08-28T14:04:51","guid":{"rendered":"https:\/\/chauquest.com\/?p=619"},"modified":"2025-04-15T02:56:22","modified_gmt":"2025-04-15T00:56:22","slug":"diy-co2-monitor-guide","status":"publish","type":"post","link":"https:\/\/chauquest.com\/index.php\/engineering\/diy-co2-monitor-guide\/","title":{"rendered":"DIY CO2 Monitor: A Complete Build Tutorial"},"content":{"rendered":"<div class=\"wp-block-post-excerpt\"><p class=\"wp-block-post-excerpt__excerpt\">Today, we will design and build the first version of a handheld CO2 monitor. This is a great way to learn a lot about electronics and experiment with different sensors. <\/p><\/div>\n\n\n<h2 class=\"wp-block-heading\">Disclaimer<\/h2>\n\n\n\n<p>This version 1 CO2 monitor is not suitable for production or practical use. Consider this article as a story of my journey in electronics! If you&#8217;re interested in a functional product, stay tuned for the article on version 2, which will likely be published around October 2024. The mistakes are highlighted in <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-accent-3-color\"><strong>red.<\/strong><\/mark><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Motivation<\/h2>\n\n\n\n<p>Even though I don&#8217;t intend to sell this product, it&#8217;s always useful to check if a project addresses a need and whether similar products exist in the market. If a similar product already exists, you might be wasting your time reinventing something that&#8217;s already available. On the other hand, if there&#8217;s no demand for it, you could create something amazing, but no one will be interested (it&#8217;s unlikely that you&#8217;ll invent something people didn&#8217;t know they wanted!). I believe that if you pitch your idea and no one shows interest, either you need to present it differently, or your idea doesn&#8217;t solve a real problem.<\/p>\n\n\n\n<p>In France, we have a yearly competition for unusual inventions. Many of these are creative ideas that solve very niche issues, which is great. However, I prefer to focus on problems or needs that attract a bit more attention.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Project requirement<\/h3>\n\n\n\n<p>What were my motivation to embark in this odd project ? At first it seems that a lot of CO2 monitor already exist in the market ! By stating my reason for this project we will be able to give a list for the requirement of the project !What motivated me to embark on this unusual project? At first glance, it seems like there are already plenty of CO2 monitors on the market! However, by outlining my reasons for taking on this project, we can establish a list of requirements for it.<\/p>\n\n\n\n<p>Here are my requirements:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use a high-end sensor<\/li>\n\n\n\n<li>Operate on battery power<\/li>\n\n\n\n<li>Be small enough to fit on a keyring<\/li>\n\n\n\n<li>Require no charging or maintenance for a long period (at least ~3 months)<\/li>\n\n\n\n<li>Have an update period between 1 and 20 minutes<\/li>\n<\/ul>\n\n\n\n<p>This is my wishlist! Now, let&#8217;s compare it with existing products on the market to see if this could be a unique offering. After doing some research online, I found:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Price: between 30 and 60 euros<\/li>\n\n\n\n<li>Some are battery-operated, while others need to be plugged into the wall<\/li>\n\n\n\n<li>Sizes range from that of a glasses case to a weather station<\/li>\n\n\n\n<li>Battery-operated sensors have an autonomy of about 1 day<\/li>\n\n\n\n<li>Update periods range from 30 seconds to one minute<\/li>\n<\/ul>\n\n\n\n<p>So, it looks like my idea isn&#8217;t currently available on the market and could fill a niche in the CO2 monitor category.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Market survey<\/h3>\n\n\n\n<p>Now we can ask people about our idea to see if they would be interested in buying it! Let&#8217;s conduct a quick qualitative and quantitative survey to gather some insights.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Qualitative survey<\/h4>\n\n\n\n<p>The best way to conduct a qualitative survey is to ask friends from different fields for their feedback on your idea. So, what was their feedback?<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The price range is good.<\/li>\n\n\n\n<li>The fact that you don\u2019t need to worry about the battery is a strong point.<\/li>\n\n\n\n<li>The small size of the object is appealing.<\/li>\n\n\n\n<li>The purpose of the device seems a bit unclear; some viewed it as a gadget or niche product.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Quantitative survey<\/h4>\n\n\n\n<p>At my engineering school, we have a survey group, which is the best place to gather data! While this survey may be biased since it only targets engineering students, it&#8217;s better than having no data at all. Here are the results from 45 responses:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Domain knowledge questions:<\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-group is-content-justification-center is-nowrap is-layout-flex wp-container-core-group-is-layout-23441af8 wp-block-group-is-layout-flex\">\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69e9e841018a0&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"665\" height=\"411\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/chauquest.com\/wp-content\/uploads\/2024\/06\/Air-quality-issues-in-offices-and-classrooms_.png\" alt=\"\" class=\"wp-image-622\" srcset=\"https:\/\/chauquest.com\/wp-content\/uploads\/2024\/06\/Air-quality-issues-in-offices-and-classrooms_.png 665w, https:\/\/chauquest.com\/wp-content\/uploads\/2024\/06\/Air-quality-issues-in-offices-and-classrooms_-300x185.png 300w\" sizes=\"auto, (max-width: 665px) 100vw, 665px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on-async--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69e9e84101ec4&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"665\" height=\"411\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/chauquest.com\/wp-content\/uploads\/2024\/06\/In-your-opinion-the-attention-of-the-media-and-the-scientific-scene-on-this-subject-in-the-coming-years-will_.png\" alt=\"\" class=\"wp-image-623\" srcset=\"https:\/\/chauquest.com\/wp-content\/uploads\/2024\/06\/In-your-opinion-the-attention-of-the-media-and-the-scientific-scene-on-this-subject-in-the-coming-years-will_.png 665w, https:\/\/chauquest.com\/wp-content\/uploads\/2024\/06\/In-your-opinion-the-attention-of-the-media-and-the-scientific-scene-on-this-subject-in-the-coming-years-will_-300x185.png 300w\" sizes=\"auto, (max-width: 665px) 100vw, 665px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on-async--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69e9e84102494&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"665\" height=\"411\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/chauquest.com\/wp-content\/uploads\/2024\/06\/In-your-opinion-the-most-important-indicator-to-track-on-a-weekly-basis-is_.png\" alt=\"\" class=\"wp-image-624\" srcset=\"https:\/\/chauquest.com\/wp-content\/uploads\/2024\/06\/In-your-opinion-the-most-important-indicator-to-track-on-a-weekly-basis-is_.png 665w, https:\/\/chauquest.com\/wp-content\/uploads\/2024\/06\/In-your-opinion-the-most-important-indicator-to-track-on-a-weekly-basis-is_-300x185.png 300w\" sizes=\"auto, (max-width: 665px) 100vw, 665px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on-async--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n<\/div>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Object characteristic:<\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-group is-content-justification-center is-nowrap is-layout-flex wp-container-core-group-is-layout-23441af8 wp-block-group-is-layout-flex\">\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69e9e84102bda&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"665\" height=\"411\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/chauquest.com\/wp-content\/uploads\/2024\/06\/For-this-tool-to-be-usable-on-a-weekly-basis-its-maximum-size-must-be-of-the-order-of_.png\" alt=\"\" class=\"wp-image-625\" srcset=\"https:\/\/chauquest.com\/wp-content\/uploads\/2024\/06\/For-this-tool-to-be-usable-on-a-weekly-basis-its-maximum-size-must-be-of-the-order-of_.png 665w, https:\/\/chauquest.com\/wp-content\/uploads\/2024\/06\/For-this-tool-to-be-usable-on-a-weekly-basis-its-maximum-size-must-be-of-the-order-of_-300x185.png 300w\" sizes=\"auto, (max-width: 665px) 100vw, 665px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on-async--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69e9e8410310f&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"665\" height=\"411\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/chauquest.com\/wp-content\/uploads\/2024\/06\/For-this-type-of-tool-I-am-ready-to-pay-the-maximum_.png\" alt=\"\" class=\"wp-image-626\" srcset=\"https:\/\/chauquest.com\/wp-content\/uploads\/2024\/06\/For-this-type-of-tool-I-am-ready-to-pay-the-maximum_.png 665w, https:\/\/chauquest.com\/wp-content\/uploads\/2024\/06\/For-this-type-of-tool-I-am-ready-to-pay-the-maximum_-300x185.png 300w\" sizes=\"auto, (max-width: 665px) 100vw, 665px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on-async--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n<\/div>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Attention:<\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-group is-content-justification-center is-nowrap is-layout-flex wp-container-core-group-is-layout-23441af8 wp-block-group-is-layout-flex\">\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69e9e841037c5&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"665\" height=\"411\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/chauquest.com\/wp-content\/uploads\/2024\/06\/I-would-be-willing-to-buy-this-item_.png\" alt=\"\" class=\"wp-image-627\" srcset=\"https:\/\/chauquest.com\/wp-content\/uploads\/2024\/06\/I-would-be-willing-to-buy-this-item_.png 665w, https:\/\/chauquest.com\/wp-content\/uploads\/2024\/06\/I-would-be-willing-to-buy-this-item_-300x185.png 300w\" sizes=\"auto, (max-width: 665px) 100vw, 665px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on-async--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69e9e84103d60&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image size-full wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"665\" height=\"411\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/chauquest.com\/wp-content\/uploads\/2024\/06\/Generally-speaking-the-project-interests-me_.png\" alt=\"\" class=\"wp-image-628\" srcset=\"https:\/\/chauquest.com\/wp-content\/uploads\/2024\/06\/Generally-speaking-the-project-interests-me_.png 665w, https:\/\/chauquest.com\/wp-content\/uploads\/2024\/06\/Generally-speaking-the-project-interests-me_-300x185.png 300w\" sizes=\"auto, (max-width: 665px) 100vw, 665px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on-async--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n<\/div>\n\n\n\n<p>When focusing on engineering students, there is considerable interest in this project, and their expectations aren&#8217;t too high. Based on this data, we should aim to price the product around 20 euros and make it roughly the size of a car key.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Market survey conclusion<\/h4>\n\n\n\n<p>Based on the results from both the quantitative and qualitative surveys, it&#8217;s clear that this project won&#8217;t be a breakthrough. Is that a bad thing? Not at all! I never intended for this product to revolutionize the world. I simply wanted to create something that doesn\u2019t already exist and is somewhat useful. I\u2019m actually quite happy with the survey results!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Introduction<\/h2>\n\n\n\n<p>Time to dive into the project! We know what we want to achieve: a lightweight CO2 monitor for around 30 euros. We will use the SCD40\/41 CO2 sensor.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">CO2 Sensor breakdown<\/h3>\n\n\n\n<p>This sensor uses spectroscopy photoacoustic technology to detect CO2. It emits infrared light that is finely tuned to the absorption band of CO2. When the CO2 molecules absorb this energy, it is converted into molecular vibrations. These vibrations cause variations in the pressure within the sensor chamber, which can be detected by a microphone. The change in pressure is proportional to the number of CO2 molecules present.<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69e9e841045c7&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image aligncenter size-full is-resized wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1000\" height=\"301\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/chauquest.com\/wp-content\/uploads\/2024\/07\/SCD_how.jpg\" alt=\"\" class=\"wp-image-632\" style=\"width:628px;height:auto\" srcset=\"https:\/\/chauquest.com\/wp-content\/uploads\/2024\/07\/SCD_how.jpg 1000w, https:\/\/chauquest.com\/wp-content\/uploads\/2024\/07\/SCD_how-300x90.jpg 300w, https:\/\/chauquest.com\/wp-content\/uploads\/2024\/07\/SCD_how-768x231.jpg 768w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on-async--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Hardware<\/h2>\n\n\n\n<p>The hardware component of a project like this is crucial, as it significantly impacts energy consumption. I decided to use PMOS transistors for the SD card, E-paper display, and CO2 sensor.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Part breakdown<\/h3>\n\n\n\n<p>We will go through each component one by one and select the appropriate microcontroller (MCU) for our project.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">E-paper screen driver<\/h4>\n\n\n\n<p>I followed the typical application outlined in the E-paper screen&#8217;s datasheet. All connections are routed to a 24-position FPC connector.<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69e9e84104e4e&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image aligncenter size-full is-resized wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"721\" height=\"523\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/chauquest.com\/wp-content\/uploads\/2024\/07\/image.png\" alt=\"\" class=\"wp-image-633\" style=\"width:553px;height:auto\" srcset=\"https:\/\/chauquest.com\/wp-content\/uploads\/2024\/07\/image.png 721w, https:\/\/chauquest.com\/wp-content\/uploads\/2024\/07\/image-300x218.png 300w\" sizes=\"auto, (max-width: 721px) 100vw, 721px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on-async--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p>The screen uses six cables for operation:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Screen_BUSY<\/strong>: Goes low when the screen is busy updating.<\/li>\n\n\n\n<li><strong>Screen_RES<\/strong>: Reset pin of the screen (requires setting the correct logic level).<\/li>\n\n\n\n<li><strong>Screen_CS<\/strong>: Chip select for the SPI.<\/li>\n\n\n\n<li><strong>D\/C<\/strong>: Determines whether the SPI is sending data or a command.<\/li>\n\n\n\n<li><strong>SCK<\/strong>: SPI clock.<\/li>\n\n\n\n<li><strong>SDI<\/strong>: SPI data input.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">CO2 probe<\/h4>\n\n\n\n<p>The CO2 probe is very simple to wire.<\/p>\n\n\n\n<p><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-accent-3-color\"><strong>Even if it is easy, I managed to forgot to put pull-up resistor on I2C bus<\/strong><\/mark><\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69e9e841055fd&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image aligncenter size-full is-resized wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"806\" height=\"737\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/chauquest.com\/wp-content\/uploads\/2024\/07\/image-1.png\" alt=\"\" class=\"wp-image-634\" style=\"width:472px;height:auto\" srcset=\"https:\/\/chauquest.com\/wp-content\/uploads\/2024\/07\/image-1.png 806w, https:\/\/chauquest.com\/wp-content\/uploads\/2024\/07\/image-1-300x274.png 300w, https:\/\/chauquest.com\/wp-content\/uploads\/2024\/07\/image-1-768x702.png 768w\" sizes=\"auto, (max-width: 806px) 100vw, 806px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on-async--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p>I2C consists of two lines: <strong>SCL<\/strong> (clock) and <strong>SDA<\/strong> (data).<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">SD card<\/h4>\n\n\n\n<p>It\u2019s quite simple to use the SD card with SPI. The connections include <strong>SD_CS<\/strong> for chip select, <strong>SCK<\/strong> for the clock, <strong>SDI<\/strong> for data input, and <strong>SDO<\/strong> for data output.<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69e9e8410624d&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image aligncenter size-large is-resized wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"513\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/chauquest.com\/wp-content\/uploads\/2024\/07\/image-2-1024x513.png\" alt=\"\" class=\"wp-image-635\" style=\"width:552px;height:auto\" srcset=\"https:\/\/chauquest.com\/wp-content\/uploads\/2024\/07\/image-2-1024x513.png 1024w, https:\/\/chauquest.com\/wp-content\/uploads\/2024\/07\/image-2-300x150.png 300w, https:\/\/chauquest.com\/wp-content\/uploads\/2024\/07\/image-2-768x385.png 768w, https:\/\/chauquest.com\/wp-content\/uploads\/2024\/07\/image-2.png 1118w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on-async--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Microcontroller unit<\/h4>\n\n\n\n<p>Now that we have all the other components, we can choose an MCU that meets all our requirements. The best way to do this is to list everything we need and then pick the right MCU.<\/p>\n\n\n\n<p><strong>Requirements:<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>SPI bus<\/strong><\/li>\n\n\n\n<li><strong>I2C bus<\/strong><\/li>\n\n\n\n<li><strong>8 GPIO pins:<\/strong>\n<ul class=\"wp-block-list\">\n<li>SD_CS<\/li>\n\n\n\n<li>SD_PWR<\/li>\n\n\n\n<li>CO2_PWR<\/li>\n\n\n\n<li>Screen_PWR<\/li>\n\n\n\n<li>Screen_BUSY<\/li>\n\n\n\n<li>Screen_RES<\/li>\n\n\n\n<li>D\/C<\/li>\n\n\n\n<li>Screen_CS<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<p>We\u2019ll also focus on selecting a low-power MCU from a reputable brand. One great way to do this is to provide your requirements to ChatGPT and listen to its recommendations!<\/p>\n\n\n\n<p>Initially, I created a PCB with a PIC MCU, but the PICkit required to program it costs 100\u20ac, and I couldn\u2019t get the student discount because no one responded to my email. So, I switched to the STM32, opting for their L0 series for low power consumption.<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69e9e84106b1e&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image aligncenter size-large is-resized wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"398\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/chauquest.com\/wp-content\/uploads\/2024\/07\/image-3-1024x398.png\" alt=\"\" class=\"wp-image-636\" style=\"width:736px;height:auto\" srcset=\"https:\/\/chauquest.com\/wp-content\/uploads\/2024\/07\/image-3-1024x398.png 1024w, https:\/\/chauquest.com\/wp-content\/uploads\/2024\/07\/image-3-300x116.png 300w, https:\/\/chauquest.com\/wp-content\/uploads\/2024\/07\/image-3-768x298.png 768w, https:\/\/chauquest.com\/wp-content\/uploads\/2024\/07\/image-3.png 1105w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on-async--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Power supply<\/h4>\n\n\n\n<p>I choose to supply the chip with only one <strong>CR1225 <\/strong>battery of roughly 50mAh. <\/p>\n\n\n\n<p><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-accent-3-color\">This was a bad idea, the whole consumme too much to run on 50mAh, it worked with two LR44 but overall it needs to be a rechargeable chip and it is the main argument for a V2<\/mark><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">PCB rooting and panelisation<\/h3>\n\n\n\n<p>Now, we can jump into our schematic editor.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">PCB rooting<\/h4>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69e9e84107246&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image aligncenter size-large is-resized wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"520\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/chauquest.com\/wp-content\/uploads\/2024\/08\/image-1024x520.png\" alt=\"\" class=\"wp-image-768\" style=\"width:701px;height:auto\" srcset=\"https:\/\/chauquest.com\/wp-content\/uploads\/2024\/08\/image-1024x520.png 1024w, https:\/\/chauquest.com\/wp-content\/uploads\/2024\/08\/image-300x152.png 300w, https:\/\/chauquest.com\/wp-content\/uploads\/2024\/08\/image-768x390.png 768w, https:\/\/chauquest.com\/wp-content\/uploads\/2024\/08\/image-1536x780.png 1536w, https:\/\/chauquest.com\/wp-content\/uploads\/2024\/08\/image.png 1826w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on-async--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">Rooting PCB<\/figcaption><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Panelisation<\/h4>\n\n\n\n<p>When buying PCBs online, the price is usually the same for any board that is smaller than 100mm x 100mm. Since our board is quite small, we can fit multiple PCBs within a 100mm x 100mm area. There is a KiCad plugin called &#8216;panelization&#8217; that helps with this process. In this article, I&#8217;ll just show you the result, but I will create a tutorial on panelization later.<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69e9e84107855&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image aligncenter size-full is-resized wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"952\" height=\"873\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/chauquest.com\/wp-content\/uploads\/2024\/08\/image-1.png\" alt=\"\" class=\"wp-image-769\" style=\"width:546px;height:auto\" srcset=\"https:\/\/chauquest.com\/wp-content\/uploads\/2024\/08\/image-1.png 952w, https:\/\/chauquest.com\/wp-content\/uploads\/2024\/08\/image-1-300x275.png 300w, https:\/\/chauquest.com\/wp-content\/uploads\/2024\/08\/image-1-768x704.png 768w\" sizes=\"auto, (max-width: 952px) 100vw, 952px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on-async--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><figcaption class=\"wp-element-caption\">Panelisation of the board<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Actual realisation and Hardware patch<\/h3>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69e9e84107e2b&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image aligncenter size-large is-resized wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"683\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/chauquest.com\/wp-content\/uploads\/2024\/08\/EYM_9451-1024x683.jpg\" alt=\"\" class=\"wp-image-780\" style=\"width:832px;height:auto\" srcset=\"https:\/\/chauquest.com\/wp-content\/uploads\/2024\/08\/EYM_9451-1024x683.jpg 1024w, https:\/\/chauquest.com\/wp-content\/uploads\/2024\/08\/EYM_9451-300x200.jpg 300w, https:\/\/chauquest.com\/wp-content\/uploads\/2024\/08\/EYM_9451-768x512.jpg 768w, https:\/\/chauquest.com\/wp-content\/uploads\/2024\/08\/EYM_9451-1536x1024.jpg 1536w, https:\/\/chauquest.com\/wp-content\/uploads\/2024\/08\/EYM_9451-2048x1365.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on-async--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<p>I needed to patch my I2C with tiny wire in order to have the pull-up resistor<\/p>\n\n\n\n<figure data-wp-context=\"{&quot;imageId&quot;:&quot;69e9e841083d3&quot;}\" data-wp-interactive=\"core\/image\" class=\"wp-block-image aligncenter size-large is-resized wp-lightbox-container\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"683\" data-wp-class--hide=\"state.isContentHidden\" data-wp-class--show=\"state.isContentVisible\" data-wp-init=\"callbacks.setButtonStyles\" data-wp-on-async--click=\"actions.showLightbox\" data-wp-on-async--load=\"callbacks.setButtonStyles\" data-wp-on-async-window--resize=\"callbacks.setButtonStyles\" src=\"https:\/\/chauquest.com\/wp-content\/uploads\/2024\/08\/EYM_9452-1024x683.jpg\" alt=\"\" class=\"wp-image-781\" style=\"width:828px;height:auto\" srcset=\"https:\/\/chauquest.com\/wp-content\/uploads\/2024\/08\/EYM_9452-1024x683.jpg 1024w, https:\/\/chauquest.com\/wp-content\/uploads\/2024\/08\/EYM_9452-300x200.jpg 300w, https:\/\/chauquest.com\/wp-content\/uploads\/2024\/08\/EYM_9452-768x512.jpg 768w, https:\/\/chauquest.com\/wp-content\/uploads\/2024\/08\/EYM_9452-1536x1024.jpg 1536w, https:\/\/chauquest.com\/wp-content\/uploads\/2024\/08\/EYM_9452-2048x1365.jpg 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><button\n\t\t\tclass=\"lightbox-trigger\"\n\t\t\ttype=\"button\"\n\t\t\taria-haspopup=\"dialog\"\n\t\t\taria-label=\"Enlarge\"\n\t\t\tdata-wp-init=\"callbacks.initTriggerButton\"\n\t\t\tdata-wp-on-async--click=\"actions.showLightbox\"\n\t\t\tdata-wp-style--right=\"state.imageButtonRight\"\n\t\t\tdata-wp-style--top=\"state.imageButtonTop\"\n\t\t>\n\t\t\t<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"12\" height=\"12\" fill=\"none\" viewBox=\"0 0 12 12\">\n\t\t\t\t<path fill=\"#fff\" d=\"M2 0a2 2 0 0 0-2 2v2h1.5V2a.5.5 0 0 1 .5-.5h2V0H2Zm2 10.5H2a.5.5 0 0 1-.5-.5V8H0v2a2 2 0 0 0 2 2h2v-1.5ZM8 12v-1.5h2a.5.5 0 0 0 .5-.5V8H12v2a2 2 0 0 1-2 2H8Zm2-12a2 2 0 0 1 2 2v2h-1.5V2a.5.5 0 0 0-.5-.5H8V0h2Z\" \/>\n\t\t\t<\/svg>\n\t\t<\/button><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Software<\/h2>\n\n\n\n<p><strong>LET&#8217;S GO PROGRAMMING IN C<\/strong>. In order to enable the full capabilites of the STM32 we&#8217;re going to use the STM32CubeIDE in order to program our chip (no Arduino IDE but actually don&#8217;t be affraid it is nearly the same). In C no class, so everything is in our project, I took inspiration from arduino library and the recommanded code of the datasheet for the paper display, and made my own C header and code.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Quick C helper<\/h3>\n\n\n\n<p>You&#8217;re here so I assume you already know base of C through arduino. The main thing that change in STM32CubeIDE it is we get a real IDE with file management. As I said earlier there is no class in C, we can only import header file that are linked with C code file. It is pretty restrictive but that&#8217;s why it runs really fast.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Code structure<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Image creation<\/h4>\n\n\n\n<p>I will just detail the way I create my background image for the E-paper display.<\/p>\n\n\n\n<p>I found on the internet some paid software to create image for E-paper display (way to arange pixel in a good way) and complex free alternative (installing C library). I have made a one line script using ImageMagick in order to create the right header (instructions could be founded in the repository). As noted that the first bytes need to be discarded because they contain an header.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Bus communication<\/h4>\n\n\n\n<p>I needed to set up two communication buses: SPI for the screen and I2C for the CO2 probe. I used the pre-implemented protocols available in the STM32 HAL driver. With the help of the datasheet and after addressing some hardware issues, the task was not too complicated.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Flashing hardware<\/h3>\n\n\n\n<p>I used an ST-Link V2 clone to flash my software. Unfortunately, I encountered an issue with the reset pin, which I addressed with a small fix discussed in this article : <strong><a href=\"https:\/\/chauquest.com\/index.php\/article\/why-your-st-link-v2-reset-doesnt-work-and-how-to-fix-it\" title=\"\">Why Your ST-Link V2 Reset Doesn\u2019t Work And How To Fix It<\/a><\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Result<\/h2>\n\n\n\n<p>I can&#8217;t really test a lot of things, like I haven&#8217;t really understood the way the CO2 sensor calibrate itself so I can just assume it works as intented because it outputs value that are average for a room with only someone inside and when I blow on it, it increases drasticly. The majority of the test I made was for power consumption.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Power consumption test bench<\/h3>\n\n\n\n<p>I experimented extensively with the code to achieve virtually zero power consumption when the device is idle. Using a small test bench I set up, I was able to monitor the current down to 0.1mA. This test bench consists of a shunt resistor and a highly precise ADC, all connected to my laptop through an Arduino Nano (code can be founded in the repositery). I conducted multiple tests to verify that each PMOS was correctly shutting down the current consumption of the components.<\/p>\n\n\n\n<p><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-accent-3-color\">During testing, I realized that the I2C pull-up resistors could unexpectedly drain current since they were always connected to VCC. To fix this, I switched their input to the output of the CO2 sensor power PMOS.<\/mark><\/p>\n\n\n\n<p>After optimizing everything as much as possible, I achieved an average consumption of 265\u00b5A, with measurements taken every 10 minutes and a background current of less than 0.1mA.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p>This project was a lot of fun, and it was my first time creating a PCB, so I was thrilled to work on it. Unfortunately, I made too many mistakes to consider it a complete success, and it definitely needs a version 2. Will I rush to make a V2? No, I have many other exciting projects I want to explore first. Changing subjects will help me maintain my momentum in learning new things!<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Code and ressources<\/h3>\n\n\n\n<p>Everything can be found on <a href=\"https:\/\/github.com\/Eymeric65\/CO2_Portable_sensor_main\" title=\"\">this repository github<\/a>. I have divided this repository in multiple folder. You can access to every pcb file, STM32Cube Ide project and some 3D model of the V1 through .step file.<\/p>\n\n\n\n<div style=\"height:136px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">V2 trailer&#8230;<\/h2>\n\n\n\n<p>So, what should we focus on for V2? I&#8217;ll discuss a few points that are likely to be part of the next version. I&#8217;ll probably post updates on my Instagram, as I usually do.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Power Supply<\/h3>\n\n\n\n<p>Using a non-rechargeable battery wasn\u2019t a good choice because the chip consumes too much power. So, I plan to use a small lithium battery, along with a charger IC and a USB-C port. This also means that the SD card will likely be unnecessary. Instead, I will try to create a USB device that functions like a USB flash drive, using a small flash memory soldered onto the chip.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">FPC connector<\/h3>\n\n\n\n<p>Right now, the size is limited by the FPC connector and the SD port. If I remove both, I could reduce the size of the device. I just need to choose the right battery for it!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Today, we will design and build the first version of a handheld CO2 monitor. This is a great way to learn a lot about electronics and experiment with different sensors.<\/p>\n","protected":false},"author":1,"featured_media":779,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"footnotes":""},"categories":[42,6],"tags":[25,43,46,41],"class_list":["post-619","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dossier","category-engineering","tag-electronic-board","tag-electronics","tag-mcu","tag-proof-of-concept"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/chauquest.com\/index.php\/wp-json\/wp\/v2\/posts\/619","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/chauquest.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/chauquest.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/chauquest.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/chauquest.com\/index.php\/wp-json\/wp\/v2\/comments?post=619"}],"version-history":[{"count":18,"href":"https:\/\/chauquest.com\/index.php\/wp-json\/wp\/v2\/posts\/619\/revisions"}],"predecessor-version":[{"id":869,"href":"https:\/\/chauquest.com\/index.php\/wp-json\/wp\/v2\/posts\/619\/revisions\/869"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/chauquest.com\/index.php\/wp-json\/wp\/v2\/media\/779"}],"wp:attachment":[{"href":"https:\/\/chauquest.com\/index.php\/wp-json\/wp\/v2\/media?parent=619"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/chauquest.com\/index.php\/wp-json\/wp\/v2\/categories?post=619"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/chauquest.com\/index.php\/wp-json\/wp\/v2\/tags?post=619"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}