Table des matières:

Leçon intelligente : 6 étapes
Leçon intelligente : 6 étapes

Vidéo: Leçon intelligente : 6 étapes

Vidéo: Leçon intelligente : 6 étapes
Vidéo: Intelligence émotionnelle : 6 étapes pour gérer ses émotions de Daniel Goleman 2024, Juillet
Anonim
Leçon intelligente
Leçon intelligente

O projeto Smart Leson 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 interadaativa, proporcionando n exporcionando de aula conventionelle.

Étape 1: Matériel

Matériel
Matériel

Pour programmer un Dragonboard 410c:

- Dragonboard 410c;

-Cabo HDMI;

- Teclado via USB -Souris via USB -Moniteur;

- Mezzanine 96planches;

Para executar o projeto:

- Dragonboard 410c;

- Mezzanine 96planches;

- Capteur Grove IMU 10DOF MPU - 9250 (n'est pas limité à l'utilisation d'un capteur unique);

- Fonte de alimentação externa 11.1V;

- Pull fêmea-fêmea;

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

Dragonboard 410c Com Mezzanine 96Planches: Configuração E Pinagem
Dragonboard 410c Com Mezzanine 96Planches: Configuração E Pinagem
Dragonboard 410c Com Mezzanine 96Planches: Configuração E Pinagem
Dragonboard 410c Com Mezzanine 96Planches: Configuração E Pinagem
Dragonboard 410c Com Mezzanine 96Planches: Configuração E Pinagem
Dragonboard 410c Com Mezzanine 96Planches: 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 so fornece 1.8V de saída. O sensor utilizado foi um magnetômetro Sensor MPU – 9250 Grove -IMU 10DOF, especificações:

Tension d'entrée: 5 V/3,3 V;

Courant de fonctionnement: 6 mA;

Communication en série;

Pins: VCC, GND, SDA et SCL;

Interface I2C;

Pour cet exemple d'utilisation des connecteurs Grove I2C0 (5V), qui offre une communication en série et une alimentation nécessaire pour le fonctionnement du capteur. (voir image)

Étape 3: Intégration: Unity + Vuforia

Intégration: Unity + Vuforia
Intégration: Unity + Vuforia

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

2- Vá na tab Target Manager et adicione uma textura para fazer o Tracking (quanto mais complexa melhor).

3- Feito isso baixe une base de données pour Unity e importer.

4- No Unity configure la cible de l'image avec une texture qui s'adapte à l'adicione des modèles 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 as aulas em cima do image target (pode ser uma aula de Biologia ou Física…).

Étape 4: Unity: Configurer O Android SDK

Unity: Configurer O Android SDK
Unity: Configurer O Android SDK

1- Baixe o SDK do Android, vá em Unity préférences e selecione o seu diretório.

2- Mude une plate-forme de construction pour Unity pour Android, assim conseguiremos gerar o APK.

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

Étape 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 e utilizar várias linguagens como C++, Java, Python, etc., para criar o software que será executado. Este logiciel é responsável por receber os dados lidos pelo sensor, processar e tratar estes dados conformado sollicitado pelo programa. Depois carrega esses dados para o servidor alocado na própria placa para enviar os dados já tratados para a plateforma Unity. Os exemplos de code deste projeto estão em linguagem Phyton. Ces données sont transférées de Dragonboard 410c pour Unity et sont présentées dans une application.

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

Code mag_python.py

#!/usr/bin/python

# Auteur: Jon Trulson

# Copyright (c) 2015 Intel Corporation.

#

# L'autorisation est accordée, à titre gratuit, à toute personne obtenant

# une copie de ce logiciel et des fichiers de documentation associés (le

# "Logiciel"), pour traiter le Logiciel sans restriction, y compris

# sans limitation les droits d'utilisation, de copie, de modification, de fusion, de publication, # distribuer, concéder en sous-licence et/ou vendre des copies du Logiciel, et

# autoriser les personnes à qui le Logiciel est fourni à le faire, sous réserve de

# les conditions suivantes:

#

# L'avis de droit d'auteur ci-dessus et cet avis d'autorisation doivent être

# inclus dans toutes les copies ou parties substantielles du Logiciel.

#

# LE LOGICIEL EST FOURNI « EN L'ÉTAT », SANS GARANTIE D'AUCUNE SORTE, # EXPRESS OU IMPLICITE, Y COMPRIS MAIS NON LIMITÉ AUX GARANTIES DE

# COMMERCIALISATION, ADÉQUATION À UN USAGE PARTICULIER ET

# NON CONTREFAÇON. EN AUCUN CAS LES AUTEURS OU LES TITULAIRES DES DROITS D'AUTEUR NE SONT

# RESPONSABLE DE TOUTE RÉCLAMATION, DOMMAGES OU AUTRE RESPONSABILITÉ, QUE CE SOIT DANS UNE ACTION

# DE CONTRAT, DÉLICTUEL OU AUTRE, DÉCOULANT DE, DE OU EN CONNEXION

# AVEC LE LOGICIEL OU L'UTILISATION OU D'AUTRES OPÉRATIONS DANS LE LOGICIEL.

de _future_ import print_function

temps d'importation, sys, signal, atexit, urllib, urllib2, math

depuis upm importer pyupm_mpu9150 en tant que sensorObj

def principal():

# données = {}

# data['magnetrometro'] = raw_input(" Informer une température")

# données = urlib.urlencode(données)

# post_request = urlib2. Request(post_url, données, en-têtes)

# essayer:

# post_response = urlib2.urlopen(post_request)

# print post_response.read()

# sauf URLError comme e:

# print "Erreur: ", e.raison

# Instancier un MPU9250 sur le bus I2C 0

capteur = sensorObj. MPU9250()

## Gestionnaires de sortie ##

# Cette fonction empêche python d'imprimer une trace de pile lorsque vous appuyez sur Ctrl-C

def SIGINTHandler(signum, frame):

augmenter SystemExit

# Cette fonction vous permet d'exécuter du code en quittant

def exitHandler():

print("Sortie")

sys.exit(0)

# Enregistrer les gestionnaires de sortie

atexit.register(exitHandler)

signal.signal(signal. SIGINT, SIGINTHandler)

sensor.init()

x = sensorObj.new_floatp()

y = sensorObj.new_floatp()

z = sensorObj.new_floatp()

tandis que (1):

sensor.update()

sensor.getAccelerometer(x, y, z)

# print ("Accéléromètre: ")

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

# impression (modulo1)

#

# 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("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

# imprimer(modulo2)

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

# impression (modulo2)

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

texte =

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

arq.writelines(texto)

arq.close()

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

# imprimer ('enviando dados')

# envoyer = urllib2.urlopen(lien)

# page = envoyer.lire()

# imprimer la page)

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

# imprimer ('enviando dados')

# envoyer = urllib2.urlopen(lien)

# page = envoyer.lire()

# imprimer la page)

# print("Température: ", sensor.getTemperature())

# imprimer()

# temps.sommeil(.5)

if _name_ == '_main_':

principale()

Código do Servidor Local

heure d'importation

importer BaseHTTPServer

HOST_NAME = '172.17.56.9' # !!!N'OUBLIEZ PAS DE CHANGER CELA !!!

PORT_NUMBER = 80 # Peut-être définissez-le sur 9000.

a=0

classe MyHandler(BaseHTTPServer. BaseHTTPRequestHandler):

def do_HEAD(s):

s.send_response(200)

s.send_header("Type de contenu", "texte/html")

s.end_headers()

def do_GET(s):

dados = le_dados()

imprimer (dados)

"""Répondre à une requête GET."""

si 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")

autre:

s.send_response(200)

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

s.end_headers()

s.wfile.write(dados)

#s.wfile.write("introuvable !!")

def le_dados():

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

texto = arq.readline()

arq.close()

texte de retour

if _name_ == '_main_':

classe_serveur = BaseHTTPServer. HTTPServer

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

print time.asctime(), "Le serveur démarre - %s:%s" % (HOST_NAME, PORT_NUMBER)

essayer:

a=a+2

httpd.serve_forever()

sauf KeyboardInterrupt:

passe

httpd.server_close()

print time.asctime(), "Le serveur s'arrête - %s:%s" % (HOST_NAME, PORT_NUMBER)

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

#!/bin/bash

echo "démarrage de mag_python"

sudo python mag_python.py &

echo "démarrer le serveur"

sudo python server2.py

Étape 6: Résultat final

Résultat Finale
Résultat Finale

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

LIEN pour l'application sans Google Play:

Lien pour les codes Py:

Conseillé: