PageSourceSearch

https://canair.io/docs/

html canair.io collected 2026-10-01 12:27:50 UTC 21,317 bytes, 696 lines download raw bytes

1<!DOCTYPE html>
2<html>
3<head>
4    <meta charset="utf-8">
5<meta http-equiv="X-UA-Compatible" content="IE=edge">
6<meta name="viewport" content="width=device-width, initial-scale=1">
7<meta name="description" content="These brief instructions will help you get started quickly with CanAirIO.">
8<meta name="keywords" content="getting_started,  homepage">
9<title>Getting started with CanAirIO | CanAirIO documentation portal</title>
10<link rel="stylesheet" href="css/syntax.css">
11
12<link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
13<!--<link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">-->
14<link rel="stylesheet" href="css/modern-business.css">
15<!-- Latest compiled and minified CSS -->
16<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
17<link rel="stylesheet" href="css/customstyles.css">
18<link rel="stylesheet" href="css/boxshadowproperties.css">
19<!-- most color styles are extracted out to here -->
20<link rel="stylesheet" href="css/theme-blue.css">
21
22<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
22
23
24<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js"></script>
vendor: 1 bytes, line 24
24
25<script src="js/jquery.navgoco.min.js"></script>
25
26
27
28<!-- Latest compiled and minified JavaScript -->
29<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
29
30<!-- Anchor.js -->
31<script src="https://cdnjs.cloudflare.com/ajax/libs/anchor-js/4.2.0/anchor.min.js"></script>
vendor: 1 bytes, line 31
31
32<script src="js/toc.js"></script>
vendor: 1 bytes, line 32
32
33<script src="js/customscripts.js"></script>
33
34
35<link rel="shortcut icon" href="images/favicon.ico">
36
37<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
38<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
39<!--[if lt IE 9]>
40<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
vendor: 1 bytes, line 40
40
41<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
41
42<![endif]-->
43
44<link rel="alternate" type="application/rss+xml" title="" href="/feed.xml">
45
46
47
48    
48<script>
49        $(document).ready(function() {
50            // Initialize navgoco with default options
51            $("#mysidebar").navgoco({
52                caretHtml: '',
53                accordion: true,
54                openClass: 'active', // open
55                save: false, // leave false or nav highlighting doesn't work right
56                cookie: {
57                    name: 'navgoco',
58                    expires: false,
59                    path: '/'
60                },
61                slide: {
62                    duration: 400,
63                    easing: 'swing'
64                }
65            });
66
67            $("#collapseAll").click(function(e) {
68                e.preventDefault();
69                $("#mysidebar").navgoco('toggle', false);
70            });
71
72            $("#expandAll").click(function(e) {
73                e.preventDefault();
74                $("#mysidebar").navgoco('toggle', true);
75            });
76
77        });
78
79    </script>
79
80    
80<script>
81        $(function () {
82            $('[data-toggle="tooltip"]').tooltip()
83        })
84    </script>
84
85    
85<script>
86        $(document).ready(function() {
87            $("#tg-sb-link").click(function() {
88                $("#tg-sb-sidebar").toggle();
89                $("#tg-sb-content").toggleClass('col-md-9');
90                $("#tg-sb-content").toggleClass('col-md-12');
91                $("#tg-sb-icon").toggleClass('fa-toggle-on');
92                $("#tg-sb-icon").toggleClass('fa-toggle-off');
93            });
94        });
95    </script>
95
96    
97
98</head>
99<body>
100<!-- Navigation -->
101<nav class="navbar navbar-inverse navbar-static-top">
102    <div class="container topnavlinks">
103        <div class="navbar-header">
104            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
105                <span class="sr-only">Toggle navigation</span>
106                <span class="icon-bar"></span>
107                <span class="icon-bar"></span>
108                <span class="icon-bar"></span>
109            </button>
110            <a class="fa fa-home fa-lg navbar-brand" href="index.html">&nbsp;<span class="projectTitle"> CanAirIO</span></a>
111        </div>
112        <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
113            <ul class="nav navbar-nav navbar-right">
114                <!-- toggle sidebar button -->
115                <li><a id="tg-sb-link" href="#"><i id="tg-sb-icon" class="fa fa-toggle-on"></i> Nav</a></li>
116                <!-- entries without drop-downs appear here -->
117
118
119
120
121                
122                
123                
124                <li><a href="https://github.com/kike-canaries/" target="_blank" rel="noopener">GitHub</a></li>
125                
126                
127                
128                <li><a href="https://github.com/kike-canaries/canairio_firmware/releases" target="_blank" rel="noopener">Releases</a></li>
129                
130                
131                
132                <li><a href="https://hackaday.io/project/179753/logs" target="_blank" rel="noopener">News</a></li>
133                
134                
135                
136                <li><a href="https://t.me/canairio" target="_blank" rel="noopener">Support</a></li>
137                
138                
139                
140                <!-- entries with drop-downs appear here -->
141                <!-- conditional logic to control which topnav appears for the audience defined in the configuration file.-->
142                
143                
144			<li>
145
146
147
148  <a class="email" title="Submit feedback" href="https://canair.io/#three">Feedback</a>
149
150</li>
151
152
153
154		
155                <!--comment out this block if you want to hide search-->
156                <li>
157                    <!--start search-->
158                    <div id="search-demo-container">
159                        <input type="text" id="search-input" placeholder="search...">
160                        <ul id="results-container"></ul>
161                    </div>
162                    
162<script src="js/jekyll-search.js" type="text/javascript"></script>
162
163                    
163<script type="text/javascript">
164                            SimpleJekyllSearch.init({
165                                searchInput: document.getElementById('search-input'),
166                                resultsContainer: document.getElementById('results-container'),
167                                dataSource: 'search.json',
168                                searchResultTemplate: '<li><a href="{url}" title="Getting started with CanAirIO">{title}</a></li>',
169                    noResultsText: 'No results found.',
170                            limit: 10,
171                            fuzzy: true,
172                    })
173                    </script>
173
174                    <!--end search-->
175                </li>
176            </ul>
177        </div>
178        </div>
179        <!-- /.container -->
180</nav>
181
182
183
184<!-- Page Content -->
185<div class="container">
186  <div id="main">
187    <!-- Content Row -->
188    <div class="row">
189        
190        
191            <!-- Sidebar Column -->
192            <div class="col-md-3" id="tg-sb-sidebar">
193                
194
195<ul id="mysidebar" class="nav">
196  <li class="sidebarTitle">CanAirIO 0.5.2</li>
197  
198  
199  
200      
201  
202  <li>
203      <a title="Getting Started" href="#">Getting Started</a>
204      <ul>
205          
206          
207          
208          <li><a title="Building a device" href="index.html#building-a-device">Building a device</a></li>
209          
210          
211          
212          
213          
214          
215          <li><a title="Firmware upload" href="firmware_upload.html#overview">Firmware upload</a></li>
216          
217          
218          
219          
220          
221          
222          <li><a title="Firmware config" href="firmware_config.html#overview">Firmware config</a></li>
223          
224          
225          
226          
227          
228          
229          <li><a title="CanAirIO App" href="app_usage.html#overview">CanAirIO App</a></li>
230          
231          
232          
233          
234          
235          
236          <li><a title="CanAirIO CLI" href="cli.html#overview">CanAirIO CLI</a></li>
237          
238          
239          
240          
241      </ul>
242   </li>
243     
244      
245  
246  <li>
247      <a title="Device" href="#">Device</a>
248      <ul>
249          
250          
251          
252          <li><a title="CanAirIO Bike" href="canairio_bike.html">CanAirIO Bike</a></li>
253          
254          
255          
256          
257          
258          
259          <li><a title="CanAirIO CO2" href="canairio_co2.html">CanAirIO CO2</a></li>
260          
261          
262          
263          
264          
265          
266          <li><a title="CanAirIO M5Stack" href="canairio_m5stack.html">CanAirIO M5Stack</a></li>
267          
268          
269          
270          
271          
272          
273          <li><a title="CanAirIO IKEA Vindriktning" href="canairio_ikea.html">CanAirIO IKEA Vindriktning</a></li>
274          
275          
276          
277          
278          
279          
280          <li><a title="CanAirIO IKEA Vindstyrka" href="canairio_ikea_vindstyrka.html">CanAirIO IKEA Vindstyrka</a></li>
281          
282          
283          
284          
285          
286          
287          <li><a title="CanAirIO Plantower" href="canairio_plantower.html">CanAirIO Plantower</a></li>
288          
289          
290          
291          
292          
293          
294          <li><a title="Solar Station" href="solar_station.html">Solar Station</a></li>
295          
296          
297          
298          
299      </ul>
300   </li>
301     
302      
303  
304  <li>
305      <a title="Sensors" href="#">Sensors</a>
306      <ul>
307          
308          
309          
310          <li><a title="CanAirIO Sensorslib" href="sensorlib.html">CanAirIO Sensorslib</a></li>
311          
312          
313          
314          
315          
316          
317          <li><a title="CO2 sensors comparative" href="co2_comparative.html">CO2 sensors comparative</a></li>
318          
319          
320          
321          
322          
323          
324          <li><a title="DF Robot Gravity Sensors" href="dfrobot_sensors.html">DF Robot Gravity Sensors</a></li>
325          
326          
327          
328          
329      </ul>
330   </li>
331     
332      
333  
334  <li>
335      <a title="Firmware" href="#">Firmware</a>
336      <ul>
337          
338          
339          
340          <li><a title="Overview" href="firmware_upload.html#overview">Overview</a></li>
341          
342          
343          
344          
345          
346          
347          <li><a title="Upload via CanAirIO Web Installer" href="firmware_upload.html#canairio-web-installer">Upload via CanAirIO Web Installer</a></li>
348          
349          
350          
351          
352          
353          
354          <li><a title="Upload via CanAirIO Loader" href="firmware_upload.html#canairio-loader">Upload via CanAirIO Loader</a></li>
355          
356          
357          
358          
359          
360          
361          <li><a title="Upload via Espressif Uploader" href="firmware_upload.html#espressif-uploader">Upload via Espressif Uploader</a></li>
362          
363          
364          
365          
366          
367          
368          <li><a title="Upload via CanAirIO Installer" href="firmware_upload.html#canairio-installer">
368Upload via CanAirIO Installer</a></li>
369          
370          
371          
372          
373          
374          
375          <li><a title="Upload from Source Code" href="firmware_upload.html#via-source-code">Upload from Source Code</a></li>
376          
377          
378          
379          
380          
381          
382          <li><a title="Firmware configuration" href="firmware_config.html">Firmware configuration</a></li>
383          
384          
385          
386          
387          
388          
389          <li><a title="Firmware debugging" href="firmware_debugging.html">Firmware debugging</a></li>
390          
391          
392          
393          
394      </ul>
395   </li>
396     
397      
398  
399  <li>
400      <a title="Integrations" href="#">Integrations</a>
401      <ul>
402          
403          
404          
405          <li><a title="CanAirIO World map" href="cloud_worldmap.html">CanAirIO World map</a></li>
406          
407          
408          
409          
410          
411          
412          <li><a title="CanAirIO Mobile Map" href="mobile_map.html">CanAirIO Mobile Map</a></li>
413          
414          
415          
416          
417          
418          
419          <li><a title="Home Assistant" href="home_assistant.html">Home Assistant</a></li>
420          
421          
422          
423          
424          
425          
426          <li><a title="Anaire Cloud" href="cloud_anaire.html">Anaire Cloud</a></li>
427          
428          
429          
430          
431      </ul>
432   </li>
433     
434      
435  
436  <li>
437      <a title="API" href="#">API</a>
438      <ul>
439          
440          
441          
442          <li><a title="Mobile station" href="mobile_api_en.html">Mobile station</a></li>
443          
444          
445          
446          
447          
448          
449          <li><a title="Fixed station" href="fixed_stations_api_en.html">Fixed station</a></li>
450          
451          
452          
453          
454          
455          
456          <li><a title="Bluetooth GATT protocol" href="firmware_protocol.html">Bluetooth GATT protocol</a></li>
457          
458          
459          
460          
461      </ul>
462   </li>
463     
464      
465  
466  <li>
467      <a title="Community" href="#">Community</a>
468      <ul>
469          
470          
471          
472          <li><a title="Respiraton 2021" href="Respiraton2021.html">Respiraton 2021</a></li>
473          
474          
475          
476          
477          
478          
479          <li><a title="Collectives and Partners" href="partners.html">Collectives and Partners</a></li>
480          
481          
482          
483          
484      </ul>
485   </li>
486     
487      
488      
489      <!-- if you aren't using the accordion, uncomment this block:
490         <p class="external">
491             <a href="#" id="collapseAll">Collapse All</a> | <a href="#" id="expandAll">Expand All</a>
492         </p>
493         -->
494</ul>
495
496<!-- this highlights the active parent class in the navgoco sidebar. this is critical so that the parent expands when you're viewing a page. This must appear below the sidebar code above. Otherwise, if placed inside customscripts.js, the script runs before the sidebar code runs and the class never gets inserted.-->
497<script>$("li.active").parents('li').toggleClass("active");</script>
497
498
499
500
501            </div>
502            
503        
504
505        <!-- Content Column -->
506        <div class="col-md-9" id="tg-sb-content">
507            <div class="post-header">
508   <h1 class="post-title-main">Getting started with CanAirIO</h1>
509</div>
510
511
512
513<div class="post-content">
514
515   
516    <div class="summary">These brief instructions will help you get started quickly with CanAirIO.</div>
517   
518
519    
520    
521<!-- this handles the automatic toc. use ## for subheads to auto-generate the on-page minitoc. if you use html tags, you must supply an ID for the heading element in order for it to appear in the minitoc. -->
522<script>
523$( document ).ready(function() {
524  // Handler for .ready() called.
525
526$('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3,h4' });
527
528/* this offset helps account for the space taken up by the floating toolbar. */
529$('#toc').on('click', 'a', function() {
530  var target = $(this.getAttribute('href'))
531    , scroll_target = target.offset().top
532
533  $(window).scrollTop(scroll_target - 10);
534  return false
535})
536
537});
538</script>
538
539
540<div id="toc"></div>
541
542
543
544    
545
546
547    
548
549   <p><img src="images/canairio_collage_community.jpg" alt="CanAirIO Community" /></p>
550<h2 id="overview">Overview</h2>
551
552<p>CanAirIO is a citizen science project using mobile and fixed air quality stations to measure some variables like PM2.5, CO2, AQI and others air indicators with cell phones and low-cost technology.</p>
553
554<h2 id="canairio-web-installer">CanAirIO Web Installer</h2>
555
556<p>Good news! we already have a super easy way for <strong>install CanAirIO</strong> on any compatible <strong>Arduino ESP32 board</strong>, with a few clicks in seconds without any sensor, for example you able to have our <strong>CanAirIO PAX Counter</strong> device:</p>
557
558<p><img src="https://user-images.githubusercontent.com/423856/141661066-0fafcaa9-98b4-419b-b1e7-4371f3cb99b8.gif" alt="video_2021-11-13_23-36-10" /></p>
559
560<p>More info in <a href="https://canair.io/installer.html">canair.io/installer</a></p>
561
562<h2 id="building-a-device">Building a device</h2>
563
564<p>We have some device version alternatives with some guides:</p>
565
566<table>
567  <thead>
568    <tr>
569      <th style="text-align: left">Device version</th>
570      <th style="text-align: center">Difficulty</th>
571      <th style="text-align: center">Status</th>
572      <th style="text-align: center">Links</th>
573    </tr>
574  </thead>
575  <tbody>
576    <tr>
577      <td style="text-align: left">CanAirIO Bike</td>
578      <td style="text-align: center">Medium</td>
579      <td style="text-align: center">New</td>
580      <td style="text-align: center"><a href="https://canair.io/docs/canairio_bike.html">Complete guide and video</a></td>
581    </tr>
582    <tr>
583      <td style="text-align: left">CanAirIO CO2</td>
584      <td style="text-align: center">Medium</td>
585      <td style="text-align: center">New</td>
586      <td style="text-align: center"><a href="https://canair.io/docs/canairio_co2.html">Complete guide and video</a></td>
587    </tr>
588    <tr>
589      <td style="text-align: left">CanAirIO M5Stack</td>
590      <td style="text-align: center">Easy</td>
591      <td style="text-align: center">New</td>
592      <td style="text-align: center"><a href="https://canair.io/docs/canairio_m5stack.html">Basic guide</a></td>
593    </tr>
594    <tr>
595      <td style="text-align: left">CanAirIO IKEA Vindriktning</td>
596      <td style="text-align: center">Easy</td>
597      <td style="text-align: center">New</td>
598      <td style="text-align: center"><a href="https://canair.io/docs/canairio_ikea.html">Basic guide</a></td>
599    </tr>
600    <tr>
601      <td style="text-align: left">CanAirIO IKEA Vindstyrka</td>
602      <td style="text-align: center">Easy</td>
603      <td style="text-align: center">New</td>
604      <td style="text-align: center"><a href="https://canair.io/docs/canairio_ikea_vindstyrka.html">Basic guide</a></td>
605    </tr>
606    <tr>
607      <td style="text-align: left">CanAirIO Plantower</td>
608      <td style="text-align: center">Easy</td>
609      <td style="text-align: center">New</td>
610      <td style="text-align: center"><a href="https://canair.io/docs/canairio_plantower.html">Basic guide</a></td>
611    </tr>
612    <tr>
613      <td style="text-align: left">CanAirIO Solar Station</td>
614      <td style="text-align: center">Medium</td>
615      <td style="text-align: center">New</td>
616      <td style="text-align: center"><a href="https://canair.io/docs/solar_station.html">Basic guide</a></td>
617    </tr>
618    <tr>
619      <td style="text-align: left">CanAirIO without soldering (EN)</td>
620      <td style="text-align: center">Easy</td>
621      <td style="text-align: center">Outdated</td>
622      <td style="text-align: center"><a href="https://www.hackster.io/canairio/build-low-cost-air-quality-sensor-canairio-without-soldering-d87494">Complete guide and video</a></td>
623    </tr>
624    <tr>
625      <td style="text-align: left">CanAirIO without soldering (ES)</td>
626      <td style="text-align: center">Easy</td>
627      <td style="text-align: center">Outdated</td>
628      <td style="text-align: center"><a href="https://www.hackster.io/canairio/construye-un-sensor-calidad-del-aire-canairio-sin-soldaduras-8a3c6d">Complete guide and video</a></td>
629    </tr>
630    <tr>
631      <td style="text-align: left">CanAirIO device v2.1 (EN)</td>
632      <td style="text-align: center">Medium</td>
633      <td style="text-align: center">Outdated</td>
634      <td style="text-align: center"><a href="https://www.hackster.io/canairio-guide-team/canairio-citizen-network-for-air-quality-monitoring-bbf647">Complete guide and video</a></td>
635    </tr>
636    <tr>
637      <td style="text-align: left">CanAirIO device v2.1 (ES)</td>
638      <td style="text-align: center">Medium</td>
639      <td style="text-align: center">Outdated</td>
640      <td style="text-align: center"><a href="https://www.hackster.io/114723/canairio-red-ciudadana-para-monitoreo-de-calidad-del-aire-96f79a">Complete guide and video</a></td>
641    </tr>
642  </tbody>
643</table>
644
645
646
647
648<div id="commento"></div>
649
650
651
652
653
654
655</div>
656
657<hr class="shaded"/>
658
659<footer>
660            <div class="row">
661                <div class="col-lg-12 footer">
662               &copy;2025 CanAirIO. GPLv3. <br />
663 Site last generated: Jul 14, 2025 <br />
664<p><img src="images/company_logo.png" alt="Company logo"/></p>
665                </div>
666            </div>
667</footer>
668
669
670
671
672
673
674        </div>
675    <!-- /.row -->
676</div>
677<!-- /.container -->
678</div>
679<!-- /#main -->
680    </div>
681
682</body>
683
684<!-- the google_analytics_id gets auto inserted from the config file -->
685
686
687
688<script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');ga('create','G-PM0QV0WD8F','auto');ga('require','displayfeatures');ga('send','pageview');</script>
688
689
690
691
692
693
694</html>
695
696

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.