Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Menguasai Papan PSoC 6 Pioneer dengan IoT Add-On Shield: Panduan untuk Pengembang

Pendahuluan

PSoC 6 adalah tambahan terbaru ke seri prosesor PSoC canggih Cypress. PSoC 6 Pioneer IoT Add-On Shield adalah alat pengembangan yang terkait dengan baris prosesor ini, dilengkapi debugger papan dalam, header kompatibel Arduino, widget CapSense, dan lebih banyak lagi, semuanya terhubung ke prosesor PSoC 6. Prosesor adalah perangkat dual-core, dengan prosesor daya rendah Cortex-M0+ dan prosesor daya tinggi Cortex-M4 yang terhubung melalui periferal dan ruang memori bersama.

Tutorial ini akan menunjukkan cara memulai dengan Papan Pioneer, menggunakan Pioneer Add-on Shield untuk memperluas kemampuan perangkat PSoC 6. Kami akan menunjukkan cara berkomunikasi dengan Raspberry Pi melalui BLE dan WiFi (menggunakan modul XBee WiFi), serta cara berkomunikasi antara Papan Pioneer PSoC 4 BLE dan Papan Pioneer PSoC 6 melalui BLE.

Bahan yang Diperlukan

Contoh dalam tutorial ini dimaksudkan untuk digunakan dengan Kit PSoC 6 Pioneer, yang dapat dibeli langsung dari Cypress atau dari Digi-Key.

Jelas, Anda juga memerlukan Pioneer Add-on Shield. Anda juga memerlukan Modul XBee WiFi. Ada beberapa opsi XBee WiFi tergantung pada pengaturan Anda: Trace, RP-SMA Connector w/ external 2.4GHz antenna, atau Wire . Yang termudah adalah mendapatkan XBee dengan antena kawat.

Anda juga memerlukan Kit Starter Raspberry Pi 3. Ini akan menjadi target Anda untuk komunikasi dari Papan PSoC6 Pioneer Board. Tentu saja, Anda dapat membeli Pi 3 terpisah bersama dengan breadboard, kabel jumper, resistor, dan LED, tetapi kami pikir starter kit adalah penawaran luar biasa dan layak untuk diperoleh.

Tinjauan Hardware

Mari kita bahas fitur dari Kit IoT Add-on Board Pioneer secara detail.

Slot Kartu MicroSD – Pin untuk slot ini memetakan ke periferal SPI pada sebagian besar papan kompatibel Arduino, termasuk Papan PSoC 6 BLE Pioneer Board.

Header XBee – Header ini berjarak untuk menerima jejak XBee standar. Ia kompatibel dengan semua modul XBee resmi.

Konektor Qwiic – Konektor ini menambahkan dukungan untuk semua modul Qwiic SparkFun. Ini menyediakan 3,3V.

Konektor Daya MicroB USB – Garis data pada konektor ini tidak terhubung ke apa-apa. Ini menyediakan 5V ke regulator 3,3V untuk modul XBee, menggantikan 5V yang datang dari header Arduino dan memungkinkan modul XBee daya tinggi (seperti seluler, wifi, atau model Pro) berfungsi dengan baik.

Tombol D7 dan D9 – Dua tombol pengguna yang terikat ke pin D7 dan D9 (P0.2 dan P13.1 pada PSoC 6, atau P1.0 dan P0.4 pada PSoC 4 BLE).

Regulator 3,3V – Regulator daya switching 3,3V mampu menyediakan hingga 1,5A, tergantung pada kapasitas pengadaan daya upstream. Mengambil daya dari pasokan 5V pada pin Arduino atau konektor daya MicroB. Menyediakan daya hanya ke header XBee.

Buffer Pergeseran Tingkat – Mengubah sinyal 5V menjadi sinyal 3,3V. Memungkinkan papan digunakan dalam sistem 3,3V atau 5V.

Rantai Pergeseran Tingkat I2C – Mengubah sinyal I2C dari 3,3V ke 5V, jika diperlukan.

Jumper Pemilihan Pasokan Tegangan – Memilih tingkat yang diubah oleh rantai pergeseran tingkat I2C. Default diatur ke 3,3V. Atur ke 5V untuk digunakan dengan sistem 5V. Keduanya Papan PSoC 4 dan PSoC 6 Pioneer BLE adalah sistem 3,3V.

LED XBee DIO5 – DIO5 default ke beberapa fungsi yang berguna, terutama pada modul WiFi, di mana itu menunjukkan konektivitas ke jaringan WiFi yang dikonfigurasi.

Contoh: WiFi ke Raspberry Pi Menggunakan Kit PSoC 6 Pioneer

Contoh ini menunjukkan cara mengirim sinyal ke Raspberry Pi melalui WiFi. Ini akan menunjukkan cara mengakses modul XBee WiFi, komunikasi antarproses antara dua inti PSoC 6, dan cara menerima serta mengurai perintah dengan Raspberry Pi.

Mengikuti contoh ini akan memerlukan beberapa pengaturan, jadi mari kita bahas sekarang.

Pengaturan Kit PSoC 6 Pioneer: Hardware

Pengaturan sisi Kit Pioneer sederhana: masukkan modul XBee WiFi ke dalam Pioneer IoT Add-on Shield dan masukkan shield ke header Arduino Papan Kit Pioneer.

Sisi Raspberry Pi memerlukan penjelasan lebih lanjut. Anda perlu menyiapkan hardware dan perangkat lunak pada Raspberry Pi.

Pengaturan Kit PSoC 6 Pioneer: Perangkat Lunak

Catatan: Dukungan PSoC 6 hanya tersedia di Creator 4.2 atau lebih baru!

Proyek perangkat lunak untuk Kit Pioneer tersedia di GitHub.

PSOC 6 PIONEER KIT SOFTWARE DOWNLOAD

Setelah Anda mengunduh dan mengekstrak file ke tempat mana pun, Anda dapat membuka contoh (XBee_WiFi_Example) di PSoC Creator.

Sebelum Anda melakukan apa pun, Anda perlu membuka file “main_cm4.c” dan melakukan beberapa perubahan. Anda akan menemukan bagian kode yang terlihat seperti ini:
char ssid[] = “your_ssid_here”;
char rpi_ip[] = “raspi_ip_here”;
char ssid_pw[] = “wifi_pw_here”;
int dest_port = 5000;
char encrypt_mode = WPA2;
Semoga, jelas apa yang perlu Anda lakukan: ubah pengaturan ini agar cocok dengan pengaturan jaringan Anda. Nilai encrypt_mode dapat berupa WPA, WEP, WPA2, atau (semoga tidak!) NO_SECURITY. rpi_ip adalah quadruple titik (misalnya, “10.8.253.193”) yang dapat Anda peroleh dengan mengetik “ifconfig” di jendela perintah pada Raspberry Pi Anda (lihat di bawah untuk instruksi membuka jendela perintah) dan melihat bagian “wlan0”.

Untuk memprogram papan, hubungkan ke PC Anda melalui kabel USB-A ke USB-C yang disertakan. Lalu, klik tombol “Program” di toolbar (seperti ditunjukkan di bawah) untuk secara otomatis membangun proyek dan memprogram papan.

Anda mungkin mendapatkan jendela seperti di bawah yang meminta Anda untuk memilih target untuk diprogram. Tidak masalah entri mana yang Anda pilih di bawah item daftar “KitProg2”, salah satunya akan memprogram flash dengan benar.

Pengaturan Raspberry Pi: Hardware

Pertama, mari kita lihat bagaimana hardware terhubung:

Seperti yang Anda lihat, kami telah menghubungkan LED (dengan resistor 330 ohm) ke pin 3 (GPIO 2) dan 6 (ground) dari Raspberry Pi. Ini akan memungkinkan kami untuk mengubah GPIO2 dan melihat hasilnya pada LED.

Pengaturan Raspberry Pi: Perangkat Lunak

Kami akan mengasumsikan bahwa Anda memiliki Raspberry Pi yang diatur dengan versi terbaru Raspbian (instalasi penuh, bukan versi lite) yang berjalan, dan terhubung ke keyboard, mouse, monitor, dan jaringan WiFi lokal. Jika ini bukan kasusnya, tolong luangkan beberapa saat untuk menyiapkannya. Anda dapat meninjau tutorial kami tentang pengaturan Pi di sini.

Mari kita mulai dari desktop Raspberry Pi. Anda seharusnya memiliki layar yang terlihat seperti ini:

Anda perlu mengklik logo kecil di atas layar (ditunjukkan di bawah) untuk membuka baris perintah. Sisa tutorial ini akan mengasumsikan bahwa Anda memiliki baris perintah tersebut terbuka.

Itu akan membuka jendela baris perintah. Ini memungkinkan Anda untuk memberitahu Raspberry Pi untuk langsung mengeksekusi perintah.

Kami akan mulai dengan mengeksekusi perintah untuk menginstal Flask. Flask adalah kerangka kerja web untuk Python yang memungkinkan Anda membuat antarmuka web yang menjalankan skrip Python di backend server dengan sangat sederhana. Ketik perintah berikut, lalu tekan “Enter”.
sudo pip install flask
Segala macam hal akan terjadi di jendela baris perintah dan di akhirnya, Flask akan terinstal di Raspberry Pi Anda.

Langkah berikutnya adalah menginstal perangkat lunak yang kami tulis untuk mendukung proyek ini dari GitHub. Perintah untuk melakukannya adalah
git clone https://github.com/sparkfun/Flask_Tutorial
Lagi, Anda akan melihat beberapa teks menggulir di jendela baris perintah, dan ketika prompt kembali, itu akan menjadi indikasi bahwa proses instalasi selesai. Setelah selesai, masukkan perintah ini:
sudo python Flask_Tutorial/Python/app.py
Itu akan meluncurkan aplikasi dan mulai mendengarkan input melalui TCP/IP dari papan Pioneer. Anda sekarang seharusnya dapat menyalakan dan mematikan LED yang terhubung ke Raspberry Pi dengan menekan tombol D7 dan D9 pada IoT Shield. Menarik!

Jadwal: Apa yang Sedang Terjadi di Sini? Bagian 1: Kit Pioneer

Mari kita lihat apa yang tepatnya terjadi, mulai dari pandangan tingginya tentang proyek perangkat lunak PSoC 6. Lihat frame Workspace Explorer di sisi kiri layar. Kami akan melalui frame itu, menyorot file yang penting dan bagaimana mereka terkait dengan proyek secara keseluruhan.

Sulit melihat Workspace Explorer? Klik gambar untuk tampilan lebih dekat.

Tingkat atas proyek memiliki enam entri: skematika (“TopDesign.sch”), Sumber Daya Desain Luas (“XBee_WiFi_Example.cydwr”), file sumber yang terkait dengan inti Cortex-M0+ (“CM0p (Core 0)”), file sumber yang terkait dengan inti Cortex-M4 (“CM4 (Core 1)”), file untuk dibagikan antara keduanya (“Shared Files”), dan file dukungan yang dihasilkan oleh IDE (“Generated_Source”).

Skematika untuk proyek ini sangat sederhana, memiliki beberapa LED, beberapa saklar, dan UART yang digunakan untuk mentransfer data ke dan dari modul XBee WiFi. LED sebenarnya tidak digunakan dalam implementasi saat ini dari proyek.

Kami akan melewati isi file .cydwr. File ini berisi penugasan pin untuk sinyal yang digunakan dalam skematika, generasi jam, dan konstanta konfigurasi inti. Jika Anda ingin menyelidikinya lebih dalam, silakan gali sedikit. Sebagian besarnya seharusnya jelas sendiri.

Melanjutkan ke bawah daftar, kita mencapai file sumber Cortex-M0+. Anda akan catat bahwa tingkat atas di subdomain ini memiliki lima entri: “Header Files”, “Source Files”, dan tiga file lainnya. Kami hanya perlu mempedulikan isi subdomain “Header Files” dan “Source Files”, dan kenyataannya hanya satu file di dalamnya: file “main_cm0p.c”. Inilah tempat fungsi main() untuk kode yang berjalan pada prosesor Cortex-M0+ tinggal.

Seperti yang Anda mungkin duga dari struktur workspace, ada dua basis kode yang sepenuhnya terpisah yang berjalan untuk dua inti yang berbeda. “main_cm0p.c” adalah titik entri untuk kode inti Cortex-M0+, dan kemudian inti itu memulai inti Cortex-M4. Ada subdomain serupa untuk inti Cortex-M4 dengan file serupa dan lagi, kami hanya perlu mempedulikan subdomain “Header Files” dan “Source Files”.

Akhirnya, kita memiliki bagian “Shared Files”. Sebagian besar file ini dihasilkan secara otomatis, kecuali file “ipc_common.c” dan “ipc_common.h”. File ini adalah helper untuk komunikasi antarproses yang dikembangkan untuk proyek ini.

File Main Cortex-M0+

Sekarang setelah kita menyorot konten yang penting, mari kita lihat bagian penting dari kode, satu file demi satu, mulai dengan file “main_cm0p.c”. File ini menangani semua aktivitas yang dilakukan inti Cortex-M0+ untuk sistem: memantau dua tombol dorong dan mengirim sinyal ke inti Cortex-M4 ketika salah satunya ditekan.

Namun, ini tidak sederhana seperti yang terlihat, karena inti Cortex-M4 perlu dapat menghapus sinyal setelah ia selesai mengatasinya, dan itu berarti beberapa proses mengakses data yang sama. Setiap kali Anda memiliki beberapa bekerja pada kumpulan data yang sama, Anda perlu mempertimbangkan efek tabrakan tulis. Apa yang terjadi jika satu proses mencoba mengubah data di tengah proses lain mencoba mengubah data yang sama? Untuk mengatasi ini kami menggunakan sistem baca dan tulis yang dilindungi, yang disiapkan dalam file “ipc_common”.

Untuk memahami cara kerja ini, seseorang harus terlebih dahulu memahami konsep saluran IPC. Saluran IPC menggunakan semafor untuk menulis data dari satu proses ke proses lain sambil menjamin tidak akan ada tabrakan antara dua inti. Pada awal eksekusi aplikasi untuk setiap inti Anda harus menentukan titik akhir untuk saluran IPC yang akan digunakan selama eksekusi. Pertimbangkan dua baris kode ini:
IPC_STRUCT_Type *D9IpcHandle;
D9IpcHandle = Cy_IPC_Drv_GetIpcBaseAddress(7);
Baris pertama membuat pointer untuk struct yang mendefinisikan karakteristik saluran IPC. Baris kedua sebenarnya menyetel struct tersebut untuk menunjuk ke lokasi memori tertentu, yaitu saluran sistem IPC 7. Kami menggunakan saluran 7 karena saluran 0-6 dicadangkan untuk penggunaan sistem.

Selanjutnya kita harus, tentu saja, memberi tahu inti lain alamat memori mana yang terkait dengan saluran IPC ini. Itulah yang dilakukan oleh pemanggilan fungsi ini.
while(Cy_IPC_Drv_SendMsgPtr(D9IpcHandle, CY_IPC_NO_NOTIFICATION, &D9Button) != CY_IPC_DRV_SUCCESS);
D9Button adalah variabel yang disiapkan lebih awal dalam kode. Pemanggilan fungsi tersebut diapit dalam loop while() karena kita ingin mengulang pemanggilan fungsi sampai kita menerima verifikasi bahwa proses lain (yaitu, kode yang berjalan pada inti Cortex-M4) telah menerima informasi ini. Kami juga ingin menunggu sampai kunci pada variabel dilepaskan, menunjukkan bahwa Cortex-M4 telah selesai membaca nilai pointer.
while(Cy_IPC_Drv_IsLockAcquired(D9IpcHandle));
Akhirnya, kita jatuh ke loop tak terbatas untuk aplikasi, di mana fungsi kustom ReadSharedVar() dan WriteSharedVar() menangani pembaruan variabel bersama yang mengomunikasikan status tombol dengan inti lain. Kami akan membahas fungsi-fungsi tersebut nanti.

File Main Cortex-M4

Dalam fungsi main() Cortex-M4, kami mengulangi beberapa operasi yang sama seperti yang kami lakukan dalam fungsi main() Cortex-M0+ terkait pengaturan saluran IPC.
IPC_STRUCT_Type *D9IpcHandle;
D9IpcHandle = Cy_IPC_Drv_GetIpcBaseAddress(7);
Setelah itu selesai kita harus kemudian memanggil beberapa kode untuk “tangkap” pesan yang dikirim dari proses Cortex-M0+, yang berisi alamat variabel bersama yang akan diakses.
while (Cy_IPC_Drv_ReadMsgPtr(D9IpcHandle, (void *)&D9Button) != CY_IPC_DRV_SUCCESS);
Lagi, kami diapit pemanggilan ini dalam loop while() sehingga terus dipanggil sampai pesan dikirim dari Cortex-M0+. Kemudian kita harus melepaskan kunci pada saluran IPC tersebut sehingga proses Cortex-M0+ tahu bahwa ia dapat melanjutkan operasi dan menggunakan saluran IPC di masa depan. Tidak perlu diapit dalam loop while() karena itu terbuka: pemanggilan hanya perlu dikeluarkan sekali untuk melepaskan kunci, versus memeriksa apakah kunci telah dilepaskan, yang harus diulang sampai kunci dilepaskan.
Cy_IPC_Drv_LockRelease(D9IpcHandle, CY_IPC_NO_NOTIFICATION);
Setelah semua ini selesai, kita harus menyiapkan shield XBee WiFi untuk mengakses jaringan lokal kita. Kami tidak akan menduplikasi semua kode di sini, karena sudah terdokumentasi dengan baik dalam contoh.

Dalam loop tak terbatas yang menjalankan kode aplikasi, kita lagi memanggil fungsi kustom ReadSharedVar() dan WriteSharedVar() untuk mengakses variabel yang menyimpan status tombol, yang dibagikan dengan inti Cortex-M0+. Mari kita lihat lebih dekat apa yang dilakukan oleh fungsi-fungsi ini.

Read More Info……

Menggunakan Papan PSoC 6 Pioneer dengan Pioneer IoT Add-on Shield


Proses manufaktur

  1. Integrasikan Stasiun Cuaca Anda dengan CWOP: Panduan Praktis
  2. Integrasi Radar Pulse Acconeer A111 dengan Raspberry Pi: Panduan Praktis
  3. Memulai dengan IoT dan MQTT: Tutorial ESP8266 Tanpa Kode
  4. Membangun Robot Cerdas dengan Bridge Shield – Integrasi Raspberry Pi & Arduino
  5. Memperluas GoPiGo v2 pada Windows 10 IoT Core untuk Raspberry Pi 3
  6. Melepaskan Kekuatan Data Visual dalam Ekosistem IoT
  7. IoT Merevolusi Layanan Lapangan: Pemeliharaan Prediktif dan ROI yang Tinggi
  8. Bagaimana Kota Cerdas Memanfaatkan IoT, Mikrolayanan, dan Dasbor untuk Manajemen Aset yang Efisien
  9. IoT World: Di Dalam Solusi Big Data Vertica untuk Analitik IoT
  10. Platform IoT Lumada Hitachi: Menyatukan Wawasan Industri untuk Manufaktur Cerdas