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
Na pasta do projeto, uma vez:
python -m pip install .
Quando a biblioteca estiver publicada, em qualquer computador:
python -m pip install qrrobo
1. Só o olho
O QR é um bilhete. quando é a regra: se o bilhete disser esta palavra, faça isto.
Crie um arquivo aula.py:
from qrrobo import Robo
robo = Robo(conexao="nenhuma")
@robo.quando("FRENTE")
def frente():
print("O bilhete diz FRENTE.")
@robo.quando("DANCAR")
def dancar():
print("O bilhete diz DANCAR.")
robo.esperar()
Gere o QR num site, com o texto FRENTE ou DANCAR. Abra a imagem no celular, em tela cheia, e aponte a câmera. Q na janela encerra.
A câmera vê o mesmo bilhete muitas vezes por segundo. A biblioteca obedece uma vez. Para obedecer de novo, tire o cartão da frente e mostre outra vez.
Para ler uma palavra só, sem ficar no laço:
from qrrobo import Robo
robo = Robo(conexao="nenhuma")
print(robo.ler())
Outra câmera, no notebook ou no Pi: Robo(camera=1).
2. A função é de vocês
Troquem o print pelo movimento que a turma inventar. No Raspberry, se o motor estiver ligado no próprio Pi, a função mexe nele direto. Não precisa de bloco.
@robo.quando("FRENTE")
def frente():
# o movimento de vocês entra aqui
print("indo para a frente")
3. O correio até o bloco
O cabo ou o Bluetooth é o correio: leva a palavra até o SPIKE. Quem se mexe é o programa que está rodando no bloco, não esta biblioteca.
No computador:
from qrrobo import Robo
robo = Robo()
@robo.quando("FRENTE")
def frente():
robo.enviar("FRENTE")
@robo.quando("DANCAR")
def dancar():
robo.enviar("DANCAR")
robo.esperar()
Robo() tenta o cabo e, se não achar o bloco, tenta o Bluetooth. Dá para escolher: Robo(conexao="usb") ou Robo(conexao="bluetooth").
Antes de rodar, gravem no bloco o modelo examples/modelo_bloco.py. Completem as funções frente e dancar com o movimento de vocês. Fechem o app do SPIKE e a aba do Pybricks. Apertem o botão do bloco para ele ficar esperando. Aí sim rode o programa do computador.
O mesmo aula.py vale no Raspberry Pi falando com o SPIKE. A câmera pode ser a do Pi.
4. Modelo do bloco
O arquivo examples/modelo_bloco.py espera a palavra e chama a função de vocês. Não tem motor pronto. Copiem para o Pybricks e escrevam o movimento dentro de frente e dancar. Para uma palavra nova, criem a função e uma linha no dicionário ACOES.
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 só atende um correio por vez. Ele 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. Cabo que só carrega não leva mensagem. 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 bloco ou no
quando. A biblioteca só entrega o texto. - O mesmo QR dispara várias vezes. Vocês estão numa cópia antiga do programa. Nesta biblioteca, o bilhete parado conta uma vez.
Publicar no PyPI
Isto é para quem mantém a biblioteca, não para a aula.
Crie uma conta em pypi.org. Na pasta do projeto:
python -m pip install build twine
python -m build
python -m twine upload dist/*
O twine pede o usuário e a senha da conta (ou um token de API). Depois, qualquer máquina instala com:
python -m pip install qrrobo
O nome qrrobo estava livre quando este pacote foi criado. Se um dia ele estiver ocupado, troque name no pyproject.toml para qrrobo-aula e publique de novo.
Metadata
Release files for qrrobo 0.1.0
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.0.tar.gz | 7.3 kB | Without provenance | Details for qrrobo-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| qrrobo-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for qrrobo-0.1.0-py3-none-any.whl |
Total release size: 14.8 kB
Release files / qrrobo-0.1.0.tar.gz
| Download URL | qrrobo-0.1.0.tar.gz |
|---|---|
| Size | 7.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
27261c990d1e1dac04aafc8e0d91a27b5c1f1302d7530db42db52227587dd106
|
|
BLAKE2b-256 checksum How to use checksums |
4d0ae3f5a73fbbaad332230b4ec45b33af60beec864bf384e817676a4b83c1b8
|
| 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.0-py3-none-any.whl
| Download URL | qrrobo-0.1.0-py3-none-any.whl |
|---|---|
| Size | 7.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2e08945c558cddeaa911c12658e00053903c712fcf0db9c558d8369b2de26125
|
|
BLAKE2b-256 checksum How to use checksums |
a9149d27d6e7e11008b0e4a77ae05c3aef740f6f4d84375920f6ac14ca0b929d
|
| 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.0
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.