{"id":31567885,"url":"https://github.com/iultimatelp/arduinoibis","last_synced_at":"2026-04-11T04:32:02.891Z","repository":{"id":316447277,"uuid":"1063394637","full_name":"iUltimateLP/ArduinoIBIS","owner":"iUltimateLP","description":"⚡ Implementation of the VDV 300 IBIS Wagenbus protocol for Arduino and Arduino-based devices 💡","archived":false,"fork":false,"pushed_at":"2025-09-24T15:55:56.000Z","size":11,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-24T17:49:28.585Z","etag":null,"topics":["arduino","esp32","esp8266","ibis","ibis-wagenbus","platformio"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/iUltimateLP.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-24T15:08:07.000Z","updated_at":"2025-09-24T15:55:59.000Z","dependencies_parsed_at":"2025-09-24T17:49:30.869Z","dependency_job_id":null,"html_url":"https://github.com/iUltimateLP/ArduinoIBIS","commit_stats":null,"previous_names":["iultimatelp/arduinoibis"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/iUltimateLP/ArduinoIBIS","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iUltimateLP%2FArduinoIBIS","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iUltimateLP%2FArduinoIBIS/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iUltimateLP%2FArduinoIBIS/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iUltimateLP%2FArduinoIBIS/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iUltimateLP","download_url":"https://codeload.github.com/iUltimateLP/ArduinoIBIS/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iUltimateLP%2FArduinoIBIS/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278437954,"owners_count":25986760,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-05T02:00:06.059Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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","esp32","esp8266","ibis","ibis-wagenbus","platformio"],"created_at":"2025-10-05T09:46:02.020Z","updated_at":"2025-10-05T09:46:03.476Z","avatar_url":"https://github.com/iUltimateLP.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ArduinoIBIS\n\n⚡ Implementation of the VDV 300 IBIS Wagenbus protocol for Arduino and Arduino-core based devices 💡\n\n## Introduction\nThis open-source project aims to be an *Arduino* library that maintains communication with various public transport equipment, such as screens, displays, announcement devices or ticket printers. The term **IBIS** is german and stands for \"**I**ntegriertes **B**ord**I**nformations**S**ystem\" (eng.: \"integrated board information system\"). It is defined by the VDV and it's definition as well as it's extensions are nowadays available for reading on the [VDV's knowhow page](https://knowhow.vdv.de/documents/300/).\n\n**IBIS** was designed back in 1992, but it is still widely used to this day, in old and new installations.\n\n## How does IBIS work?\nTo it's core, **IBIS** is just a plain-standard RS232/TTL serial signal, communicating with a baud rate of *1200*, *7* data bits, *equal* parity and *2* stop bits (`1200 7E2`). The difference to a standard serial signal lies in the voltage levels. While a TTL signal operates between 0V and 3.3V, **IBIS** is inverted and amplified to a *24V* level. Driving a higher voltage makes the data transmission more robust in harsh environments like trains and buses, and also allows to run longer data lines.\n\n**IBIS** is bidirectional, meaning that devices and both send and receive data to/from the bus. Usually, the **IBIS** controller in a vehicle is located near the driver's seat and receives input from the driver or over the air, generates **IBIS** data and sends it to every piece of equipment installed. Those devices can then decide whether they want to react to the sent data, or not.\n\n**IBIS** speaks *telegrams*. All of those telegrams are defined in the [VDV 300 document, page 41 following](https://knowhow.vdv.de/documents/300/). Each of those telegrams has a consecutive number (e.g. `001`, also often refered to as `DS001`) and a specific coding which defines the structure of the telegram's payload.\n\nDue to the higher voltage levels (24V), connecting an **IBIS** device directly to a microcontroller is **NOT** possible. At the very least, you'll need a strong transistor that is triggered from the Arduino and switches a 24V power supply to the **IBIS** port.\n\n\u003e 💡 Together with this library, I've created an [open-source **IBIS** controller utilizing an ESP8266 (Wemos D1)](https://github.com/iUltimateLP/IBIS_WiFi_Controller). You can build the controller yourself, and then use this library to interface with your **IBIS** devices.\n\n## Getting started\nOnce you've built the hardware side of things, the **IBIS** communication can be established with only a few lines of code:\n\n```cpp\n#include \u003cArduino.h\u003e\n#include \u003cArduinoIBIS.h\u003e\n\nint txPin = 12;\nint rxPin = 13;\nArduinoIBIS::Port ibis;\n\nvoid setup()\n{\n\t  ibis.Begin(txPin, rxPin);\n}\n\nvoid loop()\n{\n\t  ibis.DS003c(\"Hello World!\");\n\t  delay(3000);\n\t  ibis.DS003c(\"I'm ArduinoIBIS!\");\n\t  delay(3000);\n\t  ibis.DS003c(\"Nice to meet you!\");\n\t  delay(3000);\n}\n```\n\nThis example begins the **IBIS** communication on the given transmit and receive pins (all pins supported by [ESPSoftwareSerial](https://github.com/plerup/espsoftwareserial) are supported here), and then periodically sends the `DS003c` telegram to the connected display.\n\nSee it in action here:\n\nVID!\n\n## Credits\nThis library wouldn't've been possible without the efforts of the following projects and people. Thanks to:\n - [plerup/ESPSoftwareSerial](https://github.com/plerup/espsoftwareserial), which is used as the serial communication library\n - [CatoLynx](https://github.com/CatoLynx), who helped me debugging my hardware and software since day one (I've also taken his awesome [pyFis](https://github.com/CatoLynx/pyFIS/blob/master/pyfis/ibis/ibis_protocol.py) protocol as a reference)\n - various public transport companies who provided me with tech throughout the years\n\n## License\nMIT License\n\nCopyright (c) 2025 Jonathan Verbeek\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiultimatelp%2Farduinoibis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiultimatelp%2Farduinoibis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiultimatelp%2Farduinoibis/lists"}