Spisu treści:

ESP32 ADXL345 DATALOGGER Z GPS_EXT RAM_EXT_RTC: 8 kroków
ESP32 ADXL345 DATALOGGER Z GPS_EXT RAM_EXT_RTC: 8 kroków

Wideo: ESP32 ADXL345 DATALOGGER Z GPS_EXT RAM_EXT_RTC: 8 kroków

Wideo: ESP32 ADXL345 DATALOGGER Z GPS_EXT RAM_EXT_RTC: 8 kroków
Wideo: ESP32 - Vibration Data Logger (Fourier Transform) 2024, Lipiec
Anonim
ESP32 ADXL345 DATALOGGER Z GPS_EXT RAM_EXT_RTC
ESP32 ADXL345 DATALOGGER Z GPS_EXT RAM_EXT_RTC
ESP32 ADXL345 DATALOGGER Z GPS_EXT RAM_EXT_RTC
ESP32 ADXL345 DATALOGGER Z GPS_EXT RAM_EXT_RTC
ESP32 ADXL345 DATALOGGER Z GPS_EXT RAM_EXT_RTC
ESP32 ADXL345 DATALOGGER Z GPS_EXT RAM_EXT_RTC

Dla tych z was, którzy bawią się tablicą Wemos 32 LOLIN, pomyślałem, że zacznę dokumentować niektóre z moich dotychczasowych ustaleń.

Obecny projekt to interfejs do akcelerometru ADXL345 i jak widać na powyższym zdjęciu, z powodzeniem podłączyłem go do Lolin i skonfigurowałem ADXL jako czujnik wstrząsów.

Rejestry w ADXL zostały skonfigurowane jako załączony plik pdf, a przerwanie skonfigurowane w kodzie, aby wypluć kod na porcie szeregowym po wykryciu wstrząsu.

Ustawiłem również rejestr nieaktywności jako przerwanie i po sprawdzeniu, które przerwanie zostało wyzwolone, wyplułem te same dane.

Używam portu I2c na LOLIN i zobaczysz, że mam procedurę wypluwania rejestrów na ADXL, abym mógł sprawdzić konfigurację podczas debugowania. Ta funkcja działa w funkcji timera przy użyciu biblioteki ticker. Jest to przydatna funkcja do skonfigurowania debugowania i sprawdzania rejestrów w przypadku, gdy napiszesz tam coś, co w tajemniczy sposób powoduje, że dane robią dziwne rzeczy.

Znormalizowałem dane komplementów 2 w LOLIN i sformatowałem je, aby można je było zaimportować do programu Excel.

Spójrz na załączony plik PDF z niektórymi danymi, które zaimportowałem i narysowałem wykres w programie Excel, pokazując kilka stuknięć w ADXL, które są wyzwalane przez przerwanie w rejestrze wyzwalaczy w trybie FIFO.

Tryb FIFO jest przydatną funkcją, która nie wiąże mikroukładu i przechowuje 32 próbki na wyzwalaczu. Jeszcze raz spójrz na moje zrzuty danych i możesz zobaczyć, gdzie zaczynamy od punktu zerowego, a ostatnia próbka ma 9,8 ms lub mniej więcej. Linia X na wykresie pokazuje czas w mikrosekundach, rosnący od lewej do prawej.

UWAGA OD ZMIANY OSTATNIEGO WYKRESU POKAZAŁEM OSI CZASU OD MINUS 9800 mikrosekund. Pierwszy pop FIFO to najwcześniejsze dane, reszta jest starsza. Widok powinien być od prawej do lewej.

Zwróć uwagę na trzy przewody do płyty ADXL. SDA/SCL i INT z INT 1. Ponownie, jeśli spojrzysz na ustawienia rejestru i odniesiesz się do arkusza danych, będzie to miało sens.

Próbka danych jest w pełni nachylona przy 3200 próbkach, co daje 3125 usekund między próbkami i wstępne przechwycenie 4 próbek. Spójrz na plik PDF danych z urządzenia w programie Excel i każdy z wykresów, które narysowałem, pokazując, jak przesuwam okno przechwytywania.

Wrzucę trochę kodu configu i przerwań, jeśli ktoś jest zainteresowany.

Dla I2C używam biblioteki drutu i napisałem kilka funkcji wokół tego.

Zwróć uwagę na mały sniffer danych, który podłączyłem do SDA/SDL i za pomocą Sigroka mogę dekodować magistralę I2C w czasie rzeczywistym.

Następnym krokiem jest zapisanie na dysku SAN, chociaż już udowodniłem, że działa. Gdy to zrobię, połączę się z siecią bezprzewodową i załaduję na stronę internetową.

Dodam do tego w miarę rozwoju projektu.

NOTATKA:

Dla spostrzegawczych zauważysz duże wgniecenie w puszce chroniącej układ esp i zworkę na płytce drukowanej. Stało się tak za sprawą rezydenta Cocker Spaniela, który sprawdził pocztę i postanowił przeżuć deskę, zanim dał mi do niej dostęp. Myślę, że jest fanką non espressif!.

Oczywiście jak zawsze jestem gotowy na pytania, więc proszę pytaj.

Krok 1: SIGROK I PULSEVIEW

SIGROK I PULSEVIEW
SIGROK I PULSEVIEW
SIGROK I PULSEVIEW
SIGROK I PULSEVIEW

Wystarczy krótka wzmianka o pulsview i sigroku.

Jest to darmowe oprogramowanie z sieci, a mała płytka interfejsu z 8 wejściami logicznymi jest tania z serwisu eBay i innych. Zauważysz kilka obrazów, które złapałem z autobusu, gdy działał ADXL i jest tak przydatny do debugowania, jak to posiada wbudowany dekoder dla I2C.

Zakres jest świetny do sprawdzania poziomów sygnału, ale ręczne dekodowanie I2c jest w najlepszym razie męczące, chociaż wcześniej skonfigurowałem pętlę i ręcznie debugowałem. Musisz docenić trochę walenie na poziomie portu, co zrobiłem w wielu projektach zdjęciowych, ale jest to czasochłonne i podatne na błędy… zwłaszcza w nocy!

Dzięki chłopakom, którzy napisali tę aplikację. To bóg posyłający projekty w i2c, Zwróć uwagę na linię D4, która monitoruje linię przerwań z ADXL.

Krok 2: Dodawanie do czujnika wstrząsów

Dodawanie do czujnika wstrząsów
Dodawanie do czujnika wstrząsów
Dodawanie do czujnika wstrząsów
Dodawanie do czujnika wstrząsów
Dodawanie do czujnika wstrząsów
Dodawanie do czujnika wstrząsów
Dodawanie do czujnika wstrząsów
Dodawanie do czujnika wstrząsów

Ok, dodałem kilka urządzeń peryferyjnych do czujnika wstrząsów w celu sprawdzenia koncepcji.

Przepraszam, na razie szczurze gniazdo, kiedy już zadziała, zaprojektuję płytkę, która łączy wszystkie elementy i umieszczę to wszystko w ładnym pudełku. Wszystkie dołączone elementy z wyjątkiem karty SD działają na i2c, który znajduje się na magistrali spi.

Pozostał do podłączenia moduł GPS, który jest WIP, ale mam nadzieję, że do końca tego tygodnia będę miał rozwiązanie.

Tak więc obecny projekt składa się z:

Płytka ESP32 LOLIN z łącznością bezprzewodową.

Zegar czasu rzeczywistego PCF. Śledzi aktualną datę i godzinę. Przylutowałem zgrubnie do starej płyty projektowej, którą wcześniej wytrawiłem.

Zewnętrzna lampa błyskowa. Przechowuje dane konfiguracyjne akcelerometru między innymi. Pojemność 132k i może zrzucić na niego niektóre dane internetowe, aby ułatwić menu itp.

Karta SD SPI do przechowywania danych i logów akcelerometru plików. 8 GB, ale z możliwością rozbudowy.

Wyświetlacz OLED do wyświetlania menu i kilku innych rzeczy.

Oto, co [ostatecznie] zrobi

Monitoruj wstrząsy i aktywność wykraczającą poza tło.

Zarejestruj wstrząsy na karcie SD z czasem i datą z pokładowego zegara.

Stempluj lokalizację z GPS na kartę SD, jeśli to możliwe

Za pomocą punktu dostępowego prześlij dane na serwer sieciowy w celu analizy danych… może to być telefon komórkowy.

| Skanowanie w poszukiwaniu punktów dostępowych jest funkcją LOLIN32, podobnie jak hostowanie serwera WWW dla poleceń, a następnie łączenie się jako klient z serwerem WWW w chmurze. Zawsze możesz po prostu odłączyć kartę SD i przesłać ją!

Wciąż wiele do zrobienia, ale idzie dalej.

Krok 3: ADRESOWANIE ADXL

ADRESOWANIE ADXL
ADRESOWANIE ADXL

Teraz jest zabawna rzecz. Kupiłem chip ADXL 345 jako małą płytkę, ponieważ był tańszy niż kupowanie samego chipa….. jak to działa? W każdym razie potem zacząłem podłączać go do magistrali i2c i stwierdziłem, że mam konflikt z eepromem z adresami, które faktycznie zaczynają się od 0x53, co przekłada się na zapis w A6 i odczyt w A7.

Więc czytając bum, okazuje się, że jeśli weźmiesz SDO/ALT ADDRESS HIGH, możesz zmusić go do 1D

Okazuje się, że moja mała deska jest na stałe podłączona do masy na pinie 12 ADXL, pomimo pinu SDO, który wygląda na to, że można go wyciągnąć wysoko. Nie próbuj tego w domu bez prądu o ograniczonym zasilaniu…. na szczęście miałem co spowodowało, że wyjąłem multimetr i sprawdziłem pin do masy.. To działa i wydostanie cię z balu. Na szczęście nie zrobili zwarcia pod chipem, bo inaczej byłbym snooker i musiałbym usunąć chip z planszy. EEprom, który jest zapasowym, który miałem, jest ustawiony jako dwie strony 64k jako adres 0x52 i 53. Kiedy to zrobiłem, mój problem został rozwiązany.

Czytając ponownie stronę internetową, mówi, że jest ustawiony na 0x53, ale jest napisany drobnym drukiem, więc uważaj!

Krok 4: Schematyczne wydruki PCB

Oto krótki przegląd obwodu i komponentów. To bardzo mój projekt i nadal WIP [Praca w toku]Schemat został zaprojektowany, a następnie przełożony na szatę graficzną utworów. moje szczurze gniazdo zbliża się i teraz montuję na desce, która zmieści się w małym pudełku [Szczegóły do naśladowania]

Odnosząc się do shocker.pdf.

Płyta składa się z 8 głównych elementów

  1. PRZECHOWYWANIE NA KARCIE SD
  2. AKCELEROMIERZ ADXL
  3. WYŚWIETLACZ OLED
  4. 3,3 V REG
  5. MODUŁ GPS1
  6. EEPROM
  7. TIMER RTC
  8. ESP32 LOLIN CHIP Z BEZPRZEWODOWYM INTERFEJSEM RF

Wszystko zależy od akcelerometru.

ADXL jest skonfigurowany do przerywania procesora na INT1, który jest kierowany do pinu 14 w procesorze. Kod w mikro jest skonfigurowany do przechwycenia tego przerwania i ustawienia flagi, która działa w głównej procedurze. Dodam kod opisując później rejestrację procedury przerwania i funkcji zwrotnej.

ADXL obsługuje przerwania w różnych stanach, takich jak wstrząs lub brak aktywności plus kilka innych. Możesz zamaskować te, które łaskoczą twoją wyobraźnię w oparciu o to, co próbujesz zrobić. ADXL działa w trybie FIFO, dzięki czemu przechowuje 32 próbki aby uchwycić zdarzenie wstrząsu jako XYZ [96 wartości]

Wyświetlacz ADXL RTC i EEPROM są sterowane z I2C. Karta SD jest podłączona do SPI I/O, a moduł GPS jest podłączony do portów szeregowych na LOLIN oznaczonych X12 X11.

Sekwencja jest następująca Ciągle pobieraj dane 232 z urządzenia GPS i filtruj. Gdy masz poprawny czas GPS, aktualizuj RTC w określonych odstępach czasu. Po przerwaniu zapisz zmienne na karcie SD, takie jak czas/długość_szerokości/prędkość/wysokość/zapisz rejestry ADXL w komplement surowego formatu 2 i uzupełnienie nie 2. Wszystkie dane są rozdzielane przecinkami.

Zauważysz również, że istnieje pin resetujący, który jest podłączony do pinu 13. Ten pin uruchomi wbudowany serwer sieciowy, umożliwiając połączenie z konfiguratorem w celu skonfigurowania punktu dostępowego, który jest przechowywany w pamięci EEPROM. Po ponownym uruchomieniu procesor połączy się z punktem dostępu i uzyska dostęp do Internetu, aby przesłać pliki z karty SD. Jeśli nie ma danych ani punktu połączenia, urządzenie po prostu przeprowadza proces rejestrowania danych na karcie SD, którą można odpytywać za pomocą program [ShockerView.exe][WIP]Na serwerze dane są zapisywane w bazie danych SQL i wyświetlane[WIP]

Wydruki PCB są dołączone do góry i dołu.

Krok 5: Prototyp wytrawiania grafiki

Prototyp wytrawiania grafiki
Prototyp wytrawiania grafiki
Prototyp wytrawiania grafiki
Prototyp wytrawiania grafiki
Prototyp wytrawiania grafiki
Prototyp wytrawiania grafiki

Oto jak produkuję moje płytki prototypowe

Wydrukuj grafikę na grubym papierze kreślarskim. Używam 63 GSM od kowali, tanio i wesoło. Kluczem jest tutaj drukarka. Chcesz jak najbardziej nieprzezroczysty i tak czysty, jak to możliwe. Moja drukarka laserowa działa teraz, ale nadaje się do drukowania do 10 tysięcy, mniej niż potrzebujesz specjalistycznego sprzętu, ponieważ ziarno kalki kreślarskiej zaczyna przeszkadzać. Możesz kupić specjalistyczny papier, ale hej, to za dobre dla takich jak ja. W każdym razie ciągle udoskonalam swoje projekty, więc byłoby to za drogie dla małej staruszki. Jeśli potrzebujesz odpowiedniej deski, poproś o to ekspertów.

Zwykle robię prototypy moich desek w sekcjach, a następnie produkuję finał z gerberami dla firmy internetowej. Prototyp sortuje wszystkie te błędy i pominięcia przed wydaniem prawdziwych pieniędzy.

Po wydrukowaniu obrazów na dwóch oddzielnych arkuszach kalki A4 należy je przyciąć tak, aby nakładały się na siebie i sklejały je na swoim miejscu. pozostaw wystarczająco dużo miejsca, aby dwustronna deska wcisnęła się między warstwy i upewnij się, że zadrukowana strona przylega do płytki. Zrób kilka szczelin, aby umożliwić wsunięcie deski i tymczasowo taśmę klejącą. Jeśli będziesz ostrożny, możesz nałożyć taśmę klejącą, aby umożliwić jej oderwanie bez niszczenia obrazu śledzącego.

Połóż deskę jedną stroną do dołu w pudełku UV. NB Ja zrobiłem moją używając czterech nowych 13W lamp UV i jakiegoś starego osprzętu sterującego i zrobiłem pudełko z przezroczystym szklanym panelem. Rozstaw był eksperymentalny. Pokrywka zatrzaskuje się i dociska piankę do tylnej części deski, dociskając maskę do szyby. Jeśli tego nie zrobisz, światło podważy odporność na trawienie. Włącz i odsłoń deskę przez 1 minutę 40 sekund na stronę. Użyj zegarka. Właściwie muszę to zmodyfikować za pomocą timera… och nie ma innego projektu… może kupię jeden… wiesz, że nie! Płyty, które kupuję od Mega Electronics, to tanie prototypowe płyty z odpornością na trawienie. Odporność na trawienie jest czasami nieco niejednolita, ale mam kilka płyt, które mam od czterech lat i nadal produkują dobre płyty do prototypowania!

Uważaj, gdy odwracasz deskę, nie pozwól jej się ześlizgnąć, bo będziesz mieć trochę śmieci.

Teraz przygotuj swojego programistę. Używam 2 nakrętek w stosunku 18:1, czyli 2 nakrętek wywoływacza i 36 nakrętek czystej, nieskażonej wody z kranu. Wywoływacz jest dostępny w formie butelki lub proszku, a butelka wystarcza na około 6 lat!!. Wymieszaj w pojemniku na lody I ZAŁOŻ RĘKAWICE. Nie wkładaj do niego palców, ponieważ smar na niego wpłynie. Temperatura może być problemem w zimie. Utrzymuj wodę w temperaturze około 20 stopni, nie jest to krytyczne, ale jeśli jest zimno, wyniki mogą być nieprzewidywalne. Zrobiłem to w styczniu w garażu z czajnikiem, więc możesz to zrekompensować.

Delikatnie przesuwaj pojemnik z boku na bok, gdy już włożysz do niego swoją płytę. Jeśli zrobiłeś to dobrze, zobaczysz, że z miedzi usuwany jest strumień Magenta odpornej na trawienie, odsłaniając uroczą błyszczącą miedź między ścieżkami. Odwróć ją, używając rękawiczek, aby sprawdzić drugą stronę. Ten proces zwykle zajmuje około minuty, więc po zakończeniu wyjmij deskę i dokładnie spłucz w ciepłej wodzie. Jeśli jest nudny, to szanse są nieudane.

Miałem to kilka razy, ale zwykle dlatego, że nie założyłem rękawiczek lub temperatura była zbyt niska lub zepsułem czas ekspozycji z powodu jakiegoś rozproszenia… dlaczego robią to w środku czegoś krytycznego….

Pokaż mi swoje akwaforty

Ok, więc masz teraz deskę z pięknymi zielonymi ścieżkami chronionymi przez odporność na trawienie i teraz musisz uzupełnić chlorek żelaza. Teraz używam tego samego pojemnika na lody, aby zminimalizować marnotrawstwo i mieszam do notatek na opakowaniu. Kupuję chlorek żelaza w paczkach kulek, które odważasz i rozpuszczasz w roztworze. Uzupełnij tyle, aby wypełnić pojemnik z lodami w około 1/3 wysokości. Jeśli uzupełnisz wystarczająco dużo, możesz przelać do plastikowego pojemnika i wytrzyma przez długi czas.

MUSISZ ZAKŁADAĆ RĘKAWICE… nie ze względu na tłuszcz itp., ale dlatego, że jeśli tego nie zrobisz, Twoje ręce będą jasnopomarańczowe przez dwa tygodnie. Kiedyś zrobiłem to przed ważnym spotkaniem w Londynie i wyglądało na to, że byłem tango. Jednak pamiętaj, że te rzeczy są paskudne w stosunku do wszystkiego, co miedziane… i czegokolwiek naprawdę. Noś stare ubrania, ponieważ jeśli się na nie dostanie, zostaną zniszczone. Przykleja się do zlewów ze stali nierdzewnej i generalnie plami wszystko. Rób to na zewnątrz lub w wychodku z dala od wszystkiego. Nie wylewaj resztek do kanalizacji, jest to świetny sposób na zabijanie bakterii, co nie jest tym, co władze wodne chciałyby promować w szambach. Dla niektórych władz jest to również nielegalne, więc nie rób tego.

Kiedy po raz pierwszy zanurzysz swoją deskę w roztworze, będzie miała piękny czerwony brązowy kolor, gdy miedź zostanie zaatakowana. Jeśli tak się nie stanie, możesz nadal mieć warstwę ochrony przed wytrawianiem, która uniemożliwia działanie wytrawiacza lub rozwiązanie jest błędne. Jeśli tak jest, to obawiam się, że wracam do deski kreślarskiej, ale nie jest prawdopodobne, że twój wytrawiacz jest zły, jeśli podążałeś za zniszczeniami.

W każdym razie, jeśli wszystko jest w porządku, masz kilka doskonałych utworów chronionych przez odporność na trawienie.

Zwykle w tym momencie profesjonalista używałby zestawu masek, aby rozwinąć wokół otworów i podkładek i wytworzyć przelotkę miedzianą, a także użyć sitodruku do malowania numerów komponentów itp. Niestety nie mam czasu ani ochoty na wykonanie moich przelotek użycie drutu miedzianego od warstwy do warstwy … oczywiście wielowarstwowa jest nie do przyjęcia w tej metodzie. Jeśli jestem w nastroju, będę starannie dodawał numery komponentów do warstwy wydruku, aby wytrawić również numery komponentów. Może to zaoszczędzić trochę czasu w montażu, ale zależy od tego, jak zajęta jest tablica.

Teraz wystawiam ścieżki na kolejne 2 minuty z każdej strony i zanurzam w wywoływaczu, aby usunąć całą odporność na trawienie.

Teraz wiercę przelotki i wszelkie otwory przelotowe, cynuję wszystkie ścieżki i sprawdzam ciągłość za pomocą multimetru. Ta część to ból kuli i normalnie nie zrobiłbyś tego w przypadku profesjonalnej płyty z prawdziwymi przelotkami, ale warto to zrobić, aby uniknąć przewodu lutowanie tylko z jednej strony… zdarzyło się tyle razy!

Krok 6: Montaż tablicy

Montaż tablicy
Montaż tablicy
Montaż tablicy
Montaż tablicy
Montaż tablicy
Montaż tablicy

OK, więc teraz mam płytę gotową do pracy i wywierciłem wszystkie przelotki i otwory.

Przeciągnij wszystkie przelotki drutem i przylutuj z obu stron. Lubię cynować wszystkie gąsienice, ponieważ ochrona nie musi tego robić, ale zatrzymuje utlenianie miedzi.

Dołączyłem kartę SD, która jest do montażu powierzchniowego i dodałem dwa lądy, aby uzyskać na niej przyczepność lutowia, a także ma kilka szpilek pod spodem, aby ją zakotwiczyć.

Następnie dodano EEPROM ADXL itp.

Jeśli chodzi o moc, plan polega na pobraniu 5 V z USB lub zewnętrznego Bata i zasileniu go przez 3,3 V reg na płycie. Mam mały reg, który kupiłem w serwisie eBay, który jest zmontowany jako moduł i oceniany na 800 mA … to 300 gretaer niż USB może zapewnić. Nie wykonałem jeszcze żadnych pomiarów mocy, ponieważ może to poprawić w oprogramowaniu….. może użyć przerwania INACTIVITY z ADXL, aby sobie z tym poradzić. [WIP]

…trzeba dodawać zdjęcia w miarę postępu kompilacji.

Krok 7: KODOWANIE

OK, nie będę przechodził przez wszystkie ustawienia arduino, ponieważ ktoś inny wykonał znacznie lepszą pracę gdzie indziej.

Po prostu wybiorę odpowiednie fragmenty, które można wykorzystać w twoim własnym projekcie.

Nadal trwają prace, o ile rozważane jest przesyłanie do witryny, ale przejdźmy przez część kodu.

Chodzi o to, że normalną funkcjonalnością jest init urządzeń, które składają się z GPS /display/karty sd/zegar czasu rzeczywistego /ext_flashmemory i akcelerometr.

Następnie wchodzimy w pętlę, czekając na wciśnięcie klawisza przerwania sw. Jeśli jest to następnie przejdź do menu konfiguratora, aby skonfigurować sieć Wi-Fi tak, aby automatycznie logowała się na urządzenie określone jako wejście do konfiguratora strony internetowej. Najpierw skanuje wszystkie urządzenia w poszukiwaniu identyfikatora ssid, a następnie pozwala wybrać jeden i zapisuje go do flashowania z flagą wskazującą, że przy następnym rozruchu załaduj ustawienia z pamięci flash. Zawsze możesz to zmienić, wprowadzając adres IP i wpisując /killbill, aby zainicjować wyczyszczenie pamięci flash i załadować domyślne.

oto funkcja przerwania zdefiniowana w kodzie akcelerometru adxl oraz skok do konfiguratora na dwóch osobnych pinach. Używamy przerwania ADXL do przerwania przy zdarzeniu SHOCK. Dla obu przerwań ustawiamy flagę, która jest resetowana w głównej "pętli". oto jak to wygląda:

spójrz na załączony kod

Krok 8: Znajdowanie pinów SDA SCL

użyj tego kodu:

Serial.println(SDA);

Serial.println(SCL);

drukuje piny aktualnie skonfigurowane w ESP dla SDL i SCL

Istnieje plik, który służy do mapowania pinów do funkcji takich jak porty szeregowe w ESP32

Zalecana: