quinta-feira, 13 de junho de 2024

MILK-V Duo 256 - PINPONG (PYTHON)

 


Introdução

A biblioteca pinpong é uma biblioteca python de código aberto baseada no protocolo firmata e utiliza sintaxe micropython. Seu objetivo principal é fornecer aos desenvolvedores uma ferramenta que lhes permita controlar diretamente várias placas de controle de hardware de código aberto por meio de código Python.

Ela permite que você comece a usar Python para controlar hardware de código aberto em apenas 5 minutos.

Com a biblioteca PinPong, você pode programar diretamente vários hardwares comuns de código aberto com código Python. O princípio é gravar um firmware específico no hardware de código aberto, permitindo que ele se comunique com o computador através da porta serial e execute vários comandos.

O nome da biblioteca PinPong é composto por "Pin" e "Pong". "Pin" refere-se ao pino, e "PinPong" é um homófono de "ping-pong", indicando a reciprocidade de sinais.

O design da biblioteca PinPong destina-se a libertar os desenvolvedores das restrições de modelos de hardware complexos durante o processo de desenvolvimento e mudar o foco para a implementação de software. Mesmo que o Arduino seja usado para escrever programas no estágio inicial de desenvolvimento, e a placa de controle seja alterada durante o deployment.

Método 1

Nestes testes, foi criada uma imagem para o MILK-V Duo 256 e adicionado o pacote PinPong no arquivo milkv-duo256m_musl_riscv64_defconfig que se encontra na pasta

/home/ubuntu/duo-buildroot-sdk/buildroot-2021.05/configs

BR2_PACKAGE_PYTHON_PINPONG=y



Use o comando  git status para confirmar. Você pode ver que o arquivo de configuração original foi modificado:


Neste ponto, volte para o diretório raiz do SDK e recompile.

Uso

Número dos pinos (GPx)


pinpongNOME DO PINPINO#PINO #NOME DO PINpinpong
0GP0
1
40
VBUS
1GP1
2
39
VSYS
GND
3
38
GND
2GP2
4
37
3V3_EN
3GP3
5
36
3V3(SAÍDA)
4GP4
6
35
5GP5
7
34
GND
8
33
GND
6GP6
9
32
GP2727
7GP7
10
31
GP2626
8GP8
11
30
RUN 
9GP9
12
29
GP2222
GND
13
28
GND
10GP10
14
27
GP2121
11GP11
15
26
GP2020
12GP12
16
25
GP1919
13GP13
17
24
GP1818
GND
18
23
GND
14GP14
19
22
GP1717
15GP15
20
21
GP1616
 
25GP25
LED
                   pinPong                                  pinPong
        

Muitos dos pinos do Duo possuem funcionalidade multifuncional. Ao usar a biblioteca pinpong para controlar as funções de cada pino, é importante confirmar o estado atual do pino para garantir que ele corresponda à funcionalidade desejada. Caso contrário, você pode usar o comando duo-pinmux para mudar para a função desejada

Consulte as instruções: pinmuxIO

LEDpiscando

Este é um exemplo de como fazer o LED conectado no  Duo piscar. Você pode criar um novo arquivo blink.py diretamente no Duo ou criá-lo em seu computador e depois carregá-lo no Duo via ssh.

DICA

O número do pino do LED é 15. Se você usar outros pinos para conectar LEDs externos, consulte a tabela acima para obter o número do pino.

Conteúdo do arquivo  blink.py:

# -*- coding: utf-8 -*-

import time
from pinpong.board import Board,Pin

Board("MILKV-DUO").begin()

led = Pin(Pin.D15, Pin.OUT)

while True:
led.value(1)
print("1")
time.sleep(1)

led.value(0)
print("0")
time.sleep(1)

Execute o comando  python blink.py no terminal do Duo:


Você verá o LED piscando em intervalos de 1 segundo.

Nota : Para testar o exemplo blink.py, que envolve LED piscando, é necessário desabilitar o script responsável pelo LED piscando automaticamente no firmware padrão do Duo. No terminal Duo, execute o seguinte comando:

mv /mnt/system/blink.sh /mnt/system/blink.sh_backup && sync

Este comando renomeia o script de LED piscando. Após reiniciar o Duo, o LED não piscará mais.

Outros exemplos

Consulte: github

Exemplos

__init__.py gravityPM2.5.py oled2864.pyc __init__.pyc i2c.py ozone.py adc.py i2c.pyc ozone.pyc adc.pyc i2c_scan.py paj7620.py as7341.py i2c_scan.pyc paj7620.pyc as7341.pyc iic_to_serial.py ph1.py blink.py iic_to_serial.pyc ph1.pyc blink.pyc ir_recv.py ph2.py bme280.py ir_recv.pyc ph2.pyc bme280.pyc ir_send.py pwm.py bme680.py ir_send.pyc pwm.pyc bme680.pyc irq.py rgb_panel.py bmi160_acc.py irq.pyc rgb_panel.pyc bmi160_acc.pyc lcd1602.py sen0483.py bmi160_step.py lcd1602.pyc sen0483.pyc bmi160_step.pyc lis2dh.py servo.py bmp280.py lis2dh.pyc servo.pyc bmp280.pyc max30103.py sht31.py bmp388.py max30103.pyc sht31.pyc bmp388.pyc mics_enable_power.py speech_synthesis.py button.py mics_enable_power.pyc speech_synthesis.pyc button.pyc mics_get_adc_data.py spi.py buzzer.py mics_get_adc_data.pyc spi.pyc buzzer.pyc mics_get_gas_exist.py sr04_urm10.py ccs811_read_baseline.py mics_get_gas_exist.pyc sr04_urm10.pyc ccs811_read_baseline.pyc mics_get_gas_ppm.py st7789-as7341.py ccs811_read_data.py mics_get_gas_ppm.pyc st7789.py ccs811_read_data.pyc mlx90614.py st7789.pyc dht.py mlx90614.pyc tcs34725.py dht.pyc mp3.py tcs34725.pyc dht20.py mp3.pyc tds.py dht20.pyc neopixel.py tds.pyc ds0469.py neopixel.pyc tone.py ds0469.pyc nfc.py tone.pyc ds1307.py nfc.pyc uart.py ds1307.pyc nfc_card_info.py uart.pyc ds18b20.py nfc_card_info.pyc urm09.py ds18b20.pyc nfc_uart.py urm09.pyc ens160.py nfc_uart.pyc vl53l0.py ens160.pyc nfc_uart_card.py vl53l0.pyc gp2y1010au0f.py nfc_uart_card.pyc gp2y1010au0f.pyc oled2864.py






Método 2

Baixe a biblioteca de pinpong do Milkv Duo pinpong.zip

Este pacote pinpong é extraído do milkv-duo-v1.0.4-2023-0908.img.zip oficial, se você usar a imagem oficial, poderá usá-lo diretamente sem instalá-lo

Use o comando scp para carregar o arquivo

scp pinpong.zip root@192.168.42.1:~

Utilizei WINSCP



Descompacte, instale e teste no Milkv Duo, o diretório site-packages será diferente em diferentes versões do python, neste caso python 3.9

unzip -q pinpong.zip
cp -r pinpong /usr/lib/python3.9/site-packages/
cp -r serial /usr/lib/python3.9/site-packages/
python -c 'import pinpong'

Observe a definição de recurso duo_res, como a definição de pino para o LED azul
less /usr/lib/python3.9/site-packages/pinpong/extension/milkvDuo.py

vi blink.py 

Adicione o seguinte, usando o teste de blink.py python3

# -*- coding: utf-8 -*- #实验效果:控制UNIHIKER板载LED灯一秒闪烁一次 #接线:使用电脑连接一块UNIHIKER主控板 import time from pinpong.board import Board,Pin Board("MILKV-DUO").begin() #初始化,选择板型,不输入板型则进行自动识别 led = Pin(Pin.D0, Pin.OUT) #引脚初始化为电平输出 while True: led.value(1) #输出高电平 print("1") #终端打印信息 time.sleep(1) #等待1秒 保持状态 led.value(0) #输出低电平 print("0") #终端打印信息 time.sleep(1) #等待1秒 保持状态


Questões: suporte@smartcore.com.br

Referências


Sobre a SMARTCORE

A SMARTCORE FORNECE CHIPS E MÓDULOS PARA IOT, COMUNICAÇÃO WIRELESS, BIOMETRIA, CONECTIVIDADE, RASTREAMENTO E AUTOMAÇÃO. NOSSO PORTFÓLIO INCLUI MODEM 2G/3G/4G/NB-IOT, SATELITAL, MÓDULOS WIFI, BLUETOOTH, GPS, SIGFOX, LORA, LEITOR DE CARTÃO, LEITOR QR CCODE, MECANISMO DE IMPRESSÃO, MINI-BOARD PC, ANTENA, PIGTAIL, BATERIA, REPETIDOR GPS E SENSORES.

Nenhum comentário:

Postar um comentário