From b7e916baaede040df2d968c50a42e8c27c1234ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniele=20Vigan=C3=B2?= Date: Sat, 20 Jun 2020 18:44:08 +0200 Subject: [PATCH] Add more docs --- arduino/README.md | 58 +++++++++++++++++++++++++++++++++++++ docs/application_chart.odg | Bin 146282 -> 146372 bytes 2 files changed, 58 insertions(+) create mode 100644 arduino/README.md diff --git a/arduino/README.md b/arduino/README.md new file mode 100644 index 0000000..a93dac3 --- /dev/null +++ b/arduino/README.md @@ -0,0 +1,58 @@ +# Arduino IoT device + +A simple Arduino UNO sketch is provided in the `arduino/tempLightSensor` folder. +The sketch reads temperature and light from sensors. + +The simple schematic is: + +![tempLightSensor](./tempLightSensor/tempLightSensor.svg) + +The sketch does require an Ethernet shield and a bunch of libraries which are +available as git submodules under `arduino/libraries`. + +```bash +git submodule update --init +``` + +Be advised that some libraries (notably the `NTP` one) have been customized. + +An `ESP32` board (or similar Arduino) may be used, with some adaptions, too. + +## EEPROM + +Configuration parameters are stored and retrieved from the `EEPROM`. +An helper sketch to update the `EEPROM` is available under +`arduino/eeprom_prog`. + +The data stored in the `EEPROM` is: + +```c +// Ethernet MAC address +const byte mac[6]; + +// Device serial number +const char serial[]; + +// IoT platform address and port +struct netConfig { + IPAddress address; + unsigned int port; +}; + +``` + +The `EEPROM` can be completely erased setting the `ERASE_FIRST` macro to `1`. + +```c +#define ERASE_FIRST 0 +``` + +## Firmware options + +The following macros are available in the firmware (to be set at compile time): + +```c +#define DEBUG_TO_SERIAL 1 // debug on serial port +#define USE_MQTT 1 // use mqtt protocol instead of http post +#define USE_INTERNAL_NTP 0 // use default ntp server or the internal one +``` \ No newline at end of file diff --git a/docs/application_chart.odg b/docs/application_chart.odg index 126ce84a0dea617a97805173a4836c0d17bd6104..7c2288a07c57d8be73d459ca01e5cb61e69ba3fe 100644 GIT binary patch delta 15141 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 VKn&n6Q)(&?kP-@o6$k(T{vW1iQtki%