{"id":24979573,"url":"https://github.com/henriqueotogami/bananapi","last_synced_at":"2026-04-12T05:35:02.287Z","repository":{"id":274382046,"uuid":"922727530","full_name":"henriqueotogami/bananapi","owner":"henriqueotogami","description":"Repositório destinado a scripts utilizados em estudos de sistemas embarcados utilizando o microomputador Bananapi com Debian Linux.","archived":false,"fork":false,"pushed_at":"2025-11-11T02:43:09.000Z","size":7839,"stargazers_count":0,"open_issues_count":4,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-11-11T04:21:02.300Z","etag":null,"topics":["bananapi-m2-zero","debian-linux","embedded-systems","fritzing","gpio","henriqueotogami","iot","linux","mqtt","python3","shell-script"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/henriqueotogami.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":"henriqueotogami","tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"lfx_crowdfunding":null,"polar":null,"buy_me_a_coffee":null,"thanks_dev":null,"custom":null}},"created_at":"2025-01-26T23:42:48.000Z","updated_at":"2025-11-11T02:43:12.000Z","dependencies_parsed_at":"2025-05-10T03:39:31.357Z","dependency_job_id":"691bf88f-d3fb-4f6b-bf29-ec3863f827bf","html_url":"https://github.com/henriqueotogami/bananapi","commit_stats":null,"previous_names":["henriqueotogami/bananapi"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/henriqueotogami/bananapi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/henriqueotogami%2Fbananapi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/henriqueotogami%2Fbananapi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/henriqueotogami%2Fbananapi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/henriqueotogami%2Fbananapi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/henriqueotogami","download_url":"https://codeload.github.com/henriqueotogami/bananapi/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/henriqueotogami%2Fbananapi/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31705574,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-12T05:11:36.334Z","status":"ssl_error","status_checked_at":"2026-04-12T05:11:27.332Z","response_time":58,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bananapi-m2-zero","debian-linux","embedded-systems","fritzing","gpio","henriqueotogami","iot","linux","mqtt","python3","shell-script"],"created_at":"2025-02-04T01:19:34.665Z","updated_at":"2026-04-12T05:35:02.282Z","avatar_url":"https://github.com/henriqueotogami.png","language":"Python","funding_links":["https://ko-fi.com/henriqueotogami"],"categories":[],"sub_categories":[],"readme":"# BananaPi - Sistemas Embarcados e IoT\n\n\u003e Repositório com projetos, scripts e tutoriais desenvolvidos para estudos de sistemas embarcados e Internet das Coisas (IoT) utilizando o microcomputador Banana Pi M2 Zero e P2 Zero.\n\n\u003cdiv align=\"center\"\u003e\n\u003cimg width=\"500\" src=\"https://github.com/henriqueotogami/project-sirios/blob/main/resources/images/rounded-header-otogami.png?raw=true\"\u003e\n\u003c/div\u003e\n\u003cbr\u003e\n\u003cdiv align=\"center\"\u003e\n\u003cimg src=\"https://img.shields.io/github/release-date/henriqueotogami/bananapi\"\u003e\n\u003c/div\u003e\n\u003cbr\u003e\n\u003cdiv align=\"center\"\u003e\n\u003cimg alt=\"GitHub last commit\" src=\"https://img.shields.io/github/last-commit/henriqueotogami/bananapi\"\u003e\n\u003cimg src=\"https://img.shields.io/github/checks-status/henriqueotogami/bananapi/main\"\u003e\n\u003cimg src=\"https://img.shields.io/github/issues/henriqueotogami/bananapi\"\u003e\n\u003c/div\u003e\n\u003cbr\u003e\n\u003cdiv align=\"center\"\u003e\n\u003cimg src=\"https://img.shields.io/github/forks/henriqueotogami/bananapi?style=flat\"\u003e\n\u003cimg src=\"https://img.shields.io/github/stars/henriqueotogami/bananapi?style=flat\"\u003e\n\u003cimg src=\"https://img.shields.io/github/license/henriqueotogami/bananapi\"\u003e\n\u003c/div\u003e\n\u003cdiv align=\"center\"\u003e\n\u003cbr\u003e\n\u003ca href=\"https://wakatime.com/badge/user/1e53636e-c916-4d50-9ce1-f3ac75a883e3/project/3ae4b915-02bd-437c-8c03-071716563261\"\u003e\u003cimg src=\"https://wakatime.com/badge/user/1e53636e-c916-4d50-9ce1-f3ac75a883e3/project/3ae4b915-02bd-437c-8c03-071716563261.svg\" alt=\"wakatime\"\u003e\u003c/a\u003e\n\u003c/div\u003e\n\n## 📋 Sobre o Projeto\n\nEste repositório contém uma coleção de projetos práticos e tutoriais para desenvolvimento de sistemas embarcados e aplicações IoT utilizando as placas Banana Pi M2 Zero e P2 Zero. Os projetos incluem controle de GPIO, servidores web, integração MQTT, e configuração de sistemas Linux customizados com Buildroot.\n\n## 📁 Estrutura do Projeto\n\n### Projetos Principais (`projects/`)\n- **sirios/** - Sistema de Acionamento Remoto de LED via Web\n  - `backend/` - Scripts Python CGI (gpio_on.py, gpio_off.py)\n  - `frontend/` - Interface web (index.html, style.css)\n  - `README.md` - Documentação do projeto\n\n### Scripts Reutilizáveis (`scripts/`)\n- **python/** - Scripts Python para GPIO e MQTT\n  - `blink.py` - Piscar LED básico\n  - `blink_mqtt.py` - Blink com publicação MQTT\n  - `publish_mqtt.py` - Publicar mensagens MQTT\n- **shell/** - Scripts Shell para automação\n  - `Blink.sh` - Executar blink.py\n  - `BlinkPublishMQTT.sh` - Executar blink_mqtt.py\n  - `SendBlink.sh` - Enviar arquivos via SCP\n\n### Documentação (`docs/`)\n- **guides/** - Guias e tutoriais\n  - `buildroot-banana-pi-p2-zero-guide.md` - Guia completo Buildroot\n  - `buildroot-boot-travado-solucao.md` - Solução problemas de boot\n  - `buildroot-erro-analise-solucao.md` - Análise de erros\n  - `sirios-tutorial.txt` - Tutorial do projeto SIRIOS\n- **articles/** - Artigos técnicos e análises\n\n### Recursos (`assets/`)\n- **images/** - Imagens do projeto\n  - `screenshots/` - Screenshots das interfaces\n  - `diagrams/` - Diagramas de arquitetura\n  - `icons/` - Ícones e logos\n- **schematics/** - Esquemáticos das placas (PDF)\n- **fritzing/** - Arquivos Fritzing para circuitos\n- **excalidraw/** - Diagramas editáveis\n\n### Arquivos Arquivados (`archive/`)\n- **logs/** - Logs de instalação e erros\n- **packages/** - Listas de pacotes instalados\n- **images/** - Imagens antigas do sistema\n\n## 📂 Estrutura do Repositório\n\n```\nbananapi/\n├── LICENSE\n├── README.md\n├── .gitignore\n│\n├── projects/                 # Projetos principais\n│   └── sirios/              # Projeto SIRIOS\n│       ├── backend/         # Scripts Python CGI\n│       │   ├── gpio_on.py\n│       │   └── gpio_off.py\n│       ├── frontend/        # Interface web\n│       │   ├── index.html\n│       │   └── style.css\n│       └── README.md\n│\n├── scripts/                  # Scripts reutilizáveis\n│   ├── python/              # Scripts Python\n│   │   ├── blink.py\n│   │   ├── blink_mqtt.py\n│   │   └── publish_mqtt.py\n│   ├── shell/               # Scripts Shell\n│   │   ├── Blink.sh\n│   │   ├── BlinkPublishMQTT.sh\n│   │   └── SendBlink.sh\n│   └── README.md\n│\n├── docs/                     # Documentação\n│   ├── guides/              # Guias e tutoriais\n│   │   ├── buildroot-banana-pi-p2-zero-guide.md\n│   │   ├── buildroot-boot-travado-solucao.md\n│   │   ├── buildroot-erro-analise-solucao.md\n│   │   └── sirios-tutorial.txt\n│   ├── articles/            # Artigos técnicos\n│   └── README.md\n│\n├── assets/                   # Recursos estáticos\n│   ├── images/\n│   │   ├── screenshots/     # Screenshots\n│   │   ├── diagrams/        # Diagramas\n│   │   └── icons/           # Ícones\n│   ├── schematics/          # Esquemáticos PDF\n│   ├── fritzing/            # Arquivos Fritzing\n│   └── excalidraw/          # Diagramas editáveis\n│\n└── archive/                  # Arquivos arquivados\n    ├── logs/                # Logs antigos\n    ├── packages/            # Listas de pacotes\n    └── images/              # Imagens do sistema\n```\n\n## 🛠️ Tecnologias Utilizadas\n\n- **Python 3** - Linguagem de programação para scripts de controle\n- **Apache2** - Servidor web para hospedar interface\n- **CGI (Common Gateway Interface)** - Interface para executar scripts Python via web\n- **MQTT** - Protocolo de mensageria para IoT\n- **GPIO (General Purpose Input/Output)** - Controle de pinos da placa\n- **Buildroot** - Sistema para construir imagens Linux customizadas\n- **HTML/CSS** - Interface web frontend\n- **Linux/Raspbian** - Sistema operacional embarcado\n- **SSH** - Acesso remoto à placa\n\n## 📝 Funcionalidades Principais\n\n### Controle de GPIO\nOs scripts em `python/` e `project-sirios/` implementam controle de GPIO para:\n- Ligar e desligar LEDs\n- Piscar LEDs em intervalos configuráveis\n- Manipular pinos de entrada/saída digital\n\n### Interface Web (Projeto SIRIOS)\nO projeto SIRIOS oferece:\n- Interface web moderna e responsiva\n- Controle remoto de LED via navegador\n- Integração com Apache e módulo CGI\n- Feedback visual em tempo real\n\n### Integração MQTT\nScripts para comunicação IoT:\n- Publicar eventos de acionamento de LED\n- Integração com brokers MQTT (HiveMQ, Mosquitto, etc.)\n- Notificações em tempo real\n\n### Buildroot e Sistemas Customizados\nDocumentação completa para:\n- Compilar imagens Linux customizadas\n- Configurar Buildroot para Banana Pi\n- Solucionar problemas de boot e compilação\n\n## 🚀 Como Usar\n\n### Pré-requisitos\n\n- Banana Pi M2 Zero ou P2 Zero\n- Cartão SD com Raspbian/Debian instalado\n- Conexão SSH configurada\n- LED e resistores (para projetos de GPIO)\n- Python 3 instalado\n\n### Instalação Básica\n\n1. **Clone o repositório:**\n```bash\ngit clone https://github.com/henriqueotogami/bananapi.git\ncd bananapi\n```\n\n2. **Envie os arquivos para a Banana Pi:**\n```bash\n# Via SCP\nscp scripts/python/blink.py pi@banana.local:~\nscp projects/sirios/backend/* pi@banana.local:~\nscp projects/sirios/frontend/* pi@banana.local:~\n```\n\n3. **Execute os scripts:**\n```bash\n# Na Banana Pi via SSH\nssh pi@banana.local\npython3 blink.py\n```\n\n### Projeto SIRIOS - Controle Web de LED\n\nPara configurar o projeto SIRIOS completo:\n\n1. **Instalar Apache e habilitar CGI:**\n```bash\nsudo apt-get install apache2\nsudo a2enmod cgi\nsudo systemctl restart apache2\n```\n\n2. **Configurar permissões:**\n```bash\nsudo visudo\n# Adicionar: www-data ALL=(ALL) NOPASSWD: /usr/bin/tee, /bin/echo\n```\n\n3. **Copiar scripts CGI:**\n```bash\nsudo cp projects/sirios/backend/gpio_on.py /usr/lib/cgi-bin/\nsudo cp projects/sirios/backend/gpio_off.py /usr/lib/cgi-bin/\nsudo chmod +x /usr/lib/cgi-bin/gpio_*.py\n```\n\n4. **Copiar interface web:**\n```bash\nsudo cp projects/sirios/frontend/index.html /var/www/html/\nsudo cp projects/sirios/frontend/style.css /var/www/html/\nsudo cp assets/images/icons/icon-otogami.svg /var/www/html/\n```\n\n5. **Acessar interface:**\n```\nhttp://seu-ip-banana-pi/\n```\n\n### Integração MQTT\n\n1. **Instalar biblioteca MQTT:**\n```bash\npip3 install paho-mqtt\n```\n\n2. **Configurar broker MQTT:**\n```python\n# Editar PublishMQTT.py ou BlinkPublishMQTT.py\nBROKER = \"seu-broker-mqtt.com\"\nPORT = 1883\n```\n\n3. **Executar:**\n```bash\npython3 BlinkPublishMQTT.py\n```\n\n### Buildroot - Compilar Imagem Linux\n\nPara compilar uma imagem Linux customizada:\n\n1. **Instalar dependências:**\n```bash\nsudo apt-get install build-essential git wget cpio unzip rsync bc bzip2\n```\n\n2. **Clonar e configurar Buildroot:**\n```bash\ngit clone https://github.com/xqdzn/buildroot.git\ncd buildroot\nmake bananapi_p2_zero_defconfig\n```\n\n3. **Compilar:**\n```bash\nmake\n```\n\n4. **Gravar imagem:**\n```bash\nsudo dd if=output/images/sdcard.img of=/dev/sdX bs=4M status=progress\n```\n\n**📖 Para mais detalhes, consulte:** `docs/guides/buildroot-banana-pi-p2-zero-guide.md`\n\n## 📚 Conteúdos Abordados\n\n- ✅ Controle de GPIO em sistemas embarcados\n- ✅ Programação Python para hardware\n- ✅ Configuração de servidor web Apache\n- ✅ Interface CGI para execução de scripts\n- ✅ Protocolo MQTT para IoT\n- ✅ Desenvolvimento de interfaces web\n- ✅ Compilação de sistemas Linux customizados\n- ✅ Buildroot e cross-compilation\n- ✅ Troubleshooting de sistemas embarcados\n- ✅ Documentação técnica de projetos\n\n## 🎯 Projetos Principais\n\n### Projeto SIRIOS\nSistema de acionamento remoto de LED via interface web, utilizando Apache, Python e CGI. Permite controlar LEDs conectados à Banana Pi através de uma página web acessível na rede local.\n\n**Características:**\n- Interface web moderna e responsiva\n- Controle via botões (Ligar/Desligar)\n- Feedback visual em tempo real\n- Arquitetura modular e escalável\n\n### Controle Básico de LED\nScripts Python simples para piscar e controlar LEDs, ideais para aprendizado de GPIO e sistemas embarcados.\n\n### Integração MQTT\nProjetos que demonstram como integrar dispositivos IoT com brokers MQTT para comunicação em tempo real.\n\n## ⚙️ Como Funciona\n\n### Controle de GPIO\nOs scripts Python manipulam os pinos GPIO através do sistema de arquivos `/sys/class/gpio/`:\n1. Exporta o pino GPIO desejado\n2. Configura como saída (output)\n3. Define valor alto (1) ou baixo (0) para ligar/desligar\n4. Unexporta o pino após uso\n\n### Projeto SIRIOS - Fluxo\n1. Usuário acessa interface web no navegador\n2. Clica em botão \"Ligar\" ou \"Desligar\"\n3. Formulário HTML envia requisição GET para script CGI\n4. Apache executa script Python via módulo CGI\n5. Script Python manipula GPIO\n6. Resposta é exibida na interface via iframe\n\n### MQTT Integration\n1. Script Python conecta ao broker MQTT\n2. Publica mensagens em tópicos específicos\n3. Clientes MQTT podem se inscrever e receber notificações\n4. Permite comunicação bidirecional entre dispositivos\n\n## 📄 Licença\n\nEste projeto está licenciado sob a MIT License - veja o arquivo [LICENSE](LICENSE) para mais detalhes.\n\n## 📖 Referências\n\n- [Documentação Banana Pi](http://www.banana-pi.org/)\n- [Documentação Apache CGI](https://httpd.apache.org/docs/2.4/howto/cgi.html)\n- [GPIO Interface SysFS](https://www.kernel.org/doc/Documentation/gpio/sysfs.txt)\n- [Buildroot Manual](https://buildroot.org/downloads/manual/manual.html)\n- [MQTT Protocol](https://mqtt.org/)\n- [Raspbian Documentation](https://www.raspberrypi.org/documentation/)\n\n## 📝 Artigos e Tutoriais\n\n### Artigos Publicados\n- [Artigos no Medium](https://medium.com/@henriqueotogami)\n- [Artigos no Dev.to](https://dev.to/henriqueotogami)\n\n### Wiki do Repositório\n- [Desafio 01 - Piscar um LED na BananaPi utilizando Python via SSH](https://github.com/henriqueotogami/bananapi/wiki/Desafio-01-%E2%80%90-Piscar-um-LED-na-BananaPi-utilizando-Python-via-SSH)\n- [Desafio 02 - Notificar o acionamento do LED utilizando Python para um Web Client MQTT](https://github.com/henriqueotogami/bananapi/wiki)\n\n## 💼 Conecte-se\n\n- [Perfil no LinkedIn](https://www.linkedin.com/in/henrique-matheus-alves-pereira)\n- [GitHub](https://github.com/henriqueotogami)\n\n## 🙏 Apoie o Projeto\n\n[![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/henriqueotogami)\n\n## 🤝 Contribuindo\n\nContribuições são bem-vindas! Para contribuir:\n\n1. Faça um **fork** deste repositório\n2. Crie um **branch** para sua feature (`git checkout -b feature/nova-feature`)\n3. Faça **commit** das suas mudanças (`git commit -am 'Adiciona nova feature'`)\n4. Faça **push** para o branch (`git push origin feature/nova-feature`)\n5. Abra um **Pull Request**\n\n## 📝 Changelog\n\n### Versão 1.2\n- Adicionado projeto SIRIOS\n- Documentação de Buildroot\n- Guias de troubleshooting\n- Integração MQTT\n\n### Versão 1.0\n- Projetos básicos de GPIO\n- Scripts Python iniciais\n- Documentação básica\n\n---\n\n### Hashtags\n#BananaPi #IoT #EmbeddedSystems #Python #Apache #CGI #MQTT #GPIO #Buildroot #Linux #RaspberryPi #SistemasEmbarcados #InternetOfThings #OpenSource #GitHub #HardwareProgramming #WebDevelopment #Tutorial #Learning\n\n### Meta Keywords\n```\nbanana pi, sistemas embarcados, IoT, internet das coisas, python, apache, \nCGI, MQTT, GPIO, buildroot, linux, raspbian, controle remoto, LED, \nhardware programming, web development, tutorial, aprendizado, projetos práticos,\nsistemas embarcados, microcomputador, single board computer, SBC\n```\n\n\u003cbr\u003e\n\u003cdiv align=\"center\"\u003e\n\u003cimg width=\"auto\" src=\"https://github.com/henriqueotogami/learning-c-language/blob/master/images/kofi-henrique-otogami.jpg?raw=true\"\u003e\n\u003c/div\u003e\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n\u003cbr\u003e\n\n\u003e ### **Muito obrigado, e que a força esteja com você.**\n\u003e\n\u003e ### Desenvolvido por **Henrique Otogami** 🦁\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhenriqueotogami%2Fbananapi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhenriqueotogami%2Fbananapi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhenriqueotogami%2Fbananapi/lists"}