Isi kandungan:

Jejak & jejak untuk Kedai Kecil: 9 Langkah (dengan Gambar)
Jejak & jejak untuk Kedai Kecil: 9 Langkah (dengan Gambar)

Video: Jejak & jejak untuk Kedai Kecil: 9 Langkah (dengan Gambar)

Video: Jejak & jejak untuk Kedai Kecil: 9 Langkah (dengan Gambar)
Video: “Duduk Macam Lelaki” – Netizen Terkejut Lihat Rupa Terkini Anak Perempuan Sharifah Shahira 2024, Julai
Anonim
Jejak & jejak untuk Kedai Kecil
Jejak & jejak untuk Kedai Kecil

Ini adalah sistem yang dibuat untuk kedai-kedai kecil yang seharusnya dipasang ke e-basikal atau e-skuter untuk penghantaran jarak pendek, misalnya kedai roti yang ingin menyampaikan pastri.

Apa maksud Track and Trace?

Track and trace adalah sistem yang digunakan oleh syarikat penerbangan atau syarikat kurier untuk merakam pergerakan bungkusan atau barang semasa pengangkutan. Di setiap lokasi pemprosesan, barang dikenal pasti dan data diserahkan ke sistem pemprosesan pusat. Data ini kemudian digunakan untuk memberikan status / kemas kini lokasi barang kepada pengirim.

Sistem yang akan kami buat juga akan menunjukkan laluan yang diambil dan jumlah kejutan dan lebam yang diterima. Arahan ini juga menganggap anda mempunyai pengetahuan asas tentang raspberry pi, python dan mysql.

nota: ini dibuat untuk projek sekolah, oleh kerana kekangan masa ada banyak ruang untuk diperbaiki

Bekalan

-Raspberry Pi 4 model B

-Raspberry PI T-tukang kasut

-4x 3, 7V Li-ion bateri

- Pemegang bateri berganda 2x

-DC Buck Step-down Converter 5v

-2x led oren besar

- suis hidup / mati / hidup

-tombol

-adafruit gps muktamad v3

-mpu6050

Paparan -16x2 lcd

-servo motor

Langkah 1: Menghidupkan Litar dan Pi

Menghidupkan Litar dan Pi
Menghidupkan Litar dan Pi
Menghidupkan Litar dan Pi
Menghidupkan Litar dan Pi

Untuk menghidupkan litar pi dengan bateri, anda mempunyai beberapa pilihan mengenai cara melakukannya.

Anda boleh menggunakan powerbank dan menghidupkan pi melalui USB, mungkin anda memasang peranti pada e-basikal atau e-skuter yang mempunyai port USB, mungkin anda mempunyai bateri telefon 5V yang menunggu untuk digunakan atau anda boleh menggunakan 2 set bateri 3.7V selari dengan step down converter seperti yang ditunjukkan dalam gambar

Segala-galanya baik selagi ia dapat memberikan 5V berterusan dan mempunyai jangka hayat yang anda nikmati.

Langkah 2: MPU6050

MPU6050
MPU6050

Pengenalan Modul sensor MPU6050 adalah peranti pengesan Gerak 6 paksi bersepadu.

  • Ia mempunyai Giroskop 3 paksi, Accelerometer 3 paksi, Pemproses Gerak Digital dan sensor Suhu, semuanya dalam satu IC.
  • Pelbagai parameter boleh didapati dengan membaca nilai dari alamat register tertentu menggunakan komunikasi I2C. Bacaan giroskop dan pecutan di sepanjang paksi X, Y dan Z boleh didapati dalam bentuk pelengkap 2.
  • Bacaan giroskop adalah dalam darjah darjah sesaat (dps) unit; Bacaan pecutan adalah dalam unit g.

Mengaktifkan I2C

Semasa menggunakan MPU6050 dengan Raspberry Pi, kita harus memastikan bahawa protokol I2C pada Raspberry Pi dihidupkan. Untuk melakukan ini, buka terminal pi melalui putty atau perisian lain dan lakukan perkara berikut:

  1. taip "sudo raspi-config"
  2. Pilih Konfigurasi Antara Muka
  3. Dalam pilihan Interfacing, Pilih "I2C"
  4. Dayakan konfigurasi I2C
  5. Pilih Ya semasa meminta untuk Reboot.

Sekarang, kita boleh menguji / mengimbas sebarang peranti I2C yang disambungkan ke papan Raspberry Pi kami dengan memasang alat i2c. Kita boleh mendapatkan alat i2c dengan menggunakan pengurus pakej apt. Gunakan arahan berikut di terminal Raspberry Pi.

"sudo apt-get install -y i2c-tools"

Sekarang sambungkan mana-mana peranti berasaskan I2C ke port mod pengguna dan imbas port itu menggunakan arahan berikut, "sudo i2cdetect -y 1"

Kemudian ia akan bertindak balas dengan alamat peranti.

Sekiranya tidak ada alamat yang dikembalikan, pastikan MPU6050 disambungkan dengan betul dan cuba lagi

Menjayakannya

sekarang kita yakin i2c diaktifkan dan pi dapat mencapai MPU6050 kita akan memasang perpustakaan menggunakan perintah "sudo pip3 install adafruit-circuitpython-mpu6050".

jika kita membuat fail ujian python dan menggunakan kod berikut, kita dapat melihat apakah ia berfungsi:

masa import

papan import

import busi

oimport adafruit_mpu6050

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

mpu = adafruit_mpu6050. MPU6050 (i2c)

Walaupun Betul:

cetak ("Pecutan: X:%. 2f, Y:%.2f, Z:%.2f m / s ^ 2"% (mpu.ascelerasi))

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

cetak ("Suhu:%.2f C"% mpu.temperature)

cetak ("")

masa. tidur (1)

apabila kita mahukan pecutan pada paksi X / Y / Z kita boleh menggunakan yang berikut:

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

menggabungkan ini dengan pernyataan if sederhana dalam gelung berterusan kita dapat mengira jumlah kejutan dalam perjalanan

Langkah 3: GPS Adafruit Ultimate Breakout

GPS Adafruit Ultimate Breakout
GPS Adafruit Ultimate Breakout

Pengenalan

Breakout dibina di sekitar chipset MTK3339, modul GPS berkualiti tinggi yang tidak masuk akal yang dapat mengesan sehingga 22 satelit pada 66 saluran, mempunyai penerima sensitiviti tinggi yang sangat baik (penjejakan -165 dB!), Dan antena terpasang. Ia dapat melakukan sehingga 10 pengemaskinian lokasi sesaat untuk log atau penjejakan berkelajuan tinggi, kepekaan tinggi. Penggunaan kuasa sangat rendah, hanya 20 mA semasa navigasi.

Papan ini dilengkapi dengan: pengatur 3.3V putaran ultra rendah sehingga anda dapat menguasainya dengan 3.3-5VDC masuk, input selamat tahap 5V, LED berkelip pada sekitar 1Hz semasa mencari satelit dan berkelip sekali setiap 15 saat apabila pembetulan didapati menjimatkan kuasa.

Menguji gps dengan arduino

Sekiranya anda mempunyai arduino, ada baiknya anda menguji modul dengannya.

Sambungkan VIN ke + 5VConnect GND ke GroundConnect GPS RX (data ke dalam GPS) ke Digital 0Connect GPS TX (data keluar dari GPS) ke Digital 1

Cukup jalankan kod arduino kosong dan buka monitor bersiri pada 9600 baud. Sekiranya anda mendapat data gps, modul gps anda berfungsi. Catatan: jika modul anda tidak dapat diperbaiki, cubalah meletakkannya di luar tingkap atau di luar di teras

Menjayakannya

Mula memasang perpustakaan gps adafruit menggunakan perintah "sudo pip3 install adafruit-circuitpython-gps".

Sekarang kita boleh menggunakan kod python berikut untuk melihat apakah kita dapat membuatnya berfungsi:

import timeimport board 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, 0 ') gps.send_command (b'PMTK220, 1000')

Walaupun Betul:

gps.update () sementara tidak gps.has_fix:

print (gps.nmea_sentence) print ('Menunggu pembaikan …') gps.update () time.sleep (1) sambung

cetak ('=' * 40) # Cetak garis pemisah.print ('Latitud: {0:.6f} darjah'.format (gps.latitude)) cetak (' Bujur: {0:.6f} darjah'.format (gps.longitude)) cetak ("Perbaiki kualiti: {}". format (gps.fix_quality))

# Beberapa atribut di luar garis lintang, garis bujur dan cap waktu adalah pilihan # dan mungkin tidak ada. Periksa sama ada Tidak Ada sebelum cuba menggunakan! Jika gps.satellites bukan Tiada:

cetak ("# satelit: {}". format (gps.satellites))

jika gps.altitude_m bukan Tiada:

cetak ("Ketinggian: {} meter". format (gps.altitude_m))

jika gps.speed_knots bukan Tiada:

cetak ("Kelajuan: {} knot". format (gps.speed_knots))

jika gps.track_angle_deg bukan Tiada:

cetak ("Sudut trek: {} darjah". format (gps.track_angle_deg))

jika gps.horizontal_dilution tidak Tiada:

cetak ("Pencairan mendatar: {}". format (gps.horizontal_dilution))

jika gps.height_geoid bukan Tiada:

cetak ("ID geografi tinggi: {} meter". format (gps.height_geoid))

masa. tidur (1)

Langkah 4: LCD 16x2

LCD 16x2
LCD 16x2

Pengenalan

Modul LCD sangat biasa digunakan di kebanyakan projek terbenam, kerana harganya yang murah, ketersediaan dan mesra pengaturcara. Sebilangan besar daripada kita akan menemui paparan ini dalam kehidupan seharian kita, sama ada di PCO atau kalkulator.16 × 2 LCD dinamakan demikian kerana; ia mempunyai 16 Lajur dan 2 Baris. Terdapat banyak kombinasi yang tersedia seperti, 8 × 1, 8 × 2, 10 × 2, 16 × 1, dan lain-lain, tetapi yang paling banyak digunakan ialah LCD 16 × 2. Jadi, ia akan mempunyai (16 × 2 = 32) 32 aksara dan setiap watak akan terdiri daripada 5 × 8 Pixel Dots.

Memasang smbus

Bas Pengurusan Sistem (SMBus) lebih kurang merupakan turunan bas I2C. Piawaian ini telah dikembangkan oleh Intel dan kini dikendalikan oleh Forum SBS. Aplikasi utama SMBus adalah untuk memantau parameter kritikal pada motherboard PC dan sistem tertanam. Contohnya terdapat banyak monitor voltan bekalan, monitor suhu, dan monitor monitor / kawalan kipas dengan antara muka SMBus yang tersedia.

Perpustakaan yang akan kita gunakan memerlukan smbus dipasang juga. Untuk memasang smbus pada rpi gunakan perintah "sudo apt install python3-smbus".

Menjayakannya

pertama pasang perpustakaan RPLCD menggunakan perintah "sudo pip3 install RPLCD".

sekarang kita menguji lcd dengan memaparkan ip menggunakan kod berikut:

dari soket CharLCDimport import RPLCD.i2c

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 () kembali ip_address

lcd = CharLCD ('PCF8574', 0x27)

lcd.write_string ('Alamat IP: / r / n' + str (get_ip_address ()))

Langkah 5: Servo, Leds, Button and Switch

Servo, Leds, Button dan Switch
Servo, Leds, Button dan Switch

Pengenalan

Motor servo adalah penggerak putaran atau motor yang memungkinkan kawalan tepat dari segi kedudukan sudut, pecutan dan halaju, kemampuan yang tidak dimiliki motor biasa. Ia menggunakan motor biasa dan memasangkannya dengan sensor untuk maklum balas kedudukan. Pengawal adalah bahagian motor servo yang paling canggih, kerana ia direka khas untuk tujuan tersebut.

LED pendek untuk diod pemancar cahaya. Peranti semikonduktor elektronik yang memancarkan cahaya ketika arus elektrik melaluinya. Mereka jauh lebih cekap daripada lampu pijar, dan jarang habis. LED digunakan dalam banyak aplikasi seperti paparan video skrin rata, dan semakin banyak sebagai sumber cahaya umum.

Butang tekan atau butang ringkas adalah mekanisme suis sederhana untuk mengawal beberapa aspek mesin atau proses. Butang biasanya dibuat dari bahan keras, biasanya plastik atau logam.

Suis hidup / mati / hidup mempunyai 3 posisi di mana yang tengah adalah keadaan mati jenis ini kebanyakan digunakan untuk kawalan motor sederhana di mana anda mempunyai keadaan maju, mati dan terbalik.

Menjadikannya berfungsi: servo

Servo menggunakan isyarat PWM untuk menentukan sudut apa yang harusnya bernasib baik untuk kita GPIO mempunyai ciri ini. Oleh itu, kita hanya boleh menggunakan kod berikut untuk mengawal servo: mengimport RPi. GPIO sebagai GPIO waktu import

servo_pin = 18duty_cycle = 7.5

GPIO.setmode (GPIO. BCM)

GPIO.setup (servo_pin, GPIO. OUT)

pwm_servo = GPIO. PWM (servo_pin, 50) pwm_servo.start (duty_cycle)

Walaupun Betul:

duty_cycle = float (input ("Enter Duty Cycle (Kiri = 5 ke Kanan = 10):")) pwm_servo. ChangeDutyCycle (duty_cycle)

Menjadikannya berfungsi: dipimpin dan suis

Oleh kerana cara kami memasang kabel dan suis, kami tidak perlu mengawal atau membaca led dan menukarnya sendiri. Kami hanya menghantar denyutan ke penyihir butang seterusnya akan menghantar isyarat ke petunjuk yang kami mahukan.

Menjadikannya berfungsi: butang

Untuk butang, kita akan menjadikan kelas sederhana kita sendiri dengan cara ini dengan mudah kita melihat ketika ditekan tanpa perlu menambahkan acara mengesannya setiap kali kita menggunakannya. Kita akan membuat classbutton.py fail menggunakan kod berikut:

dari RPi import Butang GPIOclass:

def _init _ (self, pin, bouncetime = 200): self.pin = pin self.bouncetime = bouncetime GPIO.setmode (GPIO. BCM) GPIO.setup (pin, GPIO. IN, GPIO. PUD_UP) @property def ditekan (diri):

ingedrukt = GPIO.input (self.pin) kembali bukan ingedrukt

def on_press (diri, kaedah_panggil):

GPIO.add_event_detect (self.pin, GPIO. FALLING, call_method, bouncetime = self.bouncetime)

def on_release (kaedah diri, kaedah_panggil):

GPIO.add_event_detect (self.pin, GPIO. RISING, kaedah_panggil, bouncetime = self.bouncetime)

Langkah 6: Litar Penuh

Litar Penuh
Litar Penuh
Litar Penuh
Litar Penuh

Sekarang kita telah menghabiskan semua komponen pada waktunya untuk menggabungkan semuanya.

Walaupun gambar menunjukkan komponen menunjukkan semua yang ada di papan roti itu sendiri lebih baik untuk mempunyai lcd, GPS adafruit dan butang yang disambungkan menggunakan wayar wanita ke lelaki Hanya mempunyai t-cobbler dan mpu6050 di papan roti. Ketika datang ke led dan suis gunakan wayar yang lebih panjang untuk memastikan anda boleh mencapai bar pengedip dan batang stereng.

Langkah 7: Kodnya

Untuk menjaga kebersihan instruksional ini, saya telah menyediakan github repositori dengan kedua-dua fail backend dan frontend. Cukup masukkan fail di folder frontend di folder / var / www / html dan fail di folder backend dalam folder di / home / folder [nama pengguna] / [nama folder]

Langkah 8: Pangkalan Data

Pangkalan Data
Pangkalan Data

Kerana cara sistem ini disiapkan, ada kedai web yang mudah disiapkan menggunakan senarai produk dalam pangkalan data, lebih jauh lagi kita mempunyai semua cara dan pesanan disimpan di sini. Skrip membuat boleh didapati di repositori github yang dihubungkan di langkah seterusnya

Langkah 9: Kesnya

Kes itu
Kes itu

Sebaik sahaja kami mengetahui karya elektronik, kami boleh memasukkannya ke dalam kotak. Anda boleh menggunakan ini dengan bebas. Sebelum membinanya, ambil kotak kadbod yang anda tidak perlukan lagi seperti kotak bijirin kosong dan potong, tempelkannya dan lipat sehingga anda mempunyai sesuatu yang anda suka. Ukur dan lukiskan sarung anda di atas sehelai kertas dan buatlah dari bahan yang lebih kukuh seperti kayu, atau jika bukan itu barang anda, cetaklah. Pastikan semua elektronik sesuai di dalamnya dan anda mempunyai lubang untuk butang, wayar yang menuju ke suis, lampu LED dan lcd. Sebaik sahaja anda membuat kes anda hanya dengan mencari cara memasangnya di basikal atau skuter anda

Disyorkan: