1
0
mirror of https://github.com/daniviga/bite.git synced 2024-12-23 08:41:24 +01:00
bite/arduino
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
..
eeprom_prog Implement MQTT over WebSocket support (#19) 2020-06-21 15:21:00 +02:00
libraries Implement the MQTT protocol (#11) 2020-06-08 23:17:16 +02:00
tempLightSensor Fix HTTP reverse proxy with embedded IoT (#20) 2020-06-21 22:58:46 +02:00
README.md Fix HTTP reverse proxy with embedded IoT (#20) 2020-06-21 22:58:46 +02:00

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

The sketch does require an Ethernet shield and a bunch of libraries which are available as git submodules under arduino/libraries.

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:

// 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.

#define ERASE_FIRST 0

Firmware options

The following macros are available in the firmware (to be set at compile time):

#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