Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <time.h>
- #include <Ticker.h>
- #include <SPI.h>
- #include <SD.h>
- #include <SoftwareSerial.h>
- #include <ESP8266WiFi.h>
- #include <NTPClient.h>
- #include <WiFiUdp.h>
- #include "GPIOWrite.h"
- #include <OneWire.h>
- #include <DallasTemperature.h>
- #include "Adafruit_IO_Client.h"
- #define WIND_SPEED_SENSOR_PIN 4
- #define LED_BUILTIN_CUSTOM_PIN 2
- #define TEMPERATURE_SENSOR_PIN 0
- #define GPS_RX_PIN 16
- #define GPS_TX_PIN 5
- // Configure Adafruit IO access.
- #define AIO_KEY "75aa2cfa136d4645802240e566424303"
- const char* wifiSsid = "Lewis' hot place";
- const char* wifiPassword = "hellom88";
- const char READINGS_FILENAME[] = "readings.txt";
- WiFiClient client;
- Adafruit_IO_Client aio = Adafruit_IO_Client(client, AIO_KEY);
- Adafruit_IO_Feed temperatureFeed = aio.getFeed("temperature");
- Adafruit_IO_Feed windspeedFeed = aio.getFeed("windspeed");
- Adafruit_IO_Feed timeFeed = aio.getFeed("timefeed");
- // Used for temperature sensor
- OneWire oneWire(TEMPERATURE_SENSOR_PIN);
- DallasTemperature sensors(&oneWire);
- Ticker measurementTimer;
- //Used for time syncing
- WiFiUDP ntpUDP;
- NTPClient timeClient(ntpUDP);
- GPIOWrite workingLed(LED_BUILTIN_CUSTOM_PIN);
- SoftwareSerial gps(GPS_RX_PIN, GPS_TX_PIN);
- int interruptCounter = 0;
- int lastWindspeed = 0;
- float temperature = 0;
- time_t timestamp = 0;
- void setup() {
- Serial.begin(9600);
- gps.begin(9600);
- WiFi.begin(wifiSsid, wifiPassword);
- timeClient.begin(); // MAKE SURE THIS DONT CRASH EVERYTHING
- sensors.begin();
- aio.begin();
- if (!SD.begin(4)) {
- Serial.println("initialization failed!");
- return;
- }
- pinMode(WIND_SPEED_SENSOR_PIN, INPUT_PULLUP);
- measurementTimer.attach(10, measureWindspeed);
- attachInterrupt(digitalPinToInterrupt(WIND_SPEED_SENSOR_PIN), handleInterrupt, FALLING);
- Serial.print("Your are connecting to;");
- Serial.println(wifiSsid);
- }
- float getTemperature() {
- sensors.requestTemperatures();
- return (float)sensors.getTempCByIndex(0);
- }
- void measureWindspeed() {
- File myFile = SD.open(READINGS_FILENAME, FILE_WRITE);
- if (myFile) {
- char measurementsData[100] = {};
- timestamp = timeClient.getEpochTime() + 3600;
- sprintf(measurementsData, "%s,%d,%.2f\n",ctime(×tamp), interruptCounter, temperature);
- Serial.println(measurementsData);
- myFile.print(measurementsData);
- myFile.close();
- workingLed.flip();
- } else {
- Serial.println("error opening file");
- }
- lastWindspeed = interruptCounter;
- interruptCounter=0;
- }
- void handleInterrupt() {
- interruptCounter++;
- }
- void loop() {
- Serial.println(ctime(×tamp));
- temperature = getTemperature();
- if(WiFi.status() == WL_CONNECTED) {
- Serial.println("WiFi is on");
- timeClient.update(); // MAKE SURE THIS DONT CRASH EVERYTHING
- if (!temperatureFeed.send(temperature) && !windspeedFeed.send(lastWindspeed) && !timeFeed.send(ctime(×tamp))) {
- Serial.println("Could not send data");
- }
- }
- if(gps.available() > 0) {
- Serial.println("GPS");
- File myFile = SD.open(READINGS_FILENAME, FILE_WRITE);
- while (gps.available() > 0){
- byte gpsData = gps.read();
- Serial.write(gpsData);
- if (myFile) {
- myFile.println("GPS");
- myFile.print(gpsData);
- }
- }
- myFile.close();
- }
- delay(5000);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement