Mundarija:

Kichik do'konlar uchun trek va iz: 9 qadam (rasmlar bilan)
Kichik do'konlar uchun trek va iz: 9 qadam (rasmlar bilan)

Video: Kichik do'konlar uchun trek va iz: 9 qadam (rasmlar bilan)

Video: Kichik do'konlar uchun trek va iz: 9 qadam (rasmlar bilan)
Video: БУТУН ДУНЁ БУ АЁЛНИ КИЛГАНИДАН ШОКДА.... 2024, Dekabr
Anonim
Kichik do'konlar uchun trek va iz
Kichik do'konlar uchun trek va iz

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

O'chirish va Pi -ni quvvatlantirish
O'chirish va Pi -ni quvvatlantirish
O'chirish va Pi -ni quvvatlantirish
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

MPU6050
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:

  1. "sudo raspi-config" ni kiriting
  2. Interfacing Configurations -ni tanlang
  3. Interfacing -da "I2C" -ni tanlang.
  4. I2C konfiguratsiyasini yoqish
  5. 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

Adafruit Ultimate Breakout GPS
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

16x2 LCD displey
16x2 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

Servo, Led, tugma va kalit
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

To'liq davr
To'liq davr
To'liq davr
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

Ma'lumotlar bazasi
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

Ish
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: