Innholdsfortegnelse:

Smart leksjon: 6 trinn
Smart leksjon: 6 trinn

Video: Smart leksjon: 6 trinn

Video: Smart leksjon: 6 trinn
Video: 🚀 AMAZON 2.0 - ИНТЕРНЕТ МАГАЗИН с нуля за 6 часов [Next / React / Nest / PostgreSQL / Prisma / TS] 2024, Juli
Anonim
Smart leksjon
Smart leksjon

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 expera nao presencias de aula convencional.

Trinn 1: Materiais

Materiais
Materiais

For programmerer en Dragonboard 410c:

- Dragonboard 410c;

- Cabo HDMI;

-Teclado via USB -Mouse via USB -Monitor;

- Mezzanine 96 boards;

For utfører eller prosjekt:

- Dragonboard 410c;

- Mezzanine 96 boards;

- Sensor Grove IMU 10DOF MPU - 9250 (não limitado ao uso de um único sensor);

- Fonte de alimentação externa 11.1V;

- Genser fêmea-fêmea;

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

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

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

Corrente de funcionamento: 6mA;

Comunicação Serial;

Pinos: VCC, GND, SDA og SCL;

I2C -grensesnitt;

Det kan for eksempel brukes til å bruke konektorene Grove I2C0 (5V), som kan brukes til å levere seriell og nødvendig mat til en sensor. (ver bilde)

Trinn 3: Integração: Unity + Vuforia

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

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

2- Gå til fanen Target Manager og mer informasjon om sporing av sporing (quanto mais complexa melhor).

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

4- Ingen enhet konfigurer bildemålet for en tekst som kan brukes for å bruke 3D-modeller som kan brukes for å finne et lokalt program.

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 prepar as aulas em cima do image target (pode ser uma aula de Biologia ou Física…).

Trinn 4: Enhet: Konfigurer O Android SDK

Enhet: Konfigurer O Android SDK
Enhet: Konfigurer O Android SDK

1- Grunnlag for SDK for Android, og velg Unity-preferanser.

2- Spill en plattform for Unity for Android, for å få tilgang til APK.

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

Trinn 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., for criar of software que será executado. Este software é responsável for 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 for oity and 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:

Lagre mag_python.py

#!/usr/bin/python

# Forfatter: Jon Trulson

# Copyright (c) 2015 Intel Corporation.

#

# Tillatelse gis herved, gratis, til enhver person som får

# en kopi av denne programvaren og tilhørende dokumentasjonsfiler (# "Programvare"), for å handle i Programvaren uten begrensninger, inkludert

# uten begrensning rettigheter til å bruke, kopiere, endre, slå sammen, publisere, # distribuere, lisensiere og/eller selge kopier av programvaren, og til

# tillate personer som Programvaren er utstyrt til å gjøre det, med forbehold om

# følgende betingelser:

#

# Ovennevnte opphavsrettsvarsel og denne tillatelsesmeldingen skal være

# inkludert i alle kopier eller vesentlige deler av programvaren.

#

# PROGRAMVAREN LEVERES "SOM DEN ER" UTEN GARANTI AV NOE SLAG, # UTTRYKK ELLER UNDERFORSTÅET, INKLUDERT, MEN IKKE BEGRENSET TIL GARANTIENE FOR

# SALGBARHET, RIKTIGHET FOR ET BESTEMT FORMÅL OG

# IKKE Krenkelse. INGEN HENDELSE SKAL FORFATTERNE ELLER OPPHAVSREGLERNE VÆRE

# ANSVAR FOR ALLE KRAV, SKADER ELLER ANNET ANSVAR, OGSÅ I EN HANDLING

# AV KONTRAKT, TORT ELLER ANDRE, STIGER FRA, UTEN AV ELLER I TILKOBLING

# MED PROGRAMVAREN ELLER BRUKEN ELLER ANDRE HANDLINGER I PROGRAMVAREN.

fra _future_ importutskrift_funksjon

importtid, sys, signal, atexit, urllib, urllib2, matematikk

fra upm import pyupm_mpu9150 som sensorObj

def main ():

# data = {}

# data ['magnetrometro'] = raw_input ("Informer a temperatura")

# data = urlib.urlencode (data)

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

# prøve:

# post_response = urlib2.urlopen (post_forespørsel)

# print post_response.read ()

# unntatt URLError som e:

# print "Feil:", e.reason

# Instantiate en MPU9250 på I2C buss 0

sensor = sensorObj. MPU9250 ()

## Exit handlers ##

# Denne funksjonen stopper python fra å skrive ut et stacktrace når du treffer kontroll-C

def SIGINTHandler (signum, frame):

heve SystemExit

# Denne funksjonen lar deg kjøre kode ved utgang

def exitHandler ():

print ("Avslutter")

sys.exit (0)

# Registrer exit -behandlere

atexit.register (exitHandler)

signal.signal (signal. SIGINT, SIGINTHandler)

sensor.init ()

x = sensorObj.new_floatp ()

y = sensorObj.new_floatp ()

z = sensorObj.new_floatp ()

mens (1):

sensor.update ()

sensor.getAccelerometer (x, y, z)

# print ("Akselerometer:")

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

tekst =

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

arq.writelines (tekst)

arq.close ()

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

# print ('enviando dados')

# send = urllib2.urlopen (lenke)

# side = send.read ()

# print (side)

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

# print ('enviando dados')

# send = urllib2.urlopen (lenke)

# side = send.read ()

# print (side)

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

# skrive ut()

# time.sleep (.5)

hvis _name_ == '_main_':

hoved()

Código do Servidor Local

importtid

importer BaseHTTPServer

HOST_NAME = '172.17.56.9' # !!! HUSK Å ENDRE DETTE !!!

PORT_NUMBER = 80 # Kanskje sette dette til 9000.

a = 0

klasse MyHandler (BaseHTTPServer. BaseHTTPRequestHandler):

def do_HEAD (s):

s.send_response (200)

s.send_header ("Innholdstype", "tekst/html")

s.end_headers ()

def do_GET (s):

dados = le_dados ()

print (dados)

"" "Svar på en GET -forespørsel." ""

hvis s.path == "/1":

s.send_response (200)

s.send_header ("Innholdstype", "tekst/vanlig")

s.end_headers ()

s.wfile.write (dados)

elif s.path == "/2":

s.send_response (200)

s.send_header ("Innholdstype", "tekst/vanlig")

s.end_headers ()

s.wfile.write ("2")

ellers:

s.send_response (200)

s.send_header ("Innholdstype", "tekst/vanlig")

s.end_headers ()

s.wfile.write (dados)

#s.wfile.write ("ikke funnet !!")

def le_dados ():

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

texto = arq.readline ()

arq.close ()

returner tekst

hvis _name_ == '_main_':

server_class = BaseHTTPServer. HTTPServer

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

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

prøve:

a = a+2

httpd.serve_forever ()

unntatt KeyboardInterrupt:

sende

httpd.server_close ()

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

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

#!/bin/bash

ekko "starter mag_python"

sudo python mag_python.py &

ekko "start server"

sudo python server2.py

Trinn 6: Resultado Final

Resultado Final
Resultado Final

Feito isso as aulas poderão ser auxiliadas and incrementadas pelo projeto Smart Lesson desenvolvido com a Dragonboard 410c. Tilrettelegger for opplæring og administrasjon av flere typer systemer.

LINK for app no Google Play:

Lenke til Cydigos Py:

Anbefalt: