Tabla de contenido:
- Paso 1: Materiais
- Paso 2: Dragonboard 410c Com Mezzanine 96Boards: Configuração E Pinagem
- Paso 3: Integración: Unity + Vuforia
- Paso 4: Unidad: configurar O Android SDK
- Paso 5: Criando Servidor Local E Recebendo Informações Em Python
- Paso 6: Resultado final
Video: Lección inteligente: 6 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:40
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
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
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
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
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
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
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:
Luz LED de escritorio inteligente - Iluminación inteligente con Arduino - Espacio de trabajo de Neopixels: 10 pasos (con imágenes)
Luz LED de escritorio inteligente | Iluminación inteligente con Arduino | Espacio de trabajo de Neopixels: Hoy en día pasamos mucho tiempo en casa, estudiando y trabajando virtualmente, así que ¿por qué no ampliar nuestro espacio de trabajo con un sistema de iluminación personalizado e inteligente basado en Arduino y LEDs Ws2812b? Aquí te muestro cómo construir tu Smart Luz LED de escritorio que
Convierta un teléfono inteligente sin usar en una pantalla inteligente: 6 pasos (con imágenes)
Convierta un teléfono inteligente sin usar en una pantalla inteligente: el tutorial de Deze está en het Engels, voor de Nederlandse versie klik hier. ¿Tiene un teléfono inteligente (antiguo) sin usar? Conviértalo en una pantalla inteligente usando Google Sheets y algo de lápiz y papel, siguiendo este sencillo tutorial paso a paso. Cuando hayas terminado
Lección 2: Uso de Arduino como fuente de alimentación para un circuito: 6 pasos
Lección 2: Uso de Arduino como fuente de energía para un circuito: Hola de nuevo, estudiantes, a mi segunda lección de mi curso para enseñar electrónica básica. Para aquellos que no han visto mi primera lección, que describe los conceptos básicos de los circuitos, véanlo ahora. Para aquellos que ya han visto mi le anterior
Taller de Java - Lección n. ° 1: 9 pasos
Taller de Java - Lección n. ° 1: Bienvenida al Taller de Java - Lección n. ° 1. Esta lección se la proporciona el código de clase () en Virginia Tech
Arduino Tank Car Lección 6 - Control de puntos calientes de Bluetooth y Wifi: 4 pasos
Arduino Tank Car Lesson 6 - Bluetooth y Wifi Hot Spot Control: En esta lección, aprendemos cómo controlar la aplicación móvil del robot car a través de WiFi y Bluetooth., Solo usamos la placa de espasion wifi esp8266 como placa de expansión y controlamos el carro tanque a través del receptor de infrarrojos en lecciones anteriores. En esta lección, aprenderemos