Índice:
- Etapa 1: Design de Hardware
- Etapa 2: Montagem
- Etapa 3: Firmware: Programando o Bootloader
- Etapa 4: Firmware: Código de atualização com PlatformIO
- Etapa 5: Firmware: Flashing a âncora
- Etapa 6: indo além
Vídeo: Pena de localização UWB: 6 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:36
A Ultra-WideBand Feather incorpora o módulo Decawave DWM1000 e um ATSAMD21 ARM Cortex M0 no fator de forma da pena Adafruit. O módulo DWM1000 é um módulo sem fio compatível com IEEE802.15.4-2011 UWB capaz de posicionamento interno preciso e altas taxas de dados, tornando esta placa perfeita para projetos de robótica onde a localização é necessária.
Características: - Decawave DWM1000 para rastreamento de precisão - ARM Cortex M0 para aplicativos rápidos e poderosos - Adafruit Feather compatível para integração com um amplo ecossistema existente - Interface SWD para programação e depuração de aplicativos - Conector USB-C - Carregador de bateria LiPo integrado
Para a descrição completa do projeto e atualizações, veja este projeto em meu site Prototyping Corner em prototypingcorner.io/projects/uwb-feather
O hardware e o software de origem para este projeto estão disponíveis no Repositório GitHub.
Etapa 1: Design de Hardware
Conforme mencionado na introdução, o UWB Feather consiste em um ATSAMD21 ARM Cortext M0 + para os cérebros e um módulo Decawave DWM1000 para o wireless de banda ultralarga, no fator de forma pena. O design é relativamente simples, consistindo em 20 itens BoM em um PCB de 2 camadas. Pinout é compatível com Adafruit M0 Feather
O carregamento de LiPo é controlado pelo controlador de gerenciamento de carregamento totalmente integrado de célula única MCP73831. A tensão da bateria pode ser monitorada no D9, no entanto, se o acesso a todos os IO é necessário, JP1 pode ser cortado para liberar este pino. A regulação de 3,3 volts é realizada pelo regulador linear de baixa queda AP2112K-3.3, fornecendo até 600mA.
Pinout é totalmente compatível com a linha de penas Adafruit M0 para facilitar a portabilidade do código. As linhas IO do DWM1000 são conectadas ao barramento SPI e aos pinos digitais 2, 3 e 4 para RST, IRQ e SPI_CS respectivamente (que não são expostos por meio do conector). O D13 também é conectado ao LED integrado, como é padrão entre muitas placas compatíveis com o Arduino.
A programação pode ser realizada sobre o cabeçalho SWD ou via USB se carregada com um bootloader correspondente, como o uf2-samdx1 da Microsoft. Veja o firmware para mais informações.
Nota em V1.0
Há um problema com o conector USB-C na versão 1 desta placa. A pegada que usei não inclui o recorte necessário para o método de montagem do recorte deste componente.
A versão 1.1 incluirá uma correção para isso, além de adicionar um conector micro-b para quem quiser. Consulte as considerações da versão 1.1 abaixo.
Para obter as considerações de design da Lista de Materiais e Hardware Versão 1.1, consulte a redação do projeto.
Etapa 2: Montagem
Com apenas 20 itens BoM e a maioria dos componentes não sendo menor que 0603 (os 2x capacitores de cristal eram 0402), a montagem manual desta placa foi fácil. Eu tinha o PCB e o estêncil de solda fabricados pela JLCPCB em preto fosco com acabamento de superfície ENIG.
O custo total para 5 placas (embora 10 não tenham nenhuma diferença de preço) e estêncil foi de $ 68 AUD, no entanto $ 42 desse valor foi para frete. Os pedidos pela primeira vez da JLCPCB e as placas eram de altíssima qualidade com bom acabamento.
Etapa 3: Firmware: Programando o Bootloader
O firmware pode ser carregado no conector SWD usando um programador como o J-Link da Segger. Acima está o J-Link EDU Mini. Para começar a programar a placa, precisamos carregar nosso bootloader e então configurar nossa cadeia de ferramentas.
Usarei o Atmel Studio para fazer o flash do bootloader. Para fazer isso, conecte o J-Link e abra o Atmel Studio. Em seguida, selecione Ferramentas> Programação do dispositivo. Em Ferramenta, selecione o J-Link e defina o dispositivo como ATSAMD21G18A e clique em Aplicar.
Conecte o J-Link ao conector de difusão SWD e aplique a alimentação via USB ou por meio da bateria. Depois de conectado, em Assinatura do dispositivo, clique em Ler. As caixas de texto Assinatura do dispositivo e Tensão alvo devem se propagar de acordo. Se eles não verificarem as conexões e tente novamente.
Para fazer o flash do bootloader, primeiro precisamos desabilitar o fusível BOOTPROT. Para fazer isso, selecione Fusíveis> USER_WORD_0. NVMCTRL_BOOTPROT e mude para 0 Bytes. Clique em Programa para fazer o upload das alterações.
Agora podemos fazer o flash do carregador de boot selecionando Memórias> Flash e definir a localização do carregador de boot. Certifique-se de Apagar Flash antes de selecionar a programação e clique em Programa. Se tudo correr bem, o D13 na placa deve começar a pulsar.
Agora você precisará definir o fusível BOOTPROT para o tamanho do carregador de inicialização de 8kB. Para fazer isso, selecione Fusíveis> USER_WORD_0. NVMCTRL_BOOTPROT e mude para 8192 bytes. Clique no programa para fazer o upload das alterações.
Agora que o bootloader foi atualizado, o D13 deve estar pulsando e, se conectado por USB, um dispositivo de armazenamento em massa deve aparecer. É aqui que os arquivos UF2 podem ser carregados para a programação da placa.
Etapa 4: Firmware: Código de atualização com PlatformIO
O firmware pode ser carregado por meio do protocolo UF2 ou diretamente por meio da interface SWD. Aqui, usaremos o PlatformIO por sua facilidade e simplicidade. Para começar, crie um novo projeto PIO e selecione Adafruit Feather M0 como a placa-alvo. Ao fazer upload por SWD com um J-Link, defina upload_protocol em platformio.ini conforme mostrado abaixo.
[env: adafruit_feather_m0] platform = atmelsam board = adafruit_feather_m0 framework = arduino upload_protocol = jlink
Agora você pode programar a placa com a simplicidade da estrutura do Arduino.
Etapa 5: Firmware: Flashing a âncora
Os módulos DWM1000 podem ser configurados para serem âncoras ou tags. Geralmente as âncoras são mantidas em locais estáticos conhecidos e as tags usam âncoras para obter uma posição relativa a eles. Para testar o módulo DWM1000, você pode fazer upload do exemplo DW1000-Anchor do repositório GitHub.
Para atualizar este programa com PlatformIO, em PIO Home, selecione Open Project e encontre a localização da pasta DW1000-Anchor no repositório GitHub. Em seguida, clique no botão de upload PIO e ele encontrará automaticamente a ponta de prova de depuração anexada (certifique-se de que está conectada e a placa está ligada).
O firmware da tag precisará ser carregado em outra placa. Em seguida, o resultado pode ser visualizado em um terminal serial.
Etapa 6: indo além
Outras melhorias neste projeto incluirão o desenvolvimento de uma nova biblioteca DW1000, a placa V1.1 altera outros projetos que utilizam essa tecnologia abrangente. Se houver interesse suficiente, considerarei a fabricação e a venda dessas placas.
Obrigado pela leitura. Deixe suas idéias ou críticas nos comentários abaixo e não deixe de conferir o projeto no Prototyping Corner
Recomendado:
Relógio de localização 'Weasley' com 4 ponteiros: 11 etapas (com fotos)
Relógio de localização 'Weasley' com 4 ponteiros: Então, com um Raspberry Pi que já estava rodando há algum tempo, eu queria encontrar um projeto legal que me permitisse fazer o melhor uso dele. Eu me deparei com este excelente relógio de localização Weasley com instruções, por ppeters0502 e pensei que
Cabeça de manequim de localização de som com Kinect: 9 etapas (com imagens)
Sound Localizing Mannequin Head With Kinect: Conheça Margaret, um manequim de teste para um sistema de monitoramento da fadiga do motorista. Ela recentemente se aposentou de suas funções e encontrou seu caminho para o nosso escritório, e desde então tem chamado a atenção daqueles que a acham 'assustadora'. No interesse da justiça, eu
Localizador de localização GPS: 5 etapas
Localizador de localização GPS: Olá a todos, Hoje vamos ver como fazer um localizador de localização GPS usando o módulo GPS NEO-6m e o arduino. Primeiro vamos ver o que é GPS
Como alterar a localização da mídia na biblioteca JW: 4 etapas
Como alterar a localização da mídia na biblioteca JW: A Biblioteca JW é um aplicativo Metro, o que significa que possui uma interface simplificada. Isso é bom na maioria dos casos, pois para a maioria dos usuários você simplesmente carrega o aplicativo e usa-o da maneira que precisa. A dificuldade surge quando você quer fazer algo um pouco mais avançado
Prank de localização Omegle com tubarão de arame: 4 etapas
Prank de localização do Omegle com Wire Shark: Esta é a maneira como você pode saber a localização (provável) de qualquer pessoa que conecta você por chat de vídeo Omegle. Aqui, estamos usando o analisador de rede Wire shark, mas há muitas outras maneiras de fazer isso também. No vídeo omegle, o pacote de vídeo contém IP