SparkFun RP2040 и MicroPython
Я инженер-программист, работаю над микроконтроллерной системой для побочного проекта. Я использую микроконтроллер SparkFun ProMicro (на базе платы RP2040). Я пытаюсь прошить плату, чтобы записать данные во встроенную флеш-память.
Все учебные пособия, которые я нашел в Интернете, предлагают начать в режиме загрузки, перетащить файл UF2 и готово!
Когда я это делаю, микроконтроллер вылетает из моего компьютера. Это должно произойти? Он просто перезагружается, а затем не перезагружается в загрузчике?
После установки MicroPython я перешел к написанию и прошивке кода на плату.
Я использую Thonny IDE, которая определила правильную плату (хотя и PICO), а затем сохранила следующий файл как main.py (взятый из фонда RPI). Он печатает переключатель, и я считаю, что вывод показывает, что он печатается с платы, но индикатор на плате не мигает. (код и вывод ниже)
Я считал, что распиновка может отличаться от этой платы и PICO, но некоторые исследования показывают, что они оба используют контакт 25 для управления светодиодами.
Все это заставляет меня думать, что я на правильном пути, но я думаю, что мне не хватает чего-то, что считается само собой разумеющимся в обучающих материалах. Моя конечная цель - записать произвольные текстовые данные во флеш-хранилище, но я понимаю, что это может занять всего около 8000-10000 записей, прежде чем они станут ненадежными, поэтому я хочу проверить, могу ли я писать рабочий код, прежде чем использовать некоторые из них.
Что-то мне не хватает, или я неправильно об этом думаю?
4 ответа
Когда я это делаю, микроконтроллер вылетает из моего компьютера. Это должно произойти? Он просто перезагружается, а затем не перезагружается в загрузчике?
Ага.
но лампочка на плате не мигает.
Возможно, ваш светодиод перегорел, потому что ваш код правильный.
Моя конечная цель - записать произвольные текстовые данные во флеш-память.
Это ужасная идея, если только вам не нравится сжигать доски без уважительной причины. Получите устройство чтения SD-карт или создайте его из решения, подобного этому, и используйте эту библиотеку SD-карт, которая даже смонтирует вашу карту, и добавьте ее в
syspath
. Затем вы можете записать все произвольные текстовые данные, которые вам нравятся, не сжигая RP2040.
Мигать этим светодиодом оказалось сложнее, чем я ожидал. В итоге я нашел этот образец кода на AdaFruit и использовал закомментированный код неопикселя. Яркая сторона заключалась в том, что я осознавал, что над этим сигналом был гораздо больший контроль.
Не забывайте, что вам нужно добавить neopixel.mpy из комплекта на вашу доску.
Это не простой светодиод, подключенный к контакту 25 на Pro Micro RP2040 — это RGB-светодиод WS2812, иногда называемый NeoPixel. Есть однопроводной протокол для управления этими устройствами.
MicroPython поддерживает встроенный в NeoPixel:
from machine import Pin
from neopixel import NeoPixel
pin = Pin(25, Pin.OUT) # set Pin 25 to output to drive a NeoPixel
np = NeoPixel(pin, 1) # create NeoPixel driver on Pin 25 for a single pixel
np[0] = (255, 0, 0) # set the first pixel to red (R, G, B)
np.write()
См. краткий обзор rp2 для более подробной информации.
С RPi Pico W теперь вы можете идентифицировать контакт светодиода с помощью «LED» вместо контакта 25 (или другого контакта). Это изменение связано с тем, что контакт 25 используется для чипа Wi-Fi на Pico W. Это работает на Pico W, как показано ниже.
from machine import Pin
import time
led = Pin("LED", Pin.OUT)
while True:
led.toggle()
time.sleep(0.5)
Я проверил, как это работает на RPi Pico W с MicroPython — используя нестабильную версию Python —rp2-pico-w-20220719-unstable-v1.19.1-181-gc947c2529.uf2
.
Я считаю, что это предназначено для того, чтобы стать стандартным способом доступа к светодиоду на плате, поскольку порт можно изменить для разных плат без изменения исходного кода.