Სარჩევი:

ჟოლოს PI მრავალჯერადი I2C მოწყობილობა: 3 ნაბიჯი
ჟოლოს PI მრავალჯერადი I2C მოწყობილობა: 3 ნაბიჯი

ვიდეო: ჟოლოს PI მრავალჯერადი I2C მოწყობილობა: 3 ნაბიჯი

ვიდეო: ჟოლოს PI მრავალჯერადი I2C მოწყობილობა: 3 ნაბიჯი
ვიდეო: BTT GTR v1.0/M5 v1.0 - Basics 2024, ივლისი
Anonim
ჟოლოს PI მრავალჯერადი I2C მოწყობილობა
ჟოლოს PI მრავალჯერადი I2C მოწყობილობა
ჟოლოს PI მრავალჯერადი I2C მოწყობილობა
ჟოლოს PI მრავალჯერადი I2C მოწყობილობა

იმედგაცრუებული ხართ, რადგან თქვენ არ შეგიძლიათ გამოიყენოთ ერთი და იგივე I2C მოწყობილობების ჯერადი თქვენს პროექტში. არ არის საჭირო ნელი მულტიპლექსერების გამოყენება. უახლესი raspbian ბირთვი მხარს უჭერს მრავალი I2C ავტობუსის შექმნას GPIO ქინძისთავების გამოყენებით. ეს გამოსავალი არის ძალიან სწრაფი.

ნაბიჯი 1: ზოგიერთი შელის ბრძანება

ზოგიერთი შელის ბრძანება
ზოგიერთი შელის ბრძანება

შეაერთეთ თქვენი ერთ -ერთი i2c მოწყობილობა, სანამ თქვენი ჟოლოს pi არის, დაიწყეთ თქვენი ჟოლოს pi და გაუშვით

sudo i2cdetect -y 1

თქვენ ნახავთ ცხრილს, როგორც მიმაგრებული ფიგურაში. მე მაქვს BMP280 ტემპერატურის და ბარომეტრიული წნევის სენსორი. I2c მისამართი არის 0x76 ცხრილის მიხედვით. გაითვალისწინეთ ეს მისამართი.

გააკეთეთ ეს თქვენი ყველა i2c მოწყობილობისთვის.

ნაბიჯი 2: პირველი შემთხვევა: I2c მოწყობილობებს აქვთ იგივე მისამართი

შემთხვევა პირველი: I2c მოწყობილობებს აქვთ იგივე მისამართი
შემთხვევა პირველი: I2c მოწყობილობებს აქვთ იგივე მისამართი

ეს ყოველთვის იყო პრობლემური შემთხვევა. I2c ავტობუსს შეუძლია მრავალი მოწყობილობის დამუშავება, მაგრამ მათ უნდა ჰქონდეთ განსხვავებული i2c მისამართები. ზოგიერთ i2c მოწყობილობას აქვს მხტუნავები სხვა i2c მისამართების დასაყენებლად, მაგრამ ბევრს არა. ამ შემთხვევაში თქვენ შეგიძლიათ გამოიყენოთ i2c მულტიპლექსერი (აპარატურა) i2c SDA (მონაცემები) და SCL (საათი) დასატრიალებლად, ან შეგიძლიათ შექმნათ დამატებითი i2c ავტობუსი ან მეტი.

მე შევქმნი ორ დამატებით ავტობუსს, nl ავტობუსს 3 და 4

გახსენით cli და გაუშვით

cd /ჩატვირთვა

sudo nano config.txt

დაამატეთ კოდის შემდეგი ხაზი, სასურველია იმ განყოფილებაში, სადაც spi და i2c ჩართულია.

dtoverlay = i2c-gpio, ავტობუსი = 4, i2c_gpio_delay_us = 1, i2c_gpio_sda = 23, i2c_gpio_scl = 24

ეს ხაზი შექმნის დამატებით i2c ავტობუსს (ავტობუსი 4) GPIO 23 –ზე SDA და GPIO 24 SCL– ს სახით (GPIO 23 და 24 ნაგულისხმევია)

ასევე დაამატეთ შემდეგი ხაზი i2c ავტობუსის 3 შესაქმნელად

dtoverlay = i2c-gpio, ავტობუსი = 3, i2c_gpio_delay_us = 1, i2c_gpio_sda = 17, i2c_gpio_scl = 27

GPIO 17 იქნება SDA და GPIO 27 იქნება SCL i2c ავტობუსისთვის 4.

გასასვლელად დააჭირეთ ღილაკს X.

ავტობუსის ნუმერაციაზე და შეკვეთაზე შენიშვნა:

არასოდეს გამოიყენოთ ავტობუსი 0 და 2, ის გამოიყენება დაფაზე სხვა ნივთებისთვის, როგორიცაა eprom ქუდებზე და ა

2019 წლის აპრილის რასპბიური გამოშვებისთვის:

თქვენ ყოველთვის უნდა დაიწყოთ უმაღლესი ავტობუსით (ავტობუსი 4 ამ შემთხვევაში) თქვენს config.txt– ში და იმუშაოთ ყველაზე დაბალ ავტობუსამდე (ავტობუსი 3).

ყველაზე დაბალი ავტობუსი ყოველთვის უნდა იყოს ავტობუსი 3

თუ თქვენ გჭირდებათ 5 დამატებითი ავტობუსი, ავტობუსები უნდა იყოს 7, 6, 5, 4, 3 რიგის მიხედვით

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

დახურეთ თქვენი PI, შეცვალეთ იგი. შეაერთეთ თქვენი i2c მოწყობილობები ავტობუს 4 -თან (SDA GPIO 23 და SCL GPIO 24) და მეორე i2c ავტობუს 3 -თან (SDA GPIO 17 და SCL GPIO 27).

ჩართეთ pi.

გაშვება:

sudo i2cdetect -l (მცირე ასო L)

თქვენ ახლა ნახავთ, რომ i2c ავტობუსი 3 და 4 ასევე ჩამოთვლილია. ასევე გაუშვით:

sudo i2cdetect -y 3

sudo i2cdetect -y 4

ახლა თქვენ შეგიძლიათ გამოიყენოთ თქვენი სენსორი თქვენს პროგრამირების ენაზე. გახსოვდეთ მიუთითეთ i2c– ის სწორი ავტობუსები.

მიმაგრება არის მაგალითი პოპულარული BMP280 ტემპერატურისა და წნევის სენსორისთვის. არცერთ მულტიპლექსერს არ შეუძლია სწრაფად წაიკითხოს 2 BMP280.

ასევე მოცემულია 2 Sensirion SDP 810 სენსორის მაგალითი. ისევ მუშაობს ბევრად უფრო სწრაფად, ვიდრე მულტიპლექსერი, რომელსაც მე ვიყენებდი წარსულში

მე შევქმენი პითონის კოდი, რომ წავიკითხო ორი ახალი BMP388 ადაფრუტიდან.

ასევე შემიძლია მომავალში სხვა სენსორები დავამატო

ნაბიჯი 3: საქმე 2: განსხვავებული I2c მისამართები

უბრალო. i2c არის ავტობუსი. ავტობუსის პერფუუსი უნდა დაუკავშირდეს მრავალ მოწყობილობას. შეაერთეთ მოწყობილობები იმავე i2c ავტობუსის პარალელურად. შეგიძლიათ გამოიყენოთ ავტობუსი ერთი.

გაშვება:

sudo i2cdetect -y 1

თქვენ ნახავთ ჩამოთვლილ მოწყობილობებს.

გირჩევთ: