Кутучаны басып алуу: 8 кадам
Кутучаны басып алуу: 8 кадам
Anonim
Кутуну кармоо
Кутуну кармоо
Кутуну кармоо
Кутуну кармоо

Capture The Box - бул сиздин командаңыздагы досторуңуз менен ойной турган командбилдинг оюну.

Максат - бул кутуну басып алуу жана аны мүмкүн болушунча көпкө чейин сиздин колуңузда кармоо, башка оюнчулар барып подъездден же алдыңкы бакчаңыздан алып кетүүгө аракет кылышат.

Бул оюн кутучаны табуу үчүн GPSти жана оюнчуларды аныктоо үчүн RFID тэгдерин колдонот. Кошумча LDR чекит матрицасынын дисплейинин интенсивдүүлүгүн аймактагы жарыктын пайызына дал келтирүү үчүн кошсо болот.

Жабдуулар

Микроконтроллерлер жана компьютерлер

  • Raspberry Pi
  • Arduino (Mega) Мен кадимки Unoдон Arduino Mega тандадым, анткени анда дагы көп казыктар бар. Бул биз БУУну колдонууда бизге санарип казыктарыбызды калтыруучу Dragino LoRa калканчын колдонуп жаткандыктан керек. КЕҢЕШ: Чыныгы бирин колдонуу эң жакшы, анткени кытай клондору дайыма күтүлгөндөй иштебейт.

Сенсорлор жана модулдар

  • 4 MAX7219 чекит матрицасы модулу DOUTту DINге, CSден CSге, CLKти CLKке туташтырыңыз…
  • Жарыкка көз каранды резистор (10K) + Резистор (10K)
  • NEO-7M (же окшош) GPS модулу Мен Velleman тартып VMA430 колдонуп жатам
  • RC522 RFID модулу+ кээ бир RFID төш белгилери/карталары

LoRa (зымсыз технология) колдонуу үчүн

Драгино Лора Шилд

Кошумча сенсорлор жана модулдар

LCD дисплей Raspberry Pi IP дарегин көрсөтүү үчүн

Тестти орнотуу үчүн

Нан жана Dupont Cables (Эркек-Эркек

Кошумча (корпус)

  • Кандооч
  • Эски инструмент корпусу
  • 3D басып чыгаруу үчүн материалдар
  • Кээ бир ичке жыгач тактайлар
  • Кээ бир болт жана гайкалар (бул Arduino тешиктерине батат). Менин бурамаларымдын диаметри 3ммге жакын.

Болжолдуу бааны төмөндө камтылган МБдон (Материалдар Биллинен) табууга болот.

1 -кадам: Raspberry Pi орнотуу

Raspberry Pi - бул Долбоордун жүрөгү.

Бул frontend, backend жана маалымат базасын иштетет. Ал ошондой эле арткы жана Arduino ортосундагы байланыш үчүн жооптуу болот.

Raspberry Pi колдонуу үчүн биз төмөнкүлөрдү кылышыбыз керек:

1 -бөлүк: Raspbianди Raspberry Piге орнотуңуз

Муну кантип кылуу боюнча үйрөткүчтү бул жерден тапса болот:

2 -бөлүк: Raspbianди Raspberry Piге орнотуңуз Үй WiFiңызды орнотуу.

Бул wpa_passphrase "YourNetwork" "YourSSID" аркылуу жасалышы мүмкүн >>etet/wpa_supplicant/wpa_supplicant.conf

Pi'ни өчүрүп күйгүзүңүз жана ifconfig терип жатканда IP дарегин көрүшүңүз керек

3 -бөлүк: Веб -серверди жана маалымат базасын орнотуңуз

Пиңизди иштеткенден кийин, сырсөзүңүздү өзгөртүү эң жакшы. Бул 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 -бөлүк: керектүү Python китепканаларын орнотуу

Арткы бет үчүн бизге кээ бир китепканалар керек болот. Буларды pip3 буйругу менен орнотсо болот.

pip3 mysql-connector-python орнотуу

pip3 колбасы-сокетин орнотуу

pip3 колба-корлорду орнотуу

pip3 geventpip3 орнотуу gevent-websocket

pip3 ttn орнотуу

2 -кадам: Электрониканы жайгаштыруу

Электрониканы жайгаштыруу
Электрониканы жайгаштыруу
Электрониканы жайгаштыруу
Электрониканы жайгаштыруу

Бул Долбоордун иштеши үчүн биз бардык электрониканы туташтырышыбыз керек.

LoRa калканы оңой эле ордуна койсо болот. Жөн гана төөнөгүчтөрдү Arduinoдогу казыктар менен тегиздеңиз.

Башка байланыштар менин Fritzing схемасында сүрөттөлгөн. Кайсынысын бул жерден жүктөп алса болот:

3 -кадам: Маалыматтар базасын долбоорлоо

Маалыматтар базасын долбоорлоо
Маалыматтар базасын долбоорлоо

Бардык оюндарды жана сенсорлорду сактоо үчүн, мен бир нече таблицаларды түздүм:

жолугушуу жана сенсор Сенсорлордун таблицаларында табылган сенсорлордон алынган өлчөөлөрдө сенсорго шилтеме, өлчөөнүн мааниси (мис. coordinates: 51.123456; 3.123456) жана кошумча оюн идентификатору (эгер оюн өлчөө учурунда активдүү болсо).

Оюнчунун аттары жана UID RFID төш белгиси. Кошумча талаа модератору кошулду, бул адам оюнду өзгөртө алат (мисалы, аны мөөнөтүнөн мурда токтотуу).

Оюн маалыматы (башталышы жана аяктоо убактысы).

spel_has_speler spel менен spelerдин ортосундагы байланыш. Бул жерде оюнчулар оюнга дайындалат.

Бул таблицада балл сакталат. Анда оюндун идентификатору, оюнчунун идентификатору, ал кутуну уурдаган убактысы жана жоготкон убактысы (башка бирөө уурдап кеткенде же оюн бүткөндө) камтылган. Аяктоо убактысынан баштоо убактысын алып салуу менен, сиз ал басып алуудан алган упайыңызды эсептей аласыз.

Маалыматтар базасын экспорттоону менин GitHub -дан тапса болот (https://github.com/BoussonKarel/CaptureTheBox)

SQLди PHPMyAdmin / MySQL Workbenchте ачыңыз жана аны иштетиңиз. Маалымат базасы эми импорттолушу керек.

4 -кадам: TTNде каттоо эсебин орнотуу

1 -кадам: TTNде каттоо эсебине катталып, тиркеме түзүңүз

TheThingsNetwork эсебине катталыңыз, андан кийин Console> Тиркемени кошуу бөлүмүнө өтүңүз.

Колдонмоңуздун атын тандап, Колдонмо кошууну чыкылдатыңыз.

2 -кадам: түзмөктү каттоо

Колдонмоңузду түзгөндөн кийин, түзмөктү каттоодон өтүңүз.

Түзмөктүн идентификаторун тандаңыз, бул сиз каалагандай болушу мүмкүн (эгер ал жылан болсо) жана Катталууну чыкылдатыңыз.

Түзмөк EUI астындагы Generate сөлөкөтүн чыкылдатыңыз, андыктан TTN сиз үчүн бирөөнү түзөт.

3 -кадам: Ишеним грамотаңызды жазыңыз

Эми түзмөгүңүзгө барып, Түзмөк EUI, App EUI жана App ачкычынын жанындагы Code сөлөкөтүн басыңыз. Эми ал байттардын массиви катары көрүнүшү керек.

Көчүрүүдөн мурун, Switch баскычын чыкылдатып, Dev EUI жана App EUI LSB FIRST экенине ишениңиз.

Колдонмо ачкычыңыз MSB FIRST бойдон калуусу керек (муну өзгөртпөңүз).

Кийинки кадамда сизге бул ачкычтар керек болот: Arduino орнотуу.

4 -кадам: Колдонмо Acces ачкычын жазуу

Эми бизге Raspberry Piде MQTTти орнотуу үчүн дагы бир ачкыч керек болот.

Колдонмоңузга барып, Acces Keys үчүн ылдый жылдырыңыз.

Бул сизге Backend кадамында керек болот.

5 -кадам: Arduino орнотуу

Arduino кодун Aritino астындагы GitHub сайтыман да тапса болот (https://github.com/BoussonKarel/CaptureTheBox)

Бул код бир нече өтмөккө бөлүнгөн, аны ирээтке келтирүү үчүн.

main.ino Негизги код: пин билдирүүлөр, орнотуу () жана цикл ()

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го жүктөөдөн мурун, бир нече китепкананы орнотушуңуз керек.

Matthijskooijman тарабынан Arduino-LMIC китепканасы (https://github.com/matthijskooijman/arduino-lmic)

RFID окурманы үчүн MFRC522 китепканасы (https://github.com/miguelbalboa/rfid)

Эми main.ino баракчасына өтүп, DEVEUI, APPEUI жана APPKEYди акыркы кадамды көчүргөндөргө алмаштырыңыз.

6 -кадам: Backend орнотуу

Бул долбоордун арткы бөлүгүн менин GitHub сайтымда, RPI> Backend (https://github.com/BoussonKarel/CaptureTheBox) астында тапса болот.

Бул кантип иштейт?

  1. Ар бир 10 секундда, код активдүү оюн издейт. Эгерде бири табылса, ал huidigSpel (currentGame) деп аталган өзгөрмөдө сакталат.
  2. Эгерде режим Сериалга коюлса, Arduino менен Pi. The Pi ортосунда LDR жана GPS баалуулуктары үчүн кабель колдонулат. Arduino JSON форматында жооп берет. RFID тегдери алар сунушталган сайын жөнөтүлөт.
  3. Эгерде режим LoRa деп коюлса, LoTa маалыматы TTN тарабынан кабыл алынган сайын кайра чалуучу MQTT кардары түзүлөт. Бул LDR, GPS жана RFID маалыматтарды камтыйт.
  4. Frontend API чекиттин жардамы менен маалыматтарды ала алат. Берилиштердин көбү huidigSpel.id аркылуу алынат. Data JSON форматында jsonify () аркылуу кайтарылат

Настройкаларды өзгөртүү Secret.py баракчасына өтүңүз жана LoRa тиркемесиңиздин атын жана Acces Key'иңизди толтуруңуз (сиз мурда жазгансыз).

Config.py баракчасына өтүп, маалымат базаңыздын грамоталарын толтуруңуз (мисалы, сырсөз, колдонуучу …)

Аны кызмат катары орнотуу app.py'ди иштетүүгө аракет кылыңыз, бул иштээрин ырастагандан кийин, биз аны кызмат катары колдоно алабыз. Бул сиздин пиңизди жүктөөдө кодду фондо автоматтык түрдө баштайт.

Бул үчүн cetb_service.service /etc/systemd/system/ctb_service.service көчүрүү. sudo cp ctb_service.service /etc/systemd/system/ctb_service.service

Эми аны systemctl ctb_service.service аркылуу иштетүү

Эгерде сиз кодго бир аз өзгөртүүлөрдү киргизишиңиз керек болсо, анда аны systemctl stop (бул кайра жүктөөдө кайра башталат) аркылуу оңой токтото аласыз же systemctl өчүрүү аркылуу өчүрүү (автоматтык түрдө баштоону токтотуу).

Эгерде сиз журналдарга кайрылууңуз керек болсо (каталардан улам), сиз journalctl -u ctb_service.service колдоно аласыз.

Кызматтар жөнүндө көбүрөөк маалыматты бул жерден тапса болот:

7 -кадам: Frontend орнотуу

Адаттагыдай эле, frontend менин GitHubумда, RPI> Frontendден табууга болот (https://github.com/BoussonKarel/CaptureTheBox)

Муну Raspberry Piңиздин /var /html папкасына чаптаңыз.

Бул оюнга керектүү бардык веб -баракчаларды камтыйт.

Ал ошондой эле backend менен байланышуу үчүн сценарийди камтыйт (реалдуу убакытта да, API акыркы чекиттерин колдонуу менен).

8 -кадам: Корпусту кошуу

Корпус кошуу
Корпус кошуу
Корпус кошуу
Корпус кошуу

Иш үчүн, мен төмөнкү материалдар/техникалар менен бирге эски шайман корпусун колдондум:

  • 3D басып чыгаруу
  • Батарейканы ордунда кармоо үчүн көбүк
  • Кайра иштетилген жыгач тактайлар
  • Ысык клей
  • Бурамалар жана гайкалар

Сиздин ишиңиз менен эмне кылсаңыз, өзүңүздүн тандооңуз! Мен сага көркөм эркиндикти берейин деп жатам.

Илхам алуу үчүн, мен өзүмдүн (даяр) ишимдин бир нече сүрөтүн коштум.

Сунушталууда: