Spisu treści:
- Kieszonkowe dzieci
- Krok 1: Zasilanie obwodu i Pi
- Krok 2: MPU6050
- Krok 3: GPS Adafruit Ultimate Breakout
- Krok 4: Wyświetlacz LCD 16x2
- Krok 5: Serwo, diody, przycisk i przełącznik
- Krok 6: Pełny obwód
- Krok 7: Kodeks
- Krok 8: Baza danych
- Krok 9: Sprawa
Wideo: Track&trace dla małych sklepów: 9 kroków (ze zdjęciami)
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:28
Jest to system stworzony z myślą o małych sklepach, które mają montować na e-rowerach lub e-skuterach w przypadku dostaw o krótkim zasięgu, na przykład piekarni, która chce dostarczać ciastka.
Co oznacza śledzenie i śledzenie?
Track and trace to system wykorzystywany przez przewoźników lub firmy kurierskie do rejestrowania ruchu paczek lub przedmiotów podczas transportu. W każdym miejscu przetwarzania towar jest identyfikowany, a dane przekazywane do centralnego systemu przetwarzania. Dane te są następnie wykorzystywane do nadania statusu/aktualizacji lokalizacji towarów spedytorom.
System, który stworzymy, pokaże również przebytą trasę i ilość otrzymanych wstrząsów i wstrząsów. Ta instrukcja zakłada również, że masz podstawową wiedzę na temat raspberry pi, python i mysql.
uwaga: zostało to wykonane na potrzeby szkolnego projektu, więc ze względu na ograniczenia czasowe jest dużo miejsca na ulepszenia
Kieszonkowe dzieci
-Malina Pi 4 model B
-Malinowy PI T-szewc
-4x 3,7 V akumulatory litowo-jonowe
-2x podwójny uchwyt baterii
-Konwerter obniżający napięcie DC Buck 5v
-2x duże pomarańczowe diody LED
-włącz/wyłącz/włącz
-przycisk
-adafruit ostateczny gps v3
-mpu6050
-16x2 wyświetlacz lcd;
-siłownik
Krok 1: Zasilanie obwodu i Pi
Jeśli chodzi o zasilanie obwodu pi baterią, masz kilka opcji, jak to zrobić.
Możesz użyć powerbanku i zasilać pi przez USB, może montujesz urządzenie na e-roweru lub e-skuterze, który ma port USB, być może masz baterię telefonu 5 V, która czeka na użycie lub możesz użyć 2 zestawy akumulatorów 3,7 V równolegle z konwerterem obniżającym napięcie, jak pokazano na zdjęciach;
Wszystko jest w porządku, o ile może zapewnić ciągłe 5 V i ma żywotność, z której jesteś zadowolony.
Krok 2: MPU6050
WprowadzenieModuł czujnika MPU6050 to zintegrowane 6-osiowe urządzenie do śledzenia ruchu.
- Posiada 3-osiowy żyroskop, 3-osiowy akcelerometr, cyfrowy procesor ruchu i czujnik temperatury, wszystko w jednym układzie scalonym.
- Różne parametry można znaleźć, odczytując wartości z adresów niektórych rejestrów za pomocą komunikacji I2C. Odczyty żyroskopu i akcelerometru wzdłuż osi X, Y i Z są dostępne w postaci uzupełnienia do dwóch.
- Odczyty żyroskopu są wyrażone w stopniach na sekundę (dps); Odczyty akcelerometru podane są w jednostkach g.
Włączanie I2C
Używając MPU6050 z Raspberry Pi, powinniśmy upewnić się, że protokół I2C na Raspberry Pi jest włączony. Aby to zrobić otwórz terminal pi przez putty lub inne oprogramowanie i wykonaj następujące czynności:
- wpisz "sudo raspi-config"
- Wybierz konfiguracje interfejsu
- W opcji interfejsu wybierz „I2C”
- Włącz konfigurację I2C
- Wybierz Tak, gdy pojawi się prośba o ponowne uruchomienie.
Teraz możemy testować/skanować w poszukiwaniu dowolnego urządzenia I2C podłączonego do naszej płyty Raspberry Pi, instalując narzędzia i2c. Możemy uzyskać narzędzia i2c za pomocą menedżera pakietów apt. Użyj następującego polecenia w terminalu Raspberry Pi.
"sudo apt-get install -y i2c-tools"
Teraz podłącz dowolne urządzenie oparte na I2C do portu trybu użytkownika i zeskanuj ten port za pomocą następującego polecenia, "sudo i2cdetect -y 1"
Następnie odpowie adresem urządzenia.
Jeśli adres nie zostanie zwrócony, upewnij się, że MPU6050 jest prawidłowo podłączony i spróbuj ponownie
Sprawiając, że to działa
teraz, gdy jesteśmy pewni, że i2c jest włączone, a pi może dotrzeć do MPU6050, zainstalujemy bibliotekę za pomocą polecenia „sudo pip3 install adafruit-circuitpython-mpu6050”.
jeśli zrobimy plik testowy Pythona i użyjemy następującego kodu, możemy sprawdzić, czy działa:
czas importu
importuj tablicę
importuj firmę
oimportuj adafruit_mpu6050
i2c = busio. I2C(płytka. SCL, płyta. SDA)
mpu = adafruit_mpu6050. MPU6050(i2c)
podczas gdy prawda:
print("Przyspieszenie: X:%.2f, Y: %.2f, Z: %.2f m/s^2" % (mpu.przyspieszenie))
print("Żyroskop X:%.2f, Y: %.2f, Z: %.2f stopnie/s" % (mpu.żyro))
print("Temperatura: %.2f C" % mpu.temperature)
wydrukować("")
czas.sen(1)
gdy chcemy teraz przyspieszyć w osi X/Y/Z, możemy użyć:
accelX = mpu.acceleration[0]accelY = mpu.acceleration[1] accelZ = mpu.acceleration[2]
łącząc to z prostym stwierdzeniem if w stałej pętli możemy policzyć ilość wstrząsów podczas podróży
Krok 3: GPS Adafruit Ultimate Breakout
Wstęp
Breakout jest zbudowany wokół chipsetu MTK3339, bezsensownego, wysokiej jakości modułu GPS, który może śledzić do 22 satelitów na 66 kanałach, ma doskonały odbiornik o wysokiej czułości (śledzenie -165 dB!) oraz wbudowaną antenę. Może wykonać do 10 aktualizacji lokalizacji na sekundę, aby uzyskać szybkie rejestrowanie lub śledzenie z dużą czułością. Zużycie energii jest niewiarygodnie niskie, tylko 20 mA podczas nawigacji.
Płytka jest wyposażona w: regulator o bardzo niskim spadku napięcia 3,3 V, dzięki czemu można go zasilać za pomocą wejścia 3,3-5 VDC, bezpieczne wejścia na poziomie 5 V, Dioda LED miga z częstotliwością około 1 Hz podczas wyszukiwania satelitów i miga raz na 15 sekund, gdy jest ustalona poprawka stwierdzono, że oszczędza energię.
Testowanie gps z arduino
Jeśli masz dostęp do arduino, dobrym pomysłem jest przetestowanie modułu z nim.
Podłącz VIN do +5V Podłącz GND do GroundConnect GPS RX (dane do GPS) do Digital 0 Podłącz GPS TX (dane z GPS) do Digital 1
Po prostu uruchom pusty kod arduino i otwórz monitor szeregowy z prędkością 9600 bodów. Jeśli otrzymasz dane GPS, twój moduł GPS działa. Uwaga: jeśli twój moduł nie zostanie naprawiony, spróbuj wystawić go przez okno lub na zewnątrz na tarasie
Sprawiając, że to działa
Rozpoczęcie instalacji biblioteki gps adafruit za pomocą polecenia "sudo pip3 install adafruit-circuitpython-gps".
Teraz możemy użyć następującego kodu Pythona, aby sprawdzić, czy możemy to zrobić:
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')gps.send_command(b'PMTK220, 1000')
podczas gdy prawda:
gps.update(), podczas gdy nie gps.has_fix:
print(gps.nmea_sentence)print('Oczekiwanie na naprawę…')gps.update()time.sleep(1)continue
print('=' * 40) # Wydrukuj separator line.print('Szerokość: {0:.6f} stopni'.format(gps.latitude))print('Długość: {0:.6f} stopni'.format (gps.longitude))print("Jakość poprawki: {}".format(gps.fix_quality))
# Niektóre atrybuty poza szerokością geograficzną, długością geograficzną i znacznikiem czasu są opcjonalne# i mogą nie być obecne. Sprawdź, czy to None przed próbą użycia! Jeśli gps.satellites nie jest None:
print("# satelity: {}".format(gps.satelity))
jeśli gps.altitude_m nie jest Brak:
print("Wysokość: {} metrów".format(gps.altitude_m))
jeśli gps.speed_knots nie jest Brak:
print("Prędkość: {} węzłów".format(gps.speed_knots))
jeśli gps.track_angle_deg nie ma wartości Brak:
print("Kąt ścieżki: {} stopni".format(gps.track_angle_deg))
jeśli gps.horizontal_dilution nie ma wartości Brak:
print("Rozcieńczenie poziome: {}".format(gps.rozcieńczenie_poziome))
jeśli gps.height_geoid nie jest Brak:
print("Identyfikator geograficzny wysokości: {} metrów".format(gps.height_geoid))
czas.sen(1)
Krok 4: Wyświetlacz LCD 16x2
Wstęp
Moduły LCD są bardzo powszechnie stosowane w większości projektów wbudowanych, ze względu na ich niską cenę, dostępność i przyjazność programistom. Większość z nas spotkałaby się z tymi wyświetlaczami w naszym codziennym życiu, zarówno w PCO, jak i kalkulatorach. Wyświetlacz LCD 16 × 2 został tak nazwany, ponieważ; ma 16 kolumn i 2 rzędy. Dostępnych jest wiele kombinacji, takich jak 8×1, 8×2, 10×2, 16×1 itd., ale najczęściej używany jest wyświetlacz LCD 16×2. Tak więc będzie miał łącznie (16×2=32) 32 znaki, a każdy znak będzie składał się z 5×8 pikseli.
Instalowanie SMBUS
Magistrala zarządzania systemem (SMBus) jest mniej więcej pochodną magistrali I2C. Standard został opracowany przez firmę Intel i jest obecnie utrzymywany przez SBS Forum. Głównym zastosowaniem SMBus jest monitorowanie krytycznych parametrów na płytach głównych komputerów PC oraz w systemach wbudowanych. Na przykład dostępnych jest wiele monitorów napięcia zasilania, monitorów temperatury i układów scalonych monitorujących/sterujących wentylatorami z interfejsem SMBus.
Biblioteka, której użyjemy, wymaga również zainstalowania smbus. Aby zainstalować smbus na rpi, użyj polecenia "sudo apt install python3-smbus".
Sprawiając, że to działa
najpierw zainstaluj bibliotekę RPLCD za pomocą polecenia "sudo pip3 install RPLCD".
teraz testujemy lcd, wyświetlając adres IP za pomocą następującego kodu:
z RPLCD.i2c importuj gniazdo importu CharLCD
def pobierz_adres_ip():
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 adres_ip
lcd = CharLCD ('PCF8574', 0x27)
lcd.write_string('Adres IP:\r\n'+str(get_ip_address()))
Krok 5: Serwo, diody, przycisk i przełącznik
Wstęp
Silnik serwo to siłownik lub silnik obrotowy, który pozwala na precyzyjne sterowanie pod względem położenia kątowego, przyspieszenia i prędkości, czego nie ma zwykły silnik. Wykorzystuje zwykły silnik i łączy go z czujnikiem w celu uzyskania informacji zwrotnej o położeniu. Sterownik jest najbardziej zaawansowaną częścią serwonapędu, ponieważ został specjalnie zaprojektowany do tego celu.
Dioda LED zwarta dla diody elektroluminescencyjnej. Elektroniczne urządzenie półprzewodnikowe, które emituje światło, gdy przepływa przez nie prąd elektryczny. Są znacznie wydajniejsze niż żarówki żarowe i rzadko się przepalają. Diody LED są używane w wielu zastosowaniach, takich jak płaskie ekrany wideo, a coraz częściej jako ogólne źródła światła.
Przycisk lub po prostu przycisk to prosty mechanizm przełączający do sterowania pewnym aspektem maszyny lub procesu. Guziki są zazwyczaj wykonane z twardego materiału, zwykle plastiku lub metalu.
Przełącznik on/off/on ma 3 pozycje, w których środkowa jest stanem wyłączonym. Te typy są najczęściej używane do prostego sterowania silnikiem, gdzie masz stan do przodu, wyłączony i wsteczny.
Jak to działa: serwo
Serwo wykorzystuje sygnał PWM do określenia, pod jakim kątem musi być na szczęście dla nas GPIO ma wbudowaną tę funkcję. Dlatego możemy po prostu użyć następującego kodu do sterowania serwo: import RPi. GPIO jako GPIOimport time
serwo_pin = 18 cykl_pracy = 7,5
GPIO.setmode(GPIO. BCM)
GPIO.setup(servo_pin, GPIO. OUT)
pwm_servo = GPIO. PWM(servo_pin, 50) pwm_servo.start(cykl_pracy)
podczas gdy prawda:
duty_cycle = float(input("Wprowadź cykl pracy (od lewej = 5 do prawej = 10):"))pwm_servo. ChangeDutyCycle(duty_cycle)
Sprawia, że działa: dioda i przełącznik
Ze względu na sposób, w jaki okablowaliśmy diody i przełącznik, nie musimy kontrolować ani odczytywać diod i samego przełącznika. Po prostu wysyłamy impulsy do przycisku, który z kolei przekieruje sygnał do wybranej diody.
Sprawienie, by to działało: przycisk
Dla przycisku stworzymy naszą własną prostą klasę w ten sposób, że łatwo zobaczymy, kiedy jest wciśnięty, bez konieczności dodawania do niego zdarzenia wykrywania za każdym razem, gdy go użyjemy. Utworzymy plik classbutton.py za pomocą następującego kodu:
z RPi import GPIOclass Przycisk:
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 wciśnięty(self):
ingedrukt = GPIO.input(self.pin) return nie 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)
Krok 6: Pełny obwód
Teraz, gdy omówiliśmy wszystkie komponenty, nadszedł czas, aby je wszystkie połączyć.
O ile na zdjęciach widać, że podzespoły pokazują wszystko na płytce stykowej, lepiej mieć LCD, GPS adafruit i przycisk podłączony przewodami żeńskimi do męskich Na płytce stykowej tylko t-cobbler i mpu6050. Jeśli chodzi o diody i przełącznik użyj dłuższych przewodów, aby mieć pewność, że możesz dosięgnąć kierunkowskazów i kierownicy.
Krok 7: Kodeks
Aby utrzymać tę instrukcję w czystości, udostępniłem repozytorium github z plikami backendu i frontendu. Po prostu umieść pliki w folderze frontend w folderze /var/www/html, a pliki w folderze backend w folderze w /home/ [nazwa użytkownika]/[nazwa folderu] folder
Krok 8: Baza danych
Ze względu na sposób, w jaki ten system jest skonfigurowany, można skonfigurować prosty sklep internetowy za pomocą listy produktów w bazie danych, ponadto mamy tutaj zapisane wszystkie punkty drogi i zamówienia. Skrypt tworzenia można znaleźć w repozytorium github połączonym w Następny krok
Krok 9: Sprawa
Kiedy już wiemy, że elektronika działa, możemy wepchnąć je do pudełka. Dzięki temu możesz mieć trochę twórczej swobody. Przed zbudowaniem po prostu weź kartonowe pudełko, którego już nie potrzebujesz, na przykład puste pudełko po płatkach śniadaniowych i wytnij je, zaklej taśmą i złóż go, aż będziesz miał coś, co ci się podoba. Zmierz i narysuj obudowę na kawałku papieru i zrób ją z mocniejszego materiału, takiego jak drewno, a jeśli to nie jest twoja sprawa, wydrukuj to w 3D. Tylko upewnij się, że cała elektronika pasuje do środka i masz otwory na przycisk, przewód biegnący do przełącznika, diody LED i lcd. Po założeniu obudowy wystarczy znaleźć sposób zamontowania jej na rowerze lub skuterze
Zalecana:
Zegar 7-segmentowy - wersja dla małych drukarek: 9 kroków (ze zdjęciami)
Zegar 7-segmentowy - wersja dla małych drukarek: kolejny zegar 7-segmentowy. xDChociaż muszę powiedzieć, że nie wygląda to tak szalenie podczas oglądania mojego profilu Instructables. Prawdopodobnie staje się to bardziej irytujące, gdy spojrzysz na mój wszechstronny profil. Więc dlaczego w ogóle zawracałem sobie głowę robieniem kolejnego
Konwerter doładowania dla małych turbin wiatrowych: 6 kroków
Boost Converter dla małych turbin wiatrowych: W moim ostatnim artykule o sterownikach śledzenia maksymalnego punktu mocy (MPPT) pokazałem standardową metodę wykorzystania energii pochodzącej ze zmiennego źródła, takiego jak turbina wiatrowa i ładowania akumulatora. Generator, którego użyłem to silnik krokowy Nema
SYSTEM POS DLA SKLEPÓW, SPOŻYWCZYCH I CENTRÓW SERWISOWYCH EXCEL Z wykorzystaniem kodów kreskowych: 7 kroków
SYSTEM POS DLA SKLEPÓW, SPRZEDAŻY I CENTRÓW USŁUGOWYCH FIRMY EXCEL Z wykorzystaniem kodów kreskowych: W tym blogu przedstawiam Państwu jak stworzyć prosty system POS (point of sales) dla małych sklepów spożywczych i punktów usługowych. Dzięki tej metodzie możesz zarządzać następującymi obiektami bez specjalnego oprogramowania lub drogiego sprzętu. przeciwko Iss
Projekt ciemni domowej dla małych pomieszczeń: 7 kroków (ze zdjęciami)
Projekt ciemni domowej dla małych pomieszczeń: Widok 360 stopni mojej przerobionej szafy - Obraz sferyczny - RICOH THETAHi, chciałbym zacząć od stwierdzenia, że ten projekt ciemni nie będzie miał zastosowania dla wszystkich. Twoja szafa może być większa, mniejsza lub korzystasz z łazienki. T
Niedrogie motoreduktory dla małych robotów: 5 kroków (ze zdjęciami)
Niedrogie motoreduktory do małych robotów: Potrzebujesz małych, mocnych i niedrogich silników do swojego najnowszego projektu małego robota? Odkryłem te „N20”; Motoreduktory rok temu, kiedy pracowałem nad moim projektem ProtoBot. Są małe, potężne i obfitują w wiele źródeł internetowych. Ty