Como desenvolver seu próprio Google Aiy sem o conjunto

O Assistente de Voz do Google já existe por um tempo agora, bem como quando a Amazon lançou sua Alexa API, bem como portado o código do PaaS Cloud para o Raspberry Pi 2 foi apenas Uma questão de tempo antes de todo mundo pulou no trem rápido para o Maker Kingdom. O Google acabou de fazer em estilo.

Poucos entendem que a API do Google Assistant para o Raspberry PI 3 tem sido disponível há muito tempo, no entanto, quando decidiram fornecer um conjunto gratuito com os problemas de maio de 2017 da revista Magpi, eles fizeram uma percepção em todos. Infelizmente, o mundo tem mais fabricantes, bem como hackers, bem como o número de cópias da revista.

Neste writeup, projeta a versão DIY do conjunto Aiy para todos os outros que desejam falar com uma caixa de papelão. Eu tomo uma olhada melhor no kit livre, afaste-se, coloque-a, bem como substituí-la por DIY Magic. Para tornar as coisas mais convenientes, eu também projetei um gabinete que você pode imprimir 3D para totalizar o kit. vamos começar.

A desmontagem

Um grito para o meu amigo [Shabaz] no Reino Unido por me enviar uma cópia do Magpi. O Kit de Voz do Google Aiy Jobs “(daqui em diante entendido como o kit) contém dois PCBs, bem como muitas outras coisas. O chapéu de voz que aparece como um cartão de som em uma dieta tem um número extremamente restrito de componentes. Vou detalhar cada seção, bem como desenhar o esquema KICAD para exatamente o mesmo por um

Servos.

A partir do lado esquerdo, existem 6 conjuntos de cabeçalhos de 3 pinos que são rotulados ‘Servos’. O significado do servo médio é possível utilizar o módulo PWM on-board da framboesa PI 3. Cada conjunto tem um pino GPIO, 5V, bem como a conexão GND. O PIN do GPIO não vincula diretamente ao cabeçalho da framboesa PI 3, no entanto, com 220ohm presentes limitantes (rotulados R1-R6).

Fonte de energia

Ao sul deles são gadgets identificados Q5, bem como Q6, que estou presumindo fazer parte de um circuito de escolha de fornecimento de energia. Corrija-me se eu estiver errado, no entanto, aqui está a minha estimativa. O trabalho é simples onde Q5 só liga quando a tensão de entrada é maior que o 5V da porta USB. Um simples comparador deve fazer isso que estou utilizando o LM393 para referência.

EDIT: [RAIVSR] explicou que isso pode ser o equivalente do diodo ideal da framboesa PI ‘.

Interfaces de comunicação

Norte dos cabeçalhos ‘servo’ é J15 rotulado I2C que link diretamente para o cabeçalho Raspberry Pi 3. Isso significa que estes não devem estar ligados a qualquer coisa com pull-ups de 5V. Eles não estão sendo utilizados no conselho, no entanto, discutiremos mais sobre isso mais tarde. Bem ao lado é o SPI, bem como cabeçalhos UART de 2 pinos. Mais uma vez, estes vinculam diretamente ao cabeçalho principal, bem como servir apenas como uma fuga.

O DAC, bem como EEPROM

Um pouco mais baixo, bem como nós aparecemos no circuito encaixotado com um QFN de 16 pinos marcado ‘akk bdq’. Este é o Maxim Max98357a (PDF), que é um DAC I2S com um amplificador de classe D. Ele dirige o alto-falante diretamente, já que há apenas uma saída, só pode ser mono ou estéreo integrado. Ainda é bons balançando para o orçamento.

A fascinante é a existência de JP6 que parece ter todas as conexões da I2 da Maxim Max98357a, bem como algumas outras linhas de escolha. Integrado com os dois viias que link para a segunda saída do alto-falante, você pode potencialmente em forma mais uma placa Maxim Max98357a no topo para obter som estéreo. Eu vou fazer o esquemático, bem como torná-lo para download, bem como se você quiser fornecer um tiro Deixe-me entender os resultados. Pense nisso o dever de casa opcional.

Ao lado do DAC é um Ssop de 8 pinos, que é um 24C32 (PDF) I2C EEPROM. Não está ligado ao cabeçalho I2C que falei mais cedo, no entanto, em vez de pinos 27, bem como 28 do cabeçalho da framboesa Pi 3. De acordo com o blog da Framberry Pi Foundation.

“O EEPROM possui as informações do fabricante do conselho, a configuração do GPIO, bem como uma coisa chamada” fragmento de “árvore de dispositivos” – basicamente, uma descrição do hardware conectado que permite que o Linux toca imediatamente os drivers necessários. ”

Então, tem algum molho adicional que torna as coisas, assim como eu poderei utilizar um buspirate para despejar os dados, no entanto, não tenho certeza se o Google considera a propriedade intelectual ou a propriedade comercial, então não vou. Eu tenho um alternativo para ele também tão verificado.

Drivers

Movendo-se para a direita, descobrimos 4 cabeçalhos marcados ‘drivers’. Estes são circuitos Mosfet para controlar toneladas, como relés. [Shabaz] fez uma tarefa fantástica traçando os elementos nisso, bem como os 3 pinos são GPIO, 5V, bem como motorista.

Os Mosfets podem conduzir toneladas de 500 mA a cada graças a um polyswitch, no entanto, os GPIOS são oferecidos para utilizar diretamente também. Toneladas a serem conduzidas devem ser ligadas entre os pinos marcados ‘+’, bem como ‘-‘. O cabeçalho do cabeçalho à esquerda é um ganho diretoccess to to GPIOs header pins from the Raspberry Pi 3 as well as the schematic shows the same.

Use these to link LEDs or similar gadgets to suggest the operation of the relays or loads.

Microphone as well as Button Connectors

More fascinating stuff is happening on the right side’s upper right with a push button as well as two JST connectors. The 4 pin connector is meant for the push button that sits on top of the assembled enclosure. The little PCB mounted push button is wired in parallel with the outside switch as well as can be utilized in its location while setting up as well as testing. The 5 pin JST is for the microphone connector as well as has all the I2S pins.

The Microphones

Lastly, the microphone board is marked 432 QDF21G, as well as has Knowles SPH0645LM4H MEMs digital microphones that talk I2S directly.

É isso!

That about wraps up the teardown as well as all the info needed to make your own AIY Kit. The KiCAD schematic data are offered for download from GitHub nevertheless I leave you with the fun part which is the design as well as routing.

Here is some food for thought. Some parts can be omitted as well as the size of the hat can be shrunk down to the Pi Zero pHat.

For simplicity reasons, I am utilizing the preconfigured OS picture from the Google AIY page. It is a tad short of 900MB as well as can be downloaded directly from Goolge (huge file).

Add A Shutdown Button

You most likely noticed the little golden button next to the huge eco-friendly button in the picture above as well as that is the very first part of the exercise. It is a shutdown button as well as is added since I don’t want to SSH to the box every time I want to turn it off safely.

Get the button you want to utilize as well as add two wires with female headers. This bit works even without the Voice Hat so feel free to try it out. next if you have a voice hat, add male headers to the I2C part. You may select any type of other pins as well as it will still work. link the button to the SDA or GPIO 2 as well as boot the Pi 3 up.

Open up your favourite text editor as well as copy-paste the complying with code into it.

1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14
15.
16
17
18.
19
20.
21
22.
23.
#!/bin/python
# simple script for shutting down the raspberry Pi at the press of a button.
# by Inderpreet Singh

import RPi.GPIO as GPIO
import time
import os

# utilize the Broadcom SOC Pin numbers
# configuration the Pin with interior pullups enabled as well as PIN in reading mode.
GPIO.setmode(GPIO.BCM)
GPIO.setup(02, GPIO.IN, pull_up_down = GPIO.PUD_UP)

# Our function on what to do when the button is pressed
def Shutdown(channel):
    os.system("sudo shutdown -h now")

# add our function to execute when the button pressed event happens
GPIO.add_event_detect(02, GPIO.FALLING, callback = Shutdown, bouncetime = 2000)

# Agora espere!
while 1:
    time.sleep(1)

Save the data in your /home/pi folder as shutdown.py

In a terminal type the complying with commands

1.
chmod +x shutdown.py python shutdown.py &

This should make the script run in the background. If you press the button, the Pi should shutdown immediately. You may select to add a delay by uncommenting the sleep phone call in the example code. Alternatively, you may likewise modification the GPIO by replacing the appropriate number in the python script.

Frio! now we can shutdown by pressing a button.

Add a USB noise Card

The obvious alternate to the Google AIY Voice Hat is to utilize any type of USB noise Cards that are offered from a number of sources. The easiest method is to just plug one in as well as configure the software application to utilize that instead of the Hat however when there two drivers installed, the python scripts requirement to be reconfigured to make whatever seamless.

Once you plug in the soundcard, the very first thing to do is inspect if it was acknowledged or not. In the terminal window, type in:

1.
aplay – l

‘aplay’ is utilized by the scripts to speak out the replies so you should be able to see two noise devices. note that the onboard noise has been disabled from within the config.txt (see gadget tree reference) and can be enabled if you plan to utilize a USB microphone instead of the noise card. The windows output should look like the picture below.

I would like to set the USB noise card as the default audio, as well as for that we requirement to customize the /etc/asound.conf .

1.
sudo nano /etc/asound.conf

Delete the existing material as well as replace it with text as shown below. though this sets the default input as well as output gadget to the USB device, there is one more step to make things work. (To exit nano, utilize Ctrl+x, y, return)

Next we edit to audio.py data that handles all the audio playing as well as recording functionality. For that, open up the data in your favourite text editor; mine is nano:

1.
sudo nano /home/pi/voice-recognizer-raspi/src/audio.py

Scroll down to the part that’Arecord’ dos Estados que está na função __init__. Obviamente, há um processo dedicado que mantém o gravador em execução, como mostrarei no vídeo. Por enquanto, queremos editar os argumentos para garantir que ele utilize o cartão USB para capturar áudio em vez do chapéu de voz original. Um ajuste simples para utilizar ‘-d’, ‘sysdefault: card = 1’ deve ser suficiente como mostrado na figura abaixo.

Uma modificação semelhante é necessária para a função APLAY um pouco mais no código.

Com isso, o hack está completo! Clique duas vezes no ‘test_audio.py’ para inspecionar se o áudio funcionar. Estamos faltando apenas uma parte do quebra-cabeças – o botão “ouvir”! Então, apenas cabo um botão entre o GPIO23, bem como o pino do solo adjacente, bem como executar ‘src / main.py’ para começar a jogar com um DIY Google Aiy.

Uma demonstração

Uma pequena demonstração de vídeo do hack sugerido com um cartão de ruído USB, alto-falante externo, bem como um microfone barato.

Um recinto

O gabinete impresso 3D é projetado em Fusion360, bem como os dados STL fazem parte do repositório do github. Você pode utilizar exatamente o mesmo gabinete para vários trabalhos, uma vez que há stonloffs para o PI de framboesa, bem como as portas são trazidas para conveniência. Há uma grande área no interior para adicionar chapéus, bem como circuitos extras.

Eu fiz o recinto dividido do meio para garantir que se torne simples de obter acesso aos GPIOS. A coisa toda vai pressionar em forma incluindo a tampa superior que tem furos para três botões. Eu, apesar de fazer sentido ter botões menores, pois o resultado é esperado para ser mais resistente ao papelão. Há ampla área para o alto-falante, caso você selecione para incluir um que seja um pouco diferente.

Eu não tive uma possibilidade de imprimir um fora, bem como atualizará esta página quando houver algum tipo de desenvolvimento no tópico. Aqui está a renderização do design.

Resumo

O Google já teve suas APIs disponíveis para o público, no entanto, a imagem de Raspbian pré-configurada ajudará uma grande quantidade de pessoas a começar. Eu tentei projetar os fundamentos do cartão de ruído, além de fornecer os planos para um cartão equivalente se você quiser fazer um. Para outros, a escolha de utilizar um cartão de ruído externo é explicada, bem como demonstrada, bem como espero que as pessoas influenciam verdadeiramente em tais projetos. O mundo precisa de mais Aiy, bem como aqui é a sua possibilidade de começar, então o que você está esperando? Obter hacking.

Posted in Uncategorized

Leave a Reply

Your email address will not be published. Required fields are marked *

Extra Text
Cape Town, South Africa