- Kinakailangan ang Mga Bahagi
- MPU6050 Sensor Module - Isang Maikling Panimula
- Attiny85 Hakbang Counter Circuit Diagram
- Fabricating PCB para sa Attiny85 Hakbang Counter
- Pag-order ng PCB mula sa PCBWay
- Pagtitipon ng ATtiny85 Hakbang Counter PCB
- ATtiny85 Hakbang Counter Code Paliwanag
- Dalhin natin ang aming Arduino Step Counter para sa isang Walk
Sa tutorial na ito, magtatayo kami ng isang madali at murang Pedometer gamit ang ATtiny85 IC, MPU6050 Accelerometer & Gyroscope, at OLED Display Module. Ang simpleng Arduino based step counter na ito ay pinalakas ng isang 3V coin cell, na ginagawang madali ang pagdala kapag lumabas ka para sa isang lakad o jogging. Nangangailangan din ito ng kaunting mga bahagi upang maitayo at ang code ay medyo simple din. Ang programa sa proyektong ito ay gumagamit ng MPU6050 upang masukat ang lakas ng pagpapabilis kasama ang 3 axis (X, Y, at Z). Pagkatapos kinakalkula nito ang pagkakaiba ng lakas ng acceleration sa pagitan ng nakaraan at kasalukuyang mga halaga. Kung ang pagkakaiba ay mas malaki kaysa sa isang tiyak na threshold (Para sa paglalakad na mas malaki sa 6 at para sa pagpapatakbo ng higit sa 10), pagkatapos ay pinapataas nito ang bilang ng hakbang nang naaayon. Ang kabuuang mga hakbang na ginawa ay ipinapakita sa OLED Display.
Upang maitayo ang portable step counter na ito sa isang PCB, ginawa namin ang aming mga PCB board mula sa PCBWay at tipunin at susubukan namin ang pareho sa proyektong ito. Kung nais mong magdagdag ng higit pang mga tampok, maaari ka ring magdagdag ng isang monitor ng Heartbeat sa setup na ito at nakagawa rin kami dati ng isang Arduino accelerometer step counter gamit ang ADXL335, suriin ang mga ito kung interesado ka.
Kinakailangan ang Mga Bahagi
Upang maitayo ang pedometer na ito gamit ang Arduino, kakailanganin mo ang mga sumusunod na sangkap.
- Attiny85 IC
- MPU6050
- OLED Display Module
- 2 × Mga Push Button
- 5 × 10KΩ Resistors (SMD)
MPU6050 Sensor Module - Isang Maikling Panimula
Ang MPU6050 ay batay sa teknolohiya ng Micro-Mechanical Systems (MEMS). Ang sensor na ito ay mayroong 3-axis accelerometer, isang 3-axis gyroscope, at isang built-in na sensor ng temperatura. Maaari itong magamit upang sukatin ang mga parameter tulad ng Acceleration, Velocity, Orientation, Displaced, atbp. Nauna kaming nakipag-interfaces sa MPU6050 sa Arduino at Raspberry pi at nagtayo din ng ilang mga proyekto gamit ito tulad ng- Self Balancing robot, Arduino Digital Protractor, at Arduino Inclinometer.
Ang module ng MPU6050 ay maliit sa sukat at may mababang paggamit ng kuryente, mataas na pag-uulit, mataas na tolerance ng shock, at mababang mga puntos ng presyo ng gumagamit. Ang MPU6050 ay may kasamang I2C bus at Auxiliary I2C bus interface at madaling makagambala sa iba pang mga sensor tulad ng magnetometers at microcontrollers.
Attiny85 Hakbang Counter Circuit Diagram
Ang eskematiko para sa MPU6050 Step Counter ay ibinibigay sa ibaba:
Ipinapakita ng imahe sa itaas ang diagram ng circuit para sa interfacing MPU6050 at OLED Display na may Attiny85 IC. Ang interface sa pagitan ng MPU6050, OLED Display, at Arduino ay dapat na ipatupad gamit ang I2C Protocol. Samakatuwid, ang SCLPin (PB2) ng ATtiny85 ay konektado sa SCLPin ng MPU6050 at OLED Display ayon sa pagkakabanggit. Katulad nito, ang SDAPin (PB0) ng ATtiny85 ay konektado sa SDAPin ng MPU6050 at OLED Display. Dalawang mga pushbutton ay nakakonekta din sa PB3 & PB4 pin ng ATtiny85 IC. Ang mga pindutan na ito ay maaaring magamit upang mag-scroll ng teksto o baguhin ang teksto sa ipinapakita.
Tandaan: Sundin ang aming nakaraang tutorial na Programming ATtiny85 IC nang direkta sa pamamagitan ng USB gamit ang Digispark Bootloader upang mai-program ang ATtiny85 IC sa pamamagitan ng USB at Digispark Boot-loader.
Fabricating PCB para sa Attiny85 Hakbang Counter
Tapos na ang eskematiko, at maaari kaming magpatuloy sa paglalagay ng PCB. Maaari mong idisenyo ang PCB gamit ang anumang PCB software na iyong pinili. Gumamit kami ng EasyEDA upang gumawa ng PCB para sa proyektong ito.
Nasa ibaba ang mga pagtingin sa modelo ng 3D sa tuktok na layer at ilalim na layer ng Step Counter PCB:
Ang layout ng PCB para sa circuit sa itaas ay magagamit din para sa pag-download bilang Gerber mula sa link na ibinigay sa ibaba:
- Gerber file para sa ATtiny85 Step Counter
Pag-order ng PCB mula sa PCBWay
Ngayon pagkatapos matapos ang disenyo, maaari kang magpatuloy sa pag-order ng PCB:
Hakbang 1: Pumasok sa https://www.pcbway.com/, mag-sign up kung ito ang iyong unang pagkakataon. Pagkatapos, sa tab na Prototype ng PCB, ipasok ang mga sukat ng iyong PCB, ang bilang ng mga layer, at ang bilang ng PCB na kailangan mo.
Hakbang 2: Magpatuloy sa pamamagitan ng pag-click sa pindutang 'Quote Now'. Dadalhin ka sa isang pahina kung saan magtatakda ng ilang karagdagang mga parameter tulad ng uri ng Lupon, Mga Layer, Materyal para sa PCB, Kapal, at Higit Pa, karamihan sa mga ito ay napili bilang default, kung pipiliin mo ang anumang tukoy na mga parameter, maaari kang pumili dito na
Hakbang 3: Ang pangwakas na hakbang ay i-upload ang Gerber file at magpatuloy sa pagbabayad. Upang matiyak na maayos ang proseso, napatunayan ng PCBWAY kung ang iyong Gerber file ay wasto bago magpatuloy sa pagbabayad. Sa ganitong paraan, makakatiyak ka na ang iyong PCB ay katha sa paggawa at maaabot ka bilang nakatuon.
Pagtitipon ng ATtiny85 Hakbang Counter PCB
Matapos ang ilang araw, natanggap namin ang aming PCB sa isang maayos na pakete at ang kalidad ng PCB ay mabuti tulad ng lagi. Ang tuktok na layer at ang ilalim na layer ng board ay ipinapakita sa ibaba:
Matapos matiyak na ang mga track at footprints ay tama. Nagpatuloy ako sa pag-iipon ng PCB. Ang buong soldered board ay katulad ng sa ibaba:
ATtiny85 Hakbang Counter Code Paliwanag
Ang kumpletong Arduino step counter code ay ibinibigay sa dulo ng dokumento. Narito ipinapaliwanag namin ang ilang mahahalagang bahagi ng code.
Gumagamit ang code ng mga aklatan ng TinyWireM.h & TinyOzOLED.h. Ang TinyWireM library ay maaaring ma-download mula sa Library Manager sa Arduino IDE at mai-install doon. Para doon, buksan ang Arduino IDE at pumunta sa Sketch <Isama ang Library <Pamahalaan ang Mga Aklatan . Ngayon maghanap para sa TinyWireM.h at i-install ang TinyWireM library ng Adafruit.
Habang ang TinyOzOLED.h library ay maaaring ma-download mula sa mga ibinigay na link.
Matapos mai-install ang mga aklatan sa Arduino IDE, simulan ang code sa pamamagitan ng pagsasama ng mga kinakailangang file ng mga library.
# isama ang "TinyWireM.h" # isama ang "TinyOzOLED.h"
Matapos isama ang mga aklatan, tukuyin ang mga variable upang maiimbak ang mga pagbabasa ng Accelerometer.
intaccelX, accelY, accelZ;
Sa loob ng loop ng pag- setup () , simulan ang wire library at i-reset ang sensor sa pamamagitan ng rehistro ng pamamahala ng kuryente na pinasimulan din ang komunikasyon ng I2C para sa OLED Display. Pagkatapos sa mga susunod na linya itakda ang orientation ng display at ipasok ang rehistro ng address para sa mga halaga ng accelerometer at gyroscope.
TinyWireM.begin (); OzOled.init (); OzOled.clearDisplay (); OzOled.setNormalDisplay (); OzOled.sendCommand (0xA1); OzOled.sendCommand (0xC8); TinyWireM.beginTransmission (mpu); TinyWireM.write (0x6B); TinyWireM.write (0b00000000); TinyWireM.write (0x1B);
Sa pagpapaandar na getAccel () , magsimula sa pamamagitan ng pagbabasa ng data ng accelerometer. Ang data para sa bawat axis ay nakaimbak sa dalawang byte (Sa itaas at Ibaba) o pagrehistro. Upang mabasa ang lahat ng ito, magsimula sa unang rehistro, at gamitin ang function na RequiestFrom () , hinihiling namin na basahin ang lahat ng 6 na rehistro para sa mga axis ng X, Y, at Z. Pagkatapos basahin namin ang data mula sa bawat rehistro, at dahil ang mga output ay pantulong sa dalawa, pagsamahin ito nang naaangkop upang makuha ang kumpletong mga halaga ng accelerometer.
voidgetAccel () {TinyWireM.beginTransmission (mpu); TinyWireM.write (0x3B); TinyWireM.endTransmission (); TinyWireM.requestFrom (mpu, 6); accelX = TinyWireM.read () << 8-TinyWireM.read (); accelY = TinyWireM.read () << 8-TinyWireM.read (); accelZ = TinyWireM.read () << 8-TinyWireM.read (); }
Ngayon sa loob ng pag-andar ng loop, basahin muna ang mga halagang X, Y, at Z-axis at pagkatapos makuha ang mga halagang 3-axis, kalkulahin ang kabuuang vector ng pagpabilis sa pamamagitan ng pagkuha ng square root ng mga halagang X, Y, at Z-axis. Pagkatapos kalkulahin ang pagkakaiba sa pagitan ng kasalukuyang vector at ng nakaraang vector at kung ang pagkakaiba ay mas malaki sa 6, pagkatapos ay taasan ang bilang ng hakbang.
getAccel (); vector = sqrt ((accelX * accelX) + (accelY * accelY) + (accelZ * accelZ)); totalvector = vector - vectorprevious; kung (totalvector> 6) {Hakbang ++; } OzOled.printString ("Mga Hakbang", 0, 4); OzOled.printNumber (Hakbang, 0, 8, 4); vectorprevious = vector; pagkaantala (600);
Dalhin natin ang aming Arduino Step Counter para sa isang Walk
Kapag natapos mo na ang pag-assemble ng PCB, ikonekta ang ATtiny85 sa programmer board, at i-upload ang code. Ngayon gawin ang hakbang na pag-setup ng counter sa iyong mga kamay at simulang maglakad nang sunud-sunod, dapat itong ipakita ang bilang ng mga hakbang sa OLED. Minsan pinapataas nito ang bilang ng mga hakbang kapag ang pag-setup ay nag-vibrate nang napakabilis o napakabagal.
Ito ay kung paano ka makakabuo ng iyong sariling Step Counter gamit ang ATtiny85 at MPU6050. Ang kumpletong pagtatrabaho ng proyekto ay maaari ding makita sa video na naka-link sa ibaba. Inaasahan kong nasiyahan ka sa proyekto at nahanap mo itong nakakainteres na bumuo ng iyong sarili. Kung mayroon kang anumang mga katanungan, mangyaring iwanan ang mga ito sa seksyon ng komento sa ibaba.