فهرست مطالب:
- تدارکات
- مرحله 1: راه اندازی رزبری پای
- مرحله 2: چیدمان وسایل الکترونیکی
- مرحله 3: طراحی پایگاه داده
- مرحله 4: تنظیم حساب در TTN
- مرحله 5: راه اندازی آردوینو
- مرحله 6: تنظیم Backend
- مرحله 7: راه اندازی Frontend
- مرحله 8: افزودن یک قاب
تصویری: ضبط جعبه: 8 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:53
Capture The Box یک بازی تیم سازی است که می توانید با دوستان خود در محله خود بازی کنید.
هدف این است که جعبه را بگیرید و تا آنجا که ممکن است آن را در اختیار خود داشته باشید در حالی که بازیکنان دیگر سعی می کنند از خانه خود به طور مخفیانه دور شوند.
این بازی از GPS برای قرار دادن جعبه و برچسب های RFID برای شناسایی بازیکنان استفاده می کند. می توان یک LDR اختیاری برای تطبیق شدت نمایش ماتریس نقطه با درصد نور در منطقه اضافه کرد.
تدارکات
میکروکنترلرها و رایانه ها
- تمشک پای
- آردوینو (مگا) من یک آردوینو مگا را بر روی Uno معمولی انتخاب کردم ، زیرا پین های بسیار بیشتری دارد. این امر ضروری است زیرا ما از سپر Dragino LoRa استفاده می کنیم ، که هنگام استفاده از UNO پین های دیجیتالی بسیار کمی برای ما باقی می گذارد. نکته: بهتر است از نمونه اصلی استفاده کنید ، زیرا کلون های چینی همیشه آنطور که انتظار می رود کار نمی کنند.
سنسورها و ماژول ها
- 4 ماژول MAX7219 نقطه ماتریس اتصال DOUT به DIN ، CS به CS ، CLK به CLK…
- مقاومت وابسته به نور (10K) + مقاومت (10K)
- ماژول GPS NEO-7M (یا مشابه) من از VMA430 از Velleman استفاده می کنم
- ماژول RC522 RFID+ چند نشان/کارت RFID
برای استفاده از LoRa (فناوری بی سیم)
سپر Dragino Lora
سنسورها و ماژول های اختیاری
صفحه نمایش LCD برای نمایش آدرس IP رزبری پای
برای انجام تنظیمات آزمایشی
تخته نان و کابل های Dupont (مرد-مرد
اختیاری (روکش)
- آهن لحیم کاری
- یک جعبه ابزار قدیمی
- مواد لازم برای چاپ سه بعدی
- چند تخته چوبی نازک
- برخی از پیچ و مهره ها (که می توانند در سوراخ های آردوینو جا شوند). قطر پیچ های من حدود 3 میلی متر است.
قیمت تقریبی را می توانید در BOM (بیل مواد) ، که در زیر گنجانده شده است ، بیابید.
مرحله 1: راه اندازی رزبری پای
Raspberry Pi قلب پروژه است.
این برنامه frontend ، backend و پایگاه داده را اجرا می کند. همچنین مسئول ارتباط بین پشتیبان و آردوینو خواهد بود.
برای اینکه بتوانیم از رزبری پای استفاده کنیم ، باید موارد زیر را انجام دهیم:
قسمت 1: Raspbian را روی Raspberry Pi نصب کنید
آموزش نحوه انجام این کار را می توانید در اینجا پیدا کنید:
قسمت 2: Raspbian را روی Raspberry Pi نصب کنید وای فای خانه خود را تنظیم کنید.
این را می توان با استفاده از wpa_passphrase "YourNetwork" "YourSSID" >> /etc/wpa_supplicant/wpa_supplicant.conf
Pi را راه اندازی مجدد کنید و هنگام تایپ در ifconfig باید آدرس IP را مشاهده کنید
قسمت 3: وب سرور و پایگاه داده را نصب کنید
هنگامی که Pi خود را راه اندازی کردید ، بهتر است رمز عبور خود را تغییر دهید. این را می توان با دستور passwd انجام داد.
پس از اتمام کار ، پیش بروید و Apache ، PHP ، MariaDB و PHPMyAdmin را نصب کنید.
Apache، PHP sudo apt install apache2 -y sudo apt install php libapache2 -mod -php -y
MariaDB sudo apt install mariadb-server mariadb-client -y sudo apt install php-mysql -y sudo systemctl راه اندازی مجدد apache2.service
PHPMyAdminsudo apt install phpmyadmin -y
فراموش نکنید که گذرواژه ایمن MySQL را تنظیم کنید.
قسمت 4: نصب کتابخانه های لازم پایتون
برای پشتیبان ، ما به چند کتابخانه نیاز داریم. اینها را می توان با استفاده از دستور pip3 نصب کرد.
pip3 mysql-connector-python را نصب کنید
pip3 flask-socketio را نصب کنید
pip3 flask-cors را نصب کنید
pip3 install geventpip3 gevent-websocket را نصب کنید
pip3 ttn را نصب کنید
مرحله 2: چیدمان وسایل الکترونیکی
برای کارکردن این پروژه ، ما باید تمام قطعات الکترونیکی را به هم وصل کنیم.
سپر LoRa را می توان به راحتی در جای خود قرار داد. فقط پین ها را با پین های آردوینو خود تراز کنید.
اتصالات دیگر در طرح Fritzing من توضیح داده شده است. که می توانید از اینجا بارگیری کنید:
مرحله 3: طراحی پایگاه داده
برای اینکه بتوانم همه داده های بازی و سنسورها را ذخیره کنم ، چند جدول تهیه کردم:
اندازه گیری از سنسورها ، در جداول سنسور یافت می شود. این شامل یک اشاره به سنسور ، مقدار اندازه گیری (به عنوان مثال مختصات: 51.123456 ؛ 3.123456) و یک شناسه بازی اختیاری (اگر یک بازی در طول اندازه گیری فعال بوده است) به
نام بازیکن و UID نشان RFID آنها. تعدیل کننده اختیاری اضافه می شود ، این شخص می تواند بازی را تغییر دهد (به عنوان مثال متوقف کردن آن قبل از زمان).
اطلاعات بازی (شروع و پایان).
رابطه spel و speler. این جایی است که بازیکنان به یک بازی اختصاص داده می شوند.
bezit در این جدول ، امتیاز ذخیره می شود. این شامل شناسه بازی ، شناسه بازیکن ، زمان سرقت جعبه و زمان از دست دادن آن (هنگامی که شخص دیگری آن را می دزدد یا زمانی که بازی به پایان می رسد) است. با کم کردن زمان شروع از زمان پایان ، می توانید نمره ای را که از آن ضبط بدست آورده است محاسبه کنید.
خروجی پایگاه داده را می توانید در GitHub من (https://github.com/BoussonKarel/CaptureTheBox) پیدا کنید.
sql را در PHPMyAdmin / MySQL Workbench باز کرده و اجرا کنید. اکنون پایگاه داده باید وارد شود.
مرحله 4: تنظیم حساب در TTN
مرحله 1: برای یک حساب کاربری در TTN ثبت نام کنید و یک برنامه ایجاد کنید
برای یک حساب کاربری در TheThingsNetwork ثبت نام کنید ، سپس به Console> Add application بروید.
نام برنامه خود را انتخاب کرده و روی افزودن برنامه کلیک کنید.
مرحله 2: ثبت یک دستگاه
هنگامی که برنامه خود را ایجاد کردید ، به Register device بروید.
شناسه دستگاه را انتخاب کنید ، این می تواند هر آنچه شما می خواهید (تا زمانی که مورد مار باشد) باشد و روی ثبت نام کلیک کنید.
روی نماد Generate در Device EUI کلیک کنید تا TTN یکی را برای شما ایجاد کند.
مرحله 3: یادداشت های خود را بنویسید
اکنون به دستگاه خود بروید و روی نماد Code در کنار Device EUI ، App EUI و App key کلیک کنید. اکنون باید به صورت آرایه ای از بایت ها ظاهر شود.
قبل از کپی ، روی دکمه Switch کلیک کنید و مطمئن شوید Dev EUI و App EUI شما LSB FIRST هستند.
کلید برنامه شما باید MSB FIRST باقی بماند (آن را تغییر ندهید).
در مرحله بعد به این کلیدها نیاز دارید: راه اندازی Arduino.
مرحله 4: نوشتن کلید Application Access خود
اکنون برای راه اندازی MQTT در Raspberry Pi خود به یک کلید دیگر نیاز داریم.
به برنامه خود بروید و به قسمت Accesses Keys بروید.
در مرحله Backend به این مورد نیاز خواهید داشت.
مرحله 5: راه اندازی آردوینو
کد آردوینو را می توانید در GitHub من ، تحت Arduino (https://github.com/BoussonKarel/CaptureTheBox) پیدا کنید.
این کد برای مرتب نگه داشتن آن به چندین زبانه تقسیم می شود.
کد اصلی: اعلامیه های پین ، راه اندازی () و حلقه ()
0_LoRa.ino این کد ارتباطات را با استفاده از LoRa مدیریت می کند.
داده های برچسب های LDR ، GPS و RFID را در یک آرایه 13 بایت قرار می دهد و این را به TheThingsNetwork ارسال می کند.
1_LDR.ino با استفاده از analogRead () مقدار ولتاژ روی مقاومت وابسته به نور را اندازه گیری می کند.
سپس به درصد نور تبدیل می شود (0 هیچ است ، 100 چراغ قوه تلفن همراه است).
2_GPS.ino این از ارتباط سریال با استفاده از TX1 و RX1 (Serial1) استفاده می کند.
از پیامهای NMEA (پیامهای $ GPRMC به طور دقیق) برای پیدا کردن عرض و طول جغرافیایی استفاده می کند.
3_RFID.ino با استفاده از کتابخانه MFRC522 ، این کد تگ های RFID جدید را اسکن می کند. هر زمان یکی از آنها موجود باشد ، به عنوان RFID_lastUID ذخیره می شود.
4_DotMatrix.ino این کد برای راه اندازی اولیه و تنظیم نمایش ماتریس نقطه استفاده می شود. این شامل تعاریفی برای بارگذاری انیمیشن و غیره است …
راه اندازی آن
قبل از اینکه بتوانید این کد را در Arduino خود بارگذاری کنید ، باید چند کتابخانه را نصب کنید.
کتابخانه Arduino-LMIC توسط matthijskooijman (https://github.com/matthijskooijman/arduino-lmic)
کتابخانه MFRC522 برای خواننده RFID (https://github.com/miguelbalboa/rfid)
اکنون ، به main.ino بروید و DEVEUI ، APPEUI و APPKEY را به مواردی که آخرین مرحله را کپی کرده اید ، تغییر دهید.
مرحله 6: تنظیم Backend
پشتوانه این پروژه را می توان در GitHub من ، تحت RPI> Backend (https://github.com/BoussonKarel/CaptureTheBox) یافت.
چگونه کار می کند؟
- هر 10 ثانیه ، کد به دنبال یک بازی فعال است. اگر یکی از آنها پیدا شد ، در متغیری به نام huidigSpel (currentGame) ذخیره می شود.
- اگر حالت روی Serial تنظیم شده باشد ، از کابل بین Arduino و Pi استفاده می شود. Pi برای مقادیر LDR و GPS نظرسنجی می کند. آردوینو با فرمت JSON پاسخ می دهد. برچسب های RFID هر زمان که ارائه شوند ارسال می شوند. این حالت فقط برای اهداف توسعه استفاده می شد و دیگر واقعاً ضروری نیست.
- اگر حالت روی LoRa تنظیم شده باشد ، یک سرویس گیرنده MQTT ایجاد می شود که هر زمان که داده LoRa توسط TTN دریافت می شود ، یک تماس را فعال می کند. این شامل داده های LDR ، GPS و RFID است.
- frontend می تواند داده ها را با استفاده از نقاط پایانی API بازیابی کند. اکثر داده ها با استفاده از huidigSpel.id بازیابی می شوند. داده ها با استفاده از jsonify () در قالب JSON بازگردانده می شوند.
تنظیمات را تغییر دهید به secrets.py بروید و نام برنامه LoRa و کلید دسترسی خود را (قبلاً نوشتید) وارد کنید.
به config.py بروید و اطلاعات پایگاه داده خود را (مانند گذرواژه ، کاربر …) وارد کنید
سعی کنید app.py را اجرا کنید ، هنگامی که تأیید کردید که این برنامه کار می کند ، می توانیم از آن به عنوان یک سرویس استفاده کنیم. هنگامی که pi خود را بالا می آورید ، کد به طور خودکار در پس زمینه شروع می شود.
برای انجام این کار ctb_service.service را در /etc/systemd/system/ctb_service.service کپی کنید. sudo cp ctb_service.service /etc/systemd/system/ctb_service.service
اکنون آن را با استفاده از systemctl enable ctb_service.service فعال کنید
در صورت نیاز به ایجاد تغییراتی در کد ، می توانید به راحتی آن را با استفاده از stopct systemctl متوقف کنید (در راه اندازی مجدد مجدداً راه اندازی می شود) یا با غیرفعال کردن systemctl غیرفعال کنید (از راه اندازی خودکار جلوگیری کنید).
در صورت نیاز به مشورت سیاهههای مربوط (به دلیل خطاها) ، می توانید از journalctl -u ctb_service.service استفاده کنید.
اطلاعات بیشتر در مورد خدمات را می توانید در اینجا پیدا کنید:
مرحله 7: راه اندازی Frontend
طبق معمول ، frontend را می توان در GitHub من ، تحت RPI> Frontend (https://github.com/BoussonKarel/CaptureTheBox) یافت.
این را در پوشه /var /html رزبری پای خود بچسبانید.
این شامل تمام صفحات وب لازم برای بازی است.
همچنین دارای یک اسکریپت برای ارتباط با پس زمینه (هم در زمان واقعی و هم با استفاده از نقاط پایانی API) است.
مرحله 8: افزودن یک قاب
برای مورد ، من از یک جعبه ابزار قدیمی به همراه مواد/تکنیک های زیر استفاده کردم:
- چاپ سه بعدی
- فوم برای ثابت نگه داشتن باتری
- تخته های چوبی بازیافت شده
- چسب گرم
- پیچ و مهره
کاری که با پرونده خود انجام می دهید انتخاب شما است! من به شما آزادی هنری می دهم.
برای الهام بخشیدن ، تعدادی عکس از کیس (تمام شده) خود اضافه کرده ام.
توصیه شده:
ARUPI - یک واحد ضبط خودکار کم هزینه/واحد ضبط خودکار (ARU) برای بوم شناسان Soundscape: 8 مرحله (همراه با تصاویر)
ARUPI - یک واحد ضبط خودکار کم هزینه/واحد ضبط خودکار (ARU) برای بوم شناسان Soundscape: این دستورالعمل توسط آنتونی ترنر نوشته شده است. این پروژه با کمک زیادی از Shed در دانشکده محاسبات ، دانشگاه کنت توسعه یافت (آقای دانیل ناکس کمک بزرگی بود!). این به شما نشان می دهد که چگونه یک ضبط صوتی خودکار بسازید
جعبه جوک برای افراد بسیار جوان آکا راسپی-موسیقی-جعبه: 5 مرحله
جعبه جوک برای افراد بسیار جوان … آکا راسپی-موسیقی-جعبه: با الهام از دستورالعمل & quot؛ Raspberry-Pi-based-RFID-Music-Robot & quot؛ با توصیف یک دستگاه پخش موسیقی ROALDH برای کودک 3 ساله اش ، تصمیم گرفتم برای بچه های کوچکترم جعبه جوک بسازم. در اصل یک جعبه با 16 دکمه و Raspi 2 i
رفع مشکل ضبط بازیکن ضبط شده 65 ساله: 10 مرحله
رفع مشکل ضبط کننده ضعیف 65 ساله: دوست دارم کارهای قدیمی را مرتب کنم. من دوچرخه 1929 را که از مرگ برگردانده ام سوار می شوم. چمن زن من متعلق به دهه 20 است و به همان اندازه مرده بود. من یک گرامافون 1929 دارم که تقریباً مرده بودم. من تصمیم گرفتم که وقت آن رسیده است که بتوانم وینیل خود را روی دیگری پخش کنم
جعبه باربی: یک جعبه استتار/ جعبه مخصوص پخش کننده Mp3 شما: 4 مرحله (همراه با تصاویر)
جعبه باربی: یک جعبه استتار/ جعبه مخصوص پخش کننده Mp3 شما: این یک کیف محافظ محافظ برای پخش کننده mp3 شما است که جک هدفون را به یک چهارم اینچ نیز تبدیل می کند ، می تواند به عنوان یک جعبه تقویت کننده در تلنگر سوئیچ عمل کند و پخش کننده mp3 شما را به عنوان دستگاه پخش نوار اوایل دهه نود یا سرقت کم مشابه تبدیل می کند
دستگاه ضبط به کمک Teleprompter در جعبه حمل و نقل: 25 مرحله (همراه با تصاویر)
دستگاه ضبط به کمک Teleprompter در جعبه حمل و نقل: من این غرفه ویدیویی را به عنوان ابزاری تبلیغاتی برای رمان من با مجوز CC ، Boggle and Sneak ، ساختم که در آن ترول های مخترع با وسایل نقلیه هیئت منصفه به خانه ما سفر می کنند و ما را در معرض شوخی های عملی روب گلدبرگ قرار می دهند. بیشتر خوانش های نویسنده دارای ویژگی