Taula de continguts:
- Pas 1: materials
- Pas 2: Dragonboard 410c Com Mezzanine 96Boards: Configuração E Pinagem
- Pas 3: integració: Unity + Vuforia
- Pas 4: Unitat: configureu l'SDK d'Android
- Step 5: Criando Servidor Local E Recebendo Informações Em Python
- Pas 6: Resultat final
Vídeo: Lliçó intel·ligent: 6 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:11
O projecto Smart Lesson visa criar um product no qual os professors 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 e interativa, proporcionant experiencias no presenciadas em uma sala de aula convencional.
Pas 1: materials
Per programar un Dragonboard 410c:
- Dragonboard 410c;
- Cabo HDMI;
- Teclado via USB-Mouse mitjançant USB -Monitor;
- Mezzanine 96boards;
Per executar o projectar:
- Dragonboard 410c;
- Mezzanine 96boards;
- Sensor Grove IMU 10DOF MPU - 9250 (no limitat a l’ús d’un únic sensor);
- Fonte d'alimentació externa 11.1V;
- Jumper fêmea-fêmea;
Pas 2: Dragonboard 410c Com Mezzanine 96Boards: Configuração E Pinagem
O Shield Mezzanine deve ser acoplado à placa Dragonboard 410c, para que haja fornecimiento de saída 3.3V / 5V (level shifter), pois a placa só fornece 1.8V de saída. El sensor utilitzat amb un magnetòmetre Sensor MPU - 9250 Grove -IMU 10DOF, especificações:
Tensió d'Entrada: 5V / 3.3V;
Corrent de funcionament: 6mA;
Comunicação Serial;
Pinos: VCC, GND, SDA e SCL;
Interfície I2C;
Per aquest exemple, s'ha utilitzat dos connectors Grove I2C0 (5V), que proporcionen una comunicació sèrie i un aliment necessari per al funcionament del sensor. (ver imagem)
Pas 3: integració: Unity + Vuforia
1- Vá ao site da vuforia na área de desenvolupvedor e crie uma chave.
2- Vés a la pestanya Target Manager i adjudica una textura per fer-ne el seguiment (quant més complex).
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 localised pelo 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 aules em cima do image target (can be uma aula de Biologia ou Física…).
Pas 4: Unitat: configureu l'SDK d'Android
1- Baixe o SDK d'Android, amb Unity preferences i seleccioneu el vostre directori.
2- Mude a build plataform de Unity per a Android, per aconseguir aconseguir gerar o APK.
3- Instale o apk em um device (no esqueça de permitir fonts desconhecidas nas configurações).
Step 5: Criando Servidor Local E Recebendo Informações Em Python
Conclusions com a configuracions presentades, podem accedir al Sistema Linar dins de la placa i utilitzar varis linguagens com C ++, Java, Python, etc., per al programa o programa que serà executat. Aquest programari és responsable de receber els dados lidos pelo sensor, processar i tractar aquests dados conforme sol·licitats el programa del pèl. Depois carrega esses dados para o servidor alocado na própria placa para enviar os dados já tractados para a plataforma Unity. Els exemples de codi d’aquest projecte s’estenen en linguagem Phyton. Els vostres transferències de Dragonboard 410c per a Unity i presentades per la vostra aplicació.
Seguiment dels codis mag_python.py (controlador de detalls del sensor), server2.py (Servidor local), Execució sense Shell:
Codi mag_python.py
#! / usr / bin / python
# Autor: Jon Trulson
# Copyright (c) 2015 Intel Corporation.
#
# Es concedeix el permís gratuïtament a qualsevol persona que obtingui
# una còpia d'aquest programari i dels fitxers de documentació associats (el fitxer
# "Programari"), per tractar el programari sense restriccions, inclosa
# sense limitació els drets d’ús, còpia, modificació, combinació, publicació, # distribuir, subllicenciar i / o vendre còpies del programari i a
# Permetre a les persones a les quals es facilita el programari, amb subjecció a
# les condicions següents:
#
# L'avís de copyright anterior i aquest avís de permís seran
# inclòs en totes les còpies o parts importants del programari.
#
# EL PROGRAMARI ES PROPORCIONA "TAL COM ÉS" SENSE GARANTIA DE CAP MENA, # EXPRÉS O IMPLÍCIT, INCLUDS PERUT NO LIMITAT A LES GARANTIES DE
COMERCIALITZACIÓ, IDONEITAT PER A UN PROPOSESIT PARTICULAR I
# NO INFRACCIÓ. En cap cas, els autors o titulars dels drets d'autor no podran ser-ho
# RESPONSABLE DE QUALSEVOL RECLAMACIÓ, DANYS O ALTRES RESPONSABILITATS, TANT EN UNA ACCIÓ
# DE CONTRACTE, TORT O D'UN ALTRA MANERA, SORGENT DE, FORA O EN CONNEXIÓ
# AMB EL PROGRAMARI O L'ÚS O ALTRES TRACTES DEL PROGRAMARI.
des de _future_ importa print_function
temps d’importació, sys, signal, atexit, urllib, urllib2, math
des de la importació upm pyupm_mpu9150 com a sensorObj
def main ():
# dades = {}
# data ['magnetrometro'] = raw_input ("Informe a temperatura")
# data = urlib.urlencode (dades)
# post_request = urlib2. Request (post_url, dades, capçaleres)
# proveu:
# post_response = urlib2.urlopen (post_request)
# print post_response.read ()
# excepte URLError com a e:
# print "Error:", e.reason
# Instantiu un MPU9250 al bus 0 d'I2C
sensor = sensorObj. MPU9250 ()
## Gestors de sortides ##
# Aquesta funció impedeix que Python imprimeixi una traça de pila quan premeu control-C
def SIGINTHandler (signum, frame):
augmenta SystemExit
# Aquesta funció us permet executar codi a la sortida
def exitHandler ():
imprimir ("Surt")
sys.exit (0)
# Registre de controladors de sortida
atexit.register (exitHandler)
signal.signal (signal. SIGINT, SIGINTHandler)
sensor.init ()
x = sensorObj.new_floatp ()
y = sensorObj.new_floatp ()
z = sensorObj.new_floatp ()
mentre (1):
sensor.update ()
sensor.getAccelerometer (x, y, z)
# print ("Acceleròmetre")
# print ("AX:%.4f"% sensorObj.floatp_value (x), end = '')
# print ("AY:%.4f"% sensorObj.floatp_value (y), end = '')
# print ("AZ:%.4f"% sensorObj.floatp_value (z))
mòdul1 = (sensorObj.floatp_value (x) -0.005) ** 2+ (sensorObj.floatp_value (y) -0.0150) ** 2+ (sensorObj.floatp_value (z) -0.0450) ** 2
# print (mòdul1)
mòdul1 = ("%.1f"% abs (((mòdul1 ** 0.5) -1) * 9.8))
# print (mòdul1)
#
# sensor.getGyroscope (x, y, z)
# print ("Giroscopi: 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 ("Magnetòmetre: MX:", sensorObj.floatp_value (x), end = '')
# print ("MY:", sensorObj.floatp_value (y), end = '')
# print ("MZ:", sensorObj.floatp_value (z))
mòdul2 = sensorObj.floatp_value (x) ** 2 + sensorObj.floatp_value (y) ** 2 + sensorObj.floatp_value (z) ** 2
# print (mòdul2)
mòdul2 = ("%.2f"% (mòdul2 ** 0.5))
# print (mòdul2)
arq = obert ('/ tmp / dados.txt', 'w')
texto =
texto.append (str (mòdul2) + "," + str (mòdul1))
arq.writelines (texto)
arq.close ()
# link = ('https://data.sparkfun.com/input/0lwWlyRED5i7K0AZx4JO?private_key=D6v76yZrg9CM2DX8x97B&mag='+str(modulo2))
# print ('enviant dados')
# send = urllib2.urlopen (enllaç)
# pàgina = send.read ()
# imprimir (pàgina)
# link = ('https://data.sparkfun.com/input/1noGndywdjuDGAGd6m5K?private_key=0mwnmR9YRgSxApAo0gDX&acel='+str(modulo1))
# print ('enviant dados')
# send = urllib2.urlopen (enllaç)
# pàgina = send.read ()
# imprimir (pàgina)
# print ("Temperatura:", sensor.getTemperature ())
# imprimir()
# time.sleep (.5)
si _name_ == '_principal_':
main ()
Código do Servidor Local
temps d'importació
importar BaseHTTPServer
HOST_NAME = '172.17.56.9' #! RECORDEU-HO DE CANVIAR !!!
PORT_NUMBER = 80 # Potser establiu-lo en 9000.
a = 0
classe MyHandler (BaseHTTPServer. BaseHTTPRequestHandler):
def do_HEAD (s):
s.send_response (200)
s.send_header ("Tipus de contingut", "text / html")
s.end_headers ()
def do_GET (s):
dados = le_dados ()
imprimir (dados)
"" "Respon a una sol·licitud GET." ""
si s.path == "/ 1":
s.send_response (200)
s.send_header ("Tipus de contingut", "text / normal")
s.end_headers ()
s.wfile.write (dados)
elif s.path == "/ 2":
s.send_response (200)
s.send_header ("Tipus de contingut", "text / normal")
s.end_headers ()
s.wfile.write ("2")
en cas contrari:
s.send_response (200)
s.send_header ("Tipus de contingut", "text / normal")
s.end_headers ()
s.wfile.write (dados)
# s.wfile.write ("no s'ha trobat !!")
def le_dados ():
arq = obert ('/ tmp / dados.txt', 'r')
texto = arq.readline ()
arq.close ()
tornar text
si _nom_ == '_principal_':
server_class = BaseHTTPServer. HTTPServer
httpd = server_class ((HOST_NAME, PORT_NUMBER), MyHandler)
print time.asctime (), "El servidor s'inicia -% s:% s"% (HOST_NAME, PORT_NUMBER)
provar:
a = a + 2
httpd.serve_forever ()
excepte KeyboardInterrupt:
passar
httpd.server_close ()
print time.asctime (), "El servidor s'atura -% s:% s"% (HOST_NAME, PORT_NUMBER)
Codi d'execució dos codis anteriors no Shell
#! / bin / bash
eco "iniciant mag_python"
sudo python mag_python.py &
eco "iniciar servidor"
sudo python server2.py
Pas 6: Resultat final
Feito isso as aulas poderão ser auxiliadas and incrementadas hair projeto Smart Lesson desenvolvido com a Dragonboard 410c. Servindo de facilitador e proporcionando um maior aprendido nos sistemas de ensino tanto público cuanto privado.
ENLLAÇ per a l'aplicació sense Google Play:
Enllaç per a codis Py:
Recomanat:
Llum LED d'escriptori intel·ligent - Il·luminació intel·ligent amb Arduino - Espai de treball Neopixels: 10 passos (amb imatges)
Llum LED d'escriptori intel·ligent | Il·luminació intel·ligent amb Arduino | Espai de treball de Neopixels: ara passem molt de temps a casa estudiant i treballant virtualment, per què no fer que el nostre espai de treball sigui més gran amb un sistema d’il·luminació personalitzat i intel·ligent basat en els LEDs Arduino i Ws2812b. Aquí us mostro com construir el vostre Smart Llum LED d'escriptori que
Converteix un telèfon intel·ligent no utilitzat en una pantalla intel·ligent: 6 passos (amb imatges)
Converteix un telèfon intel·ligent no utilitzat en una pantalla intel·ligent: el tutorial de Deze es troba a Engels, per a la versió del clàssic espanyol. Teniu un telèfon intel·ligent (antic) sense utilitzar? Convertiu-lo en una pantalla intel·ligent amb Fulls de càlcul de Google i paper i llapis seguint aquest senzill tutorial pas a pas. Quan hagis acabat
Làmpada LED intel·ligent controlada per telèfon intel·ligent Bluetooth: 7 passos
Làmpada LED intel·ligent controlada per telèfon intel·ligent Bluetooth: sempre somio amb controlar els meus aparells d’il·luminació. Aleshores algú va fabricar una increïble llum LED de colors. Fa poc em vaig trobar amb una làmpada LED de Joseph Casha a Youtube. Inspirant-me en ell, vaig decidir afegir diverses funcions mantenint la comoditat
Rellotge despertador intel·ligent: un despertador intel·ligent fabricat amb Raspberry Pi: 10 passos (amb imatges)
Rellotge despertador intel·ligent: un rellotge despertador intel·ligent fet amb Raspberry Pi: Heu volgut mai un rellotge intel·ligent? Si és així, aquesta és la solució per a vosaltres. He creat Smart Alarm Clock (Rellotge despertador intel·ligent), aquest és un rellotge que permet canviar l’hora de l’alarma segons el lloc web. Quan l’alarma s’activi, hi haurà un so (brunzidor) i 2 llums
Jardineria intel·ligent i agricultura intel·ligent basades en IoT mitjançant ESP32: 7 passos
Jardineria intel·ligent i agricultura intel·ligent basades en l’IoT que utilitzen ESP32: el món canvia a mesura que l’agricultura passa. Avui en dia, la gent integra electrònica en tots els camps i l’agricultura no n’és una excepció. Aquesta fusió d'electrònica a l'agricultura està ajudant els agricultors i les persones que gestionen els jardins