• Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar
  • Skip to secondary sidebar
  • Skip to footer

У Павла!

  • Контроллеры
    • Arduino
      • Приборы
      • Музыка
      • Проекты Arduino
      • Уроки Arduino
      • Игры на Arduino
      • Роботы на Ардуино
      • FLProg
    • Одноплатные ПК
      • Orange pi
      • Raspberry pi
        • Raspberry pi pico
        • Raspberry pi server
        • Проекты Raspberry pi
    • ESP
      • ESP8266
        • NodeMCU
      • ESP32
      • M5stack
    • Другие контроллеры
      • STM32
  • Умный дом
    • Home Assistant
      • Автоматизации
    • Tuya
    • Bluetooth
    • ESPHome
    • Frigate
    • Telegram
    • Яндекс
  • ЧПУ
  • 3d печать
  • Об авторе

Знакомство с Raspberry pi pico. Blink, Сканнер i2c шины. Вывод изображения на Oled дисплей. Измерение температуры.

21 февраля, 2021

Купить можно  тут: http://alii.pub/5kmf6o

Прежде чем приступить к материалу, я Вас попрошу, если нравится то, что я делаю и хотите следить за моей деятельностью, то рекомендую подписаться на мой телеграмм канал: https://t.me/ypavla
Там я публикую новости о вышедших видео, статьях и разные устройства для умного дома и не только показываю.
Спасибо за внимание, теперь продолжим.

 

Данный микроконтроллер имеет: двухъядерный чип Arm Cortex M0+, с частотой работы ядра в 133 МГц. У платы — 264 КБ ОЗУ и 2 МБ флеш-памяти. 26 каналов ввода/вывода. Есть возможность задействовать интерфейсы 2 × UART, 2 × I2C, 2 × SPI (всего до 16 Мбайт QSPI Flash с XIP), а также 16 PWM-каналов. Также в наличии температурный датчик и 4 ADC-канала.

Данная плата поддерживает языки программирования как Mycropython так и C/C++. В данной статье приведем несколько примеров работы с Mycropython.

Установка и настройка программы Thonny

Чтоб начать программировать на Mycropython, нужно скачать программу Thonny с официального сайта: https://thonny.org/ . Данная программа может работать как под Linux, так и под Windows и Mac. В моем случае будем устанавливать версию под Windows. Процедура установки простая. Далее->Далее->Готово.

После установки зажимаем единственную кнопку BOOTSEL и подключаем плату к компьютеру с зажатой кнопкой. После подключения кнопку можно отпустить.

Далее запускаем программу Thonny.

В программе выбираем Инструменты->Параметры и там выбираем вкладку Интерпретатор

Здесь выбираем MicroPython (Raspberry Pi Pico) и устанавливаем драйвер “install or update firmware”

После этого отключаем Pico от ПК и подключаем его снова. И у нас в графе “Порт” должен появиться номер ком порта к который присвоился Raspberry pi pico.

Программа Blink.

После того как настроили среду разработки Thonny давайте напишем первую программу. По традиции помигаем светодиодом.

Из схемы приведенной в начале статьи видно, что светодиод подключен к 25 пину микроконтроллера. Зная эту информацию напишем программу:

from machine import Pin, Timer

led = Pin(25, Pin.OUT)
LED_state = True
tim = Timer()

def tick(timer):
    global led, LED_state
    LED_state = not LED_state
    led.value(LED_state)
    
tim.init(freq=1, mode=Timer.PERIODIC, callback=tick)

Скачать программу можно тут: https://disk.yandex.ru/d/C1ruOKmKBXWXvA

Загрузка программы в Raspberry pi pico

Нажав кнопку в Thonny “Запустить текущий скрипт” ( если она не активна, то нажмите на кнопку “Остановить и запустить бэкенд”) у нас начнет выполняться программа и светодиод начнет мигать 1 раз в секунду.

Но если мы отключим Raspberry pi pico от сети и включим снова. Скрипт у нас не запустится, так как он у нас был запущен только с компьютера, в саму Pico он небыл загружен.

Чтоб загрузить программу в саму малинку. Нам необходимо в программе Thonny выбрать Файл->Сохранить копию->”Выбрать Raspberry pi pico” и сохранить в нее скрипт под именем main.py

И вот теперь после перезапуска Pico программа начнет работать не зависимо от подключения к компьютеру.

Программа измерения температуры с встроенного датчика температуры.

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

Скрипт выглядит следующим образом:

import machine
import utime

sensor_temp = machine.ADC(4)
conversion_factor = 3.3 / (65535)

while True:
    reading = sensor_temp.read_u16() * conversion_factor    
    temperature = round(27 - (reading - 0.706)/0.001721,2)    
    print("Temperature: ",temperature)
    utime.sleep(0.1)

Скачать программу можно по ссылке: https://disk.yandex.ru/d/0ssIUNo_aUPZEQ

Данная программа показывает температуру с встроенного датчика температуры. И выводит показания в консоль. Выглядит это следующим образом:

Программа сканирования шины i2c.

Теперь давайте просканируем шину i2c. Для этого напишем следующую программу.

from machine import Pin, I2C

i2c = I2C(0, scl=Pin(9), sda=Pin(8), freq=200000)

print("I2C Address    : " + hex(i2c.scan()[0]).upper())

Скачать i2c сканнер можно тут: https://disk.yandex.ru/d/MeNGMgjgHTn81A

Здесь объявляем пины scl=9 пин sda=8 пин. Ну и следовательно SDA и SCL устройства нужно подключать к этим пинам.

Важно! Чтоб программа заработала корректно и не выдавала ошибок. К Raspberry pi pico должно быть подключено устройство i2c. Если ничего не подключено то выдаст ошибку.

Ну и адрес выведется в hex формате в консоль.

Программа вывода изображения на oled дисплей.

Дисплей можно приобрести тут: http://ali.pub/5h3qke

Ну после того как мы научились сканировать шину i2c давайте подключим oled дисплей i2c. И выведем на него надписи и небольшой логотип малинки.

Здесь для работы нам понадобится библиотека SSD1306.

Устанавливается библиотека следующим образом.

Скопируем код со страницы проекта библиотеки ssd1306: https://github.com/micropython/micropython/blob/master/drivers/display/ssd1306.py

Вставим его в программу Thonny. И сохраним в pico под именем ssd1306.py

После сохранения библиотеки. Можно написать программу. Она выглядит следующим образом:

# Display Image & text on I2C driven ssd1306 OLED display 
from machine import Pin, I2C
from ssd1306 import SSD1306_I2C
import framebuf
import utime

WIDTH  = 128                                            # oled display width
HEIGHT = 64                                            # oled display height

i2c = I2C(0, scl=Pin(9), sda=Pin(8), 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

# Raspberry Pi logo as 32x32 bytearray
buffer = bytearray(b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00|?\x00\x01\x86@\x80\x01\x01\x80\x80\x01\x11\x88\x80\x01\x05\xa0\x80\x00\x83\xc1\x00\x00C\xe3\x00\x00~\xfc\x00\x00L'\x00\x00\x9c\x11\x00\x00\xbf\xfd\x00\x00\xe1\x87\x00\x01\xc1\x83\x80\x02A\x82@\x02A\x82@\x02\xc1\xc2@\x02\xf6>\xc0\x01\xfc=\x80\x01\x18\x18\x80\x01\x88\x10\x80\x00\x8c!\x00\x00\x87\xf1\x00\x00\x7f\xf6\x00\x008\x1c\x00\x00\x0c \x00\x00\x03\xc0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00")

# Load the raspberry pi logo into the framebuffer (the image is 32x32)
fb = framebuf.FrameBuffer(buffer, 32, 32, framebuf.MONO_HLSB)

while True:
    # Clear the oled display in case it has junk on it.
    oled.fill(0)

    # Blit the image from the framebuffer to the oled display
    oled.blit(fb, 96, 0)

    # Add some text
    oled.text(upavla,5,8)
    oled.text("Raspberry pi",5,18)
    oled.text("pico",5,40)

    # Finally update the oled display so the image & text is displayed
    oled.show()
    utime.sleep(1)

Скачать программу можно по ссылке: https://disk.yandex.ru/d/V-qmgjZYuLGKOw

Данная программа выводит Текст и логотип Raspberry pi на Oled дисплей.

Также данные действия я все повторил в видео:

 

Primary Sidebar

Поиск

Новые записи

  • Автоматизация оповещения о надвигающимся дожде в Home Assistant
  • Автоматизация перезагрузки устройства по команде Ping.
  • Разблокирование и добавление шлюза Xiaomi gateway 3 в Home Assistant для управления Bluetooth устройствами из экосистемы Xiaomi Home (mihome)
  • Интеграция для локального управления (без интернета) ик пультом Tuya работающим по wifi из Home Assistant
  • Транслируем показания с Уличного Bluetooth Датчика температуры по BTHome на дисплей датчика температуры XIaomi LYWSD03MMC

Официальный YouTube Канал M5Stack:

Подписывайтесь на Телеграм канал

https://t.me/ypavla

Подписаться на YouTube!

Secondary Sidebar




Подписывайтесь на Telegram Канал!

У Павла!

Footer

Copyright_У Павла! © 2025 ·