Съдържание:

Евтин IoT монитор за качеството на въздуха, базиран на RaspberryPi 4: 15 стъпки (със снимки)
Евтин IoT монитор за качеството на въздуха, базиран на RaspberryPi 4: 15 стъпки (със снимки)

Видео: Евтин IoT монитор за качеството на въздуха, базиран на RaspberryPi 4: 15 стъпки (със снимки)

Видео: Евтин IoT монитор за качеството на въздуха, базиран на RaspberryPi 4: 15 стъпки (със снимки)
Видео: Raspberry Pi 4B в кутията Argon ONE M.2 с 128 GB SSD, сглобяване на сървър за Home Assistant 2024, Юли
Anonim
Евтин IoT монитор за качеството на въздуха, базиран на RaspberryPi 4
Евтин IoT монитор за качеството на въздуха, базиран на RaspberryPi 4
Евтин IoT монитор за качеството на въздуха, базиран на RaspberryPi 4
Евтин IoT монитор за качеството на въздуха, базиран на RaspberryPi 4
Евтин IoT монитор за качеството на въздуха, базиран на RaspberryPi 4
Евтин IoT монитор за качеството на въздуха, базиран на RaspberryPi 4
Евтин IoT монитор за качеството на въздуха, базиран на RaspberryPi 4
Евтин IoT монитор за качеството на въздуха, базиран на RaspberryPi 4

Сантяго, Чили по време на зимна екологична ситуация имат привилегията да живеят в една от най -красивите страни в света, но за съжаление не всичко е рози. Чили през зимния сезон страда много от замърсяване на въздуха, главно поради прахови частици като смог и прах.

Поради студеното време, на юг, замърсяването на въздуха се дължи главно на дървесни калектори и в Сантяго (основната столица в центъра на страната), смесени от индустрии, автомобили и уникалното му географско положение между 2 огромни планински вериги.

В днешно време замърсяването на въздуха е голям проблем по целия свят и в тази статия ще изследваме как да разработим евтин домашен монитор за качество на въздуха, базиран на Raspberry Pi. Ако се интересувате да научите повече за качеството на въздуха, моля, посетете проекта „Световен индекс на качеството на въздуха“.

Консумативи

  • Малина Пи 4
  • 1SDS011 - Високоточен лазерен сензор за качество на въздуха pm2.5
  • Пластмасова кутия

Стъпка 1: Частици (PM): Какво е това? Как се издига във въздуха?

Частици (PM): Какво е това? Как се издига във въздуха?
Частици (PM): Какво е това? Как се издига във въздуха?

Така че, за да разберем замърсяването или замърсяването на въздуха, трябва да проучим частиците, които са свързани с това, което също е известно като прахови частици. Разглеждайки графиките в предишния раздел, можем да забележим, че те споменават PM2.5 и PM10. Нека да дадем кратък преглед на това.

PM означава прахови частици (наричани още частици): терминът за смес от твърди частици и течни капчици, открити във въздуха. Някои частици, като прах, мръсотия, сажди или дим, са достатъчно големи или тъмни, за да се видят с просто око. Други са толкова малки, че могат да бъдат открити само с електронен микроскоп. Частиците се предлагат в широк диапазон от размери. Частиците с диаметър по -малък или равен на 10 микрометра са толкова малки, че могат да попаднат в белите дробове, потенциално причинявайки сериозни здравословни проблеми. Десет микрометра са по -малко от ширината на една човешка коса.

Замърсяването с частици включва груби прахови частици (PM10): частици за вдишване, с диаметри, които обикновено са 10 микрометра и по -малки. Източниците включват раздробяване или смилане и прах, разбъркан от превозни средства по пътищата. Фини частици (PM2.5): фини вдишващи се частици с диаметри, които обикновено са 2,5 микрометра и по -малки. Фините частици се произвеждат от всички видове изгаряне, включително моторни превозни средства, електроцентрали, изгаряне на жилищни дървета, горски пожари, изгаряне в селското стопанство и някои промишлени процеси, можете да намерите повече за праховите частици на сайта на EPA: Агенцията за опазване на околната среда на САЩ

Стъпка 2: Защо е важно да се грижите за тези частици?

Защо е важно да се грижите за тези частици?
Защо е важно да се грижите за тези частици?

Както е описано от GERARDO ALVARADO Z. в работата му в Чилийския университет, изследванията на епизодите на високо замърсяване на въздуха в долината на Маас (Белгия) през 1930 г., Donora (Пенсилвания) през 1948 г. и Лондон през 1952 г. са първите документирани източници, свързани със смъртността със замърсяване с частици (Préndez, 1993). Напредъкът в изследването на ефектите на замърсяването на въздуха върху здравето на хората е установил, че рисковете за здравето са причинени от вдишващи се частици, в зависимост от тяхното проникване и отлагане в различни части на дихателната система, и от биологичния отговор на депонираните материали.

Най -дебелите частици, около 5 μm, се филтрират чрез съвместното действие на ресничките на носния проход и лигавицата, която покрива носната кухина и трахеята. Частици с диаметър между 0,5 и 5 μm могат да се отлагат в бронхите и дори в белодробните алвеоли, но те се елиминират от ресничките на бронхите и бронхиолите след няколко часа. Частици, по -малки от 0,5 μm, могат да проникнат дълбоко, докато не се отложат в белодробните алвеоли, оставайки от седмици до години, тъй като няма мукоцилиарен транспортен механизъм, който да улеснява елиминирането. Следващата фигура показва проникването на частиците в дихателната система в зависимост от техния размер.

Така че, за да забележите и двата вида частици (PM2.5 и PM10) са много важни и добрата новина е, че и двата се четат от прост и не скъп сензор, SDS011.

Стъпка 3: Сензор за частици - SDS011

Сензорът за частици - SDS011
Сензорът за частици - SDS011
Сензорът за частици - SDS011
Сензорът за частици - SDS011

Мониторингът на качеството на въздуха е добре позната и утвърдена наука, която започна още през 80 -те години. По това време технологията беше доста ограничена и решението, използвано за количествено определяне на комплекса за замърсяване на въздуха, тромаво и наистина скъпо.

За щастие, в днешно време, с най -новите и модерни технологии, решенията, използвани за мониторинг на качеството на въздуха, стават не само по -прецизни, но и по -бързи при измерването. Устройствата стават все по -малки и струват много по -достъпни от всякога.

В тази статия ще се съсредоточим върху сензор за частици, който може да открие количеството прах във въздуха. Докато първото поколение просто успя да открие размера на непрозрачността, най-новите сензори като SDS011 от INOVAFIT, отделяне от Университета на Дзинан (в Шандонг), вече могат да открият PM2.5 и PM10.

Със своя размер, SDS011 е може би един от най -добрите сензори по отношение на точност и цена (по -малко от 40,00 USD).

  • Измерени стойности: PM2.5, PM10
  • Обхват: 0–999,9 μg /m³
  • Захранващо напрежение: 5V (4.7–5.3V)
  • Консумация на енергия (работа): 70mA ± 10mA
  • Консумация на енергия (лазер и вентилатор в режим на заспиване): <4mA
  • Температура на съхранение: -20 до +60C
  • Работна температура: -10 до +50C
  • Влажност (съхранение): Макс. 90%
  • Влажност (работа): Макс. 70% (кондензация на водни пари фалшифицира показанията)
  • Точност: 70% за 0.3μm и 98% за 0.5μm
  • Размер: 71x70x23 мм
  • Сертифициране: CE, FCC, RoHS

SD011 използва печатната платка като една страна на корпуса, което позволява да се намалят разходите му. Рецепторният диод е монтиран от страната на печатната платка (това е задължително, тъй като трябва да се избягва всякакъв шум между диода и LNA). Излъчващият лазер е монтиран върху пластмасовата кутия и свързан към печатната платка чрез гъвкав проводник.

Накратко, Nova Fitness SDS011 е професионален лазерен сензор за прах. Вентилаторът, монтиран на сензора, автоматично засмуква въздуха. Сензорът използва лазерен принцип на разсейване на светлината* за измерване на стойността на праховите частици, окачени във въздуха. Сензорът осигурява висока точност и надеждно отчитане на стойностите PM2.5 и PM10. Всяка промяна в околната среда може да се наблюдава почти мигновено кратко време за реакция под 10 секунди. Сензорът в стандартен режим отчита отчитане с интервал от 1 секунда.

* Принцип на лазерно разсейване: Разсейването на светлината може да бъде предизвикано, когато частиците преминат през зоната за откриване. Разсеяната светлина се трансформира в електрически сигнали и тези сигнали ще бъдат усилени и обработени. Броят и диаметърът на частиците могат да бъдат получени чрез анализ, тъй като сигналната форма на сигнала има определени отношения с диаметъра на частиците.

Стъпка 4: Но как SDS011 може да улавя тези частици?

Но как SDS011 може да улавя тези частици?
Но как SDS011 може да улавя тези частици?
Но как SDS011 може да улавя тези частици?
Но как SDS011 може да улавя тези частици?

Както беше коментирано по -горе, принципът, използван от SDS011, е разсейване на светлината или по -добре, динамично разсейване на светлината (DLS), което е техника във физиката, която може да се използва за определяне на профила на разпределение на размера на малки частици в суспензия или полимери в разтвор. В обхвата на DLS временните флуктуации обикновено се анализират с помощта на функцията за интензивност или фотонна автокорелация (известна също като фотонна корелационна спектроскопия или квази-еластично разсейване на светлината). При анализа на времевата област функцията за автокорелация (ACF) обикновено се разпада, започвайки от нулево време на закъснение, а по -бързата динамика поради по -малки частици води до по -бърза декорелация на следата с разсеяна интензивност. Доказано е, че интензитетът ACF е преобразуването на Фурие на спектъра на мощността и следователно измерванията на DLS могат да се извършват еднакво добре в спектралната област.

Над хипотетично динамично разсейване на светлината на две проби: по -големи частици (като PM10) отгоре и по -малки частици (като PM2.5) отдолу. И като погледнем вътре в нашия сензор, можем да видим как се прилага принципът на разсейване на светлината.

Електрическият сигнал, уловен на диода, отива към усилвателя с нисък шум и от него да се преобразува в цифров сигнал чрез ADC и навън чрез UART.

За да научите повече за SDS011 за истински научен опит, моля, разгледайте работата на Konstantinos et al от 2018 г., Развитие и тестване на място на евтина преносима система за мониторинг на концентрациите на PM2.5.

Стъпка 5: Време за шоу

Време за шоу!
Време за шоу!
Време за шоу!
Време за шоу!

Нека да направим почивка върху цялата тази теория и да се съсредоточим върху това как да измерваме частиците с помощта на Raspberry Pi и сензора SDS011

Връзката HW всъщност е много проста. Сензорът се продава с USB адаптер за свързване на изходните данни от неговия 7 пинов UART с един от стандартните USB конектори на RPi.

Извод на SDS011:

  • Пин 1 - не е свързан
  • Щифт 2 - PM2.5: 0–999μg/m³; ШИМ изход
  • Извод 3–5V
  • Щифт 4 - PM10: 0–999 μg/m³; ШИМ изход
  • ПИН 5 - GND
  • Pin 6 - RX UART (TTL) 3.3V
  • Pin 7 - TX UART (TTL) 3.3V

За този урок използвам за първи път чисто нов Raspberry-Pi 4. Но разбира се, всеки предишен модел също ще работи добре.

Щом свържете сензора към един от RPi USB портовете, автоматично ще започнете да слушате звука на неговия вентилатор. Шумът е малко досаден, така че може би трябва да го изключите и да изчакате, докато всичко е настроено с SW.

Комуникацията между сензора и RPi ще се осъществява чрез сериен протокол. Подробности за този протокол можете да намерите тук: Протокол за управление на лазерен сензор за прах V1.3. Но за този проект най -добре е да използвате интерфейс на python, за да опростите кода, който ще бъде разработен. Можете да създадете свой собствен интерфейс или да използвате някой, който е достъпен в интернет, като този на Frank Heuer или Ivan Kalchev. Ще използваме последния, който е много прост и работи добре (можете да изтеглите скрипта sds011.py от неговия GitHub или моя).

Файлът sds011.py трябва да е в същата директория, в която създавате скрипта си.

По време на фазата на разработка ще използвам Jupyter Notebook, но можете да използвате всяка IDE, която харесвате (Thonny или Geany например, които са част от пакета Raspberry Pi Debian и двете са много добри).

Започнете да импортирате sds011 и да създадете своя екземпляр на сензора. SDS011 предоставя метод за четене от сензора с помощта на UART.

от sds011 внос *

сензор = SDS011 ("/dev/ttyUSB0")

Можете да включите или изключите сензора си с командата sleep:

pmt_2_5, pmt_10 = sensor.query ()

Изчакайте най -малко 10 секунди за стабилизиране преди измерванията и поне 2 секунди, за да започнете нова (вижте кода по -горе).

И това е всичко, което трябва да знаете по отношение на SW, за да използвате сензора. Но нека преминем по -задълбочено към контрола на качеството на въздуха! В началото на тази статия, ако сте проучили сайтовете, които дават информация за това колко добър или лош е въздухът, трябва да осъзнаете, че цветовете са свързани с тези стойности. Всеки цвят е индекс. Най -известният от тях е AQI (индекс на качеството на въздуха), използван в САЩ и няколко други страни.

Стъпка 6: Индекс на качеството на въздуха - AQI

Индекс на качеството на въздуха - AQI
Индекс на качеството на въздуха - AQI
Индекс на качеството на въздуха - AQI
Индекс на качеството на въздуха - AQI
Индекс на качеството на въздуха - AQI
Индекс на качеството на въздуха - AQI

AQI е индекс за отчитане на дневното качество на въздуха. Той ви казва колко чист или замърсен е вашият въздух и какви свързани с това ефекти върху здравето могат да ви притеснят. AQI се фокусира върху ефектите върху здравето, които може да почувствате в рамките на няколко часа или дни след вдишване на замърсен въздух.

EPA (Агенцията за опазване на околната среда на САЩ) например изчислява AQI не само за замърсяване с частици (PM2.5 и PM10), но и за другите основни замърсители на въздуха, регулирани от Закона за чистия въздух: приземен озон, въглероден окис, серен диоксид и азотен диоксид. За всеки от тези замърсители EPA е установила национални стандарти за качество на въздуха за защита на общественото здраве. Вижте горната снимка със свързани стойности, цветове и здравно съобщение за AQI.

Както беше коментирано по -рано, тези стойности и цветове на AQI са свързани с всеки един от замърсителите, но как да свържем стойностите, генерирани от сензорите с тях? Допълнителна таблица ги свързва, както е показано по -горе.

Но, разбира се, няма смисъл да се използва такава таблица. В крайна сметка това е прост математически алгоритъм, който прави изчислението. За целта ще импортираме библиотеката, за да конвертираме между стойността на AQI и концентрацията на замърсители (µg/m³): python-aqi.

Инсталирайте библиотеката с помощта на PIP и направете тест (вижте кода по -горе)

pip install python-aqi

А какво ще кажете за Чили?

В Чили се използва подобен индекс, ICAP: Индекс на качеството на въздуха за дишащи частици. Върховен указ 59 от 16 март 1998 г. на Генералния секретар на Министерството на Президентството на Републиката установява в своя член 1, буква ж), че нивата, които определят ICA за дишащи частици, ICAP.

Стойностите ще варират линейно между отделните участъци, стойността 500 ще съответства на граничната стойност, над която би имало риск за населението при излагане на тези концентрации. Според стойностите на ICAP са установени категории, които определят нивата на концентрация на МР10, на които хората са били изложени.

Стъпка 7: Регистриране на данни локално

Регистриране на данни локално
Регистриране на данни локално
Регистриране на данни локално
Регистриране на данни локално
Регистриране на данни локално
Регистриране на данни локално

На този етап имаме всички инструменти за улавяне на данни от сензора и също така да ги преобразуваме за по -„четима стойност“, че това е индексът AQI.

Нека създадем функция за улавяне на тези стойности. Ще уловим 3 стойности последователно, като вземем средното сред тях:

def get_data (n = 3):

sensor.sleep (sleep = False) pmt_2_5 = 0 pmt_10 = 0 time.sleep (10) за i в обхват (n): x = sensor.query () pmt_2_5 = pmt_2_5 + x [0] pmt_10 = pmt_10 + x [1] time.sleep (2) pmt_2_5 = кръг (pmt_2_5/n, 1) pmt_10 = кръг (pmt_10/n, 1) сензор.sleep (сън = вярно) time.sleep (2) връщане pmt_2_5, pmt_10 По -горе можете да видите резултата от теста. Нека също така направим функция за преобразуване на числовите стойности на PM в AQI индекс

def conv_aqi (pmt_2_5, pmt_10):

aqi_2_5 = aqi.to_iaqi (aqi. POLLUTANT_PM25, str (pmt_2_5)) aqi_10 = aqi.to_iaqi (aqi. POLLUTANT_PM10, str (pmt_10)) връщане aqi_2_5, aqi_10 над резултата от тест с двете функции. Но какво да правим с тях? Най -простият отговор е да създадете функция за запазване на заснетите данни, като ги запишете в локален файл

def save_log ():

с отворен ("ВАШИЯТ ПЪТ ТУК/air_quality.csv", "a") като log: dt = datetime.now () log.write ("{}, {}, {}, {}, {} n". формат (dt, pmt_2_5, aqi_2_5, pmt_10, aqi_10)) log.close () С един цикъл можете да регистрирате данни на редовни бази във вашия локален файл, например всяка минута

while (Вярно):

pmt_2_5, pmt_10 = get_data () aqi_2_5, aqi_10 = conv_aqi (pmt_2_5, pmt_10) try: save_log () с изключение на: print ("[INFO] Грешка при регистриране на данни") time.sleep (60) На всеки 60 секунди времевата отметка плюс данните ще се „добавят“към този файл, както можем да видим по -горе.

Стъпка 8: Изпращане на данни до облачна услуга

Изпращане на данни до облачна услуга
Изпращане на данни до облачна услуга

На този етап се научихме как да улавяме данни от сензора, като ги запазваме в локален CSV файл. Сега е време да видим как да изпратим тези данни до IoT платформа. В този урок ще използваме ThingSpeak.com.

„ThingSpeak е приложение с отворен код Internet of Things (IoT) за съхраняване и извличане на данни от нещата, използвайки REST и MQTT API. ThingSpeak позволява създаването на приложения за регистриране на сензори, приложения за проследяване на местоположението и социална мрежа от неща с актуализации на състоянието."

Първо, трябва да имате акаунт в ThinkSpeak.com. След това следвайте инструкциите за създаване на канал, като вземете под внимание неговия идентификатор на канал и API API ключ.

Когато създавате канала, трябва също да дефинирате каква информация ще се качва във всяко едно от 8 -те полета, както е показано по -горе (в нашия случай ще се използват само 4 от тях).

Стъпка 9: MQTT протокол и ThingSpeak връзка

MQTT протокол и ThingSpeak връзка
MQTT протокол и ThingSpeak връзка

MQTT е архитектура за публикуване/абониране, разработена предимно за свързване на честотна лента и устройства с ограничена мощност през безжични мрежи. Това е прост и лек протокол, който работи през TCP/IP сокети или WebSockets. MQTT през WebSockets може да бъде защитен със SSL. Архитектурата за публикуване/абониране позволява съобщенията да се изпращат до клиентските устройства, без устройството да се нуждае от непрекъснато анкетиране на сървъра.

Брокерът MQTT е централната точка за комуникация и отговаря за изпращането на всички съобщения между изпращачите и законните получатели. Клиент е всяко устройство, което се свързва с брокера и може да публикува или да се абонира за теми за достъп до информацията. Тема съдържа информация за маршрутизиране на брокера. Всеки клиент, който иска да изпраща съобщения, ги публикува в определена тема и всеки клиент, който иска да получава съобщения, се абонира за определена тема. Брокерът доставя всички съобщения със съответстващата тема на съответните клиенти.

ThingSpeak ™ има MQTT брокер на URL адреса mqtt.thingspeak.com и порт 1883. Брокерът ThingSpeak поддържа както MQTT публикуване, така и MQTT абониране.

В нашия случай ще използваме MQTT Publish.

Стъпка 10: Публикуване на MQTT

Публикуване на MQTT
Публикуване на MQTT

За начало, нека инсталираме клиентската библиотека на Eclipse Paho MQTT Python, която реализира версии 3.1 и 3.1.1 на протокола MQTT

sudo pip инсталирайте paho-mqtt

След това нека импортираме библиотеката paho:

импортирайте paho.mqtt.publish като публикация

и инициирайте канала Thingspeak и протокола MQTT. Този метод на свързване е най -простият и изисква най -малко системни ресурси:

channelID = "ИДЕНТЪТ НА ВАШИЯ КАНАЛ"

apiKey = "ВАШИЯТ КЛЮЧ ЗА ПИСАНЕ" topic = "канали/" + channelID + "/публикуване/" + apiKey mqttHost = "mqtt.thingspeak.com" Сега трябва да дефинираме нашия „полезен товар“

tPayload = "field1 =" + str (pmt_2_5) + "& field2 =" + str (aqi_2_5) + "& field3 =" + str (pmt_10) + "& field4 =" + str (aqi_10)

И това е! готови сме да започнем да изпращаме данни в облака! Нека пренапишем предишната циклична функция, за да включим и частта ThingSpeak от нея.

# Изпращане на всички данни до ThingSpeak на всеки 1 минута

while (Вярно): pmt_2_5, pmt_10 = get_data () aqi_2_5, aqi_10 = conv_aqi (pmt_2_5, pmt_10) tPayload = "field1 =" + str (pmt_2_5) + "& field2 =" + str (aqi_2_5) + "& field3 =" str (pmt_10) + "& field4 =" + str (aqi_10) try: published.single (topic, payload = tPayload, hostname = mqttHost, port = tPort, tls = tTLS, transport = tTransport) save_log () с изключение на: print ("[INFO] Неуспешно изпращане на данни ") time.sleep (60) Ако всичко е наред, трябва да видите, че данните също се показват в канала ви на thingspeak.com, както е показано по -горе.

Стъпка 11: Последният сценарий

Важно е да се отбележи, че Jupyter Notebook е много добър инструмент за разработка и докладване, но не и за създаване на код, който да бъде пуснат в производство. Това, което трябва да направите сега, е да вземете съответната част от кода и да създадете.py скрипт и да го стартирате на вашия терминал.

Например „ts_air_quality_logger.py“, който трябва да изпълните с командата:

python 3 ts_air_quality_logger.py

Този скрипт, както и Jupyter Notebook и sds011.py могат да бъдат намерени в моето хранилище на RPi_Air_Quality_Sensor.

Имайте предвид, че този скрипт е възможен само за тестване. Най -доброто е да не използвате закъснения във финалния цикъл (който поставя кода в "пауза"), вместо това използвайте таймери. Или за истинско приложение, най -доброто е да не използвате цикъла, като Linux е програмиран да изпълнява скрипта редовно с crontab.

Стъпка 12: Изваждане на монитора навън

Изваждане на монитора навън
Изваждане на монитора навън
Изваждане на монитора навън
Изваждане на монитора навън
Изваждане на монитора навън
Изваждане на монитора навън
Изваждане на монитора навън
Изваждане на монитора навън

След като моят монитор за качество на въздуха Raspberry Pi заработи, сглобих RPi в пластмасова кутия, като държах сензора навън и го поставих извън дома си.

Бяха направени два преживявания.

Стъпка 13: Изгаряне на бензинов двигател

Изгаряне на бензинов двигател
Изгаряне на бензинов двигател
Изгаряне на бензинов двигател
Изгаряне на бензинов двигател

Сензорът е поставен на около 1 м от газовия отвор на Lambretta и двигателят му се включва. Двигателят работи няколко минути и се изключи. От горния лог файл резултатът, който получих. Интересно е да се потвърди, че PM2.5 е най -опасната частица в резултат на двигателя.

Стъпка 14: Изгаряне на дърва

Изгаряне на дърва
Изгаряне на дърва
Изгаряне на дърва
Изгаряне на дърва

Разглеждайки регистрационния файл, осъзнаваме, че данните от сензора са били моментни „извън обхвата“и не са били уловени добре от библиотеката за преобразуване на AQI, затова променям предишния код, за да се справя с него:

def conv_aqi (pmt_2_5, pmt_10):

опитайте: aqi_2_5 = aqi.to_iaqi (aqi. POLLUTANT_PM25, str (pmt_2_5)) aqi_10 = aqi.to_iaqi (aqi. POLLUTANT_PM10, str (pmt_10)) връщане aqi_2_5, aqi_10 с изключение на: return 600, 600 Тази ситуация може да се случи на полето, което е ОК. Не забравяйте, че всъщност трябва да използвате пълзяща средна, за да получите наистина AQI (поне на час, но обикновено ежедневно).

Стъпка 15: Заключение

Заключение
Заключение

Както винаги, надявам се този проект да помогне на другите да намерят своя път във вълнуващия свят на електрониката и науката за данни!

За подробности и окончателен код, моля, посетете моя депозитар на GitHub: RPi_Air_Quality_Sensor.

Поздрави от юга на света!

Ще се видим на следващата ми инструкция!

Благодаря ти, Марсело

Препоръчано: