Mundarija:
- Ta'minotlar
- 1 -qadam: Rasperry Pi -ni tayyorlash
- 2 -qadam: Visual Studio kodini va MySQL Workbench -ni sozlash
- 3 -qadam: chizish diagrammasi
- 4 -qadam: Github -da kod
- 5 -qadam: Ma'lumotlar bazasining normallashtirilgan tuzilishi
- 6 -qadam: Karta tarqatuvchisi uchun sumka
- 7 -qadam: Xizmat sifatida dastur
Video: Avtomatik karta tarqatuvchisi: 7 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:24
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
- ZIP faylini yuklab oling
- ZIP faylini osongina topishingiz mumkin bo'lgan joydan chiqarib oling
- Win32 Disk Imager -ni oching va olingan rasmni tanlang
- Ochilgan menyuda SD -kartani tanlang va yozishni bosing
- Yozish jarayoni tugagandan so'ng, Win32 Disk Imager -ni yopishingiz mumkin
Endi biz Pi -ga ulanishdan oldin yana bir qancha ishlarni bajarishimiz kerak
- SD -kartadagi yuklash papkasiga o'ting
- Cmdline.txt faylini oching
- Satr oxiriga bo'sh joy bilan ajratilgan 'ip = 169.254.10.1' qo'shing
- Faylni saqlang va chiqing
- 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)
- SD -kartani xavfsiz chiqarib oling va uni Pi -ga joylashtiring
Endi biz Pi -ga ulanishimiz mumkin:
- Ethernet kabelini oling va uning bir uchini Pi -ga, ikkinchi uchini esa kompyuteringizga joylashtiring
- Putty -ni oching
- Xost nomi maydoniga 169.254.10.1 kiriting
- SSH tanlanganligini va port 22 ekanligini tekshiring
- Ochish -ni bosing
- Agar siz ogohlantirish olsangiz, uni davom ettirishingiz va e'tiborsiz qoldirishingiz mumkin
- 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
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
Ushbu bosqichda biz ma'lumotlar bazasini import qilamiz.
- MySQL Workbench yordamida Raspberry Pi -ga ulaning
- Server -> Ma'lumotlarni import qilish -ni bosing
- O'z-o'zidan faylni import qilishni tanlang
- Github-dan Database-export papkasida dump_project1.sql deb nomlangan sql fayli mavjud.
- 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
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:
SIM900A 2G moduli + gologramma SIM karta = "iflos arzon" toifasidagi yutuq kombinatsiyasi ?: 6 qadam
SIM900A 2G moduli + Gologram SIM -karta = "Arzon kirlar" toifasidagi yutuq kombinatsiyasi ?: O'n yillikdagi shov -shuvli so'z, IOT, ba'zida o'zlarini modaga chidamli deb hisoblaydigan odamlarning ongiga ham kiradi, men bilan birga. Internet va men ilgari eshitmagan kompaniyani ko'rdim (gologramma) SIM -kartalarni tarqatib yubordi
Arduino niqob tarqatuvchisi: 11 qadam
Arduino niqobli dispenser: Birinchidan, bilaman, bu biroz g'alati ko'rinadi, lekin funksionallik uchun u oq USS Enterprise-ga o'xshab ketishi kerak edi, ikkinchidan, bu Costco o'lchamli foydalanish uchun emas, balki kichik va o'rta ilovalar uchun mo'ljallangan. niqoblaringizni sterilizatsiya qiladi
Suv omborli WiFi avtomatik o'simlik oziqlantiruvchi - yopiq/ochiq havoda etishtirishni sozlash - suv o'simliklari avtomatik ravishda masofadan turib kuzatiladi: 21 qadam
Suv omborli WiFi avtomatik o'simliklarni oziqlantiruvchi - yopiq/ochiq havoda etishtirishni sozlash - suv o'simliklari avtomatik ravishda masofadan turib kuzatiladi: bu qo'llanmada biz o'simliklarni avtomatik ravishda sug'oradigan va Adosia platformasi yordamida masofadan turib kuzatiladigan maxsus yopiq/ochiq o'simliklarni oziqlantirish tizimini qanday o'rnatishni ko'rsatamiz
Savdo karta mashinasi uchun karta ajratuvchi (yangilanish 2019-01-10): 12 qadam (rasmlar bilan)
Savdo kartalari uchun karta saralash mashinasi (yangilanish 2019-01-10): savdo kartasi uchun karta tartiblagichi O'zgarish jurnalini oxirgi bosqichda topish mumkin. Orqa fon Men o'z loyihamning motivatsiyasini Kartani oziqlantiruvchi maqolasida allaqachon tushuntirganman. Qisqasi, bolalarim bilan men katta miqdordagi savdo kartasini yig'dik
Kompyuter Shell soda tarqatuvchisi: 8 qadam
Kompyuter Shell sodali suv dispenseri: siz hech qachon sodali suv tarqatgichga ega bo'lishni xohlagansiz, lekin ko'p pul sarflashni xohlamaysizmi? Mana sizning javobingiz. ishni bajarish uchun kompyuterdan eski minoradan foydalaning