Seeeduino XIAO에서 CircuitPython 실행

개시하다


마이크로컴퓨터를 위한 파이토존 환경을 기반으로 한 마이크로소프트 파이토존, 애드애프루트가 개발한 것은 Circuit 파이토존이다.아두노의 C 언어에 비해 적은 기술력으로 높은 기능을 구현할 수 있고, 컴파일하지 않아도 쉽게 쓸 수 있다.
CircuitPython을 지원하는 마이크로컴퓨터
https://circuitpython.org/downloads
Adafruit사의 자사 마이크로컴퓨터 이외에 Seeeduino XIAO도 지원한다.
이 마이크로컴퓨터의 상세한 해설
https://qiita.com/nanase/items/0fed598975c49b1d707e
마이크로:bit도 마이크로파이톤을 통해 프로그래밍 가능
https://microbit.org/
Seeeduino XIAO는 마이크로:bit보다 저렴하고 시계 주파수도 높습니다.
microbit(MCU:ARM Cortex M0 + 32bit 16 MHz(Nordic nRF51822 ))
https://www.switch-science.com/catalog/5263/
Seeduino XIAO(CPU:ARM Cortex-M0 + 32bit 48 MHz(SAMD21G18))
https://www.switch-science.com/catalog/6335/
Amazon은 세 세트를 판매합니다.
https://www.amazon.co.jp/dp/B086KXY929

Seeeduino XIAO 설정


Seeed의 HP에는 CircuitPython의 설치 방법이 자세히 적혀 있습니다.
https://wiki.seeedstudio.com/Seeeduino-XIAO/
https://wiki.seeedstudio.com/Seeeduino-XIAO-CircuitPython/

Seeeduino XIAO용 CircuitPython을 다운로드합니다.
https://circuitpython.org/board/seeeduino_xiao/
XIAO의 RST 단자를 2차례 합선하면 주황색 LED가 켜지고 아두노 드라이브가 PC에 나온다.
Seeed HP에서 Reset Animation을 빌렸어요.



그리고 다운로드한 파일을 이 드라이브에 복사본을 만듭니다.

복사가 끝나면 드라이브 이름이 CIRCUITTY로 변경됩니다.

MU 편집기에 파이썬 프로그램을 쓰고 이 드라이브에main을 씁니다.py로 저장하면 프로그램이 자동으로 실행됩니다.

입식 절차
main.py

import time
import board
from digitalio import DigitalInOut, Direction

led = DigitalInOut(board.D13)
led.direction = Direction.OUTPUT

while True:
  led.value = True
  time.sleep(0.5)
  led.value = False
  time.sleep(0.5)

gif로 영상 삽입

참고하라는 Qita 입니다.
https://qiita.com/bohebohechan/items/f8bf6d4bbe0f14497a7b

MU 정보


MU 편집기에 대해서는 아래에 자세히 설명되어 있습니다.
https://qiita.com/inachi/items/8f61586cd2482987b8d0
모드 아이콘을 눌러 Adafruit CircuitPython 모드로 전환

MU가 USB를 인식하도록 설정


시퀀스 아이콘을 누르면 오류 메시지가 나타납니다.

Defalt에서 Adafluit의 마이크로컴퓨터판은 시퀀스 아이콘으로 연결된 것 같지만 Seeeduino XIAO는 직렬로 연결할 수 없습니다!
Seeeduino XIAO에 연결하는 USB VID: 0x2886 및 PID: 0x002f
C:/Users/%username%/AppData/Local/Mu/pkgs/mu/modes/adafruit.py
반드시 서류에 등록해야 한다.
https://www.seeedstudio.com/blog/2020/03/30/update-for-seeeduino-xiao-from-the-community/
Windows의 경우, 파일 관리자에서 숨겨진 파일 표시를 검사합니다.adafruit.편집기에서py를 열려면 Windows가 응고되기 때문에 파일의 확장자를py에서 txt로 변경하고 편집기에서 편집을 열면 확장자를py로 복원합니다.

67번째 줄처럼 쓰면 MU 편집기의 직렬 아이콘을 누르면 Seeeduino XIAO와 무사히 연결되며 트위터도 동작합니다.

트위터에 표시된 코드
main.py
# CircuitPython AnalogIn Demo
import time
import board
from analogio import AnalogIn

analog_in = AnalogIn(board.A1)


def get_voltage(pin):
    return (pin.value * 3.3) / 65536


while True:
    print((get_voltage(analog_in),))
    time.sleep(0.1)

MCP 4922를 사용하여 SPI 통신을 통한 전압 출력


아두노에 쓴 글이 바로 여기 큐타입니다.
https://qiita.com/hiRina/items/b8756988210f7d2455e8
다음 코드는 CiurcuitPython이 성공적으로 완성한 것입니다
main.py
#-------------------------------------
# Import
#-------------------------------------
import board
import busio
import digitalio
from digitalio import DigitalInOut, Direction, Pull
import time

#-------------------------------------
# VAL
#-------------------------------------
t=0.01

#-------------------------------------
# PIN
#-------------------------------------
led = DigitalInOut(board.D13)
led.direction = Direction.OUTPUT
#-------------------------------------
ADC = DigitalInOut(board.D0)
ADC.direction = Direction.OUTPUT
#-------------------------------------
cs=digitalio.DigitalInOut(board.D7)
cs.direction=digitalio.Direction.OUTPUT
cs.value=True

#-------------------------------------
# SPI
#-------------------------------------
spi = busio.SPI(board.SCK, MOSI=board.MOSI)
while not spi.try_lock():
    pass
spi.configure(baudrate=10000000, phase=0, polarity=0)

#-------------------------------------
# loop
#-------------------------------------
while True:
    #--------------------------
    led.value = False
    ADC.value = True
    cs.value = False
    spi.write(bytes([0x3F,0xFF]))
    cs.value = True
    ADC.value = False
    time.sleep(t)
    #--------------------------
    ADC.value = True
    cs.value = False
    spi.write(bytes([0x30,0x00]))
    cs.value = True
    ADC.value = False
    time.sleep(t)
    #--------------------------
    led.value = True
    ADC.value = True
    cs.value = False
    spi.write(bytes([0xBF,0xFF]))
    cs.value = True
    ADC.value = False
    time.sleep(t)
    #--------------------------
    ADC.value = True
    cs.value = False
    spi.write(bytes([0xB0,0x00]))
    cs.value = True
    ADC.value = False
    time.sleep(t)


참고 자료


Circuit Pytohon adafruit에 대해 기술한 HP
https://learn.adafruit.com/welcome-to-circuitpython
CircuitPython의 해설
https://learn.adafruit.com/circuitpython-essentials
CircuitPython의 예제
https://github.com/adafruit/Adafruit_Learning_System_Guides/tree/master/CircuitPython_Essentials

좋은 웹페이지 즐겨찾기