Სარჩევი:

Arduino მანქანის ჩვენება: 7 ნაბიჯი (სურათებით)
Arduino მანქანის ჩვენება: 7 ნაბიჯი (სურათებით)

ვიდეო: Arduino მანქანის ჩვენება: 7 ნაბიჯი (სურათებით)

ვიდეო: Arduino მანქანის ჩვენება: 7 ნაბიჯი (სურათებით)
ვიდეო: 🙌🏻✔️ვიდეო, რომელიც ყველა ქალმა უნდა ნახოს! 2024, ივლისი
Anonim
Image
Image
არდუინოს მანქანის ჩვენება
არდუინოს მანქანის ჩვენება
არდუინოს მანქანის ჩვენება
არდუინოს მანქანის ჩვენება

მე ავაშენე დიაგნოსტიკის (OBD-II) დაფუძნებული ჩვენება 7 TFT LCD ადაფრუტიდან, Teensy 3.6, Freematics OBD-II I2C ადაპტერი და ზოგიერთი სარეზერვო სენსორი, რომელიც აღმოვაჩინე ამაზონზე. ეკრანს აქვს ორი გვერდი: ერთი მაშინ, როდესაც ჩემი Honda Accord არის დისკზე და ერთი როდესაც ის საპირისპიროა.

როდესაც ჩემი მანქანა მოძრაობს, ნაჩვენებია RPM, MPH, ძრავის დატვირთვის პროცენტი, ბატარეის ძაბვა, სალონის ტემპერატურა და ძრავის გამაგრილებლის ტემპერატურა.

როდესაც ჩემი მანქანა არის საპირისპირო, Arduino IDE თავსებადი Teensy 3.6 კითხულობს ანიმაციურ ბიტმაპ სურათს ჩემი მანქანის ვიპოვე ინტერნეტში, აჩვენებს მას და შემდეგ კითხულობს სარეზერვო სენსორებს. ოთხივე სენსორს აქვს მანძილი ფეხებში პლუს ანიმაცია მანქანის უკან, რომელიც იცვლის ფერს იმისდა მიხედვით თუ რამდენად ახლოს არის ობიექტი მანქანასთან (მხოლოდ მწვანე ნიშნავს <5 ფუტს, მწვანე და ყვითელი ნიშნავს <2,6 ფუტს და მწვანე, ყვითელს, და წითელი ნიშნავს <1 ფუტს).

დაბოლოს, მე დავამატე ღამის ეკრანის დაბინდვის შესაძლებლობა.

საბოლოო შედეგი მშვენივრად გამოიყურება და კარგად მუშაობს ჩემს მანქანაში. მე კი დავამთავრე მისი ინსტალაცია ცენტრალურ კონსოლში, რაც სულ სხვა პროცესია, რომელსაც მე არ ჩავწვდები ამ სასწავლო ინსტრუქციაში. ქვემოთ მოცემულია ნაწილების სია, რომლებიც მე გამოვიყენე ამ LCD ეკრანის შესაქმნელად.

1) Freematics OBD -II ადაპტერი - $ 35

2) სარეზერვო სენსორები - 15 $

3) 7 დიუმიანი TFT LCD ეკრანი - 38 დოლარი

4) SPI დაფუძნებული LCD ჩვენების დრაივერი - $ 35

5) მოზარდი 3.6 - $ 30

6) Level Shifter - $ 4

7) 74HC125 Tri State Buffer IC -6 დოლარი 2 პაკეტში (დარწმუნებული ვარ, რომ თქვენ შეგიძლიათ იპოვოთ ეს გამწმენდი სხვაგან)

8) MicroSD ბარათი> = 1 GB - 4 $

9) მავთულები, კონდენსატორები და რეზისტორები.

10) LP3470-2.93 ჩართვა გადატვირთვის IC - $ 2

11) (სურვილისამებრ): DS18B20 ტემპერატურის სენსორი - $ 8

12) (სურვილისამებრ): OBD -II გამყოფი - $ 10

13) (სურვილისამებრ): დაამატეთ წრიული დაუკრავენ კაბელი - $ 8 5 პაკეტისთვის

ნაბიჯი 1: სარეზერვო სენსორების კითხვა

სარეზერვო სენსორების კითხვა
სარეზერვო სენსორების კითხვა
სარეზერვო სენსორების კითხვა
სარეზერვო სენსორების კითხვა
სარეზერვო სენსორების კითხვა
სარეზერვო სენსორების კითხვა
სარეზერვო სენსორების კითხვა
სარეზერვო სენსორების კითხვა

ეს ნაბიჯი სახიფათოა, რადგან ეს სარეზერვო სენსორები დაუკავშირდებიან გადამცემს და შემდეგ პატარა LCD– ს, როგორც ჩანს ზემოთ სურათზე. მე მინდოდა გზა დაეღწია მათი ჩვენებისა და გამოეყენებინა საკუთარი. ვებგვერდის დახმარებით, რომელიც მე ვიპოვე გუგლის შემდეგ (საპირისპირო პარკირების სენსორების გარჩევა), მე შემეძლო წამეკითხა საკუთრების საკომუნიკაციო ოქმი, რომელსაც გადამცემი აგზავნის LCD ეკრანზე. რატომღაც, საკომუნიკაციო პროტოკოლი არ არის ტიპიური, როგორიცაა I2C, UART, CAN, USB და ა.შ. და პროტოკოლი განსხვავდება მიმწოდებლის მიხედვით. მე გირჩევთ, რომ იყიდოთ ის კომპლექტი, რომელიც ზემოთ დავუკავშირე, თუ აპირებთ ჩემი კოდის გამოყენებას, რადგან ის სპეციალურად დაიწერა იმ სენსორებისთვის.

მათ მიერ მოწოდებული LCD– ის გათიშვამდე, მე შევამოწმე სამი მავთული, რომლებიც უერთდება გადამცემს და LCD– ს. იყო +5V წითელი მავთული, დაფქული შავი მავთული და ლურჯი მავთული. მას შემდეგ, რაც ჩემი ოსცილოსკოპი ლურჯ მავთულზე და მიწაზე დავამაგრე, მე დავინახე კვალი მსგავსი სურათის ზემოთ, მაგრამ არა ზუსტად (მე ვიყენებ სურათს ზემოთ მოყვანილი ვებგვერდიდან). ჩემს კვალს ჰქონდა უფრო გრძელი დაწყების ბიტი, რასაც მოჰყვა 17 უფრო მოკლე ხანგრძლივობის ბიტი. საწყისი ბიტის შემდეგ 0-5 ბიტებს არ ჰქონდათ სასარგებლო ინფორმაცია. 6-8 ბიტი შეესაბამება სენსორს A, B, C, ან D. ბიტი 9-16 შეესაბამება სიგრძეს მეტრში. მე ჩავრთე Arduino IDE ესკიზი, რომელიც კითხულობს სენსორებს და გამოაქვს მონაცემები სერიულ კონსოლზე.

ნაბიჯი 2: შექმენით Bitmap სურათი და განათავსეთ იგი MicroSD ბარათზე

შექმენით Bitmap სურათი და განათავსეთ იგი MicroSD ბარათზე
შექმენით Bitmap სურათი და განათავსეთ იგი MicroSD ბარათზე
შექმენით Bitmap სურათი და განათავსეთ იგი MicroSD ბარათზე
შექმენით Bitmap სურათი და განათავსეთ იგი MicroSD ბარათზე

მე გამოვიყენე ფოტოების რედაქტირების უფასო პროგრამა, სახელწოდებით GIMP, ჩემი მანქანის გამოსახულების მოჭრისა და ზომის შესაცვლელად ზემოდან. შემდეგ მე ექსპორტი გავუკეთე სურათს, როგორც 24 ბიტიანი bitmap სურათი სახელწოდებით "car.bmp", რომელიც არის 110 პიქსელი 250 პიქსელით. ეს ავტვირთე microSD ბარათზე და ჩავდე microSD ბარათი ჩემს Teensy 3.6 მიკროკონტროლერში.

მთავარი მიზეზი, რის გამოც მე მივედი Teensy 3.6– თან UNO– ს ნაცვლად, იყო სიჩქარე, რომლითაც Teensy– ს შეეძლო SD ბარათის წაკითხვა და გამოსახულების ჩვენება RA8875 დისპლეის დრაივერის გამოყენებით. UNO– ს გამოყენებით, პროცესს დაახლოებით 8 წამი დასჭირდა, ხოლო Teensy 3.6– ს 1.8 წამი.

ნაბიჯი 3: აპარატურის დაკავშირება

აპარატურის დაკავშირება
აპარატურის დაკავშირება

Adafruit– ს აქვს მართლაც კარგი გარეგნობის 7”TFT LCD, რომელსაც ამოძრავებს IC, სახელწოდებით RA8875. მე ავირჩიე ეს დისპლეი და დისპლეი დრაივერი ორი მიზეზის გამო. პირველი, არის ფართო ბიბლიოთეკები, რომლებიც წინასწარ არის დაწერილი ჩვენებისთვის. ნებისმიერი მიკროკონტროლი SPI– ზე მეტი, რაც იმას ნიშნავს, რომ არ არსებობს იმდენი მავთული, რომელიც აკავშირებს მიკროკონტროლერს RA8875– თან.

ამ კონფიგურაციას ორი უარყოფითი მხარე აქვს. პირველი არის ის ფაქტი, რომ არსებობს აპარატურის ხარვეზი RA8875 დაფაზე ადაფრუტიდან, რომელიც მოითხოვს 74HC125 სამ სახელმწიფო ბუფერული IC- ს გამოყენებას, თუ გსურთ გამოიყენოთ SPI დაფუძნებული ნებისმიერი მოწყობილობა, როგორიცაა SD ბარათი. აპარატურის ხარვეზის უფრო სრულყოფილად გასაგებად, გთხოვთ წაიკითხოთ შემდეგი ფორუმი. მეორე, არის შედარებით დიდი დრო, რაც საჭიროა სურათების LCD ეკრანზე გაგზავნისთვის. ასევე, LCD– ისთვის სურათის გაგზავნას დიდი დრო სჭირდება SPI კავშირის გამო, რომელიც შემოიფარგლება მიკროკონტროლების საათის სიჩქარით და დიდი რაოდენობით მონაცემებით, რომლებიც უნდა გაიგზავნოს ეკრანის დრაივერზე ძალიან ცოტა მავთული.

მე შევქმენი Fritzing სქემა, რათა ნებისმიერს, ვისაც სურს ამ ჩვენების შექმნა, ადვილად წაიკითხოს, თუ რას უკავშირდება Teensy 3.6 ქინძისთავები. ქვემოთ შევიტანე.frz ფაილი. კონდენსატორები არის მხოლოდ ორი კომპონენტი, რომლებიც არის 1F 16V ელექტროლიტური კონდენსატორი და 100μF კერამიკული კონდენსატორი. მე ჩავრთე ისინი, რათა დავრწმუნდე, რომ Teensy მიკროკონტროლერის სიმძლავრე იყო მუდმივი DC +5V და არ შეიცავდა ძაბვის ვარდნას (შეიძლება არ იყოს საჭირო, მაგრამ მე ჩავრთე ისინი, რადგან მანქანის ძაბვის მიწოდება შეიძლება სწრაფად მერყეობდეს ბატარეაზე დატვირთვის მიხედვით).

კომპონენტების შესახებ რამდენიმე რამ უნდა აღინიშნოს. პირველი, დონის ცვლადი იღებს ნებისმიერ 5V სიგნალს და აქცევს მას 3.3V Teensy 3.6 უსაფრთხო ძაბვად. ეს აუცილებელია როგორც OBD I2C ადაპტერისთვის, ასევე სარეზერვო სენსორის გადამცემისთვის. მეორეც, მოზარდობის I2C ხაზები მოითხოვს 4.7kΩ- ის გამწევ რეზისტორებს. მესამე, ოთხი ღამის რეზისტორი, რომლებიც აკავშირებს "ღამის მავთულს" (ჩამუქების მავთულს) და "სარეზერვო ჩართვის მავთულს" აუცილებელია ძაბვის გამყოფად, რათა 12V-13V სიგნალები დაახლოებით 2.5-3V სიგნალებამდე შემცირდეს.

განახლება 7/22/18: აღმოვაჩინე, რომ OBD-I2C მოდულის შიდა ტემპერატურის სენსორი ძალიან უცნაურ რიცხვებს გამოსცემს. ხანდახან ის იმუშავებდა, მაგრამ უმეტესწილად, მოდული აწარმოებდა ტემპერატურას 400 გრადუსზე ზემოთ F. ამის გამო, მე გადავწყვიტე დავამატო ჩემი საკუთარი ds18b20 ტემპერატურის სენსორი. თქვენ უფრო მეტად მივესალმებით ნებისმიერი ტიპის ტემპერატურის სენსორის გამოყენებას აქ, მაგრამ თქვენ მოგიწევთ არდუინოს კოდის რედაქტირება.

განახლება 3/1/19: Teensy 3.6 არ იწყება, როდესაც ძალიან ცივა. მე დავამატე დენის გადატვირთვის ჩართვა, რათა დავრწმუნდე, რომ ის სწორად ჩატვირთვისას.

ნაბიჯი 4: RA8875 ჩვენების დრაივერი და გრაფიკული დიზაინი

RA8875 ჩვენების დრაივერი და გრაფიკული დიზაინი
RA8875 ჩვენების დრაივერი და გრაფიკული დიზაინი

RA8875 ჩვენების დრაივერს აქვს ბიბლიოთეკა სახელწოდებით Adafruit_RA8875, რომელიც გამოვიყენე პირველი და მეორე გვერდზე ნაჩვენები ფორმების შექმნისას. RA8875 ბიბლიოთეკას შეუძლია შექმნას მხოლოდ ხაზები, ოთხკუთხედები, მომრგვალებული ოთხკუთხედები, სამკუთხედები, ელიფსები და წრეები, ამიტომ გრაფიკა უნდა იყოს შემუშავებული ჭკვიანურად უფრო რთული ფორმების შესაქმნელად. მაგალითად, ნაცრისფერი ბეჭედი პირველ გვერდზე არის უფრო დიდი დიამეტრის სრული ნაცრისფერი წრე, რასაც მოყვება პატარა დიამეტრის სრული შავი წრე. ასევე, სარეზერვო სენსორის გვერდის ერთი მცირე ნაწილი შეიცავს 2 სამკუთხედს ისე მოწყობილი, რომ ისინი ქმნიან პოლიგონის ფორმას. მე ეს გავაკეთე ისე, რომ შემეძლო შემეცვალა სარეზერვო სენსორის გვერდის ინდივიდუალური მონაკვეთის ფერი. ეკრანზე არდუინოს ფაილი შეიცავს წერტილების მასივს, რომელსაც ვიყენებდი თვალყურის დევნებისთვის, თუ სად იყო სამკუთხედები და სხვა ფორმები.

მე გამოვიყენე ეს შესანიშნავი ვებსაიტი, რომ შევარჩიო RGB565 ფერები და განვსაზღვრო ისინი ესკიზში, რათა შემეძლოს გამოვიყენო წინასწარ განსაზღვრული ფერები Adafruit_RA8875 ბიბლიოთეკაში.

შრიფტების თვალსაზრისით, Adafruit_RA8875 ბიბლიოთეკა მხარს უჭერს მხოლოდ ერთს, თუ არ გააკეთებთ კომენტარს ბიბლიოთეკის იმ მონაკვეთზე, რომელიც საშუალებას გაძლევთ გამოიყენოთ შრიფტები Adafruit_GFX ბიბლიოთეკა. ქვემოთ შევიტანე შეცვლილი Adafruit_RA8875 ბიბლიოთეკა. მე უბრალოდ გამოვაქვეყნე კოდის რამდენიმე სტრიქონი და შემდეგ შევძელი შრიფტების გამოყენება Adafruit_GFX ბიბლიოთეკაში. ასევე, 7 სეგმენტის შრიფტის გამოსაყენებლად, რომელიც მე გამოვიყენე ამ პროექტში, გთხოვთ დარწმუნდეთ, რომ ფაილი "FreeSevenSegNumFont.h" არის მე შრიფტების საქაღალდეში Adafruit_GFX ბიბლიოთეკაში.

ნაბიჯი 5: ესკიზის ატვირთვა

ესკიზის ატვირთვა
ესკიზის ატვირთვა
ესკიზის ატვირთვა
ესკიზის ატვირთვა

ესკიზის Teensy 3.6 –ზე ასატვირთად, თქვენ უნდა დააინსტალიროთ Teensyduino. შემდეგ თქვენ უნდა შეცვალოთ Adafruit_RA8875 და Adafruit_GFX ბიბლიოთეკები მოზარდობის ბიბლიოთეკის ადგილას (არა თქვენი ტიპიური მდებარეობა დოკუმენტებში). Mac– ზე, მე უნდა დააჭიროთ მარჯვენა ღილაკს Arduino პროგრამის ხატზე პროგრამებში და შემდეგ გადავიდე/Contents/Java/hardware/teensy/avr/libraries. Windows– ზე, მე დარწმუნებული ვარ, რომ ეს არის თქვენი C დისკის ქვეშ პროგრამის ფაილებში x86, Arduino და შემდეგ აპარატურის საქაღალდე. ამის გაკეთებისთანავე, თქვენ უნდა შეცვალოთ ესკიზის წიგნი Arduino პროგრამაში, მისი რედაქტირებით იმ პარამეტრების მიხედვით, სადაც არის თქვენი მოზარდობის ბიბლიოთეკები (ანუ/აპლიკაციები/Arduino.app/Contents/Java/hardware/teensy/avr).

განახლება 7/22/16: შიდა ტემპერატურის სენსორის პრობლემის გამო, რომელზეც ადრე ვისაუბრე, მომიწია DS18B20 მოდულის ტემპერატურის სენსორის დაყენება. თქვენ დაინახავთ 4 არდუინოს ესკიზს zip ფაილში. გთხოვთ ატვირთოთ display_code ესკიზი თუ გსურთ გამოიყენოთ OBD-II I2C მოდულის შიდა ტემპერატურის სენსორი. გთხოვთ ატვირთოთ display_code_with_new_temperature_sensor ესკიზი, თუ გსურთ გამოიყენოთ DS18B20 მოდული, რომელიც ზემოთ დავუკავშირე.

განახლება 11/17/17: მე გამოვასწორე პროგრამული უზრუნველყოფის რამდენიმე შეცდომა, მათ შორის DS18B20 გამომავალი ტემპერატურა 185 ფარენჰეიტი, ეკრანი საერთოდ არ ირთვება ცივ ამინდში და პიქსელები არასწორ ფერში იჭერენ ეკრანის დაბნელებისას.

შემდეგ გამოიყენეთ ზემოთ მოცემული სურათი, რათა დარწმუნდეთ, რომ თქვენი მოზარდობის პარამეტრები ემთხვევა სურათს. აღმოვაჩინე, რომ მოზარდის გადატვირთვა 240 MHz– ზე არ აძლევდა საშუალებას I2C OBD-II ადაპტერს მოზარდებთან კომუნიკაციისთვის. დაბოლოს, უბრალოდ დააჭირეთ ატვირთვას.

არდუინოს ესკიზის ფაილებში დავწერე საკმაოდ ვრცელი კომენტარები. გთხოვთ, მოიძიოთ ახსნა, თუ როგორ მუშაობს პროგრამული უზრუნველყოფა. გთხოვთ მოგერიდებათ დამიკავშირდეთ ნებისმიერი კითხვით. შევეცდები მათ ვუპასუხო ჩემი შესაძლებლობების მაქსიმალურად. Წარმატებები!

ნაბიჯი 6: 3D ბეჭდვა LCD ქეისი

3D ბეჭდვა LCD ქეისი
3D ბეჭდვა LCD ქეისი
3D ბეჭდვა LCD ქეისი
3D ბეჭდვა LCD ქეისი
3D ბეჭდვა LCD ქეისი
3D ბეჭდვა LCD ქეისი

მე შევქმენი 3D დაბეჭდილი LCD ზედა და ქვედა ყდა 7 ეკრანის დასაცავად. მე დავამატე. IPT გამომგონებელი ნაწილის ფაილები, ასევე. STL ფაილები.

მე ასევე შევიტანე ნაწილი სახელწოდებით backup_sensor_ring.ipt, რომელიც არის ბეჭედი, რომელიც ჯდება იმ სარეზერვო სენსორების გარშემო, რომლებიც მე ზემოთ დავუკავშირე. ჩემს მანქანას უკვე ჰქონდა წინასწარ გაბურღული სარეზერვო სენსორული ხვრელები, რომლებიც ძალიან დიდი იყო სარეზერვო სენსორებისთვის, რომლებიც მე ვიყიდე ამაზონზე, ამიტომ მომიწია ბეჭდის შექმნა, რომელიც მოერგებოდა სარეზერვო სენსორებს. თუ თქვენ აპირებთ გაბურღვას თქვენს ბამპერში კომპლექტში შემავალი წრიული საბურღი ნაჭრით, ეს ნაწილი არ დაგჭირდებათ.

ნაბიჯი 7: OBD-II პორტის გაყოფა Arduino– ს აქვს ძალა მხოლოდ მანქანის მუშაობის დროს

OBD-II პორტის გაყოფა Arduino– ს აქვს ძალა მხოლოდ მაშინ, როდესაც მანქანა მუშაობს
OBD-II პორტის გაყოფა Arduino– ს აქვს ძალა მხოლოდ მაშინ, როდესაც მანქანა მუშაობს
OBD-II პორტის გაყოფა Arduino– ს აქვს ძალა მხოლოდ მაშინ, როდესაც მანქანა მუშაობს
OBD-II პორტის გაყოფა Arduino– ს აქვს ძალა მხოლოდ მაშინ, როდესაც მანქანა მუშაობს
OBD-II პორტის გაყოფა Arduino– ს აქვს ძალა მხოლოდ მაშინ, როდესაც მანქანა მუშაობს
OBD-II პორტის გაყოფა Arduino– ს აქვს ძალა მხოლოდ მაშინ, როდესაც მანქანა მუშაობს

ჩემი ეკრანის დაყენებიდან მალევე მივხვდი, რომ ეკრანი ყოველთვის ჩართული იყო, მაშინაც კი, როდესაც მანქანა გამორთული იყო. OBD-II პინუსში ჩავხედე, აღმოვაჩინე, რომ 12V ელექტროგადამცემი ხაზი OBD-II კონექტორთან ყოველთვის პირდაპირ კავშირშია ბატარეასთან.

ამის თავიდან ასაცილებლად, მე შევიძინე OBD-II გამყოფი, გავწყვიტე მავთული, რომელიც მიამაგრებს 16-ს გამყოფი ორ კონექტორზე ერთ-ერთზე და შემდეგ ეს მავთული დავუკავშირე წრიულ მავთულს.

შემდეგ, ჩემი მულტიმეტრის გამოყენებით, მივედი მძღოლის მხარის დაუკრავენ ყუთში და გამოვცადე არსებული დაუკრავენები, რათა დაენახა, რომელი დაუკრავს დენის ძალა მას შემდეგ, რაც გასაღები ანთებად იქცა.

დაბოლოს, მე დავამატე ჩართვის მიკროსქემის მავთული იმ დაუკრავეს, რომელიც მე განვათავსე ისე, რომ ეკრანი ახლა მხოლოდ მაშინ ირთვება, როდესაც ჩემი მანქანა მუშაობს. გთხოვთ, ჩაატაროთ კვლევა იმის შესახებ, თუ როგორ სწორად დაამატოთ წრე თქვენს მანქანას. აღმოვაჩინე, რომ ეს youtube გაკვეთილი კარგი იყო.

გირჩევთ: