Innehållsförteckning:

Smart lektion: 6 steg
Smart lektion: 6 steg

Video: Smart lektion: 6 steg

Video: Smart lektion: 6 steg
Video: Hur du känner mer glädje och entusiasm - 6 steg 2024, November
Anonim
Smart lektion
Smart 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 dinâmica e interativa, proporcionando erfarenheter não presencias de aula convencional.

Steg 1: Materiais

Materiais
Materiais

För programmerare av Dragonboard 410c:

- Dragonboard 410c;

- Cabo HDMI;

-Teclado via USB -Mouse via USB -Monitor;

- Mezzanine 96boards;

För exekutör eller projekt:

- Dragonboard 410c;

- Mezzanine 96boards;

- Sensor Grove IMU 10DOF MPU - 9250 (ingen begränsning för att använda sensorn);

- Fonte de alimentação externa 11.1V;

- Tröja fêmea-fêmea;

Steg 2: Dragonboard 410c Com Mezzanine 96Bord: Configuração E Pinagem

Dragonboard 410c Com Mezzanine 96Bord: Configuração E Pinagem
Dragonboard 410c Com Mezzanine 96Bord: Configuração E Pinagem
Dragonboard 410c Com Mezzanine 96Bord: Configuração E Pinagem
Dragonboard 410c Com Mezzanine 96Bord: Configuração E Pinagem
Dragonboard 410c Com Mezzanine 96Bord: Configuração E Pinagem
Dragonboard 410c Com Mezzanine 96Bord: 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, specifikationer:

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

Corrente de funcionamento: 6mA;

Comunicação Serial;

Pinos: VCC, GND, SDA och SCL;

I2C -gränssnitt;

Para este exemplo foi utilizado um dos conectores Grove I2C0 (5V), que proporciona a comunicação Serial e a alimentação needsária para funcionamento do sensor. (ver imagem)

Steg 3: Integração: Enhet + Vuforia

Integração: Enhet + Vuforia
Integração: Enhet + Vuforia

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

2- På fliken Target Manager kan du också läsa mer om spårning (spårning).

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

4- Ingen enhet konfigurera bildmålet med en text som kan användas för att ladda ner modeller för 3D som vi kan använda för att få en bild för en lokal app.

5- Adicione a chave de licença da vuforia nas configurações dentro do Unity.

6- Apos isso modele os componentes da aula em algum programa 3D e preparate as aulas em cima do image target (pode ser uma aula de Biologia ou Física…).

Steg 4: Enhet: Konfigurera O Android SDK

Enhet: Konfigurera O Android SDK
Enhet: Konfigurera O Android SDK

1- Grundläggande om SDK för Android, för att välja Unity-inställningar och välja direkt.

2- Skapa en plattform för Unity för Android, få tillgång till APK.

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

Steg 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 or software que será executado. Este software é responsável por receber us dados lidos pelo sensor, processar and tratar estes dados conforme solicitado pelo programa. Depois carrega esses dados para o servidor alocado na própria placa para enviar os dados já tratados para a plataforma Unity. Os exemplos 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:

Kodi mag_python.py

#!/usr/bin/python

# Författare: Jon Trulson

# Copyright (c) 2015 Intel Corporation.

#

# Tillstånd beviljas härmed kostnadsfritt till alla personer som erhåller

# en kopia av denna programvara och tillhörande dokumentationsfiler (# "Programvara"), för att hantera programvaran utan begränsningar, inklusive

# utan begränsning rättigheterna att använda, kopiera, ändra, slå samman, publicera, # distribuera, underlicensiera och/eller sälja kopior av programvaran och till

# tillåta personer till vilka Programvaran tillhandahålls att göra detta, med förbehåll för

# följande villkor:

#

# Ovanstående upphovsrättsmeddelande och detta tillståndsmeddelande ska vara

# ingår i alla kopior eller stora delar av programvaran.

#

# PROGRAMVARAN FÅR "SOM DEN ÄR", UTAN GARANTI AV NÅGON

# UTTRYCKT ELLER UNDERFÖRSTÅTT, INKLUSIVE MEN INTE BEGRÄNSAT TILL GARANTIERNA FÖR

# Säljbarhet, lämplighet för ett särskilt syfte OCH

# INKRÄFTELSE. INGEN HÄNDELSER SKA FÖRFATTARNA ELLER upphovsrättsinnehavarna

# ANSVAR FÖR ALLA krav, skada eller annat ansvar

# AV KONTRAKT, TORT ELLER ÖVRIGT, HÖR FRÅN, UTAN ELLER I ANSLUTNING

# MED PROGRAMVARAN ELLER ANVÄNDNINGEN ELLER ANDRA HANDLINGAR I PROGRAMVARAN.

från _future_ importutskrift_funktion

importtid, sys, signal, atexit, urllib, urllib2, matematik

från upm import pyupm_mpu9150 som sensorObj

def main ():

# data = {}

# data ['magnetrometro'] = raw_input ("Informera en temperatur")

# data = urlib.urlencode (data)

# post_request = urlib2. Request (post_url, data, rubriker)

# Prova:

# post_response = urlib2.urlopen (post_request)

# print post_response.read ()

# utom URLError som e:

# print "Fel:", e.reason

# Instantiera en MPU9250 på I2C -buss 0

sensor = sensorObj. MPU9250 ()

## Exit hanterare ##

# Den här funktionen stoppar python från att skriva ut en stacktrace när du slår kontroll-C

def SIGINTHandler (signum, frame):

höja SystemExit

# Med den här funktionen kan du köra kod vid utgång

def exitHandler ():

print ("Avslutar")

sys.exit (0)

# Registrera utgångshanterare

atexit.register (exitHandler)

signal.signal (signal. SIGINT, SIGINTHandler)

sensor.init ()

x = sensorObj.new_floatp ()

y = sensorObj.new_floatp ()

z = sensorObj.new_floatp ()

medan (1):

sensor.update ()

sensor.getAccelerometer (x, y, z)

# print ("Accelerometer:")

# 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.getGyroskop (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))

# print (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')

# send = urllib2.urlopen (länk)

# page = send.read ()

# print (sida)

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

# print ('enviando dados')

# send = urllib2.urlopen (länk)

# page = send.read ()

# print (sida)

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

# print ()

# time.sleep (.5)

om _name_ == '_main_':

main ()

Código do Servidor Local

importtid

importera BaseHTTPServer

HOST_NAME = '172.17.56.9' # !!! KOM ihåg att ändra detta !!!

PORT_NUMBER = 80 # Kanske ställa in detta till 9000.

a = 0

klass MyHandler (BaseHTTPServer. BaseHTTPRequestHandler):

def do_HEAD (s):

s.send_response (200)

s.send_header ("Innehållstyp", "text/html")

s.end_headers ()

def do_GET (s):

dados = le_dados ()

tryck (dados)

"" "Svara på en GET -begäran." ""

om s.path == "/1":

s.send_response (200)

s.send_header ("Innehållstyp", "text/vanlig")

s.end_headers ()

s.wfile.write (dados)

elif s.path == "/2":

s.send_response (200)

s.send_header ("Innehållstyp", "text/vanlig")

s.end_headers ()

s.wfile.write ("2")

annan:

s.send_response (200)

s.send_header ("Innehållstyp", "text/vanlig")

s.end_headers ()

s.wfile.write (dados)

#s.wfile.write ("hittades inte !!")

def le_dados ():

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

texto = arq.readline ()

arq.close ()

returnera texto

om _name_ == '_main_':

server_class = BaseHTTPServer. HTTPServer

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

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

Prova:

a = a+2

httpd.serve_forever ()

utom KeyboardInterrupt:

passera

httpd.server_close ()

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

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

#!/bin/bash

eko "startar mag_python"

sudo python mag_python.py &

eko "start server"

sudo python server2.py

Steg 6: Resultado Final

Resultado Final
Resultado Final

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 för app utan Google Play:

Länk till Cydigos Py:

Rekommenderad: