Cuprins:

Lecție inteligentă: 6 pași
Lecție inteligentă: 6 pași

Video: Lecție inteligentă: 6 pași

Video: Lecție inteligentă: 6 pași
Video: Cum să te schimbi și să devii o persoană mai bună? 6 pași SIMPLI care îți vor schimba viața! 2024, Iulie
Anonim
Lecție inteligentă
Lecție inteligentă

O proiectă Smart Lesson visa criar um produto no qual os professores 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 și interactivă, oferind experiențe fără prezențe em uma sala de aula convențională.

Pasul 1: Materiale

Materiais
Materiais

Pentru programarea unui Dragonboard 410c:

- Dragonboard 410c;

- Cabo HDMI;

- Teclado prin USB -Mouse prin USB -Monitor;

- Mezzanine 96boards;

Pentru executarea proiectului:

- Dragonboard 410c;

- Mezzanine 96boards;

- Sensor Grove IMU 10DOF MPU - 9250 (nu este limitat la utilizarea unui senzor unic);

- Fonte de alimentație externă 11.1V;

- Jumper fêmea-fêmea;

Pasul 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, pentru că haja furneciment de saída 3.3V / 5V (level shifter), pois a placa só fornece 1.8V de saída. Senzorul utilizat a fost cu un magnetometru Sensor MPU - 9250 Grove -IMU 10DOF, specificații:

Tensão de Entrada: 5V / 3.3V;

Corrente de funcționare: 6mA;

Comunicação Serial;

Pinos: VCC, GND, SDA e SCL;

Interfață I2C;

Pentru acest exemplu a fost folosit cu doi conectori Grove I2C0 (5V), care oferă o comunicație Serial și o necesitate alimentară pentru funcționarea senzorului. (ver imagem)

Pasul 3: Integração: Unity + Vuforia

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

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

2- Vai na tab Target Manager și adică o textură pentru fazer o Tracking (cât mai complexe).

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 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 program 3D e prepare as aulas em cima do image target (poate fi uma aula de Biologia ou Física…).

Pasul 4: Unitate: configurați SDK O Android

Unitate: configurați SDK O Android
Unitate: configurați SDK O Android

1- Baixe sau SDK pentru Android, selectați preferințele Unity și selectați-vă direcția.

2- Mude a build plataform pentru Unity pentru Android, pentru a obține gerar o APK.

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

Pasul 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

Încheiat ca configurații prezentate, putem accesa sau Sistemul Linar în interiorul plăcii și utilizați limbaje lingvistice ca C ++, Java, Python, etc., pentru un software care va fi executat. Acest software este responsabil de receber os dados lidos pelo sensor, procesează și tratează aceste dados conforme solicitate pelo program. Depois carrega esses dados para o server alocado na própria placa para enviar os dados já tratados para a plataforma Unity. Os exemplos de code deste projecto estão em linguagem Phyton. A fost transferat de Dragonboard 410c pentru o Unity și a prezentat o aplicație.

Urmăriți codurile mag_python.py (monitorizare a senzorului), server2.py (Servidor local), Executare fără Shell:

Cod mag_python.py

#! / usr / bin / python

# Autor: Jon Trulson

# Copyright (c) 2015 Intel Corporation.

#

# Permisiunea se acordă, în mod gratuit, oricărei persoane care obține

# o copie a acestui software și a fișierelor de documentare asociate (# „Software”), pentru a gestiona software-ul fără restricții, inclusiv

# fără limitare drepturile de utilizare, copiere, modificare, îmbinare, publicare, # distribuie, sublicențiază și / sau vinde copii ale software-ului și către

# permite persoanelor cărora li se furnizează software-ul să facă acest lucru, sub rezerva

# următoarele condiții:

#

# Avizul de mai sus privind drepturile de autor și acest aviz de autorizare vor fi

# inclus în toate copiile sau părți substanțiale ale software-ului.

#

# SOFTWARE-UL ESTE OFERIT „CA ATARE”, FĂRĂ GARANȚIE DE NICIUN TIP, # EXPRESĂ SAU IMPLICITĂ, INCLUSIV DAR NU LIMITAT LA GARANȚIILE DE

# VANZABILITATE, ADECVĂ PENTRU UN SCOP PARTICULAR ȘI

# NEÎNCĂLCARE. În niciun caz nu vor fi autorii sau deținătorii de drepturi de autor

# RESPONSABIL PENTRU ORICE REVENDICARE, DAUNE SAU ALTE RESPONSABILITĂȚI, FIE ÎNTR-O ACȚIUNE

# CONTRACTULUI, TORT SAU ALTUI, CARE SUNT DIN, ÎN LĂSURĂ SAU ÎN CONEXIUNE

# CU SOFTWARE-UL SAU UTILIZAREA SAU ALTE DISCIPLUȚII ÎN SOFTWARE.

din _future_ import funcția print_

timp de import, sys, semnal, atexit, urllib, urllib2, math

din upm import pyupm_mpu9150 ca senzorObj

def main ():

# date = {}

# data ['magnetrometro'] = raw_input ("Informează o temperatură")

# data = urlib.urlencode (date)

# post_request = urlib2. Cerere (post_url, date, anteturi)

# încerca:

# post_response = urlib2.urlopen (post_request)

# print post_response.read ()

# cu excepția URLError ca e:

# print "Eroare:", e.reason

# Instantați un MPU9250 pe magistrala 0 I2C

senzor = sensorObj. MPU9250 ()

## Handlerele de ieșire ##

# Această funcție oprește python să imprime un stacktrace când apăsați control-C

def SIGINTHandler (signum, cadru):

ridicați SystemExit

# Această funcție vă permite să rulați codul la ieșire

def exitHandler ():

print („Ieșire”)

sys.exit (0)

# Înregistrați gestionarele de ieșire

atexit.register (exitHandler)

signal.signal (signal. SIGINT, SIGINTHandler)

sensor.init ()

x = sensorObj.new_floatp ()

y = sensorObj.new_floatp ()

z = sensorObj.new_floatp ()

în timp ce (1):

sensor.update ()

sensor.getAccelerometer (x, y, z)

# print ("Accelerometru:")

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

# print (modulo1)

#

# sensor.getGyroscope (x, y, z)

# print ("Giroscop: 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 ("Magnetometru: 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))

# print (modulo2)

arq = deschis ('/ 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 (link)

# pagină = send.read ()

# tipărire (pagină)

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

# print ('enviando dados')

# send = urllib2.urlopen (link)

# pagină = send.read ()

# tipărire (pagină)

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

# imprimare()

# time.sleep (.5)

dacă _name_ == '_main_':

principal()

Código do Servidor Local

timpul de import

import BaseHTTPServer

HOST_NAME = '172.17.56.9' # !!! AMINTIȚI SĂ SCHIMBAȚI ACESTA !!!

PORT_NUMBER = 80 # Poate setați acest lucru la 9000.

a = 0

clasa MyHandler (BaseHTTPServer. BaseHTTPRequestHandler):

def do_HEAD (s):

s.send_response (200)

s.send_header („Tip conținut”, „text / html”)

s.end_headers ()

def do_GET (s):

dados = le_dados ()

print (dados)

"" "Răspundeți la o solicitare GET." ""

dacă s.path == "/ 1":

s.send_response (200)

s.send_header („Tip conținut”, „text / simplu”)

s.end_headers ()

s.wfile.write (dados)

elif s.path == "/ 2":

s.send_response (200)

s.send_header („Tip conținut”, „text / simplu”)

s.end_headers ()

s.wfile.write („2”)

altceva:

s.send_response (200)

s.send_header („Tip conținut”, „text / simplu”)

s.end_headers ()

s.wfile.write (dados)

# s.wfile.write ("nu a fost găsit !!")

def le_dados ():

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

texto = arq.readline ()

arq.close ()

return text

dacă _name_ == '_main_':

server_class = BaseHTTPServer. HTTPServer

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

print time.asctime (), „Serverul pornește -% s:% s”% (HOST_NAME, PORT_NUMBER)

încerca:

a = a + 2

httpd.serve_forever ()

cu excepția KeyboardInterrupt:

trece

httpd.server_close ()

print time.asctime (), "Serverul se oprește -% s:% s"% (HOST_NAME, PORT_NUMBER)

Cod de Execuție dos Codes anteriores no Shell

#! / bin / bash

ecou „pornind mag_python”

sudo python mag_python.py &

ecou „start server”

sudo python server2.py

Pasul 6: Rezultatul final

Final rezultat
Final rezultat

Feito isso as aulas powerão ser auxiliadas and incrementadas hair project Smart Lesson desenvolvido com a Dragonboard 410c. Servind de facilitator și furnizând um mai mare învățat sisteme de învățământ atât public cât și privat.

LINK pentru aplicație fără Google Play:

Link pentru coduri Py:

Recomandat: