Python Tutorials – Lesson 13 – L298N Motor Driver Module control double DC Motor using Raspberry Pi Pico

To control 2 DC motors with directional and speed control

Required Components

  1. L298N Motor Driver Module_1 no
  2. Raspberry Pi Pico_1 no
  3. DC Motor(gear)_2 no
  4. 12V Battery_1 no
  5. Data Cable_1 no
  6. Connecting Wires_4 no

Circuit

Steps

  1. Make sure the components are working properly.
  2. Connect the 12V Battery to the L298N Motor Driver.
  3. Connect the ENA, IN1, IN2, IN3, IN4, ENB pins to the Raspberry Pi Pico board pins GP7, GP5, GP4, GP3, GP2, GP6 properly.
  4. Connect the DC motor pins to the motor driver output pins.
  5. Connect the ground connection respectively.
  6. Check the Electrical Circuit.
  7. Check the Python program.
  8. Run the Python program.

Python Program

from machine import Pin
import utime
 
m1 = Pin(5, Pin.OUT)
m2 = Pin(4, Pin.OUT)
m3 = Pin(3, Pin.OUT)
m4 = Pin(2, Pin.OUT)
 
en1 = Pin(6, Pin.OUT)
en2 = Pin(7, Pin.OUT)
 
en1(1)  # motor 1 enable, set value 0 to disable
en2(1)  # motor 2 enable, set value 0 to disable
 
while True:
    #Both Motor in forward direction
    m1(1)
    m2(0)
    m3(1)
    m4(0)
    utime.sleep(1)
    #Both Motor in Reverse direction
    m1(0)
    m2(1)
    m3(0)
    m4(1)
    utime.sleep(1)
    #Both Motor in stop position
    m1(0)
    m2(0)
    m3(0)
    m4(0)
    utime.sleep(5)
    

Python Tutorials – Lesson 12 – L298N Motor Driver Module control single DC Motor using Raspberry Pi Pico

To control 1 DC motor with directional and speed control

Required Components

  1. L298N Motor Driver Module_1 no
  2. Raspberry Pi Pico_1 no
  3. DC Motor(gear)_1 no
  4. 12V Battery_1 no
  5. Data Cable_1 no
  6. Connecting Wires_4 no

Circuit

Steps

  1. Make sure the components are working properly.
  2. Connect the 12V Battery to the L298N Motor Driver.
  3. Connect the ENA, IN1, IN2 pins to the Raspberry Pi Pico board pins GP4, GP2, GP3 properly.
  4. Connect the DC motor pins to the motor driver output pins.
  5. Connect the ground connection respectively.
  6. Check the Electrical Circuit.
  7. Check the Python program.
  8. Run the Python program.

Python Program

from machine import Pin
import utime
 
m1 = Pin(2, Pin.OUT)
m2 = Pin(3, Pin.OUT)
 
en1 = Pin(4, Pin.OUT)
 
en1(1)  # motor 1 enable, set value 0 to disable
 
while True:
    #Both Motor in forward direction
    m1(1)
    m2(0)
    utime.sleep(1)
    #Both Motor in Reverse direction
    m1(0)
    m2(1)
    utime.sleep(1)
    #Both Motor in stop position
    m1(0)
    m2(0)
    utime.sleep(5)

Python Tutorials – Lesson 15 – 4×4 Matrix Keypad Module using Raspberry Pi Pico

To control 4×4 Matrix Keypad Module using Raspberry Pi Pico

Required Components

  1. 4×4 Matrix Keypad_1 no
  2. Raspberry Pi Pico board_1 no
  3. Data Cable_1 no
  4. Connecting Wires_8 no

Circuit

Steps

  1. Make sure the components are working properly.
  2. 4×4 Matrix keypad 1 to 8 pins connected to GP1 to GP8 of Raspberry Pi Pico Board respectively.
  3. Check the Python program.
  4. Check the Electrical Circuit.
  5. Run the Python program.

Python Program

from machine import Pin
import utime

# define PINs according to cabling
# following array matches 1,2,3,4 PINs from 4x4 Keypad Matrix
col_list=[1,2,3,4]
# following array matches 5,6,7,8 PINs from 4x4 Keypad Matrix
row_list=[5,6,7,8]

# set row pins to output and change array elements from
#    int to Pin objects, all set to high
for x in range(0,4):
    row_list[x]=Pin(row_list[x], Pin.OUT)
    row_list[x].value(1)

# set columns pins to input and change array elements 
#   from int to Pin objects. We'll read user input here
for x in range(0,4):
    col_list[x] = Pin(col_list[x], Pin.IN, Pin.PULL_UP)

# Create a map between keypad buttons and chars
key_map=[["D","#","0","*"],\
         ["C","9","8","7"],\
         ["B","6","5","4"],\
         ["A","3","2","1"]]

def Keypad4x4Read(cols,rows):
  for r in rows:
    r.value(0)
    result=[cols[0].value(),cols[1].value(),cols[2].value(),cols[3].value()]
    if min(result)==0:
      key=key_map[int(rows.index(r))][int(result.index(0))]
      r.value(1) # manages key keept pressed
      return(key)
    r.value(1)

# Start the main loop
print("--- Ready to get user inputs ---")
while True:
    key=Keypad4x4Read(col_list, row_list)
    if key != None:
      print("You pressed: "+key)
      utime.sleep(0.3) # gives user enoght time to release without having double inputs

Python Tutorials – Lesson 14 – 4×3 Matrix Keypad Module using Raspberry Pi Pico

To control 4×3 Matrix Keypad Module using Raspberry Pi Pico

Required Components

  1. 4×3 Matrix Keypad_1 no
  2. Raspberry Pi Pico board_1 no
  3. Data Cable_1 no
  4. Connecting Wires_8 no

Circuit

Steps

  1. Make sure the components are working properly.
  2. 4×3 Matrix keypad 1 to 7 pins connected to GP1 to GP7 of Raspberry Pi Pico Board respectively.
  3. Check the Python program.
  4. Check the Electrical Circuit.
  5. Run the Python program.

Python Program

from machine import Pin
import utime

# define PINs according to cabling
# following array matches 1,2,3 PINs from 3x4 Keypad Matrix
col_list=[1,2,3]
# following array matches 4,5,6,7 PINs from 3x4 Keypad Matrix
row_list=[4,5,6,7]

# set row pins to output and change array elements from
#    int to Pin objects, all set to high
for x in range(0,4):
    row_list[x]=Pin(row_list[x], Pin.OUT)
    row_list[x].value(1)

# set columns pins to input and change array elements 
#   from int to Pin objects. We'll read user input here
for x in range(0,3):
    col_list[x] = Pin(col_list[x], Pin.IN, Pin.PULL_UP)

# Create a map between keypad buttons and chars
key_map=[["#","0","*"],\
         ["9","8","7"],\
         ["6","5","4"],\
         ["3","2","1"]]

def Keypad3x4Read(cols,rows):
  for r in rows:
    r.value(0)
    result=[cols[0].value(),cols[1].value(),cols[2].value()]
    if min(result)==0:
      key=key_map[int(rows.index(r))][int(result.index(0))]
      r.value(1) # manages key keept pressed
      return(key)
    r.value(1)

# Start the main loop
print("--- Ready to get user inputs ---")
while True:
    key=Keypad3x4Read(col_list, row_list)
    if key != None:
      print("You pressed: "+key)
      utime.sleep(0.3) # gives user enoght time to release without having double inputs

Python Tutorials – Lesson 11 – Ultrasonic Sensor Module with OLED using Raspberry Pi Pico

To control Ultrasonic sensor with OLED using Raspberry Pi Pico

Required Components

  1. Ultrasonic sensor board_1 no
  2. OLED Display_1 no
  3. Raspberry Pi Pico board_1 no
  4. Data Cable_1 no
  5. Connecting Wires_8 no

Circuit

Steps

  1. Make sure the components are working properly.
  2. Ultrasonic Sensor board VCC, GND connected to VBus, GND of Raspberry Pi Pico Board.
  3. Connect Ultrasonic sensor Board echo, trigger pin to the Raspberry Pi Pico Board GP2, GP3 pin.
  4. OLED board VCC, GND connected to 3V3 (OUT), GND of Raspberry Pi Pico Board.
  5. OLED board SCL, SDA connected to GP16, GP17 of Raspberry Pi Pico Board.
  6. Check the Python program.
  7. Check the Electrical Circuit.
  8. Run the Python program.

Python Program

from machine import Pin, I2C
from ssd1306 import SSD1306_I2C
import utime
trigger = Pin(3, Pin.OUT)
echo = Pin(2, Pin.IN)
def ultrasonnic():
    timepassed=0
    trigger.low()
    utime.sleep_us(2)
    trigger.high()
    utime.sleep_us(5)
    trigger.low()
    while echo.value() == 0:
        signaloff = utime.ticks_us()
    while echo.value() == 1:
        signalon = utime.ticks_us()
    timepassed = signalon - signaloff
    return timepassed
WIDTH  = 128                                            # oled display width
HEIGHT = 64                                            # oled display height
i2c = I2C(0, scl=Pin(17), sda=Pin(16), freq=200000)       # Init I2C using pins GP8 & GP9 (default I2C0 pins)
print("I2C Address      : "+hex(i2c.scan()[0]).upper()) # Display device address
print("I2C Configuration: "+str(i2c))                   # Display I2C config
oled = SSD1306_I2C(WIDTH, HEIGHT, i2c)                  # Init oled display
 # Clear the oled display in case it has junk on it.
oled.fill(0)
# Add some text
oled.text("CIRCUIT DIGEST",5,8)
oled.text("INTERFACING THE",5,30)
oled.text("ULTRASONNIC",28,40)
oled.text("SENSOR",50,50)
# Finally update the oled display so the image & text is displayed
oled.show()
utime.sleep(4)
while True:
    oled.fill(0)
    measured_time = ultrasonnic()     
    distance_cm = (measured_time * 0.0343) / 2
    distance_cm = round(distance_cm,2)
    oled.text("<ObjectDistance>",0,8)
    oled.text(">> "+str(distance_cm)+" cm",2,25)
    oled.show()
    utime.sleep(1)  

Python Tutorials – Lesson 10 – OLED Display Module using Raspberry Pi Pico

Print Robolabz in OLED Display using Raspberry Pi Pico

Required Components

  1. OLED Display_1 no
  2. Raspberry Pi Pico board_1 no
  3. Data Cable_1 no
  4. Connecting Wires_8 no

Circuit

Steps

  1. Make sure the components are working properly.
  2. OLED Display board VCC, GND connected to 3V3 (OUT), GND of Raspberry Pi Pico Board.
  3. Connect OLED Display Board SCK, SDA pin to the Raspberry Pi Pico Board GP1, GP0 pin.
  4. Check the Python program.
  5. Check the Electrical Circuit.
  6. Run the Python program.

Python Program

from machine import Pin, I2C
from ssd1306 import SSD1306_I2C

i2c=I2C(0,sda=Pin(0), scl=Pin(1), freq=400000)
oled = SSD1306_I2C(128, 64, i2c)

oled.text("ROBOLABZ", 0, 0)
oled.show()

Python Tutorials – Lesson 9 – Ultrasonic Sensor Module using Raspberry Pi Pico

To control Ultrasonic sensor using Raspberry Pi Pico

Required Components

  1. Ultrasonic sensor board_1 no
  2. Raspberry Pi Pico board_1 no
  3. Data Cable_1 no
  4. Connecting Wires_8 no

Circuit

Steps

  1. Make sure the components are working properly.
  2. Ultrasonic Sensor board VCC, GND connected to VBus, GND of Raspberry Pi Pico Board.
  3. Connect Ultrasonic sensor Board echo, trigger pin to the Raspberry Pi Pico Board GP15, GP14 pin.
  4. Check the Python program.
  5. Check the Electrical Circuit.
  6. Run the Python program.

Python Program

from machine import Pin
import utime
trigger = Pin(14, Pin.OUT)
echo = Pin(15, Pin.IN)
def ultra():
   trigger.low()
   utime.sleep_us(2)
   trigger.high()
   utime.sleep_us(5)
   trigger.low()
   while echo.value() == 0:
       signaloff = utime.ticks_us()
   while echo.value() == 1:
       signalon = utime.ticks_us()
   timepassed = signalon - signaloff
   distance = (timepassed * 0.0343) / 2
   print ('Distance:',"{:.0f}".format(distance),'cm')
while True:
   ultra()
   utime.sleep(1)

Python Tutorials – Lesson 8 – Humidity Sensor on Raspberry Pi Pico

To control Humidity Sensor using Raspberry Pi Pico

Required Components

  1. Humidity Sensor (DHT11)_1 no
  2. Raspberry Pi Pico Board_1 no
  3. Connecting wires_1 set

Circuit

Steps

  1. Make sure the components are working properly.
  2. Connect the Raspberry Pi Pico board GP16th pin to the Humidity Sensor.
  3. Connect Humidity Sensor board VCC, GND to 3V3 (OUT), GND of Raspberry Pi Pico Board.
  4. Check the Electrical Circuit.
  5. Check the Python program.
  6. Run the Python program.

Python Program

from machine import Pin
import time
from dht import DHT11, InvalidChecksum
 
sensor = DHT11(Pin(16, Pin.OUT, Pin.PULL_DOWN))
 
while True:
    temp = sensor.temperature
    humidity = sensor.humidity
    print("Temperature: {}°C   Humidity: {:.0f}% ".format(temp, humidity))
    time.sleep(2)

Python Tutorials – Lesson 7 – LDR Sensor on Raspberry Pi Pico

To control LDR Sensor using Raspberry Pi Pico Board

Required Components

  1. LDR Sensor_1 no
  2. Raspberry Pi Pico board_1 no
  3. Connecting wires_1 set

Circuit

Steps

  1. Make sure the components are working properly.
  2. Connect the Raspberry Pi Pico GP27 pin to the LDR D0 pin.
  3. Connect the Raspberry Pi Pico 3V3 (OUT) pin to the LDR +5V pin.
  4. Connect the Raspberry Pi Pico GND to the LDR GND pin.
  5. Check the Python program.
  6. Check the Electrical circuit.
  7. Run the Python program.

Python Program

from machine import Pin
import time
 
ldr = machine.ADC(27)
 
while True:
     print(ldr.read_u16())
     time.sleep(2)

Python Tutorials – Lesson 6 – Position Encoder sensor using Raspberry Pi Pico

To get the reading of position encoder sensor direction change using Raspberry Pi Pico

Required Components

  1. Position encoder sensor_1 no
  2. Raspberry Pi Pico_1 no
  3. Connecting Wires_4 set

Circuit

Steps

  1. Make sure the components are working properly.
  2. Connect the position encoder sensor to the Raspberry Pi Pico.
  3. Connect the Raspberry Pi Pico pin GP8 & GP9 to Position encoder sensor CLK & DT pin and Position encoder SW pin to the GP2 of Raspberry Pi Pico.
  4. Connect the +5v and ground(gnd) connections respectively.
  5. Check the Python program.
  6. Check the Electrical Circuit.
  7. Run the Python program.

Python Program

from machine import Pin
import utime

DT_Pin = Pin(9, Pin.IN, Pin.PULL_UP)
CLK_Pin = Pin(8, Pin.IN, Pin.PULL_UP)
SW = Pin(2, Pin.IN, Pin.PULL_UP)

LEDs = [25,4]

#create an empty list to assing pins in pico
led_pins = []

for x in range(0,2):
    led_pins.append(Pin(LEDs[x], Pin.OUT))    

value = 0
previousValue = 1

def rotary_changed():
    
    global previousValue
    global value
    
    if previousValue != CLK_Pin.value():
        if CLK_Pin.value() == 0:
            if DT_Pin.value() == 0:
          
                value = (value - 1)%2
                print("anti-clockwise", value)
            else:
                
                value = (value + 1)%2
                print("clockwise", value)                
        previousValue = CLK_Pin.value()         
         
    if SW.value() == 0:       
        print("Button pressed")
        utime.sleep(1)
        
while True:
    for i in range(0,2):
        led_pins[i].value(0)
        rotary_changed()
        led_pins[value].value(1)
        utime.sleep(0.001)