1
0
mirror of https://github.com/daniviga/bite.git synced 2024-12-25 01:31:25 +01:00
bite/arduino/README.md
Daniele Viganò be4c226955
Fix HTTP reverse proxy with embedded IoT (#20)
* Add an ENV far for custom docker binding

* Delay in Arduino can be customized

* Fix 400 error with Arduino telemetry and Nginx
This was caused by the client not waiting for a response.
Also Content-Length header was bogus.

* Do not crash mqtt-to-db if devices isn't proviosioned

* Update READMEs
2020-06-21 22:58:46 +02:00

60 lines
1.5 KiB
Markdown

# 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 0 // debug on serial port
#define USE_MQTT 1 // use mqtt protocol instead of http post
#define USE_INTERNAL_NTP 1 // use default ntp server or the internal one
#define TELEMETRY_DELAY 10 // second between telemetry samples
#define AREF_VOLTAGE 3.3 // set aref voltage to 3.3v instead of default 5v
```