Mục lục:

Theo dõi & theo dõi các cửa hàng nhỏ: 9 bước (có hình ảnh)
Theo dõi & theo dõi các cửa hàng nhỏ: 9 bước (có hình ảnh)

Video: Theo dõi & theo dõi các cửa hàng nhỏ: 9 bước (có hình ảnh)

Video: Theo dõi & theo dõi các cửa hàng nhỏ: 9 bước (có hình ảnh)
Video: Đen - Nấu ăn cho em ft. PiaLinh (M/V) 2024, Tháng mười một
Anonim
Theo dõi và theo dõi các cửa hàng nhỏ
Theo dõi và theo dõi các cửa hàng nhỏ

Đây là một hệ thống được tạo ra cho các cửa hàng nhỏ được cho là gắn vào xe đạp điện hoặc xe tay ga điện tử để giao hàng trong phạm vi ngắn, ví dụ như một tiệm bánh muốn giao bánh ngọt.

Theo dõi và Dấu vết có nghĩa là gì?

Theo dõi và theo dõi là một hệ thống được sử dụng bởi các nhà vận chuyển hoặc các công ty chuyển phát nhanh để ghi lại sự di chuyển của các bưu kiện hoặc vật phẩm trong quá trình vận chuyển. Tại mọi địa điểm chế biến, hàng hóa được xác định và chuyển dữ liệu đến hệ thống xử lý trung tâm. Dữ liệu này sau đó được sử dụng để cung cấp trạng thái / cập nhật vị trí hàng hóa cho người gửi hàng.

Hệ thống mà chúng tôi sẽ thực hiện cũng sẽ hiển thị tuyến đường đã thực hiện và số lượng cú sốc và va chạm nhận được. Phần hướng dẫn này cũng giả định rằng bạn có kiến thức cơ bản về pi raspberry, python và mysql.

lưu ý: điều này được thực hiện cho một dự án trường học, do đó, do hạn chế về thời gian, có rất nhiều chỗ để cải thiện

Quân nhu

-Raspberry Pi 4 mẫu B

-Raspberry PI T-cobbler

- Pin Li-ion 4x 3, 7V

-2x ngăn chứa pin đôi

-DC Buck Step-down Converter 5v

-2x đèn led màu cam lớn

-trên / tắt / bật công tắc

-cái nút

-adafruit cuối cùng gps v3

-mpu6050

-Màn hình LCD 16x2

-động cơservo

Bước 1: Cấp nguồn cho mạch và Pi

Cấp nguồn cho mạch và Pi
Cấp nguồn cho mạch và Pi
Cấp nguồn cho mạch và Pi
Cấp nguồn cho mạch và Pi

Khi nói đến cấp nguồn cho mạch pi bằng pin, bạn có một số tùy chọn về cách thực hiện.

Bạn có thể sử dụng pin sạc dự phòng và cấp nguồn cho pi qua USB, có thể bạn đang lắp thiết bị trên xe đạp điện hoặc xe tay ga có cổng USB, có thể bạn có pin điện thoại 5V đang chờ được sử dụng hoặc bạn có thể sử dụng 2 bộ pin 3.7V song song với một bộ chuyển đổi bước xuống như trong hình

Bất cứ thứ gì cũng được miễn là nó có thể cung cấp nguồn 5V liên tục và có tuổi thọ mà bạn hài lòng.

Bước 2: MPU6050

MPU6050
MPU6050

Giới thiệu Mô-đun cảm biến MPU6050 là một thiết bị theo dõi chuyển động 6 trục tích hợp.

  • Nó có Con quay hồi chuyển 3 trục, Gia tốc kế 3 trục, Bộ xử lý chuyển động kỹ thuật số và cảm biến nhiệt độ, tất cả đều nằm trong một vi mạch duy nhất.
  • Các tham số khác nhau có thể được tìm thấy bằng cách đọc các giá trị từ địa chỉ của một số thanh ghi sử dụng giao tiếp I2C. Đọc kính quang học và gia tốc kế dọc theo các trục X, Y và Z có sẵn ở dạng bổ sung của 2.
  • Số đọc con quay hồi chuyển được tính bằng đơn vị độ trên giây (dps); Các số đọc của gia tốc kế được tính bằng đơn vị g.

Bật I2C

Khi sử dụng MPU6050 với Raspberry Pi, chúng ta nên đảm bảo rằng giao thức I2C trên Raspberry Pi đã được bật.

  1. gõ vào "sudo raspi-config"
  2. Chọn cấu hình giao diện
  3. Trong tùy chọn Interfacing, Chọn "I2C"
  4. Bật cấu hình I2C
  5. Chọn Có khi nó yêu cầu Khởi động lại.

Bây giờ, chúng tôi có thể kiểm tra / quét tìm bất kỳ thiết bị I2C nào được kết nối với bo mạch Raspberry Pi của chúng tôi bằng cách cài đặt các công cụ i2c. Chúng ta có thể tải các công cụ i2c bằng cách sử dụng trình quản lý gói apt. Sử dụng lệnh sau trong thiết bị đầu cuối Raspberry Pi.

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

Bây giờ kết nối bất kỳ thiết bị dựa trên I2C nào với cổng chế độ người dùng và quét cổng đó bằng lệnh sau, "sudo i2cdetect -y 1"

Sau đó, nó sẽ phản hồi với địa chỉ thiết bị.

Nếu không có địa chỉ nào được trả lại, hãy đảm bảo MPU6050 được kết nối đúng cách và thử lại

Làm cho nó hoạt động

bây giờ chúng tôi chắc chắn rằng i2c đã được kích hoạt và pi có thể đạt đến MPU6050, chúng tôi sẽ cài đặt một thư viện bằng cách sử dụng lệnh "sudo pip3 install adafruit-circuitpython-mpu6050".

nếu chúng tôi tạo tệp thử nghiệm python và sử dụng mã sau, chúng tôi có thể xem liệu nó có hoạt động hay không:

thời gian nhập khẩu

bảng nhập khẩu

nhập khẩu busi

oimport adafruit_mpu6050

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

mpu = adafruit_mpu6050. MPU6050 (i2c)

trong khi Đúng:

print ("Gia tốc: X:%. 2f, Y:%.2f, Z:%.2f m / s ^ 2"% (mpu.acceleration))

print ("Con quay hồi chuyển X:%. 2f, Y:%.2f, Z:%.2f độ / s"% (mpu.gyro))

print ("Nhiệt độ:%.2f C"% mpu. nhiệt độ)

in("")

time.sleep (1)

khi chúng ta muốn gia tốc theo trục X / Y / Z, chúng ta có thể sử dụng như sau:

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

kết hợp điều này với một câu lệnh if đơn giản trong một vòng lặp không đổi, chúng ta có thể đếm số lượng cú sốc trên một chuyến đi

Bước 3: GPS đột phá cuối cùng của Adafruit

GPS đột phá cuối cùng của Adafruit
GPS đột phá cuối cùng của Adafruit

Giới thiệu

Điểm đột phá được xây dựng dựa trên chipset MTK3339, một mô-đun GPS chất lượng cao, vô nghĩa có thể theo dõi tới 22 vệ tinh trên 66 kênh, có bộ thu độ nhạy cao tuyệt vời (theo dõi -165 dB!) Và một ăng-ten tích hợp. Nó có thể thực hiện tối đa 10 cập nhật vị trí mỗi giây cho tốc độ cao, ghi nhật ký hoặc theo dõi độ nhạy cao. Sử dụng năng lượng cực kỳ thấp, chỉ 20 mA trong quá trình điều hướng.

Bo mạch đi kèm: bộ điều chỉnh 3.3V loại bỏ cực thấp để bạn có thể cấp nguồn cho nó với đầu vào an toàn ở mức 3.3-5VDC, 5V, Đèn LED nhấp nháy ở khoảng 1Hz trong khi nó đang tìm kiếm vệ tinh và nhấp nháy 15 giây một lần khi có bản sửa lỗi được tìm thấy để bảo tồn quyền lực.

Kiểm tra gps với arduino

Nếu bạn đã sử dụng arduino, bạn nên kiểm tra mô-đun với nó.

Kết nối VIN với + 5 Kết nối GND với mặt đất Kết nối GPS RX (dữ liệu vào GPS) với Kỹ thuật số 0 Kết nối GPS TX (dữ liệu ra từ GPS) với Kỹ thuật số 1

Chỉ cần chạy một mã arduino trống và mở màn hình nối tiếp trên 9600 baud. Nếu bạn nhận được dữ liệu gps, mô-đun gps của bạn hoạt động.

Làm cho nó hoạt động

Bắt đầu cài đặt thư viện gps adafruit bằng lệnh "sudo pip3 install adafruit-circuitpython-gps".

Bây giờ chúng ta có thể sử dụng mã python sau để xem liệu chúng ta có thể làm cho nó hoạt động hay không:

bảng nhập thời gian nhập bảng nhập 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')

trong khi Đúng:

gps.update () trong khi không phải gps.has_fix:

print (gps.nmea_sentence) print ('Đang chờ sửa chữa…') gps.update () time.sleep (1) tiếp tục

print ('=' * 40) # In dấu phân tách dòng.print ('Vĩ độ: {0:.6f} độ'. định dạng (gps.latitude)) print (' Kinh độ: {0:.6f} độ'. định dạng (gps.longitude)) print ("Sửa chất lượng: {}". format (gps.fix_quality))

# Một số thuộc tính ngoài vĩ độ, kinh độ và dấu thời gian là tùy chọn # và có thể không có. Kiểm tra xem chúng có Không có không trước khi cố gắng sử dụng! Nếu gps.satellites không phải là Không có:

print ("# vệ tinh: {}". format (gps.satellites))

nếu gps.altitude_m không phải là Không có:

print ("Độ cao: {} mét".format (gps.altitude_m))

nếu gps.speed_knots không phải là Không có:

print ("Tốc độ: {} hải lý".format (gps.speed_knots))

nếu gps.track_angle_deg không phải là Không có:

print ("Góc theo dõi: {} độ".format (gps.track_angle_deg))

nếu gps.horizontal_dilution không phải là Không có:

print ("Độ pha loãng theo chiều ngang: {}". định dạng (gps.horizontal_dilution))

nếu gps.height_geoid không phải là Không có:

print ("ID địa lý độ cao: {} mét".format (gps.height_geoid))

time.sleep (1)

Bước 4: Màn hình LCD 16x2

Màn hình LCD 16x2
Màn hình LCD 16x2

Giới thiệu

Các mô-đun LCD được sử dụng rất phổ biến trong hầu hết các dự án nhúng, lý do là giá thành rẻ, tính khả dụng và thân thiện với lập trình viên. Hầu hết chúng ta đều đã bắt gặp những màn hình này trong cuộc sống hàng ngày, ở PCO’s hoặc máy tính. LCD 16 × 2 được đặt tên như vậy bởi vì; nó có 16 Cột và 2 Hàng. Có rất nhiều kết hợp có sẵn như 8 × 1, 8 × 2, 10 × 2, 16 × 1, v.v. nhưng được sử dụng nhiều nhất là LCD 16 × 2. Vì vậy, nó sẽ có tổng cộng (16 × 2 = 32) 32 ký tự và mỗi ký tự sẽ được tạo từ 5 × 8 Pixel Dots.

Cài đặt smbus

Bus quản lý hệ thống (SMBus) ít nhiều là một dẫn xuất của bus I2C. Tiêu chuẩn này do Intel phát triển và hiện đang được SBS Forum duy trì. Ứng dụng chính của SMBus là theo dõi các thông số quan trọng trên bo mạch chủ PC và trong hệ thống nhúng. Ví dụ, có rất nhiều màn hình điện áp nguồn, màn hình nhiệt độ và màn hình điều khiển / giám sát quạt với giao diện SMBus có sẵn.

Thư viện chúng ta sẽ sử dụng yêu cầu smbus phải được cài đặt ổn định. Để cài đặt smbus trên rpi, hãy sử dụng lệnh "sudo apt install python3-smbus".

Làm cho nó hoạt động

trước hết cài đặt thư viện RPLCD bằng lệnh "sudo pip3 install RPLCD".

bây giờ chúng tôi kiểm tra màn hình LCD bằng cách hiển thị ip bằng mã sau:

từ RPLCD.i2c nhập ổ cắm CharLCDimport

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

lcd = CharLCD ('PCF8574', 0x27)

lcd.write_string ('Địa chỉ IP: / r / n' + str (get_ip_address ()))

Bước 5: Servo, Đèn Led, Nút và Công tắc

Servo, Đèn Led, Nút và Công tắc
Servo, Đèn Led, Nút và Công tắc

Giới thiệu

Động cơ servo là một cơ cấu truyền động quay hoặc động cơ cho phép điều khiển chính xác về vị trí góc, gia tốc và vận tốc, những khả năng mà động cơ thông thường không có. Nó sử dụng một động cơ thông thường và ghép nối nó với một cảm biến để phản hồi vị trí. Bộ điều khiển là bộ phận phức tạp nhất của động cơ servo, vì nó được thiết kế đặc biệt cho mục đích này.

LED viết tắt của điốt phát quang. Một linh kiện bán dẫn điện tử phát ra ánh sáng khi có dòng điện chạy qua nó. Chúng hiệu quả hơn đáng kể so với bóng đèn sợi đốt và hiếm khi bị cháy. Đèn LED được sử dụng trong nhiều ứng dụng như hiển thị video màn hình phẳng và ngày càng trở thành nguồn ánh sáng chung.

Nút nhấn hay đơn giản là nút là một cơ chế chuyển đổi đơn giản để điều khiển một số khía cạnh của máy móc hoặc quy trình. Các nút thường được làm từ vật liệu cứng, thường là nhựa hoặc kim loại.

Công tắc bật / tắt / bật có 3 vị trí trong đó vị trí ở giữa là trạng thái tắt, các loại này chủ yếu được sử dụng để điều khiển động cơ đơn giản, nơi bạn có trạng thái chuyển tiếp, tắt và đảo ngược.

Làm cho nó hoạt động: servo

Servo sử dụng tín hiệu PWM để xác định xem nó cần ở góc nào, thật may mắn cho chúng tôi GPIO có tích hợp tính năng này.

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)

trong khi Đúng:

duty_cycle = float (input ("Enter Duty Cycle (Left = 5 to Right = 10):")) pwm_servo. ChangeDutyCycle (duty_cycle)

Làm cho nó hoạt động: đèn led và công tắc

Do cách đấu dây của đèn led và công tắc, chúng ta không cần điều khiển hoặc đọc đèn led và tự chuyển mạch.

Làm cho nó hoạt động: nút

Đối với nút, chúng ta sẽ tạo lớp đơn giản của riêng mình theo cách này, chúng ta có thể dễ dàng nhìn thấy khi nó được nhấn mà không cần phải thêm phát hiện sự kiện vào nó mỗi lần chúng ta sử dụng nó. Chúng ta sẽ tạo tệp classbutton.py bằng cách sử dụng mã sau:

từ Nút GPIOclass nhập RPi:

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 đã được nhấn (self):

ingedrukt = GPIO.input (self.pin) trả về không ingedrukt

def on_press (self, call_method):

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

def on_release (self, call_method):

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

Bước 6: Toàn bộ mạch

Toàn bộ mạch
Toàn bộ mạch
Toàn bộ mạch
Toàn bộ mạch

Bây giờ chúng ta đã xem qua tất cả các thành phần đã đến lúc kết hợp tất cả chúng.

Trong khi các bức ảnh cho thấy các thành phần hiển thị mọi thứ trên bảng mạch chính thì tốt hơn hết là có màn hình LCD, GPS và nút kết nối bằng dây cái với dây đực Chỉ có t-cobbler và mpu6050 trên breadboard. sử dụng dây dài hơn để đảm bảo bạn có thể tiếp cận các thanh nhấp nháy và thanh lái.

Bước 7: Mã

Để giữ cho sự sạch sẽ có thể hướng dẫn này, tôi đã cung cấp một kho lưu trữ github với cả tệp phụ trợ và giao diện người dùng. Chỉ cần đặt các tệp vào thư mục giao diện người dùng trong / var / www / html. [tên người dùng] / [tên thư mục] thư mục

Bước 8: Cơ sở dữ liệu

Kho dữ liệu
Kho dữ liệu

Do cách hệ thống này được thiết lập nên một webhop đơn giản được thiết lập bằng cách sử dụng danh sách các sản phẩm trong cơ sở dữ liệu, hơn nữa chúng tôi có tất cả các điểm và đơn đặt hàng được lưu ở đây. Bạn có thể tìm thấy tập lệnh tạo trên kho lưu trữ github được liên kết trong bước tiếp theo

Bước 9: Trường hợp

Trường hợp
Trường hợp

Một khi chúng ta biết công việc của các thiết bị điện tử, chúng ta có thể nhét chúng vào một chiếc hộp. Bạn có thể tự do sáng tạo với nó. và gấp nó lại cho đến khi bạn có thứ mình thích. Đo và vẽ hộp đựng của bạn trên một mảnh giấy và làm nó từ vật liệu cứng cáp hơn như gỗ hoặc nếu đó không phải là thứ của bạn, hãy in nó. Chỉ cần đảm bảo tất cả các thiết bị điện tử vừa vặn bên trong và bạn có các lỗ cho nút bấm, dây dẫn đến công tắc, đèn LED và màn hình LCD.

Đề xuất: