The software and hardware repository for the Smartcar platform
Clone or download
platisd Merge pull request #10 from per1234/keywords_txt-multiple-tabs
Use a single tab field separator in keywords.txt
Latest commit a1da6fe Jul 15, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
examples typo fix, thanks to NickCh1996/smartcar_shield@017fc0c Jul 23, 2016
extras chassis in dxf format without axes or dimensions for easier milling i… Feb 11, 2016
src Fix runaway issues in cruise control May 19, 2018
.gitignore ignore static code analysis files Jul 19, 2016
LICENSE Fix wording Apr 7, 2018
keywords.txt Use a single tab field separator in keywords.txt Jul 15, 2018 Bump library version with runaway fix May 22, 2018

Smartcar shield



This repository, includes everything necessary to set up a Smartcar platform. The Smartcar, is a vehicular educational platform, which enables the user to develop various robotic applications in an affordable, pedagogic and easy way. It is intended for persons with basic programming knowledge and little to no experience of electronics, mechanics or robotics. More experienced users, should also find this approach convenient, due to its open source nature, high level API and object oriented design.

The platform, hardware wise is focused (but not explicitely dependent) around the Smartcar shield. The Smartcar shield is an open hardware PCB, that is effortlessly stacked on top of an Arduino. It includes an L293D H-bridge chip, that drives the motors, screw terminals to connect the motors and a battery to them and a GY-50 gyroscope module (based on the L3G4200D sensor). In extras/eagle/smartcar_shield you can find the design files for the board, in a modifiable form, using free software. There are also the options, to order it as-is, from either USA or China based manufacturers. The Smartcar shield, facilitates efficient cable management, helps to preserve space and is as small as possible, in order to keep the manufacturing price low. Additionally, the components necessary to assemble it, are widely available over the Internet. Furthermore, you can find 2D CAD drawings of the Smartcar chassis in various formats, at /extras/cad/2D which you can freely use in order to fabricate your own, e.g. with a milling machine or a laser cutter.

The software, is the Smartcar shield Arduino library. It sports a high level API, meant to enable its users to perform tasks easily, with as few lines of code possible. It intends to hide implementation details or low level hardware operations, that might estrange the average user. The library, handles the various components (i.e. the vehicle and the various sensors) as objects, therefore enabling trivial control over the car's functions. The various operations exposed by the API, are thoroughly explained in wiki/API-documentation. You can find examples on how to use the library, in /examples.

The library is versatile and is relatively independent from the shield or specific hardware. Particularly, its most important feature is that it supports multiple ways of steering and throttling. Moreover, it is possible to steer the vehicle by rotating the wheels on each side at a different speed, like a tank, but also by using a servo motor instead. Moreover, another option is to use a brushed DC motor for steering, a setup that is very common in cheap RC cars. Additionally, apart of the default brushed DC motors that are connected to the Smartcar shield, you can also use an electronic speed controller (ESC) in order to drive (throttle) the vehicle, using the very same library.

If the Smartcar shield library, is installed through the Library Manager of Arduino IDE, as recommended, the user will receive a notification in their IDE, when new versions are released, making updates particularly easy, without the need to use GitHub or git.

Materials needed (default setup)

  • Smartcar chassis
  • Smartcar shield PCB
  • L293D H-bridge
  • GY-50 gyroscope module
  • Two speed encoders ([1] and [2] will suit commercially available chassis. [3] require some slight modifications)
  • Male & female pin headers (optionally get stackable arduino headers too)
  • Five 2-pin screw terminals
  • Pin jumper
  • DIP16 socket
  • 9V or 12V battery pack (do not use a single 9V battery)

Supported sensors

  • Distance sensors
    • Ultrasonic
      • HC-SR04
      • SRF08
    • Infrared
      • SHARP GP2D120
      • SHARP GP2Y0A02
      • SHARP GP2Y0A21
  • Gyroscopes
    • GY-50 (L3G4200D)
  • IMUs

How to get started



You can utilize the object oriented design of this library in order to easily extend it. Have a look at the Library Architecture and check out these already existing extensions:

Project documentation



The license is adopted due to using parts of the NewPing library, back when it was released under GPL. Newer versions of the NewPing library are unfortunately not open source anymore. Any pull requests that will enable us to get rid of NewPing code, thus enable to change the license to something more permissive, are more than welcome.