Interfacing with Sensors and modules

Servo Library

Servo pinout:

Servo Motor SG-90 Basics, Pinout, Wire Description, Datasheet, and Working

Copy this file to /lib folder in your raspberry pi pico.

Interfacing Servo using servo library

from servo import Servo
from time import sleep

servo1 = Servo(pin=22)

while True:
    servo1.move(0)
    sleep(2)
    servo1.move(90)
    sleep(2)
    servo1.move(180)
    sleep(2)

NRF24L01 Library

NRF pinout

nRF24L01 – How It Works, Arduino Interface, Circuits, Codes

Copy this file to /lib folder in your raspberry pi pico.

NRF as a transmitter

NRF as a receiver

NRF connection diagram

Joystick Module

Caution!!! connect 5V of joystick to 3.3V of pico.

from machine import Pin, SPI, ADC

x_axis = ADC(Pin(26))
y_axis = ADC(Pin(27))

x_data = x_axis.read_u16()
y_data = y_axis.read_u16()

Feedback Loops

MPU6050 Library

This library consists of two files the you need to put inside /lib folder in your raspberry pi pico.

Interfacing with MPU6050

from machine import Pin,I2C
from mpu6050 import MPU6050
from time import sleep

i2c = I2C(0,scl=Pin(1),sda=Pin(0))

mpu = MPU6050(i2c)

while True:
    print(mpu.gyro.xyz)
    sleep(0.5)

UltraSonic Library

Copy this downloaded hcsr04 file inside /lib folder in your raspberry pi pico.

Interfacing with hcsr04

from machine import Pin
from time import sleep
from hcsr04 import HCSR04

echo = 14
trigger = 15

usonic = HCSR04(trigger_pin = trigger, echo_pin = echo)


while True:
    print(usonic.distance_cm())
    sleep(0.2)

Micropython Firmware with support for USB HID

Flash the downloaded uf2 file to work with hid devices.

USB HID Library

Working with HID class devices

HID Keyboard

import keyboard
import mouse
import consumer_control
import gamepad
import time
from machine import *

k = keyboard.Keyboard()
button = Pin(1,Pin.IN, Pin.PULL_UP)

def send_hid(p):
    if p is button and p.irq().flags():
        #debouncing
        #disabling interrupt
        button.irq(handler=None)
        time.sleep_ms(200)
        k.press(0x04)
        k.release(0x04)
        #enabling interrupt
        button.irq(handler=send_hid)
    
    
button.irq(trigger=Pin.IRQ_FALLING,handler=send_hid)

HID Mouse

import keyboard
import mouse
import consumer_control
import gamepad
import time
from machine import *

m = mouse.Mouse()
button = Pin(1,Pin.IN, Pin.PULL_UP)

def send_hid(p):
    if p is button and p.irq().flags():
        #debouncing
        #disabling interrupt
        button.irq(handler=None)
        time.sleep_ms(200)
        m.click(m.BUTTON_RIGHT)
        #enabling interrupt
        button.irq(handler=send_hid)
    
    
button.irq(trigger=Pin.IRQ_FALLING,handler=send_hid)