Оглавление:
- Шаг 1. Настройка учетной записи AWS
- Шаг 2: Технические характеристики оборудования и программного обеспечения
- Шаг 3. Беспроводные датчики вибрации и температуры
- Шаг 4. Прошивка ESP32 AWS
- Шаг 5: Получение данных датчика от беспроводного датчика вибрации и температуры
- Шаг 6. Подключение к AWS
- Шаг 7. Визуализация данных в AWS
- Шаг 8: Общий код
Видео: Начало работы с AWS IoT с беспроводным датчиком температуры с использованием MQTT: 8 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:52
В предыдущих инструкциях мы прошли через различные облачные платформы, такие как Azure, Ubidots, ThingSpeak, Losant и т. Д. Мы использовали протокол MQTT для отправки данных датчиков в облако почти на всех облачных платформах. Для получения дополнительной информации о MQTT, его преимуществах и преимуществах по сравнению с протоколом HTTP вы можете обратиться к этому руководству.
В этом руководстве мы рассмотрим еще одну и наиболее знакомую облачную платформу Amazon Web Services. Многие из вас могут быть знакомы с AWS, также известным как Amazon Web Services, и облачными функциями, предоставляемыми AWS. Он был основой веб-разработки на протяжении многих лет. С ростом масштабов приложений Интернета вещей AWS предложила решение AWSIoT. AWSIoT - надежное решение для размещения наших приложений IoT.
Следуя этой инструкции:
- Вы сможете настроить учетную запись AWS для своего IoT-приложения.
- Вы сможете подключить ESP32 к ядру AWS IoT.
- Отправлять и получать сообщения с использованием протокола MQTT и
- Визуализируйте отправленные данные в AWS
Шаг 1. Настройка учетной записи AWS
Настроить учетную запись AWS довольно просто. Вам просто нужно загрузить пару сертификатов, прикрепить к нему политики, зарегистрировать устройство и начать получать сообщения с данными датчика в AWS.
Чтобы настроить учетную запись AWS, следуйте этому руководству.
Шаг 2: Технические характеристики оборудования и программного обеспечения
Спецификация программного обеспечения
Аккаунт AWS
Спецификация оборудования
- ESP32
- Беспроводной датчик температуры и вибрации
- Приемник Zigmo Gateway
Шаг 3. Беспроводные датчики вибрации и температуры
Это промышленный беспроводной датчик вибрации и температуры для Интернета вещей с большим радиусом действия, обеспечивающий дальность действия до 2 миль с использованием архитектуры беспроводной ячеистой сети. Этот датчик, оснащенный 16-битным датчиком вибрации и температуры, передает высокоточные данные о вибрации через определенные пользователем интервалы. Он имеет следующие особенности:
- Промышленный 3-осевой датчик вибрации с диапазоном ± 32 г
- Вычисляет RMS, MAX и MIN g вибрации
- Удаление шума с помощью фильтра нижних частот
- Частотный диапазон (полоса пропускания) до 12, 800 Гц
- Частота дискретизации до 25, 600 Гц
- Зашифрованная связь с 2-мильным диапазоном беспроводной связи
- Диапазон рабочих температур от -40 до +85 ° C
- Настенный или магнитный корпус с классом защиты IP65 Пример программного обеспечения для Visual Studio и LabVIEW
- Датчик вибрации с опцией внешнего датчика
- До 500000 передач от 4 батареек AA Доступно множество вариантов шлюза и модема
Шаг 4. Прошивка ESP32 AWS
Чтобы подключиться к AWS и начать отправку данных, выполните следующие действия.
- Загрузите библиотеку AWS из следующего репозитория Github
- клонируйте репо и поместите файл AWS_IOT в папку библиотеки в каталоге Arduino
git clone
Теперь пройдемся по коду:
- В этом приложении мы использовали захватывающий портал для сохранения учетных данных WiFi и для наведения курсора на настройки IP. Для подробного ознакомления с адаптивным порталом вы можете ознакомиться со следующими инструкциями.
- Адаптивный портал дает нам возможность выбирать между статическими настройками и настройками DHCP. Просто введите учетные данные, такие как статический IP-адрес, маска подсети, шлюз, и шлюз беспроводного датчика будет настроен на этом IP-адресе.
- Размещается веб-страница, на которой отображается список доступных сетей Wi-Fi и RSSI. Выберите сеть Wi-Fi и пароль и введите "Отправить". Учетные данные будут сохранены в EEPROM, а настройки IP будут сохранены в SPIFFS. Подробнее об этом можно прочитать в этой инструкции.
Шаг 5: Получение данных датчика от беспроводного датчика вибрации и температуры
Мы получаем 54-байтовый фрейм от беспроводных датчиков температуры и вибрации. Эта рамка используется для получения фактических данных о температуре и вибрации.
ESP32 имеет три UART, доступных для последовательного использования
- RX0 GPIO 3, TX0 GPIO 1
- RX1 GPIO9, TX1 GPIO 10
- RX2 GPIO 16, TX2 GPIO 17
и 3 аппаратных последовательных порта
- Серийный
- Serial1
- Serial2
Сначала инициализируйте файл заголовка Hardware Serial. Здесь мы будем использовать RX2 и TX2, также известные как. Контакты GPIO 16 и GPIO 17 платы ESP32 для получения последовательных данных.
#включают
# определить RXD2 16 # определить TXD2 17
Serial2.begin (115200, SERIAL_8N1, RXD2, TXD2); // выводы 16 rx2, 17 tx2, 19200 бит / с, 8 бит без контроля четности 1 стоповый бит
Следующие шаги приведут вас к получению реальных значений датчика.
- Создавайте переменные для хранения значений температуры, влажности, заряда батареи и других датчиков.
- Установите Rx, tx pin, скорость передачи и биты четности для аппаратного последовательного порта.
- Сначала проверьте, есть ли что прочитать, используя Serial1.available ().
- У нас получится фрейм размером 54 байта.
- Проверьте начальный байт 0x7E.
- Данные вибрации состоят из среднеквадратичного значения для 3-х осей, минимальных значений для 3-х осей, максимальных значений для 3-х осей.
- значения температуры и батареи будут содержать 2 байта данных
- получить имя датчика, тип, версию датчика будет содержать 1 байт данных и оттуда можно получить соответствующий адрес
if (Serial2.available ()) {Serial.println ("Прочитать серийный номер"); данные [0] = Serial2.read (); задержка (k); if (data [0] == 0x7E) {Serial.println ("Получил пакет"); while (! Serial2.available ()); для (я = 1; я <55; я ++) {данные [я] = Serial2.read (); задержка (1); } if (data [15] == 0x7F) /////// для проверки правильности полученных данных {if (data [22] == 0x08) //////// убедитесь, что тип датчика правильно {rms_x = ((uint16_t) (((data [24]) << 16) + ((data [25]) << 8) + (data [26])) / 100); rms_y = ((uint16_t) (((данные [27]) << 16) + ((данные [28]) << 8) + (данные [29])) / 100); rms_z = ((uint16_t) (((данные [30]) << 16) + ((данные [31]) << 8) + (данные [32])) / 100); int16_t max_x = ((uint16_t) (((данные [33]) << 16) + ((данные [34]) << 8) + (данные [35])) / 100); int16_t max_y = ((uint16_t) (((данные [36]) << 16) + ((данные [37]) << 8) + (данные [38])) / 100); int16_t max_z = ((uint16_t) (((данные [39]) << 16) + ((данные [40]) << 8) + (данные [41])) / 100);
int16_t min_x = ((uint16_t) (((данные [42]) << 16) + ((данные [43]) << 8) + (данные [44])) / 100); int16_t min_y = ((uint16_t) (((данные [45]) << 16) + ((данные [46]) << 8) + (данные [47])) / 100); int16_t min_z = ((uint16_t) (((данные [48]) << 16) + ((данные [49]) << 8) + (данные [50])) / 100);
cTemp = ((((данные [51]) * 256) + данные [52])); плавающая батарея = ((данные [18] * 256) + данные [19]); напряжение = 0,00322 * аккумулятор; Serial.print («Номер датчика»); Serial.println (данные [16]); senseNumber = данные [16]; Serial.print («Тип датчика»); Serial.println (данные [22]); Serial.print («Версия прошивки»); Serial.println (данные [17]); Serial.print («Температура в градусах Цельсия:»); Serial.print (cTemp); Serial.println ("C"); Serial.print («Среднеквадратичная вибрация по оси X:»); Серийный.печать (rms_x); Serial.println («мг»); Serial.print («Среднеквадратичная вибрация по оси Y:»); Серийный.печать (rms_y); Serial.println («мг»); Serial.print («Среднеквадратичная вибрация по оси Z:»); Serial.print (rms_z); Serial.println («мг»);
Serial.print («Минимальная вибрация по оси X:»);
Серийный.печать (min_x); Serial.println («мг»); Serial.print («Минимальная вибрация по оси Y:»); Серийный.печать (min_y); Serial.println («мг»); Serial.print («Минимальная вибрация по оси Z:»); Серийный.печать (min_z); Serial.println («мг»);
Serial.print ("Значение АЦП:");
Serial.println (аккумулятор); Serial.print («Напряжение аккумулятора:»); Serial.print (напряжение); Serial.println ("\ п"); if (Voltage <1) {Serial.println («Пора заменить батарею»); }}} else {для (я = 0; я <54; я ++) {Serial.print (данные [я]); Serial.print (","); задержка (1); }}}}
Шаг 6. Подключение к AWS
- Включите файлы заголовков AWS_IOT.h, WiFi.h, чтобы настроить соединение с концентратором AWSIoT.
- Введите свой адрес хоста, идентификатор клиента, который будет именем политики, и имя темы, которое будет именем вещи
// ********* Учетные данные AWS ************* // char HOST_ADDRESS = "a2smbp7clzm5uw-ats.iot.us-east-1.amazonaws.com"; char CLIENT_ID = "ncdGatewayPolicy"; char TOPIC_NAME = "ncdGatewayThing";
Создайте переменную char для хранения вашего JSON, в этом случае мы создали формат для хранения JSON
const char * format = "{" SensorId / ": \"% d / ", \" messageId / ":% d, \" rmsX / ":% d, \" rmsY / ":% d, \" rmsZ / ":% d, \" cTemp / ":% d, \" напряжение / ":%. 2f}";
Создайте экземпляр класса AWS_IOT
AWS_IOT esp; // Экземпляр класса AWS_IOT
Теперь подключитесь к концентратору AWSIoT, используя следующий метод
void reconnectMQTT () {if (hornbill.connect (HOST_ADDRESS, CLIENT_ID) == 0) {Serial.println («Подключено к AWS»); задержка (1000);
если (0 == hornbill.subscribe (TOPIC_NAME, mySubCallBackHandler))
{Serial.println («Подписка успешна»); } else {Serial.println («Подписка не удалась, проверьте имя объекта и сертификаты»); в то время как (1); }} else {Serial.println («Ошибка подключения к AWS, проверьте адрес HOST»); в то время как (1); }
задержка (2000);
}
публиковать данные датчика каждые 1 минуту
if (tick> = 60) // публиковать в теме каждые 5 секунд {tick = 0; полезная нагрузка символа [PAYLOAD_MAX_LEN]; snprintf (полезная нагрузка, PAYLOAD_MAX_LEN, формат, senseNumber, msgCount ++, rms_x, rms_y, rms_z, cTemp, напряжение); Serial.println (полезная нагрузка); if (hornbill.publish (TOPIC_NAME, payload) == 0) {Serial.print ("Опубликовать сообщение:"); Serial.println (полезная нагрузка); } else {Serial.println ("Ошибка публикации"); }} vTaskDelay (1000 / portTICK_RATE_MS); галочка ++;
Шаг 7. Визуализация данных в AWS
- Войдите в свою учетную запись AWS.
- в левом углу панели инструментов вы найдете вкладку Services
- Щелкните эту вкладку и под заголовком «Интернет вещей» выберите «Ядро Интернета вещей».
- Выберите QoS и нет. сообщений подписчикам. Введите название темы.
Шаг 8: Общий код
Вы можете найти общий код в этом репозитории Github.
Кредиты
- Arduino Json
- Беспроводные датчики температуры и влажности
- ESP32
- PubSubClient
Рекомендуемые:
Начало работы с беспроводными датчиками температуры и вибрации большого радиуса действия: 7 шагов
Начало работы с беспроводными датчиками температуры и вибрации с большим радиусом действия. Иногда вибрация является причиной серьезных проблем во многих приложениях. От валов и подшипников машин до производительности жесткого диска - вибрация вызывает повреждение машины, преждевременную замену, низкую производительность и существенно снижает точность. Мониторинг
Начало работы с интерфейсом датчика I2C ?? - Интерфейс вашего MMA8451 с использованием ESP32: 8 шагов
Начало работы с интерфейсом датчика I2C ?? - Интерфейс вашего MMA8451 с использованием ESP32: в этом руководстве вы узнаете все о том, как запустить, подключить и получить устройство I2C (акселерометр), работающее с контроллером (Arduino, ESP32, ESP8266, ESP12 NodeMCU)
Датчик / датчик температуры двигателя с беспроводным датчиком для классических автомобилей: 7 шагов
Датчик / датчик температуры двигателя с беспроводным датчиком для классических автомобилей: я сделал этот датчик для своего любимого Çipitak. Автомобиль fiat 126 с 2-цилиндровым двигателем с воздушным охлаждением под задним капотом. У ipitak нет датчика температуры, показывающего, насколько горячий двигатель, поэтому я подумал, что датчик будет полезен. Также хотел, чтобы датчик был проводным
Взаимодействие Arduino с ультразвуковым датчиком и бесконтактным датчиком температуры: 8 шагов
Взаимодействие Arduino с ультразвуковым датчиком и бесконтактным датчиком температуры: в настоящее время производители и разработчики предпочитают Arduino для быстрой разработки прототипов проектов. Arduino - это электронная платформа с открытым исходным кодом, основанная на простом в использовании аппаратном и программном обеспечении. У Arduino очень хорошее сообщество пользователей. В этом проекте
Начало работы с Amazon AWS IoT и ESP8266: 21 шаг
Начало работы с Amazon AWS IoT и ESP8266: в этом проекте показано, как взять модуль ESP8266 и подключить его напрямую к AWS IOT с помощью ОС Mongoose. Mongoose OS - это операционная система с открытым исходным кодом для микроконтроллеров, которая делает упор на возможность подключения к облаку. Он был разработан Дублином Cesanta