Intelligente Lektion: 6 Schritte
Intelligente Lektion: 6 Schritte
Anonim
Intelligente Lektion
Intelligente Lektion

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 dinativaendas de aula konventionell.

Schritt 1: Material

Material
Material

Para-Programmierer für Dragonboard 410c:

- Drachenbrett 410c;

- Cabo-HDMI;

- Teclado über USB -Maus über USB -Monitor;

- Mezzanine-96-Boards;

Para executar o projeto:

- Drachenbrett 410c;

- Mezzanine-96-Boards;

- Sensor Grove IMU 10DOF MPU - 9250 (keine Begrenzung oder kein einziger Sensor);

- Fonte de alimentação externa 11.1V;

- Jumper fêmea-fêmea;

Schritt 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 ist ein Platz für Dragonboard 410c, der für 3.3V / 5V (Level Shifter) verwendet wird, für einen Platz mit 1.8V de Saída. O sensor utilizado foi um magnetômetro Sensor MPU – 9250 Grove -IMU 10DOF, Besonderheiten:

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

Funktionsspannung: 6mA;

Kommunikationsserien;

Pinos: VCC, GND, SDA und SCL;

I2C-Schnittstelle;

Ein Beispiel für die Verwendung von Grove I2C0 (5V), die eine serielle Kommunikation und eine notwendige Ernährung für die Sensorfunktion erfordern. (ver bild)

Schritt 3: Integration: Einheit + Vuforia

Integration: Einheit + Vuforia
Integration: Einheit + Vuforia

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

2- Vá na tab Target Manager und Erweiterung um eine Textur für Fazer oder Tracking (quanto mais complexa melhor).

3- Feito isso baixe a database para o Unity und importe.

4- No Unity konfigurieren Sie ein Image-Ziel mit einer Textur, die escolhida und dentro-dele-adicione-os-models-que-deseja-utilizar, os mesmos esstarã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 vorbereiten als aulas em cima do image target (pode ser uma aula de Biologia ou Física…).

Schritt 4: Unity: Konfigurieren Sie das O Android SDK

Unity: Konfigurieren Sie das O Android SDK
Unity: Konfigurieren Sie das O Android SDK

1- Baixe oder SDK für Android, vá em Unity-Präferenzen und Auswahl oder seu diretório.

2- Mude eine Build-Plattform für Unity für Android, Assim Conseguiremos Gerar oder APK.

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

Schritt 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 as configurações apresentadas, podemos acessar o Sistema Linaro dentro da placa und utilizar várias linguagens como C++, Java, Python, etc., para criar o software que será Executado. Este Software é Responsável for Receber of Dados Lidos Pelo Sensor, Processar und Tratar Estes Dados Conforme Solicitado Pelo Programa. Depois carrega isses dados para o servidor alocado na própria placa para enviar os dados ja tratados para a plataforma Unity. Os exemplos de código deste projeto estão em linguagem Phyton. Es ist ein Transfer von Dragonboard 410c für Unity und eine Präsentation in einer 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

# Urheberrecht (c) 2015 Intel Corporation.

#

# Die Erlaubnis wird hiermit jeder Person, die es erhält, kostenlos erteilt

# eine Kopie dieser Software und der zugehörigen Dokumentationsdateien (die

# "Software"), um mit der Software ohne Einschränkung zu handeln, einschließlich

# ohne Einschränkung die Rechte zur Nutzung, Vervielfältigung, Änderung, Zusammenführung, Veröffentlichung, # Kopien der Software verteilen, unterlizenzieren und/oder verkaufen und an

# Personen, denen die Software zur Verfügung gestellt wird, dies zu gestatten, vorbehaltlich

# die folgenden Bedingungen:

#

# Der obige Urheberrechtshinweis und dieser Erlaubnishinweis sind

# in allen Kopien oder wesentlichen Teilen der Software enthalten.

#

# DIE SOFTWARE WIRD "WIE BESEHEN", OHNE JEGLICHE GEWÄHRLEISTUNG BEREITGESTELLT, # AUSDRÜCKLICH ODER STILLSCHWEIGEND, EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF DIE GARANTIEN VON

# MARKTFÄHIGKEIT, EIGNUNG FÜR EINEN BESTIMMTEN ZWECK UND

# NICHTVERLETZUNG. IN KEINEM FALL SIND DIE AUTOREN ODER URHEBERRECHTSINHABER

# HAFTUNG FÜR JEGLICHE ANSPRÜCHE, SCHÄDEN ODER ANDERE HAFTUNG, OB IN EINER KLAGE

NUMMER DES VERTRAGS, ENTSCHÄDIGUNG ODER ANDERWEITIG, DIE AUS, AUS ODER IN VERBINDUNG STEHEN

# MIT DER SOFTWARE ODER DER NUTZUNG ODER ANDEREN HANDELN MIT DER SOFTWARE.

aus _Zukunft_ Druckfunktion importieren

Importzeit, sys, signal, atexit, urllib, urllib2, mathe

von upm importieren pyupm_mpu9150 als sensorObj

def main():

# Daten = {}

# data['magnetrometro'] = raw_input(" Informieren Sie sich über eine Temperatur")

# Daten = urlib.urlencode(Daten)

# post_request = urlib2. Request(post_url, Daten, Header)

# Versuchen:

# post_response = urlib2.urlopen(post_request)

# post_response.read() drucken

# außer URLError als e:

# print "Fehler: ", e.reason

# Instanziieren eines MPU9250 auf dem I2C-Bus 0

sensor = sensorObj. MPU9250()

## Exit-Handler ##

# Diese Funktion verhindert, dass Python einen Stacktrace druckt, wenn Sie Strg-C. drücken

def SIGINTHandler(signum, frame):

SystemExit erhöhen

# Mit dieser Funktion können Sie Code beim Beenden ausführen

def exitHandler():

print("Beenden")

sys.exit(0)

# Exit-Handler registrieren

atexit.register(exitHandler)

signal.signal(signal. SIGINT, SIGINTHandler)

sensor.init()

x = sensorObj.new_floatp()

y = sensorObj.new_floatp()

z = sensorObj.new_floatp()

während (1):

sensor.update()

sensor.getAccelerometer(x, y, z)

# print ("Beschleunigungsmesser: ")

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

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

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

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

# print(modulo1)

modulo1 = ("%.1f" % abs((((modulo1**0.5)-1)*9.8))

# drucken (modulo1)

#

# sensor.getGyroscope(x, y, z)

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

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

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

modulo2 = sensorObj.floatp_value(x)**2+sensorObj.floatp_value(y)**2+sensorObj.floatp_value(z)**2

# print(modulo2)

modulo2 = ("%.2f" % (modulo2**0.5))

# drucken (modulo2)

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')

# senden = urllib2.urlopen(Link)

# Seite = send.read()

# Seite drucken)

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

# print ('enviando dados')

# senden = urllib2.urlopen(Link)

# Seite = send.read()

# Seite drucken)

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

# drucken()

# Zeit. Schlaf(.5)

if _name_ == '_main_':

hauptsächlich()

Código do Servidor Local

Importzeit

BaseHTTPServer importieren

HOST_NAME = '172.17.56.9' # !!!Denken Sie daran, dies zu ändern!!!

PORT_NUMBER = 80 # Vielleicht auf 9000 setzen.

a=0

Klasse MyHandler (BaseHTTPServer. BaseHTTPRequestHandler):

def do_HEAD(s):

s.send_response(200)

s.send_header("Inhaltstyp", "text/html")

s.end_headers()

def do_GET(s):

dados = le_dados()

drucken (dados)

"""Auf eine GET-Anfrage antworten."""

if s. Pfad=="/1":

s.send_response(200)

s.send_header("Inhaltstyp", "text/plain")

s.end_headers()

s.wfile.write(dados)

elif s.path=="/2":

s.send_response(200)

s.send_header("Inhaltstyp", "text/plain")

s.end_headers()

s.wfile.write("2")

anders:

s.send_response(200)

s.send_header("Inhaltstyp", "text/plain")

s.end_headers()

s.wfile.write(dados)

#s.wfile.write("nicht gefunden!!")

def le_dados():

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

texto = arq.readline()

arq.close()

Text zurückgeben

if _name_ == '_main_':

server_class = BaseHTTPServer. HTTPServer

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

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

Versuchen:

a=a+2

httpd.serve_forever()

außer KeyboardInterrupt:

passieren

httpd.server_close()

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

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

#!/bin/bash

echo "starte mag_python"

sudo python mag_python.py &

echo "Server starten"

sudo python server2.py

Schritt 6: Resultado Finale

Ergebnisado Finale
Ergebnisado Finale

Sie können mit einem Dragonboard 410c arbeiten. Servindo de facilitador e proporcionando um maior aprendizado nos sistemas de ensino tanto público quanto privado.

LINK für App kein Google Play:

Link für códigos Py:

Empfohlen: