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

IoT:Windows Remote Arduino dan Aplikasi Universal

Komponen dan persediaan

Arduino UNO
× 1
Modem Bluetooth SparkFun - BlueSMiRF Silver
Saya menggunakan versi Emas
× 1

Tentang proyek ini

Catatan:Lihat pembaruan di komentar di bagian bawah.

Aplikasi Windows 10 UWP dapat dibangun di atas Pengkabelan Jarak Jauh perpustakaan sedemikian rupa sehingga aplikasi dapat berinteraksi dengan perangkat Arduino yang menjalankan Firma. Sebuah aplikasi, mirip dengan contoh Windows Remote Arduino "Blinky", tetapi dengan penambahan fitur, dikembangkan. Ia melakukan GPIO (output DAN input) serta beberapa IO analog. Aplikasi ini secara fungsional sama dengan versi Windows 8.1 di blog sebelumnya di seri ini. Blog ini bekerja melalui materi yang sama (yaitu mengulangi sebagian besar) seperti blog sebelumnya tetapi dari konteks Universal Windows Platform (UWP) daripada konteks Windows 8.1 Universal App. Target untuk aplikasi ini adalah desktop Win 10, telepon Win 10 dan Raspberry PI2 (menjalankan Win 10 IoT). Target terakhir adalah "work-in-progress sekalipun". Blog ini dapat dibaca tanpa mengacu pada blog sebelumnya.

Proyek ini dirinci di blog saya di http://embedded101.com/Blogs/David-Jones/entryid/636/Windows-10-IoT-Windows-Remote-Arduino-and-Universal-Windows-Platform-Apps

Contoh "Blinky" Windows Remote Arduino ada di ms-iot.github.io.


Aplikasi Universal dan Aplikasi Platform Windows Universal

Aplikasi universal (UA) mencapai puncaknya di Windows 8.1 Anda dapat mengimplementasikan aplikasi yang ditargetkan pada desktop Windows Intel, ARM RT Surface, dan Windows Phone (ARM), semuanya dalam solusi yang sama. Mereka bisa berbagi kode umum seperti event handler, komputasi umum dan data. Kode XAML harus spesifik untuk target. Anda baru saja menyusun subproyek terpisah untuk setiap target. Selama kompilasi, kode umum disertakan.

Dengan pergeseran paradigma “One Windows” di Windows 10 kode yang sama untuk semua target, termasuk kode XAML dapat digunakan untuk semua target. Proyek yang sama hanya perlu dikompilasi ulang untuk target yang berbeda. Dengan nama UA yang diterapkan ke aplikasi Windows 8, nama baru diperlukan untuk aplikasi yang benar-benar universal. Oleh karena itu, nama aplikasi Platform Windows Universal diciptakan untuk Windows 10.

Semua platform Windows 10 mendukung aplikasi UWP. Tetapi ada ekstensi khusus untuk setiap platform. Misalnya ekstensi Windows 10 IoT mendukung GPIO, I2C, SPIO, dll. Ekstensi seluler mendukung fungsi telepon. Dll. UWP menyediakan lapisan API inti yang dijamin di semua perangkat.


SDK Ekstensi Windows 10. Ekstensi Desktop, Seluler, dan IoT diperiksa.

Untuk blog ini kita menggunakan template UWP bukan UA seperti pada blog sebelumnya. Kami tidak memerlukan SDK ekstensi apa pun.


[1] Siapkan komunikasi Bluetooth dengan perangkat Arduino.

Anda dapat melewati bagian ini jika Anda telah melakukan aktivitas Win 8.1.

USB atau Bluetooth dapat digunakan untuk komunikasi Firma antara perangkat Arduino dan perangkat Windows. Untuk Windows 10 keduanya bisa digunakan, sedangkan untuk Windows 8.1 hanya bisa digunakan Bluetooth. Untuk versi aplikasi ini, Bluetooth akan digunakan. Saya menggunakan Sparkfun Bluetooth Mate Gold, sedangkan Sparkfun Bluetooth Mate Silver digunakan dengan contoh “Blinky” yang dirujuk di atas. Perbedaan utama adalah jangkauan Emas hingga 100m sedangkan Perak adalah 10m. Pengaturan jabat tangan default juga berbeda. Keduanya memiliki antarmuka UART level TTL yang dapat digunakan untuk mengonfigurasi mode operasi perangkat Bluetooth dan untuk berinteraksi dengan port serial Arduino.

Jika Anda perlu mengonfigurasi perangkat Bluetooth, perangkat Sparkfun atau Freetronics USB-Serial atau Free dapat digunakan untuk mengonfigurasi perangkat melalui terminal serial desktop. Anda juga dapat menyetel ulang perangkat ke setelan default pabrik dengan menghubungkan pin PIO6 (sebenarnya PIO4) ke tinggi, dan beralih tiga kali.

Bluetooth Mate memiliki pin out yang sama dengan Sparkfun FTDI Basic, sehingga dapat digunakan secara bergantian. Anda tidak dapat langsung menyambungkan Bluetooth Mate ke papan FTDI Basic (Anda harus menukar TX dan RX). Konfigurasi tersebut dapat digunakan dengan terminal serial desktop, dengan perangkat FTDI USB yang terhubung ke desktop, untuk mengonfigurasi perangkat Bluetooth (atau menggunakan perangkat Bluetooth untuk komunikasi serial dari desktop.

Pengaturan serial TTL UART default adalah:

  • · Tingkat baud 115.200
  • · 8 bit
  • · Tanpa Paritas
  • · 1 stop bit
  • · Kontrol aliran perangkat keras diaktifkan (pada Mate Silver ini Tidak Ada)
  • · Profil Port Serial (SPP):FireFly-WXYZ
    di mana WXYZ adalah 4 digit terakhir dari Alamat MAC BT perangkat.
  • · Kunci sandi 1234

Perhatikan bahwa perangkat dapat menyimpan hingga 8 paring perangkat.

Dokumentasi untuk perangkat Bluetooth ada di:
http://www.sparkfun.com/datasheets/Wireless/Bluetooth/rn-bluetooth-um.pdf

Konfigurasi Firma adalah untuk Baud rate 57600 yang perlu diubah atau perangkat Bluetooth dikonfigurasi untuk itu. Untuk latihan ini, kita akan memodifikasi konfigurasi Firma, yang merupakan pendekatan yang lebih mudah. Aliran kontrol Perangkat Keras juga dapat ditangani dengan mengonfigurasi perangkat Bluetooth, tetapi untuk latihan ini ditangani dengan menghubungkan RTS ke CTS.

Sementara perangkat Bluetooth dapat dipasang pada Breadboard dan terhubung ke perangkat Arduino dari sana, saya memilih untuk memasang soket untuk itu pada Prototyping Shield.

Header Perisai Arduino 6 pin disolder ke perangkat Bluetooth di pin TTL UART dengan soket menghadap ke luar. Pin ditekuk 900 ke bawah sehingga perangkat dapat dicolokkan secara vertikal ke header pelindung lainnya. Soket BT kemudian dapat digunakan untuk menghubungkannya secara langsung ke modul FTDI Basic yang dipasang serupa jika diperlukan konfigurasi. Sebuah kawat kemudian disolder ke PIO6 (PIO4) pada modul Bluetooth, untuk pengaturan ulang pabrik.

Gambar 3 Modul Bluetooth dengan header pelindung pada pin UART, dan header pelindung

Header pelindung 8 dipasang di tengah pelindung prototipe di bagian bawah. Tambahkan juga header di bagian luar shield agar bisa langsung dicolokkan ke Uno.

Gambar 4 Arduino Prototype Shield untuk memasang modul Bluetooth

Modul Bluetooth kemudian dimasukkan menghadap pin GPIO, ke arah pin 0 dan 1 (Rx/Tx), meninggalkan lokasi kuning jelas. Salah satunya dapat digunakan sebagai lokasi sementara untuk kabel reset pabrik.

Gambar 6 Modul Bluetooth yang terpasang pada perangkat Arduino


[2] Siapkan Firma

Anda dapat melewati bagian ini jika Anda telah melakukan aktivitas Win 8.1.

Catatan: UART Pin 0 dan 1 Arduino Uno tidak tersedia saat diprogram melalui USB dari Arduino IDE. Pin yang sama inilah yang terhubung ke antarmuka UART TTL modul Bluetooth ketika dihubungkan untuk komunikasi Firma. Oleh karena itu, ketika perangkat Arduino akan diprogram di bagian ini, perangkat Bluetooth tidak boleh terhubung.

2.1 Dengan asumsi bahwa Anda sebelumnya telah mengembangkan untuk perangkat Arduino (Uno), buat pelindung Firma Standar baru:

2.2 Ada satu perubahan yang harus dilakukan, yaitu Baud rate. Di IDE cari 57600. Ganti 115200. Save the Sketch, saya beri nama Firma_115200. Program Uno dan bagian ini selesai.


[3] Siapkan tumpukan perangkat lunak Universal App Firma

Bagian ini hanya sedikit berbeda yang sudah melakukan aktivitas Win 8.1.

Tumpukan perangkat lunak terdiri dari tiga lapisan:

Remote-Wiring API mengimplementasikan properti (konfigurasi), metode, dan kejadian pada tingkat konseptual yang tinggi untuk interaksi perangkat keras Arduino. Misalnya, GPIO (mis. Dapatkan dan Atur Pin, Pada Pin diubah dll). Ini berkomunikasi dengan lapisan Firma menggunakan protokol Firmata. Firmata berkomunikasi ke bawah tumpukan melalui protokol serial yang diimplementasikan sebagai lapisan transport Bluetooth dan USB-Serial di lapisan Serial. Opsi USB tidak tersedia untuk Windows 8.1.

Tumpukan perangkat lunak yang disebut ini tersedia untuk dua sumber:

  1. https://github.com/ms-iot/windows-remote-arduino-samples
  2. https://github.com/ms-iot/remote-wiring/

Keduanya berisi versi Windows 8.1 dan Windows 10. Sementara kedua versi Windows 10 versi akan dibangun, saya telah menemukan bahwa Windows 8.1 yang kedua tidak akan dibangun. Saya menggunakan versi Visual Studio 2015 RC:

  • Komunitas Microsoft Visual Studio 2015 RC
  • Versi 14.0.22823.1 D14REL
  • Microsoft .NET Framework
  • Versi 4.6.00076

3.1 Unduh versi pertama. Untuk melakukannya dengan benar, Anda perlu mengkloning repositori (jangan mengunduh zip):

  • Instal git atau GitHub
  • Di git shell atau GitHub Desktop Shell (ini adalah Powershell), masukkan yang berikut dari direktori yang sesuai:
    git clone --recursive https://github.com/ms-iot/windows-remote-arduino-samples.git

    Struktur direktori yang Anda dapatkan adalah:

windows-remote-arduino-samples     o pengkabelan jarak jauh        Microsoft.Maker.win8_1       Microsoft.Maker.win10      sumber     o win8_1       o win10

Dua folder terakhir (win8_1 dan win10) hanyalah aplikasi contoh (termasuk contoh "blinky") yang akan kami abaikan untuk saat ini. Kedua versi Maker menggunakan folder sumber yang sama sehingga untuk Windows 10 kita hanya perlu:

windows-remote-arduino-samples      o pengkabelan jarak jauh        Microsoft.Maker.win10           sumber

    ke folder yang sesuai. Saya menyarankan satu di root drive, katakanlah, c:\wras10 karena saya telah menemukan bahwa Anda bisa mendapatkan beberapa kesalahan dengan build ARM yang berkaitan dengan nama jalur yang terlalu panjang. Anda mungkin juga ingin menyalin file .md untuk referensi. Ini dapat dibuka di VS.

    3.2 Buka file solusi di Microsoft.Maker.win10

    3.3 Tetapkan target untuk membangun solusi Win32.

    Tiga build selesai. Satu untuk masing-masing dari tiga lapisan dalam tumpukan perangkat lunak..

    3.4 Lakukan hal yang sama untuk konfigurasi ARM. Jika Anda memiliki mesin x64, Anda mungkin ingin mencoba build itu juga.


    [4] Buat aplikasi HW LED UWP

    Ada "korsleting" di bagian ini bagi mereka yang telah melakukan aktivitas Win 8.1 sebelumnya.

    Untuk versi awal aplikasi ini, tombol perangkat lunak akan menyalakan LED perangkat keras dan yang lain akan mematikannya. LED akan terhubung ke GPIO pin 5.

    Dokumentasi "Blinky" mengatakan bahwa ada sejumlah cara untuk mendapatkan dan menggunakan perpustakaan ini. Pada akhirnya Nuget akan menjadi jalan tetapi itu belum tersedia. Anda dapat mereferensikan versi bawaan ini secara umum di sistem pengembangan Anda, Cara termudah adalah dengan menambahkan aplikasi Universal yang diperlukan ke solusi dan merujuknya. Kami akan menggunakan metode itu.

    4.1 Tambahkan aplikasi C# Windows Blank Universal baru ke solusi. (Perhatikan bukan Windows 8.1 kali ini):

    Beri nama yang cocok. Saya memanggil wrauwp milik saya:Windows Remote Arduino Universal app UWP.
    Perhatikan bahwa saat ini hanya ada SATU proyek yang dibuat (UWP).. Kode XAML dan CSharp sama untuk aplikasi versi desktop dan seluler. Perbedaannya terletak pada cara kompilasinya.

    Kemampuan Serial dan Bluetooth diperlukan dalam manifes paket:

    4.2 Buka package.appmanifest di editor teks (bukan GUI-nya) dengan View Code. Kemampuan Klien Internet disertakan di bagian bawah. Ubah bagian ini menjadi:

    Di package.appmanifest

                           

    PETUNJUK:Bagi mereka yang telah melakukan Windows 8.1 sebelumnya, sekarang Anda dapat melakukan hubungan pendek dengan yang berikut :

    • Salin kode grid xml dari proyek tersebut ke MainPage.xaml dalam proyek baru ini.
    • Sekarang Anda dapat melompat ke pengujian aplikasi pada target

    Bagi mereka yang melanjutkan di sini ...

    4.4 Ubah kedua Grid XAML UA menjadi:

    Halaman Utama.xaml:UI
                           

      Komentar Kami hanya memiliki satu MainPage.cs saat ini, karena hanya ada satu proyek aplikasi…Satu Windows.
      Sebelumnya ada satu untuk desktop dan satu untuk telepon, yang kami umumkan dengan menempatkan satu versi di subproyek berbagi.

      Semua kode cs akan merujuk ke MainPage.cs

      4.7 Di kelas MainPage tambahkan deklarasi berikut di bagian atas kelas:

      Deklarasi MainPage.cs

      //Usb tidak didukung di Win8.1. Untuk melihat langkah-langkah koneksi USB, lihat solusi win10 sebagai gantinya. BluetoothSerial bluetooth; Arduino Perangkat Jarak Jauh;   // Pin yang digunakan. Catatan:Nomor pin sebenarnya. private const int LED_PIN =5;

        4.8 di konstruktor MainPage, setelah InitializeComponent() tambahkan:

        Di MainPage() konstruktor

        bluetooth =new BluetoothSerial("FireFly-748B"); arduino =RemoteDevice baru(bluetooth); bluetooth.ConnectionEstablished +=OnConnectionEstablished;

          Ganti FireFly-748B dengan SPP Anda.

          4.9 Implementasikan OnConnectionEstablished dengan menambahkan metode berikut ke kelas:

          Tambahkan OnConnectionEstablished()

          kekosongan pribadi OnConnectionEstablished() {     //aktifkan tombol pada utas UI!     var action =Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, baru Windows.UI.Core.DispatchedHandler(() => {         this.OnButton.IsEnabled =true;         ini. OffButton.IsEnabled =true;           arduino.pinMode(LED_PIN, PinMode.OUTPUT);     })); }

            4.10 Dan terakhir tambahkan event handler untuk tombol ke kelas:

            Tambahkan Penangan Acara Tombol

            kekosongan pribadi OnButton_Click(pengirim objek, RoutedEventArgs e) {     //nyalakan LED yang terhubung ke pin 5 ON     arduino.digitalWrite(5, PinState.HIGH); }   kekosongan pribadi OffButton_Click(pengirim objek, RoutedEventArgs e) {     //matikan LED yang terhubung ke pin 5     arduino.digitalWrite(5, PinState.LOW); }

              4.11 Uji build aplikasi UWP dalam konfigurasi x86, x64, dan ARM


              [5] Menerapkan dan menguji aplikasi Universal.

              Di bagian ini kita akan memasang LED perangkat keras ke perangkat Arduino dan menjalankan aplikasi di desktop, dan Windows 10 Phone*

              Uji di desktop Anda

              5.1 Mengatur aplikasi Desktop sebagai Proyek Startup

              5.2 Tetapkan target ke x86 dan Mesin Lokal. Bangun kembali aplikasi UWP desktop

              5.3 Hubungkan Pin Arduino 5 ke LED perangkat keras. Sediakan GND, VCC, dan resistor yang sesuai secara seri.

              Seperti yang disebutkan di blog sebelumnya sehubungan dengan Windows 10 IoT Raspberry PI 2 GPIO Saya menggunakan papan pengembangan untuk mengimplementasikan IO pengujian saya seperti LED, sakelar, dll. Jika Anda tidak memiliki papan serupa, Anda mungkin ingin menggunakan Konfigurasi perangkat keras “Blinky” tetapi Anda perlu membalik polaritas pengaturan pin di pengendali tombol.

              5.4 Nyalakan perangkat Arduino dan pasangkan modul Bluetooth dengan desktop Anda (Passkey=1234). .. Saya akan menganggap Anda tahu bagaimana melakukan ini.

              5.5. Jalankan aplikasi.

              5.6 Aplikasi ini mungkin akan menanyakan apakah aplikasi boleh terhubung ke perangkat Bluetooth .. OK

              5.7 Uji fungsionalitas aplikasi. Setel breakpoint di pengendali tombol dan periksa apakah Anda dapat melakukan debug.

              5.8 Ulangi 4.1 hingga 4.6 untuk x64 jika Anda memiliki desktop 64 bit.

              5.9 Matikan Bluetooth di desktop Anda

              Sekarang untuk menguji Windows 10 Phone Anda, dengan asumsi ponsel dikonfigurasi untuk pengembangan.

              5.10 Nyalakan ponsel Anda, buka Pengaturan/Bluetooth dan nyalakan. Pasangkan dengan modul Bluetooth (Passkey =1234).

              5.11 Melanjutkan aplikasi Windows Universal sebagai proyek startup ..

              5.12 Tetapkan Target ke ARM,, Perangkat dan bangun kembali

              5.11 Hubungkan ponsel melalui Serial USB ke desktop dan terapkan aplikasi.

              Sekarang untuk menguji Raspberry PI 2

              INI ADALAH PEKERJAAN DALAM PROGRES. LIHAT CATATAN DI AKHIR BAGIAN INI

              5.13 Debugger jarak jauh sudah diinstal dan aktif pada RPI2 yang dikonfigurasi untuk Win 10 IoT.

              5.14 Tentukan alamat IP RPI2, misalnya dengan Windows IoT Core Watcher

              5.15 Di Project Properties-Debug atur target ke Mesin Jarak Jauh, Tanpa otentikasi dan masukkan alamat IP

              5.16 Membangun kembali aplikasi UWP

              5.17 Terapkan dan uji aplikasi di RPI2.

              Saya belum memiliki versi RPI2 untuk terhubung melalui Bluetooth:

              • Bluetooth utama belum didukung
              • Silakan tinggalkan komentar jika Anda memiliki ide atau kesuksesan dengan ini.
              • Saya akan memperbarui di sini ketika saya membuat kemajuan
              Dongle Bluetooth dimuat pada RPI2

              [6] “Mempercantik” UI

              Berikut ini akan mempercantik UI dan menambahkan tombol Bluetooth Connect and Disconnect.

              6.1 Ubah kode UI GRID XAML menjadi (PS:Catatan perubahan ke baris kisi tombol sebelumnya ):

              Tambahkan dua Tombol &

                                                                                                      Hubungkan                

                7.2 Di kelas MainPage, tentukan pin input:

                - Dalam deklarasi di bagian atas kelas tambahkan pin input:

                Dalam Deklarasi Halaman Utama

                konstans pribadi int PB_PIN =6;

                - Dalam handler OnConnectionEstablished, setel ke input::

                Di OnConnectionEstablished

                arduino.pinMode(PB_PIN, PinMode.INPUT);

                7.3, Tambahkan timer untuk polling input sebagai berikut:

                - Dalam deklarasi di bagian atas kelas:

                Dalam Deklarasi Halaman Utama

                // Dalam mode Polling, timer mencentang sampel input DispatcherTimer pbPolltimer pribadi;

                  - Di konstruktor atur timer:

                  Di Halaman Utama()

                  this.pbPolltimer =new DispatcherTimer(); this.pbPolltimer.Interval =TimeSpan.FromMilliseconds(250); this.pbPolltimer.Tick +=PBTimer_Tick; this.pbPolltimer.Stop();

                    - Tambahkan pengatur acara tick timer

                    Tambahkan pengatur waktu polling centang

                    PinState pbPinValue =PinState.LOW;   private void PBTimer_Tick(pengirim objek, objek e) {     PinState pbPinValueTemp =arduino.digitalRead(6);     Pushbutton_Pressed(pbPinValueTemp); }

                      - Implementasikan PushButton_Pressed():

                      Tambahkan PushButton_Pressed()

                      kekosongan pribadi Pushbutton_Pressed(PinState pbPinValueTemp) {     if (pbPinValue !=pbPinValueTemp)     {         //Tulis nilai jika diubah         TxtPin6.Text ="Tekan:" + pbPinValueTemp.ToString();         pbPinValue =pbPinValueTemp;     } }

                        7.4 Kami membutuhkan sakelar tombol tekan. Untungnya papan pengembangan saya menyediakan ini jadi saya gunakan saja. Jika Anda tidak memiliki binatang seperti itu, maka terapkan sirkuit yang berlawanan.

                        Dalam ekstensi ini ke aplikasi Windows 8.1 Universal, input GPIO tombol tekan, di Arduino Pin 5, difasilitasi dan statusnya ditampilkan di UI. Input awalnya akan dirasakan dengan membaca nilainya secara berkala. Dengan Win 10 IoT Raspberry PI 2 (RPI2), telah dilaporkan  bahwa ada beberapa bug dengan seberapa sering input digital didaftarkan, yang akan diperbaiki di RTM untuk Win 10 IoT.

                        Fungsionalitas tersebut kemudian akan ditingkatkan dengan menerapkan handler untuk acara DigitalPinChanged

                        Debouncing dapat ditingkatkan untuk situasi ini di perangkat keras dengan:

                        - Letakkan kapasitor kecil di sakelar untuk menambahkan beberapa debouncing perangkat keras sebagai penundaan RC.

                        - Tambahkan juga pemicu Schmidt ke sirkuit ini.

                        Dengan RPI2 ada opsi untuk menambahkan debouncing melalui konfigurasi perangkat lunak.

                        Dengan RPI2 ada opsi untuk menambahkan debouncing melalui konfigurasi perangkat lunak.

                        7.5 Bangun, terapkan, dan uji aplikasi pada target seperti sebelumnya

                        Mari tambahkan LED simulasi perangkat lunak ke UI untuk menampilkan status sakelar.

                        7.6 Tambahkan berikut ini ke UI di grid XAMLcode di kedua aplikasi Universal:

                        - Tambahkan Definisi Baris lain (di bawah )::            

                        7.7 Tambahkan dua definisi kuas warna ke deklarasi kelas Halaman Utama di bagian atas:

                        Tambahkan warna di Deklarasi

                        // Warna untuk elips saat tombol tekan perangkat keras ditekan/tidak ditekan SoltColorBrush pribadi redBrush =SolidColorBrush baru(Windows.UI.Colors.Red); solidColorBrush greyBrush pribadi =SolidColorBrush baru(Windows.UI.Colors.LightGray);

                          7.8 Terapkan manipulasi LED dengan warna-warna ini sebagai berikut:

                          - Dalam konstruktor kelas atur warna awalnya:

                          Dalam konstruktor

                          //Mulai dengan warna off untuk elips this.PBStatusLED.Fill =greyBrush;

                            - Di PushButtonPressed() atur warnanya tergantung pada status tombol:

                            Tambahkan ke Pushbutton_Pressed()

                            beralih (pbPinValue) {     kasus PinState.HIGH:         this.PBStatusLED.Fill =redBrush;         break;     kasus PinState.LOW:         this.PBStatusLED.Fill =greyBrush;         break; }

                              7.9 Bangun, terapkan, dan uji aplikasi pada target ..Wala!

                              Sekarang untuk menyempurnakan kode ini menggunakan acara digital.

                              7.10 Komentari semua kode yang berkaitan dengan timer, tetapi biarkan fungsi PushButtonPressed(); maka alasan untuk terpisah ke pengatur acara tick timer.

                              7.11 Tambahkan spesifikasi delegasi acara ke pengendali acara OnConnectionEstablished() dalam tindakan

                              Tambahkan ke OnConnectionEstablished

                              arduino.AnalogPinUpdatedEvent +=Arduino_AnalogPinUpdated;

                              We could try to implement the event handler as follows:

                              Invalid DigitalPinUpdated

                              private async void Arduino_DigitalPinUpdated(byte pin, PinState pinValue) {     if (pin ==PB_PIN)     {         Pushbutton_Pressed(pinValue);     } }

                                But this fail as the event runs in a thread separate to the main UI thread. This is the same issue as in .NET Windows Forms if (InvokeRequired) scenario.

                                7.12 Implement the event handler as follows

                                Add DigitalPinUpdated

                                private async void Arduino_DigitalPinUpdated(byte pin, PinState pinValue) {       await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>     {         if (pin ==PB_PIN)         {             Pushbutton_Pressed(pinValue);         }       }); }

                                  7.13 Build, deploy and test the apps on the targets. Wala

                                  [8] Add an Analog Input

                                  This extension to the app functionality adds a progress bar to the UA UI to display the level of a potentiometer in the hardware.

                                  The analog input is via A0, pin 14.

                                  Again my development board provides a potentiometer for this purpose but if you don’t have such you need to implement this circuit:

                                  The analog input pins are pins 14 (A0) to pin 19 (A5).

                                  arduino.pinMode(ANALOG_PIN, PinMode.ANALOG);

                                  The comment above is quite pertinent. The event handler signature provides the analog pin index (0 to 5) not the pin number.

                                  Analog values range from 0 to 1024. (10 bit)

                                  // Note:Need actual pin number, not analog index:

                                  arduino.pinMode(ANALOG_PIN, PinMode.ANALOG);

                                  8.0 Re-enable the Poll timer and disable the Pushbutton event in the MainPage class

                                  8.1 In the grid control in the UI XAML code add another row to the grid as previous and add a ProgressBar:

                                  Add a ProgressBar to the UI

                                  8.2 Add the Analog pin code as follows.

                                  - Declare the pin at the top of MainPage class:

                                  Add the Analog Pin

                                  private const int ANALOG_PIN =14;

                                  - Set its mode to analog in OnConnectionEstablished() as above

                                  - Add the following to the timer tick event:

                                  Add to Timer Tick Handler

                                  //Note:Analog Read Pin number is the analog index int PinValue =arduino.analogRead(ANALOG_PIN-14); this.analogBar.Value =PinValue;

                                    8.3 Build, deploy and test the app on the targets. Vary the potentiometer position and observe the ProgressBar changes.

                                    Now for the event driven version

                                    8.4 Again comment out the Poll Timer code.

                                    8.5 Add the analog event handler delegate specification to OnConnectionEstablished():

                                    Set Analog Pin Mode

                                    // Note:Need actual pin number, not analog ibndex: arduino.pinMode(ANALOG_PIN, PinMode.ANALOG);

                                      8.6 Add the Arduino_DigitalPinUpdated event handler method:

                                      Add AnalogPinUpdated

                                      private async void Arduino_AnalogPinUpdated(byte pin, ushort PinValue) {     //Note:Pin number is the analog index     if (pin ==ANALOG_PIN -14)     {         await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>         {             this.analogBar.Value =PinValue;         });     } }

                                      Note that the UI update has again to be done asynchronously.

                                      8.7  Build, deploy and test the app on the targets.

                                      [9] Add a PWM output

                                      It is left to reader to implement analog output as PWM, to drive a LED (dimmed via a slider).

                                      • PWM pins:
                                        3, 5, 6, 9, 10, and 11>
                                      • To set a pin as PWM:
                                        arduino.pinMode(PWM_PIN,PinMode.PWM)>
                                      • To set a PWM level
                                        arduino.analogWrite(byte, ushort)>
                                      • analogWrite values are from 0 to 255 (the ushort parameter)

                                      I might provide a solution to this at a later stage.

                                      [1] I actually used a retired earlier version of the Bluetooth module, but functionality seems to be the same.

                                      Kode

                                      • WindowsRemoteArduino_Win10.zip
                                      WindowsRemoteArduino_Win10.zipC#
                                      An extended version of "Blinky"
                                      Input, Output, Analog Input
                                      Fancier UI
                                      No preview (download only).

                                      Skema


                                      Proses manufaktur

                                      1. Raspberry Pi Universal Remote
                                      2. Windows IoT:Pintu Pengenalan Wajah
                                      3. Windows 10 IoT Core dan SHT15
                                      4. Windows 10 IoT Core untuk Raspberry Pi 3 Model B+
                                      5. GoPiGo v2 dengan Windows IoT
                                      6. Aplikasi dan Perangkat yang Mendukung Tim Rantai Pasokan Jarak Jauh
                                      7. Kontrol Jarak Jauh Universal menggunakan Arduino, 1Sheeld, dan Android
                                      8. Animasi dan Permainan LCD
                                      9. Panduan untuk PCB dan IoT
                                      10. Cisco Intros IoT Solusi Pemantauan Jarak Jauh untuk TI dan OT