สารบัญ:

ตั้งโปรแกรมง่ายเหลือเชื่อ!: 10 ขั้นตอน
ตั้งโปรแกรมง่ายเหลือเชื่อ!: 10 ขั้นตอน

วีดีโอ: ตั้งโปรแกรมง่ายเหลือเชื่อ!: 10 ขั้นตอน

วีดีโอ: ตั้งโปรแกรมง่ายเหลือเชื่อ!: 10 ขั้นตอน
วีดีโอ: คีย์ลัด windows 10 ที่หลายๆคนไม่รู้ มันง่ายเหลือเชื่อ! 2024, กรกฎาคม
Anonim
Image
Image
โปรแกรมง่ายอย่างเหลือเชื่อ!
โปรแกรมง่ายอย่างเหลือเชื่อ!

วันนี้ผมจะมาพูดถึง STM32 Core, L476RG ซึ่งเป็นหน้าตาของ Ultra Low Power คุณสามารถดูได้ทางด้านซ้ายของภาพ อุปกรณ์นี้มีพินพินตัวเมียสองอัน แต่ละอันที่แต่ละด้าน ซึ่งไม่มีอะไรมากไปกว่าตัวเชื่อมต่อสำหรับชิลด์อาร์ดิโน นี่มันเยี่ยมไปเลยไม่ใช่เหรอ?

ในความเห็นของฉัน STMicroelectronics ทำสิ่งนี้ในชุดพัฒนาเพราะรู้ว่ามืออาชีพใช้ชิปนี้ บริษัท นี้กำลังมุ่งสู่ Arduino มากขึ้นเรื่อย ๆ และนี่ก็เป็นจริงสำหรับชุดเครื่องมือ STMicroelectronics ระดับมืออาชีพอื่นๆ อีกหลายชุด

สุดท้าย เกี่ยวกับโครงการในวันนี้ เราจะใช้เซ็นเซอร์ DS18b20 สองตัวนอกเหนือจาก L476RG ดังนั้น เราจะทำการแอสเซมบลีอย่างง่ายโดยใช้ L476RG นำเข้าไลบรารีในสภาพแวดล้อม MBED สร้างโปรแกรมในสภาพแวดล้อม MBED และรับข้อมูลจาก L476RG ผ่าน USB / Serial

ฉันได้พูดคุยเล็กน้อยเกี่ยวกับ L476RG ในวิดีโอนี้: THE EASIER WAY TO PROGRAM A MICROCONTROLLER ซึ่งฉันจะแสดงวิธีกำหนดค่าสภาพแวดล้อม MBED ซึ่งออนไลน์อยู่

บางคนที่ติดตามวิดีโอของฉันกำลังถามฉันว่า STM32 มาแทนที่ ESP32 หรือไม่ ฉันพูดอย่างหนึ่ง: มันไม่ได้แทนที่และไม่สามารถทำได้เพราะมันเป็นสองสิ่งที่แตกต่างกันอย่างสิ้นเชิง

ชิป STM32 นี้เป็นไมโครคอนโทรลเลอร์หรือมากกว่า มันไม่ใช่ "คลัสเตอร์ของสิ่งต่างๆ" เช่นเดียวกับ ESP32 ดังนั้นชื่ออาจดูคล้ายกัน แต่ต่างกันโดยสิ้นเชิง STM32 เป็นไมโครคอนโทรลเลอร์สำหรับใช้งานทั่วไป เช่น PIC, Atmel เป็นต้น

ขั้นตอนที่ 1: ทรัพยากรที่ใช้

ทรัพยากรที่ใช้
ทรัพยากรที่ใช้

1 คอร์ L476RG

เซ็นเซอร์ DS18b20 2 ตัว (เราใช้โมดูลกันน้ำทั่วไปในตลาด)

ตัวต้านทาน 1 4k7

มินิโปรโตบอร์ด

จัมเปอร์สำหรับเชื่อมต่อ

ขั้นตอนที่ 2: การประกอบ

การประกอบ
การประกอบ

เริ่มแรกเราจะดำเนินการประกอบโดยใช้เซ็นเซอร์อุณหภูมิตัวใดตัวหนึ่ง

กำลังของมันจะเป็น 5V

ตัวต้านทาน 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

ในช่อง "Source URL" ให้กรอก https://os.mbed.com/users/Sissors/code/DS1820/ แล้วคลิกนำเข้า

ไลบรารี DS1820 ของคุณควรปรากฏในโฟลเดอร์โปรแกรมของคุณ

ขั้นตอนที่ 6: รหัสที่มา

รวมถึง

เราเริ่มต้นด้วยการรวมไลบรารีที่จำเป็น

#include "mbed.h" //inclusão da biblioteca padrão do MBED#include "DS1820.h" //รวมเซ็นเซอร์ DS1820

เรากำหนดค่าคงที่ที่จะเป็นตัวแทนของพินที่ใช้

โปรดทราบว่า DS18b20 เป็นเซ็นเซอร์ที่มีการสื่อสารแบบ 1-WIRE ด้วยเหตุนี้ เราใช้ไลบรารีที่จะจัดการโปรโตคอลการสื่อสารทั้งหมดกับอุปกรณ์ ซึ่งรวมถึงการระบุอุปกรณ์แต่ละเครื่องจนถึงคำสั่งอ่าน

#define PINO_DE_DADOS A0 //define o pino para leitura dos dados#define MAX_SENSORES 16 //define o número máximo para o vetor de เซ็นเซอร์

เราสร้างเวกเตอร์ที่จะชี้ไปที่อุปกรณ์ที่เป็นไปได้ทั้งหมด 16 เครื่องที่เชื่อมต่อกับสายข้อมูล

เซ็นเซอร์ DS1820*[MAX_SENSORES]; //cria um vetor com 16 ตำแหน่งสำหรับ os sensores

เราเริ่มต้นวิธีการหลัก () โดยที่โดยใช้วิธี "unassignedProbe ()" ที่มีอยู่ในไลบรารี DS1820 เรามองหาอุปกรณ์ที่มีอยู่ทั้งหมดในสายการสื่อสาร

เราเติมเวกเตอร์เซ็นเซอร์ ด้วยอินสแตนซ์ที่จะเป็นตัวแทนของเซ็นเซอร์แต่ละตัวที่มีอยู่

เราทำสิ่งนี้จนกว่าจะพบตัวสุดท้ายหรือจนกว่าจะถึงเซ็นเซอร์สูงสุด 16 ตัว

int หลัก () { int encontrados = 0; ในขณะที่ (DS1820::unassignedProbe (PINO_DE_DADOS)) (//inicia a procura por sensores sensor [encontrados] = ใหม่ DS1820 (PINO_DE_DADOS); //cria uma instancia para o เซ็นเซอร์ encontrado encontrados++; if (encontrados == MAX_SENSORES) //verifica se atingiu o máximo de เซ็นเซอร์แตก; }

เราส่งจำนวนเซ็นเซอร์ที่พบในบรรทัด

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

เราเริ่มวนซ้ำแบบไม่สิ้นสุด โดยขอให้เซ็นเซอร์ที่มีอยู่ทั้งหมดคำนวณอุณหภูมิตามลำดับ จากนั้นวนซ้ำผ่านเวกเตอร์เซ็นเซอร์โดยส่งการอ่านที่ได้รับ

printf("Dispositivos encontrado(s): %d \r\n\n", encontrados); ในขณะที่(1) { เซ็นเซอร์[0]->แปลงอุณหภูมิ (จริง DS1820::all_devices); //solicita a leitura de temperatura สำหรับ todos os dispositivos encontrados สำหรับ (int i = 0; itemperature()); //… ย้อนรอยอุณหภูมิ printf("\r\n"); รอ(1); }

ขั้นตอนที่ 7: ข้อมูลที่ได้รับ

ข้อมูลที่ได้รับ
ข้อมูลที่ได้รับ

โดยใช้เซ็นเซอร์ตัวเดียว เราจะได้เอาต์พุตแบบอนุกรมต่อไปนี้

ขั้นตอนที่ 8: รวมเซ็นเซอร์เพิ่มเติม

รวมเซ็นเซอร์เพิ่มเติม
รวมเซ็นเซอร์เพิ่มเติม
รวมเซ็นเซอร์เพิ่มเติม
รวมเซ็นเซอร์เพิ่มเติม

ในการทดสอบโค้ด เราแนะนำเซ็นเซอร์อีกตัวในสายการสื่อสาร เพียงเชื่อมต่อขนานกับเซ็นเซอร์ตัวแรก

อย่าลืมปิดชุดประกอบก่อนเชื่อมต่อเซ็นเซอร์ใหม่

เมื่อรีสตาร์ทแอสเซมบลี เราได้รับผลลัพธ์ต่อไปนี้ โดยไม่มีการเปลี่ยนแปลงใด ๆ ในซอร์สโค้ด

ขั้นตอนที่ 9: ดูแหล่งที่มา

#include "mbed.h" //inclusão da biblioteca padrão do MBED#include "DS1820.h" //inclusão da biblioteca do sensor DS1820 #define PINO_DE_DADOS A0 //define o pino para leitura dos dados #define MAX_SENSORES 16 // กำหนด o número máximo para o vetor de sensores DS1820* เซ็นเซอร์[MAX_SENSORES]; //cria um vetor com 16 ตำแหน่งเซ็นเซอร์สำหรับระบบปฏิบัติการ int main () { int encontrados = 0; ในขณะที่ (DS1820::unassignedProbe (PINO_DE_DADOS)) (//inicia a procura por sensores sensor [encontrados] = ใหม่ DS1820 (PINO_DE_DADOS); //cria uma instancia para o เซ็นเซอร์ encontrado encontrados++; if (encontrados == MAX_SENSORES) //verifica se atingiu o máximo de เซ็นเซอร์แตก; } printf("Dispositivos encontrado(s): %d \r\n\n", encontrados); ในขณะที่(1) { เซ็นเซอร์[0]->แปลงอุณหภูมิ (จริง DS1820::all_devices); // solicita a leitura de temperatura para todos os dispositivos encontrados สำหรับ (int i = 0; itemperature()); //… ย้อนรอยอุณหภูมิ printf("\r\n"); รอ(1); } }

ขั้นตอนที่ 10: ไฟล์

ไฟล์ PDF

คนอื่น

แนะนำ: