Სარჩევი:

წარმოუდგენლად ადვილია პროგრამირება!: 10 ნაბიჯი
წარმოუდგენლად ადვილია პროგრამირება!: 10 ნაბიჯი

ვიდეო: წარმოუდგენლად ადვილია პროგრამირება!: 10 ნაბიჯი

ვიდეო: წარმოუდგენლად ადვილია პროგრამირება!: 10 ნაბიჯი
ვიდეო: არის რაღაც რაც მანამდე უნდა იცოდე... 2024, ივლისი
Anonim
Image
Image
წარმოუდგენლად ადვილია პროგრამირება!
წარმოუდგენლად ადვილია პროგრამირება!

დღეს მე ვისაუბრებ STM32 Core– ზე, L476RG– ზე, რომელიც არის Ultra Low Power– ის სახე. თქვენ შეგიძლიათ ნახოთ იგი სურათის მარცხნივ. ამ მოწყობილობას აქვს ორი ქალი pin ბარი, თითო თითოეულ მხარეს, რომლებიც სხვა არაფერია თუ არა arduino ფარის კონექტორები. ეს მშვენიერია, არა?

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

დაბოლოს, დღეს რაც შეეხება პროექტს, ჩვენ L476RG– ს გარდა გამოვიყენებთ ორ DS18b20 სენსორს. ასე რომ, ჩვენ გავაკეთებთ მარტივ შეკრებას L476RG გამოყენებით, შევიტანთ ბიბლიოთეკას MBED გარემოში, შევქმნით პროგრამას MBED გარემოში და მივიღებთ მონაცემებს L476RG– დან USB / სერიის საშუალებით.

მე უკვე ცოტათი ვისაუბრე L476RG– ზე ამ ვიდეოში: მიკროკონტროლერის დაპროგრამების უადვილესი გზა, სადაც მე ვაჩვენებ, თუ როგორ ხდება კონფიგურაცია MBED გარემოს, რომელიც არის ინტერნეტში.

ზოგიერთი ადამიანი, ვინც მიყვება ჩემს ვიდეოებს, მეკითხებიან, ცვლის თუ არა STM32 ESP32. ერთს ვამბობ: ის არ ცვლის და არ შეიძლებოდა, რადგან ეს ორი სრულიად განსხვავებული რამაა.

ეს STM32 ჩიპი არის მიკროკონტროლერი, უფრო სწორად; ეს არ არის "საგნების მტევანი", როგორც ESP32. ასე რომ, სახელი შეიძლება მსგავსი იყოს, მაგრამ ისინი სრულიად განსხვავდებიან. STM32 არის ზოგადი დანიშნულების მიკროკონტროლერი, როგორიცაა PIC, Atmel, მაგალითად.

ნაბიჯი 1: გამოყენებული რესურსები

გამოყენებული რესურსები
გამოყენებული რესურსები

1 ბირთვი L476RG

2 DS18b20 სენსორი (ჩვენ ვიყენებთ საერთო წყალგაუმტარი მოდულებს ბაზარზე)

1 4k7 რეზისტორი

მინი პროტობორდი

მხტუნავები კავშირისთვის

ნაბიჯი 2: შეკრება

შეკრება
შეკრება

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

მისი სიმძლავრე იქნება 5 ვ.

4k7 რეზისტორი გამოყენებული იქნება მონაცემთა ხაზის გაყვანის გასაკეთებლად (1-Wire).

ჩვენ წავიკითხავთ მონაცემებს A0 პინის გამოყენებით.

ნაბიჯი 3: ახალი პროგრამა MBED– ში

ახალი პროგრამა MBED– ში
ახალი პროგრამა MBED– ში
ახალი პროგრამა MBED– ში
ახალი პროგრამა MBED– ში
ახალი პროგრამა MBED– ში
ახალი პროგრამა MBED– ში

მას შემდეგ რაც თქვენ შექმნით თქვენს ანგარიშს MBED– ში და შეხვალთ მასზე, ჩვენ შევქმნით ახალ პროგრამას. ამისათვის დააწკაპუნეთ მარჯვენა ღილაკით "ჩემი პროგრამები" და აირჩიეთ "ახალი პროგრამა …"

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

ჩვენ ახლა დააჭირეთ "შაბლონს".

ჩვენ შევქმნით პროგრამას მაგალითის საფუძველზე "აჩვენეთ შეტყობინება კომპიუტერზე UART გამოყენებით".

შეიყვანეთ პროგრამის სახელი "პროგრამის სახელი".

შეამოწმეთ "განაახლეთ ეს პროგრამა და ბიბლიოთეკები უახლესი გადასინჯვისთვის" ვარიანტი.

შეიქმნება თქვენი პროგრამის ახალი საქაღალდე, მათ შორის ნაგულისხმევი MBED ბიბლიოთეკა და main.cpp ფაილი.

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

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

ნაბიჯი 4: DS18b20 ბიბლიოთეკის იმპორტი

DS18b20 ბიბლიოთეკის იმპორტი
DS18b20 ბიბლიოთეკის იმპორტი

ვინაიდან არსებობს ბიბლიოთეკების რამდენიმე ვერსია Ds18b20– ისთვის, ჩვენ შემოვიღებთ url– ის გამოყენებით ისე, რომ თქვენი მაგალითი იყენებს ერთსა და იმავე ბიბლიოთეკას.

ნაბიჯი 5: ახალი პროგრამა MBED– ში

ახალი პროგრამა MBED– ში
ახალი პროგრამა MBED– ში
ახალი პროგრამა MBED– ში
ახალი პროგრამა MBED– ში

"წყაროს URL" ველში შეავსეთ: https://os.mbed.com/users/Sissors/code/DS1820/ და დააწკაპუნეთ იმპორტზე.

თქვენი DS1820 ბიბლიოთეკა უნდა გამოჩნდეს თქვენი პროგრამის საქაღალდეში.

ნაბიჯი 6: საწყისი კოდი

მოიცავს

ჩვენ დავიწყეთ საჭირო ბიბლიოთეკების ჩართვით.

#მოიცავს "mbed.h" // ბიბლიოთეკის ჩათვლით MBED#მოიცავს "DS1820.h" // ბიბლიოთეკის ჩათვლით DS1820

ჩვენ განვსაზღვრავთ მუდმივებს, რომლებიც წარმოადგენენ გამოყენებულ ქინძისთავებს.

გაითვალისწინეთ, რომ DS18b20 არის სენსორი 1-WIRE კომუნიკაციით. ამ მიზეზით, ჩვენ ვიყენებთ ბიბლიოთეკას, რომელიც გაუმკლავდება მოწყობილობებთან კომუნიკაციის მთელ პროტოკოლს. ეს მოიცავს თითოეული მოწყობილობის იდენტიფიცირებას წაკითხულ ბრძანებებამდე.

#განსაზღვრეთ PINO_DE_DADOS A0 // განსაზღვრეთ o pino para leitura dos dados#განსაზღვრეთ MAX_SENSORES 16 // განსაზღვრეთ o número máximo para o vetor de sensores

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

DS1820* სენსორი [MAX_SENSORES]; // cria um vetor com 16 posições para os sensores

ჩვენ ვიწყებთ ძირითად () მეთოდს, სადაც DS1820 ბიბლიოთეკაში შემავალი "unassignedProbe ()" მეთოდის გამოყენებით, ჩვენ ვეძებთ ყველა არსებულ მოწყობილობას საკომუნიკაციო ხაზში.

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

ჩვენ ამას ვაკეთებთ მანამ, სანამ ბოლო არ მოიძებნება ან სანამ არ მივაღწევთ მაქსიმუმ 16 სენსორს.

int main () {int encontrados = 0; while (DS1820:: unassignedProbe (PINO_DE_DADOS)) {// inicia a procura por sensores sensor [encontrados] = new DS1820 (PINO_DE_DADOS); // cria uma instancia para o sensor encontrado encontrados ++; თუ (encontrados == MAX_SENSORES) // verifica se atingiu o máximo de sensores break; }

ჩვენ ვაგზავნით ხაზზე ნაპოვნი სენსორების რაოდენობას.

printf ("Dispositivos encontrado (s): %d / r / n / n", encontrados);

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

printf ("Dispositivos encontrado (s): %d / r / n / n", encontrados); while (1) {sensor [0]-> convertTemperature (true, DS1820:: all_devices); // solicita a leitura de temperatura para todos os dispositivos encontrados for (int i = 0; itemperature ()); //. რა რა e retorna a temperatura printf ("\ r / n"); ლოდინი (1); }

ნაბიჯი 7: მიღებული მონაცემები

მიღებული მონაცემები
მიღებული მონაცემები

ერთი სენსორის გამოყენებით, ჩვენ ვიღებთ შემდეგ სერიულ გამომავალს.

ნაბიჯი 8: მეტი სენსორის ჩათვლით

მათ შორის მეტი სენსორი
მათ შორის მეტი სენსორი
მათ შორის მეტი სენსორი
მათ შორის მეტი სენსორი

კოდის შესამოწმებლად, ჩვენ შემოვიღებთ სხვა სენსორს საკომუნიკაციო ხაზში, უბრალოდ პირველი სენსორის პარალელურად მისი შეერთებით.

გახსოვდეთ, რომ გამორთოთ ასამბლეა ახალი სენსორების შეერთებამდე.

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

ნაბიჯი 9: იხილეთ წყარო

#მოიცავს "mbed.h" // ბიბლიოთეკის ჩათვლით MBED #მოიცავს "DS1820.h" // ბიბლიოთეკის ჩათვლით სენსორით DS1820 #განსაზღვრეთ PINO_DE_DADOS A0 // განსაზღვრეთ pino para leitura dos dados #განსაზღვრეთ MAX_SENSORES 16 // განსაზღვრეთ o número máximo para or vetor de sensores DS1820* სენსორი [MAX_SENSORES]; // cria um vetor com 16 posições para os sensores int main () {int encontrados = 0; while (DS1820:: unassignedProbe (PINO_DE_DADOS)) {// inicia a procura por sensores sensor [encontrados] = new DS1820 (PINO_DE_DADOS); // cria uma instancia para o sensor encontrado encontrados ++; თუ (encontrados == MAX_SENSORES) // verifica se atingiu o máximo de sensores break; } printf ("Dispositivos encontrado (s): %d / r / n / n", encontrados); while (1) {sensor [0]-> convertTemperature (true, DS1820:: all_devices); // solicita a leitura de temperatura para todos os dispositivos encontrados for (int i = 0; itemperature ()); //. რა რა e retorna a temperatura printf ("\ r / n"); ლოდინი (1); }}

ნაბიჯი 10: ფაილები

PDF

სხვა

გირჩევთ: