Tabla de contenido:

Lección inteligente: 6 pasos
Lección inteligente: 6 pasos

Video: Lección inteligente: 6 pasos

Video: Lección inteligente: 6 pasos
Video: Lección 6 - Crea nuevas posibilidades - Finanzas Inteligentes con Ken Honda 2024, Mes de julio
Anonim
Lección inteligente
Lección inteligente

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

Paso 1: Materiais

Materiais
Materiais

Para programar un Dragonboard 410c:

- Dragonboard 410c;

- Cabo HDMI;

- Teclado vía USB -Ratón vía USB -Monitor;

- Mezzanine 96boards;

Para ejecutar o projeto:

- Dragonboard 410c;

- Mezzanine 96boards;

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

- Fuente de alimentación externa 11.1V;

- Jersey fêmea-fêmea;

Paso 2: Dragonboard 410c Com Mezzanine 96Boards: Configuração E Pinagem

Dragonboard 410c Com Mezzanine 96Tablas: Configuração E Pinagem
Dragonboard 410c Com Mezzanine 96Tablas: Configuração E Pinagem
Dragonboard 410c Com Mezzanine 96Tablas: Configuração E Pinagem
Dragonboard 410c Com Mezzanine 96Tablas: Configuração E Pinagem
Dragonboard 410c Com Mezzanine 96Tablas: Configuração E Pinagem
Dragonboard 410c Com Mezzanine 96Tablas: Configuração E Pinagem

O Shield Mezzanine deve ser acoplado à placa Dragonboard 410c, para que haja fornecimento de saída 3.3V / 5V (level shifter), pois a placa só fornece 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 funcionamiento: 6mA;

Comunicação Serial;

Pinos: VCC, GND, SDA y SCL;

Interfaz I2C;

Para este ejemplo utilizado en dos conectores Grove I2C0 (5V), que proporciona una comunicación en serie y una alimentación necesaria para el funcionamiento del sensor. (ver imagen)

Paso 3: Integración: Unity + Vuforia

Integración: Unity + Vuforia
Integración: Unity + Vuforia

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

2- Vá na pestaña Target Manager e adicione uma textura para fazer o Tracking (quanto mais complexa melhor).

3- Feito isso baixe a database for o Unity e importe.

4- No Unity configure um image target com una textura escolhida e dentro dele adicione os modelos 3D que deseja utilizar, os mesmos estarão ativos quando a imagem for localizada pelo app.

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

6- Após isso modele os componentes da aula em algum programa 3D e prepare como aulas em cima do imagen objetivo (pode ser uma aula de Biologia ou Física…).

Paso 4: Unidad: configurar O Android SDK

Unidad: configurar O Android SDK
Unidad: configurar O Android SDK

1- Baixe o SDK para Android, en las preferencias de Unity y selecione o seu diretório.

2- Mude una plataforma de compilación de Unity para o android, así que conseguiremos gerar o APK.

3- Instale o apk em um dispositivo (no esqueça de permitir fuentes desconhecidas nas configuraciones).

Paso 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 configuraciones apresentadas, podemos acceder o Sistema Linaro dentro de la placa y utilizar várias lingüísticas como C ++, Java, Python, etc., para criar o software que será ejecutado. Este software responde al receptor de los datos del sensor de pelo, procesa y trata los datos de acuerdo con el programa solicitado. Depois carrega esses dados para el servidor alocado na própria placa para enviar os dados já tratados para una plataforma Unity. Os ejemplos de código deste projeto estão em linguagem Phyton. Os dados são transferidos da Dragonboard 410c para o Unity e são apresentados 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.

#

# Por la presente se otorga permiso, sin cargo, a cualquier persona que obtenga

# una copia de este software y los archivos de documentación asociados (el

# "Software"), para negociar con el Software sin restricciones, incluyendo

# sin limitación los derechos para usar, copiar, modificar, fusionar, publicar, # distribuir, sublicenciar y / o vender copias del Software, y

# permitir que las personas a las que se les proporcione el Software lo hagan, sujeto a

# las siguientes condiciones:

#

# El aviso de derechos de autor anterior y este aviso de permiso serán

# incluido en todas las copias o partes sustanciales del Software.

#

# EL SOFTWARE SE PROPORCIONA "TAL CUAL", SIN GARANTÍA DE NINGÚN TIPO, # EXPRESAS O IMPLÍCITAS, INCLUIDAS PERO NO LIMITADAS A LAS GARANTÍAS DE

# COMERCIABILIDAD, APTITUD PARA UN PROPÓSITO PARTICULAR Y

# NO INFRACCIÓN. EN NINGÚN CASO LOS AUTORES O TITULARES DE LOS DERECHOS DE AUTOR

# RESPONSABLE DE CUALQUIER RECLAMO, DAÑOS U OTRA RESPONSABILIDAD, YA SEA EN UNA ACCIÓN

# DE CONTRATO, AGRAVIO O DE OTRO MODO, QUE SURJA DE, FUERA DE O EN CONEXIÓN

# CON EL SOFTWARE O EL USO U OTROS NEGOCIOS DEL SOFTWARE.

de _future_ import print_function

importar tiempo, sys, señal, atexit, urllib, urllib2, matemáticas

desde upm importar pyupm_mpu9150 como sensorObj

def principal ():

# datos = {}

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

# data = urlib.urlencode (datos)

# post_request = urlib2. Request (post_url, datos, encabezados)

# tratar:

# post_response = urlib2.urlopen (post_request)

# print post_response.read ()

# excepto URLError como e:

# imprimir "Error:", e.reason

# Cree una instancia de un MPU9250 en el bus I2C 0

sensor = sensorObj. MPU9250 ()

## Controladores de salida ##

# Esta función evita que Python imprima un seguimiento de pila cuando presiona control-C

def SIGINTHandler (signum, frame):

subir SystemSalir

# Esta función le permite ejecutar código al salir

def exitHandler ():

imprimir ("Saliendo")

sys.exit (0)

# Registrar controladores de salida

atexit.register (exitHandler)

señal.señal (señal. SIGINT, SIGINTHandler)

sensor.init ()

x = sensorObj.new_floatp ()

y = sensorObj.new_floatp ()

z = sensorObj.new_floatp ()

mientras que (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

# print (modulo1)

módulo1 = ("%.1f"% abs (((módulo1 ** 0.5) -1) * 9.8))

# print (modulo1)

#

# sensor.getGyroscope (x, y, z)

# print ("Giroscopio: 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 ("MI:", 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

# print (modulo2)

módulo2 = ("%.2f"% (módulo2 ** 0.5))

# print (modulo2)

arq = abierto ('/ 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 (enlace)

# 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 (enlace)

# page = send.read ()

# Imprimir página)

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

# impresión()

#tiempo.sueño (.5)

if _name_ == '_main_':

principal()

Código del servidor local

tiempo de importación

importar BaseHTTPServer

HOST_NAME = '172.17.56.9' # !!! RECUERDA CAMBIAR ESTO !!!

PORT_NUMBER = 80 # Quizás establezca esto en 9000.

a = 0

clase MyHandler (BaseHTTPServer. BaseHTTPRequestHandler):

def do_HEAD (s):

s.send_response (200)

s.send_header ("Tipo de contenido", "texto / html")

en los encabezados finales ()

def do_GET (s):

dados = le_dados ()

imprimir (dados)

"" "Responder a una solicitud GET." ""

si s.path == "/ 1":

s.send_response (200)

s.send_header ("Tipo de contenido", "texto / sin formato")

al final de la cabecera ()

s.wfile.write (datos)

elif s.path == "/ 2":

s.send_response (200)

s.send_header ("Tipo de contenido", "texto / sin formato")

en los encabezados finales ()

s.wfile.write ("2")

demás:

s.send_response (200)

s.send_header ("Tipo de contenido", "texto / sin formato")

al final de la cabecera ()

s.wfile.write (datos)

# s.wfile.write ("no encontrado!")

def le_dados ():

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

texto = arq.readline ()

arq.close ()

devolver texto

if _name_ == '_main_':

server_class = BaseHTTPServer. HTTPServer

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

print time.asctime (), "Server Starts -% s:% s"% (HOST_NAME, PORT_NUMBER)

tratar:

a = a + 2

httpd.serve_forever ()

excepto KeyboardInterrupt:

aprobar

httpd.server_close ()

print time.asctime (), "El servidor se detiene -% s:% s"% (HOST_NAME, PORT_NUMBER)

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

#! / bin / bash

echo "iniciando mag_python"

sudo python mag_python.py y

echo "iniciar servidor"

sudo python server2.py

Paso 6: Resultado final

Resultado final
Resultado final

Feito isso as aulas poderão ser auxiliadas e incrementadas hair projeto Smart Lesson desenvolvido com a Dragonboard 410c. Servindo de facilitador e intentó um maior aprendizado nos sistemas de ensino tanto público quanto privado.

LINK para aplicación sin Google Play:

Enlace para códigos Py:

Recomendado: