#include "DHTesp.h"
#include <Adafruit_MPU6050.h>
#include <Adafruit_Sensor.h>
#include <Wire.h>
#include <WiFiNINA.h>
const int DHT_PIN = 1;
DHTesp dhtSensor;
Adafruit_MPU6050 mpu;
AWS_IOT hornbill; // AWS_IOT instance
// !!DO NOT PUT INFORMATION BELOW AND HIT SAVE!!
char WIFI_SSID[]="your Wifi SSID";
char WIFI_PASSWORD[]="Wifi Password";
char HOST_ADDRESS[]="AWS host address";
char CLIENT_ID[]= "client id";
char TOPIC_NAME[]= "your thing/topic name";
// !!DO NOT PUT INFORMATION ABOVE AND HIT SAVE!!
int status = WL_IDLE_STATUS;
int tick=0,msgCount=0,msgReceived = 0;
char payload[512];
char rcvdPayload[512];
void setup() {
Serial.begin(115200);
while( status != WL_CONNNECTED){
Serial.print("Attempting to connect to SSID: ");
Serial.println(WIFI_SSID);
// for WPA/WPA2 network.
status = WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
// wait 5 seconds for connection:
delay(5000);
}
Serial.println("Connected to wifi!");
if(hornbill.connect(HOST_ADDRESS,CLIENT_ID)== 0) // Connect to AWS using Host addr & client id
{
Serial.println("Connected to AWS");
delay(1000);
}
else
{
Serial.println("AWS connection failed, Check the HOST Address");
while(1);
}
dhtSensor.setup(DHT_PIN, DHTesp::DHT22);
while (!mpu.begin()) {
Serial.println("MPU6050 not connected!");
delay(1000);
}
Serial.println("MPU6050 ready!");
}
sensors_event_t a, g, temp;
void loop() {
TempAndHumidity data = dhtSensor.getTempAndHumidity();
Serial.println("Temp: " + String(data.temperature, 2) + "°C");
Serial.println("Humidity: " + String(data.humidity, 1) + "%");
Serial.println("---");
float t = data.temperature;
float h = data.humidity;
mpu.getEvent(&a, &g, &temp);
/* Print out the values */
Serial.print("Acceleration X: ");
Serial.print(a.acceleration.x);
Serial.print(", Y: ");
Serial.print(a.acceleration.y);
Serial.print(", Z: ");
Serial.print(a.acceleration.z);
Serial.println(" m/s^2");
Serial.print("Rotation X: ");
Serial.print(g.gyro.x);
Serial.print(", Y: ");
Serial.print(g.gyro.y);
Serial.print(", Z: ");
Serial.print(g.gyro.z);
Serial.println(" rad/s");
float x1 = a.acceleration.x, y1 = a.acceleration.y, z1 = a.acceleration.z
float x2 = g.gryo.x, y2 = g.gryo.y, z2 = g.gyro.z;
// Check if any reads failed and exit early (to try again).
if(isnan(h) || isnan(t) || isnan(f) || isnan(x1) ||
isnan(x1) || isnan(y1) || isnan(z1) || isnan(x2) || isnan(y2) || isnan(z2) ) {
Serial.println("Failed to read from sensors(s)!");
} else {
// Create the payload for publishing
sprintf(payload,"H:%f T:%f'C, A: %f,%f,%f, G: %f,%f,%f",h,t,x1,y1,z1,x2,y2,z2);
}
// publish
if( hornbill.publish(TOPIC_NAME,payload) == 0 ) {
Serial.print("Published Message:");
Serial.println(payload);
} else {
Serial.println("Publishing failed! ");
}
// every 5 seconds.
delay(5000);
}