First of all, thank you to the wonderful people that make up the ESP community. I have a general question, which hopefully, I can narrow down to enough specifics to better present my issue.
I am working on a project which is in a prototype stage, but we plan to eventually mass produce it (Approx 1000 quantity). It is an industrial IOT device and that communicates to a PC (Windows or Linux). ESP32-embedded device is physically close to the PC and has all methods of communication available - i.e., USB, UART, BT, Wifi.
- Communication is bidirectional - PC <--> ESP32
- Bandwidth requirement is very minimal - only a few bytes of data every 1 second.
- PC application is not finalized and can be written in any language (Python, C, C# .Net, Java). There is a lot of flexibility with regards to the host software.
- No power requirements or limitations. ESP32-device board is already planned to be powered using a USB power rail.
- If ESP32-device is connected, PC host needs to automatically detect the device and start communicating.
- When PC host boots, ESP32-device (if it is already connected) should be ready for transfer of data.
- If needed, we can purchase a Vendor ID for USB protocol.
I am seeking advice as to how best to approach this type of communication?
I am exploring the following options:
- UART - The problem is that the device connected is through a COM port and it is not possible to burden the user to select the correct port.
- USB - I am looking at options for developing a full fleged windows driver but it seems like a daunting task. USB protocol is very complex for a beginner. I've been reading about PyUSB and other easy to use USB libraries.
Would Bluetooth or Wifi be easier?
Thank you, I apologize if my question is too broad - it is mainly because of my lack of familiarty in building peripheral devices and I am happy to learn more.