- Mga Ginamit na Materyal
- NEO6M GPS Module
- 1.3 pulgada I2C OLED Display
- Diagram ng Circuit
- Programming Arduino para sa Arduino OLED Speedometer
Ginagamit ang mga speedometro upang masukat ang bilis ng paglalakbay ng isang sasakyan. Ginamit namin dati ang IR sensor at hall sensor upang mabuo ang Analog speedometer at digital speedometer ayon sa pagkakabanggit. Ngayon ay gagamit kami ng GPS upang masukat ang bilis ng isang umaandar na sasakyan. Ang mga speedometro ng GPS ay mas tumpak kaysa sa karaniwang mga speedometro dahil maaari itong patuloy na mahanap ang sasakyan at makakalkula ang bilis. Malawakang ginagamit ang teknolohiyang GPS sa mga smartphone at sasakyan para sa pag-navigate at mga alerto sa trapiko.
Sa proyektong ito, magtatayo kami ng isang Arduino GPS speedometer gamit ang isang NEO6M GPS module na may isang OLED display.
Mga Ginamit na Materyal
- Arduino Nano
- NEO6M GPS Module
- 1.3 inch I2C OLED display
- Breadboard
- Kumokonekta sa Mga Jumper
NEO6M GPS Module
Narito ginagamit namin ang module ng NEO6M GPS. Ang module ng NEO-6M GPS ay isang tanyag na tatanggap ng GPS na may built-in na ceramic antena, na nagbibigay ng isang malakas na kakayahang maghanap ng satellite. Ang tatanggap na ito ay may kakayahang maunawaan ang mga lokasyon at subaybayan ang hanggang sa 22 mga satellite at kinikilala ang mga lokasyon saanman sa mundo. Sa tagapagpahiwatig ng signal ng on-board, maaari naming subaybayan ang katayuan ng network ng module. Mayroon itong isang backup na baterya ng data upang ang module ay maaaring makatipid ng data kapag ang pangunahing lakas ay na-shut down nang hindi sinasadya.
Ang pangunahing puso sa loob ng module ng tatanggap ng GPS ay ang NEO-6M GPS chip mula sa u-blox. Maaari itong subaybayan hanggang sa 22 mga satellite sa 50 mga channel at magkaroon ng isang napaka-kahanga-hangang antas ng pagiging sensitibo na -161 dBm. Ang 50-channel na u-blox 6 na pagpoposisyon ng makina ay ipinagmamalaki ang isang Time-To-First-Fix (TTFF) na mas mababa sa 1 segundo. Sinusuportahan ng modyul na ito ang rate ng baud mula sa 4800-230400 bps at mayroong default baud na 9600.
Mga Tampok:
- Operating boltahe: (2.7-3.6) V DC
- Kasalukuyang Pagpapatakbo: 67 mA
- Baud rate: 4800-230400 bps (9600 Default)
- Protokol ng Komunikasyon: NEMA
- Interface: UART
- Panlabas na antena at built-in na EEPROM.
Pinout ng Module ng GPS:
- VCC: Input boltahe na pin ng Module
- GND: Ground pin
- RX, TX: Ang mga pin ng komunikasyon ng UART sa Microcontroller
Dati ay nakipag-interfaced kami ng GPS sa Arduino at nagtatayo ng maraming mga proyekto gamit ang mga module ng GPS kabilang ang pagsubaybay sa sasakyan.
1.3 pulgada I2C OLED Display
Ang term na OLED ay nangangahulugang " Organic Light emitting diode", gumagamit ito ng parehong teknolohiya na ginagamit sa karamihan ng aming mga telebisyon ngunit may mas kaunting mga pixel kumpara sa mga ito. Tunay na masaya na magkaroon ng mga cool na naghahanap ng mga module ng pagpapakita na ma-interfaced sa Arduino dahil gagawin nitong cool ang aming mga proyekto. Saklaw namin ang isang buong Artikulo tungkol sa mga pagpapakita ng OLED at mga uri nito dito. Dito, gumagamit kami ng isang Monochrome 4-pin SH1106 OLED 1.28 "OLED display. Ang Display na ito ay maaari lamang gumana sa I2C mode.
Teknikal na mga detalye:
- Driver IC: SH1106
- Boltahe ng Pag-input: 3.3V-5V DC
- Resolusyon: 128x64
- Interface: I2C
- Kasalukuyang pagkonsumo: 8 mA
- Kulay ng pixel: Asul
- Angulo ng pagtingin:> 160 degree
Paglalarawan ng Pin:
VCC: Pag- input ng suplay ng kuryente 3.3-5V DC
GND: Pin ng sanggunian sa lupa
SCL: Clock pin ng interface ng I2C
SDA: Serial Data pin ng interface ng I2C
Ang pamayanan ng Arduino ay nagbigay sa amin ng maraming mga Aklatan na maaaring direktang magamit upang gawin itong mas simple. Sinubukan ko ang ilang mga aklatan at nalaman na ang Adafruit_SH1106.h Library ay napakadaling gamitin at may kaunting mga graphic na pagpipilian, kaya't gagamitin namin ang pareho sa tutorial na ito.
Ang OLED ay mukhang napakalamig at madaling ma-interfaced sa iba pang mga microcontroller upang makabuo ng ilang mga kagiliw-giliw na proyekto:
- Pag-interfacing ng SSD1306 OLED Display na may Raspberry Pi
- Pag-interfacing ng SSD1306 OLED Display kasama si Arduino
- Internet Clock gamit ang ESP32 at OLED Display
- Awtomatikong Controller ng Temperatura ng AC gamit ang Arduino, DHT11 at IR Blaster
Diagram ng Circuit
Ang diagram ng circuit para sa Arduino GPS speedometer na gumagamit ng OLED ay ibinibigay sa ibaba.
Ang kumpletong pag-setup ay magiging hitsura sa ibaba:
Programming Arduino para sa Arduino OLED Speedometer
Ang kumpletong code ng proyekto ay ibinibigay sa ilalim ng tutorial. Narito ipinapaliwanag namin ang kumpletong linya ng code sa pamamagitan ng linya.
Una sa lahat, isama ang lahat ng mga aklatan. Dito ginagamit ang TinyGPS ++. H library upang makuha ang mga coordinate ng GPS gamit ang module ng GPS receiver at ang Adafruit_SH1106.h ay ginagamit para sa OLED.
# isama
Pagkatapos, ang address ng OLED I2C ay tinukoy, na maaaring alinman sa OX3C o OX3D, narito ang OX3C sa aking kaso. Gayundin, ang Reset pin ng display ay dapat na tinukoy. Sa aking kaso, ito ay tinukoy bilang -1, tulad ng ipinapakita ang pagbabahagi ng Arduino's Reset pin.
#define OLED_ADDRESS 0x3C #define OLED_RESET -1 Adafruit_SH1106 display (OLED_RESET);
Susunod, ang mga bagay para sa klase ng TinyGPSPlus at Softwareserial ay tinukoy tulad ng ipinakita sa ibaba. Kailangan ng klase ng serial serial ng Arduino pin no. para sa serial na komunikasyon, na tinukoy bilang 2 at 3 dito.
int RX = 2, TX = 3; Mga TinyGPSPlus gps; SoftwareSerial gpssoft (RX, TX);
Sa loob ng pag- setup () , ginagawa ang pagsisimula para sa Serial na komunikasyon at OLED. Ang default na rate ng baud para sa serial na komunikasyon ng Software ay tinukoy bilang 9600. Dito ginagamit ang SH1106_SWITCHCAPVCC upang makabuo ng boltahe ng display mula sa 3.3V sa loob at ginagamit ang display.begin function upang simulan ang pagpapakita.
void setup () { Serial.begin (9600); gpssoft.begin (9600); display.begin (SH1106_SWITCHCAPVCC, OLED_ADDRESS); display.clearDisplay (); }
Sa loob habang ang tunay na loop, ang serial data na natanggap ay napatunayan, kung ang wastong mga signal ng GPS ay natanggap, pagkatapos ay ipinapakita ang wikiwiki () upang ipakita ang halaga ng bilis sa OLED.
habang (gpssoft.available ()> 0) kung (gps.encode (gpssoft.read ())) nagpapakitapeed ();
Sa loob ng function na nagpapakita ng bilis () , ang data ng bilis mula sa module ng GPS ay naka-check gamit ang function gps.speed.isValid () at kung nagbabalik ito ng isang tunay na halaga, pagkatapos ay ang halaga ng bilis ay ipinapakita sa OLED display. Narito ang laki ng teksto sa OLED ay tinukoy gamit ang display.setTextSize function at ang posisyon ng cursor ay tinukoy gamit ang display.setCursor function. Ang bilis ng data mula sa module ng GPS ay na-decode gamit ang gps.speed.kmph () function at sa wakas ay ipinapakita ito gamit ang display.display () .
kung (gps.speed.isValid ()) { display.setTextSize (2); display.setCursor (40, 40); display.print (gps.speed.kmph ()); display.display (); }
Panghuli, i-upload ang code sa Arduino Uno at ilagay ang system sa gumagalaw na sasakyan, at makikita mo ang bilis sa display na OLED tulad ng ipinakita sa imaheng nasa ibaba.
Ang kumpletong code na may isang demo na video ay ibinibigay sa ibaba.