https://s3-us-west-2.amazonaws.com/secure.notion-static.com/670cda05-3a42-4692-8091-d84f7bd2afd6/Untitled.png

Temos aqui para o início da da entrega um planejamento com as conexões dos pinos planejados para a versão final.

Após isso definido, foram feitos testes em cada componente de forma individual:

Speakers

Os primeiros a serem testados foram os dois speakers, nossa solução utiliza alimentação dos speakers através da porta USB do Raspberry e comunicação através da entrada P2. O teste demonstrou que os speakers funcionam de forma Plug'n Play

https://youtu.be/lPb7P2_yjbM

Webcam

Para a Webcam também estamos utilizando uma entrada USB da Raspberry, afim de termos acesso tanto ao áudio quanto ao vídeo da dita Webcam. Para este teste foi utilizado o FFmpeg no formato de apenas receber e mostrar o input gerado pela Webcam:

ffplay -f video4linux2 -framerate 30 -video_size hd720 /dev/video0

https://youtu.be/fPjHZM5ldx8

Motor de Passo

O próximo teste a ser feito foi utilizando os motores já acoplados ao esqueleto. Era importante saber se o torque dos motores seria suficiente para mover os membros do robô. Com o teste, foi descoberto que sim. Também foi feito um teste de alimentar os 4 motores simultaneamente e mandar o Raspberry comandar 1 deles, para confirmar que a alimentação do mesmo seria suficiente.

#Carrega bibliotecas
import sys
import time
import RPi.GPIO as GPIO
#Utiliza numeros da GPIO ao inves
#da numeracao dos pinos
GPIO.setmode(GPIO.BCM)
#Pinos de conexao ao motor
#Pinos 40, 38, 36, 32
#GPIO21,GPIO20,GPIO16,GPIO12
StepPins = [2,3,4,17]
#Define os pinos como saida
for pin in StepPins:
print("Setup pins")
GPIO.setup(pin,GPIO.OUT)
GPIO.output(pin, False)
#Sequencia de ativacao
Seq = [[1,0,0,0],
[1,1,0,0],
[0,1,0,0],
[0,1,1,0],
[0,0,1,0],
[0,0,1,1],
[0,0,0,1],
[1,0,0,1]]

StepCount = len(Seq)-1
#Configura sentido de giro
StepDir = 2 # 1 ou 2 para sentido horario
# -1 ou-2 para sentido anti-horario
#Tempo de espera
WaitTime = 1/float(2000)
#Inicializa variaveis
StepCounter = 0
while True:
#Movimenta o motor e envia os dados de ativacao
#para o display
for pin in range(0, 4):
xpin = StepPins[pin]
print (StepCounter)
print (pin)
if Seq[StepCounter][pin]!=0:
print (" Step %i Enable %i" %(StepCounter,xpin))
GPIO.output(xpin, True)
else:
GPIO.output(xpin, False)
StepCounter += StepDir
#Ao final da sequencia, reinicia o processo
if (StepCounter>=StepCount):
StepCounter = 0
if (StepCounter<0):
StepCounter = StepCount
#Delay para movimentar o motor
time.sleep(WaitTime)

https://youtu.be/m5KFrr9Wewk

LCD

O teste seguinte foi feito utilizando o display de LCD 16x2, para que o teste obtivesse sucesso, foi necessário o processo de solda dos jumpers ao LCD antes de seu uso. Segue o código exemplo utilizado no teste:

import sys
sys.path.append('/home/pi/lcd')
import lcd
lcd.lcd_init()
lcd.lcd_byte(lcd.LCD_LINE_1, lcd.LCD_CMD)
lcd.lcd_string("Raspberry Pi", 2)
lcd.lcd_byte(lcd.LCD_LINE_2, lcd.LCD_CMD)
lcd.lcd_string("Model B+", 2)
lcd.GPIO.cleanup()

https://youtu.be/u1g5kKsw_W4

Sensor PIR

Para o sensor PIR foi necessário o desenvolvimento de um pequeno circuito, afim de não queimarmos a entrada do Raspberry. Para isso foram utilizados 2 resistores de 2,2k Ohm e 2 resistores de 1k Ohm afim de fazermos um divisor de tensão e alimentarmos corretamente a porta do GPIO. Utilizamos ainda um segundo GPIO com um LED vermelho apenas para demonstrar o funcionamento do PIR. Segue esquemático: