İçindekiler:

Küçük Mağazalar İçin Takip ve Takip: 9 Adım (Resimli)
Küçük Mağazalar İçin Takip ve Takip: 9 Adım (Resimli)

Video: Küçük Mağazalar İçin Takip ve Takip: 9 Adım (Resimli)

Video: Küçük Mağazalar İçin Takip ve Takip: 9 Adım (Resimli)
Video: HELLO KITTY EN İYİ ÇİZEN KAZANIR !! KIM KAZANDI ELİF SİNEM ?? 2024, Aralık
Anonim
Küçük Mağazalar için Takip ve Takip
Küçük Mağazalar için Takip ve Takip

Bu, kısa mesafeli teslimatlar için e-bisikletlere veya e-scooter'lara monte edilmesi gereken küçük dükkanlar için yapılmış bir sistemdir, örneğin hamur işleri teslim etmek isteyen bir fırın.

Track and Trace ne anlama geliyor?

Takip ve izleme, nakliyeciler veya kurye şirketleri tarafından, nakliye sırasında kolilerin veya eşyaların hareketini kaydetmek için kullanılan bir sistemdir. Her işleme yerinde mallar tanımlanır ve merkezi işlem sistemine veri aktarılır. Bu veriler daha sonra göndericilere mal konumunun durumunu/güncellemesini vermek için kullanılır.

Yapacağımız sistem ayrıca alınan rotayı ve alınan şok ve tümseklerin miktarını da gösterecektir. Bu talimat aynı zamanda ahududu pi, python ve mysql hakkında temel bilgilere sahip olduğunuzu varsayar.

not: bu bir okul projesi için yapıldı, bu nedenle zaman kısıtlaması nedeniyle iyileştirme için çok yer var

Gereçler

-Raspberry Pi 4 model B

-Ahududu PI T-ayakkabıcı

-4x 3, 7V Li-ion piller

-2x çift Pil tutucu

-DC Buck Düşürücü Dönüştürücü 5v

-2x büyük turuncu led

-açma/kapama/açma düğmesi

-buton

-adafruit nihai gps v3

-mpu6050

-16x2 lcd ekran

-servo motor

Adım 1: Devreye ve Pi'ye Güç Verme

Devreye ve Pi'ye Güç Verme
Devreye ve Pi'ye Güç Verme
Devreye ve Pi'ye Güç Verme
Devreye ve Pi'ye Güç Verme

Pi devresine bir pil ile güç vermek söz konusu olduğunda, bunun nasıl yapılacağına dair birkaç seçeneğiniz vardır.

Bir powerbank kullanabilir ve pi'yi USB üzerinden çalıştırabilirsiniz, belki cihazı USB portu olan bir e-bisiklete veya e-scooter'a monte ediyorsunuz, belki de ortalıkta kullanılmayı bekleyen bir 5V telefon piliniz var veya 2 kullanabilirsiniz. 3.7V pil setleri, resimlerde gösterildiği gibi bir düşürücü dönüştürücü ile paralel olarak

Sürekli 5V sağlayabildiği ve mutlu olduğunuz bir ömrü olduğu sürece her şey yolundadır.

Adım 2: MPU6050

MPU6050
MPU6050

GirişMPU6050 sensör modülü, entegre bir 6 eksenli Hareket izleme cihazıdır.

  • Tek bir IC'de 3 eksenli Jiroskop, 3 eksenli İvmeölçer, Dijital Hareket İşlemcisi ve Sıcaklık sensörüne sahiptir.
  • I2C iletişimi kullanılarak belirli registerların adreslerinden değerler okunarak çeşitli parametreler bulunabilir. X, Y ve Z eksenleri boyunca jiroskop ve ivmeölçer okuması 2'nin tamamlayıcı formunda mevcuttur.
  • Jiroskop okumaları derece/saniye (dps) birimindedir; İvmeölçer okumaları g birimindedir.

I2C'yi Etkinleştirme

Raspberry Pi ile MPU6050 kullanırken Raspberry Pi üzerinde I2C protokolünün açık olduğundan emin olmalıyız. Bunu yapmak için macun veya başka bir yazılım aracılığıyla pi'nin terminalini açın ve aşağıdakileri yapın:

  1. "sudo raspi-config" yazın
  2. Arayüz Yapılandırmalarını Seçin
  3. Arayüz seçeneğinde "I2C" yi seçin
  4. I2C yapılandırmasını etkinleştir
  5. Yeniden Başlatma istendiğinde Evet'i seçin.

Artık Raspberry Pi kartımıza bağlı herhangi bir I2C cihazını i2c araçlarını yükleyerek test edebilir/tarayabiliriz. apt paket yöneticisini kullanarak i2c araçlarını alabiliriz. Raspberry Pi terminalinde aşağıdaki komutu kullanın.

"sudo apt-get install -y i2c araçları"

Şimdi herhangi bir I2C tabanlı cihazı kullanıcı modu bağlantı noktasına bağlayın ve aşağıdaki komutu kullanarak bu bağlantı noktasını tarayın, "sudo i2cdetect -y 1"

Ardından cihaz adresiyle yanıt verecektir.

Hiçbir adres döndürülmezse, MPU6050'nin doğru şekilde bağlandığından emin olun ve tekrar deneyin.

Çalıştırmak

Artık i2c'nin etkinleştirildiğinden ve pi'nin MPU6050'ye ulaşabileceğinden emin olduğumuza göre, "sudo pip3 install adafruit-circuitpython-mpu6050" komutunu kullanarak bir kitaplık kuracağız.

bir python test dosyası oluşturur ve aşağıdaki kodu kullanırsak çalışıp çalışmadığını görebiliriz:

ithalat zamanı

ithalat panosu

ithalat işi

oimport adafruit_mpu6050

i2c = busio. I2C(board. SCL, board. SDA)

mpu = adafruit_mpu6050. MPU6050(i2c)

Doğru iken:

print("Hızlanma: X:%.2f, Y: %.2f, Z: %.2f m/s^2" % (mpu.hızlanma))

print("Gyro X:%.2f, Y: %.2f, Z: %.2f derece/s" % (mpu.gyro))

print("Sıcaklık: %.2f C" % mpu.sıcaklık)

Yazdır("")

zaman.uyku(1)

şimdi X/Y/Z eksenindeki ivmeyi istediğimizde aşağıdakileri kullanabiliriz:

accelX = mpu.acceleration[0]accelY = mpu.acceleration[1] accelZ = mpu.acceleration[2]

bunu sabit bir döngüde basit bir if ifadesi ile birleştirerek, bir yolculuktaki şok miktarını sayabiliriz.

3. Adım: Adafruit Ultimate Breakout GPS

Adafruit Ultimate Breakout GPS
Adafruit Ultimate Breakout GPS

Tanıtım

Çıkış, 66 kanalda 22 uyduya kadar izleyebilen, mükemmel bir yüksek hassasiyetli alıcıya (-165 dB izleme!). Yüksek hız, yüksek hassasiyetli günlük kaydı veya izleme için saniyede 10 konum güncellemesi yapabilir. Güç kullanımı inanılmaz derecede düşük, navigasyon sırasında sadece 20 mA.

Kart ile birlikte gelir: 3,3-5VDC giriş, 5V seviyeli güvenli girişlerle güç verebilmeniz için ultra düşük çıkışlı 3.3V regülatör, Uyduları ararken LED yaklaşık 1Hz'de yanıp söner ve bir düzeltme olduğunda her 15 saniyede bir yanıp söner gücü korumak için bulundu.

arduino ile gps test etme

Bir arduinoya erişiminiz varsa, modülü onunla test etmek iyi bir fikirdir.

VIN'i +5VConnect'e GND'yi GroundConnect GPS RX'e (veriler GPS'e) ile Digital 0Connect GPS TX'e (GPS'den veri çıkışı) Digital 1'e bağlayın

Sadece boş bir arduino kodu çalıştırın ve seri monitörü 9600 baud'da açın. Eğer gps verisi alırsanız, gps modülünüz çalışır. Not: modülünüz bir düzeltme almazsa, onu bir pencereden dışarı veya bir terasa koymayı deneyin.

Çalıştırmak

"sudo pip3 install adafruit-circuitpython-gps" komutunu kullanarak adafruit gps kütüphanesini kurmaya başlayın.

Şimdi, çalışmasını sağlayıp sağlayamayacağımızı görmek için aşağıdaki python kodunu kullanabiliriz:

timeimport kartını içe aktar busioimport adafruit_gpsimport serial uart = serial. Serial("/dev/ttyS0", baudrate=9600, timeout=10)

gps = adafruit_gps. GPS(uart, hata ayıklama=Yanlış)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')

Doğru iken:

gps.update() gps.has_fix değilken:

print(gps.nmea_sentence)print('Düzeltme bekleniyor…')gps.update()time.sleep(1)devam

print('=' * 40) # Bir ayırıcı yazdır line.print('Enlem: {0:.6f} derece'.format(gps.latitude))print('Boylam: {0:.6f} derece'.format (gps.longitude))print("Kaliteyi düzelt: {}".format(gps.fix_quality))

# Enlem, boylam ve zaman damgasının ötesindeki bazı özellikler isteğe bağlıdır# ve mevcut olmayabilir. Eğer gps.satellites Yok değilse kullanmayı denemeden önce Yok olup olmadıklarını kontrol edin:

print("# uydular: {}".format(gps.satellites))

gps.altitude_m Yok değilse:

print("Yükseklik: {} metre".format(gps.altitude_m))

gps.speed_knots Yok değilse:

print("Hız: {} knot".format(gps.speed_knots))

gps.track_angle_deg Yok değilse:

print("İzleme açısı: {} derece".format(gps.track_angle_deg))

gps.horizontal_dilution Hiçbiri değilse:

print("Yatay seyreltme: {}".format(gps.horizontal_dilution))

gps.height_geoid Yok değilse:

print("Yükseklik coğrafi kimliği: {} metre".format(gps.height_geoid))

zaman.uyku(1)

4. Adım: 16x2 LCD

16x2 LCD
16x2 LCD

Tanıtım

LCD modülleri çoğu gömülü projede çok yaygın olarak kullanılır, bunun nedeni ucuz fiyatı, bulunabilirliği ve programcı dostu olmasıdır. Çoğumuz bu ekranlara günlük hayatımızda PCO'larda veya hesap makinelerinde rastlamışızdır. 16×2 LCD'nin böyle adlandırılmasının nedeni; 16 Sütun ve 2 Satır vardır. 8×1, 8×2, 10×2, 16×1 vb. gibi birçok kombinasyon mevcuttur ancak en çok kullanılanı 16×2 LCD'dir. Yani toplamda (16×2=32) 32 karakter olacak ve her karakter 5×8 Piksel Noktalardan oluşacak.

smbus yükleme

Sistem Yönetim Veri Yolu (SMBus), aşağı yukarı I2C veri yolunun bir türevidir. Standart Intel tarafından geliştirilmiştir ve şu anda SBS Forum tarafından sürdürülmektedir. SMBus'un ana uygulaması, PC ana kartlarındaki ve gömülü sistemlerdeki kritik parametreleri izlemektir. Örneğin, bir SMBus arayüzüne sahip çok sayıda besleme voltajı monitörü, sıcaklık monitörü ve fan izleme/kontrol IC'leri mevcuttur.

Kullanacağımız kitaplık da smbus'un kurulu olmasını gerektiriyor. rpi'ye smbus kurmak için "sudo apt install python3-smbus" komutunu kullanın.

Çalıştırmak

önce "sudo pip3 install RPLCD" komutunu kullanarak RPLCD kitaplığını kurun.

şimdi ip'yi aşağıdaki kodu kullanarak görüntüleyerek lcd'yi test ediyoruz:

RPLCD.i2c'den CharLCDimport soketini içe aktarın

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_adresi döndür

lcd = KarakterLCD('PCF8574', 0x27)

lcd.write_string('IP adresi:\r\n'+str(get_ip_address()))

Adım 5: Servo, Ledler, Buton ve Switch

Servo, Ledler, Buton ve Switch
Servo, Ledler, Buton ve Switch

Tanıtım

Bir servo motor, normal bir motorun sahip olmadığı açısal konum, hızlanma ve hız açısından hassas bir kontrol sağlayan döner bir aktüatör veya motordur. Normal bir motor kullanır ve onu konum geri beslemesi için bir sensörle eşleştirir. Kontrolör, bu amaç için özel olarak tasarlandığı için servo motorun en karmaşık parçasıdır.

Işık yayan diyot için kısa LED. İçinden elektrik akımı geçtiğinde ışık yayan elektronik yarı iletken bir cihaz. Akkor ampullerden çok daha verimlidirler ve nadiren yanarlar. LED'ler, düz ekran video gösterimleri gibi birçok uygulamada ve giderek genel ışık kaynakları olarak kullanılmaktadır.

Bir basma düğmesi veya basit bir düğme, bir makinenin veya işlemin bazı yönlerini kontrol etmek için basit bir anahtar mekanizmasıdır. Düğmeler genellikle sert malzemeden, genellikle plastik veya metalden yapılır.

Bir açma/kapama/açma anahtarının ortadakinin kapalı olduğu 3 konumu vardır, bu tipler çoğunlukla ileri, kapalı ve geri durumuna sahip olduğunuz basit motor kontrolü için kullanılır.

Çalıştırmak: servo

Servo, bizim için şans eseri hangi açıda olması gerektiğini belirlemek için bir PWM sinyali kullanır GPIO'da bu özellik yerleşik olarak bulunur. Bu nedenle servoyu kontrol etmek için aşağıdaki kodu kullanabiliriz: RPi. GPIO'yu GPIOimport zamanı olarak içe aktar

servo_pin = 18görev_döngüsü = 7.5

GPIO.setmode(GPIO. BCM)

GPIO.setup(servo_pin, GPIO. OUT)

pwm_servo = GPIO. PWM(servo_pin, 50) pwm_servo.start(görev_döngüsü)

Doğru iken:

duty_cycle = float(input("Görev Döngüsünü Girin (Sol = 5'ten Sağa = 10):"))pwm_servo. ChangeDutyCycle(duty_cycle)

Çalışmasını sağlamak: led ve anahtar

Ledleri ve switch'i nasıl bağladığımızdan dolayı ledleri kontrol etmemize veya okumamıza ve kendi kendine geçiş yapmamıza gerek yok. Düğmeye sadece darbeler gönderiyoruz, cadı da sinyali istediğimiz led'e yönlendirecek.

Çalıştırmak: düğme

Düğme için kendi basit sınıfımızı bu şekilde yapacağız, her kullandığımızda ona bir olay algılama eklemek zorunda kalmadan basıldığında kolayca görebileceğiz. Aşağıdaki kodu kullanarak classbutton.py dosyasını yapacağız:

RPi'den GPIOclass Düğmesini içe aktarın:

def _init_(self, pin, sıçrama zamanı=200): self.pin = pin self.bouncetime = zıplama zamanı GPIO.setmode(GPIO. BCM) GPIO.setup(pin, GPIO. IN, GPIO. PUD_UP)@özellik def basıldı(self)):

ingedrukt = GPIO.input(self.pin) dönüşü ingedrukt değil

def on_press(self, call_method):

GPIO.add_event_detect(self.pin, GPIO. FALLING, call_method, sıçrama zamanı=self.bouncetime)

def on_release(self, call_method):

GPIO.add_event_detect(self.pin, GPIO. RISING, call_method, sıçrama zamanı=self.bouncetime)

Adım 6: Tam Devre

Tam Devre
Tam Devre
Tam Devre
Tam Devre

Şimdi tüm bileşenleri gözden geçirdik, hepsini birleştirme zamanı.

Resimler, bileşenlerin devre tahtasındaki her şeyi gösterdiğini gösterse de, lcd, adafruit GPS ve düğmenin dişi-erkek kablolar kullanılarak bağlanması daha iyi, sadece t-cobbler ve mpu6050 bir breadboard üzerinde. flaşör çubuklarına ve direksiyon çubuğuna erişebildiğinizden emin olmak için daha uzun teller kullanın.

Adım 7: Kod

Bu öğretilebilir bilgiyi temiz tutmak için hem arka uç hem de ön uç dosyaları içeren bir github deposu sağladım. dosyaları /var/www/html klasöründeki ön uç klasörüne ve arka uç klasöründeki dosyaları /home/ klasöründeki bir klasöre koyun. [kullanıcı adı]/[klasör adı] klasörü

Adım 8: Veritabanı

Veritabanı
Veritabanı

Bu sistemin kurulma şeklinden dolayı, bir veri tabanındaki ürünlerin bir listesini kullanarak kurulmuş basit bir web mağazası var, ayrıca burada kaydedilen tüm yol noktaları ve siparişlerimiz var. Bağlantılı github deposunda bir oluşturma betiği bulunabilir Sonraki adım

9. Adım: Vaka

Dosya
Dosya

Elektroniğin çalıştığını öğrendikten sonra onları bir kutuya doldurabiliriz. Bununla biraz yaratıcı özgürlük elde edebilirsiniz. Yapmadan önce, örneğin boş bir mısır gevreği kutusu gibi artık ihtiyacınız olmayan bir karton kutu alın ve kesin, bantlayın. ve beğendiğiniz bir şeye sahip olana kadar katlayın. Kasanızı ölçün ve bir kağıda çizin ve ahşap gibi daha sağlam bir malzemeden yapın veya bu sizin işiniz değilse 3 boyutlu yazdırın. Tüm elektronik aksamın içine sığdığından emin olun ve düğme, anahtara giden kablo, led'ler ve lcd için delikleriniz var. Kasanızı yaptıktan sonra, bu sadece onu bisikletinize veya scooter'ınıza monte etmenin bir yolunu bulmak meselesi.

Önerilen: