Taula de continguts:

Lliçó intel·ligent: 6 passos
Lliçó intel·ligent: 6 passos

Vídeo: Lliçó intel·ligent: 6 passos

Vídeo: Lliçó intel·ligent: 6 passos
Vídeo: Элиф | Эпизод 182 | смотреть с русский субтитрами 2024, Desembre
Anonim
Lliçó intel·ligent
Lliçó intel·ligent

O projecto Smart Lesson visa criar um product no qual os professors possam use as 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, proporcionant experiencias no presenciadas em uma sala de aula convencional.

Pas 1: materials

Materiais
Materiais

Per programar un Dragonboard 410c:

- Dragonboard 410c;

- Cabo HDMI;

- Teclado via USB-Mouse mitjançant USB -Monitor;

- Mezzanine 96boards;

Per executar o projectar:

- Dragonboard 410c;

- Mezzanine 96boards;

- Sensor Grove IMU 10DOF MPU - 9250 (no limitat a l’ús d’un únic sensor);

- Fonte d'alimentació externa 11.1V;

- Jumper fêmea-fêmea;

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

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

O Shield Mezzanine deve ser acoplado à placa Dragonboard 410c, para que haja fornecimiento de saída 3.3V / 5V (level shifter), pois a placa só fornece 1.8V de saída. El sensor utilitzat amb un magnetòmetre Sensor MPU - 9250 Grove -IMU 10DOF, especificações:

Tensió d'Entrada: 5V / 3.3V;

Corrent de funcionament: 6mA;

Comunicação Serial;

Pinos: VCC, GND, SDA e SCL;

Interfície I2C;

Per aquest exemple, s'ha utilitzat dos connectors Grove I2C0 (5V), que proporcionen una comunicació sèrie i un aliment necessari per al funcionament del sensor. (ver imagem)

Pas 3: integració: Unity + Vuforia

Integração: Unity + Vuforia
Integração: Unity + Vuforia

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

2- Vés a la pestanya Target Manager i adjudica una textura per fer-ne el seguiment (quant més complex).

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

4- No Unity configure um image target com a textura escolhida and inside dele adicione os models 3D that deseja use, os mesmos estarão ativos when a imagem for localised pelo app.

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

6- Após isso modele os components from aula em algum programa 3D e prepare as aules em cima do image target (can be uma aula de Biologia ou Física…).

Pas 4: Unitat: configureu l'SDK d'Android

Unitat: configureu l'SDK d'Android
Unitat: configureu l'SDK d'Android

1- Baixe o SDK d'Android, amb Unity preferences i seleccioneu el vostre directori.

2- Mude a build plataform de Unity per a Android, per aconseguir aconseguir gerar o APK.

3- Instale o apk em um device (no esqueça de permitir fonts desconhecidas nas configurações).

Step 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

Conclusions com a configuracions presentades, podem accedir al Sistema Linar dins de la placa i utilitzar varis linguagens com C ++, Java, Python, etc., per al programa o programa que serà executat. Aquest programari és responsable de receber els dados lidos pelo sensor, processar i tractar aquests dados conforme sol·licitats el programa del pèl. Depois carrega esses dados para o servidor alocado na própria placa para enviar os dados já tractados para a plataforma Unity. Els exemples de codi d’aquest projecte s’estenen en linguagem Phyton. Els vostres transferències de Dragonboard 410c per a Unity i presentades per la vostra aplicació.

Seguiment dels codis mag_python.py (controlador de detalls del sensor), server2.py (Servidor local), Execució sense Shell:

Codi mag_python.py

#! / usr / bin / python

# Autor: Jon Trulson

# Copyright (c) 2015 Intel Corporation.

#

# Es concedeix el permís gratuïtament a qualsevol persona que obtingui

# una còpia d'aquest programari i dels fitxers de documentació associats (el fitxer

# "Programari"), per tractar el programari sense restriccions, inclosa

# sense limitació els drets d’ús, còpia, modificació, combinació, publicació, # distribuir, subllicenciar i / o vendre còpies del programari i a

# Permetre a les persones a les quals es facilita el programari, amb subjecció a

# les condicions següents:

#

# L'avís de copyright anterior i aquest avís de permís seran

# inclòs en totes les còpies o parts importants del programari.

#

# EL PROGRAMARI ES PROPORCIONA "TAL COM ÉS" SENSE GARANTIA DE CAP MENA, # EXPRÉS O IMPLÍCIT, INCLUDS PERUT NO LIMITAT A LES GARANTIES DE

COMERCIALITZACIÓ, IDONEITAT PER A UN PROPOSESIT PARTICULAR I

# NO INFRACCIÓ. En cap cas, els autors o titulars dels drets d'autor no podran ser-ho

# RESPONSABLE DE QUALSEVOL RECLAMACIÓ, DANYS O ALTRES RESPONSABILITATS, TANT EN UNA ACCIÓ

# DE CONTRACTE, TORT O D'UN ALTRA MANERA, SORGENT DE, FORA O EN CONNEXIÓ

# AMB EL PROGRAMARI O L'ÚS O ALTRES TRACTES DEL PROGRAMARI.

des de _future_ importa print_function

temps d’importació, sys, signal, atexit, urllib, urllib2, math

des de la importació upm pyupm_mpu9150 com a sensorObj

def main ():

# dades = {}

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

# data = urlib.urlencode (dades)

# post_request = urlib2. Request (post_url, dades, capçaleres)

# proveu:

# post_response = urlib2.urlopen (post_request)

# print post_response.read ()

# excepte URLError com a e:

# print "Error:", e.reason

# Instantiu un MPU9250 al bus 0 d'I2C

sensor = sensorObj. MPU9250 ()

## Gestors de sortides ##

# Aquesta funció impedeix que Python imprimeixi una traça de pila quan premeu control-C

def SIGINTHandler (signum, frame):

augmenta SystemExit

# Aquesta funció us permet executar codi a la sortida

def exitHandler ():

imprimir ("Surt")

sys.exit (0)

# Registre de controladors de sortida

atexit.register (exitHandler)

signal.signal (signal. SIGINT, SIGINTHandler)

sensor.init ()

x = sensorObj.new_floatp ()

y = sensorObj.new_floatp ()

z = sensorObj.new_floatp ()

mentre (1):

sensor.update ()

sensor.getAccelerometer (x, y, z)

# print ("Acceleròmetre")

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

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

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

mòdul1 = (sensorObj.floatp_value (x) -0.005) ** 2+ (sensorObj.floatp_value (y) -0.0150) ** 2+ (sensorObj.floatp_value (z) -0.0450) ** 2

# print (mòdul1)

mòdul1 = ("%.1f"% abs (((mòdul1 ** 0.5) -1) * 9.8))

# print (mòdul1)

#

# sensor.getGyroscope (x, y, z)

# print ("Giroscopi: 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òmetre: MX:", sensorObj.floatp_value (x), end = '')

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

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

mòdul2 = sensorObj.floatp_value (x) ** 2 + sensorObj.floatp_value (y) ** 2 + sensorObj.floatp_value (z) ** 2

# print (mòdul2)

mòdul2 = ("%.2f"% (mòdul2 ** 0.5))

# print (mòdul2)

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

texto =

texto.append (str (mòdul2) + "," + str (mòdul1))

arq.writelines (texto)

arq.close ()

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

# print ('enviant dados')

# send = urllib2.urlopen (enllaç)

# pàgina = send.read ()

# imprimir (pàgina)

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

# print ('enviant dados')

# send = urllib2.urlopen (enllaç)

# pàgina = send.read ()

# imprimir (pàgina)

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

# imprimir()

# time.sleep (.5)

si _name_ == '_principal_':

main ()

Código do Servidor Local

temps d'importació

importar BaseHTTPServer

HOST_NAME = '172.17.56.9' #! RECORDEU-HO DE CANVIAR !!!

PORT_NUMBER = 80 # Potser establiu-lo en 9000.

a = 0

classe MyHandler (BaseHTTPServer. BaseHTTPRequestHandler):

def do_HEAD (s):

s.send_response (200)

s.send_header ("Tipus de contingut", "text / html")

s.end_headers ()

def do_GET (s):

dados = le_dados ()

imprimir (dados)

"" "Respon a una sol·licitud GET." ""

si s.path == "/ 1":

s.send_response (200)

s.send_header ("Tipus de contingut", "text / normal")

s.end_headers ()

s.wfile.write (dados)

elif s.path == "/ 2":

s.send_response (200)

s.send_header ("Tipus de contingut", "text / normal")

s.end_headers ()

s.wfile.write ("2")

en cas contrari:

s.send_response (200)

s.send_header ("Tipus de contingut", "text / normal")

s.end_headers ()

s.wfile.write (dados)

# s.wfile.write ("no s'ha trobat !!")

def le_dados ():

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

texto = arq.readline ()

arq.close ()

tornar text

si _nom_ == '_principal_':

server_class = BaseHTTPServer. HTTPServer

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

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

provar:

a = a + 2

httpd.serve_forever ()

excepte KeyboardInterrupt:

passar

httpd.server_close ()

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

Codi d'execució dos codis anteriors no Shell

#! / bin / bash

eco "iniciant mag_python"

sudo python mag_python.py &

eco "iniciar servidor"

sudo python server2.py

Pas 6: Resultat final

Final resultat
Final resultat

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

ENLLAÇ per a l'aplicació sense Google Play:

Enllaç per a codis Py:

Recomanat: