qrrobo
A câmera é o olho. O QR Code é um bilhete. Esta biblioteca lê o bilhete e, se vocês quiserem, manda a palavra até o bloco LEGO.
O movimento não vem pronto. A função de andar, girar ou balançar a placa é de vocês.
Funciona no notebook (Windows) e no Raspberry Pi. A câmera pode ser a do notebook, uma webcam ou a câmera do Pi. O bloco SPIKE Prime ou Robot Inventor, com firmware Pybricks, recebe a palavra pelo cabo ou pelo Bluetooth.
Instalar
python -m pip install qrrobo
Dicionário
Tudo começa criando um robô. Sem essa linha, o resto não existe:
from qrrobo import Robo
robo = Robo()
Robo() é a ficha do robô: qual correio usar e qual câmera abrir. Os comandos abaixo são dessa ficha.
Robo(conexao=..., camera=...)cria o robô. Ainda não liga a câmera nem procura o bloco.@robo.quando("FRENTE")grava uma regra: se o bilhete disserFRENTE, chame a função escrita embaixo. A palavra do QR e a palavra entre aspas precisam ser a mesma.robo.esperar()abre a câmera e fica olhando, sem parar, até alguém apertar Q. Cada bilhete novo dispara a função doquando.robo.ler()abre a câmera, espera um bilhete e devolve a palavra. Não fica no laço e não procura o bloco. Q devolve um texto vazio.robo.enviar("FRENTE")manda essa palavra ao bloco SPIKE. Não mexe em motor. Quem mexe é o programa que já está rodando no bloco.
esperar é a aula inteira com a câmera aberta. ler é uma única espiada: mostrou o QR, recebeu a palavra, a janela fecha.
A câmera
camera é o número da câmera no computador. O padrão é 0, a primeira que o sistema encontrar.
robo = Robo(camera=0) # a primeira: webcam do notebook ou a câmera do Pi
robo = Robo(camera=1) # a segunda, se houver outra webcam
robo = Robo(camera=2) # a terceira
Não existe nome de câmera aqui, só esses números. Se a janela abrir preta ou na câmera errada, troque o número.
A conexão
conexao diz se existe um bloco e por onde o correio vai. Também se escolhe na hora de criar o robô.
robo = Robo() # tenta o cabo; se não achar, tenta o Bluetooth
robo = Robo(conexao="auto") # a mesma coisa
robo = Robo(conexao="usb") # só o cabo de dados
robo = Robo(conexao="bluetooth") # só o Bluetooth
robo = Robo(conexao="nenhuma") # sem bloco: só a câmera
Dá para juntar câmera e correio:
robo = Robo(conexao="bluetooth", camera=0)
robo = Robo(conexao="usb", camera=1)
enviar só funciona quando a conexão é "auto", "usb" ou "bluetooth" e o bloco foi achado. Com "nenhuma", enviar avisa que não há bloco.
O cabo precisa transmitir dados. Cabo que só carrega não serve. No Bluetooth, fechem o app do SPIKE e a aba do Pybricks antes de rodar: o bloco só atende um correio por vez.
Movimento no computador
A função do quando roda no notebook ou no Raspberry. Serve para um print, para um motor ligado no próprio Pi, ou para qualquer código Python de vocês. Isso não depende do LEGO.
from qrrobo import Robo
robo = Robo(conexao="nenhuma")
def andar():
print("as rodas giram")
@robo.quando("FRENTE")
def frente():
andar()
robo.esperar()
Movimento no SPIKE
robo.enviar só conversa com SPIKE Prime ou Robot Inventor com firmware Pybricks. A biblioteca não anda, não gira e não conhece porta de motor. Ela entrega a palavra. O movimento fica no programa do bloco, no arquivo examples/modelo_bloco.py.
No computador:
from qrrobo import Robo
robo = Robo(conexao="bluetooth")
@robo.quando("FRENTE")
def frente():
robo.enviar("FRENTE")
@robo.quando("GIRAR")
def girar():
robo.enviar("GIRAR")
robo.esperar()
No bloco, vocês completam o que cada palavra faz:
def frente():
# o movimento de vocês, com os motores do SPIKE
print("FRENTE")
def girar():
print("GIRAR")
ACOES = {
"FRENTE": frente,
"GIRAR": girar,
}
Ordem da aula: gravem esse programa no bloco, fechem o site do Pybricks, apertem o botão do bloco para ele ficar esperando e só então rode o programa do computador.
O Raspberry com câmera usa o mesmo código. Se o Pi for o robô e os motores estiverem nele, usem conexao="nenhuma" e chamem o movimento dentro do quando, sem enviar.
Uma leitura só
A câmera vê o mesmo bilhete muitas vezes por segundo. esperar obedece uma vez. Para obedecer de novo, tirem o QR da frente e mostrem outra vez.
from qrrobo import Robo
robo = Robo(conexao="nenhuma")
palavra = robo.ler()
print("Li:", palavra)
Onde isto roda
- Notebook Windows e Raspberry Pi, com Python 3.
- Câmera do notebook, webcam USB ou câmera do Pi.
- SPIKE Prime ou Robot Inventor com firmware Pybricks, no cabo de dados ou no Bluetooth.
Não roda dentro do bloco. Não conversa com o app oficial do SPIKE. O firmware Pybricks se instala uma vez em code.pybricks.com, com um cabo que transmita dados.
Problemas comuns
- Não achei o bloco. Feche o app do SPIKE e o site do Pybricks. O bloco precisa estar ligado e perto.
- O nome que aparece é SPIKE, não Pybricks. O firmware ainda é o da LEGO. Instale o Pybricks.
- Cabo não funciona. Use um cabo de dados, ou
conexao="bluetooth". - A palavra chegou e o robô não mexeu. O movimento está na função de vocês. No SPIKE, essa função está no programa do bloco. No Pi, ela está dentro do
quando. enviarreclamou que não há bloco. ORobofoi criado comconexao="nenhuma".- A janela abre na câmera errada. Troque
camera=0porcamera=1.
Metadata
Release files for qrrobo 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| qrrobo-0.1.1.tar.gz | 7.7 kB | Without provenance | Details for qrrobo-0.1.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| qrrobo-0.1.1-py3-none-any.whl | Python 3 | none | any | Details for qrrobo-0.1.1-py3-none-any.whl |
Total release size: 15.4 kB
Release files / qrrobo-0.1.1.tar.gz
| Download URL | qrrobo-0.1.1.tar.gz |
|---|---|
| Size | 7.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f0a9fc9bb64b3103a7ee70c25635954ea06d4225f603b0dc0fe464bf4afbe530
|
|
BLAKE2b-256 checksum How to use checksums |
eb1f434798d5df325b83efe37294b17a9cf6260808e668ab60af9876a8b3233d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.10
|
Release files / qrrobo-0.1.1-py3-none-any.whl
| Download URL | qrrobo-0.1.1-py3-none-any.whl |
|---|---|
| Size | 7.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
38cda0ae663cfdd4a05055560780d2ee4693672d8076ca61298904f8984b3db4
|
|
BLAKE2b-256 checksum How to use checksums |
172e52c2177ceda717dbb7ff886a85af61f987580c3153c5a506d04ec86382b4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.10
|
Security for qrrobo 0.1.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.