Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Pelacak Perjalanan Mudah Canggih dengan Arduino: GPS, Sensor & Baterai

Komponen dan perlengkapan

Alat dan mesin yang diperlukan

Aplikasi dan layanan online

Arduino IDE digunakan untuk pemrograman.

Tentang proyek ini

Apa itu Pelacak Perjalanan Mudah?

Pelacak Perjalanan Mudah adalah perangkat untuk merasakan perubahan di lingkungan sekitar seorang pemandu perjalanan mudah selama berjalan kaki.

Ide adalah untuk mengamati perubahan suhu, tekanan, kelembaban, ketinggian, lokasi, arah dll. Ini memberikan wawasan menarik tentang berjalan kaki.

Di pegungan di mana dingin, kering, udara kepadatan rendah dibandingkan dengan daratan lebih rendah, banyak orang merasa sulit untuk bernapas. Beberapa mengalami iritasi kulit kering. Perangkat ini memungkinkan orang yang tertarik dengan berjalan kaki untuk mengetahui batas mereka. Ada juga kegiatan pergi ke tempat ketinggian tinggi. Dapat mengetahui ketinggian adalah hal yang menyenangkan!

Tidak hanya pegungan tetapi juga menjelajahi rawa, gurun, hutan - dengan masing-masing memiliki profil lingkungan yang unik, dapat memantau lingkungan saat bepergian adalah cara yang lebih baik untuk memahami alam.

Pelacak Perjalanan Mudah Canggih dengan Arduino: GPS, Sensor & Baterai

Video demonstrasi

Langkah 1: Perangkat keras, untuk apa?

Ada banyak pemantauan yang berlangsung dengan proyek ini

Accessory Shield dilengkapi dengan beberapa perangkat I2C papan:

Pada Arduino Uno:

Langkah 2: Memodifikasi & Menghubungkan Perangkat Keras

Beberapa modifikasi dilakukan pada Arduino Uno. Ia dipasang pada tampung baterai 4 AA dengan standoff baut dan lem panas.

Pelacak Perjalanan Mudah Canggih dengan Arduino: GPS, Sensor & Baterai

4 AA dan CR1220 (untuk RTC) dipasang pada tampung baterai.

Pelacak Perjalanan Mudah Canggih dengan Arduino: GPS, Sensor & Baterai

Ada ruang di antara tampung baterai dan papan Arduino Uno di mana sensor tekanan, kelembaban, magnetik dan GPS dapat ditempatkan.

Pelacak Perjalanan Mudah Canggih dengan Arduino: GPS, Sensor & Baterai

Sensor I2C disolder bersama pada potongan papan pref dan ditempatkan di ruang ini

Pelacak Perjalanan Mudah Canggih dengan Arduino: GPS, Sensor & Baterai

Sensor ini terhubung ke Arduino Uno dari sisi bawah:

Pelacak Perjalanan Mudah Canggih dengan Arduino: GPS, Sensor & Baterai

Pembagi tegangan ditambahkan untuk mengukur tegangan baterai 4 baterai AA.

Pelacak Perjalanan Mudah Canggih dengan Arduino: GPS, Sensor & Baterai

Garir pengukuran tegangan paket baterai AA pergi ke pin ADC A1:

Pelacak Perjalanan Mudah Canggih dengan Arduino: GPS, Sensor & Baterai

Joystick pada shield dipetakan ke pin ACD A1 melalui A5. Itulah sebabnya joystick dilepas dan dilepas.

Pelacak Perjalanan Mudah Canggih dengan Arduino: GPS, Sensor & Baterai

Dengan menghubungkan beberapa pad pada Accessory Shield (untuk skematik lihat referensi) dengan jembatan solder D2 (untuk reset lunak), D3, D9, D10 pin Arduino dibuat tersedia pada antarmuka Xbee.

Pelacak Perjalanan Mudah Canggih dengan Arduino: GPS, Sensor & Baterai

Komponen bertumpuk seperti ini:

Pelacak Perjalanan Mudah Canggih dengan Arduino: GPS, Sensor & Baterai

Dan koneksi terlihat seperti ini:

Pelacak Perjalanan Mudah Canggih dengan Arduino: GPS, Sensor & Baterai

Langkah 3 : Memprogram Perangkat

Arduino IDEBuild 1.8.5 digunakan untuk memprogram perangkat. Pertama semua pustaka berikut disertakan atau diunduh menggunakan pengelola pustaka.

Pelacak Perjalanan Mudah Canggih dengan Arduino: GPS, Sensor & Baterai

Dengan mengetik nama sensor pada kotak pencarian pengelola pustaka, pustaka yang sesuai akan muncul.

Pelacak Perjalanan Mudah Canggih dengan Arduino: GPS, Sensor & Baterai

Beberapa pustaka Accessory Shield (lihat referensi) ditambahkan melalui opsi zip.file

Pelacak Perjalanan Mudah Canggih dengan Arduino: GPS, Sensor & Baterai

Setelah menambahkan pustaka yang diperlukan, kode contoh untuk setiap sensor ditinjau untuk menemukan API untuk sensor yang terkait.

Selanjutnya, semua header pustaka disertakan dalam satu sketsa Arduino kosong.

Daftar file header

math.h,inttypes.h,Wire.h,lm75.h,ADXL345.h,ChainableLED.h,U8glib.h,ds3231.h,Adafruit_Sensor.h,Adafruit_AM2320.h,Adafruit_BMP085_U.h,Adafruit_HMC5883_U.h,Adafruit_GPS.h 

Setelah beberapa edit, kompilasi dan debug (termasuk koneksi longgar, di mana saya menemukan BMP180 bekerja tanpa Vcc karena daya bocoran untuk pin I2C mungkin ) dan unggah - akhirnya kode siap.

Peringatan

Pelacak Perjalanan Mudah Canggih dengan Arduino: GPS, Sensor & Baterai

Cari deklinasi untuk daerah Anda : https://www.magnetic-declination.com

Ruang lingkup perbaikan

Perbaikan dapat dilakukan dari sisi firmware untuk beberapa fitur tambahan:

Seperti untuk bagian perangkat keras perbaikan:

Kesimpulan

Berpergian & Berjalan kaki adalah menyenangkan, saat Anda dapat memeriksa perubahan di lingkungan sekitar, itu membuat hal-hal lebih menarik. Khususnya, memeriksa perubahan ketinggian, kelembaban, tekanan dan suhu dalam jam-jam saat berjalan kaki. Perangkat ini memberi tahu Anda pada ketinggian apa Anda merasa sakit ketinggian, tingkat kelembaban apa yang membuat kulit Anda kering - hal-hal seperti itu. Meskipun ada ruang untuk perbaikan dalam tata letak sirkuit dan kode untuk menangani peringatan, masih menyenangkan untuk memiliki perangkat seperti ini saat pergi ke wilayah liar!

Sumber daya eksternal

https://www.waveshare.com/wiki/Accessory_Shield

Perangkat keras yang direkomendasikan untuk versi yang lebih baik dari proyek ini

Kit Prototyping Cepat

Kode

Hiking_Tracker.ino

/*/////////// NOTE ////////// D2 allows soft reset assertable from code D3,D9,D10 are available through 12,13,16 of xbee interface D4, D13 are not accessable ///////////////////////////*/ //// HEADER FILES FOR LIBRARY ///// #include <math.h> #include <inttypes.h> #include <Wire.h> #include <lm75.h> #include <ADXL345.h> #include <ChainableLED.h> #include "U8glib.h" #include "ds3231.h" #include "Adafruit_Sensor.h" #include "Adafruit_AM2320.h" #include <Adafruit_BMP085_U.h> #include <Adafruit_HMC5883_U.h> #include <Adafruit_GPS.h> ///////////////////////RTC Variables/////////////////// uint8_t time[8]; struct ts t; int s; int m; int h; int dy; int mo; int yr; ///////////////// Accelerometer Variables///////////// float X=0.0; float Y=0.0; float Z=0.0; float Gravity = 0.0; ///////////////// Accelerometer Variables///////////// float Xm=0.0; float Ym=0.0; float Zm=0.0; /////////////////////// RGB LED Variables/////////////// const int rgb_pwr = 12; const int clk_pin = 6; const int data_pin = 5; float hue = 0.0; boolean up = true; ////////////////////// potentiometer/////////////////// int pot=0; //////////////////// Batt/Supply Vin ///////////////// float Vbatt =0.0; //////////////////////Thermometer//////////////////// float temp = 0.0; ///////////////////// Humidity/////////////////////// float humid = 0.0; ////////////////////Air pressure//////////////////// double prsr = 0.0; ////////////////////Altitude //////////////////// float alt = 0.0; /////////////////// Lat, Long//////////////////// float lat = 0.0; float lon = 0.0; //////////////////Compass Heading///////////////// float heading =0.0; ///////////////////// Ohter Variables /////////////// int mstime =0; int sensor_selector = 1; //////////// ENUM //I2C Device type Object ///////////////// U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0); TempI2C_LM75 termo = TempI2C_LM75(0x48,TempI2C_LM75::nine_bits); ADXL345 accelerometer; ChainableLED leds(clk_pin, data_pin, rgb_pwr, 1); Adafruit_AM2320 am2320 = Adafruit_AM2320(); Adafruit_BMP085_Unified bmp180 = Adafruit_BMP085_Unified(10085); Adafruit_HMC5883_Unified mag = Adafruit_HMC5883_Unified(12345); void setup(void) { pinMode(3,1); pinMode(9,1); pinMode(10,1); digitalWrite(3,HIGH); digitalWrite(9,LOW); digitalWrite(10,HIGH); pinMode(7,1); pinMode(8,1); digitalWrite(7,HIGH); digitalWrite(8,LOW); if (!accelerometer.begin()) { delay(50); } DS3231_init(DS3231_INTCN); pinMode(11,1); digitalWrite(11,LOW); } void loop(void) { u8g.firstPage(); do { draw(); } while( u8g.nextPage() ); sensor_selector++; if (sensor_selector >= 3) {sensor_selector=0;} temp=termo.getTemp(); delay(5); if(sensor_selector == 0) { if(!bmp180.begin()) delay(11); sensors_event_t event; bmp180.getEvent(&event); if (event.pressure) { prsr = event.pressure/10; delay(50); } } if(sensor_selector == 0) { sensors_event_t event; bmp180.getEvent(&event); alt = bmp180.pressureToAltitude(1013.25,event.pressure); delay(50); } if(sensor_selector == 1) { am2320.begin(); delay(50); humid= am2320.readHumidity(); delay(50); } Vector norm = accelerometer.readNormalize(); X = norm.XAxis ; Y = norm.YAxis; Z = norm.ZAxis; Gravity =sqrt(X*X + Y*Y+ Z*Z)-(0.3); DS3231_get(&t); s=t.sec; m=t.min; h=t.hour; dy=t.mday; mo=t.mon; yr=t.year; pot=analogRead(A0)*5/(10*3); delay(2); Vbatt=(1.08*analogRead(A1)/1023)/3.91*((3.91+21.76)); delay(2); if(sensor_selector == 2) { if(!mag.begin()) { while(1); } sensor_t sensor2; mag.getSensor(&sensor2); delay(70); sensors_event_t event2; mag.getEvent(&event2); delay(70); float declination = 0.0; heading = atan2(event2.magnetic.y, event2.magnetic.x); heading += declination; if(heading < 0) heading += 2*PI; if(heading > 2*PI) heading -= 2*PI; heading = heading * 180/M_PI; } if (pot>80) {digitalWrite(11,1);} else {digitalWrite(11,0);} if(pot>40) { leds.pwr_set(PWR_ENABLE); for (byte i=0; i<1; i++) leds.setColorHSB(i, hue, 1.0, 0.5); if (up) hue+= 0.025; else hue-= 0.025; if (hue>=1.0 && up) up = false; else if (hue<=0.0 && !up) up = true; } } void draw(void) { u8g.setFont(u8g_font_7x13); u8g.drawHLine(37, 0, 62); u8g.setPrintPos(41, 12);if(h<10) u8g.print(0);u8g.print(h);u8g.drawStr( 54,12, ":"); u8g.setPrintPos(62, 12);if(m<10) u8g.print(0);u8g.print(m);u8g.drawStr( 75,12,":"); u8g.setPrintPos(83, 12);if(s<10) u8g.print(0);u8g.print(s); u8g.drawHLine(37, 14, 62); u8g.setFont(u8g_font_5x8); u8g.drawVLine(37, 0, 14); u8g.setPrintPos(0, 7);if(dy<10) u8g.print(0);u8g.print(dy);u8g.drawStr( 11,7, "/"); u8g.setPrintPos(17, 7);if(mo<10) u8g.print(0);u8g.print(mo);u8g.drawStr( 0,16,"/"); u8g.setPrintPos(6, 16);u8g.print(yr); u8g.drawVLine(99, 0, 14); u8g.drawStr( 104,7,"BATT"); u8g.setPrintPos(102, 15); u8g.print(Vbatt);u8g.drawStr( 123,15,"V"); u8g.setFont(u8g_font_5x8); u8g.setPrintPos(15, 40); u8g.print(round(X)); u8g.setPrintPos(60, 40); u8g.print(round(Y)); u8g.setPrintPos(100, 40); u8g.print(round(Z)); u8g.drawVLine(37, 18, 36); u8g.drawStr( 39,24,"AIR TEMP: "); u8g.setPrintPos(85, 24); u8g.print(temp);u8g.drawStr( 118,24,"C"); u8g.drawStr( 39,34,"HUMIDITY: "); u8g.setPrintPos(85, 34); u8g.print(humid);u8g.drawStr( 118,34,"%"); u8g.drawStr( 39,44,"PRESSURE: "); u8g.setPrintPos(85, 44); u8g.print(prsr);u8g.drawStr( 118,44,"hP"); u8g.drawStr( 39,54,"ALTITUDE: "); u8g.setPrintPos(85, 54); u8g.print(round(alt));u8g.drawStr( 118,54,"m"); u8g.drawHLine(0, 56, 128); u8g.drawStr( 19,64,"LAT:");u8g.setPrintPos(39, 64); u8g.print(23.57); u8g.drawStr( 69,64,"LONG:");u8g.setPrintPos(94, 64); u8g.print(90.36); int r = round(sqrt(X*X + Y*Y)); u8g.drawStr( 0,22,"heading"); u8g.drawCircle(18, 34,r, U8G_DRAW_ALL); u8g.drawCircle(18, 34,10, U8G_DRAW_ALL); u8g.setPrintPos(0, 53); u8g.print(heading); if ((heading>315)|(heading<=45)) { u8g.drawLine(18,34,8,34); } if ((heading>45)&&(heading<=135)) { u8g.drawLine(18,34,18,24); } if ((heading>135)&&(heading<=225)) { u8g.drawLine(18,34,28,34); } if ((heading>225)&&(heading<315)) { u8g.drawLine(18,34,18,44); } } 

Pustaka

Ekstrak dan tambahkan pustaka zip individual ke Arduino Library Manager
Tidak ada pratinjau (hanya unduhan).

Skematik

Pelacak Perjalanan Mudah Canggih dengan Arduino: GPS, Sensor & Baterai

Proses manufaktur

  1. Memahami Sensor Oksigen (O2): Peran, Posisi, dan Tanda Kegagalan
  2. Mengontrol LED dengan Sensor Gerak PIR pada Raspberry Pi
  3. Bangun Sensor Kelembaban Tanah Berbasis Raspberry Pi Biaya Rendah untuk Irigasi Cerdas
  4. Lacak Olahraga Harian Hamster Anda dengan Tracker Kebugaran Raspberry Pi
  5. Menguji Sensor Suhu DS18B20 pada Raspberry Pi
  6. Membangun Pemantau Suhu Rumah Raspberry Pi dengan MCP9808, InfluxDB & Grafana
  7. Monitor Higiene Toilet Berbasis Walabot
  8. Sensor Emosi & EEG: Hardware Biaya Rendah untuk Deteksi Emosi Real-Time
  9. Kirim Data IMU Adafruit 10DOF dari Raspberry Pi 2 ke Azure Event Hubs dengan Windows 10 IoT Core
  10. Pelacakan WiFi RSSI Akurat untuk Sensor ISS