element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • About Us
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Raspberry Pi
  • Products
  • More
Raspberry Pi
Raspberry Pi Forum Pico with HC-05 - how do you get it to work?
  • Blog
  • Forum
  • Documents
  • Quiz
  • Events
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Raspberry Pi to participate - click to join for free!
Featured Articles
Announcing Pi
Technical Specifications
Raspberry Pi FAQs
Win a Pi
Raspberry Pi Wishlist
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • State Not Answered
  • Replies 13 replies
  • Subscribers 661 subscribers
  • Views 3433 views
  • Users 0 members are here
Related

Pico with HC-05 - how do you get it to work?

gregaryb
gregaryb over 2 years ago

image

I am using GP17 and GP16 as Rx and Tx connected directly to the HC-05 Tx and Rx pins (cross connected)
I am powering the HC-05 with 5V from the Pico Vbus pin.

I have a voltage trimpot divider on the HC-05 pin Tx pin to make sure the voltage stays under 3.3V.
I am connecting to the HC-05 with Android SerialBluetooth app and sending "XXXXX" with carriage return and new line.

Code on my Pico running in Thony on Windows 10

But it just isn't working. There is not data received in Thonny.

With Arduino all this (with equivalent C) just works.

So what am I missing with Pico and micropython?

from MotorControllerLibrary import *
from machine import UART, Pin
import time

# enable     GP2
# in1         GP3
# in2        GP4
# enable    GP6
# in3        GP7
# in4        GP8
serial = UART(0, baudrate = 9600, tx = Pin(16), rx = Pin(17))

while True:
    if (serial.any == True):
        strCommand = serial.readline()
        print(strCommand)

  • Sign in to reply
  • Cancel
  • shabaz
    0 shabaz over 2 years ago

    Hi,

    I've not used the HC-05, but what you're doing sounds reasonable, I can't see an immediately glaring fault.

    What value resistors are you using on that TX line from the HC-05?

    It might be good to put a time.sleep(0.1) or similar after the serial = UART.. command, just in case a delay is needed for the serial to set itself up.

    Also, you could try to use the .readinto method instead of .readline, in case there's a difference.

    To debug further you might need to attach the UART to another USB-UART device instead of the HC-05, so that you can inject characters perhaps. It's a bit annoying having to do all this but I can't think of much more, unless you can find existing code for HC-05 with MicroPython.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • gregaryb
    0 gregaryb over 2 years ago in reply to shabaz

    It is a trimpot shabaz. I just adjusted it until I got about 3.2V out from 5V.

    What is with this 3 x UART0 anyway?

    It is 3 independent sets of UART pins or is it a single UART with multiple pairs of pins you can use with it?

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • shabaz
    0 shabaz over 2 years ago in reply to gregaryb

    Hi,

    UART0 is a single UART, and you can use any of those three sets of pins designated UART0. Similarly, there is a second UART called UART1 and that can be internally configured to use any of the designated pins for that.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • gregaryb
    0 gregaryb over 2 years ago in reply to shabaz

    And is UART0 also connected to the USB socket?
    In a similar way to 'Serial' (as opposed to Serial1, Serial2, Serial3 on Mega) on Arduino is.
    On Arduino you just can't use Serial for debugging and communicating with a serial device at the same time.

    If this is the same with UART0 on Pico then perhaps that is why I can't get it to work with HC-05?

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • shabaz
    0 shabaz over 2 years ago in reply to gregaryb

    Hi,

    No, UART0 isn't tied to serial debug , it's normal to use it in your MicroPython code configured to pins as you have done. It certainly can be used for serial debug but you've configured it correctly from what I can tell.  

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • Jan Cumps
    0 Jan Cumps over 2 years ago in reply to gregaryb

    A voltage divider doesn't work well to level-shift digital signals.  Because it creates a filter with input capacity, it slants the signal edges.

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • dougw
    0 dougw over 2 years ago

    Are you sure the HC05 is 9600 baud? I've had some that defaulted to other baud rates.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • dougw
    0 dougw over 2 years ago

    The HC05 runs off 3.3V. It often has a carrier card that has a regulator to interface to 5V MCUs, but you can bypass/remove all of that if you want.

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • gregaryb
    0 gregaryb over 2 years ago in reply to Jan Cumps

    Well they work good enough in most cases, with Arduino at least.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
  • gregaryb
    0 gregaryb over 2 years ago in reply to shabaz

    This worked finally:

    serial = UART(0, baudrate = 9600, tx = Pin(16), rx = Pin(17), timeout = 10000)
    strCommand = serial.readline()
    print(strCommand)

    The addition of 'timeout = 10000' made the difference.

    But that was an educated guess.

    No help from the Python doco.

    It is about as useful as *** on a bull, unless you already know how to use the classes.

    The same as Microsoft's documentation for their Microsoft Foundation Classes.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Verify Answer
    • Cancel
>
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube