Índice:

Lição inteligente: 6 etapas
Lição inteligente: 6 etapas

Vídeo: Lição inteligente: 6 etapas

Vídeo: Lição inteligente: 6 etapas
Vídeo: Fique MAIS INTELIGENTE em 5 PASSOS – Prof° Píerluigi Piazzi (Aprendendo inteligência) resumo animado 2024, Julho
Anonim
Lição Inteligente
Lição Inteligente

O projeto Smart Lesson visa criar um produto no qual os professores podem utilizar como um conteúdo a mais para usar seus alunos os levando um nível de aprendizado muito superior por conseguir mostrar os conteúdos de forma dinâmica e interativa, proporcionando experiências não presenciadas em uma sala de aula convencional.

Etapa 1: Materiais

Materiais
Materiais

Para programar um Dragonboard 410c:

- Dragonboard 410c;

- Cabo HDMI;

- Teclado via USB -Mouse via USB -Monitor;

- Mezanino 96 quadros;

Para executar o projeto:

- Dragonboard 410c;

- Mezanino 96 quadros;

- Sensor Grove IMU 10DOF MPU - 9250 (não limitado ao uso de um único sensor);

- Fonte de alimentação externa 11.1V;

- Jumper fêmea-fêmea;

Etapa 2: Dragonboard 410c Com Mezanino 96Boards: Configuração E Pinagem

Dragonboard 410c Com Mezanino 96Boards: Configuração E Pinagem
Dragonboard 410c Com Mezanino 96Boards: Configuração E Pinagem
Dragonboard 410c Com Mezanino 96Boards: Configuração E Pinagem
Dragonboard 410c Com Mezanino 96Boards: Configuração E Pinagem
Dragonboard 410c Com Mezanino 96Boards: Configuração E Pinagem
Dragonboard 410c Com Mezanino 96Boards: Configuração E Pinagem

O Shield Mezzanine deve ser acoplado à placa Dragonboard 410c, para que haja saída de saída 3.3V / 5V (level shifter), pois a placa só oferece 1.8V de saída. O sensor utilizado foi um magnetômetro Sensor MPU - 9250 Grove -IMU 10DOF, especificações:

Tensão de Entrada: 5V / 3,3V;

Corrente de funcionamento: 6mA;

Comunicação Serial;

Pinos: VCC, GND, SDA e SCL;

Interface I2C;

Para este exemplo foi usado um dos conectores Grove I2C0 (5V), que oferece uma comunicação serial e uma alimentação necessária para o funcionamento do sensor. (ver imagem)

Etapa 3: Integração: Unidade + Vuforia

Integração: Unidade + Vuforia
Integração: Unidade + Vuforia

1- Vá ao site da vuforia na área de desenvolvedor e crie uma chave.

2- Vá na tab Target Manager e irresistíveis uma textura para fazer o Tracking (quanto mais complexa melhor).

3- Feito isso baixe um banco de dados para o Unity e importe.

4- No Unity configure um target image target com a textura escolhida e dentro dele provêem os modelos 3D que deseja utilizar, os mesmos ativos quando a imagem localizada pelo app.

5 - busca a chave de licença da vuforia nas configurações dentro do Unity.

6- Após isso módulo os componentes da aula em algum programa 3D e prepare as aulas em cima do alvo da imagem (pode ser uma aula de Biologia ou Física…).

Etapa 4: Unity: Configurar O Android SDK

Unity: Configurar O Android SDK
Unity: Configurar O Android SDK

1- Baixe o SDK do Android, vá em Preferências do Unity e selecione o seu diretório.

2- Mude uma plataforma de build do Unity para o android, assim conseguiremos gerar o APK.

3- Instale o apk em um dispositivo (não esqueça de permitir fontes desconhecidas nas configurações).

Etapa 5: Criando Servidor Local E Recebendo Informações Em Python

Criando Servidor Local E Recebendo Informações Em Python
Criando Servidor Local E Recebendo Informações Em Python

Concluídas como configurações configuradas, podemos acessar o Sistema Linaro dentro da placa e usar várias linguagens como C ++, Java, Python, etc., para criar o software que será criado. Este software é responsável por receber os dados lidos pelo sensor, processar e tratar estes dados conforme solicitado pelo programa. Depois carrega esses dados para o servidor alocado na própria placa para enviar os dados já tratados para a plataforma Unity. Os exemplos de código deste projeto estão em linguagem Phyton. Os dados são transferidos da Dragonboard 410c para o Unity e são orientados em um app.

Seguem os códigos mag_python.py (leitor de dados do sensor), server2.py (Servidor local), Executável no Shell:

Código mag_python.py

#! / usr / bin / python

# Autor: Jon Trulson

# Copyright (c) 2015 Intel Corporation.

#

# A permissão é concedida gratuitamente a qualquer pessoa que obtenha

# uma cópia deste software e arquivos de documentação associados (o

# "Software"), para lidar com o Software sem restrições, incluindo

# sem limitação, os direitos de usar, copiar, modificar, mesclar, publicar, # distribuir, sublicenciar e / ou vender cópias do Software, e para

# permitir que as pessoas a quem o Software é fornecido o façam, sujeito a

# as seguintes condições:

#

# O aviso de direitos autorais acima e este aviso de permissão devem ser

# incluído em todas as cópias ou partes substanciais do Software.

#

# O SOFTWARE É FORNECIDO "COMO ESTÁ", SEM GARANTIA DE QUALQUER TIPO, # EXPRESSA OU IMPLÍCITA, INCLUINDO, MAS NÃO SE LIMITANDO ÀS GARANTIAS DE

# COMERCIALIZAÇÃO, ADEQUAÇÃO A UM DETERMINADO FIM E

# NÃO INFRACÇÃO. EM NENHUMA HIPÓTESE OS AUTORES OU TITULARES DOS DIREITOS AUTORAIS SERÃO

# RESPONSÁVEL POR QUALQUER RECLAMAÇÃO, DANOS OU OUTRA RESPONSABILIDADE, SEJA EM UMA AÇÃO

Nº DE CONTRATO, DECLARAÇÃO OU DE OUTRA FORMA, DECORRENTE DE, FORA DE OU EM CONEXÃO

# COM O SOFTWARE OU O USO OU OUTRAS NEGOCIAÇÕES NO SOFTWARE.

from _future_ import print_function

tempo de importação, sys, sinal, atexit, urllib, urllib2, matemática

de upm import pyupm_mpu9150 as sensorObj

def main ():

# data = {}

# data ['magnetrometro'] = raw_input ("Informe a temperatura")

# data = urlib.urlencode (data)

# post_request = urlib2. Request (post_url, dados, cabeçalhos)

# Experimente:

# post_response = urlib2.urlopen (post_request)

# print post_response.read ()

# exceto URLError como e:

# print "Erro:", e.reason

# Instancie um MPU9250 no barramento I2C 0

sensor = sensorObj. MPU9250 ()

## Manipuladores de saída ##

# Esta função impede que o python imprima um rastreamento de pilha quando você pressiona control-C

def SIGINTHandler (signum, frame):

aumentar SystemExit

# Esta função permite que você execute o código na saída

def exitHandler ():

imprimir ("Saindo")

sys.exit (0)

# Registrar manipuladores de saída

atexit.register (exitHandler)

sinal.sinal (sinal. SIGINT, SIGINTHandler)

sensor.init ()

x = sensorObj.new_floatp ()

y = sensorObj.new_floatp ()

z = sensorObj.new_floatp ()

enquanto (1):

sensor.update ()

sensor.getAccelerometer (x, y, z)

# print ("Acelerômetro:")

# print ("AX:%.4f"% sensorObj.floatp_value (x), end = '')

# print ("AY:%.4f"% sensorObj.floatp_value (y), end = '')

# print ("AZ:%.4f"% sensorObj.floatp_value (z))

módulo1 = (sensorObj.floatp_value (x) -0,005) ** 2+ (sensorObj.floatp_value (y) -0,0150) ** 2+ (sensorObj.floatp_value (z) -0,0450) ** 2

# imprimir (módulo1)

módulo1 = ("%.1f"% abs (((módulo1 ** 0,5) -1) * 9,8))

# imprimir (módulo1)

#

# sensor.getGyroscope (x, y, z)

# print ("Gyroscope: GX:", sensorObj.floatp_value (x), end = '')

# print ("GY:", sensorObj.floatp_value (y), end = '')

# print ("GZ:", sensorObj.floatp_value (z))

sensor.getMagnetometer (x, y, z)

# print ("Magnetômetro: MX:", sensorObj.floatp_value (x), end = '')

# print ("MY:", sensorObj.floatp_value (y), end = '')

# print ("MZ:", sensorObj.floatp_value (z))

módulo2 = sensorObj.floatp_value (x) ** 2 + sensorObj.floatp_value (y) ** 2 + sensorObj.floatp_value (z) ** 2

# imprimir (módulo2)

módulo2 = ("%.2f"% (módulo2 ** 0,5))

# imprimir (módulo2)

arq = open ('/ tmp / dados.txt', 'w')

texto =

texto.append (str (modulo2) + "," + str (modulo1))

arq.writelines (texto)

arq.close ()

# link = ('https://data.sparkfun.com/input/0lwWlyRED5i7K0AZx4JO?private_key=D6v76yZrg9CM2DX8x97B&mag='+str(modulo2))

# print ('enviando dados')

# send = urllib2.urlopen (link)

# page = send.read ()

# imprimir página)

# link = ('https://data.sparkfun.com/input/1noGndywdjuDGAGd6m5K?private_key=0mwnmR9YRgSxApAo0gDX&acel='+str(modulo1))

# print ('enviando dados')

# send = urllib2.urlopen (link)

# page = send.read ()

# imprimir página)

# print ("Temperatura:", sensor.getTemperature ())

# imprimir()

# time.sleep (.5)

if _name_ == '_main_':

a Principal()

Código do Servidor Local

tempo de importação

importar BaseHTTPServer

HOST_NAME = '172.17.56.9' # !!! LEMBRE-SE DE ALTERAR ISTO !!!

PORT_NUMBER = 80 # Talvez defina isso para 9000.

a = 0

classe MyHandler (BaseHTTPServer. BaseHTTPRequestHandler):

def do_HEAD (s):

s.send_response (200)

s.send_header ("Content-type", "text / html")

s.end_headers ()

def do_GET (s):

dados = le_dados ()

imprimir (dados)

"" "Responder a um pedido GET." ""

se s.path == "/ 1":

s.send_response (200)

s.send_header ("Content-type", "text / plain")

s.end_headers ()

s.wfile.write (dados)

elif s.path == "/ 2":

s.send_response (200)

s.send_header ("Content-type", "text / plain")

s.end_headers ()

s.wfile.write ("2")

outro:

s.send_response (200)

s.send_header ("Content-type", "text / plain")

s.end_headers ()

s.wfile.write (dados)

# s.wfile.write ("não encontrado !!")

def le_dados ():

arq = open ('/ tmp / dados.txt', 'r')

texto = arq.readline ()

arq.close ()

retornar texto

if _name_ == '_main_':

server_class = BaseHTTPServer. HTTPServer

httpd = server_class ((HOST_NAME, PORT_NUMBER), MyHandler)

print time.asctime (), "Servidor inicia -% s:% s"% (HOST_NAME, PORT_NUMBER)

Experimente:

a = a + 2

httpd.serve_forever ()

exceto KeyboardInterrupt:

passar

httpd.server_close ()

print time.asctime (), "Servidor para -% s:% s"% (HOST_NAME, PORT_NUMBER)

Código de Execução dos Códigos anteriores no Shell

#! / bin / bash

echo "começando mag_python"

sudo python mag_python.py &

echo "iniciar servidor"

sudo python server2.py

Etapa 6: Resultado Final

Resultado Final
Resultado Final

Feito isso como aulas escolhidas ser auxiliadas e incrementadas pelo projeto Smart Lesson desenvolvido com a Dragonboard 410c. Servindo de facilitador e proporcionando um maior aprendizado nos sistemas de ensino tanto público quanto privado.

LINK para aplicativo no Google Play:

Link para os códigos Py:

Recomendado: