{"id":16692643,"url":"https://github.com/platisd/smartcar_shield","last_synced_at":"2025-04-05T19:12:41.415Z","repository":{"id":2815497,"uuid":"46122012","full_name":"platisd/smartcar_shield","owner":"platisd","description":"A versatile and easy to use vehicle platform for hobby-grade projects","archived":false,"fork":false,"pushed_at":"2025-01-06T13:36:12.000Z","size":20634,"stargazers_count":76,"open_issues_count":8,"forks_count":45,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-03-29T18:07:43.656Z","etag":null,"topics":["arduino","esp32","gp2d120","gp2y0a02yk0f","gp2y0a21","gy-50","hc-sr04","l293d","l3g4200d","odometer","smartcar","smartcar-shield"],"latest_commit_sha":null,"homepage":"http://plat.is/smartcar","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/platisd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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":"2015-11-13T12:57:00.000Z","updated_at":"2025-01-06T13:34:03.000Z","dependencies_parsed_at":"2023-07-05T20:46:18.607Z","dependency_job_id":"6ca534b7-f060-4e09-bd09-5ce9bcc5c912","html_url":"https://github.com/platisd/smartcar_shield","commit_stats":null,"previous_names":[],"tags_count":32,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/platisd%2Fsmartcar_shield","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/platisd%2Fsmartcar_shield/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/platisd%2Fsmartcar_shield/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/platisd%2Fsmartcar_shield/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/platisd","download_url":"https://codeload.github.com/platisd/smartcar_shield/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247386265,"owners_count":20930619,"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","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","gp2d120","gp2y0a02yk0f","gp2y0a21","gy-50","hc-sr04","l293d","l3g4200d","odometer","smartcar","smartcar-shield"],"created_at":"2024-10-12T16:28:00.214Z","updated_at":"2025-04-05T19:12:41.377Z","avatar_url":"https://github.com/platisd.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Smartcar shield\n\n![Tests](https://github.com/platisd/smartcar_shield/workflows/Tests/badge.svg)\n![Examples](https://github.com/platisd/smartcar_shield/workflows/Examples/badge.svg)\n![Documentation](https://github.com/platisd/smartcar_shield/workflows/Documentation/badge.svg)\n[![codecov](https://codecov.io/gh/platisd/smartcar_shield/branch/master/graph/badge.svg)](https://codecov.io/gh/platisd/smartcar_shield)\n[![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/466/badge)](https://bestpractices.coreinfrastructure.org/projects/466)\n[![BCH compliance](https://bettercodehub.com/edge/badge/platisd/smartcar_shield?branch=master)](https://bettercodehub.com/)\n\nA versatile and easy to use vehicle platform for hobby-grade projects\n\n- [Description](#description)\n- [Hardware](#hardware)\n- [Software](#software)\n- [Reference platforms](#reference-platforms)\n- [How to get started](#how-to-get-started)\n- [Dependencies](#dependencies)\n- [Project documentation](#project-documentation)\n- [License](#license)\n\n## Description\nThis repository, includes everything necessary to set up a Smartcar platform.\nThe Smartcar, is a vehicular educational platform, which enables the user to develop\nvarious robotic applications in an affordable, pedagogic and easy way. It is intended\nfor persons with basic programming knowledge and little to no experience of electronics,\nmechanics or robotics. More experienced users, should also find this approach convenient,\ndue to its open source nature, high level API and object oriented design.\n\n## Hardware\nDespite the software being hardware-agnostic, historically, development has been based on specific\nhardware. Initially, the **Smartcar shield** was used on top of an Arduino, using cheap car kits.\nThis setup will be referred to as `shield` or `v1`.\n\nSince the winter of 2019, a new platform was developed from scratch, using the WiFi and Bluetooth\nenabled ESP32 as the vehicle's \"brain\". This setup will be referred to as `platform` or `v2` and\nwill be considered the default one from now on. It offers greater robustness and many more\npossibilities, as it offers out-of-the-box connectivity.\n\n### Platform\n\n![smartcar platform](https://i.imgur.com/cFrq2Wj.jpg)\n\nThe Smartcar platform is a complete hardware solution for your hobby-grade, connected vehicle project.\nIt is comprised of the chassis, made out of printed circuit boards, stacked on each other and an\nESP32 development board that drives the motors, controls the sensors and communicates with the\nworld via WiFi and Bluetooth.\n\nThere are 4 motors with directional odometers which enable not only to determine how much the\nwheels have moved but also the direction they spin. It is equipped with a GY-50 gyroscope module\n(based on the L3G4200D sensor) to provide heading information and sockets to optionally connect\n4 `VL45L0X` LIDAR sensors to provide distance measurements. It is powered up by 8 AA batteries\nand you can find the boards' source files in [extras/eagle/smartcar_platform](/extras/eagle/smartcar_shield).\n\n### Shield\n\n![smartcar_shield](https://i.imgur.com/7g5ts49.png)\n\nThe Smartcar shield is an open hardware PCB, that is effortlessly stacked on top of an Arduino. It\nincludes an L293D H-bridge chip, that drives the motors, screw terminals to connect the motors\nand a battery to them and a GY-50 gyroscope module (based on the L3G4200D sensor).\nIn [extras/eagle/smartcar_shield](/extras/eagle/smartcar_shield) you can find the\ndesign files for the board, in a modifiable form, using free software. There are\nalso the options, to order it as-is, from either USA or China based manufacturers.\n\nThe Smartcar shield, facilitates efficient cable management, helps to preserve space\nand is as small as possible, in order to keep the manufacturing price low. Additionally,\nthe components necessary to assemble it, are widely available over the Internet. Furthermore,\nyou can find 2D CAD drawings of the Smartcar chassis in various formats, at\n[/extras/cad/2D](extras/cad/2D) which you can freely use in order to fabricate your own,\ne.g. with a milling machine or a laser cutter.\n\n### Emulator\n\n[SMCE](https://github.com/ItJustWorksTM/smce-gd/) is the digital twin of the Smartcar platform\nalong with a cool and customisable 3D world for your rover to roam in.\u003cbr\u003e\nThe core concept is that you write Arduino code that runs on both the real hardware as well as\nthe virtual environment.\nThis way, the need to have exclusive and frequent access to the car can be either alleviated\nor drastically decreased.\nThe emulator allows limiting the unavoidable engagement with the physical car, to the point a\nteam of developers may develop their features on the emulator and only access the real hardware\nto verify them.\n\n## Software\nThe software, is the Smartcar shield Arduino library. It sports a high level API, meant to\nenable its users to perform tasks easily with relatively few lines of code. It intends to\nhide implementation details or low level hardware operations. The library, handles\nthe various components (i.e. the vehicle and the various sensors) as objects, therefore\nenabling trivial control over the car's functions. The various operations exposed by the API,\nare thoroughly explained in [API Documentation](https://platisd.github.io/smartcar_shield/).\nYou can find examples on how to use the library, in [/examples](/examples).\n\nThe library is versatile and is independent from the shield or specific hardware.\nParticularly, its most important feature is that it supports multiple ways of steering and\nthrottling with different types of motors. Moreover, it is possible to steer the vehicle by\nrotating the wheels on each side at a different speed, like a tank as well as by using a\nservo motor. Another option is to use a brushed DC motor for steering, a setup that is very\ncommon in cheap RC cars. Additionally, apart of the default brushed DC motors that are\nconnected to the Smartcar shield, you can also use an electronic speed controller (ESC)\nin order to drive (throttle) the vehicle, using the very same library.\n\nIf the Smartcar shield library is installed through the Library Manager of Arduino IDE, as\nrecommended, the user will receive a notification in their IDE, when new versions are released\nmaking updates particularly easy, without the need to use GitHub or git.\n\n## Reference platforms\n\n### Smartcar platform (default setup)\n\n* 1 x [Modules board (rev.2)](https://www.pcbway.com/project/shareproject/Smartcar___Modules_board_rev_2.html)\n* 1 x [Motor board (rev. 0)](https://www.pcbway.com/project/shareproject/Smartcar___Motors_board.html)\n* 4 x [Brushed motors](https://www.aliexpress.com/item/32872592243.html) (530rpm @ 12V)\n* 2 x [TXS0108E TTL level shifters](https://www.aliexpress.com/item/32472491036.html)\n* 1 x DOIT ESP32 devkit v1 (30 GPIO pins)\n* 1 x [TB6612FNG dual motor driver (Sparkfun)](https://www.sparkfun.com/products/14451)\n* 4 x M6 (30mm) screws\n* 4 x M6 nuts\n* 16 x M3 (10mm) screws\n* 16 x M3 nuts\n* 2 x [HSP 02052 Front Bumper](https://www.aliexpress.com/item/32753903115.html)\n* 10 x 6pin 2.54 pitch female pin headers\n* 2 x 15pin 2.54 pitch female pin headers\n* 1 x GY-50 gyroscope\n* 4 x [8pin 2.54 pitch long male pin headers](https://www.aliexpress.com/item/32911455899.html) (30mm long)\n* 4 x 8pin 2.54 pitch female pin headers\n* 3 x 10KOhm resistors\n* 8 x [AA battery holders](https://www.electrokit.com/produkt/batterihallare-1xaa-pcb/)\n* 1 x [DD40AJSA adjustable buck converter](https://www.aliexpress.com/item/32816584868.html)\n* 1 x [SPDT switch](https://www.tme.eu/en/details/5ms1s102am2qe/slide-switches/)\n* 4 x [VL45L0x ToF distance sensors](https://www.aliexpress.com/item/32828144370.html) (optional)\n  * 4 x 4pin 2.54 angled headers to mount the sensors vertically\n\n### Smartcar shield\n\n * Smartcar chassis\n * [Smartcar shield PCB](extras/eagle/smartcar_shield)\n * L293D H-bridge\n * GY-50 gyroscope module\n * Two odometers (speed encoders) ([[1]](http://www.aliexpress.com/item/5pcs-IR-Infrared-Slotted-Optical-Speed-Measuring-Sensor-Optocoupler-Module-For-Motor-Test-For-Arduino-PIC/32465670452.html)\n and [[2]](http://www.aliexpress.com/item/HC-020K-Double-Speed-Measuring-Sensor-Module-with-Photoelectric-Encoders-Kit-top/32453020060.html)\n will suit commercially available chassis.\n [[3]](http://www.aliexpress.com/item/Correlation-photoelectric-sensor-lot-Infrared-correlation-count-sensor-module/2038553959.html)\n require some slight modifications)\n * Male \u0026 female pin headers (optionally get stackable Arduino headers too)\n * Five 2-pin screw terminals\n * Pin jumper\n * DIP16 socket\n * 0.1uF capacitors (2)\n * 100uF capacitor\n * 9V or 12V battery pack (do not use a single 9V battery)\n\n### Supported sensors\n * Distance sensors\n    * Ultrasonic\n      * HC-SR04\n      * SRF08\n    * Infrared\n      * SHARP GP2D120\n      * SHARP GP2Y0A02\n      * SHARP GP2Y0A21\n * Gyroscopes\n   * GY-50 (L3G4200D)\n * Odometers\n   * Directional (4+ pins)\n   * Non-directional (3-pins)\n\n## How to get started\n * Assemble the vehicle\n * [Install the library](https://www.ardu-badge.com/Smartcar%20shield)\n * [Connect the motors appropriately](examples/Car/shieldMotorsTest/shieldMotorsTest.ino) (if using the shield)\n * [Getting started with the Smartcar Platform](https://www.hackster.io/platisd/getting-started-with-the-smartcar-platform-1648ad)\n\n## Dependencies\nAll dependencies should be downloaded automatically by the Arduino IDE's library manager.\n\n- [Wire library](http://arduino.cc/en/reference/Wire)\n- [Servo library](https://www.arduino.cc/en/reference/servo)\n- [ServoESP32](https://github.com/RoboticsBrno/ServoESP32)\n- [ESP32 AnalogWrite](https://github.com/ERROPiX/ESP32_AnalogWrite)\n\n## Project documentation\n* [API Documentation](https://platisd.github.io/smartcar_shield/)\n* [The Smartcar platform](http://plat.is/smartcar)\n* [Wiki](https://github.com/platisd/smartcar_shield/wiki)\n* [Turning software engineers into Makers](https://platis.solutions/blog/2016/06/17/turning-software-engineers-into-makers/)\n\n## License\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fplatisd%2Fsmartcar_shield","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fplatisd%2Fsmartcar_shield","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fplatisd%2Fsmartcar_shield/lists"}