Სარჩევი:
ვიდეო: Arduino ციფრული კომპასის პროექტი: 3 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:19
გამარჯობა! ამ ინსტრუქციებში თქვენ ნახავთ, თუ როგორ შეგიძლიათ შექმნათ ციფრული კომპასი Arduino– ს და დამუშავების IDE– ს გამოყენებით. ეს არის საკმაოდ მარტივი, მაგრამ საინტერესო და მაგარი გარეგნობის არდუინოს პროექტი.
თქვენ შეგიძლიათ ნახოთ ამ გაკვეთილის დემო მაგალითი ზემოთ მოცემულ ვიდეოზე. თქვენ ყოველთვის შეგიძლიათ იპოვოთ მსგავსი საინტერესო ვიდეოები ჩემს YouTube არხზე, ასევე იპოვოთ ბევრი ელექტრონული პროექტი და გაკვეთილები ჩემს ვებგვერდზე, HowToMechatronics.com
ნაბიჯი 1: ნაწილები საჭირო
ამ პროექტისთვის დაგჭირდებათ არდუინოს დაფა და MEMS მაგნიტომეტრი, დედამიწის მაგნიტური ველის გასაზომად. მე გამოვიყენებ GY - 80 გარღვევის დაფას, რომელიც შეიცავს MC5883L 3 - აქსის მაგნიტომეტრს.
სანამ გავაგრძელებთ პროექტის წყაროს კოდს თუ გჭირდებათ მეტი დეტალები, თუ როგორ მუშაობს MEMS მაგნიტომეტრი, ასევე როგორ დააკავშიროთ და გამოიყენოთ GY -80 გარღვევის დაფა I2C კომუნიკაციის საშუალებით, შეგიძლიათ შეამოწმოთ ჩემი კონკრეტული გაკვეთილები.
ნაბიჯი 2: Arduino წყაროს კოდი
ის, რაც პირველ რიგში უნდა გავაკეთოთ, არის ესკიზის ატვირთვა არდუინოს დაფაზე, რომელიც წაიკითხავს მაგნიტომეტრის მონაცემებს და მას გაუგზავნის დამუშავების IDE- ს. აქ არის არდუინოს საწყისი კოდი:
/ * არდუინოს კომპასი * * დეიან ნედელკოვსკი, * www. HowToMechatronics.com * */
#მოიცავს // I2C არდუინოს ბიბლიოთეკა
#განსაზღვრეთ მაგნიტომეტრი_mX0 0x03
#განსაზღვრეთ მაგნიტომეტრი_mX1 0x04 #განსაზღვრეთ მაგნიტომეტრი_mZ0 0x05 #განსაზღვრეთ მაგნიტომეტრი_mZ1 0x06 #განსაზღვრეთ მაგნიტომეტრი_mY0 0x07 #განსაზღვრეთ მაგნიტომეტრი_mY1 0x08
int mX0, mX1, mX_out;
int mY0, mY1, mY_out; int mZ0, mZ1, mZ_out;
float სათაური, სასაქონლო ხარისხი, სათაურიფილტრული, დახრილი;
ათწილადი Xm, Ym, Zm;
#განსაზღვრეთ მაგნიტომეტრი 0x1E // I2C 7 ბიტიანი მისამართი HMC5883
void setup () {
// სერიული და I2C კომუნიკაციების ინიციალიზაცია Serial.begin (115200); Wire.begin (); დაგვიანება (100); Wire.beginTransmission (Magnetometer); Wire.write (0x02); // აირჩიეთ რეჟიმი რეგისტრაცია Wire.write (0x00); // უწყვეტი გაზომვის რეჟიმი Wire.endTransmission (); }
ბათილი მარყუჟი () {
// ---- X-Axis Wire.beginTransmission (მაგნიტომეტრი); // გადაეცემა მოწყობილობას Wire.write (მაგნიტომეტრი_mX1); Wire.endTransmission (); მავთული. მოთხოვნა (მაგნიტომეტრი, 1); if (Wire.available () <= 1) {mX0 = Wire.read (); } Wire.beginTransmission (მაგნიტომეტრი); // გადაცემა მოწყობილობაზე Wire.write (მაგნიტომეტრი_mX0); Wire.endTransmission (); მავთული. მოთხოვნა (მაგნიტომეტრი, 1); if (Wire.available () <= 1) {mX1 = Wire.read (); }
// ---- Y- ღერძი
Wire.beginTransmission (Magnetometer); // გადაცემა მოწყობილობაზე Wire.write (მაგნიტომეტრი_ mY1); Wire.endTransmission (); მავთული. მოთხოვნა (მაგნიტომეტრი, 1); if (Wire.available () <= 1) {mY0 = Wire.read (); } Wire.beginTransmission (მაგნიტომეტრი); // გადაცემა მოწყობილობაზე Wire.write (მაგნიტომეტრი_მY0); Wire.endTransmission (); მავთული. მოთხოვნა (მაგნიტომეტრი, 1); if (Wire.available () <= 1) {mY1 = Wire.read (); } // ---- Z-Axis Wire.beginTransmission (მაგნიტომეტრი); // გადაცემა მოწყობილობაზე Wire.write (მაგნიტომეტრი_მზ 1); Wire.endTransmission (); მავთული. მოთხოვნა (მაგნიტომეტრი, 1); if (Wire.available () <= 1) {mZ0 = Wire.read (); } Wire.beginTransmission (მაგნიტომეტრი); // გადაეცემა მოწყობილობას Wire.write (მაგნიტომეტრი_mZ0); Wire.endTransmission (); მავთული. მოთხოვნა (მაგნიტომეტრი, 1); if (Wire.available () <= 1) {mZ1 = Wire.read (); } // ---- X- ღერძი mX1 = mX1 << 8; mX_out = mX0+mX1; // ნედლეული მონაცემები // მონაცემთა ცხრილიდან: 0.92 მგ/ციფრი Xm = mX_out*0.00092; // გაუსის ერთეული //* დედამიწის მაგნიტური ველი მერყეობს 0.25 – დან 0.65 – მდე გაუსამდე, ასე რომ, ეს არის ის მნიშვნელობები, რომლებიც უნდა მივიღოთ დაახლოებით.
// ---- Y- ღერძი
mY1 = mY1 << 8; mY_out = mY0+mY1; Ym = mY_out*0.00092;
// ---- Z- ღერძი
mZ1 = mZ1 <0.073 რადი კლება = 0.073; სათაური += უარყოფა; // შესწორება, როდესაც ნიშნები პატივს სცემენ, თუ (სათაური <0) სათაური += 2*PI;
// გასწორება დახრის კუთხის დამატების გამო
if (სათაური> 2*PI) სათაური -= 2*PI;
headingDerees = სათაური * 180/PI; // სათაური ხარისხების განყოფილებაში
// გამომავალი კუთხის გასწორება / დაბალი გამავლობის ფილტრი
headingFiltered = headingFiltered*0.85 + სასაქონლო ხარისხი*0.15;
// სათაურის მნიშვნელობის გაგზავნა სერიული პორტის საშუალებით IDE დამუშავებისთვის
Serial.println (სასაქონლო ფილტრი);
დაგვიანება (50); }
ნაბიჯი 3: IDE წყაროს კოდის დამუშავება
მას შემდეგ რაც ატვირთეთ Arduino– ს ესკიზი, ჩვენ უნდა მივიღოთ მონაცემები დამუშავების IDE– ში და დავხატოთ ციფრული კომპასი. კომპასი შედგება ფონის სურათისგან, ისრის ფიქსირებული გამოსახულებისგან და კომპასის სხეულის მბრუნავი გამოსახულებისგან. ამრიგად, არდისინოთი გამოთვლილი მიწიერი მაგნიტური ველის მნიშვნელობები გამოიყენება კომპასის დასატრიალებლად.
აქ არის დამუშავების IDE- ს საწყისი კოდი:
/ * არდუინო კომპასი * * დეიან ნედელკოვსკის მიერ, * www. HowToMechatronics.com * */ იმპორტის დამუშავება. სერიალი. *; java.awt.event. KeyEvent იმპორტი; იმპორტი java.io. IOException;
სერიული myPort;
PImage imgCompass; PImage imgCompassArrow; სურათის ფონი;
სიმებიანი მონაცემები = "";
float სასაქონლო;
void setup () {
ზომა (1920, 1080, P3D); გლუვი (); imgCompass = loadImage ("Compass.png"); imgCompassArrow = loadImage ("CompassArrow.png"); background = loadImage ("Background.png"); myPort = ახალი სერიალი (ეს, "COM4", 115200); // იწყებს სერიულ კომუნიკაციას myPort.bufferUntil ('\ n'); }
ბათილად გათამაშება () {
სურათი (ფონი, 0, 0); // იტვირთება ფონის სურათი pushMatrix (); თარგმნა (სიგანე/2, სიმაღლე/2, 0); // თარგმნის კოორდინატთა სისტემას ეკრანის ცენტრში, ისე რომ ბრუნვა მოხდეს ზუსტად ცენტრში rotateZ (რადიანები (-სათაური)); // ატრიალებს კომპასს Z -ღერძის გამოსახულების გარშემო (imgCompass, -960, -540); // იტვირთება კომპასის სურათი და კოორდინატთა სისტემის გადაადგილებისას ჩვენ გვჭირდება გამოსახულების დაყენება -960x, -540y (ეკრანის ზომის ნახევარი) popMatrix (); // მოაქვს საკოორდინატო სისტემა დაუბრუნდა საწყის პოზიციას 0, 0, 0 სურათი (imgCompassArrow, 0, 0); // იტვირთება CompassArrow სურათი, რომელზედაც არ მოქმედებს rotateZ () ფუნქცია popMatrix () ფუნქციის გამო textSize (30); ტექსტი ("სათაური:" + სათაური, 40, 40); // ბეჭდავს სათაურის მნიშვნელობას ეკრანზე
დაგვიანება (40);
}
// იწყებს მონაცემების კითხვას სერიული პორტიდან
void serialEvent (Serial myPort) {data = myPort.readStringUntil ('\ n'); // კითხულობს მონაცემებს სერიული პორტიდან და ათავსებს სიმების ცვლადში "მონაცემები". სათაური = float (მონაცემები); // სიმებიანი მნიშვნელობის გადატანა Float მნიშვნელობად}
იმედი მაქვს მოგეწონებათ ეს პროექტი. თუ ასეა, ასევე შეგიძლიათ ეწვიოთ ჩემს ვებსაიტს უფრო მაგარი პროექტებისთვის.
გირჩევთ:
წვრილმანი კომპასის ბოტი: 14 ნაბიჯი
წვრილმანი კომპასის ბოტი: გამარჯობა! დღეს მე ვაპირებ კომპასის ბოტის გაკეთებას. მე მივიღე ეს იდეა იმაზე ფიქრით, თუ რამდენად რთულია მათემატიკური ყუთის გარეშე სრულყოფილი წრის დახატვა. კარგად მივიღე შენი გამოსავალი?. როგორც მოგეხსენებათ, წრე ზუსტად 360 გრადუსია, ასე რომ ამ ბოტს შეუძლია შა დახატოს
ინტერფეისი HMC5883L კომპასის სენსორი Arduino– სთან ერთად: 10 ნაბიჯი (სურათებით)
ინტერფეისი HMC5883L კომპასის სენსორი Arduino– სთან ერთად: აღწერა HMC5883L არის 3 ღერძიანი ციფრული კომპასი, რომელიც გამოიყენება ორი ზოგადი მიზნისთვის: ფერომაგნიტის მსგავსად მაგნიტური მასალის მაგნეტიზაციის გასაზომად, ან სიძლიერის და, ზოგიერთ შემთხვევაში, მიმართულების გასაზომად. მაგნიტური ველი ერთ წერტილში
ESPcopter და Visuino - კომპასის სათაური გადაიყვანეთ 3D კუთხეზე: 6 ნაბიჯი
ESPcopter და Visuino - გადაიყვანეთ კომპასი სათაურში 3D კუთხეზე: ESPcopter ახლა სრულად არის მხარდაჭერილი Visuino– ს უახლესი ვერსიით და ეს ალბათ ყველაზე ადვილია არსებული თვითმფრინავის დაპროგრამება! :-) მისი Visuino მხარდაჭერით შეგიძლიათ აკონტროლოთ ძრავები, LED, მუშაობს აქსელერომეტრთან, Gyr
Arduino ციფრული კოდის ჩაკეტვის პროექტი მატრიცის კლავიატურის გამოყენებით: 9 ნაბიჯი
Arduino ციფრული კოდის ჩაკეტვის პროექტი მატრიქსის კლავიატურის გამოყენებით: შექმენით ციფრული კოდის ჩაკეტვის მოწყობილობა Arduino და Qwiic სისტემით Zio M Uno და Hex 4x3 მატრიქსის კლავიატურის გამოყენებით. პროექტის მიმოხილვა ამ პროექტისთვის ჩვენ ავაშენებთ ციფრული კოდის მარტივ საკეტს, რომლითაც მომხმარებლებს შეუძლიათ შეიყვანონ და გასაღები შემოსული. ამ გაკვეთილში ჩვენ ვაჩვენებთ გამოყენებას
10 ძირითადი არდუინოს პროექტი დამწყებთათვის! გააკეთეთ მინიმუმ 15 პროექტი ერთი დაფით!: 6 ნაბიჯი
10 ძირითადი არდუინოს პროექტი დამწყებთათვის! გააკეთეთ მინიმუმ 15 პროექტი ერთი დაფით!: Arduino პროექტი & სამეურვეო საბჭო; მოიცავს Arduino– ს 10 ძირითად პროექტს. ყველა კოდის კოდი, გერბერის ფაილი და სხვა. SMD არ არის! მარტივი შედუღება ყველასთვის. ადვილად მოსახსნელი და შესაცვლელი კომპონენტები. თქვენ შეგიძლიათ გააკეთოთ მინიმუმ 15 პროექტი ერთი პროგრამით