mirror of
https://github.com/daniviga/bite.git
synced 2024-12-24 09:11:25 +01:00
Daniele Viganò
be4c226955
* 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
60 lines
1.5 KiB
Markdown
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
|
|
``` |