Следите за моими последними сообщениями здесь.

В этом руководстве показано, как настроить USB-ключ nRF52840 в качестве устройства python для схемы.

К сожалению, загрузчик ключа по умолчанию, используемый с настольным приложением nRF Connect, не позволяет вам выполнить прошивку необходимого загрузчика для CircuitPython. Вместо этого нам придется использовать инструмент командной строки nrfjprog и внешний программатор JLink.

В этом руководстве основное внимание уделяется использованию комплекта разработчика nRF52840 в качестве программатора JLink для внешней платы.

Используя заголовок P20 из комплекта разработчика, выполните соединения, показанные ниже:

Прежде чем мы начнем, мы должны отключить поддержку MSD в наборе разработчика, встроенном в JLink. Это вызывает конфликт с последовательной связью CDC. Для этого запустите J-Link Commander:

Выполните команду:

MSDDisable

После подключения оборудования перейдите на страницу ниже, чтобы установить инструмент nrfjprog, разработанный Nordic.



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

nrfjprog --version

Возможно, вам потребуется добавить инструмент nrfjprog в системный PATH. Можно легко найти учебные пособия о том, как это сделать. Однако с моей настройкой в ​​этом не было необходимости.

Удалите содержимое USB-ключа, выполнив следующую команду в командной строке:

nrfjprog --family nrf52 --eraseall

Вы должны увидеть это:

После успешного удаления ключа загрузите шестнадцатеричный файл загрузчика Adafruit PCA10059 nRF52840 в удобный каталог. Я просто спрятал на рабочий стол. Вы можете найти последнюю выпущенную сборку здесь:



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

nrfjprog --program <name of your hex file> --sectoranduicrerase -f nrf52 --reset

Вы должны увидеть что-то вроде этого:

Если установка загрузчика прошла успешно, USB-ключ теперь должен отображаться как съемный диск NRF52BOOT при подключении.

Чтобы настроить с помощью CircuitPython, загрузите последний файл UF2 для PCA10059 здесь:



Скопируйте / перетащите файл UF2 на съемный диск. NRF52BOOT должен отключиться, а затем через несколько секунд снова подключиться с новым именем CIRCUITPY:

Adafruit создал множество библиотек для использования с CircuitPython. Для использования Bluetooth LE требуется библиотека из комплекта (обязательно загрузите версию 4.x):



Mu IDE упрощает загрузку тестовой программы на устройство CircuitPython.

Https://codewith.mu/ru/download

IDE должна распознать ваше устройство CircuitPython. (Проверьте левый нижний угол окна при открытии Mu, там должно быть написано «Обнаружено новое устройство Adafruit CircuitPython».) Загрузите тестовый код, щелкнув значок Сохранить. и присвоить вашему скрипту имя «code.py», чтобы он запускался при загрузке. Убедитесь, что место сохранения установлено как корень вашего съемного диска CircuitPython.

Вот тестовый код, написанный Рототроном в его полезном руководстве здесь:

Https://www.rototron.info/circuitpython-nrf52840-pi-tutorial/

import board
from pulseio import PWMOut
from adafruit_ble.uart import UARTServer
from adafruit_bluefruit_connect.packet import Packet
from adafruit_bluefruit_connect.color_packet import ColorPacket
r = PWMOut(board.LED2_R, duty_cycle=0)
g = PWMOut(board.LED2_G, duty_cycle=0)
b = PWMOut(board.LED2_B, duty_cycle=0)
uart_server = UARTServer()
while True:
    uart_server.start_advertising()
    while not uart_server.connected:
        pass
while uart_server.connected:
        packet = Packet.from_stream(uart_server)
        if isinstance(packet, ColorPacket):
            print(packet.color)
            dc = [-257*c+65535 for c in packet.color]
            r.duty_cycle, g.duty_cycle, b.duty_cycle = dc

Попробуйте этот сценарий с вашим новым USB-ключом CircuitPython nRF52840 и инструментом выбора цвета (подключитесь к CIRCUITPY - ›контроллер -› палитра цветов) в приложении Adafruit Bluefuit для iOS или Android.