Introducing Maker Pi RP2040

Cytron Technologies has done it again, this time by releasing an in-house designed complete robotics controller board, based on the brand new RP2040 MCU from the Raspberry Pi Foundation.

This post will be part one of a detailed look at this new product.. So, as it is an introduction, lets get some technical specs and features…

Features:

  • Powered by Rapberry Pi RP2040
    • Dual-core Arm Cortex-M0+ processor
    • 264KB internal RAM
    • 2MB of Flash memory
    • the exact same specifications with Raspberry Pi Pico
  • Robot controller board
    • 4x Servo motors
    • 2x DC motors with quick test buttons
  • Versatile power circuit
    • Automatic power selection: USB 5V, LiPo (1-cell) or Vin (3.6-6V)
    • Built-in 1-cell LiPo/Li-Ion charger (over-charged & over-discharged protection)
    • Power on/off switch
  • 13x Status indicator LEDs for GPIO pins
  • 1x Piezo buzzer with mute switch
  • 2x Push button
  • 2x RGB LED (Neopixel)
  • 7x Grove ports (flexible I/O options: digital, analog, I2C, SPI, UART…)
  • Preloaded with CircuitPython by default
  • Mouting holes
    • 4x 4.8mm mounting hole (LEGO® pin compatible)
    • 6x M3 screw hole



Cytron Maker Pi RP2040 features the first micro-controller designed by Raspberry Pi – RP2040, embedded on a robot controller board. The board also comes with dual channel DC motor driver, 4 servo motor ports and 7 Grove I/O connectors, ready for your next DIY robot / motion control project. Now you can build robot, while trying out the new RP2040 chip.

The DC motor driver onboard is able to control 2x brushed DC motors or 1x bipolar/unipolar stepper motor rated from 3.6V to 6V, providing up to 1A current per channel continuously. The built-in Quick Test buttons and motor output LEDs allow functional test of the motor driver in a quick and convenient way, without the need of writing any code. Vmotor for both DC and servo motors depends on the input voltage supplied to the board.

ker Pi RP2040 features all the goodness of Cytron’s Maker series products. It too has lots of LEDs useful for troubleshooting (& visual effects), is able to make quite some noise with the onboard piezo buzzer and comes with push buttons ready to detect your touch.

There are three ways to supply power to the Maker Pi RP2040 – via USB (5V) socket, with a single cell LiPo/Li-Ion battery or through the VIN (3.6-6V) terminals. However only one power source is needed to power up both controller board and motors at a time. Power supply from all these power sources can all be controlled with the power on/off switch onboard.

Cytron Maker Pi RP2040 is basically the Raspberry Pi Pico + Maker series’ goodness + Robot controller & other useful features. Therefore this board is compatible with the existing Pico ecosystem. Software, firmware, libraries and resources that are developed for Pico should work seamlessly with Cytron Maker Pi RP2040 too.

CircuitPython is preloaded on the Maker Pi RP2040 and it runs a simple demo program right out-of-the-box. Connect it to your computer via USB micro cable and turn it on, you will be greeted by a melody tune and LEDs running light. Press GP20 and GP21 push buttons to toggle the LEDs on/off, while controlling any DC and servo motors connected to it to move and stop. With this demo code, you get to test the board the moment you receive it!


 Out-of-the-box Demo for Cytron Maker Pi RP2040
  
 This demo code is written in CircuitPython and it serves
 as an easy quality check when you first receive the board.
 #
 It plays a melody upon power up (slide power switch to ON)
 and shows running lights (blue LEDs) at the same time.
 Then the two RGB LEDs will animate the colors, while the
 program checking push buttons' state, repeatedly.
  
 Press GP20 button to play a short melody, lights up all
 blue LEDs, move servo motors to 0 degree and run DC motors
 at 50% and -50% speeds.
 Press GP21 button to play another melody, turn off all blue
 LEDs, move servo motors to 180 degree & brake DC motors.
  
 Maker Pi RP2040 also has four DC motors quick test buttons
 built-in. You may press the onboard M1A, M1B, M2A or M2B
 push buttons to run your motors without writing any code.
 #
 More info:
 http://www.cytron.io/p-maker-pi-rp2040
 https://circuitpython.org/board/raspberry_pi_pico
 #
 Email: support@cytron.io
 *
 import board
 import digitalio
 import neopixel
 import simpleio
 import time
 import pwmio
 from adafruit_motor import servo, motor
 Initialize LEDs
 LEDs placement on Maker Pi RP2040
 LED_PINS = [board.GP0, 
             board.GP1,
             board.GP2,
             board.GP3,
             board.GP4,
             board.GP5,
             board.GP6,
             board.GP7,
             board.GP16,
             board.GP17,
             board.GP26,
             board.GP27,
             board.GP28]
 LEDS = []
 for pin in LED_PINS:
     # Set pins as digital output
     digout = digitalio.DigitalInOut(pin)
     digout.direction = digitalio.Direction.OUTPUT
     LEDS.append(digout)
 Initialize Neopixel RGB LEDs
 pixels = neopixel.NeoPixel(board.GP18, 2)
 pixels.fill(0)
 Melody
 MELODY_NOTE = [659, 659, 0, 659, 0, 523, 659, 0, 784]
 MELODY_DURATION = [0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.15, 0.2]
 Define pin connected to piezo buzzer
 PIEZO_PIN = board.GP22
 Initialize buttons
 btn1 = digitalio.DigitalInOut(board.GP20)
 btn2 = digitalio.DigitalInOut(board.GP21)
 btn1.direction = digitalio.Direction.INPUT
 btn2.direction = digitalio.Direction.INPUT
 btn1.pull = digitalio.Pull.UP
 btn2.pull = digitalio.Pull.UP
 Initialize servos
 50% duty cycle: 2**15 = 32768 = 1/2 of 65536 (16-bit)
 servo_motors = []  # create an array and add servo objects.
 servo_motors.append(servo.Servo(pwmio.PWMOut(board.GP12, duty_cycle=215, frequency=50))) servo_motors.append(servo.Servo(pwmio.PWMOut(board.GP13, duty_cycle=215, frequency=50)))
 servo_motors.append(servo.Servo(pwmio.PWMOut(board.GP14, duty_cycle=215, frequency=50))) servo_motors.append(servo.Servo(pwmio.PWMOut(board.GP15, duty_cycle=215, frequency=50)))
 Initialize DC motors
 m1a = pwmio.PWMOut(board.GP8, frequency=50)
 m1b = pwmio.PWMOut(board.GP9, frequency=50)
 motor1 = motor.DCMotor(m1a, m1b)
 m2a = pwmio.PWMOut(board.GP10, frequency=50)
 m2b = pwmio.PWMOut(board.GP11, frequency=50)
 motor2 = motor.DCMotor(m2a, m2b)
 -------------------------------------------------
 ON START: Show running light and play melody
 -------------------------------------------------
 for i in range(len(LEDS)):
     LEDS[i].value = True
 if i < len(MELODY_NOTE):     # Play melody tones     simpleio.tone(PIEZO_PIN, MELODY_NOTE[i], duration=MELODY_DURATION[i]) else:     # Light up the remainding LEDs     time.sleep(0.15)
 Turn off LEDs one-by-one very quickly
 for i in range(len(LEDS)):
     LEDS[i].value = False
     time.sleep(0.02)
 color = 0
 state = 0
 -------------------------------------------------
 FOREVER LOOP: Check buttons & animate RGB LEDs
 -------------------------------------------------
 while True:
 # Check button 1 (GP20) if not btn1.value:  # button 1 pressed     # Light up all LEDs     for i in range(len(LEDS)):         LEDS[i].value = True     # Move servos to 0 degree     for i in range(len(servo_motors)):         servo_motors[i].angle = 0     # Move motors at 50% speed     motor1.throttle = 0.5  # motor1.throttle = 1 or -1 for full speed     motor2.throttle = -0.5     # Play tones     simpleio.tone(PIEZO_PIN, 262, duration=0.1)     simpleio.tone(PIEZO_PIN, 659, duration=0.15)     simpleio.tone(PIEZO_PIN, 784, duration=0.2) # Check button 2 (GP21) elif not btn2.value:  # button 2 pressed     # Turn off all LEDs     for i in range(len(LEDS)):         LEDS[i].value = False     # Move servos to 180 degree     for i in range(len(servo_motors)):         servo_motors[i].angle = 180     # Brake motors     motor1.throttle = 0  # motor1.throttle = None to spin freely     motor2.throttle = 0     # Play tones     simpleio.tone(PIEZO_PIN, 784, duration=0.1)     simpleio.tone(PIEZO_PIN, 659, duration=0.15)     simpleio.tone(PIEZO_PIN, 262, duration=0.2) # Animate RGB LEDs if state == 0:     if color < 0x101010:         color += 0x010101   # increase rgb colors to 0x10 each     else:         state += 1 elif state == 1:     if (color & 0x00FF00) > 0:         color -= 0x000100   # decrease green to zero     else:         state += 1 elif state == 2:     if (color & 0xFF0000) > 0:         color -= 0x010000   # decrease red to zero     else:         state += 1 elif state == 3:     if (color & 0x00FF00) < 0x1000:         color += 0x000100   # increase green to 0x10     else:         state += 1 elif state == 4:     if (color & 0x0000FF) > 0:         color -= 1          # decrease blue to zero     else:         state += 1 elif state == 5:     if (color & 0xFF0000) < 0x100000:         color += 0x010000   # increase red to 0x10     else:         state += 1 elif state == 6:     if (color & 0x00FF00) > 0:         color -= 0x000100   # decrease green to zero     else:         state += 1 elif state == 7:     if (color & 0x00FFFF) < 0x001010:         color += 0x000101   # increase gb to 0x10     else:         state = 1 pixels.fill(color)  # fill the color on both RGB LEDs # Sleep to debounce buttons & change the speed of RGB color swipe time.sleep(0.05)

Maker Pi RP2040 VS. Maker Pi Pico?

29 thoughts on “Introducing Maker Pi RP2040”

  1. Pingback: ICYMI Python on Microcontrollers Newsletter: New CircuitPython Releases, RP2040 Singles and more! #Python #ICYMI #CircuitPython @micropython @ThePSF « Adafruit Industries – Makers, hackers, artists, designers and engineers!

  2. Pingback: ICYMI Python on Microcontrollers Newsletter: New CircuitPython Releases, RP2040 Singles and more! #Python #ICYMI #CircuitPython @micropython @ThePSF – Best Soundcloud Rappers 2019

  3. you are in point of fact a just right webmaster.
    The web site loading speed is amazing. It seems that
    you are doing any unique trick. Furthermore, The contents are masterwork.
    you have done a excellent task on this matter!

  4. shayne_pilpel@gmail.com

    Hey There. I found your blog using msn. This is an extremely well written article.
    I’ll make sure to bookmark it and return to read more of your useful info.

    Thanks for the post. I will definitely return.

  5. BrindaBoehman63977@yahoo.com

    What抯 Taking place i’m new to this, I stumbled upon this I have found It positively helpful and it has aided me out loads. I’m hoping to contribute & help different customers like its aided me. Great job.

  6. Bredesen@aol.com

    411490 289757Youre so cool! I dont suppose Ive learn anything like this before. So nice to find any person with some authentic thoughts on this subject. realy thank you for starting this up. this website is something that is wanted on the internet, someone with a little bit originality. useful job for bringing something new to the web! 527417

  7. branden.suggs@gmail.com

    Quality posts is the key to invite the visitors to pay a quick visit
    the web page, that’s what this web page is providing.

  8. DebbiMatye75116@yahoo.com

    I would like to thank you for the efforts you’ve put in writing this web site. I’m hoping the same high-grade web site post from you in the upcoming as well. Actually your creative writing skills has encouraged me to get my own site now. Actually the blogging is spreading its wings quickly. Your write up is a good example of it.

  9. ashleygoldman@arcor.de

    Excellent post. I was checking constantly this weblog and I’m inspired!

    Extremely helpful info specially the closing phase 🙂 I take care of such info a lot.

    I used to be seeking this certain information for a very lengthy time.
    Thanks and good luck.

  10. kendrickbryan@bigstring.com

    Very rapidly this web page will be famous among all blog visitors, due to it’s good articles or reviews

  11. adelinejoiner@googlemail.com

    Woah! I’m really enjoying the template/theme of this
    website. It’s simple, yet effective. A lot
    of times it’s challenging to get that “perfect balance” between user friendliness and
    visual appeal. I must say you’ve done a very good job with this.
    Also, the blog loads extremely fast for me on Firefox.

    Exceptional Blog!

  12. rogereddy@t-online.de

    Wow, wonderful blog layout! How long have you been blogging ?
    you make blogging look easy. The overall look of your website is wonderful, let alone the content!

  13. pattisuttor@yahoo.de

    Appreciating the dedication you put into your blog and detailed information you present.
    It’s great to come across a blog every once in a while that
    isn’t the same unwanted rehashed material.
    Wonderful read! I’ve bookmarked your site and I’m including
    your RSS feeds to my Google account.

  14. Heya outstanding blog! Does running a blog similar to this take a great deal of work?
    I have no expertise in coding but I had been hoping to
    start my own blog soon. Anyhow, should you have any recommendations or techniques for new blog owners please share.
    I understand this is off topic however I simply needed to ask.
    Kudos!

  15. ValarieAckah19053@hotmail.com

    Excellent beat ! I would like to apprentice while you amend your web site, how could i subscribe for a blog website? The account aided me a acceptable deal. I had been tiny bit acquainted of this your broadcast provided bright clear idea

  16. My spouse and I stumbled over here by a different website and thought I may as well check
    things out. I like what I see so now i’m following you.
    Look forward to checking out your web page again.

  17. NeelyMunyer86465@hotmail.com

    magnificent publish, very informative. I’m wondering why the opposite specialists of this sector don’t realize this. You must proceed your writing. I am sure, you have a huge readers’ base already!

  18. LouisFerraris66159@hotmail.com

    There is noticeably a bundle to learn about this. I assume you made sure nice points in features also.

  19. BrandonBedor64244@hotmail.com

    Do you mind if I quote a few of your posts as long as I provide credit and sources back to your weblog? My blog site is in the very same niche as yours and my visitors would really benefit from a lot of the information you present here. Please let me know if this okay with you. Appreciate it!

  20. DannieQualey8857@hotmail.com

    Hello my friend! I wish to say that this post is amazing, great written and include almost all vital infos. I抎 like to see extra posts like this .

  21. LadonnaWestrich22197@hotmail.com

    Hey would you mind stating which blog platform you’re using? I’m looking to start my own blog in the near future but I’m having a tough time selecting between BlogEngine/Wordpress/B2evolution and Drupal. The reason I ask is because your layout seems different then most blogs and I’m looking for something unique. P.S Apologies for getting off-topic but I had to ask!

  22. LudivinaHupman74985@hotmail.com

    Fantastic website. Lots of useful info here. I抦 sending it to several friends ans also sharing in delicious. And naturally, thanks for your effort!

  23. LingHaslem27047@hotmail.com

    I’m typically to running a blog and i actually admire your content. The article has really peaks my interest. I am going to bookmark your website and keep checking for new information.

  24. RayLomax30440@hotmail.com

    ####?remarkable issues here. I抦 very glad to look your post. Thank you a lot and i’m having a look ahead to touch you. Will you please drop me a e-mail?

  25. OletaBommer80366@hotmail.com

    fantastic points altogether, you just gained a new reader. What would you recommend about your post that you made a few days ago? Any positive?

  26. EulaliaGrindeland78888@hotmail.com

    I am often to running a blog and i really appreciate your content. The article has really peaks my interest. I’m going to bookmark your site and preserve checking for new information.

Leave a Reply

Your email address will not be published. Required fields are marked *