Close
0%
0%

CHRP4 USB robotics development board

A simple, inexpensive development board for learning or teaching beginner microcontroller programming and robotics.

Public Chat
Similar projects worth following
CHRP4 (Common Hardware Robotics Project - version 4) is designed to help beginning computer technology learners quickly develop programming and interfacing skills while building simple line following, obstacle sensing, and Sumo robots.

CHRP4 is a robotics-focused derivative of UBMP4 (https://hackaday.io/project/184126-ubmp4-usb-picmicro-development-board) – the reference to ‘Common Hardware’ in its name. CHRP4 features built-in pushbuttons, LEDs, a piezo speaker, and a motor driver IC so learners can start developing programs without wiring up or breadboarding any external circuits first.

CHRP4 is programmed in C using Microchip's MPLAB X desktop IDE or the MPLAB Xpress cloud-based IDE. The on-board PIC16F1459 microcontroller can be pre-programmed with the USB µC bootloader (https://hackaday.io/project/63204-usb-c-usb-pic-bootloader) making programming as easy as dragging and dropping a compiled .hex file onto it!

Background

Implementing a successful beginner-level computer technology program presents a variety of unique challenges for both instructors and learners. CHRP4 is the fourth major version of a design that has been continuously revised and refined over more than 10 years of classroom instruction to address many of these challenges, including:

1 - Supporting all learners

It’s no surprise to any instructor that all learners are not the same. CHRP4 is designed to engage and challenge multiple levels of learners within the same classroom by being able to be assembled in a number of different configurations. This flexibility allows individual students to choose a project of most interest to them while all students use the same, common circuit board making CHRP4-based projects simpler for the instructor to support.

2 - Making learning real/relevant

CHRP 4 is designed to be both an introductory training board as well as a student’s final project. It uses through-hole components for easy assembly, in order to support students learning about electronic components and basic circuits, and incorporates real-world challenges in its programming learning activities.

Most importantly, CHRP4 was developed specifically to fulfill the goal of having each student build their own, individual take-home project that they have ownership of, rather than building typical take-apart projects, constructed on breadboards using components that have to stay behind in the classroom at the end of the course. I’ve found that ownership of their own project promotes student buy-in and, coupled with competitive final projects (such as the fastest time for a line-following robot to complete a course, or building the best Sumo robot) provides even more incentive for students to quickly learn and apply their skills as they strive to out-perform their classmates.

3 - Minimizing project costs

The CHRP4 circuit board was designed to be built in stages and in multiple configurations. This capability allows CHRP4 to either be fully completed as a single-semester project, or to be constructed over two semesters, spreading the component costs over two individual courses or years instead of one. Either way, students build CHRP4 using only the components necessary for their particular project build.

To build CHRP4 over multiple courses or years, an introductory or first year course would build CHRP4 as a (non-robotic) introductory microcontroller trainer to focus on developing students’ programming skills. Without adding the motor driver and the other components necessary to build a robot, students can make CHRP4 into a variety of other projects including: a simple music player, a reaction timer game, a Simon-style memory game, a remote control transmitter, a room alarm, a servo driver, a NeoPixel driver, and more. In a second semester, year, or advanced course, students can add the motor driver, regulator, terminal block, sensors, and motors to their existing circuit, enabling them to make line-following, obstacle sensing, remote-controlled, or Sumo robots using their same circuit board from their first course.

In addition to spreading costs over multiple courses/years, another benefit of this approach is the ease with which instructors can integrate new or beginner students into the second year/advanced course, because both courses use different forms of the same circuit board – and both share the same components and curriculum.

Another factor minimizing classroom costs is the reduced overhead required to support CHRP4 in comparison with other microcontroller circuits. Classrooms don’t need to invest in as many breadboards, jumper wires, microcontroller circuit modules, peripheral circuits, and all of the individual electronic components that will inevitably suffer breadboard damage, since all the circuitry necessary for learning using CHRP4 is a part of each student’s circuit board.

4 - Enabling deeper learning

Students learn to program CHRP4 using...

Read more »

CHRP400c.pdf

CHRP4.0 schematic diagram

Adobe Portable Document Format - 468.64 kB - 04/24/2023 at 15:43

Preview
Download

CHRP400.zip

CHRP4.0 Gerber and NC drill files

Zip Archive - 187.95 kB - 04/11/2023 at 22:12

Download

  • 1 × 1uF, 16V capacitor Ceramic monolithic or electrolytic, 0.1" lead spacing
  • 4 × 0.1uF capacitor Ceramic monolithic, 0.1" lead spacing
  • 1 × 0.47uF capacitor (X7R dielectric temp. coefficient) Ceramic monolithic, 0.1" lead spacing
  • 2 × 10uF, 50V capacitor Aluminum electrolytic, 0.1" lead spacing
  • 1 × 6-pin screw terminal block 0.2" (5.08mm) pin spacing

View all 30 components

  • PICmicro C Programming Reference

    John Rampelt08/31/2023 at 22:47 0 comments

    Beginner C coders often have difficulty with the C language syntax, especially at or below the early high school level. In order to help the students in my classes, I created and shared a PICmicro C Programming Reference document with them in Google drive.

    The order of its contents roughly align with the topic introduced in the introductory programming activities for the CHRP4 and UBMP4, so the contents can be introduced when appropriate during the lessons.

    The Google document is freely available for anyone to edit and re-mix, and can easily be modified to incorporate Arduino syntax, or other C-style language. Hopefully some people will find it useful!

  • CHRP4 Programming Activities

    John Rampelt05/28/2023 at 00:20 0 comments

    One of the best gifts a teacher can receive is time. When deciding what to teach, as well as how to teach it in order to achieve the desired curriculum outcomes, it's incredibly helpful to have some ready-made learning materials. Especially when working with a circuit that's new to you.

    Each of the introductory programming activities for CHRP4 includes a set of program analysis activities, as well as a set of programming activity challenges. These are included in comments at the bottom of each of the programs, allowing students to copy and paste code examples from the activities into their program, and modify their program to meet the challenges. Incorporating these activities into the program also simplifies assessment for both the students and the instructor, as students only have to submit one program for marking.

    A complete set of programming activities is taking shape, including five introductory programming projects to lead learners through all of the basic coding tasks that will allow them to make their own simple robots, a line-following robot starter project, and two advanced programming activities that allow learners to interface servos (including learning about interrupt code) and SONAR sensors so that they can make their CHRP4 into more advanced object-sensing and Sumo robots. 

    All of the code is available on the GitHub page

  • Addressing the challenge of beginner C language coding

    John Rampelt04/25/2023 at 18:36 0 comments

    The C language is great for beginner computer technology learners to build a better understanding of microcontroller programming and interfacing due to its close connections to the underlying hardware. Unfortunately, the C program syntax and its required supporting structure and functions can also be overwhelming for new learners, and this is why many recent beginner microcontroller boards have made the move to higher-level programming languages like Python, or use block coding.

    But, these initially easier solutions come at the expense of the user having full control over the system, and make it more difficult for learners to able to build a full understanding of how the software and hardware work together. This is especially important in a multi-year or multi-semester course that leads from introductory programming and interfacing to students eventually designing, building, testing, and programming their own microcontroller circuits.

    I have used a variety of techniques over the years to make it easier for beginners to build their programming skills in C, and these students then find it much easier to move to other programming languages and environments later due to their comprehensive understanding of the structure of typical C programs. Below are some tips that I have had great success with in my classroom.

    Treat C expressions as sentences and paragraphs

    • get students to understand that much like sentences have nouns, verbs, and end with a period, C expressions typically have nouns, verbs, and end with a semi-colon (because a period would be confused with a decimal point). For example, the C statement 'LED2 = 1;' causes the part (noun) LED2 to become equal to 1, and then the statement is done.
    • multi-part statements that work together are grouped together using curly braces (similar to paragraphs). For beginners, who often have a difficult time remembering to close curly-braced structures, I find that vertically aligning the opening and closing braces makes it much easier for them to see which parts of the code work together, or if they have forgotten a closing brace.

    Simplify the program code to expose only the main( ) function first

    • the programs for the introductory learning activities (think beginner programs, but with coding analysis and exploration activities added – described below) are split into four files. This accomplishes two main goals: simplifying the code so beginner learners are exposed to just the code in the main( ) function first, and making the code more modular and portable (the CHRP4 activities are shared with UBMP4, and the earlier CHRP3 used a different microcontroller, but the main( ) code for all three boards is the same – only the header files and support files are different). See the CHRP4 Introductory Programming Activity 1 - Input and Output program on GitHub to view the four files that make up a project, especially looking at the CHRP4-Intro-1-Input-Ouput.c file containing the main( ) function.
    • get students to understand that the main( ) code is split into two parts: one part containing statements that run only once, when the program starts, and a loop containing statements that are repeated by the microcontroller forever. This will help them to envision how the microcontroller seems to respond instantly to a button press for example, while the state of the button is actually being checked many times per second.

    Promote guided exploration and real-world/fun activities

    • two sections of activities have been added as comments below the main( ) code: Program Analysis Activities designed to help students both understand the program and to carefully scaffold related new concepts onto the program code, and Programming Activities designed to give students practice implementing their own solutions using related programming concepts. Adding these activities to the programs makes it easy for students to copy and paste the examples into their code, answer questions directly in the comments where they remain...
    Read more »

  • Building a simple robot platform

    John Rampelt04/23/2023 at 14:12 0 comments

    Full step-by-step instructions for making a simple and inexpensive robot platform using DC motors and hardware store parts have been posted to the mirobo.tech website. 

    This platform design specifically targets schools or maker spaces which have tools available to cut the wood for the bases and wheels, as well as a way of cutting the steel axle rods. While a hobbyist can use the design to build one or two robots, it makes more sense to buy the specified materials to build a class set of robots. Ideally, the facility would need to have or have access to: a table saw to cut the platforms to size and to cut the axle slot in them, a rotary tool or metal cut-off saw to cut the hardened steel axles, and a drill press with various sizes of drill bits to drill the mounting holes in the platform and axle holes in the wheels.

    The design of this platform is a great choice for beginners building line following robots and simple exploration robots as the drive system includes the ability to slip when the robot encounters an obstacle. Gear motors are a better choice for building Sumo robots, but cost significantly more if the goal is to produce an introductory robot project for youngsters as a school or maker space project. To minimize costs even more, this design can be adapted to use commonly available scrap material for the platforms (instead of buying sheets of MDF) and surplus store DC motors.

  • PCBs and KiCad design files are available!

    John Rampelt04/22/2023 at 20:26 0 comments

    CHRP4 KiCad design files have been posted to GitHub

    Pretty purple as well as beautiful black CHRP4 PCBs are available to order from OSH Park, and boring blue CHRP4 PCBs, PCB + PIC bundles, and complete CHRP4 kits are available at mirobo.tech

  • Parts list update

    John Rampelt04/19/2023 at 02:37 0 comments

    A parts list for all of the CHRP4 circuit board components has been added to the Hackaday project page, and a public list of parts is also available on Digi-Key which lists all of the Digi-Key part numbers and costs: https://www.digikey.ca/en/mylists/list/SHTZL28E58

    While all of the parts are included in both parts lists, certain parts may not be required for specific builds. The Education Starter configuration of CHRP4 is built with a minimal subset of parts to get students programming quickly.

    Building CHRP4 into a line-following, obstacle-sensing, or Sumo robot requires nearly all of the components – the primary difference between the two is the line/floor sensors. A line-following robot uses a single IR LED, and two IR phototransistors, while a Sumo robot uses two IR LEDs and two IR phototransistors.

    The IR demodulator is optional for all configurations, and allows CHRP4 to be controlled using the UBMP4 circuit or a TV remote control.

View all 6 project logs

  • 1
    Determine your CHRP4 configuration and gather the parts for your build

    CHRP4 can be built in three major configurations:

    1. Educational starter configuration – a beginner USB-C microcontroller development board with on-board pushbuttons, LEDs, and a piezo beeper. Learners can complete all of the introductory learning activities with this minimal parts, low-cost build.
    2. Line-following robot configuration – all of the components in the educational starter configuration plus a low-dropout voltage regulator, quad half-bridge motor driver, a screw terminal strip, an IR LED, and two phototransistors. This configuration is ideal for building a simple line-following robot, especially when paired with my simple robot platform design.
    3. Advanced robot configuration – all of the components in the line-following configuration plus dual IR LED and phototransistor floor sensors on break-away mini PCBs, a 4-pin header socket for an HC-SR04 ultrasonic distance sensor module, and an optional IR demodulator for remote control applications. This configuration makes it easy for beginners to build obstacle sensing robots, Sumo robots, and remote-controlled robots.

    Use the schematic diagram to determine which components are needed for the CHRP4 configuration you would like to build. The parts needed to build either of the robot configurations are labelled as optional and are shown within dashed boxes on the schematic.

    Most of the parts will be commonly available from electronic supply shops, but refer to the Digi-Key parts list for components that have been selected to work the best (e.g. high brightness IR LEDs and matching phototransistors).

    Any configuration can be upgraded to the next higher configuration, but the use of dual floor sensors in the advanced configurations requires the line sensor module to be broken off (or the component leads cut) as it shares I/O lines with the left and right floor sensors.

  • 2
    Solder the resistors and USB-C connector

    The easiest way to start assembling the CHRP4 circuit board is to install the lowest/smallest parts first, and progress to the higher, taller parts as you go. Begin with the resistors and USB-C connector.

    Solder the resistors using a small conical tip soldering iron and electronic solder. Pre-bend the resistor leads, and find each resistor's location on the PCB by cross-referencing its value to its part number on the schematic. If you're new to soldering, this Soldering is Easy comic has some great soldering tips!

    After getting some practice soldering the resistors, carefully solder the USB-C connector by 'drag soldering' using a flat blade soldering iron tip. See the video below for a demonstration of how to do it:

    This CHRP4 build is going to become a line-following robot and has almost all of the resistors added to the main part of the board. It leaves the resistors for the break-away floor sensor modules unpopulated, as well as an isolation resistor for the IR demodulator.

  • 3
    Solder the IC sockets and ferrite inductor

    Align the notch molded into each IC socket with the painted notch on the CHRP4 PCB silkscreen and insert one socket at a time into the printed circuit board. Solder one pin on each side of the first socket to keep it in place, and then check the socket to see if it is installed straight or needs adjustment before soldering the rest of the pins. Repeat the same steps for the second IC socket.

    Bend the leads on the ferrite inductor (it's an un-marked grey cylinder) and install it into the circuit board the same way you did for the resistors. Its orientation does not matter. 

View all 15 instructions

Enjoy this project?

Share

Discussions

John Rampelt wrote 04/21/2023 at 23:59 point

Good question. It really depends on where and how they can source the parts. I'm assuming you're asking about the platform that the circuit is built on. As a teacher, I was often able to get better deals through bulk purchases, or even donations of materials. A local surplus store would sell us 6V DC motors at $1.00 each for example. A local company would donate scrap UHMW plastic end-cuts that could be used instead of MDF for the robot platforms.

The platform parts have been specifically chosen for the scale of a typical classroom or maker space project – eg. buy a sheet of MDF and cut it up for the platforms, buy a 4' dowel and cut it into wheels, and buy 3' lengths of music wire and cut them to size for axles – not for a one-off build. A typical build that involves buying all of the parts should come in at under $10 per robot platform.

Of course, the PCB and electronics are on top of that, and I hope that other teachers or makerspaces will be able to build their own circuits using the files in this project.

  Are you sure? yes | no

Peabody1929 wrote 04/21/2023 at 21:56 point

What is the total cost for a student to duplicate the platform?

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates