สารบัญ:
- ขั้นตอนที่ 1: Materiais
- ขั้นตอนที่ 2: Dragonboard 410c Com Mezzanine 96Boards: กำหนดค่า E Pinagem
- ขั้นตอนที่ 3: Integração: Unity + Vuforia
- ขั้นตอนที่ 4: ความสามัคคี: กำหนดค่า O Android SDK
- ขั้นตอนที่ 5: Criando Server Local E Recebendo Informações Em Python
- ขั้นตอนที่ 6: ผลลัพธ์สุดท้าย
วีดีโอ: บทเรียนอันชาญฉลาด: 6 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:03
O โครงการ 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 ão mostrar os conteúdos de for, for s â € เดอ เอาลา ตามธรรมดา
ขั้นตอนที่ 1: Materiais
โปรแกรมสำหรับ Dragonboard 410c:
- กระดานมังกร 410c;
- คาโบ HDMI;
- Teclado ผ่าน USB - เมาส์ผ่าน USB - จอภาพ;
- ชั้นลอย 96 บอร์ด;
ผู้ปฏิบัติการสำหรับโครงการ:
- กระดานมังกร 410c;
- ชั้นลอย 96 บอร์ด;
- Sensor Grove IMU 10DOF MPU - 9250 (เซ็นเซอร์จำกัดการใช้งาน ao uso de um único);
- Fonte de alimentação externa 11.1V;
- จัมเปอร์ fêmea-fêmea;
ขั้นตอนที่ 2: Dragonboard 410c Com Mezzanine 96Boards: กำหนดค่า E Pinagem
O Shield Mezzanine deve ser acoplado à placa Dragonboard 410c, para que haja fornecimento de saída 3.3V / 5V (level shifter), ใช้งานได้จริง 1.8V de saída O เซ็นเซอร์ที่ใช้ foi um magnetômetro Sensor MPU – 9250 Grove -IMU 10DOF, เฉพาะ:
Entrada เทนเซา: 5V / 3.3V;
Corrente ของ funcionameto: 6mA;
Comunicação อนุกรม;
Pinos: VCC, GND, SDA และ SCL;
อินเทอร์เฟซ I2C;
ตัวอย่างการใช้งานและการเชื่อมต่อ Grove I2C0 (5V), มาตรฐานและการสื่อสาร Serial e alimentação necessária para funcionamento do sensor. (ver imagem)
ขั้นตอนที่ 3: Integração: Unity + Vuforia
1- Vá ao site da vuforia na área de desenvolvedor e crie uma chave.
2- แท็บในแท็บ Target Manager e adicione uma textura para fazer o Tracking (quanto mais complexa melhor)
3- Feito isso baixe ฐานข้อมูลสำหรับ Unity e นำเข้า
4- No Unity กำหนดค่า um image target 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 prepare as aulas em cima do image target (pode ser uma aula de Biologia ou Física…).
ขั้นตอนที่ 4: ความสามัคคี: กำหนดค่า O Android SDK
1- Baixe o SDK สำหรับ Android, vá em Unity preferences และ selecione o seu diretório
2- สร้างแพลตฟอร์ม build ให้เป็น Unity สำหรับ Android, assim conseguiremos gerar o APK
3- ติดตั้ง apk em um dispositivo (não esqueça de permitir fontes desconhecidas nas configurações)
ขั้นตอนที่ 5: Criando Server Local E Recebendo Informações Em Python
สรุปเป็น configurações apresentadas, podemos acessar o Sistema Linaro dentro da placa e utilizar várias linguagens como C++, Java, Python, etc., para criar o software que será executado. Este software ตอบกลับโดย receber os dados lidos pelo sensor, processar e tratar estes dadoscompliante solicitado pelo programa. Depois carrega ess dados para o servidor alocado na própria placa para enviar os dados já tratados para a plataforma Unity. ตัวอย่างจาก código deste projeto estão em linguagem Phyton Os dados são transferidos da Dragonboard 410c สำหรับ Unity e são apresentados em um app
Seguem os códigos mag_python.py (leitor de dados do sensor), server2.py (เซิร์ฟเวอร์ในเครื่อง), Executável no Shell:
Código mag_python.py
#!/usr/bin/python
# ผู้แต่ง: Jon Trulson
# ลิขสิทธิ์ (c) 2015 Intel Corporation
#
# ได้รับอนุญาตนี้ให้ฟรีกับบุคคลใด ๆ ที่ได้รับ
# สำเนาของซอฟต์แวร์นี้และไฟล์เอกสารที่เกี่ยวข้อง (# "ซอฟต์แวร์") เพื่อจัดการในซอฟต์แวร์โดยไม่มีข้อจำกัด รวมถึง
#ไม่จำกัดสิทธิ์ในการใช้ คัดลอก แก้ไข ผสาน เผยแพร่
# แจกจ่าย อนุญาตช่วง และ/หรือขายสำเนาของซอฟต์แวร์ และ
# อนุญาตให้บุคคลที่ซอฟต์แวร์ได้รับการติดตั้งให้ทำเช่นนั้นภายใต้
#เงื่อนไขดังต่อไปนี้
#
# ประกาศลิขสิทธิ์ข้างต้นและประกาศการอนุญาตนี้จะเป็น
# รวมอยู่ในสำเนาทั้งหมดหรือส่วนสำคัญของซอฟต์แวร์
#
# ซอฟต์แวร์มีให้ "ตามที่เป็น" โดยไม่มีการรับประกันใดๆ
# ไม่ว่าโดยชัดแจ้งหรือโดยนัย รวมถึงแต่ไม่จำกัดเพียงการรับประกันของ
# ความสามารถในการขาย ความเหมาะสมสำหรับวัตถุประสงค์เฉพาะและ
# การไม่ละเมิด ผู้เขียนหรือผู้ถือลิขสิทธิ์ไม่ว่าในกรณีใด ๆ
# รับผิดสำหรับการเรียกร้อง ความเสียหาย หรือความรับผิดอื่น ๆ ไม่ว่าจะอยู่ในการดำเนินการ
# ของสัญญา การละเมิดหรืออย่างอื่นที่เกิดขึ้นจากหรือในการเชื่อมต่อ
# กับซอฟต์แวร์หรือการใช้งานหรือข้อตกลงอื่น ๆ ในซอฟต์แวร์
จาก _future_ นำเข้า print_function
เวลานำเข้า, sys, สัญญาณ, atexit, urllib, urllib2, math
จาก upm นำเข้า pyupm_mpu9150 เป็น sensorObj
def หลัก ():
# ข้อมูล = {}
# data['magnetrometro'] = raw_input(" แจ้งอุณหภูมิ")
# data = urlib.urlencode (ข้อมูล)
# post_request = urlib2. Request (post_url ข้อมูล ส่วนหัว)
# ลอง:
# post_response = urlib2.urlopen (post_request)
# พิมพ์ post_response.read()
# ยกเว้น URLError เป็น e:
# พิมพ์ "ข้อผิดพลาด: ", e.reason
# ยกตัวอย่าง MPU9250 บนบัส I2C 0
เซ็นเซอร์ = sensorObj. MPU9250()
## ตัวจัดการทางออก ##
# ฟังก์ชันนี้หยุด python จากการพิมพ์ stacktrace เมื่อคุณกด control-C
def SIGINTHandler(สัญลักษณ์, เฟรม):
ยก SystemExit
# ฟังก์ชั่นนี้ให้คุณเรียกใช้รหัสเมื่อออก
def exitHandler():
พิมพ์ ("ออก")
sys.exit(0)
# ลงทะเบียนตัวจัดการทางออก
atexit.register(exitHandler)
สัญญาณ.สัญญาณ(สัญญาณ. SIGINT, SIGINTHandler)
เซ็นเซอร์.init()
x = sensorObj.new_floatp()
y = sensorObj.new_floatp()
z = sensorObj.new_floatp()
ในขณะที่ (1):
เซ็นเซอร์. อัปเดต ()
sensor.getAccelerometer(x, y, z)
# พิมพ์ ("มาตรความเร่ง:")
# พิมพ์ ("AX: %.4f" % sensorObj.floatp_value(x), end=' ')
# พิมพ์ (" AY: %.4f" % sensorObj.floatp_value(y), end=' ')
# พิมพ์ (" 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
#พิมพ์(โมดูโล1)
modulo1 = ("%.1f" % abs(((modulo1**0.5)-1)*9.8))
#พิมพ์(โมดูโล1)
#
# sensor.getGyroscope(x, y, z)
# print("Gyroscope: GX: ", sensorObj.floatp_value(x), end=' ')
# พิมพ์ (" GY: ", sensorObj.floatp_value (y), end=' ')
# พิมพ์ (" GZ: ", sensorObj.floatp_value(z))
sensor.getMagnetometer(x, y, z)
# print("เครื่องวัดสนามแม่เหล็ก: MX: ", sensorObj.floatp_value(x), end=' ')
# print(" MY: ", sensorObj.floatp_value(y), end=' ')
# พิมพ์ (" MZ: ", sensorObj.floatp_value(z))
modulo2 = sensorObj.floatp_value(x)**2+sensorObj.floatp_value(y)**2+sensorObj.floatp_value(z)**2
# พิมพ์ (modulo2)
modulo2 = ("%.2f" % (modulo2**0.5))
# พิมพ์ (modulo2)
arq = open('/tmp/dados.txt', 'w')
ข้อความ =
texto.append(str(modulo2)+", "+str(modulo1))
arq.writelines(ข้อความ)
arq.close()
# ลิงค์ = ('https://data.sparkfun.com/input/0lwWlyRED5i7K0AZx4JO?private_key=D6v76yZrg9CM2DX8x97B&mag='+str(modulo2))
# พิมพ์ ('enviando dados')
# send = urllib2.urlopen (ลิงค์)
# หน้า = send.read()
#พิมพ์(หน้า)
# ลิงค์ = ('https://data.sparkfun.com/input/1noGndywdjuDGAGd6m5K?private_key=0mwnmR9YRgSxApAo0gDX&acel='+str(modulo1))
# พิมพ์ ('enviando dados')
# send = urllib2.urlopen (ลิงค์)
# หน้า = send.read()
#พิมพ์(หน้า)
# พิมพ์ ("อุณหภูมิ: ", sensor.getTemperature ())
# พิมพ์ ()
# เวลานอน(.5)
ถ้า _name_ == '_main_':
หลัก()
Código do Server Local
เวลานำเข้า
นำเข้า BaseHTTPServer
HOST_NAME = '172.17.56.9' # !!!อย่าลืมเปลี่ยนสิ่งนี้!!!
PORT_NUMBER = 80 # อาจตั้งค่านี้เป็น 9000
a=0
คลาส MyHandler (BaseHTTPServer. BaseHTTPRequestHandler):
def do_HEAD(s):
s.send_response(200)
s.send_header("ประเภทเนื้อหา", "ข้อความ/html")
s.end_headers()
def do_GET(s):
dados = le_dados()
พิมพ์ (พ่อ)
"""ตอบสนองต่อคำขอ GET"""
ถ้า s.path=="/1":
s.send_response(200)
s.send_header("ประเภทเนื้อหา", "ข้อความ/ธรรมดา")
s.end_headers()
s.wfile.write(ดาดอส)
elif s.path=="/2":
s.send_response(200)
s.send_header("ประเภทเนื้อหา", "ข้อความ/ธรรมดา")
s.end_headers()
s.wfile.write("2")
อื่น:
s.send_response(200)
s.send_header("ประเภทเนื้อหา", "ข้อความ/ธรรมดา")
s.end_headers()
s.wfile.write (ดาดอส)
#s.wfile.write("ไม่พบ!!")
def le_dados():
arq = open('/tmp/dados.txt', 'r')
texto = arq.readline()
arq.close()
ส่งคืนข้อความ
ถ้า _name_ == '_main_':
server_class = BaseHTTPServer. HTTPServer
httpd = server_class((HOST_NAME, PORT_NUMBER), MyHandler)
พิมพ์ time.asctime(), "เซิร์ฟเวอร์เริ่ม - %s:%s" % (HOST_NAME, PORT_NUMBER)
ลอง:
a=a+2
httpd.serve_forever()
ยกเว้น KeyboardInterrupt:
ผ่าน
httpd.server_close()
พิมพ์ time.asctime(), "เซิร์ฟเวอร์หยุด - %s:%s" % (HOST_NAME, PORT_NUMBER)
Código de Execução dos Códigos anteriores ไม่มีเชลล์
#!/bin/bash
echo "เริ่มต้น mag_python"
sudo python mag_python.py &
echo "เริ่มเซิร์ฟเวอร์"
sudo python server2.py
ขั้นตอนที่ 6: ผลลัพธ์สุดท้าย
Feito isso as aulas poderão ser auxiliadas e incrementadas pelo projeto Smart Lesson ที่มาจาก Dragonboard 410c. บริการของผู้อำนวยความสะดวก และ proporcionando um maior aprendizado nos sistemas de ensino tanto público quanto privado
ลิงค์สำหรับแอปไม่มี Google Play:
ลิงก์สำหรับรหัส Py:
แนะนำ:
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: 5 ขั้นตอน
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: การตวัดเป็นวิธีง่ายๆ ในการสร้างเกม โดยเฉพาะอย่างยิ่งเกมปริศนา นิยายภาพ หรือเกมผจญภัย
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: 3 ขั้นตอน
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: ในคำแนะนำนี้ เราจะทำการตรวจจับใบหน้าบน Raspberry Pi 4 ด้วย Shunya O/S โดยใช้ Shunyaface Library Shunyaface เป็นห้องสมุดจดจำใบหน้า/ตรวจจับใบหน้า โปรเจ็กต์นี้มีจุดมุ่งหมายเพื่อให้เกิดความเร็วในการตรวจจับและจดจำได้เร็วที่สุดด้วย
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: 3 ขั้นตอน
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: ในบทช่วยสอนนี้ ฉันจะแสดงขั้นตอนสำคัญในการติดตั้งปลั๊กอิน WordPress ให้กับเว็บไซต์ของคุณ โดยทั่วไป คุณสามารถติดตั้งปลั๊กอินได้สองวิธี วิธีแรกคือผ่าน ftp หรือผ่าน cpanel แต่ฉันจะไม่แสดงมันเพราะมันสอดคล้องกับ
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): 8 ขั้นตอน
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): ตัวแปลงสัญญาณเสียงล้ำเสียง L298N Dc ตัวเมียอะแดปเตอร์จ่ายไฟพร้อมขา DC ตัวผู้ Arduino UNOBreadboardวิธีการทำงาน: ก่อนอื่น คุณอัปโหลดรหัสไปยัง Arduino Uno (เป็นไมโครคอนโทรลเลอร์ที่ติดตั้งดิจิตอล และพอร์ตแอนะล็อกเพื่อแปลงรหัส (C++)
เครื่อง Rube Goldberg 11 ขั้นตอน: 8 ขั้นตอน
เครื่อง 11 Step Rube Goldberg: โครงการนี้เป็นเครื่อง 11 Step Rube Goldberg ซึ่งออกแบบมาเพื่อสร้างงานง่ายๆ ในรูปแบบที่ซับซ้อน งานของโครงการนี้คือการจับสบู่ก้อนหนึ่ง