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

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

Pengantar

PSoC 6 adalah tambahan terbaru untuk seri prosesor PSoC Cypress yang kuat. Add-On Shield PSoC 6 Pioneer IoT adalah alat pengembangan yang terkait dengan lini prosesor ini, menggunakan debugger onboard, header yang kompatibel dengan Arduino, widget CapSense, dan banyak lagi, semuanya terkait dengan prosesor PSoC 6. Prosesor ini merupakan perangkat inti ganda, dengan prosesor daya rendah Cortex-M0+ dan prosesor daya tinggi Cortex-M4 yang disatukan melalui periferal dan ruang memori bersama.

Tutorial ini akan menunjukkan kepada Anda cara memulai dan menjalankan Pioneer Board, 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 Perintis PSoC 4 BLE dan Papan Perintis PSoC 6 melalui BLE.

Bahan yang Diperlukan

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

Jelas, Anda juga memerlukan Perisai Pengaya Pioneer. Anda juga memerlukan Modul WiFi XBee. Ada beberapa opsi WiFi XBee bergantung pada penyiapan Anda: Trace, RP-SMA Connector dengan antena 2.4GHz eksternal, atau Wire . Cara termudah adalah mendapatkan XBee dengan antena kawat.

Anda juga memerlukan Raspberry Pi 3 Starter Kit. Ini akan menjadi target komunikasi Anda dari Papan Perintis PSoC6. Anda tentu saja dapat membeli Pi 3 secara terpisah bersama dengan papan tempat memotong roti, kabel jumper, resistor, dan LED, tetapi menurut kami starter kit adalah penawaran yang luar biasa dan layak untuk didapatkan.

Ikhtisar Perangkat Keras

Mari membahas fitur-fitur Papan Pengaya IoT Pioneer Kit secara mendetail.

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

Tajuk XBee – Header ini diberi spasi untuk menerima footprint XBee standar. Ini kompatibel dengan semua modul XBee resmi.

Konektor Qwiic – Konektor ini menambahkan dukungan untuk semua modul Qwiic SparkFun. Ini memasok 3.3V.

Konektor Daya USB MikroB – Jalur data pada konektor ini tidak terhubung dengan apapun. Ini memberikan 5V ke regulator 3.3V untuk modul XBee, mengesampingkan 5V yang berasal dari header Arduino dan memungkinkan modul XBee berdaya tinggi (seperti model seluler, wifi, atau Pro) berfungsi dengan baik.

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

Pengatur 3.3V – Mode sakelar pengatur daya 3.3V yang mampu memasok hingga 1,5A, tergantung pada kapasitas sumber pasokan hulu. Menarik daya dari suplai 5V pada pin Arduino atau konektor daya MicroB. Menyuplai daya ke header XBee saja.

Buffer Pergeseran Level – Turun mengkonversi dari sinyal 5V ke sinyal 3.3V. Memungkinkan board digunakan dalam sistem 3.3V atau 5V.

Sirkuit Pergeseran Level I2C – Mengonversi sinyal I2C dari 3.3V ke 5V, jika perlu.

Jumper Pemilihan Suplai Tegangan – Memilih level yang diterjemahkan oleh sirkuit pergeseran level I2C. Default disetel ke 3.3V . Atur ke 5V untuk digunakan dengan sistem 5V. Papan BLE PSoC 4 dan PSoC 6 Pioneer keduanya 3.3V sistem.

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

Contoh:WiFi ke Raspberry Pi Menggunakan Kit Pioneer PSoC 6

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

Mengikuti contoh ini akan memerlukan beberapa penyiapan, jadi mari kita telusuri sekarang.

Penyiapan Kit Perintis PSoC 6:Perangkat Keras

Penyiapan sisi Pioneer Kit adalah hal yang sepele:masukkan modul WiFi XBee ke Pioneer IoT Add-on Shield dan masukkan pelindung ke header Arduino Pioneer Kit Board.

Sisi Raspberry Pi membutuhkan lebih banyak penjelasan. Anda perlu menyiapkan beberapa perangkat keras dan beberapa perangkat lunak di Raspberry Pi.

Penyiapan Kit Perintis PSoC 6:Perangkat Lunak

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

Proyek perangkat lunak untuk Pioneer Kit tersedia di GitHub.

UNDUH PERANGKAT LUNAK PSOC 6 PIONEER KIT

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

Sebelum Anda melakukan hal lain, Anda perlu membuka “main_cm4.c ” dan buat 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 sesuai dengan pengaturan jaringan Anda. Nilai encrypt_mode dapat berupa WPA, WEP, WPA2, atau (semoga tidak!) NO_SECURITY. rpi_ip adalah segi empat bertitik (mis., “10.8.253.193”) yang dapat Anda peroleh dari mengetik “ifconfig ” di jendela perintah pada Raspberry Pi Anda (lihat di bawah untuk petunjuk tentang membuka jendela perintah) dan melihat “wlan0 bagian ”.

Untuk memprogram papan, sambungkan ke PC Anda melalui kabel USB-A ke USB-C yang disertakan. Kemudian, klik tombol “Program” di bilah alat (seperti yang ditunjukkan di bawah) untuk membuat proyek dan memprogram board secara otomatis.

Anda mungkin mendapatkan jendela seperti di bawah ini 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:Perangkat Keras

Pertama, mari kita lihat bagaimana perangkat keras 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 kita untuk mengaktifkan GPIO2 dan melihat hasilnya pada LED.

Pengaturan Raspberry Pi:Perangkat Lunak

Kami akan berasumsi bahwa Anda memiliki Raspberry Pi yang diatur dengan versi terbaru dari Raspbian (instal penuh, bukan versi lite), dan terhubung ke keyboard, mouse, monitor, dan jaringan WiFi lokal. Jika ini tidak kasus ini, harap luangkan beberapa saat untuk menyiapkannya. Anda dapat meninjau tutorial kami tentang menyiapkan Pi di sini.

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

Anda harus mengklik logo kecil di bagian atas layar (ditunjukkan di bawah) untuk membuka baris perintah. Sisa dari tutorial ini akan mengasumsikan bahwa Anda telah membuka baris perintah tersebut.

Itu akan membuka jendela baris perintah. Ini memungkinkan Anda memberi tahu Raspberry Pi untuk langsung menjalankan perintah.

Kami akan mulai dengan menjalankan perintah untuk menginstal Flask. Flask adalah kerangka kerja web untuk Python yang memungkinkan Anda membuat front end web yang menjalankan skrip Python di backend server dengan cukup sepele. Ketik perintah berikut, lalu tekan "Enter".
sudo pip install flask
Banyak hal akan terjadi di jendela baris perintah dan pada akhirnya, Flask akan diinstal pada Raspberry Anda Pi.

Langkah selanjutnya adalah menginstal perangkat lunak yang telah kami tulis untuk mendukung proyek ini dari GitHub. Perintah untuk melakukannya adalah
git clone https://github.com/sparkfun/Flask_Tutorial
Sekali lagi, Anda akan melihat beberapa teks menggulir di baris perintah, dan ketika prompt kembali, itu akan menjadi indikasi Anda 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 dapat menyalakan dan mematikan LED yang terhubung ke Raspberry Pi dengan menekan tombol D7 dan D9 pada IoT Shield. Rapi!

Jadi Ada Apa Di Sini? Pt. 1:Kit Perintis

Mari kita lihat apa yang sebenarnya terjadi, mulai dari tampilan tingkat tinggi dari proyek perangkat lunak PSoC 6. Lihat bingkai Workspace Explorer di sisi kiri layar. Kami akan menelusuri kerangka itu, menyoroti file-file penting dan bagaimana mereka berhubungan dengan keseluruhan proyek.

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

Tingkat teratas proyek memiliki enam entri:skema (“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 yang akan dibagikan di antara keduanya (“File Bersama ”), dan file dukungan yang dihasilkan oleh IDE (“Generated_Source ”).

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

Kami akan melewati konten .cydwr mengajukan. File ini berisi penetapan pin untuk sinyal yang digunakan dalam skema, pembangkitan jam, dan konstanta konfigurasi inti. Jika Anda ingin menyelidikinya lebih lanjut, jangan ragu untuk menggali lebih dalam. Sebagian besar harus cukup jelas.

Pindah ke bawah daftar, kami mencapai file sumber Cortex-M0+ kami. Anda akan melihat bahwa tingkat teratas dalam subdomain ini memiliki lima entri:"File Header", "File Sumber", dan tiga file lainnya. Kami hanya perlu memperhatikan konten dari subdomain "File Header" dan "File Sumber", dan pada kenyataannya, hanya dengan satu file di dalamnya:"main_cm0p.c berkas. Di sinilah fungsi main() untuk kode yang berjalan pada prosesor Cortex-M0+ berada.

Seperti yang mungkin sudah Anda duga dari struktur ruang kerja, ada dua basis kode yang sepenuhnya terpisah yang berjalan untuk dua inti yang berbeda. “main_cm0p.c ” adalah titik masuk untuk kode inti Cortex-M0+, dan kemudian inti tersebut memulai inti Cortex-M4. Ada subdomain serupa untuk inti Cortex-M4 dengan file serupa dan sekali lagi, kita hanya perlu khawatir tentang subdomain “File Header” dan “File Sumber”.

Akhirnya, kami memiliki bagian "File Bersama". Sebagian besar file ini dibuat secara otomatis, simpan file “ipc_common.c ” dan “ipc_common.h ” file. File-file ini adalah pembantu untuk komunikasi antarproses yang dikembangkan untuk proyek ini.

File Utama Cortex-M0+

Sekarang setelah kita menyorot konten penting, mari kita lihat bagian-bagian penting dari kode, satu file pada satu waktu, dimulai dengan "main_cm0p.c berkas. File ini menangani semua aktivitas yang dilakukan inti Cortex-M0+ untuk sistem:memantau dua tombol dan mengirim sinyal ke Cortex-M4 saat salah satu tombol ditekan.

Namun, ini tidak semudah kelihatannya, karena Cortex-M4 harus dapat menghapus sinyal setelah menanganinya, dan itu berarti banyak proses mengakses data yang sama. Setiap kali Anda memiliki beberapa proses yang bekerja pada kumpulan data yang sama, Anda perlu mempertimbangkan efek dari tabrakan tulis. Apa yang terjadi jika satu proses mencoba mengubah data di tengah proses lain yang mencoba mengubah data yang sama? Untuk mengatasi hal ini kami menggunakan sistem membaca dan menulis yang dilindungi, diatur di “ipc_common ” file.

Untuk memahami cara kerjanya, pertama-tama kita harus memahami konsep saluran IPC. Saluran IPC menggunakan semaphore untuk menulis data dari satu proses ke proses lainnya sambil menjamin bahwa tidak akan ada tabrakan antara dua inti. Pada awal eksekusi aplikasi untuk setiap inti, Anda harus menetapkan titik akhir untuk saluran IPC yang akan digunakan selama eksekusi. Pertimbangkan dua baris kode berikut:
IPC_STRUCT_Type *D9IpcHandle;
D9IpcHandle =Cy_IPC_Drv_GetIpcBaseAddress(7);
Yang pertama membuat pointer untuk struct yang mendefinisikan karakteristik saluran IPC. Yang kedua benar-benar menetapkan struct itu untuk menunjuk ke lokasi memori tertentu, yaitu saluran IPC sistem 7. Kami menggunakan saluran 7 karena saluran 0-6 dicadangkan untuk penggunaan sistem.

Selanjutnya kita harus, tentu saja, memberi tahu inti lain yang alamat memorinya terkait dengan saluran IPC ini. Itulah yang dilakukan pemanggilan fungsi ini.
sementara(Cy_IPC_Drv_SendMsgPtr(D9IpcHandle, CY_IPC_NO_NOTIFICATION, &D9Button) !=CY_IPC_DRV_SUCCESS);
D9Button adalah variabel yang diatur sebelumnya dalam kode. Panggilan fungsi diapit dalam loop while() karena kami ingin mengulangi panggilan fungsi hingga kami 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.
sementara(Cy_IPC_Drv_IsLockAcquired(D9IpcHandle));
Akhirnya, kita masuk ke infinite loop untuk aplikasi, di mana fungsi kustom ReadSharedVar() dan WriteSharedVar() menangani pembaruan variabel bersama yang mengomunikasikan status tombol dengan inti lainnya. Kami akan mempelajari fungsi tersebut nanti.

File Utama Cortex-M4

Dalam fungsi Cortex-M4 main() , kami mengulangi beberapa operasi yang sama seperti yang kami lakukan di fungsi Cortex-M0+ main() vis-a-vis pengaturan saluran IPC.
IPC_STRUCT_Type *D9IpcHandle;
D9IpcHandle =Cy_IPC_Drv_GetIpcBaseAddress(7);
Setelah selesai kita harus memanggil beberapa kode untuk "menangkap" pesan yang dikirim dari proses Cortex-M0+, yang berisi alamat variabel bersama yang akan diakses.
sementara (Cy_IPC_Drv_ReadMsgPtr(D9IpcHandle, (void *)&D9Button) !=CY_IPC_DRV_SUCCESS);
Sekali lagi, kami menyertakan panggilan ini dalam loop while() sehingga terus dipanggil hingga pesan dikirim dari Korteks-M0+. Kemudian kita harus melepaskan kunci pada saluran IPC tersebut agar proses Cortex-M0+ mengetahui bahwa ia dapat melanjutkan operasi dan menggunakan saluran IPC di kemudian hari. Tidak perlu menyertakan ini dalam loop while() karena bersifat terbuka:panggilan hanya perlu dilakukan satu kali untuk melepaskan kunci, dibandingkan memeriksa bahwa kunci telah dilepaskan, yang harus diulang hingga saat kunci dilepaskan.
Cy_IPC_Drv_LockRelease(D9IpcHandle, CY_IPC_NO_NOTIFICATION);
Setelah semua ini selesai, kita harus menyiapkan perisai WiFi XBee untuk mengakses jaringan lokal kita. Kami tidak akan menduplikasi semua kode itu di sini, karena didokumentasikan dengan baik dalam contoh.

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

Baca Info Selengkapnya……

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


Proses manufaktur

  1. Bergabunglah dengan IOT dengan Stasiun Cuaca Anda – CWOP
  2. Menggunakan Sensor Radar Berdenyut A111 dengan Raspberry Pi
  3. Mudah Memulai Dunia IoT dengan MQTT
  4. Robot Menggunakan Raspberry Pi &Bridge Shield
  5. GoPiGo v2 dengan Windows IoT
  6. Potensi untuk mengintegrasikan data visual dengan IoT
  7. Di jalan dengan IoT
  8. Rahasia infrastruktur IoT dengan kota pintar
  9. IoT World:Sehari dalam Kehidupan Bersama Vertica
  10. Dengan Penawaran Platform IoT Lumada, Hitachi Menghubungkan Titik