جدول المحتويات:

ATTiny-RAT ، متابع صغير يعمل بالطاقة ATTINY: 3 خطوات
ATTiny-RAT ، متابع صغير يعمل بالطاقة ATTINY: 3 خطوات

فيديو: ATTiny-RAT ، متابع صغير يعمل بالطاقة ATTINY: 3 خطوات

فيديو: ATTiny-RAT ، متابع صغير يعمل بالطاقة ATTINY: 3 خطوات
فيديو: Series Balanced Lithium ion (Li-Ion) charger 1 / 2 / 3 cells in series as Battery pack 2024, شهر نوفمبر
Anonim
ATTiny-RAT ، متابع صغير يعمل بالطاقة ATTINY
ATTiny-RAT ، متابع صغير يعمل بالطاقة ATTINY
ATTiny-RAT ، متابع صغير يعمل بالطاقة ATTINY
ATTiny-RAT ، متابع صغير يعمل بالطاقة ATTINY
ATTiny-RAT ، متابع صغير يعمل بالطاقة ATTINY
ATTiny-RAT ، متابع صغير يعمل بالطاقة ATTINY
ATTiny-RAT ، متابع صغير يعمل بالطاقة ATTINY
ATTiny-RAT ، متابع صغير يعمل بالطاقة ATTINY

مرحبا يا رفاق،

لقد مر وقت طويل منذ أن نشرت آخر تعليمات لي. حسنًا ، هناك العديد من الأشياء التي تدور في رأسي الآن ولكني تمكنت من توثيق "خطواتي الأولى" مع ATTiny-Series من الرقائق في هذه التعليمات القصيرة لك.

طلبت بعض عينات ATTINY85 لمجرد أنني أردت اختبارها:-) (يحب الجميع اختبار الأشياء ، أليس كذلك؟) وبعد ذلك بدأت في رسم بعض الأفكار في دفتر ملاحظاتي. لأكون صريحًا ، كان أول شيء فعلته هو وميض مصباح LED الذي يعد دائمًا بداية جيدة للتحقق مما إذا كان الإعداد / سلسلة الأدوات لديك يعمل أم لا. لقد جربت أيضًا مسجل درجة الحرارة والرطوبة باستخدام DHT22 و SoftwareSerial. كان هذا أمرًا صعبًا لأن مكتبات DHT مخصصة أساسًا لساعة 16 ميجا هرتز (إذا كنت تخطط للقيام بشيء من هذا القبيل ، فتحقق من كيفية قياس الساعة الداخلية مسبقًا). لكنني قررت أن أريكم شيئًا ، حسنًا ، أكثر مرحًا. -P.

لقد استخدمت فقط الأشياء التي كنت أرقدها لإبقاء هذا المشروع رخيصًا قدر الإمكان (بالنسبة لي). نتيجة هذه المغامرة الصغيرة هو "إنسان آلي خفيف" لطيف صغير مقابل حوالي 10-15 دولارًا (3 دولارات بالنسبة لي:-P)

لذلك إذا كنت مهتمًا بـ ATTINY ، فاقرأ المزيد.

راجع للشغل: آسف لغتي الإنجليزية السيئة (أنا لست متحدثًا أصليًا)

الخطوة 1: الشروع في استخدام ATTiny والأدوات والمواد

الشروع في العمل مع ATTiny والأدوات والمواد
الشروع في العمل مع ATTiny والأدوات والمواد
الشروع في العمل مع ATTiny والأدوات والمواد
الشروع في العمل مع ATTiny والأدوات والمواد
الشروع في العمل مع ATTiny والأدوات والمواد
الشروع في العمل مع ATTiny والأدوات والمواد
الشروع في العمل مع ATTiny والأدوات والمواد
الشروع في العمل مع ATTiny والأدوات والمواد

ما الذي ستحتاجه للبدء:

- شريحة ATTiny85

- Arduino UNO أو ما شابه ذلك

- لوحة خارجية مع سلك توصيل أو مبرمج ATTINY أو اصنع درع مبرمج لـ Arduino بنفسك (تحقق من الصور المرفقة ، يوجد مخطط من avdweb.nl). لقد صنعت هذا أيضًا وأنا سعيد حقًا به ، وكان التعديل الوحيد الذي أجريته هو أنني أضفت مقبسًا لسلسلة ATTinyx4 (راجع الصورة ومخططات pinout).

- Arduino IDE (احصل عليه هنا)

- الملفات الصلبة لـ ArduinoIDE (قم بتنزيلها وتثبيتها)

رابط معلومات إلى playground رابط مباشر لملفات github التي استخدمتها

- قم بتحميل Arduino كمخطط ISP على UNO (سيكون هذا هو المبرمج الخاص بك)

- اتبع هذه التعليمات (https://highlowtech.org/) أو هذه التعليمات (بواسطة ardutronix) وجرب الرسم التخطيطي "الوميض" (قم بتعديل رقم التعريف الشخصي. استخدم صورة ATTINY كمرجع! ستحتاج إلى وميض LED مسبقًا ATTINY a LED ومقاوم ~ 220 أوم لذلك)

قم بإعداد لوحة توصيل صغيرة للتحقق من كل شيء. إذا قمت بعمل كل شيء بشكل صحيح ، فسيومض مؤشر LED وستكون جاهزًا للانطلاق

أدوات

- لحام الحديد - بعض اللحام - قاطع أسلاك صغير - دريميل أو أداة دوارة أخرى (فقط لقطع ثنائي الفينيل متعدد الكلور!) - بعض الغراء الساخن - ملاقط - أسلاك

المواد

- تصميم ثنائي الفينيل متعدد الكلور (~ 4 سم × 6 سم سيفعل ذلك) - 2x LDR - 5x 10k المقاوم (2x لـ LDRs و 2 x للترانزستورات BE ، 1x LED) - 1x 330Ohm المقاوم (1x NEOPIXELS) - 2x LDR- 1x LED (لون الخاص بك الاختيار ، بدلاً من عجلة العجلات) - 3x NEOPIXEL WS2812-2x Transistor (BD137 أو ما شابه) - 2x Diode (1N4001 أو ما شابه) - محرك دقيق 2x (على سبيل المثال من Hubsan micro-quadcopter) - 1x ATTINY85 + اختياري (موصى به) 8PIN مقبس IC- 1x 1s LIPO (استخدمت 140Ah من طائرة هليكوبتر RC قديمة) - بعض رؤوس الدبوس / المقابس - shrinktube (مبيت LDR)

لنبدأ ببناء الأجهزة …

الخطوة 2: الأجهزة

المعدات
المعدات
المعدات
المعدات
المعدات
المعدات

إذا ألقيت نظرة على المخططات التي أرفقتها ، فإن إعداد الأجهزة بسيط جدًا. لذا ، إذا كنت قادرًا على قراءة المخططات واستخدام مكواة لحام ، فهذا نصف الحيلة. ألقِ نظرة أيضًا على الصور ، أضفت بعض الملاحظات لك.

أنا لا أقدم خطة لقطع ثنائي الفينيل متعدد الكلور ، فلديك الحرية في صنع التصميم الخاص بك (كن مبدعًا وأظهر لنا روبوتاتك الصغيرة) ، كما أن وضع جميع المكونات الإلكترونية متروك لك. بعض التلميحات من جانبي:

حاول محاذاة المحركات بدقة (شاهد الزاوية!) نحن نستخدم فقط عمود المحرك بدلاً من العجلات. (سيستهلك هذا طاقة أقل) أوصي بوضع المحركات أسفل البطارية (الوزن) واستخدام LDRs في المقدمة (بزاوية 45 درجة) مقترنة بمؤشر LED (أحاول استخدام هذه المجموعة لتجنب العوائق ، أكثر الاختبارات مطلوبة).

علاوة على ذلك ، أوصي بصنع وصلة مرور صغيرة للتشغيل / الإيقاف حتى لا تضيع البطارية بهذه السهولة.

إذا كان هناك أي شيء غير واضح أو إذا كان لديك أسئلة ، فقط اسألني. لن يصنع الكثير من أعضاء هيئة التدريس أطروحة من هذا المشروع الصغير.

الخطوة 3: البرمجيات

برمجة
برمجة
برمجة
برمجة

أولًا قم بتنزيل وتثبيت مكتبة ADAFRUIT Neopixel

إليك الكود الخاص بي مع بعض الأوصاف الرئيسية (أضفت أيضًا ملف الرسم). لم أعلق على كل خطوة لأنني أعتقد أنها ليست ضرورية.

قم بتحميل الرسم على ATTiny85 واستمتع بلعبتك الجديدة

أفكار لوظيفة "الشخصية" + ربما تكون أمثلة الشفرات موضع ترحيب كبير:-)

إذا كان هناك أي أسئلة ، فلا تتردد في طرحها.

آمل أن تكون قد استمتعت بتعليماتي القصيرة ورحلتي الصغيرة إلى عالم ATTINYs.

/ * ATTINY85-Rata بسيط ATTINY85 روبوت يتبع الضوء. الإصدار 2.0 ، بواسطة Auer Markus * /

#يشمل

#يشمل

// محركات

#define LMOTOR 0 #define RMOTOR 1 // LEDs #define PIXELPIN 2 #define NUMPIXEL 3 // LDRs #define LLDR A2 #define RLDR A3

// otherint emo = 0 ؛ كاليب تعويم emostate منطقي عجوز طويلة. // تعريف NeopixelsAdafruit_NeoPixel PIXEL = Adafruit_NeoPixel (NUMPIXEL، PIXELPIN، NEO_GRB + NEO_KHZ800) ؛

الإعداد باطل()

{// ساعة راقية وإلا ستواجه بعض مشكلات التوقيت (تمت كتابة lib neopixel لـ 16 ميجاهرتز) # إذا تم تعريفها (_AVR_ATtiny85_) إذا كانت (F_CPU == 16000000) clock_prescale_set (clock_div_1) ؛ #إنهاء إذا

// PINMODE pinMode (LMOTOR ، الإخراج) ؛ pinMode (RMOTOR ، الإخراج) ؛ pinMode (LLDR ، المدخلات) ؛ pinMode (LLDR ، المدخلات) ؛ // تهيئة البكسل PIXEL.begin () ؛ PIXEL.show () ، تأخير (500) ؛ // startsequence for (int i = 0؛ i

حلقة فارغة()

{if (lightfollow () == 1) {left () ؛ } else if (lightfollow () == 2) {right ()؛ } else if (lightfollow () == 0) {forward ()؛ } المشاعر()؛ }

int lightfollow () {

حد int = 14 ؛ نتيجة int = 0 ؛ تعويم اليسار = 0 ؛ تعويم لليمين = 0 ؛ عينات int = 1 ؛ // قراءة LDRs لـ (int j = 0 ؛ j <عينات ؛ j ++) {

يسار = يسار + analogRead (LLDR) ؛ يمين = يمين + (analogRead (RLDR) * calib) ؛

}

// احسب النتيجة (من أي اتجاه يأتي الضوء؟)

إذا ((يسار / عينات)> ((يمين / عينات) + حد)) {نتيجة = 2 ؛}

وإلا إذا ((يسار / عينات) <((يمين / عينات) -treshold)) {نتيجة = 1 ؛}

آخر {نتيجة = 0 ؛}

نتيجة العودة } void forward () {// Forward analogWrite (LMOTOR، 230)؛ analogWrite (RMOTOR ، 230) ؛ PIXEL.setPixelColor (0 ، PIXEL. Color (0 ، 0 ، 255)) ؛ PIXEL.setPixelColor (2 ، PIXEL. Color (0 ، 0 ، 255)) ؛ PIXEL.show () ، }

ترك باطل () {

// LEFT analogWrite (LMOTOR ، 150) ؛ analogWrite (RMOTOR ، 255) ؛ PIXEL.setPixelColor (0 ، PIXEL. Color (0 ، 0 ، 255)) ؛ //PIXEL.setPixelColor (1 ، PIXEL. Color (75 ، 0 ، 0)) ؛ PIXEL.setPixelColor (2 ، PIXEL. Color (0 ، 100 ، 0)) ؛ PIXEL.show () ، }

باطل الحق () {

// RIGHT analogWrite (LMOTOR ، 255) ؛ analogWrite (RMOTOR ، 150) ؛ PIXEL.setPixelColor (0 ، PIXEL. Color (0 ، 100 ، 0)) ؛ PIXEL.setPixelColor (2 ، PIXEL. Color (0 ، 0 ، 255)) ؛ PIXEL.show () ، }

// هذا لمزيد من التجارب ، في محاولة لمنح هذا الشخص القليل من الشخصية:-) أنا أختبر ما يمكن أن أفعله ، لكن لا توجد أفكار جيدة حتى الآن.

عاطفة باطلة () {int emotimer = 2500؛ مدة كثافة العمليات = عشوائية (250 ، 750) ؛ if (millis () - oldmillis> emotimer) {oldmillis = millis () ؛ emo = عشوائي (1 ، 4) ؛ } if (millis () - oldmillis> duration) {emostate =! emostate؛ } if (emostate == true) {switch (emo) {case 1: PIXEL.setPixelColor (1، PIXEL. Color ((255)، (255)، (255))) ؛ PIXEL.show () ، استراحة؛ الحالة 2: PIXEL.setPixelColor (1، PIXEL. Color ((255)، (0)، (0))) ؛ PIXEL.show () ، استراحة؛ الحالة 3: PIXEL.setPixelColor (1، PIXEL. Color ((0)، (255)، (0))) ؛ PIXEL.show () ، استراحة؛ الافتراضي: PIXEL.setPixelColor (1 ، PIXEL. Color (عشوائي (0 ، 255) ، عشوائي (0 ، 255) ، عشوائي (0 ، 255))) ؛ PIXEL.show () ، استراحة؛ }} else {PIXEL.setPixelColor (1، PIXEL. Color (25، 0، 0)) ؛ PIXEL.show () ، }}

موصى به: