Mundarija:

Avtomatik karta tarqatuvchisi: 7 qadam
Avtomatik karta tarqatuvchisi: 7 qadam

Video: Avtomatik karta tarqatuvchisi: 7 qadam

Video: Avtomatik karta tarqatuvchisi: 7 qadam
Video: все линии карта автоматик Subway и другие карты и музей 2024, Noyabr
Anonim
Avtomatik karta tarqatuvchisi
Avtomatik karta tarqatuvchisi

Men birinchi loyiham sifatida smart -karta distribyutorini tanladim, chunki men karta o'yini o'ynashni yaxshi ko'raman. Menga eng yoqmagan narsa - bu kartalar savdosi. Har bir o'yin uchun har bir kishi qancha karta olishini eslab qolishingiz kerak. Agar siz ko'plab karta o'yinlarini bilsangiz, bu chalkashlikka olib keladi. Mening loyiham, shuningdek, keksa odamlar va Parkinson bilan kasallangan odamlar kabi kartalarni tarqatishda qiynalayotgan odamlarga yordam beradi.

Ta'minotlar

  • 1 Raspberry Pi (men Raspberry Pi 4 ishlatardim)
  • SD -karta (16 Gb tavsiya etiladi)
  • Raspberry Pi uchun 1 ta non bo'lagi (T-qismi)
  • 2 ta non paneli
  • 1 ta non paneli, 5V va 3V3 uchun quvvat manbai moduli
  • 1 ta LCD displey
  • 1 Potansiyometr
  • 1 MPU6050 (akselerometr va giroskop)
  • 1 ta NPN tranzistorlari
  • 1 PCF8574N kirish -chiqish kengaytirgichi
  • 1 qadamli motor
  • Bosqichli motorni boshqarish uchun 1 ULN2003 sindiruvchi taxtasi
  • 1 HC-SR04 ultratovush sensori
  • 1 ta 5V doimiy kuchlanishli dvigatellar
  • 1 diod
  • 6 470 Ohmli rezistorlar
  • 4 ta 10K Ohmli rezistorlar
  • Hamma narsani ulash uchun elektr sim

Ishlab chiqarishda foydalidir:

  • Lehimlash temir
  • Lehim
  • Dremel yoki jig arra (yog'och va plastmassani kesadigan narsa)

Dasturiy ta'minot:

  • Macun
  • MySQL ish stoli
  • Win32 disk qidiruvchisi
  • Kod muharriri (men Visual Studio kodini tavsiya qilaman)
  • WinSCP
  • Raspbian tasvir

1 -qadam: Rasperry Pi -ni tayyorlash

Birinchidan, biz boshqa hech narsa qilishdan oldin Raspberry Pi ni tayyorlashimiz kerak. Chunki hamma narsa Pi bilan ishlaydi, shuning uchun bu karta distribyutorining eng muhim qismlaridan biridir.

O'rnatish:

Raspbian rasmini https://www.raspberrypi.org/downloads/raspberry-pi-os/ saytidan yuklab oling

  1. ZIP faylini yuklab oling
  2. ZIP faylini osongina topishingiz mumkin bo'lgan joydan chiqarib oling
  3. Win32 Disk Imager -ni oching va olingan rasmni tanlang
  4. Ochilgan menyuda SD -kartani tanlang va yozishni bosing
  5. Yozish jarayoni tugagandan so'ng, Win32 Disk Imager -ni yopishingiz mumkin

Endi biz Pi -ga ulanishdan oldin yana bir qancha ishlarni bajarishimiz kerak

  1. SD -kartadagi yuklash papkasiga o'ting
  2. Cmdline.txt faylini oching
  3. Satr oxiriga bo'sh joy bilan ajratilgan 'ip = 169.254.10.1' qo'shing
  4. Faylni saqlang va chiqing
  5. Xuddi shu katalogda ssh deb nomlangan faylni yarating va kengaytmani olib tashlang (bu birinchi yuklashda ssh -ni ishga tushiradi, shuning uchun biz Pi -ga ulanishimiz mumkin)
  6. SD -kartani xavfsiz chiqarib oling va uni Pi -ga joylashtiring

Endi biz Pi -ga ulanishimiz mumkin:

  1. Ethernet kabelini oling va uning bir uchini Pi -ga, ikkinchi uchini esa kompyuteringizga joylashtiring
  2. Putty -ni oching
  3. Xost nomi maydoniga 169.254.10.1 kiriting
  4. SSH tanlanganligini va port 22 ekanligini tekshiring
  5. Ochish -ni bosing
  6. Agar siz ogohlantirish olsangiz, uni davom ettirishingiz va e'tiborsiz qoldirishingiz mumkin
  7. Foydalanuvchi nomi pi va parol malina

Dasturiy ta'minotni sozlash va o'rnatish:

Quyidagi buyruq bilan raspi-config-ni oching:

sudo raspi-config

5 -variantni tanlang: Interfacing imkoniyatlari

SPI va I2C ni yoqish

Uchinchi variantda quyidagi narsalarni o'chiring: yuklash variantlari:

  • Bosh ekran
  • Ish stolida emas, ishga tushirish uchun cli ni tanlang

Wi -Fi sozlamalari:

Wifi veb -saytga osongina o'tish uchun foydalidir. Wi -Fi ma'lumotlari yaqin ekanligiga ishonch hosil qiling.

Wi -Fi -ni o'rnatish uchun bizga bir nechta narsalar kerak:

Ushbu buyruq yordamida Wi -Fi -ni qo'shing va ma'lumotlaringizga SSID va PASSWORD -ni o'zgartiring:

sudo wpa_passphrase "SSID" "PASSWORD" >> /etc/wpa_supplicant/wpa_supplicant.conf

Wi -Fi -ni qayta sozlash uchun ushbu buyruqni bajaring:

sudo wpa_cli

To'g'ri interfeysni tanlang:

wlan0 interfeysi

Interfeysni qayta sozlang:

qayta sozlamoq

Qayta sozlash ushbu buyruq bilan muvaffaqiyatli bajarilganligini tekshiring:

ip a

Agar siz wlan0 interfeysida IP-manzilni ko'rsangiz, hamma narsa sozlangan.

Operatsion tizimni yangilash

Operatsion tizimni quyidagi 2 buyruq bilan yangilang:

sudo apt yangilash

sudo apt to'liq yangilash

MariaDB -ni sozlash:

Apache veb -serverini o'rnatish:

sudo apt install apache2 -y

MariaDB serverini o'rnatish:

sudo apt install mariadb -server -y

Endi biz qayta ishga tushirishimiz kerak:

sudo qayta yuklash

MariaDB o'rnatilishini ta'minlash tavsiya etiladi. Buni quyidagi buyruq yordamida bajarish mumkin:

sudo mysql_secure_installation

Avval sizdan joriy parolni kiritish so'raladi, lekin standart o'rnatishda u yo'q, shuning uchun Enter tugmasini bosing.

Keyin sizdan root parolini o'rnatishni xohlaysizmi, deb so'raladi, y kiriting. Parolni eslab qolishingizga ishonch hosil qiling!

  • Anonim foydalanuvchilarni olib tashlash uchun y kiriting
  • Ildiz kirishni masofadan o'chirish uchun y kiriting
  • Test ma'lumotlar bazalarini olib tashlash va unga kirish uchun y kiriting
  • Imtiyozlarni qayta yuklash uchun y kiriting

Sizning MariaDB o'rnatilishi xavfsiz bo'lishi kerak!

Endi biz yangi foydalanuvchi yaratishimiz mumkin:

Ushbu buyruq bilan mysql qobig'ini kiriting:

sudo mysql

Foydalanuvchi nomi mysql va parol bilan (your_password) quyidagi buyruqlar bilan foydalanuvchi yarating:

"your_password" bilan aniqlangan mysql@localhost foydalanuvchi yaratish;

mysql@localhost ga *. * da barcha imtiyozlarni bering;

YUQARISH IMKONIYATLARI;

Ushbu buyruq bilan mysql qobig'idan chiqing:

Chiqish;

Python paketlari:

Agar siz Lite versiyasini tanlamasangiz, Python allaqachon o'rnatilgan bo'lishi kerak:

sudo apt install python3-pip

Bizga juda ko'p miqdordagi Python paketlari kerak, ularning barchasini quyidagi buyruq bilan o'rnatishingiz mumkin:

pip3 mysql-ulagichi-python shishasi-rozetkasi kolbasi-cors gevent gevent-websocket-ni o'rnating

Endi biz yana bir bor qayta ishga tushirishimiz kerak

sudo qayta yuklash

2 -qadam: Visual Studio kodini va MySQL Workbench -ni sozlash

MySQL Workbench yordamida Pi -ga ulanish:

MySQL Workbench -ni oching

Quyidagi ma'lumotlar bilan Pi -ga yangi ulanish o'rnating:

  • Ulanish nomi: Raspi
  • Ulanish usuli: SSH orqali standart TCP/IP
  • SSH Xost nomi: Pi ning IP-manzili

Siz IP-manzilni quyidagi buyruq yordamida olishingiz mumkin:

ip a

  • SSH foydalanuvchi nomi: pi
  • MySQL xost nomi: 127.0.0.1
  • MySQL server porti: 3306
  • Foydalanuvchi nomi: mysql

OK tugmasini bosing va pi foydalanuvchi parolini kiriting, keyin mysql foydalanuvchi parolini kiriting.

Visual Studio kodini sozlash:

Visual Studio kodini oching

Ushbu 2 kengaytmani o'rnating:

  • Masofadan boshqarish - SSH
  • Masofaviy - SSH: konfiguratsiya fayllarini tahrirlash

Visual Studio Code F1 -ni bosing va ssh -ni kiriting

Masofaviy SSH -ni tanlang: yangi SSH xostini qo'shing

Ssh pi@IP-manzilini to'ldiring

Keyingi bosqichda Enter ni bosing

Ulanish endi Pi bilan amalga oshiriladi. Siz Pi -ga F1 tugmachasini bosib va masofaviy hostga ulanishni tanlash orqali ulanishingiz mumkin.

Parolni kiriting, shunda Visual Studio Code Pi -ga kira oladi.

Yana bir narsa: Python kengaytmasini masofaviy mashinaga o'rnating, shunda siz kodni osongina ishga tushirishingiz va disk raskadrovka qilishingiz mumkin.

3 -qadam: chizish diagrammasi

Qo'rqinchli diagramma
Qo'rqinchli diagramma
Qo'rqinchli diagramma
Qo'rqinchli diagramma
Qo'rqinchli diagramma
Qo'rqinchli diagramma

Bu bosqichda men sxemani tushuntiraman.

Yuqoridagi sxemalar Fritzing yordamida tuzilgan.

DC vosita:

GPIO 18 ni kollektor poydevoriga, npn tranzistorining o'rta piniga ulang. Dvigatelning erini kollektorga tranzistordan va dvigatelning kuchini 5V ga ulang. Transistorning erini er chizig'iga ulang. Diyotni dvigatel ustidagi to'siqqa ulang, shunda u oqimning to'g'ridan -to'g'ri tranzistorga o'tishiga to'sqinlik qiladi.

Bosqichli motor:

Bosqichli motorni boshqaruv paneliga ulang. Boshqarish panelida 5V va erga ulanish uchun bir tomonli pim bor. Boshqa pinlar - nazorat pinlari. Bu pinlar dvigatel ichidagi magnitlarni boshqaradi, shunda u aylana oladi. Bu pinlarni Raspberry Pi -dagi GPIO 12, 16, 20 va 21 -ga ulang.

HC-SR04 Ultrasonik:

Bu sensor tovush yordamida 4,5 metrgacha bo'lgan masofani o'lchashi mumkin.

VCC pinini 5V ga, tetik pinini GPIO 25 ga, rezistori 470 Ohm bo'lgan GPIO 24 ga va 470 Ohmli rezistorli erni erga ulang.

MPU6050:

VCC pinini 3V3 ga, erdan erga ulang, Pi ustidagi scl ga va sda to sda Pi ga ulang. Ushbu sensor uchun men uni boshqarish uchun I2C dan foydalanaman. Bu haqda ko'proq ma'lumotni bu erda o'qishingiz mumkin. Bu erda asosiy tushuntirish: Pi - xo'jayin va MPU6050 - qul. Scl liniyasi orqali Pi vaqtni boshqaradi va sda chizig'i xo'jayindan qulga yoki quldan xo'jayinga ma'lumotlarni yuborish uchun ishlatiladi. Ma'lumot uzatishni faqat usta boshlashi mumkin.

Yorug'likka bog'liq qarshilik:

LDR -dan to'g'ri o'qish uchun men MCP3008 chipidan foydalanaman. Bu ldr o'qishlari barqaror va analogdan raqamli signallarga to'g'ri o'zgartirilishini ta'minlaydi.

3V3 ni ldrning bir tomoniga 10K Ohmli rezistor bilan ulang. Ldr va rezistor o'rtasida simni MCP3008 kanaliga 0 ulang. Keyin ldrning boshqa tomonini erga ulang.

LCD displey:

Siz LCD displeyni PCF8574siz ishlatishingiz mumkin, lekin GPIO pinlari cheklanganligi sababli, ba'zi GPIO pinlarini saqlash uchun PCF8574 dan foydalanaman. Shift registridan ham foydalanishingiz mumkin, lekin men PCF8574 ni afzal ko'raman. Siz PCF8574 ni SMbus protokoli bilan boshqarishingiz mumkin, lekin men uni boshqarish uchun o'z sinfimni yozdim. Potansiyometr kontrastni boshqaradi.

LCD displey pinlari:

  • VSS erga
  • VDD dan 5V gacha
  • V0 potentsiometrning o'zgaruvchan piniga
  • RS -dan GPIO 13gacha
  • R/V erga, chunki men faqat displeyga yozaman va o'qimayman
  • E -GPIO 19
  • PCF DB0 dan P0 gacha
  • DB1 dan P1gacha
  • DB2 dan P2 gacha
  • DB3 dan P3 gacha
  • DB4dan P4gacha
  • DB5 dan P5 gacha
  • DB6 dan P6 gacha
  • DB7dan P7gacha
  • LED+ 5V gacha
  • LED- erga

PCF 8574 pinlari:

  • A0 erga
  • A1 erga
  • A2 erga
  • Erdan erga
  • VCC dan 5V gacha
  • SDA - GPIO 27
  • 330 Ohm qarshilik bilan GPIO 22 ga SCL

Sizda LED+ va LED bo'lmasligi mumkin- qaysi displey turiga bog'liq. LED+ va LED- orqa yorug'lik uchun.

Potentsiometrning ijobiy tomonini 5V ga va erni erga ulang.

Yuk ko'tarish rezistorlaridan foydalanganingizga ishonch hosil qiling!

4 -qadam: Github -da kod

Github -da kerakli kodni topishingiz mumkin.

1 -jild loyihasi:

Bu papkada orqa qism uchun barcha kodlar mavjud. Klasses papkasida uskunani boshqarish uchun barcha sinflar mavjud.

Jild omborlari 2 ta faylni o'z ichiga oladi: Database.py va DataRepository.py. Database.py ma'lumotlar bazasiga ulanishni saqlaydi va so'rovlarni bajaradi. DataRepository.py sayt uchun zarur bo'lgan barcha so'rovlarni o'z ichiga oladi.

App.py - bu orqa qismning asosiy fayli. Bu fayl Pi yuklanganda avtomatik ravishda boshlanadi.

Config.py ma'lumotlar bazasiga ulanish uchun bir nechta sozlamalarni o'z ichiga oladi. Bu fayllarni o'z ma'lumotingiz bilan to'ldirganingizga ishonch hosil qiling.

Siz bu papkani uy katalogining istalgan joyiga qo'yishingiz mumkin.

Html papkasi:

Bu papkada sayt uchun barcha fayllar, frontend mavjud.

  • Jildda sayt joylashuvi uchun fayllar mavjud.
  • Shriftlar saytda ishlatiladigan shriftlarni o'z ichiga oladi.
  • Skript saytni dinamik qilish uchun barcha Javascript fayllarini o'z ichiga oladi

Bu papka/var/www/html papkasida bo'lishi kerak

Siz ushbu buyruq yordamida fayl yoki papkani nusxalashingiz mumkin:

sudo mv/path/to/current/directory/path/to/destination/directory

Saytga o'tish uchun brauzerda LCD displeyda ko'rsatilgan IP-manzilni kiriting.

5 -qadam: Ma'lumotlar bazasining normallashtirilgan tuzilishi

Ma'lumotlar bazasining normallashtirilgan tuzilishi
Ma'lumotlar bazasining normallashtirilgan tuzilishi

Ushbu bosqichda biz ma'lumotlar bazasini import qilamiz.

  1. MySQL Workbench yordamida Raspberry Pi -ga ulaning
  2. Server -> Ma'lumotlarni import qilish -ni bosing
  3. O'z-o'zidan faylni import qilishni tanlang
  4. Github-dan Database-export papkasida dump_project1.sql deb nomlangan sql fayli mavjud.
  5. Ushbu faylni ko'rib chiqing va importni boshlashni bosing

Bo'ldi shu. Agar Pi to'g'ri ma'lumotga ega bo'lsa, endi ma'lumotlar bazasiga kira oladi.

6 -qadam: Karta tarqatuvchisi uchun sumka

Karta tarqatuvchisi uchun sumka
Karta tarqatuvchisi uchun sumka
Karta tarqatuvchisi uchun sumka
Karta tarqatuvchisi uchun sumka
Karta tarqatuvchisi uchun sumka
Karta tarqatuvchisi uchun sumka

Bu bosqichda men ish uchun nimani ishlatganimni va hamma narsani qanday o'rnatganimni tushuntiraman.

Ish uchun men ikkita ABS qutisini ishlatardim:

- 265 x 185 x 95 mm

- 171 x 121 x 80 mm

Qutilarda men qilgan teshiklar

LCD displey uchun teshik, quvvat kabellari uchun 3 teshik, bittasi step motorining simlari uchun, doimiy dvigatel va ultratovush sensori.

Eng kichik qutida men komponentlardan simlar va kartalar o'tishi uchun teshik qildim. Men tepada eng katta teshik qildim, shunda siz qurilmaga o'yin kartalarini qo'yishingiz mumkin.

Men shahar motorini qavs va ikki tomonlama lenta bilan o'rnatdim. Men kartani yotqizish uchun yog'och taxta yasadim, g'ildirak uchun kartani otish uchun teshik bor edi.

Men ABS plastmassasini tanladim, chunki u engil, shuning uchun qadam dvigateli uni oson aylantira oladi. Yog'och chindan ham og'ir bo'lishi mumkin va step motorida bu bilan bog'liq muammolar bo'lishi mumkin. Teshiklarni kesish uchun men metall va Dremel uchun mo'ljallangan matkaplar bilan matkap ishlatardim. Kattaroq teshiklarni kesish juda ko'p mehnat talab qildi va jig arra yaxshiroq bo'ladi.

7 -qadam: Xizmat sifatida dastur

Pi yuklanganidan keyin kodni ishga tushirish haqiqatan ham foydalidir. Buning uchun biz xizmat ko'rsatamiz.

Quyidagi buyruq bilan smartcard.service nomli yangi fayl yarating:

sudo nano /etc/systemd/system/smartcard.service

Bu faylga kirishi kerak:

[Birlik]

Tavsif = Smart -kartaning orqa qismi = = network.target [Service] ExecStart =/usr/bin/python3 -u app.py WorkingDirectory =/home/pi/project1 StandardOutput = meros StandardError = meros qilib qayta boshlash = har doim User = pi [Install] WantedBy = ko'p foydalanuvchilarli maqsad WorkingDirectory - bu dastur joylashgan papkaga yo'l

Endi siz o'zingizning shaxsiy Smart -kartangizga egasiz!

Tavsiya: