- File upload via bluetooth available BUT VERY SLOW;
- Send a 500KB file from one ESP32 to another, atleast 100m apart from eachother;
- The PCB of the transmission board was designed considering up to eight I²C devices connected to it to works as a sensor DataLogger;
- The receiver PCB is just a normal DOIT Devkit 1 remake to learn how to use KiCad;
- This is just a concept, not all funcionalities will be developed/tested as the main goal is to send a file over a Wireless Conection.
- Enable/Disable BT file transfer
- Write WiFi AP file transfer
- RTC sync to log time of [HTTP] GET request
- RTC sync to execute [HTTP] GET request every 5 minutes
- Test WiFi Long Range and Normal WiFi
- Successful test on cellphone hosted WiFi Hotspot - Download file via http://ESP-IP-ADDRESS/download
- Successful file transfer between two ESP32 boards
ESP32 was selected over Arduino boards because:
- it has an internal flash memory that can store more than 500kB of data;
- it has both bluetooth and Wi-Fi onboard;
- it has Wi-Fi Long Range, which is great for file transfers of up to 1Km;
- it's low power mode has very low power consumption, which is great for battery powered projects;
- great market availability, atleast in Brazil;
- higher clock rate;
- internal RTC module;
- cheap price;
- 15 analog pins on DOIT ESP32 DevKit 1 that are great for reading data from sound and light sensors, for example;
- Possibility to code using Arduino syntax, which I'm more familiar to.
Other boards were not considered, such as MSP430 from Texas Instruments or STM32 from STMicroelectronics, because of the difficulties to acquire these boards in Brazil with as many functionalities as ESP32 for as low of a price as a DOIT ESP32 Devkit1.
Both transmissor and receiver schematics can be found below:
As there was no need for external components, the schematics would be fairly simple, so I decided to add some details on the transmissor, designing it to be a DataLogger that should read data from it's I²C. This required a logic level converter for I²C devices that need 5V for power and output 5V logic level signals, as ESP32's high level is 3.3V maximum. Also, I used as an example the schematics for the original DOIT ESP32 Devkit 1, changing some of the voltage regulators for ones with lower dropout voltage.
As I was using KiCAD for the first time, designing both the transmissors and receivers was a great challenge and I'm happy with the final result. Common 9V batteries can be used for thisn project and will power the device for many hours.
The transmissor design sacrifices one of the GPIOs with less functionality to have it as I²C enable for the logic level converter. I²C will work normally with this pin on LOW, but I²C for 5V power 5V logic level signal devices this pin has to be put on high while data is being sent and received. It's a great measure to ensure a lower power draw.
The board design for both transmissor and receiver can be found below:
The code written in this project only simulates the transfer of an existing file stored via bluetooth to folder /storage/loremipsum.txt
But it's easily adaptable to work as it was designed to, as a Data Logger.
- All KiCAD files are stored at Arquivos KiCAD;
- All Schematic images are stored at Esquematicos;
- All PCB images are stored at Placas de Circuito Impresso.