Оглавление:
- Шаг 1: BoM - Спецификация материалов
- Шаг 2: Установка датчика температуры и влажности
- Шаг 3: Установка DS18B20 - Датчик температуры
- Шаг 4: Установка BMP180
- Шаг 5: Измерение погоды и высоты с помощью BMP180
- Шаг 6: Полное HW
- Шаг 7. Отправка данных в ThingSpeak
- Шаг 8: Отправка удаленных данных в ThingSpeak с помощью ESP8266
- Шаг 9: Заключительные примечания
- Шаг 10: Заключение
Видео: Метеостанция Интернета вещей с RPi и ESP8266: 10 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:51
В предыдущих уроках мы играли с NodeMCU, датчиками и учились собирать и регистрировать данные на ThingSpeak (платформе Интернета вещей (IoT), которая позволяет собирать и хранить данные датчиков в облаке и разрабатывать приложения IoT):
IOT - ПРОСТОТА: УДАЛЕННЫЙ ЗАХВАТ ПОГОДНЫХ ДАННЫХ: УФ, ТЕМПЕРАТУРА И ВЛАЖНОСТЬ ВОЗДУХА
В этом новом руководстве мы узнаем, как сделать то же самое, но на этот раз, используя Raspberry Pi для сбора данных с нескольких разных датчиков, а также изучим различные способы связи между устройствами и Интернетом:
Датчики и тип соединения:
- DHT22 (Температура и влажность) ==> Цифровая связь
- BMP180 (температура и давление) ==> Протокол I2C
- DS18B20 (Температура) ==> Протокол 1-Wire
Блок-схема показывает, что мы получим в конце этого проекта:
Шаг 1: BoM - Спецификация материалов
- Raspberry Pi V3 - 32 доллара США.
- Датчик температуры и относительной влажности DHT22 - 9,95 долларов США.
- Резистор 4К7 Ом
- Водонепроницаемый датчик температуры DS18B20 - 5,95 долларов США.
- Резистор 4К7 Ом
- Датчик атмосферного давления, температуры и высоты BMP180 - 6,99 долларов США
Шаг 2: Установка датчика температуры и влажности
Первым устанавливаемым датчиком будет DHT22 для сбора данных о температуре и относительной влажности воздуха. Сайт ADAFRUIT предоставляет отличную информацию об этих датчиках. Сильфон, оттуда извлечена некоторая информация:
Обзор
Недорогие датчики температуры и влажности DHT очень простые и медленные, но отлично подходят для любителей, которые хотят выполнить базовую регистрацию данных. Датчики DHT состоят из двух частей: емкостного датчика влажности и термистора. Внутри также находится очень простой чип, который выполняет некоторое аналого-цифровое преобразование и выдает цифровой сигнал с температурой и влажностью. Цифровой сигнал довольно легко считывается с помощью любого микроконтроллера.
DHT22 Основные характеристики:
- Бюджетный
- Питание от 3 до 5 В и ввод / вывод
- Максимальный потребляемый ток 2,5 мА во время преобразования (при запросе данных)
- Подходит для показаний влажности 0-100% с точностью 2-5%
- Подходит для измерения температуры от -40 до 125 ° C с точностью ± 0,5 ° C
- Частота дискретизации не более 0,5 Гц (один раз в 2 секунды)
- Размер корпуса 15,1 мм x 25 мм x 7,7 мм
- 4 контакта с шагом 0,1 дюйма
Как только вы обычно будете использовать датчик на расстоянии менее 20 м, между выводами Data и VCC следует подключить резистор 4 К7 Ом. Выходной контакт данных DHT22 будет подключен к Raspberry GPIO 16. Проверьте электрическую схему выше, подключив датчик к контактам RPi, как показано ниже:
- Контакт 1 - Vcc ==> 3,3 В
- Контакт 2 - Данные ==> GPIO 16
- Контакт 3 - не подключается
- Контакт 4 - Gnd ==> Gnd
Не забудьте установить резистор 4K7 Ом между выводами Vcc и Data.
После подключения датчика мы также должны установить его библиотеку на наш RPi.
Установка библиотеки DHT:
На вашем Raspberry, начиная с / home, перейдите в / Documents
cd документы
Создайте каталог для установки библиотеки и перейдите туда:
mkdir DHT22_Sensor
cd DHT22_Sensor
В браузере перейдите на Adafruit GitHub:
github.com/adafruit/Adafruit_Python_DHT
Загрузите библиотеку, щелкнув ссылку загрузки zip справа, и распакуйте архив в недавно созданной папке Raspberry Pi. Затем перейдите в каталог библиотеки (подпапка, которая автоматически создается при распаковке файла) и выполните команду:
sudo python3 setup.py установить
Откройте тестовую программу (DHT22_test.py) с моего GITHUB
импортировать Adafruit_DHT
DHT22Sensor = Adafruit_DHT. DHT22 DHTpin = 16 влажность, температура = Adafruit_DHT.read_retry (DHT22Sensor, DHTpin), если влажность не None и температура не None: print ('Temp = {0: 0.1f} * C Влажность = {1: 0.1 f}% '. format (температура, влажность)) else: print (' Не удалось получить чтение. Повторите попытку! ')
Запустите программу командой:
python3 DHT22_test.py
На приведенном ниже экране печати терминала показан результат.
Шаг 3: Установка DS18B20 - Датчик температуры
Обзор датчика:
В этом руководстве мы будем использовать водонепроницаемую версию датчика DS18B20. Это очень полезно для удаленных температур во влажных условиях, например, на влажной почве. Датчик изолирован и может проводить измерения до 125 ° C (Adafrut не рекомендует использовать его при температуре выше 100 ° C из-за ПВХ-оболочки кабеля).
DS18B20 - это цифровой датчик, который позволяет использовать его даже на больших расстояниях! Эти однопроводные цифровые датчики температуры достаточно точны (± 0,5 ° C в большей части диапазона) и могут дать до 12 бит точности от встроенного цифро-аналогового преобразователя. Они отлично работают с NodeMCU, используя один цифровой вывод, и вы даже можете подключить несколько к одному выводу, каждый из них имеет уникальный 64-битный идентификатор, записанный на заводе, чтобы различать их.
Датчик работает от 3,0 до 5,0 В, что означает, что он может питаться напрямую от 3,3 В, обеспечиваемого одним из контактов Raspberry (1 или 17).
Датчик имеет 3 провода:
- Черный: GND
- Красный: VCC
- Желтый: данные 1-Wire
Здесь вы можете найти полные данные: DS18B20 Datasheet
Установка датчика:
Следуйте приведенной выше схеме и выполните подключения:
- Vcc ==> 3,3 В
- Земля ==> Земля
- Данные ==> GPIO 4 (по умолчанию для библиотеки)
Установка библиотеки Python:
Затем давайте установим библиотеку Python, которая будет обрабатывать датчик:
sudo pip3 установить w1thermsensor
Перед запуском сценария для проверки датчика проверьте, включен ли интерфейс «1-Wire» в вашем RPi (см. Экран печати выше).
Не забудьте перезагрузить RPi после изменения его конфигурации.
Тестирование датчика:
Для тестирования датчика можно использовать простой скрипт на Python:
время импорта
from w1thermsensor import W1ThermSensor ds18b20Sensor = W1ThermSensor () while True: temperature = ds18b20Sensor.get_temperature () print ("Температура% s по Цельсию"% temperature) time.sleep (1)
Шаг 4: Установка BMP180
Обзор датчика:
BMP180 является преемником BMP085, нового поколения высокоточных цифровых датчиков давления для потребительских приложений. Электроника BMP180 со сверхнизким энергопотреблением и низким напряжением оптимизирована для использования в мобильных телефонах, КПК, устройствах GPS-навигации и уличном оборудовании. BMP180 обеспечивает превосходную производительность с низким уровнем шума, составляющим всего 0,25 м, и малым временем преобразования. Интерфейс I2C позволяет легко интегрировать систему с микроконтроллером. BMP180 основан на пьезорезистивной технологии, обеспечивающей устойчивость к электромагнитным помехам, высокую точность и линейность, а также долгосрочную стабильность.
Полную таблицу данных BMP можно найти здесь: BMP180 - Цифровой датчик давления
Установка датчика: Следуйте приведенной выше схеме и выполните подключения:
- Вин ==> 3,3 В
- GND ==> GND
- SCL ==> GPIO 3
- SDA ==> GPIO 2
Включение интерфейса I2C
Перейдите в Конфигурация RPi и убедитесь, что интерфейс I2C включен. Если нет, включите его и перезапустите RPi.
Использование BMP180
Если все было установлено нормально и все подключено нормально, теперь вы готовы включить Pi и начать смотреть, что BMP180 говорит вам об окружающем мире.
Первое, что нужно сделать, это проверить, видит ли Pi ваш BMP180. Попробуйте в окне терминала сделать следующее:
sudo i2cdetect -y 1
Если команда сработала, вы должны увидеть что-то похожее на показанный выше экран печати терминала, показывающий, что BMP180 находится на канале «77».
Установка библиотеки BMP180:
Создайте каталог для установки библиотеки:
mkdir BMP180_Sensorcd BMP180_Sensor
В своем браузере перейдите на Adafruit GITHub:
github.com/adafruit/Adafruit_Python_BMP
Загрузите библиотеку, щелкнув ссылку загрузки zip справа, и распакуйте архив в созданную вами папку Raspberry Pi. Затем перейдите в созданную подпапку и выполните следующую команду в каталоге библиотеки:
sudo python3 setup.py установить
Откройте вашу Python IDE, создайте тестовую программу и назовите ее, например, BMP180Test.py
импортировать Adafruit_BMP. BMP085 как BMP085sensor = BMP085. BMP085 () print ('Temp = {0: 0.2f} * C'.format (sensor.read_temperature ())) print (' Pressure = {0: 0.2f} Pa '. format (sensor.read_pressure ())) print ('Altitude = {0: 0.2f} m'.format (sensor.read_altitude ())) print (' Sealevel Pressure = {0: 0.2f} Pa'.format (sensor.read_sealevel_pressure ()))
Выполните тестовую программу:
python3 BMP180Test.py
На приведенном выше экране печати терминала показан результат.
Обратите внимание, что давление указано в Па (Паскалях). См. Следующий шаг, чтобы лучше понять это устройство.
Шаг 5: Измерение погоды и высоты с помощью BMP180
Давайте потратим время, чтобы понять немного больше о том, что мы получим с показаниями BMP. Вы можете пропустить эту часть учебника или вернуться позже.
Если вы хотите узнать больше о показаниях датчика, перейдите к этому замечательному руководству:
BMP180 был разработан для точного измерения атмосферного давления. Атмосферное давление зависит от погоды и высоты.
Что такое атмосферное давление?
Атмосферное давление определяется как сила, которую окружающий воздух оказывает на все. Вес газов в атмосфере создает атмосферное давление. Обычная единица давления - фунты на квадратный дюйм или фунты на квадратный дюйм. Мы будем использовать здесь международное обозначение, то есть ньютоны на квадратный метр, которые называются паскалями (Па).
Если взять шириной 1 см, столб воздуха будет весить около 1 кг.
Этот вес, давящий на опорную поверхность этой колонны, создает атмосферное давление, которое мы можем измерить с помощью датчиков, таких как BMP180. Поскольку столб воздуха шириной сантиметра весит около 1 кг, отсюда следует, что среднее давление на уровне моря составляет около 101325 паскалей, или лучше, 1013,25 гПа (1 гПа также известен как милибар - мбар). Она будет снижаться примерно на 4% на каждые 300 метров подъема. Чем выше вы подниметесь, тем меньше давление вы увидите, потому что столб в верхней части атмосферы намного короче и, следовательно, меньше весит. Это полезно знать, потому что, измерив давление и выполнив некоторые вычисления, вы можете определить свою высоту.
Давление воздуха на высоте 3810 метров - это только половина от давления на уровне моря.
BMP180 выдает абсолютное давление в паскалях (Па). Один паскаль - это очень небольшое давление, примерно такое же, как лист бумаги, лежащий на столе. Вы будете чаще видеть измерения в гектопаскалях (1 гПа = 100 Па). Используемая здесь библиотека предоставляет выходные значения с плавающей запятой в гПа, что также составляет один миллибар (мбар).
Вот некоторые преобразования в другие единицы давления:
- 1 гПа = 100 Па = 1 мбар = 0,001 бар
- 1 гПа = 0,75006168 торр
- 1 гПа = 0,01450377 фунтов на квадратный дюйм (фунта на квадратный дюйм)
- 1 гПа = 0,02953337 дюймов ртутного столба (дюймы ртутного столба)
- 1 гПа = 0,00098692 атм (стандартные атмосферы)
Температурные эффекты
Поскольку температура влияет на плотность газа, а плотность влияет на массу газа, а масса влияет на давление (фу), атмосферное давление будет резко меняться с температурой. Пилоты знают это как «плотную высоту», что позволяет легче взлетать в холодный день, чем в жаркий, потому что воздух более плотный и имеет больший аэродинамический эффект. Для компенсации температуры BMP180 включает в себя довольно неплохой датчик температуры, а также датчик давления.
Чтобы измерить давление, вы сначала снимаете показания температуры, а затем объединяете их с необработанными показаниями давления, чтобы получить окончательное измерение давления с температурной компенсацией. (Библиотека упрощает все это.)
Измерение абсолютного давления
Если ваше приложение требует измерения абсолютного давления, все, что вам нужно сделать, это получить показание температуры, а затем выполнить измерение давления (подробности см. В примере эскиза). Окончательное значение давления будет в гПа = мбар. При желании вы можете преобразовать это значение в другую единицу, используя указанные выше коэффициенты пересчета.
Обратите внимание, что абсолютное давление атмосферы будет зависеть как от вашей высоты, так и от текущих погодных условий, и то и другое полезно измерить.
Наблюдения за погодой
Атмосферное давление в любом месте на Земле (или в любом другом месте с атмосферой) непостоянно. Сложное взаимодействие между вращением Земли, наклоном оси и многими другими факторами приводит к перемещению областей с более высоким и низким давлением, что, в свою очередь, вызывает изменения погоды, которые мы наблюдаем каждый день. Наблюдая за изменениями давления, вы можете прогнозировать краткосрочные изменения погоды. Например, падение давления обычно означает, что влажная погода или приближается шторм (входит система низкого давления). Повышение давления обычно означает приближение ясной погоды (проходит система высокого давления). Но помните, что атмосферное давление также зависит от высоты. Абсолютное давление в моем доме, Ло Барнечеа в Чили (высота 950 м), всегда будет ниже, чем, например, абсолютное давление в Сан-Франциско (менее 2 метров, почти на уровне моря). Если бы метеостанции просто сообщали об их абсолютном давлении, было бы трудно напрямую сравнивать измерения давления из одного места в другое (а крупномасштабные прогнозы погоды зависят от измерений с максимально возможного количества станций).
Чтобы решить эту проблему, метеостанции всегда удаляют влияние высоты из своих сообщаемых показаний давления, математически добавляя эквивалентное фиксированное давление, чтобы оно выглядело так, как если бы показания были сняты на уровне моря. Когда вы это сделаете, более высокие значения в Сан-Франциско, чем в Ло Барнечеа, всегда будут из-за погодных условий, а не из-за высоты.
Для этого в библиотеке есть функция, называемая уровнем моря (P, A). При этом измеряется абсолютное давление (P) в гПа и текущая высота станции (A) в метрах и устраняется влияние высоты на давление. Вы можете использовать выходные данные этой функции, чтобы напрямую сравнивать ваши показания погоды с показаниями других станций по всему миру.
Определение высоты
Поскольку давление зависит от высоты, вы можете использовать датчик давления для измерения высоты (с некоторыми оговорками). Среднее давление атмосферы на уровне моря составляет 1013,25 гПа (или мбар). Это падает до нуля, когда вы поднимаетесь в вакуум космоса. Поскольку кривая этого падения хорошо изучена, вы можете вычислить разницу высот между двумя измерениями давления (p и p0) с помощью специального уравнения.
Если вы используете давление на уровне моря (1013,25 гПа) в качестве базового давления (p0), выходом уравнения будет ваша текущая высота над уровнем моря. В библиотеке есть функция под названием altitude (P, P0), которая позволяет вам получить "вычисленную высоту".
Приведенное выше объяснение было взято из учебника BMP 180 Sparkfun.
Шаг 6: Полное HW
Шаг 7. Отправка данных в ThingSpeak
На этом этапе мы узнали, как подготовить RPi для сбора данных со всех 3 датчиков и их печати на терминале. Теперь пора посмотреть, как отправить эти данные на платформу IoT, ThingSpeak.
Давай начнем!
Во-первых, у вас должна быть учетная запись на ThinkSpeak.com.
Следуйте инструкциям по созданию канала и запишите свой идентификатор канала и ключ API записи.
Загрузите скрипт Python с моего GitHub: localData ToTS_v1_EXT.py
Прокомментируем наиболее важные части кода:
Во-первых, давайте импортируем библиотеку ThingSpeak, определим клиента WiFi и определим ваш локальный маршрутизатор и учетные данные Thinkspeak:
импортные вещи
Существует несколько способов связи с ThingSpeak, самый простой способ - использовать клиентскую библиотеку для API thingspeak.com, разработанную Миколаем Чвализом и Китом Эллисом.
Библиотеку можно загрузить с https://github.com/mchwalisz/thingspeak или использовать PIP на терминале:
sudo pip3 установить thingspeak
Затем внутри скрипта обновите учетные данные канала ThingSpeak.
chId = 9999999 # Введите свой идентификатор канала
tsKey = 'ВВОДИТЕ С КЛЮЧОМ ДЛЯ ЗАПИСИ КАНАЛА' tsUrl = 'https://api.thingspeak.com/update' ts = thingspeak. Channel (chId, tsUrl, tsKey)
Теперь давайте инициализируем 3 датчика:
# DS18B20 Библиотека 1-Wire
from w1thermsensor import W1ThermSensor ds18b20Sensor = W1ThermSensor () # По умолчанию GPIO 4 используется библиотекой # DHT22 Импорт библиотеки Adafruit_DHT DHT22Sensor = Adafruit_DHT. DHT22 DHTpin = 16 # Импорт библиотеки BMP180 Adafruit_BMP0BMP085. Вы должны определить реальную высоту, на которой расположена ваша метеостанция, обновив глобальную переменную altReal. В моем случае моя Станция расположена на высоте 950 м над уровнем моря.
глобальный altReal
altReal = 950
После ввода реальной высоты станции в качестве входных данных мы можем получить абсолютное давление, давление на уровне моря, температуру и высоту, используя функцию bmp180GetData (altitude):
def bmp180GetData (высота):
temp = bmp180Sensor.read_tempera () pres = bmp180Sensor.read_pressure () alt=bmp180Sensor.read_altitude () presSeaLevel = pres / pow (1.0 - высота / 44330.0, 5.255) temp = round (temp, 1) pres = round (pres / 100, 2) # абсолютное давление в гПа (или мбар) alt=round (alt) presSeaLevel = round (presSeaLevel / 100, 2) # абсолютное давление в гПа (или мбар) обратная температура, pres, alt, presSeaLevel
Функция getLocalData () вернет все локальные данные, захваченные нашей станцией:
def getLocalData ():
global timeString global humLab global tempExt global tempLab global presSL global altLab global presAbs # Получить время чтения сейчас = datetime.datetime.now () timeString = now.strftime ("% Y-% m-% d% H:% M") # Чтение наружной температуры (расстояние 1 метр) tempExt = round (ds18b20Sensor.get_tempera (), 1) tempLab, presAbs, altLab, presSL = bmp180GetData (altReal) humDHT, tempDHT = Adafruit_DHT.read_retry (DHHT22Sensor if Nump, DTpin is not is) и tempDHT не равно None: humLab = round (humDHT
После того, как вы соберете все данные с помощью вышеуказанных функций, вы должны отправить их в ThingSpeak. Вы сделаете это с помощью функции sendDataTs ():
def sendDataTs ():
data = {"field1": tempLab, "field2": tempExt, "field3": humLab, "field4": presSL, "field5": altLab} ts.update (data) print ("[INFO] Данные отправлены для 5 полей: ", tempLab, tempExt, humLab, presSL, altLab)
После обновления данных вашего канала сохраните скрипт и выполните его на своем терминале:
sudo Python3 localData_ToTs_v1_EXT.py
О протоколах связи
Обратите внимание, что при использовании «библиотеки thingspeak» импортируется «библиотека запросов», то есть лицензированная HTTP-библиотека Apache2, написанная на Python. Официальную документацию по установке запроса можно найти здесь:
docs.python-requests.org/en/latest/user/install/
При необходимости перед запуском скрипта вы можете проверить, установлена ли библиотека запросов:
запросы на установку sudo pip3
При желании вы можете использовать MTTQ как метод для отправки данных в ThingSpeak. MQTT отличается от HTTP, поскольку он специально разработан как легкий и предназначен для встраиваемых устройств с низкой производительностью ОЗУ и ЦП. Кроме того, в большинстве случаев MQTT использует меньшую полосу пропускания.
Обратитесь к этому руководству: обновите канал ThingSpeak с помощью MQTT на Raspberry Pi для получения дополнительных сведений.
Шаг 8: Отправка удаленных данных в ThingSpeak с помощью ESP8266
Для этого шага мы будем использовать то же HW, которое было объяснено в уроке muy:
IOT - ПРОСТОТА: УДАЛЕННЫЙ ЗАХВАТ ПОГОДНЫХ ДАННЫХ: УФ, ТЕМПЕРАТУРА И ВЛАЖНОСТЬ ВОЗДУХА
Код, который мы будем использовать здесь, в основном тот же, что и в этом руководстве. Прокомментируем наиболее важные части кода:
Сначала вызовем библиотеку ESP8266, определим клиента WiFi и определим свой локальный маршрутизатор и учетные данные Thinkspeak:
/ * NodeMCU ESP12-E * /
# включить клиент WiFiClient; const char * MY_SSID = "ВВЕДИТЕ СВОЙ SSDID"; const char * MY_PWD = "ВВЕДИТЕ ПАРОЛЬ"; / * Thinkspeak * / const char * TS_SERVER = "api.thingspeak.com"; Строка TS_API_KEY = "ВОЙТИ С ВАШИМ КЛЮЧОМ ДЛЯ ЗАПИСИ";
Во-вторых, давайте включим очень важную библиотеку для проектов IoT: SimpleTimer.h:
/ * ТАЙМЕР * /
#include SimpleTimer timer;
В-третьих, во время setup () мы инициируем последовательную связь, вызовем функцию connectWiFi () и определим таймеры. Обратите внимание, что строка кода: timer.setInterval (60000L, sendDataTS); будет вызывать функцию sendDataTS () каждые 60 секунд для загрузки данных в канал ThinkSpeak.
установка void ()
{… Serial.begin (115200); задержка (10); … ConnectWifi (); timer.setInterval (60000L, sendDataTS); …}
Наконец, что не менее важно, во время цикла loop () единственная необходимая команда - запустить таймер, и все!
пустой цикл ()
{… Timer.run (); // Запускает SimpleTimer}
Ниже вы можете увидеть две важные функции, используемые для взаимодействия с Thinkspeak:
Подключение ESP12-E к вашей сети Wi-Fi:
/***************************************************
* Подключение WiFi ********************************************* *** / void connectWifi () {Serial.print ("Подключение к" + * MY_SSID); WiFi.begin (MY_SSID, MY_PWD); в то время как (WiFi.status ()! = WL_CONNECTED) {задержка (1000); Serial.print ("."); } Serial.println (""); Serial.println («WiFi подключен»); Serial.println (""); }
ESP12-E отправляет данные в ThinkSpeak:
***************************************************
* Отправка данных на канал Thinkspeak. ******************************************* ****** / void sendDataTS (void) {if (client.connect (TS_SERVER, 80)) {String postStr = TS_API_KEY; postStr + = "& field6 ="; postStr + = Строка (темп); postStr + = "& field7 ="; postStr + = String (гул); postStr + = "& field8 ="; postStr + = Строка (dataSensorUV); postStr + = "\ г / п / г / п"; client.print ("POST / обновить HTTP / 1.1 / n"); client.print ("Хост: api.thingspeak.com / n"); client.print ("Соединение: закрыть / n"); client.print ("X-THINGSPEAKAPIKEY:" + TS_API_KEY + "\ n"); client.print ("Content-Type: application / x-www-form-urlencoded / n"); client.print ("Длина содержимого:"); client.print (postStr.length ()); client.print ("\ n / n"); client.print (postStr); задержка (1000); } отправлено ++; client.stop (); }
Полный код можно найти на моем GitHub: NodeMCU_UV_DHT_Sensor_OLED_TS_EXT
После того, как вы загрузите код в свой NodeMCU. Давайте подключим внешнюю батарею и проведем измерения на солнце. Я поставил удаленную станцию на крышу и начал собирать данные на ThingSpeak.com, как показано на фотографиях выше.
Шаг 9: Заключительные примечания
Основной целью этого руководства было показать, как подключить Raspberry Pi к ThingSpeak. Это замечательно для сбора данных и их регистрации на платформе IoT.
Воспользовавшись этой возможностью, мы также отправили данные на этот конкретный канал, захватив их с удаленной станции с помощью ESP8266. Это подходящий подход, но не лучший. Поскольку у нас есть «асинхронная» операция, иногда и RPi, и ESP8266 пытаются зарегистрировать одновременно (или с небольшим интервалом) то, что опровергается ThingSpeak. В идеале ESP8266 отправляет данные локально в Raspberry Pi, а последний отвечает за обработку всех данных. При этом «Главная станция» (Raspberry Pi) могла делать 3 вещи:
- Записывать все данные в локальную базу данных
- Представьте все данные на локальной веб-странице (используя Flask, как показано на фото выше)
- Отправка всех данных в ThingSpeak одновременно.
В следующем уроке мы рассмотрим эти варианты.
Шаг 10: Заключение
Как всегда, я надеюсь, что этот проект поможет другим найти свой путь в захватывающий мир электроники!
Для получения подробной информации и окончательного кода посетите мой депозитарий GitHub: RPi-NodeMCU-Weather-Station
Чтобы узнать больше о проектах, посетите мой блог: MJRoBot.org
Будьте на связи! В следующем уроке мы отправим данные с удаленной метеостанции на центральную на основе веб-сервера Raspberry Pi:
Салудо с юга мира!
Увидимся в моем следующем инструктаже!
Спасибо, Марсело
Рекомендуемые:
Система интеллектуальной парковки на основе Интернета вещей с использованием NodeMCU ESP8266: 5 шагов
Система интеллектуальной парковки на основе Интернета вещей с использованием NodeMCU ESP8266: в настоящее время найти парковку в оживленных местах очень сложно, и нет системы, чтобы получить подробную информацию о наличии парковки в Интернете. Представьте себе, что вы можете получить информацию о наличии парковочных мест на своем телефоне, и у вас нет роуминга, чтобы проверить их
Метеостанция Интернета вещей с мониторингом летучих органических соединений: 6 шагов
Метеостанция Интернета вещей с мониторингом летучих органических соединений: в этой инструкции я покажу, как построить метеостанцию Интернета вещей (IoT) с мониторингом летучих органических соединений (ЛОС). Для этого проекта я разработал набор «Сделай сам». Аппаратное и программное обеспечение с открытым исходным кодом
Основы Интернета вещей: подключение Интернета вещей к облаку с помощью ОС Mongoose: 5 шагов
Основы IoT: подключение вашего IoT к облаку с помощью Mongoose OS: если вы человек, который занимается мастерингом и электроникой, чаще всего вы встретите термин Интернет вещей, обычно сокращенно IoT, и что он относится к набору устройств, которые могут подключаться к Интернету! Быть таким человеком
Другая метеостанция Интернета вещей: 8 шагов
Еще одна метеостанция Интернета вещей: это был подарок на день рождения моему папе; Вдохновленный другим учебником, который я видел и изначально намеревался доказать ему, что это комплект для самостоятельной сборки. Однако, начав вместе с ним работать над этим проектом, я очень быстро понял, что первоначальный т
Метеостанция Интернета вещей с использованием приложения Blynk: 5 шагов
Метеостанция IoT с использованием приложения Blynk: этот проект связан с начальными шагами в мире IoT, здесь мы будем связывать датчик DHT11 / DHT22 с NodeMCU или другой платой на основе ESP8266 и получать данные в Интернете, которые мы собираемся использовать приложение Blynk, используйте следующий учебник ссылка, если вы