Am Ende dieses Kapitels führt Ihr Gerät Folgendes aus:
Das Core2 für AWS IoT Kit-Referenz-Hardwarekit verfügt über mehrere einsatzbereite Sensoren. Bei dieser Lösung nehmen Sie Messwerte vom Temperatursensor und dem Mikrofon mithilfe des lokalen Anwendungscodes ab. Die Anwendung verfolgt Sensorwerte und Statusmarkierungen, die zum Rendern einer Zusammenfassung auf dem Display verwendet werden.
Ihr intelligenter Thermostat tastet die integrierten Sensoren mit Code ab, der bereits erstellt und in den mitgelieferten Softwarekomponenten enthalten ist. In diesem ersten Schritt erfassen Sie einfach die Werte und drucken sie in den Logger aus, bevor wir Sensorwerte bis zu AWS IoT Core veröffentlichen.
Das Ablesen vom Temperatursensor des mitgelieferten MPU6886-Moduls ist einfach. Hier ist ein Code-Snippet:
// include libraries for interfacing with the kit's modules
#include "freertos/FreeRTOS.h"
#include "core2forAWS.h"
#include "mpu6886.h"
#include "esp_log.h"
// the application to run on the device
void app_main()
{
// initialize a float to store our temperature reading
float temperature = 0.0f;
// initialize the kit modules
Core2ForAWS_Init();
MPU6886_Init();
// read from the temperature sensor
MPU6886_GetTempData(&temperature);
// convert the reading to Fahrenheit and apply a calibration offset of -50
temperature = (temperature * 1.8) + 32 - 50;
// write the value to the ESP32 logger
ESP_LOGI("thermostat", "measured temperature is: %f", temperature);
}
Wenn Sie Ihre Geräteprotokolle mit diesem Code erstellen, flashen und überwachen, nimmt das Gerät einen Messwert vom Temperatursensor, schreibt ihn in den Logger und stoppt. Um jede Sekunde kontinuierlich zu testen, ohne andere Prozesse zu blockieren, erstellen Sie eine separate ** FreeRTOS-Aufgabe ** und stecken Sie es an einen MCU-Kern an, etwa so:
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "core2forAWS.h"
#include "mpu6886.h"
#include "esp_log.h"
// store our application logic in a task function
void temperature_task(void *arg) {
float temperature = 0.0f;
// loop forever!
for (;;) {
MPU6886_GetTempData(&temperature);
temperature = (temperature * 1.8) + 32 - 50;
ESP_LOGI("thermostat", "measured temperature is: %f", temperature);
// sleep for 1000ms before continuing the loop
vTaskDelay(1000 / portTICK_RATE_MS);
}
}
void app_main()
{
Core2ForAWS_Init();
MPU6886_Init();
// FreeRTOS concept: operations that run in a continuous loop are done in tasks
xTaskCreatePinnedToCore(&temperature_task, "temperature_task", 4096, NULL, 5, NULL, 1);
}
Es wurde bereits eine Beispielanwendung vorbereitet, mit der Sie mithilfe von Visual Studio Code und der PlatformIO-Erweiterung erstellen und auf Ihr Gerät hochladen können. Wenn Sie bereits ein anderes Projekt in VS-Code geöffnet haben, öffnen Sie zuerst ein neues Fenster (Datei → Neues Fenster), um einen sauberen Datei-Explorer und eine saubere Arbeitsumgebung zu erhalten.
Für dieses Tutorial verwenden Sie das Smart-Thermostat-Projekt. In Ihrem neuen VS-Code-Fenster:
Core2-for-aws-iot-edukit/Smart-Thermostat
und klicken Sie auf Öffnen.
Als Nächstes müssen Sie ein neues PlatformIO CLI-Terminalfenster in VS-Code öffnen:
Um die Konfiguration aus dem Blinky-Projekt zu kopieren, kompilieren Sie die Gerätefirmware und laden Sie sie auf Ihr Gerät hoch. Befolgen Sie dann die Schritte für das Betriebssystem Ihres Host-Computers, um dieses Kapitel abzuschließen:
Bevor Sie mit dem nächsten Kapitel fortfahren, können Sie überprüfen, ob Ihr Gerät wie vorgesehen konfiguriert ist, indem Sie die serielle Ausgabe im Terminalfenster anzeigen, die wie folgt aussehen sollte:
I (16128) MAIN: On Device: roomOccupancy false
I (16132) MAIN: On Device: hvacStatus STANDBY
I (16137) MAIN: On Device: temperature 64.057533
I (16143) MAIN: On Device: sound 8
Wenn diese wie erwartet funktionieren, fahren wir mit Datensynchronisierung fort.
AWS IoT Kit now features direct access to
AWS re:Post
, which is a community-driven, questions-and-answers service. Search re:Post using the
AWS IoT Kit
tag to see if your question has been asked and answered. If not, ask a new question using the AWS IoT Kit
tag.