جدول المحتويات:
- الخطوة 1: المواد
- الخطوة 2: Dragonboard 410c Com Mezzanine 96Boards: Configuração E Pinagem
- الخطوة 3: Integração: Unity + Vuforia
- الخطوة 4: الوحدة: تكوين O Android SDK
- الخطوة 5: Criando Servidor Local E Recebendo Informações Em Python
- الخطوة 6: النتيجة النهائية
فيديو: الدرس الذكي: 6 خطوات
2024 مؤلف: John Day | [email protected]. آخر تعديل: 2024-01-30 07:36
تأشيرات الدرس الذكي ، بطاقة التأشيرة غير المؤهلة لأساتذة نظام التشغيل ، يمكنك استخدام أي من هذه التأشيرات ، بالإضافة إلى تقديم الدعم والتجربة الجديدة دي aula convencional.
الخطوة 1: المواد
Para programar a Dragonboard 410c:
- دراغون بورد 410 ج ؛
- كابل HDMI ؛
- Teclado عبر USB - الماوس عبر USB - مراقب ؛
- 96 لوح الميزانين ؛
الفقرة التنفيذية أو المشروع:
- دراغون بورد 410 ج ؛
- 96 لوح الميزانين ؛
- مستشعر Grove IMU 10DOF MPU - 9250 (مستشعر não limitado ao uso de um único) ؛
- Fonte de alimentação externa 11.1V ؛
- الطائر fêmea-fêmea ؛
الخطوة 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 (ناقل مستوى) ، pois a placa só fornece 1.8V de Saída. مستشعر O يستخدم مستشعر foi um magnetômetro MPU - 9250 Grove -IMU 10DOF ، خاصة:
Tensão de Entrada: 5V / 3.3V ؛
Corrente de funcionamento: 6mA ؛
مسلسل Comunicação ؛
بينوس: VCC ، GND ، SDA e SCL ؛
واجهة I2C ؛
الفقرة النموذجية لاستخدامها في المناطق المخروطية Grove I2C0 (5V) ، وهي مناسبة لاستخدامها في جهاز استشعار. (ver imagem)
الخطوة 3: Integração: Unity + Vuforia
1- موقع Vá ao da vuforia na área de desenvolvedor e crie uma chave.
2 - لا يوجد علامة تبويب مدير الهدف و adicione uma textura para fazer o Tracking (quanto mais complexa melhor).
3-Feito هو أيضا قاعدة بيانات لاستيراد الوحدة.
4- لا توجد وحدة تكوين هدف صورة 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 elementes da aula em algum programa 3D e Prepar as aulas em cima do image target (pode ser uma aula de Biologia ou Física…).
الخطوة 4: الوحدة: تكوين O Android SDK
1- Baixe o SDK do Android، vá em unity preferences e-selecione o diretório.
2- قم بتعديل منصة البناء ، قم بالوحدة للعبة android، assim conseguiremos gerar o APK.
3- تثبيت apk em umpositivo (não esqueça de allowir fontes desconhecidas nas configurações).
الخطوة 5: Criando Servidor Local E Recebendo Informações Em Python
Concluídas مثل configurações apresentadas ، podemos acessar o Sistema Linaro dentro da placa e useizar várias linguagens como C ++ ، Java ، Python ، إلخ. برمجيات Este للاستجابة من خلال أجهزة الاستشعار التي تعمل بنظام التشغيل والاستشعار ، والمعالجة الإلكترونية هي برامج المطابقة للبرنامج. 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:
Código mag_python.py
#! / usr / bin / python
# المؤلف: جون ترولسون
# حقوق النشر (c) 2015 شركة إنتل.
#
# يُمنح الإذن بموجب هذا مجانًا لأي شخص يحصل عليه
# نسخة من هذا البرنامج وملفات التوثيق المرتبطة به (ملف
# "البرامج") ، للتعامل في البرنامج دون قيود ، بما في ذلك
# على سبيل المثال لا الحصر ، حقوق الاستخدام والنسخ والتعديل والدمج والنشر ،
# توزيع نسخ البرنامج و / أو ترخيصها من الباطن و / أو بيعها و
# السماح للأشخاص الذين تم توفير البرنامج لهم بالقيام بذلك ، وفقًا لـ
# الشروط التالية:
#
# يجب أن يكون إشعار حقوق النشر أعلاه وإشعار الإذن هذا
# مضمنة في جميع النسخ أو الأجزاء الأساسية من البرنامج.
#
# يتم توفير البرنامج "كما هو" ، بدون ضمان من أي نوع ،
# صريحة أو ضمنية ، بما في ذلك على سبيل المثال لا الحصر ضمانات
# القابلية للتسويق والملاءمة لغرض معين و
# عدم الانتهاك. لن يكون المؤلفون أو حاملو حقوق الطبع والنشر بأي حال من الأحوال
# مسؤول عن أي مطالبة أو أضرار أو مسؤولية أخرى ، سواء كانت في دعوى
رقم عقد أو ضرر أو غير ذلك ، ناشئ عن أو خارج أو متصل
# مع البرنامج أو الاستخدام أو المعاملات الأخرى في البرنامج.
من _future_ استيراد print_function
وقت الاستيراد ، النظام ، الإشارة ، atexit ، urllib ، urllib2 ، الرياضيات
من upm استيراد pyupm_mpu9150 as sensorObj
def main ():
# بيانات = {}
# data ['magnetrometro'] = raw_input ("الإعلام بدرجة حرارة")
# data = urlib.urlencode (بيانات)
# post_request = urlib2. Request (post_url ، البيانات ، الرؤوس)
# محاولة:
# post_response = urlib2.urlopen (post_request)
# print post_response.read ()
# باستثناء URLError مثل e:
# طباعة "خطأ:" ، السبب الإلكتروني
# إنشاء MPU9250 على ناقل I2C 0
المستشعر = sensorObj. MPU9250 ()
## معالجات الخروج ##
# تمنع هذه الوظيفة بيثون من طباعة تتبع تراكم عندما تضغط على control-C
def SIGINTHandler (إشارة ، إطار):
رفع SystemExit
# تتيح لك هذه الوظيفة تشغيل التعليمات البرمجية عند الخروج
def exitHandler ():
طباعة ("خروج")
sys.exit (0)
# تسجيل معالجات الخروج
atexit.register (exitHandler)
signal.signal (إشارة SIGINT ، SIGINTHandler)
sensor.init ()
س = sensorObj.new_floatp ()
y = sensorObj.new_floatp ()
z = sensorObj.new_floatp ()
بينما (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.getGyroscope (x ، y ، z)
# print ("الجيروسكوب: 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 ("مقياس المغناطيسية: 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 = مفتوح ('/ tmp / dados.txt'، 'w')
نص =
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')
# إرسال = urllib2.urlopen (رابط)
# page = send.read ()
# طباعة الصفحة)
# link = ('https://data.sparkfun.com/input/1noGndywdjuDGAGd6m5K؟private_key=0mwnmR9YRgSxApAo0gDX&acel='+str(modulo1))
# print ('enviando dados')
# إرسال = urllib2.urlopen (رابط)
# page = send.read ()
# طباعة الصفحة)
# print ("Temperature:"، sensor.getTemperature ())
# مطبعة()
# وقت النوم (.5)
إذا _name_ == '_main_':
الأساسية()
Código do Servidor Local
وقت الاستيراد
استيراد BaseHTTPServer
HOST_NAME = '172.17.56.9' # !!! تذكر لتغيير هذا !!!
PORT_NUMBER = 80 # ربما قم بتعيين هذا على 9000.
أ = 0
فئة MyHandler (BaseHTTPServer. BaseHTTPRequestHandler):
def do_HEAD (ق):
s.send_response (200)
s.send_header ("نوع المحتوى"، "text / html")
s.end_headers ()
def do_GET (s):
الأب = 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 = مفتوح ('/ tmp / dados.txt'، 'r')
texto = arq.readline ()
arq.close ()
إرجاع texto
إذا _name_ == "_الرئيسية_":
server_class = BaseHTTPServer. HTTPServer
httpd = server_class ((HOST_NAME ، PORT_NUMBER) ، MyHandler)
print time.asctime ()، "Server Starts -٪ s:٪ s"٪ (HOST_NAME، PORT_NUMBER)
محاولة:
أ = أ + 2
httpd.serve_forever ()
باستثناء لوحة المفاتيح المقاطعة:
يمر
httpd.server_close ()
print time.asctime () ، "توقف الخادم -٪ s:٪ s"٪ (HOST_NAME ، PORT_NUMBER)
Código de Execução dos Códigos anteriores no Shell
#! / بن / باش
صدى "بدء mag_python"
sudo python mag_python.py &
صدى "بدء الخادم"
sudo python server2.py
الخطوة 6: النتيجة النهائية
Feito isso as aulas poderão ser auxiliadas e incrementadas pelo projeto درس ذكي desenvolvido com a Dragonboard 410c. Servindo de Facessador e Proporcionando um maior aprendizado nos sistemas de ensino tanto público quanto privado.
LINK para app no Google Play:
رابط الفقرة códigos Py:
موصى به:
المنزل الذكي من Raspberry Pi: 5 خطوات (بالصور)
Smart Home من Raspberry Pi: هناك بالفعل العديد من المنتجات التي تجعل شقتك أكثر ذكاءً ، ولكن معظمها حلول مملوكة. ولكن لماذا تحتاج إلى اتصال بالإنترنت لتبديل الضوء بهاتفك الذكي؟ كان هذا أحد الأسباب التي دفعتني إلى بناء Smar الخاص بي
كيفية تثبيت نظام Raspbian OS في Raspberry Pi باستخدام برنامج NOOBS والهاتف الذكي: 6 خطوات
كيفية تثبيت نظام التشغيل Raspbian OS في Raspberry Pi باستخدام برنامج NOOBS والهاتف الذكي: مرحبًا بالجميع! أريكم اليوم في هذا البرنامج التعليمي مدى سهولة تثبيت نظام Raspbian OS في Raspberry Pi باستخدام برنامج NOOBS والهاتف الذكي
الدرس 2: استخدام الأردوينو كمصدر للطاقة لدائرة كهربائية: 6 خطوات
الدرس 2: استخدام Arduino كمصدر للطاقة لدائرة كهربائية: مرحبًا مرة أخرى ، أيها الطلاب ، إلى درسي الثاني من الدورة التدريبية لتدريس الإلكترونيات الأساسية. بالنسبة لأولئك الذين لم يروا درسي الأول ، الذي يصف أساسيات الدوائر ، يرجى الاطلاع على ذلك الآن. بالنسبة لأولئك الذين سبق لهم أن شاهدوا لي
ورشة عمل جافا - الدرس رقم 1: 9 خطوات
ورشة عمل Java - الدرس رقم 1: مرحبًا بك في ورشة عمل Java - الدرس رقم 1. يتم توفير هذا الدرس لك من خلال كود الفصل () في Virginia Tech
الدرس السادس للسيارة Arduino Tank - Bluetooth و Wifi Hot Spot Control: 4 خطوات
Arduino Tank Car Lesson 6 - Bluetooth and Wifi Hot Spot Control: في هذا الدرس ، نتعلم كيفية التحكم في تطبيق Robot car mobile app من خلال WiFi و Bluetooth. ، نحن نستخدم لوحة esp8266 wifi فقط كلوحة توسعة والتحكم في سيارة الخزان عبر مستقبل الأشعة تحت الحمراء في الدروس السابقة. في هذا الدرس سوف نتعلم