Cov txheej txheem:
- Kauj ruam 1: Cov ntaub ntawv
- Kauj Ruam 2: Dragonboard 410c Com Mezzanine 96Boards: Configuração E Pinagem
- Kauj Ruam 3: Kev Sib Koom: Kev Sib Koom + Vuforia
- Kauj Ruam 4: Kev Sib Koom: Kho O Android SDK
- Kauj Ruam 5: Criando Servidor Local E Recebendo Informações Em Python
- Kauj Ruam 6: Resultado Final
Video: Zaj Lus Qhia Ntse: 6 Kauj Ruam
2024 Tus sau: John Day | [email protected]. Kawg hloov kho: 2024-01-30 09:25
O projeto Smart Lesson visa criar um produto tsis muaj peev xwm 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 experencia presacias de aula conferencecional.
Kauj ruam 1: Cov ntaub ntawv
Rau qhov program rau Dragonboard 410c:
Dragonboard 410c;
- Cabo HDMI;
-Teclado ntawm USB -Mouse ntawm USB -Monitor;
- Mezzanine 96boards;
Rau kev ua haujlwm tiav:
Dragonboard 410c;
- Mezzanine 96boards;
- Sensor Grove IMU 10DOF MPU - 9250 (não limitado ao uso de um único sensor);
- Fonte de alimentação externa 11.1V;
- Jumper fêmea-fêmea;
Kauj Ruam 2: Dragonboard 410c Com Mezzanine 96Boards: Configuração E Pinagem
O Shield Mezzanine deve ser acoplado à placa Dragonboard 410c, para que haja fornecimento de saída 3.3V / 5V (qib shifter), pois a placa só fornece 1.8V de saída. O sensor utilizado foi um magnetômetro Sensor MPU -9250 Grove -IMU 10DOF, tshwj xeeb:
Tensão de Entrada: 5V / 3.3V;
Corrente de funcionamento: 6mA;
Serial kev sib txuas lus;
Pinos: VCC, GND, SDA thiab SCL;
I2C interface;
Para este exemplo foi utilizado um dos conectores Grove I2C0 (5V), que proporciona a comunicação Serial e a alimentação necessária para funcionamento ua sensor. (ver daim duab)
Kauj Ruam 3: Kev Sib Koom: Kev Sib Koom + Vuforia
1- V site ao site da vuforia na área de desenvolvedor e crie uma chave.
2- Vá na tab Target Manager e adicione uma textura para fazer o Tracking (quanto mais complexa melhor).
3- Feito isso baixe a database para o Unity e importe.
4- Tsis muaj kev sib sau ua ke teeb tsa lub hom phiaj duab com a textura escolhida e dentro dele adicione os modelos 3D que deseja utilizar, os mesmos estarão ativos quando 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 programa 3D e npaj ua aulas em cima ua duab hom phiaj (pode ser uma aula de Biologia ou Física…).
Kauj Ruam 4: Kev Sib Koom: Kho O Android SDK
1- Baixe o SDK rau Android, los ntawm kev nyiam kev sib sau thiab selecione o seu diretório.
2- Mude a plataform do Unity para o android, assim conseguiremos gerar o APK.
3- Instale o apk em um dispositivo (não esqueça de permitir fontes desconhecidas nas configurações).
Kauj Ruam 5: 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, thiab lwm yam, rau criar o software que será executado. Este software é responsável por receber os dados lidos pelo sensor, processar e 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 ua sensor), server2.py (Servidor hauv zos), Ua tiav tsis muaj Plhaub:
Código mag_python.py
#!/usr/bin/nab hab sej
# Tus Sau: Jon Trulson
# Copyright (c) 2015 Intel Corporation.
#
# Kev tso cai no tau tso cai, tsis pub dawb, rau txhua tus neeg tau txais
# daim ntawv theej ntawm cov software no thiab cov ntaub ntawv pov thawj cuam tshuam (the
# "Software"), los daws qhov Software yam tsis muaj kev txwv, suav nrog
# tsis muaj kev txwv txoj cai siv, theej, hloov kho, koom ua ke, tshaj tawm, # faib, sublicense, thiab/lossis muag cov ntawv luam ntawm Software, thiab rau
# tso cai rau cov neeg uas Software tau npaj los ua, raws li
# cov xwm txheej hauv qab no:
#
# Daim ntawv ceeb toom hais txog kev tso cai saum toj no thiab daim ntawv ceeb toom tso cai no yuav yog
# suav nrog txhua daim ntawv theej lossis feem ntau ntawm Software.
#
# Lub SOFTWARE tau muab "raws li yog", Tsis muaj kev lees paub ntawm txhua tus menyuam, # ZOO TSHAJ PLAWS LOS NTAWM TSHAJ PLAWS, suav nrog tab sis tsis txwv rau qhov kev lees paub ntawm
# MERCHANTABILITY, haum rau lub hom phiaj tshwj xeeb THIAB
# NONINFRINGEMENT. Tsis muaj dab tsi tshwm sim yuav tsum yog tus tswj hwm lossis COPYRIGHT HOLDERS
# YUAV UA LI CAS XWB, DAMAGES LOS YOG LWM TUS LAWV, THAUM KAWG LI CAS
# Ntawm kev cog lus, kev hais lus lossis lwm yam kev xav, tshwm sim los ntawm, tawm ntawm lossis hauv kev sib txuas
# Nrog SOFTWARE LOSSIS Siv lossis Lwm Yam Kev Pom Zoo hauv SOFTWARE.
los ntawm _future_ ntshuam print_function
ntshuam sijhawm, sys, teeb liab, atexit, urllib, urllib2, lej
los ntawm upm ntshuam pyupm_mpu9150 li sensorObj
def lub ntsiab ():
# cov ntaub ntawv = {}
# cov ntaub ntawv ['magnetrometro'] = raw_input ("Qhia qhov ntsuas kub")
# cov ntaub ntawv = urlib.urlencode (cov ntaub ntawv)
# post_request = urlib2. Request (post_url, cov ntaub ntawv, headers)
# sim:
# post_response = urlib2.urlopen (post_request)
# luam tawm post_response.read ()
# tsuas yog URLError li e:
# print "Yuam kev:", e.reason
# Instantiate MPU9250 ntawm I2C tsheb npav 0
sensor = sensorObj. MPU9250 ()
## Tawm cov neeg ua haujlwm ##
# Cov haujlwm no nres nab nab los ntawm kev luam ntawv stacktrace thaum koj ntaus tswj -C
def SIGINTHandler (kos npe, thav duab):
tsa SystemExit
# Txoj haujlwm no tso cai rau koj khiav cov cai ntawm kev tawm
def tawmHandler ():
print ("Tawm")
sys.exit (0)
# Sau npe cov neeg lis haujlwm tawm
atexit.register (exitHandler)
signal.signal (signal. SIGINT, SIGINTHandler)
sensor.init ()
x = sensorObj.new_floatp ()
y = sensorObj.new_floatp ()
z = sensorObj.new_floatp ()
thaum (1):
sensor.update ()
sensor.getAccelerometer (x, y, z)
# luam tawm ("Accelerometer:")
# print ("AX: %.4f" % sensorObj.floatp_value (x), kawg = '')
# print ("AY: %.4f" % sensorObj.floatp_value (y), kawg = '')
# luam tawm ("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
# luam tawm (modulo1)
modulo1 = (" %.1f" % abs (((modulo1 ** 0.5) -1)*9.8))
# luam tawm (modulo1)
#
# sensor.getGyroscope (x, y, z)
# print ("Gyroscope: GX:", sensorObj.floatp_value (x), kawg = '')
# print ("GY:", sensorObj.floatp_value (y), kawg = '')
# luam tawm ("GZ:", sensorObj.floatp_value (z))
sensor.getMagnetometer (x, y, z)
# luam tawm ("Magnetometer: MX:", sensorObj.floatp_value (x), kawg = '')
# print ("MY:", sensorObj.floatp_value (y), kawg = '')
# luam tawm ("MZ:", sensorObj.floatp_value (z))
modulo2 = sensorObj.floatp_value (x) ** 2+sensorObj.floatp_value (y) ** 2+sensorObj.floatp_value (z) ** 2
# luam tawm (modulo2)
modulo2 = (" %.2f" % (modulo2 ** 0.5))
# luam tawm (modulo2)
arq = qhib ('/tmp/dados.txt', 'w')
texto =
texto.append (str (modulo2)+","+str (modulo1))
arq.writlines (ntawv nyeem)
arq.close ()
# txuas = ('https://data.sparkfun.com/input/0lwWlyRED5i7K0AZx4JO?private_key=D6v76yZrg9CM2DX8x97B&mag='+str(modulo2))
# luam tawm ('enviando dados')
# xa = urllib2.urlopen (txuas)
# nplooj ntawv = xa.read ()
# print (nplooj ntawv)
# txuas = ('https://data.sparkfun.com/input/1noGndywdjuDGAGd6m5K?private_key=0mwnmR9YRgSxApAo0gDX&acel='+str (modulo1))
# luam tawm ('enviando dados')
# xa = urllib2.urlopen (txuas)
# nplooj ntawv = xa.read ()
# print (nplooj ntawv)
# luam tawm ("Kub:", sensor.getTemperature ())
# luam tawm ()
# sijhawm.sleep (.5)
yog _name_ == '_main_':
lub ntsiab ()
Código ua Servidor Local
lub sij hawm ntshuam
ntshuam BaseHTTPServer
HOST_NAME = '172.17.56.9' # !!! Nco ntsoov hloov qhov no !!!
PORT_NUMBER = 80 # Tej zaum teeb tsa qhov no rau 9000.
ua = 0
chav kawm MyHandler (BaseHTTPServer. BaseHTTPRequestHandler):
def ua_HEAD (s):
s.send_response (200)
s.send_header ("Cov ntsiab lus-hom", "ntawv/html")
s.end_headers ()
def ua_GET (s):
dados = le_dados ()
print (tsum tsum)
"" "Teb rau GET thov." """
yog s.path == "/1":
s.send_response (200)
s.send_header ("Cov ntsiab lus-hom", "ntawv/dawb")
s.end_headers ()
s.wfile.write (txiv neej)
elif s.path == "/2":
s.send_response (200)
s.send_header ("Cov ntsiab lus-hom", "ntawv/dawb")
s.end_headers ()
s.wfile.write ("2")
lwm tus:
s.send_response (200)
s.send_header ("Cov ntsiab lus-hom", "ntawv/dawb")
s.end_headers ()
s.wfile.write (txiv neej)
#s.wfile.write ("tsis pom !!")
def le_dados ():
arq = qhib ('/tmp/dados.txt', 'r')
texto = arq.readline () cov
arq.close ()
rov texto
yog _name_ == '_main_':
server_class = BaseHTTPServer. HTTPServer
httpd = server_class ((HOST_NAME, PORT_NUMBER), MyHandler)
print time.asctime (), "Server Starts - %s: %s" %(HOST_NAME, PORT_NUMBER)
sim:
ib = a+2
httpd.serve_forever ()
tshwj tsis yog KeyboardInterrupt:
dhau
httpd.server_close ()
print time.asctime (), "Server Stops - %s: %s" %(HOST_NAME, PORT_NUMBER)
Código de Execução dos Códigos anteriores no Shell
#!/bin/tsoo
ncha "pib mag_python"
sudo python mag_python.py &
ncha "pib server"
sudo python server2.py
Kauj Ruam 6: 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 rau app tsis muaj Google Ua Si:
Txuas rau códigos Py:
Pom zoo:
Lo Lus Mloog Nrog Zaj Zaj Zaj thiab Lub Teeb Tom Qab: 6 Kauj Ruam
Lo Lus Tsiv Nrog Zaj Zaj Zaj thiab Lub Teeb Tom Qab: Pib yog nyob ntawd. Phaj pem hauv ntej yog 40 x 40 cm thiab npaj tau lawm
Zaj Laug Lo Lus Clock Nrog Cov Zaj Zaj Tag Nrho thiab Ntau Ntxiv: 13 Kauj Ruam (nrog Duab)
Zaj Lo Lus Clock Nrog Cov Zaj Zaj Tag Nrho thiab Ntau Ntxiv: Lub Hom Phiaj 1) Yooj Yim 2) Tsis kim 3) Raws li lub zog muaj peev xwm ua tau Zaj Zaj Zaj Caij Nyoog nrog cov zaj sawv tag nrho. Qhov Kev Ntsuas Zoo ntawm NeopixelsUpdate 01-jan
Yuav Ua Li Cas Thiaj Li Siv Soldering (Cov Lus Qhia Cuab Yeej & Cov Lus Qhia): 4 Cov Kauj Ruam
Yuav Ua Li Cas Thiaj Li Siv Soldering (Cov Lus Qhia Cuab Yeej & Cov Cuab Yeej): Hav guys! Kuv vam tias koj twb nyiam kuv cov lus qhia yav dhau los " Arduino MIDI Controller DIY " thiab koj tau npaj rau qhov tshiab, raws li ib txwm kuv tab tom kawm qhia kom qhia koj yuav ua li cas thiaj ua tau qee yam khoom siv hluav taws xob txias, thiab tham txog
Kuv Me Me Whoop: Daim Ntawv Qhia Whoop + Cov Lus Qhia thiab Cov Lus Qhia: 8 Kauj Ruam
Kuv Me Me Whoop: Daim Ntawv Qhia Whoop + Cov Lus Qhia thiab Cov Lus Qhia: Kev Ceeb Toom: Tam sim no koj tab tom nkag mus rau kuv thawj qhov kev qhia, thiab koj yuav ntsib ntau yam kev ruam thiab tsis muaj phiaj xwm thiab/lossis txuj ci. Paub txog qhov no yog kuv tus kheej Tiny Whoop teeb tsa uas kuv siv txhua hnub, yog li kuv xav tias kuv yuav qhia nws. Nws yog phooj ywg mus ncig (tsis muaj
CD Toj roob hauv pes Cuam Tshuam Nrog Zaj Zaj Zaj: 5 Kauj Ruam
CD Toj roob hauv pes Cuam Tshuam nrog Zaj sawv Zaj Duab Xis: Vim li cas thiaj yuav cov yas yas toj roob hauv pes zoo nkauj thaum koj tuaj yeem ua koj tus kheej dawb, rov ua dua qub cds thiab tau txais qhov txias tshaj bennie hauv tus txheej txheem