Mundarija:
- Ta'minotlar
- 1 -qadam: O'chirish va Pi -ni quvvatlantirish
- 2 -qadam: MPU6050
- 3 -qadam: Adafruit Ultimate Breakout GPS
- 4 -qadam: 16x2 o'lchamli LCD displey
- 5 -qadam: Servo, Led, tugma va kalit
- 6 -qadam: To'liq davr
- 7 -qadam: Kod
- 8 -qadam: ma'lumotlar bazasi
- 9 -qadam: ish
Video: Kichik do'konlar uchun trek va iz: 9 qadam (rasmlar bilan)
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:24
Bu elektron velosipedlarga yoki elektron skuterlarga o'rnatilishi kerak bo'lgan kichik do'konlar uchun ishlab chiqarilgan tizim.
Track and Trace nimani anglatadi?
Yo'l va iz - bu tashuvchilar yoki kurerlik kompaniyalari tomonidan yuk tashish paytida posilkalar yoki buyumlarning harakatini yozib olish uchun ishlatiladigan tizim. Qayta ishlashning har bir joyida tovarlar aniqlanadi va ma'lumotlar markaziy ishlov berish tizimiga o'tkaziladi. Bu ma'lumotlar keyinchalik yuklarni jo'natuvchilarga tovarlarning joylashuvi holati/yangilanishini berish uchun ishlatiladi.
Biz yaratadigan tizim, shuningdek, olingan marshrutni va olingan zarbalar va zarbalar sonini ko'rsatadi, shuningdek, malina pi, python va mysql haqida asosiy ma'lumotga ega bo'lishni nazarda tutadi.
Eslatma: bu maktab loyihasi uchun qilingan, shuning uchun vaqt cheklanganligi sababli uni takomillashtirish uchun joy ko'p
Ta'minotlar
-Raspberry Pi 4 modeli B
-Raspberry PI T-poshnali
-4x3, 7V Li-ionli batareyalar
-2 marta ikkita batareya ushlagichi
-DC Buck 5v pastga tushirish konvertori
-2x katta apelsin
-yoqish/o'chirish/yoqish tugmasi
-tugma
-adafruit ultimate gps v3
-mpu 6050
-16x2 lcd displey
-servo motor
1 -qadam: O'chirish va Pi -ni quvvatlantirish
Batareyani ishlatib, kontaktlarning zanglashiga olib keladigan bo'lsak, buni qanday qilish kerakligi haqida sizda bir nechta variant bor.
Siz quvvat bankidan foydalanishingiz va pi-ni USB orqali quvvatlantirishingiz mumkin, ehtimol siz qurilmani USB portli elektron velosipedda yoki elektron skuterda o'rnatayotgandirsiz, ehtimol sizda 5V telefon batareyasi ishlatilishini kutib yotibdi yoki siz 2 dan foydalanishingiz mumkin. 3.7V batareya to'plamlari, rasmlarda ko'rsatilgandek, pastga tushadigan konvertor bilan parallel ravishda
Hamma narsa yaxshi, chunki u doimiy 5Vni ta'minlay oladi va umr bo'yi siz baxtli bo'lasiz.
2 -qadam: MPU6050
Kirish MPU6050 sensorli modul-bu 6 o'qli Harakatni kuzatish moslamasi.
- U 3 o'qli giroskop, 3 o'qli akselerometr, raqamli harakat protsessori va harorat sensori bilan jihozlangan.
- I2C aloqasi yordamida ma'lum registrlar manzillaridagi qiymatlarni o'qish orqali har xil parametrlarni topish mumkin. X, Y va Z o'qlari bo'yicha giroskop va akselerometr o'qilishi 2 ning qo'shimcha shaklida mavjud.
- Gyroskop ko'rsatkichlari sekundiga daraja (dps) birligida; Akselerometr ko'rsatkichlari g birlikda.
I2C yoqish
Raspberry Pi bilan MPU6050 -ni ishlatganda, Raspberry Pi -dagi I2C protokoli yoqilganligiga ishonch hosil qilishimiz kerak, buning uchun pi terminalini macun yoki boshqa dasturiy ta'minot orqali oching va quyidagilarni bajaring:
- "sudo raspi-config" ni kiriting
- Interfacing Configurations -ni tanlang
- Interfacing -da "I2C" -ni tanlang.
- I2C konfiguratsiyasini yoqish
- Qayta yuklashni so'raganda, Ha -ni tanlang.
Endi biz i2c asboblarini o'rnatish orqali Raspberry Pi kartamizga ulangan har qanday I2C qurilmasini sinab ko'rishimiz mumkin. Apt paket menejeri yordamida i2c vositalarini olishimiz mumkin. Raspberry Pi terminalida quyidagi buyruqni ishlating.
"sudo apt-get install -y i2c-tools"
Endi har qanday I2C asosidagi qurilmani foydalanuvchi rejimidagi portga ulang va quyidagi buyruq yordamida portni skanerlang, "sudo i2cdetect -y 1"
Keyin u qurilma manzili bilan javob beradi.
Agar manzil qaytarilmasa, MPU6050 to'g'ri ulanganligiga ishonch hosil qiling va qaytadan urinib ko'ring
Ishga tushirish
Endi biz i2c yoqilganiga va pi MPU6050 ga etib borishiga ishonchimiz komil bo'lsa, biz "sudo pip3 install adafruit-circuitpython-mpu6050" buyrug'i yordamida kutubxona o'rnatamiz.
Agar biz python test faylini tayyorlasak va quyidagi kodni ishlatsak, uning ishlayotganini ko'rishimiz mumkin:
import vaqti
import taxtasi
busi import qilish
oimport adafruit_mpu6050
i2c = busio. I2C (board. SCL, board. SDA)
mpu = adafruit_mpu6050. MPU6050 (i2c)
rost bo'lsa:
chop etish ("Tezlashtirish: X: %. 2f, Y: %.2f, Z: %.2f m/s^2" %(mpu. tezlashuv))
chop etish ("Gyro X: %. 2f, Y: %.2f, Z: %.2f daraja/s" %(mpu.gyro))
bosib chiqarish ("Harorat: %.2f C" % mpu.temperaturasi)
chop etish ("")
uyqu (1)
biz hozir X/Y/Z o'qida tezlashishni xohlasak, quyidagilarni ishlatishimiz mumkin:
accelX = mpu.acceleration [0] accelY = mpu.acceleration [1] accelZ = mpu.acceleration [2]
Buni oddiy if ifodasi bilan doimiy tsiklda birlashtirib, safarda zarba miqdorini hisoblashimiz mumkin
3 -qadam: Adafruit Ultimate Breakout GPS
Kirish
Ajralish MTK3339 mikrosxemasi, 66 kanalda 22 ta sun'iy yo'ldoshni kuzatib bora oladigan, yuqori sezuvchanlik bilan qabul qiluvchi (-165 dB kuzatish!) Va o'rnatilgan antennaga ega, yuqori sifatli GPS moduli atrofida qurilgan.. Bu yuqori tezlik, yuqori sezuvchanlik bilan yozib olish yoki kuzatish uchun sekundiga 10 tagacha manzilni yangilashi mumkin. Quvvat iste'moli juda past, navigatsiya paytida atigi 20 mA.
Kengash quyidagilar bilan birga keladi: 3,3V kuchlanishli o'ta past kuchlanishli regulyator, shuning uchun siz uni 3,3-5VDC, 5V darajali xavfsiz kirishlar bilan quvvatlantirishingiz mumkin, LED taxminan 1 Gts da yonadi, u yo'ldoshlarni qidiradi va har 15 soniyada bir marta yonib-o'chadi. kuchini saqlab qolgani aniqlandi.
GPSni arduino bilan tekshirish
Agar sizda arduino -ga kirish imkoni bo'lsa, u bilan modulni sinab ko'rish yaxshi bo'ladi.
VIN -ni +5V -ga ulang GND -ni Ground -ga ulang GPS -RX -ni (ma'lumotlarni GPS -ga) raqamli -0 -ga ulang
Bo'sh arduino kodini ishga tushiring va ketma -ket monitorni 9600 bodda oching, agar GPS ma'lumotlarini olsangiz, gps modulingiz ishlaydi.
Ishlash
"Sudo pip3 install adafruit-circuitpython-gps" buyrug'i yordamida adafruit gps kutubxonasini o'rnatishni boshlang.
Endi biz quyidagi python kodidan foydalanib, uning ishlashini tekshirishimiz mumkin:
import timeimport taxtasi import busioimport adafruit_gpsimport serial uart = serial. Serial ("/dev/ttyS0", baudrate = 9600, timeout = 10)
gps = adafruit_gps. GPS (uart, debug = False) gps.send_command (b'PMTK314, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ') gps.send_command (b'PMTK220, 1000')
rost bo'lsa:
gps.has_fix emas, balki gps.update ():
chop etish (gps.nmea_sentence) chop etish ('Tuzatish kutilmoqda …') gps.update () time.sleep (1) davom
chop etish ('=' * 40) # Ajratuvchi chiziqni chop etish (gps.longitude)) chop etish ("Sifatni tuzatish: {}". format (gps.fix_quality))
# Kenglik, uzunlik va vaqt tamg'asidan tashqaridagi ba'zi atributlar ixtiyoriy# va ular bo'lmasligi mumkin. Ishlatishdan oldin ular yo'qligini tekshiring! Agar gps.satellites None bo'lmasa:
chop etish ("# sun'iy yo'ldosh: {}". format (gps.satellites))
agar gps.altitude_m yo'q bo'lsa:
chop etish ("Balandlik: {} metr". format (gps.altitude_m))
agar gps.speed_knots None bo'lmasa:
chop etish ("Tezlik: {} tugunlar". format (gps.speed_knots))
agar gps.track_angle_deg hech kim bo'lmasa:
chop etish ("Yo'l burchagi: {} daraja". format (gps.track_angle_deg))
agar gps.horizontal_dilution None bo'lmasa:
chop etish ("Gorizontal suyultirish: {}". format (gps.horizontal_dilution))
agar gps.height_geoid None bo'lmasa:
chop etish ("Balandlik geo identifikatori: {} metr". format (gps.height_geoid))
uyqu (1)
4 -qadam: 16x2 o'lchamli LCD displey
Kirish
LCD modullari ko'pgina ko'milgan loyihalarda keng qo'llaniladi, sababi uning arzonligi, mavjudligi va dasturchi uchun qulayligi. Ko'pchiligimiz kundalik hayotimizda bu displeylarni PCO yoki kalkulyatorda uchratgan bo'lardik. 16 × 2 LCD shunday nomlangan, chunki; u 16 ustun va 2 qatordan iborat. Ko'p kombinatsiyalar mavjud, masalan, 8 × 1, 8 × 2, 10 × 2, 16 × 1 va boshqalar, lekin eng ko'p ishlatiladigan - 16 × 2 LCD. Shunday qilib, u (16 × 2 = 32) 32 ta belgidan iborat bo'ladi va har bir belgi 5 × 8 pikselli nuqtalardan iborat bo'ladi.
Smbus o'rnatish
Tizim menejmenti avtobusi (SMBus) I2C avtobusining ko'p yoki kamroq hosilasidir. Standart Intel tomonidan ishlab chiqilgan va hozirda SBS Forumida saqlanib kelinmoqda. SMBus -ning asosiy ilovasi - kompyuter anakartlarida va o'rnatilgan tizimlarda muhim parametrlarni kuzatish. Masalan, SMBus interfeysi bilan ta'minlangan kuchlanish o'lchagichlari, harorat monitorlari va fan monitorlari/nazorat IClari juda ko'p.
Biz foydalanadigan kutubxona smbusni ham o'rnatishni talab qiladi. Smbusni rpi-ga o'rnatish uchun "sudo apt install python3-smbus" buyrug'idan foydalaning.
Ishga tushirish
Birinchidan, "sudo pip3 install RPLCD" buyrug'i yordamida RPLCD kutubxonasini o'rnating.
Endi biz quyidagi kod yordamida IP -ni ko'rsatish orqali LCD -ni sinab ko'ramiz:
RPLCD.i2c dan CharLCDimport soketini import qilish
def get_ip_address ():
ip_address = 's = socket.socket (socket. AF_INET, socket. SOCK_DGRAM) s.connect (("8.8.8.8", 80)) ip_address = s.getsockname () [0] s.close () ip_adressni qaytarish
lcd = CharLCD ('PCF8574', 0x27)
lcd.write_string ('IP -manzil: / r / n'+str (get_ip_address ()))
5 -qadam: Servo, Led, tugma va kalit
Kirish
Servo dvigatel - bu aylanadigan harakatlantiruvchi vosita yoki dvigatel bo'lib, u burchak holatini, tezlashuvini va tezligini, oddiy dvigatelda bo'lmagan imkoniyatlarni aniq boshqarishga imkon beradi. U oddiy dvigateldan foydalanadi va uni sensorlar bilan bog'laydi. Tekshirish moslamasi servo dvigatelning eng murakkab qismi hisoblanadi, chunki u shu maqsadda maxsus ishlab chiqilgan.
LED yoritgichli diod uchun qisqa. Elektr toki o'tganda yorug'lik chiqaradigan elektron yarimo'tkazgichli qurilma. Ular akkor lampalarga qaraganda ancha samarali va kamdan -kam hollarda yonib ketadi. LEDlar tekis ekranli video displeylar kabi ko'plab ilovalarda va tobora umumiy yorug'lik manbalari sifatida ishlatiladi.
Tugma yoki oddiy tugma-bu mashina yoki jarayonning ba'zi jihatlarini boshqarishning oddiy o'tish mexanizmi. Tugmalar odatda qattiq materialdan, odatda plastik yoki metalldan tayyorlanadi.
Yoqish/o'chirish/yoqish tugmasi 3 pozitsiyaga ega, bu erda o'rtasi o'chirilgan holat, bu turlar asosan oldinga, o'chirilgan va teskari holatga ega oddiy dvigatelni boshqarish uchun ishlatiladi.
Ishlash: servo
Servo PWM signalidan foydalanadi, chunki biz uchun GPIO bu funktsiyani o'z ichiga oladi, shuning uchun biz uni boshqarish uchun quyidagi koddan foydalanishimiz mumkin: GPIOimport vaqti sifatida RPi. GPIO -ni import qilish.
servo_pin = 18duty_cycle = 7.5
GPIO.setmode (GPIO. BCM)
GPIO. sozlash (servo_pin, GPIO. OUT)
pwm_servo = GPIO. PWM (servo_pin, 50) pwm_servo.start (duty_cycle)
rost bo'lsa:
duty_cycle = float (kiritish ("Ish davrini kiriting (Chap = 5 dan o'ngga = 10):")) pwm_servo. ChangeDutyCycle (duty_cycle)
Ishlash: LED va kalit
Biz svetodiodlar va kalitlarga simli ulanish usulidan kelib chiqqan holda, biz chiroqni boshqarish yoki o'qish va o'zini almashtirishning hojati yo'q, biz tugmani jodugarga puls yuboramiz, bu esa o'z navbatida signalni biz xohlagan chiroqqa yo'naltiradi.
Ishni bajarish: tugma
Tugma uchun biz o'zimizning oddiy sinfimizni shunday yaratamizki, biz uni har safar ishlatganimizda hodisani aniqlashni qo'shmasdan, uni bosilganda osongina ko'ramiz, biz quyidagi kod yordamida classbutton.py faylini yaratamiz:
RPi import GPIOclass tugmachasidan:
def _init _ (self, pin, bouncetime = 200): self.pin = pin self.bouncetime = bouncetime GPIO.setmode (GPIO. BCM) GPIO.setup (pin, GPIO. IN, GPIO. PUD_UP)@mulk def bosildi (o'zini):
ingedrukt = GPIO.input (self.pin) qaytish ingedrukt emas
def on_press (o'z -o'zidan, qo'ng'iroq_metod):
GPIO.add_event_detect (self.pin, GPIO. FALLING, call_method, bouncetime = self.bouncetime)
def on_release (o'z -o'zidan, call_method):
GPIO.add_event_detect (self.pin, GPIO. RISING, call_method, bouncetime = self.bouncetime)
6 -qadam: To'liq davr
Endi biz barcha tarkibiy qismlarni ko'rib chiqdik va ularning barchasini birlashtirish vaqti keldi.
Rasmlar ko'rsatadiki, komponentlar hamma narsani ko'rsatadi: taxtada hamma narsa ko'rsatiladi: lcd, adafruit GPS va tugmachasi erkak simlarga ulangan. uzunroq simlardan foydalanib, miltillovchi panjara va rulga kirishingiz mumkin.
7 -qadam: Kod
Bu ko'rsatmalarni toza saqlash uchun men github omborini ham backend, ham frontend fayllari bilan ta'minladim.fayllarni/var/www/html papkasida va backend papkasidagi fayllarni/home/papkasida joylashtiring. [foydalanuvchi nomi]/[papka nomi] jild
8 -qadam: ma'lumotlar bazasi
Ushbu tizimni o'rnatish usuli tufayli ma'lumotlar bazasidagi mahsulotlar ro'yxati yordamida oddiy veb -do'kon o'rnatiladi, bundan tashqari bizda hamma yo'l nuqtalari va buyurtmalar bu erda saqlanadi. Keyingi qadam
9 -qadam: ish
Elektronika ishini bilganimizdan so'ng, biz ularni qutiga solib qo'yishimiz mumkin, buning uchun siz ijodiy erkinlikka ega bo'lishingiz mumkin, uni qurishdan oldin, sizga kerak bo'lmagan karton qutini oling, masalan, bo'sh donli qutiga o'xshab, uni kesib oling. O'zingiz yoqtirgan narsaga ega bo'lguningizcha uni katlayın. Qopchani qog'ozga o'lchab, chizib oling va uni yog'och kabi mustahkamroq materialdan yasang, yoki agar bu sizning narsangiz bo'lmasa, uni chop eting. Sizda tugmacha, kalit, svetodiod va lcd uchun teshiklar bor, siz o'z ishingizni velosiped yoki skuterga o'rnatish usulini topishingiz kerak.
Tavsiya:
Kichik skey-to'p o'yini uchun avtomatik ball: 10 qadam (rasmlar bilan)
Kichik skey-to'p o'yini uchun avtomatik ballar: Skee-Ball uy qurilishi o'yinlari butun oila uchun juda qiziqarli bo'lishi mumkin, lekin ularning kamchiliklari har doim avtomatik ballning yo'qligi bo'lgan. Men ilgari Skie-Ball mashinasini qurganman, u o'yin to'plarini skanerlash asosida alohida kanallarga aylantirdi
Do'konlar, oziq -ovqat mahsulotlari va xizmat ko'rsatish markazlari uchun EXCEL -dan shtrix -kodlardan foydalangan holda pos -tizim: 7 qadam
EXCEL -dan DUKONLAR, GROCERIYALAR VA XIZMAT KO'RSATISHLARI POS -TIZIMI Shtrix -kodlardan foydalangan holda: Men sizga bu blog bilan kichik do'konlar va xizmat ko'rsatish markazlari uchun oddiy POS (savdo nuqtasi) tizimini yaratish usulini tanishtiraman. Ushbu usul yordamida siz maxsus dasturiy ta'minot yoki qimmat uskunasiz quyidagi imkoniyatlarni boshqarishingiz mumkin. v Muammo
Kichik robotlar uchun arzon tishli motorlar: 5 qadam (rasmlar bilan)
Kichik robotlar uchun arzon redüktörlü motorlar: Sizning yangi robot loyihangiz uchun kichik, kuchli va arzon motorlar kerakmi? Men ularni " N20 " Tishli motorlar bundan bir yil oldin, mening ProtoBot loyiham ustida ishlayotganda. Ular kichik, kuchli va Internetdagi ko'plab manbalardan mo'l. Siz
Securibot: uy xavfsizligi uchun kichik Survelliance droni: 7 qadam (rasmlar bilan)
Securibot: uy xavfsizligi uchun kichik Survelliance droni: robotlar ajoyib ekanligi oddiy haqiqat. Xavfsizlik robotlari, odatda, oddiy odam uchun juda qimmatga tushadi yoki qonuniy ravishda sotib olinmaydi; Xususiy kompaniyalar va harbiylar bunday qurilmalarni o'zlarida saqlaydilar va
Juda kichik robot yarating: Dunyoning eng kichik g'ildirakli robotini ushlagich bilan yasang: 9 qadam (rasmlar bilan)
Juda kichik robot yarating: Dunyoning eng kichik g'ildirakli robotini ushlagich bilan yasang. 1/20 kubik dyuymli robotni ushlagich bilan yarating, u kichik narsalarni olib, harakatlantira oladi. U Picaxe mikrokontroller tomonidan boshqariladi. Menimcha, bu dunyodagi eng kichik g'ildirakli tutqichli robot bo'lishi mumkin. Bu shubhasiz bo'ladi