Лучшие проекты Raspberry Pi Pico для творческих людей

Содержание

Как разработчик, всегда находящийся в поиске доступных, но мощных микроконтроллерных плат, я влюбился в Raspberry Pi Pico. Его компактный размер, впечатляющая производительность и универсальные возможности программирования делают его идеальным для широкого спектра проектов. В этом посте я поделюсь некоторыми из моих любимых проектов Pico, которые демонстрируют его возможности, от простых конструкций для начинающих до более сложных приложений.

Проект 1: Мигающий светодиод с настраиваемыми шаблонами (подходит для начинающих)

Настройка оборудования

Для этого проекта вам понадобятся Raspberry Pi Pico, макетная плата, светодиод, резистор на 220 Ом и соединительные провода. Подключите анод светодиода к выводу GPIO 25 через резистор, а катод — к выводу заземления на Pico. Такая схема обеспечивает защиту светодиода от перегрузки по току с помощью резистора и правильное подключение к выводу GPIO Pico для управления.

Raspberry Pi Pico with LED and resistor on breadboard
Raspberry Pi Pico with LED and resistor on breadboard

Реализация кода

С помощью MicroPython мы создадим программу, которая будет заставлять светодиод мигать по-разному. Сначала импортируем необходимые модули:

				
					from machine import Pin, Timer
				
			

Затем инициализируйте вывод светодиода:

				
					led = Pin(25, Pin.OUT)
				
			
Создайте объект таймера для управления интервалами мигания. Следующий фрагмент кода настраивает таймер, который переключает светодиод каждые 500 миллисекунд:
				
					tim = Timer()

def tick(timer):
    led.toggle()

tim.init(freq=2, mode=Timer.PERIODIC, callback=tick)
				
			

Тестирование и настройка

После загрузки кода в Pico (сохранив его как main.py и подключив Pico), светодиод должен начать мигать. Вы можете настроить схемы мигания, изменив период таймера или создав более сложные функции для управления временем включения и выключения светодиода. Например, вы можете создать функцию, которая заставляет светодиод мигать в соответствии с кодом Морзе или схемой, которая меняется в зависимости от внешнего входа. Этот проект — отличный способ ознакомиться с управлением контактами GPIO и MicroPython на Pico.

Проект 2: Система контроля температуры (средний уровень)

Требования к оборудованию

Возьмите Raspberry Pi Pico, датчик температуры DS18B20, резистор 4,7 кОм, макетную плату и соединительные провода. DS18B20 использует интерфейс 1-Wire, поэтому подключите его VCC к 3,3 В, GND к земле, а вывод DATA к выводу GPIO 18 на Pico. Резистор подключается между выводом DATA и VCC для подтяжки сигнала. Такая настройка обеспечивает стабильную связь между Pico и датчиком температуры, поскольку протокол 1-Wire требует наличия подходящего подтягивающего резистора для надежной передачи данных.
DS18B20 sensor connected to Raspberry Pi Pico on breadboard
DS18B20 temperature sensor linked to Raspberry Pi Pico, displaying 1 - Wire interface components.

Разработка кода

В MicroPython для связи с датчиком используются библиотеки onewire и ds18x20. Сначала импортируйте библиотеки и инициализируйте шину 1-Wire:
				
					import machine
import onewire
import ds18x20
import time
				
			
Затем настройте шину на выбранном выводе GPIO:
				
					ds_pin = machine.Pin(18)
ds_sensor = ds18x20.DS18X20(onewire.OneWire(ds_pin))
				
			
Сканируйте устройства и создайте объект DS18B20:
				
					roms = ds_sensor.scan()
print('Found DS devices: ', roms)
				
			
Следующий код считывает температуру и выводит ее в консоль:
				
					while True:
    ds_sensor.convert_temp()
    time.sleep_ms(750)
    for rom in roms:
        print(ds_sensor.read_temp(rom))
    time.sleep(2)
				
			

Регистрация и отображение данных

Чтобы сделать систему более полезной, можно добавить небольшой OLED-дисплей (подключенный через I2C) для отображения температуры в режиме реального времени или записи данных в файл на подключенном компьютере. Для OLED-дисплея можно использовать библиотеку ssd1306. Сначала импортируйте необходимые модули и инициализируйте интерфейс I2C:
				
					from machine import I2C, Pin
import ssd1306

i2c = I2C(0, sda=Pin(0), scl=Pin(1), freq=400000)
oled = ssd1306.SSD1306_I2C(128, 32, i2c)
				
			
Затем измените цикл считывания температуры, чтобы отобразить температуру на OLED-дисплее:
				
					while True:
    ds_sensor.convert_temp()
    time.sleep_ms(750)
    for rom in roms:
        temp = ds_sensor.read_temp(rom)
        print(temp)
        oled.fill(0)
        oled.text(f"Temp: {temp} C", 0, 0)
        oled.show()
    time.sleep(2)
				
			
Для регистрации данных можно использовать следующий код, чтобы записать данные о температуре в файл во внутренней файловой системе Pico:
				
					file = open('temperatures.txt', 'w')
while True:
    ds_sensor.convert_temp()
    time.sleep_ms(750)
    for rom in roms:
        temp = ds_sensor.read_temp(rom)
        print(temp)
        file.write(f"{time.time()},{temp}\n")
        file.flush()
    time.sleep(2)
				
			
Этот проект демонстрирует, как подключаться к внешним датчикам с помощью контактов GPIO Pico, и показывает его способность обрабатывать данные, полученные с датчиков.

Проект 3: Загрузчик данных IoT (продвинутый уровень)

Настройка оборудования

Вам понадобятся Raspberry Pi Pico W (со встроенным Wi-Fi), датчик окружающей среды BME280 (измеряет температуру, влажность и давление), макетная плата и соединительные провода. Подключите BME280 к Pico с помощью I2C: SDA к GPIO 8, SCL к GPIO 9, VCC к 3,3 В и GND к земле. Такая настройка подключения позволяет Pico обмениваться данными с датчиком BME280 через шину I2C, что обеспечивает возможность получения данных об окружающей среде.
Raspberry Pi Pico W with BME280 sensor and Wi Fi
Raspberry Pi Pico W with BME280 sensor and Wi - Fi

Интеграция кода и IoT

Используя MicroPython на Pico W, сначала подключитесь к сети Wi-Fi. Настройте учетные данные Wi-Fi:
				
					import network

ssid = 'your_SSID'
password = 'your_PASSWORD'
				
			
Подключитесь с помощью сетевого интерфейса:
				
					wlan = network.WLAN(network.STA_IF)
wlan.active(True)
wlan.connect(ssid, password)

while not wlan.isconnected():
    pass

print('Connected to WiFi')
				
			
Затем инициализируйте датчик BME280 с помощью класса bme280. Возможно, вам понадобится установить библиотеку bme280, если она еще не установлена. Вот как можно ее инициализировать:
				
					import bme280_i2c

i2c = machine.I2C(0, sda=machine.Pin(8), scl=machine.Pin(9))
bme = bme280_i2c.BME280_I2C(i2c)
				
			
Код считывает данные датчика и загружает их на платформу IoT, такую как Ubidots или Thingspeak, с помощью метода HTTP POST. Вот упрощенная версия функции загрузки данных:
				
					import urequests

def upload_data(temperature, humidity, pressure):
    url = 'https://industrial.api.ubidots.com/api/v1.6/devices/your_device_label'
    headers = {'X-Auth-Token': 'your_token', 'Content-Type': 'application/json'}
    data = '{"temperature": %s, "humidity": %s, "pressure": %s}' % (temperature, humidity, pressure)

    response = urequests.post(url, headers=headers, data=data)
    if response.status_code == 200:
        print('Data uploaded successfully')
    else:
        print('Error uploading data')

    response.close()


while True:
    temperature, pressure, humidity = bme.values
    temperature = float(temperature.strip(' C'))
    humidity = float(humidity.strip(' %'))
    pressure = float(pressure.strip(' hPa'))

    upload_data(temperature, humidity, pressure)
    time.sleep(60)
				
			

Тестирование и масштабируемость

После запуска кода Pico W подключится к Интернету, прочитает данные с BME280 и загрузит их на выбранную платформу IoT. Вы можете просматривать данные в режиме реального времени на панели управления платформы. Этот проект демонстрирует беспроводные возможности Pico W и показывает, как создавать масштабируемые решения IoT с помощью Pico, открывая возможности для применения в умных домах, мониторинге окружающей среды и многом другом. Если вы планируете масштабировать этот проект, вы можете добавить больше датчиков, настроить интервалы сбора данных или даже использовать более надежную платформу IoT с расширенными аналитическими функциями.

Заключение

Raspberry Pi Pico — это фантастический инструмент для создателей любого уровня квалификации, предлагающий безграничные возможности для творческих проектов. Независимо от того, начинаете ли вы с простого мигающего светодиода или создаете сложную систему IoT, доступность, производительность и простота использования Pico делают его лучшим выбором. Надеюсь, эти проекты вдохновят вас на эксперименты с собственными сборками Pico. Поделитесь своими проектами в комментариях ниже — я с удовольствием посмотрю, что вы создали!

Подписаться

Присоединяйтесь к нашему списку подписчиков, чтобы получать ежемесячные обновления блога, новости о технологиях, практические примеры. Мы никогда не будем рассылать спам, и вы можете отказаться от подписки в любое время.

Об авторе

Picture of Aidan Taylor
Aidan Taylor

I am Aidan Taylor and I have over 10 years of experience in the field of PCB Reverse Engineering, PCB design and IC Unlock.

Поделиться

Рекомендуемый пост

Tags

Нужна помощь?

Прокрутить вверх

Instant Quote