Arquivos para arduino

Learning Image Classification on embedding devices (ESP32-CAM)

ESP32-CAM: TinyML Image Classification - Fruits vs Veggies

More and more, we are facing an embedding machine learning revolution. And when we talk about Machine Learning (ML), the first thing that comes to mind is Image Classification, a kind of ML Hello World!

One of the most popular and affordable development boards that already integrates a camera is the ESP32-CAM, which combines an Espressif ESP32-S MCU chip with an ArduCam OV2640 camera.

image.png

The ESP32 chip is so powerful that it can even process images. It includes I2C, SPI, UART communications, and PWM and DAC outputs.

Parameters:

  • Working voltage: 4.75-5.25V
  • splash: Default 32Mbit
  • RAM: Internal 520KB + external 8MB PSRAM
  • Wi-Fi: 802.11b/g/n/e/i
  • Bluetooth: Bluetooth 4.2BR/EDR and BLE standard
  • Support interface (2Mbps): UART, SPI, I2C, PWM
  • Support TF card: maximum support 4G
  • IO port: 9
  • Serial port rate: default 115200bps
  • Spectrum range: 2400 ~2483.5MHz
  • Antenna form: onboard PCB antenna, gain 2dBi
  • Image output format: JPEG (only OV2640 support), BMP, GRAYSCALE
ESP32-S.jpeg

Below, the general board pinout:

image.png

Note that this device has not a USB-TTL Serial module integrated, so to upload a code to the ESP32-CAM will be necessary a special adapter as below:

FTDI Basic.png

Or a USB-TTL Serial Conversion Adapter as below:

If you want to learn about the ESP32-CAM, I strongly recommend the books and tutorials of Rui Santos.

Continue lendo…

Emulating a Google Assistant on a RaspberryPi and Arduino Nano 33 BLE (TinyML)

Continue lendo...

Home Automation with Alexa

31 31-03:00 dezembro 31-03:00 2020 — 1 Comentário

This project shows how to emulate IoT devices and control them remotely by voice using Alexa.

Continue lendo...

Este post é uma continuação do ArduFarmBot: Controlando um tomateiro com a ajuda de um Arduino e Internet das coisas (IoT)

Na primeira parte do projeto, criamos uma estação local de controle e captura de informações, tais como temperatura, umidade relativa do ar, luminosidade e umidade do solo. Com base nesses dados, o ArduFarmBot decidia automaticamente a quantidade certa (e quando) o tomateiro deveria receber calor e água. A estação local de controle desenvolvida na Parte 1, também permitia a intervenção manual de um operador a fim de controlar tanto a bomba de água quanto a lâmpada elétrica. Nesta  segunda parte, implementaremos uma abordagem “IoT” onde a”intervenção manual” também poderá ser feita remotamente via Internet. O diagrama de blocos mostra como faremos isso:

ardufarmbot_gal_block_diagram

Note-se que os dados capturados serão enviados a um “serviço de armazenamento na nuvem” (no nosso caso Thinkspeak.com). Além disso, um website dedicado, o “Remote Control Page” mostrado no diagrama,  irá monitorar e exibir esses dados em tempo quase real. Esta página também permitirá a ativação remota da bomba e  da lâmpada.

 

Continue lendo…

Esta é a segunda e última parte de um projeto mais complexo, que explora a potencialidade de um robô seguidor de linha. Nesta etapa, aplicaremos conceitos de inteligência artificial na exploração de labirintos, implementando algoritmos que nos ajudarão a encontrar o caminho da saída mais curto e rápido.

Continue lendo...

“Rex”, um robô que nunca perde a linha!

20 20-03:00 abril 20-03:00 2016 — 9 Comentários

O objetivo deste projeto é construir um robô seguidor de linha com controle PID. Também usaremos um dispositivo Android para poder configurar mais facilmente os principais parâmetros (ganhos) da malha de controle.

Continue lendo...
Descrição geral:

A idéia deste projecto é o desenvolvimento de um protótipo totalmente funcional para uma estação móvel  usada na coleta de dados ambientais tais como: temperatura, umidade e luminosidade.  Este protótipo foi desenvolvido somente para fins didáticos e fez parte de meu projeto final no curso de especialização do Coursera em parceria com a University of California, Irvine:  “Uma Introdução à Programação da Internet of Things (IOT)“.

Considerações do projeto:
  • O Rover será controlado remotamente por um dispositivo Android com capacidade Bluetooth. Os dados serão continuamente capturados e transmitidos independentemente se o Rover está parado ou em movimento.
  • O usuário deve receber um feedback visual (streaming de vídeo ao vivo)
  • Os dados capturados serão analisados através de um site público (neste caso: thingspeak.com)
  • Os dados estarão disponíveis para os usuários em um formato gráfico e tabela
  • Alarmes via Twitter serão gerados localmente pela estação ou pelo website
  • O Rover terá capacidade autónoma para evitar obstáculos a fim de proteger-se em caso de mau controle por parte do usuário.
Opções de projeto:

Com base nos requisitos, inicialmente 2 opções foram consideradas para este projeto.

  1. Um único processador responsável por todas as tarefas, que neste caso deveria ser um Raspberry Pi.
  2. Um processador dual , sendo as funções divididos entre eles ( Arduino e RPI ) :
    • Processor 1: RPi
      • Captura de dados
      • Comunicação com a Web
      • Transmissão de vídeo
      • Envío de mensagens via mídia social
    • Processor 2: Arduino
      • Controle dos motores (movimento e posicionamento da câmera)
      • Evasão de obstáculos
      • Comunicação com o controle remoto

Em termos de custos, utilizar 2 processadores é de fato menos custoso do que a opção de um único processador. Isso ocorre porque o Arduino é um item muito barato e portanto mais acessível que a opção de “Servo Hat”, necessária para o RPi controlar os servos de maneira adequada. Outra diferença é o módulo de BT. Para o Arduino, um módulo barato como o HC – 06 BT 3.0 é suficiente, sendo que o mesmo custa a metade do preço do “BT Dongle” a ser adicionado ao Rpi.  Assim,a opção escolhida foi o projeto com processador dual.

diag Block complete

Continue lendo…

O braço robótico: Desenvolvimento do Projeto

17 17-03:00 fevereiro 17-03:00 2016 — 9 Comentários

Depois de um longo e tenebroso inverno, vamos ao projeto de verdade! Afinal, já era sem tempo! O circuito como comentado em meu post anterior:

O braço robótico – Introdução

será baseado no Arduino MEGA, alguns potenciômetros, botões e LEDS para o “painel de controle local”.

Robot Arm Project diagram

Um modulo HC-06  conectará o braço, via rede Bluetooth, com um celular Android (controle em modo remoto).

Continue lendo…

Conectando “coisas” através do Bluetooth

30 30-03:00 janeiro 30-03:00 2016 — 14 Comentários

 

bluetooth-logo

Uma rede sem fio local (e pessoal) porreta é sem dúvida a Bluetooth (BT). Hoje em nosso dia-a-dia é comum encontrar-nos com celulares, aparelhos de som, cameras, etc., entrelaçados com a ajuda da famosa “luzinha azul”

No mundo do IoT e da automação em geral, é muito comum deparar-nos com controles remotos via celulares utilizando tecnologia BT. Isso é devido a 2 componentes básicos mas muito importantes:

  1. Plataforma de desenvolvimento para OS ANDROID
  2. Módulos BT baratos e acessíveis (Como por exemplo o HC-06)

Neste tutorial, vou desenvolver algumas idéias de como controlar as saídas de um Arduíno através de um celular de maneira a mover um Robot, acionar lâmpadas em uma casa, etc.

No mercado é comum encontrar módulos de BT 3.0  “Master-Slave” como o HC-05  e “Slaves” como o HC-06. Já mais recentemente, apareceram os HC-08 e HC-10 que trabalham com tecnologia BT 4.0 ou BLE (“Bluetooth Low Energy”). Os módulos BLE são os únicos que podem ser conectados a um Iphone, pois infelizmente a Apple não fornece suporte a ao BT 3.0.

Para os projetos discutidos aqui, usarei um HC-06 que é bem popular e barato (Bye, bye, Iphone, vamos de Android!). O Módulo é alimentado com 5V o que faz com que ele seja facilmente conectado a um Arduino

HC06 PinsUNO por exemplo, para receber e transmitir informações a outros dispositivos como um PC ou um telefone celular. Seus pinos de transmissão e recepção podem ser conectados diretamente ao UNO, não havendo a necessidade de se utilizar divisores de tensão como vimos no caso do ESP8266.

Na prática, o HC-06 deve ser ligado diretamente aos pinos 0 e 1 do Arduino (Serial):

  • HC06-Tx ao Arduino pin 0 (Rx)
  • HC06-Rx ao Arduino pin 1 (Tx)

Ao se usar a entrada serial por HW do UNO é muito importante lembrar-se que o HC-06 não pode estar fisicamente conectado aos pinos 0 e 1 durante a carga do programa, isso porque o USB também usa essa mesma serial.  Uma maneira simples de se contornar esse probleminha (se seu projeto não utiliza muitos GPIOs do UNO) é usar uma porta serial por SW através da library SoftwareSerial (a mesma que usamos no caso do ESP8266). Em nosso caso aqui, usaremos os pinos 10 e 11 do UNO (Tx, Rx respectivamente).

UNO-HC06

Continue lendo…

Para começar (e se desenvolver) no mundo da eletrônica, o melhor caminho sem dúvida é a internet! Vai aqui uma super dica de como se tornar um grande programador através da técnica do “Psychding”:

Psychding

Heheheheheh! Seria bom se só isso resolvesse! Mas ajuda, claro! Mas para aprender mesmo, vale a pena uns cursos, muita leitura e claro, “mãos na massa!”. Para o pessoal que está no Brasil um site muito legal é o:

Laboratório de Garagem

Como o pessoal do Garagem mesmo explica, “O Laboratório de Garagem é uma iniciativa voltada para a integração, colaboração e apoio aos desenvolvedores independentes de ciência e tecnologia, ou como gostamos de ser chamados: garagistas.

Somos uma rede social, uma incubadora, uma loja virtual e um grupo de pessoas que acreditam que a próxima revolução pode (e vai) sair de uma garagem, ainda mais se ela estiver conectada a muitas outras garagens.

Eu também sou um dos garagistas e tenho procurado dar meus pitecos por lá. Vale a pena se associar, participar, mandar sugestões, etc. O pessoal de lá é muito legal, estão sempre prontos a ajudar, não importando se as dúvidas são básicas ou complicadas!

O Lab de Garagem por exemplo, tem um curso on-line básico muito legal (em português) para quem quer se iniciar no mundo dos Arduinos:

Curso Arduino – Loboratorio de Garagem

É isso aí! Inté!

Marcelo Rovai no Garagem