İçindekiler:
- Gereçler
- Adım 1: Devreye ve Pi'ye Güç Verme
- Adım 2: MPU6050
- 3. Adım: Adafruit Ultimate Breakout GPS
- 4. Adım: 16x2 LCD
- Adım 5: Servo, Ledler, Buton ve Switch
- Adım 6: Tam Devre
- Adım 7: Kod
- Adım 8: Veritabanı
- 9. Adım: Vaka
Video: Küçük Mağazalar İçin Takip ve Takip: 9 Adım (Resimli)
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:17
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
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
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:
- "sudo raspi-config" yazın
- Arayüz Yapılandırmalarını Seçin
- Arayüz seçeneğinde "I2C" yi seçin
- I2C yapılandırmasını etkinleştir
- 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
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
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
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
Ş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ı
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
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:
5'i 1 Arada Arduino Robotu - Beni Takip Et - Satır Takip - sumo - Çizim - Engelden Kaçınma: 6 Adım
5'i 1 Arada Arduino Robotu | Beni Takip Et | Satır Takip | sumo | Çizim | Engelden Kaçınma: Bu robot kontrol panosu, bir ATmega328P mikro denetleyici ve bir L293D motor sürücüsü içerir. Elbette bir Arduino Uno kartından farkı yok ama motoru sürmek için başka bir kalkana ihtiyaç duymadığı için daha kullanışlı! Zıplamaktan muaftır
Otomatik Bitki Saksısı - Küçük Bahçe: 13 Adım (Resimli)
Otomatik Bitki Saksısı - Küçük Bahçe: Howest Kortrijk'te Multimedya ve İletişim Teknolojisi öğrencisiyim. Son ödevimiz için kendi seçeceğimiz bir IoT projesi geliştirmemiz gerekiyordu. Etrafta fikir ararken, büyümeyi seven annem için faydalı bir şeyler yapmaya karar verdim
Basit ve Küçük Manyetik Karıştırıcı: 8 Adım (Resimli)
Basit ve Küçük Manyetik Karıştırıcı: Öncelikle ingilizce benim ana dilim değil, bu yüzden açıklamalarda bazı gramer hataları bulabilirsiniz. Eğitilebilirliğimi düzeltmeme yardım ederseniz minnettar olacağım. Olduğu söyleniyor, başlayalım. Manyetik karıştırıcı bir laboratuvar ekipmanıdır, u
Küçük Robotlar İnşa Etmek: Bir İnç Kübik Mikro Sumo Robotlar ve Daha Küçük Yapmak: 5 Adım (Resimlerle)
Küçük Robotlar İnşa Etmek: Bir İnç Kübik Mikro-Sumo Robotlar ve Daha Küçük Yapmak: İşte küçük robotlar ve devreler inşa etmeyle ilgili bazı ayrıntılar. Bu talimat, her boyutta robot yapımında faydalı olan bazı temel ipuçlarını ve teknikleri de kapsayacaktır. Benim için elektronikteki en büyük zorluklardan biri, bir robotun ne kadar küçük olduğunu görmek
Çok Küçük Bir Robot Yapın: Kıskaçlı Dünyanın En Küçük Tekerlekli Robotunu Yapın.: 9 Adım (Resimlerle)
Çok Küçük Bir Robot Yapın: Kıskaçlı Dünyanın En Küçük Tekerlekli Robotunu Yapın.: Küçük nesneleri alıp hareket ettirebilen bir kavrayıcıya sahip 1/20 inç küp bir robot yapın. Bir Picaxe mikro denetleyici tarafından kontrol edilir. Zamanın bu noktasında, bunun dünyanın kıskaçlı en küçük tekerlekli robotu olabileceğine inanıyorum. Bu hiç şüphesiz ch