Sommario:
- Passaggio 1: materiale
- Fase 2: Dragonboard 410c Com Mezzanine 96 Schede: Configurazione e Pinagem
- Fase 3: Integrazione: Unity + Vuforia
- Passaggio 4: Unity: configura O Android SDK
- Passaggio 5: Criando Servidor Local E Recebendo Informações Em Python
- Passaggio 6: risultato finale
Video: Lezione intelligente: 6 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:00
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, proporcionando experiencias emão experiencias não preseumada de aula convenzionale.
Passaggio 1: materiale
Per programmare un Dragonboard 410c:
- Dragonboard 410c;
- Cavo HDMI;
- Teclado via USB -Mouse via USB -Monitor;
- Soppalco 96 quadri;
Para executar o progetto:
- Dragonboard 410c;
- Soppalco 96 quadri;
- Sensor Grove IMU 10DOF MPU - 9250 (non limitato all'uso di un sensore unico);
- Fonte di alimentazione esterna 11.1V;
- Maglione fêmea-fêmea;
Fase 2: Dragonboard 410c Com Mezzanine 96 Schede: Configurazione e Pinagem
O Shield Mezzanine deve essere accoppiato alla piastra Dragonboard 410c, per questo tipo di alimentazione da 3.3V / 5V (level shifter), e poi da una piastra con forza da 1.8V. O sensore utilizzato per il sensore magnetometro MPU – 9250 Grove -IMU 10DOF, specifiche:
Tensione di ingresso: 5V / 3,3V;
Corrente di funzionamento: 6mA;
Comunicazione seriale;
Pino: VCC, GND, SDA e SCL;
interfaccia I2C;
Per questo esempio è possibile utilizzare i connettori Grove I2C0 (5V), che proporzionano una comunicazione seriale e l'alimentazione necessaria per il funzionamento del sensore. (ver imagem)
Fase 3: Integrazione: Unity + Vuforia
1- Vá ao site da vuforia na área de desenvolvedor e crie uma chave.
2- In questa scheda Target Manager e ulteriori informazioni sulla trama per fazer o Tracking (quanto più complesso è).
3- Feito isso baixe a database para o Unity e importe.
4- No Unity configura il target dell'immagine con una texture escolhida e all'interno dell'aggiunta di modelli 3D che deseja utilizar, os mesmos estarão ativos quando un'immagine per localizzare tutta l'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 aulas em cima do image target (pode ser uma aula de Biologia ou Física…).
Passaggio 4: Unity: configura O Android SDK
1- Baixe o SDK per Android, vá em Unity Preferences e selezione o seu direttorio.
2- Mute una piattaforma per fare unity per Android, come simmos build o APK.
3- Installa l'apk su un dispositivo (non è necessario consentire la configurazione delle fonti di interruzione).
Passaggio 5: Criando Servidor Local E Recebendo Informações Em Python
Concluídas come configurações apresentadas, podemos acessar o Sistema Linaro dentro da placa e utilizar varie lingue come C++, Java, Python, ecc., per creare o software que será executado. Il software è responsável per ricevere i dati relativi ai lidi del sensore, elaborare e gestire i dati conformi alla sollecitazione per il programma. Depois carrega esses dados para o servidor alocado na própria placa per enviar os dados já tratados para a plataforma Unity. Gli esempi di codice di questo progetto sono stati valutati in lingua Phyton. Tutti i dati vengono trasferiti da Dragonboard 410c per Unity e vengono presentati in un'app.
Seguem os códigos mag_python.py (leitor de dados do sensor), server2.py (Servidor local), Executável no Shell:
Codice mag_python.py
#!/usr/bin/python
# Autore: Jon Trulson
# Copyright (c) 2015 Intel Corporation.
#
# Con la presente viene concessa l'autorizzazione, a titolo gratuito, a chiunque ottenga
# una copia di questo software e dei file di documentazione associati (il
# "Software"), per gestire il Software senza restrizioni, incluso
# senza limitazione i diritti di utilizzare, copiare, modificare, unire, pubblicare, # distribuire, concedere in sublicenza e/o vendere copie del Software e a
# consentire alle persone a cui viene fornito il Software di farlo, soggetto a
# le seguenti condizioni:
#
# L'avviso di copyright di cui sopra e questo avviso di autorizzazione devono essere
# incluso in tutte le copie o parti sostanziali del Software.
#
# IL SOFTWARE VIENE FORNITO "COS COM'È", SENZA GARANZIE DI ALCUN TIPO, # ESPRESSO O IMPLICITO, COMPRESE MA NON LIMITATE ALLE GARANZIE DI
# COMMERCIABILITÀ, IDONEITÀ PER UNO SCOPO PARTICOLARE E
# NON VIOLAZIONE. IN NESSUN CASO GLI AUTORI O I TITOLARI DEL COPYRIGHT SARANNO
# RESPONSABILE PER QUALSIASI RECLAMO, DANNI O ALTRE RESPONSABILITÀ, SIA IN UN'AZIONE
N. DI CONTRATTO, ILLECITO O ALTRO, DERIVANTE DA, DA O IN CONNESSIONE
# CON IL SOFTWARE O L'UTILIZZO O ALTRI TRATTAMENTI NEL SOFTWARE.
da _future_ import print_function
import time, sys, signal, atexit, urllib, urllib2, math
da upm import pyupm_mpu9150 as sensorObj
def principale():
# dati = {}
# data['magnetrometro'] = raw_input(" Informa a temperatura")
# data = urlib.urlencode(data)
# post_request = urlib2. Request(post_url, dati, intestazioni)
# Tentativo:
# post_response = urlib2.urlopen(post_request)
# print post_response.read()
# tranne URLError come e:
# print "Errore: ", e.motivo
# Istanzia un MPU9250 sul bus I2C 0
sensore = sensoreObj. MPU9250()
## Gestori di uscita ##
# Questa funzione impedisce a Python di stampare uno stacktrace quando si preme control-C
def SIGINTHandler(signum, frame):
alza SystemExit
# Questa funzione ti consente di eseguire il codice all'uscita
def exitHandler():
print("Uscita")
sys.exit(0)
# Registra i gestori di uscita
atexit.register(exitHandler)
signal.signal(signal. SIGINT, SIGINTHandler)
sensore.init()
x = sensorObj.new_floatp()
y = sensorObj.new_floatp()
z = sensorObj.new_floatp()
mentre (1):
sensore.aggiornamento()
sensor.getAccelerometro(x, y, z)
# print ("Accelerometro: ")
# 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" % ass(((modulo1**0.5)-1)*9.8))
# stampa (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.getMagnetometro(x, y, z)
# print("Magnetometro: MX: ", sensorObj.floatp_value(x), end=' ')
# print(" MIO: ", 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))
# stampa (modulo2)
arq = open('/tmp/dados.txt', 'w')
testo =
texto.append(str(modulo2)+", "+str(modulo1))
arq.writelines(testo)
arq.chiudi()
# link = ('https://data.sparkfun.com/input/0lwWlyRED5i7K0AZx4JO?private_key=D6v76yZrg9CM2DX8x97B&mag='+str(modulo2))
# print ('inviando dati')
# invia = urllib2.urlopen(link)
# pagina = send.read()
# stampa (pagina)
# link = ('https://data.sparkfun.com/input/1noGndywdjuDGAGd6m5K?private_key=0mwnmR9YRgSxApAo0gDX&acel='+str(modulo1))
# print ('inviando dati')
# invia = urllib2.urlopen(link)
# pagina = send.read()
# stampa (pagina)
# print("Temperatura: ", sensor.getTemperature())
# Stampa()
# tempo.sonno(.5)
if _name_ == '_main_':
principale()
Codice del Servidor Local
tempo di importazione
import BaseHTTPServer
HOST_NAME = '172.17.56.9' # !!!RICORDA DI CAMBIARE QUESTO!!!
NUMERO_PORTA = 80 # Forse impostalo su 9000.
a=0
class MyHandler(BaseHTTPServer. BaseHTTPRequestHandler):
def do_HEAD(s):
s.send_response(200)
s.send_header("Tipo di contenuto", "testo/html")
s.end_headers()
def do_GET(s):
dados = le_dados()
stampa (dado)
"""Rispondi a una richiesta GET."""
if s.path=="/1":
s.send_response(200)
s.send_header("Tipo di contenuto", "testo/normale")
s.end_headers()
s.wfile.write(dati)
elif s.path=="/2":
s.send_response(200)
s.send_header("Tipo di contenuto", "testo/normale")
s.end_headers()
s.wfile.write("2")
altro:
s.send_response(200)
s.send_header("Tipo di contenuto", "testo/normale")
s.end_headers()
s.wfile.write(dati)
#s.wfile.write("non trovato!!")
def le_dados():
arq = open('/tmp/dados.txt', 'r')
texto = arq.readline()
arq.chiudi()
testo di ritorno
if _name_ == '_main_':
server_class = BaseHTTPServer. HTTPServer
httpd = server_class((HOST_NAME, PORT_NUMBER), MyHandler)
print time.asctime(), "Server avvia - %s:%s" % (HOST_NAME, PORT_NUMBER)
Tentativo:
a=a+2
httpd.serve_forever()
tranne KeyboardInterrupt:
passaggio
httpd.server_close()
print time.asctime(), "Il server si arresta - %s:%s" % (HOST_NAME, PORT_NUMBER)
Codice di esecuzione dei codici anteriori senza Shell
#!/bin/bash
echo "inizio mag_python"
sudo python mag_python.py &
echo "avvia server"
sudo python server2.py
Passaggio 6: risultato finale
Feito isso as aulas poderão ser auxiliadas e incrementadas pelo projeto Smart Lesson desenvolvido com a Dragonboard 410c. Servindo de facilitador e proporcionando um maior aprendizado nos sistemas de ensino tanto público quanto privado.
LINK per app no Google Play:
Link per codici Py:
Consigliato:
Luce LED da scrivania intelligente - Illuminazione intelligente con Arduino - Area di lavoro Neopixel: 10 passaggi (con immagini)
Luce LED da scrivania intelligente | Illuminazione intelligente con Arduino | Neopixels Workspace: Al giorno d'oggi trascorriamo molto tempo a casa, studiando e lavorando virtualmente, quindi perché non rendere il nostro spazio di lavoro più grande con un sistema di illuminazione personalizzato e intelligente basato su Arduino e LED Ws2812b. Qui ti mostro come costruire il tuo Smart Luce LED da scrivania che
Sveglia intelligente: una sveglia intelligente realizzata con Raspberry Pi: 10 passaggi (con immagini)
Sveglia intelligente: una sveglia intelligente realizzata con Raspberry Pi: hai mai desiderato un orologio intelligente? Se è così, questa è la soluzione per te! Ho realizzato Smart Alarm Clock, questo è un orologio con cui puoi modificare l'ora della sveglia in base al sito web. Quando la sveglia suona, ci sarà un suono (cicalino) e 2 luci si accenderanno
Lezione 2: Utilizzo di Arduino come fonte di alimentazione per un circuito: 6 passaggi
Lezione 2: Utilizzo di Arduino come fonte di alimentazione per un circuito: Ciao di nuovo, studenti, alla mia seconda lezione del mio corso per insegnare l'elettronica di base. Per coloro che non hanno visto la mia prima lezione, che descrive le basi molto, molto, dei circuiti, per favore guardala ora. Per chi ha già visto il mio precedente le
Workshop Java - Lezione n. 1: 9 passaggi
Workshop Java - Lezione #1: Benvenuti al Workshop Java - Lezione #1. Questa lezione ti viene fornita dalla classe Code() presso Virginia Tech
Arduino Tank Car Lezione 6 - Controllo hot spot Bluetooth e Wifi: 4 passaggi
Arduino Tank Car Lezione 6 - Controllo hot spot Bluetooth e Wifi: in questa lezione impariamo come controllare l'APP mobile dell'auto robot tramite WiFi e Bluetooth., usiamo semplicemente la scheda espasion wifi esp8266 come scheda di espansione e controlliamo il carro cisterna tramite ricevitore IR nelle lezioni precedenti. In questa lezione impareremo