diff --git a/arduino/eeprom_prog/eeprom_prog.ino b/arduino/eeprom_prog/eeprom_prog.ino new file mode 100644 index 0000000..2efacbf --- /dev/null +++ b/arduino/eeprom_prog/eeprom_prog.ino @@ -0,0 +1,53 @@ +#include +#include + +#define ERASE_FIRST 0 + +const byte mac[] = { + 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; +const char serial[] = "abcd1234"; + +struct netConfig { + IPAddress address; + int port; +}; + +netConfig config = { + {192, 168, 10, 123}, + 8000 +}; + +void setup() { + + Serial.begin(9600); + while (!Serial) { + ; // wait for serial port to connect. Needed for native USB port only + } + + #if ERASE_FIRST + // initialize the LED pin as an output. + pinMode(13, OUTPUT); + // turn the LED on while erasing + digitalWrite(13, HIGH); + for (int i = 0 ; i < EEPROM.length() ; i++) { + EEPROM.write(i, 0); + } + // turn the LED on when we're done + digitalWrite(13, LOW); + #endif + + int eeAddress = 0; //Location we want the data to be put. + + //One simple call, with the address first and the object second. + EEPROM.put(eeAddress, mac); + eeAddress += sizeof(mac); + EEPROM.put(eeAddress, serial); + eeAddress += sizeof(serial); + + EEPROM.put(eeAddress, config); + Serial.println("Data written!"); +} + +void loop() { + /* Empty loop */ +} diff --git a/arduino/tempLightSensor/tempLightSensor.ino b/arduino/tempLightSensor/tempLightSensor.ino index 7b7b494..6d9c1e3 100644 --- a/arduino/tempLightSensor/tempLightSensor.ino +++ b/arduino/tempLightSensor/tempLightSensor.ino @@ -1,3 +1,4 @@ +#include #include #include @@ -12,53 +13,65 @@ JsonObject payload = doc.createNestedObject("payload"); JsonObject temp = payload.createNestedObject("temperature"); int tempPin = A0; -int tempReading; int photocellPin = A1; -int photocellReading; -const byte mac[] = { - 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; -const byte remoteAddr[] = { - 192, 168, 10, 123 }; -const int remotePort = 8000; -const int postDelay = 10*1000; +struct netConfig { + IPAddress address; + int port; +}; +netConfig config; -const String serialNum = "abcde12345"; const String URL = "/telemetry/"; - -void printAddr(byte addr[], Stream *stream) { - for (byte thisByte = 0; thisByte < 4; thisByte++) { - // print the value of each byte of the IP address: - stream->print(addr[thisByte], DEC); - if (thisByte < 3) { - stream->print("."); - } - } -} +const int postDelay = 10 * 1000; void setup(void) { Serial.begin(9600); analogReference(EXTERNAL); + + byte mac[6]; + char serial[9]; + int eeAddress = 0; + + EEPROM.get(eeAddress, mac); + eeAddress += sizeof(mac); + EEPROM.get(eeAddress, serial); + eeAddress += sizeof(serial); + + Serial.println("Initialize Ethernet with DHCP:"); if (Ethernet.begin(mac) == 0) { Serial.println("Failed to configure Ethernet using DHCP"); + if (Ethernet.hardwareStatus() == EthernetNoHardware) { + Serial.println("Ethernet shield was not found. Sorry, can't run without hardware. :("); + } else if (Ethernet.linkStatus() == LinkOFF) { + Serial.println("Ethernet cable is not connected."); + } // no point in carrying on, so do nothing forevermore: - for(;;) - ; - } + while (true) { + delay(1); + } + } + EEPROM.get(eeAddress, config); - Serial.print("IoT started at address: "); - printAddr(Ethernet.localIP(), &Serial); + Serial.print("IoT #"); + Serial.print(serial); + Serial.println(" started at address:"); + Serial.println(Ethernet.localIP()); Serial.println(); + Serial.println("Connecting to:"); + Serial.print(config.address); + Serial.print(":"); + Serial.println(config.port); - doc["device"] = 1; // FIXME + doc["device"] = serial; // FIXME payload["id"] = serverName; } void loop(void) { - photocellReading = analogRead(photocellPin); - tempReading = analogRead(tempPin); + + int photocellReading = analogRead(photocellPin); + int tempReading = analogRead(tempPin); float tempVoltage = tempReading * AREF_VOLTAGE / 1024.0; float tempC = (tempVoltage - 0.5) * 100 ; @@ -69,14 +82,14 @@ void loop(void) { temp["raw"] = tempReading; temp["volts"] = tempVoltage; - if (EthernetClient client = client.connect(remoteAddr, remotePort)) { + if (EthernetClient client = client.connect(config.address, config.port)) { client.print("POST "); client.print(URL); client.println(" HTTP/1.1"); client.print("Host: "); - printAddr(remoteAddr, &client); + printAddr(config.address, &client); client.print(":"); - client.println(remotePort); + client.println(config.port); client.println("Content-Type: application/json"); client.print("Content-Length: "); client.println(measureJsonPretty(doc)); diff --git a/arduino/tempLightSensor/tempLightSketch.svg b/arduino/tempLightSensor/tempLightSketch.svg new file mode 100644 index 0000000..cf07828 --- /dev/null +++ b/arduino/tempLightSensor/tempLightSketch.svg @@ -0,0 +1,3280 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SCL + SDA + AREF + GND + IOREF + RESET + 3V3 + PWM + PWM + PWM + L + TX + RX + ON + ICSP + PWM + PWM + PWM + TX + RX + 3 + 1 + 2 + 1 + 1 + 1 + 0 + 1 + 9 + 8 + DIGITAL + 7 + 6 + 5 + 4 + 3 + 2 + 1 + 0 + 1 + 5V + Gnd + POWER + www.arduino.cc + ANALOG IN + Vin + 0 + 1 + 2 + 3 + 4 + 5 + Arduino + UNO + + + + + + + + + + + + + + + + + + + + + + 7 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + 1 + 5 + 5 + 10 + 10 + 15 + 15 + 20 + 20 + 25 + 25 + 30 + 30 + A + A + B + B + C + C + D + D + E + E + F + F + G + G + H + H + I + I + J + J + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AREF + GND + RESET + 3V3 + LINK + PWR + 100M + FULLD + COLL + RX + TX + INT + WP + ICSP + RESET + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + TX + RX + 0 + 5V + Gnd + MEGA compatible + ANALOG IN + 9V + A0 + 1 + 2 + 3 + 4 + A5 + Arduino + ETHShield + SD + + + + + + + + + + + + + + + + + + + + + + + + + + + TMP + 36 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AREF + GND + RESET + 3V3 + LINK + PWR + 100M + FULLD + COLL + RX + TX + INT + WP + ICSP + RESET + 13 + 12 + 11 + 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + TX + RX + 0 + 5V + Gnd + MEGA compatible + ANALOG IN + 9V + A0 + 1 + 2 + 3 + 4 + A5 + Arduino + ETHShield + SD + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +