{"id":28428194,"url":"https://github.com/saruccio/esppassthrough","last_synced_at":"2026-04-29T01:02:08.282Z","repository":{"id":286493841,"uuid":"266306193","full_name":"Saruccio/ESPpassthrough","owner":"Saruccio","description":"Library that uses ESP AT serial commands and set it in Passthrough (transparent) Mode","archived":false,"fork":false,"pushed_at":"2020-06-13T09:24:51.000Z","size":59,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-07-04T15:32:29.414Z","etag":null,"topics":["arduino","communication","esp","esp-01","passthrough","remotization","serial","tcp","wifi"],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Saruccio.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-05-23T09:42:31.000Z","updated_at":"2022-09-22T14:35:22.000Z","dependencies_parsed_at":"2025-04-06T20:41:56.907Z","dependency_job_id":null,"html_url":"https://github.com/Saruccio/ESPpassthrough","commit_stats":null,"previous_names":["saruccio/esppassthrough"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/Saruccio/ESPpassthrough","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Saruccio%2FESPpassthrough","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Saruccio%2FESPpassthrough/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Saruccio%2FESPpassthrough/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Saruccio%2FESPpassthrough/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Saruccio","download_url":"https://codeload.github.com/Saruccio/ESPpassthrough/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Saruccio%2FESPpassthrough/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32405903,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-28T19:38:08.556Z","status":"ssl_error","status_checked_at":"2026-04-28T19:37:55.688Z","response_time":56,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arduino","communication","esp","esp-01","passthrough","remotization","serial","tcp","wifi"],"created_at":"2025-06-05T12:37:40.483Z","updated_at":"2026-04-29T01:02:08.269Z","avatar_url":"https://github.com/Saruccio.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ESPpassthrough\nLibrary that uses ESP AT serial commands to set it in Passthrough (transparent) Mode.\n\n## Rationale\nIn some projects there is the need to remotize a serial communication protocol.\n\nThe simplest way to achieve this is to remotize the serial port data stream via \na TCP network connection so that every byte sent to the socket will be received \nby the serial port and vice versa.\n\nThe ESP-01 is the best candidate for this kind of work because of its rich set of WiFi functionalities.\nOne of these is the transmission in passthrough mode but you need to configure it using its AT command interface.\n\nThe aim of this library is to make this ESP-01 configuration easy.\n\n### Remotization Pros\n\nUsing serial remotization there is no need to change the application protocol\nimplemented over the serial port.\n\nAt any time the physical serial connection can be restored simply disabling the \nlibrary in the middle and connecting a serial TTL adapter ti Rx and Tx lines.\n\n\n## Usage\n\n### Hardware configuration\n\nConnect the ESP-01 to the serial port you plan to remotize.\n\nIf SoftwareSerial is used, connect the ESP-01 to the IO pin \nconfigured to be used as Tx and Rx.\n\nIn the following image the schematic of the test bench I used.\n\n![Arduino Nano - ESP-01 connection](Schematic_ESPpassthrough_2020-05-31.png)\n\n#### Pay attention\n\nThe ESP-01 need to be powered at 3.3V but the 3.3V output on the Arduino board cannot supply the current needed by the ESP-01 to work properly.\n\nSo it must be powered by a different line, otherwiwse strange and unexpected behaviours will appear at its serial interface.\n\n### Software\n\nThe steps to use the library are the following:\n\n1. create and configure the serial port you plan to remotize;\n2. define a ESPpassthrough object using that serial port;\n3. use the object to connect one available WiFi Acces Point;\n4. use the object to connect a TCP listening server/port \n\n   (for example a ```netcat -l -p \u003cport\u003e``` running on a remote Linux PC)\n5. if all previous steps complete successfully, do data exchange directly on the serial port; \n6. if you need to close the TCP connection and/or disconnect from the AP, stop send/receive data fron the remotized serial port and use disocnnection methods of the ESPpassthrough object.\n\n# Example\n\nIn the folder *example* there is an Arduino sketch that implements the steps listed in the [Software](#Software) section.\n\n\n\n# Debugging\n\nFor debugging purposes you can enable or disable the tracing of the library at compile time uncommenting or commenting the definition of the macro TRACE_ON:\n\n```#define TRACE_ON 1```\n\nuncommented in the code by default.\n\nIt enables two other macros\n\n```PRINT(x)``` and ```PRINTL(X)```\n\nprinting over the Serial object.\n\n\n# Limitations\n\nAt the moment the library does not support auto bauding, so is in charge of you to ensure that the baudrate of both serial ports (the one of the Arduino and the one of the ESP-01) are the same.\n\nUsually default baudrate of the ESP-01 serial port is 115200 (at least for the ones I bought).\n\nIf you need different baudrate you have to connect the ESP-01 to a TTL 3.3V serial adapter and set it issuing the command:\n\n```AT+UART_DEF:\u003cbaudrate\u003e,\u003cdatabits\u003e,\u003cstopbits\u003e,\u003cparity\u003e,\u003cflow control\u003e```\n\nin order to make your changes persistent.\n\nFor example, to set a baudrate of 9600 bps, 8 bit of data, 1 stop bit, no parity bit and no flow control, the command is:\n\n```AT+UART_DEF=9600,8,1,0,0```\n\n*Note*\n*Depending on the firmware version on the ESP-01 this command could return ERROR even if it succeded*\n\n\n# ToDo - Improvements\n\n## Auto baudrate\n\nAs stated in the section [Limitations](#Limitations), the autobauding is missing.\n\nI developed this library as a part of another hobby project.\nAt the moment it meets my needs, therefore, due to my limited spare time, I don't plan any improvements soon.\n\nYou are welcome to contribute.\n\n\n\n\n\n\n\n\n\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsaruccio%2Fesppassthrough","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsaruccio%2Fesppassthrough","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsaruccio%2Fesppassthrough/lists"}