Advertisement
  1. Code
  2. Coding Fundamentals

Membangun Jaringan Sensor Nirkabel di Rumah Anda

Scroll to top
Read Time: 15 min

() translation by (you can also view the original English article)

Tutorial ini akan mengajarkan anda cara membuat jaringan hemat biaya, modul sensor nirkabel. Banyak modul nirkabel yang sudah jadi bisa terlalu mahal untuk digunakan dalam banyak unit sensor. Meskipun modul Wi-Fi dan Zigbee populer dan mudah digunakan, biayanya dapat membuat penggunaannya dalam berbagai sensor tidak praktis. Namun demikian, modul RF biaya rendah tanpa semua fitur mahal yang akan bekerja dengan baik tujuan ini. Platform Arduino dapat menggunakan modul radio low-end untuk berkomunikasi dengan mudah dan andal.

Setelah perangkat keras dirakit, anda akan memanfaatkan platform Raspberry Pi untuk memposting data ke layanan Internet of Things Xive di mana anda dapat melacak nilai dari waktu ke waktu dan memicu pada kondisi ambang.

Kumpulkan Komponen dan Alat

Proyek ini akan mencakup tiga bagian, dua unit pemancar dan satu unit penerima. Pemancar terbuat dari papan Arduino, sensor, dan pemancar RF. Unit penerima terdiri dari papan Arduino, penerima RF, pengonversi tingkat logika, dan Raspberry Pi.

Ada berbagai macam papan kompatibel Arduino yang dapat digunakan untuk proyek ini. Persyaratan minimum untuk papan untuk proyek ini adalah dua pin GPIO digital dan satu pin analog. Pilih papan yang kompatibel dengan Arduino yang sesuai dengan biaya dan kesederhanaan yang dibutuhkan untuk proyek ini.

Dalam tutorial ini saya telah menggunakan satu set papan Arduino Nano yang cocok di papan tempat memotong roti dan mudah untuk diprogram. Namun, versi 5V dari Arduino pro mini atau Trinket juga akan bekerja dengan baik dan pada titik harga yang jauh lebih rendah. Namun ini membutuhkan sedikit lebih banyak pengalaman untuk diprogram dan digunakan. Pilihlah dengan bijak.


Penerima

Pemancar (dua unit)

Alat-alat

  • PC / Mac dengan IDE pemrograman Arduino diinstal
  • Kabel USB untuk pemrograman papan Arduino
  • Keyboard dan Mouse USB. Baik digabungkan atau dengan hub sehingga keduanya dapat digunakan dengan port USB tunggal.
  • Paket sumber yang terkait dengan tutorial ini di workstation pemrograman anda

Merakit Pemancar

Pemancar sendiri adalah sirkuit yang relatif sederhana. Hanya satu pin yang digunakan untuk mengambil informasi dari sensor suhu dan kelembaban dan satu pin digunakan untuk mengirim data ke pemancar RF. Diagram papan roti ditampilkan di bawah ini.

Catu daya 9V akan menempel pada konektor laras yang membuat rel bawah 9V. Pengatur daya di Arduino akan menghasilkan 5V yang aman digunakan untuk radio dan sensor, rel kekuatan atas diagram.

Sensor dilengkapi dengan resistor ohm 10k yang menghubungkan pin data ke daya sebagai resistor pull-up sementara kabel lain menghubungkannya ke GPIO D3.

Hati-hati untuk mengikuti pengaturan di bawah dan pastikan anda memeriksa kembali datasheet untuk sensor dan modul RF untuk memastikan bahwa komponen diposisikan di papan breadboard dengan benar dan pin daya, ground, dan sinyal terhubung ke pin yang tepat.   Diagram fritzing termasuk dalam paket sumber untuk lebih detail.

Diagram pemancar

Antena adalah bagian penting dari papan karena modul RF tidak memiliki antena yang dibangun. Saya menggunakan kawat jumper female ke male 6-inci yang ditancapkan ke papan breadboard dan itu bekerja cukup baik untuk memungkinkan penerimaan dari semua bagian rumah saya dan sedikit di luar. Seperti yang tercantum pada diagram, 6,5 inci optimal untuk antena ini jika anda memerlukan rentang tambahan.

Catatan tentang penggunaan RF. Ada berbagai hukum dan aturan tentang penggunaan frekuensi di berbagai negara. Pastikan anda mematuhi aturan ini sebelum menyiarkan. Dikatakan demikian, sinyal dari modul ini hampir tidak cukup kuat untuk melewati luar rumah anda. Namun dalam kondisi yang sempurna, modul-modul ini dapat disiarkan hingga 500 kaki.

Unduh library untuk Komponen

Pemancar menggunakan dua pustaka yang tidak dipaketkan dengan Arduino IDE. Unduh pustaka seperti yang dijelaskan di bawah ini dan tanpa kompresi mereka ke direktori sketsa Anda dalam subdirektori bernama Libraries.

  • Unduh paket source VirtualWire untuk tutorial ini dan unzip folder sketsa wirelesstransmitter ke dalam folder sketsa Arduino anda
  • Dalam folder wirelesstransmitter buat folder bernama Libraries
  • Unduh versi terbaru dari VirtualWire code, 1.23 pada tulisan ini, dari halaman proyek
  • Ekstrak folder VirtualWire ke dalam folder wirelesstransmitter/Libraries/ sehingga anda memiliki subfolder lain bernama VirtualWire
  • Unduh sensor DHT library dari halaman github proyeknya
  • Ekstrak folder DHT ke dalam folder Libraries juga. Anda sekarang harus memiliki dua folder pustaka yang diperlukan DHT dan VirtualWire di folder wirelesstransmitter/Libraries anda.

Memprogram Papan Arduino

Tutorial ini mengasumsikan anda memiliki pengalaman dengan Arduino dan cara memprogramnya menggunakan Arduino IDE. Jika tidak, ada instruksi yang sangat bagus di situs Arduino resmi.

  • Buka sketsa wirelesstransmitter dari arsip sumber di Arduino IDE dan simpan salinannya secara lokal
  • Pastikan Arduino TIDAK terhubung ke daya melalui konektor barrel
  • Hubungkan papan ke stasiun workstaiton pemrograman anda dengan kabel USB yang sesuai
  • Atur jenis papan ke papan Arduino pilihan anda di bawah menu Tools > Board
  • Atur port serial ke port yang terdeteksi saat anda menyambungkan papan Arduino di bawah menu Tools > Port
  • Pastikan bahwa MYID mendefinisikan diatur ke dan TRANSPIN dan DHTPIN diatur dengan benar ke pin yang terhubung ke modul pemancar RF dan sensor DHT. Jika anda membangun papan anda per diagram di atas ini semua harus sudah diatur. Lihat contoh kode di bawah ini.
  • Pastikan bahwa UNIT diatur dengan benar untuk preferensi Anda Fahrenheit atau Celcius.
1
#define MYID 1      //the ID number of this board.  Change this for each board you flash.

2
                    //The ID will be transmitted with the data so you can tell which device is transmitting

3
#define TRANSPIN 3  //what pin to transmit on

4
#define DHTPIN 4     // what pin the DHT is connected to

5
#define UNIT 0      // 0 for Fahrenheit and 1 for Celsius

The MYID define adalah ID numerik yang digunakan pemancar untuk mengidentifikasi dirinya secara unik. Karena anda akan memiliki banyak pemancar di lokasi yang berbeda, penting untuk memiliki ID unik untuk masing-masing. Nomor ini akan digunakan lagi saat anda mengatur skrip penerima.

  • Verifikasi kode dengan menekan Control-R untuk memastikan pustaka disertakan dan dikompilasi dengan benar.
  • Dorong kode ke papan dengan mengklik tombol Upload pada bilah alat.
  • Buka jendela Serial Monitor dengan menekan Control-Shift-M

Jendela Serial Monitor menyetel ulang Arduino sehingga anda akan melihat baris kode di layar yang terlihat seperti:

1
Humidity: 44.00 %    Temperature: 60.80 *F
2
Sending Message: ID:1:TS:23143:TF:60.79:RH:44.00

Pesan terdiri dari Pasangan Nama:nilai yang akan ditangan penerima. Pemancar akan membaca dan menyiarkan sinyalnya pada interval acak yang panjang. Sensor tidak banyak berubah atau sering, sehingga penyiaran lebih sering dari sekali setiap menit tidak menambah nilai. Waktu tunggu acak adalah untuk memungkinkan beberapa sensor hidup berdampingan.

Bahkan jika ada penggandaan dan sinyal dari kedua pemancar hilang, interval acak akan memastikan bahwa siaran berikutnya tidak akan tumpang tindih. Benih acak untuk interval ini diatur dari analogRead pada port analog yang tidak digunakan yang akan mengembalikan nilai acak untuk memastikan tidak ada dua pemancar berada pada pola yang sama.

Contoh kode yang menghasilkan output di atas diatur untuk menggunakan Fahrenheit. Anda dapat melihat TF: 60,79 identifier dalam string pesan yang menunjukkan bahwa lab saya memang hanya rambut di bawah 61 derajat. Namun kelembaban relatif RH: 44,00 adalah 44% yang nyaman. Orang mungkin menyimpulkan dari lingkungan basah yang dingin bahwa lab saya berada di ruang bawah tanah saya. Mungkin ada yang benar.

Pemancar diatur untuk menunggu 2 hingga 5 menit antara siaran secara default. Jika anda ingin mempercepat ini untuk keperluan debugging kemudian memodifikasi nilai delay() di akhir sketsa menjadi lebih seperti 5000 (ms). Sangat disarankan agar anda mengubah ini kembali dan unggah ulang kode ke pemancar anda ketika anda siap untuk penggunaan penuh waktu.

  • Membangun papan pemancar kedua
  • Ubah sketsa pemancar sehingga definisi MYID diatur ke 2
  • Unggah kode ke papan kedua
  • Buka jendela Serial Monitor dengan menekan Control-Shift-M dan verifikasi bahwa output terlihat seperti papan pemancar pertama dengan pengecualian bahwa pesan yang dikirim dimulai dengan ID: 2

Bangun Papan Penerima

Papan penerima akan bertanggung jawab untuk menerima pesan siaran pada komponen RF Receiver dan mengirim pesan itu melalui kabel serial ke Raspberry Pi. Papan Arduino digunakan untuk menerima sinyal untuk beberapa alasan yang sangat penting. Kode VirtualWire menggunakan sifat Arduino yang real time untuk mengelola modulasi dan demodulasi sinyal.

Ini berarti bahwa unit penerima harus beroperasi pada frekuensi yang sama. Selain itu, ada sedikit ruang untuk jitter pada prosesor penerima, yang Raspberry Pi rentan, karena sistem operasi preemptive, non real-time. Membandingkan biaya Arduino Pro Mini ditambah modul penerima RF dengan modul Zigbee yang dapat berbicara langsung dengan Raspberry Pi mengungkapkan bahwa menggunakan Arduino eksternal masih cukup ekonomis.

Bangun papan penerima per diagram Fritzing di bawah ini.

Diagram Penerima

Pada titik ini TIDAK lampirkan 5V dan ground leads dari Pi ke breadboard. Jaga kabel jumper praktis, tetapi anda tidak ingin menyalakan Arduino dari port USB dan Raspberry Pi.

Perhatikan bahwa pengonversi tingkat logika dalam daftar bahan di atas tidak persis sama dengan yang ada di pustaka Fritzing, tetapi pin yang keluar diberi label yang baik, hanya di tempat yang berbeda. Pastikan kabel yang benar terhubung ke pin yang benar pada konverter tingkat logika yang sebenarnya.

Komponen ini diperlukan untuk mengkonversi sinyal serial Arduino 5V ke sinyal serial Raspberry Pi 3.3V dan tidak merusak Pi. Lihat gambar di bawah ini untuk bantuan tambahan.

Realisasi Logic Level Converter Wiring

Perhatikan bahwa kabel RX dan TX melewati konverter tingkat logika sehingga TX dari Arduino masuk ke RX dari Pi. Langkah selanjutnya melibatkan pengaturan Pi, Anda akan kembali memprogram Arduino nanti.

Siapkan Raspberry Pi

Ada beberapa panduan untuk membeli dan menginstal OS di Raspberry Pi anda. Instal sistem operasi Raspbian terbaru. Langkah-langkah berikut menggambarkan menghubungkan periferal ke Pi dan mengkonfigurasi

Tip: Jika anda perlu tahu lebih banyak tentang mem-flash SD Card, untuk Raspberry Pi Anda, lihat tutorial kami: Cara Flash SD Card untuk Raspberry Pi dan Cara Menginstal NOOBS pada Raspberry Pi Dengan Mac.

  • Masukkan adaptor USB Wi-Fi ke port USB atas pada Pi
  • Hubungkan hub USB ke port USB bawah pada Pi
  • Hubungkan mouse dan keyboard ke hub USB
  • Hubungkan Monitor HDMI
  • Masukkan Kartu SD
  • Hubungkan catu daya
  • Lakukan konfigurasi pengaturan pertama kali meninggalkan opsi default untuk boot ke desktop grafis
  • Setelah Pi reboot ke desktop ikuti petunjuk ini tentang cara menggunakan alat GUI untuk mengkonfigurasi jaringan wifi anda.
  • Buka jendela terminal dengan mengklik dua kali pada ikon LXTerminal
  • Jalankan perintah sudo raspi-config
  • Pilih Enable Boot to Desktop/Scratch > Console Text console, requiring login opsi 
  • Pilih Advanced Options > SSH untuk mengaktifkan akses baris perintah jaringan
  • Pilih Finish dan biarkan Pi untuk reboot ke konsol teks
  • Catat alamat IP yang dilaporkan Pi ketika boot. Ini akan digunakan untuk SSH ke Pi di langkah selanjutnya. Langkah-langkah di bawah ini untuk mengkonfigurasi Pi lebih mudah dilakukan dari sesi SSH ke Pi.

Konfigurasikan Raspberry Pi

Raspberry Pi menggunakan port serial secara default sebagai konsol serial. Perangkat ini bernama ttyAMA0. Ketika boot, ia akan membuang pesan boot ke perangkat ini dan menyiapkan sesi login di dalamnya. Untuk menggunakannya untuk menerima data dari Arduino anda perlu menonaktifkan konsol dan sesi serial.

  • Edit file inittab yang mengontrol sesi login teks dengan perintah di bawah ini. Itu selalu disarankan untuk membuat cadangan file asli sebelum mengedit untuk berjaga-jaga jika ada masalah.
1
sudo pico /etc/inittab
  • Cari garis di bagian bawah file yang merujuk ke perangkat ttyAMA0 dan tambahkan # ke awal baris yang menyertakan nama perangkat ini. Seharusnya terlihat seperti garis di bawah ketika anda selesai  
1
#Spawn a getty on Raspberry Pi serial line
2
#T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
  • Edit /boot/cmdline.txt dengan perintah di bawah ini. Jangan lupa untuk membuat salinan cadangan untuk berjaga-jaga.
1
sudo pico /boot/cmdline.txt
  •  Hapus argumen yang merujuk ttyAMA0. Bagian yang ingin Anda hapus terlihat seperti ini: console=ttyAMA0,115200 kgdboc = ttyAMA0,115200 
  • Simpan file dan reboot Pi 

Instal Python Script dan Prasyarat 

Script python yang akan menyelesaikan receiver akan melakukan beberapa fungsi.

  1. Baca dari port serial 
  2. Uraikan masukan dan pastikan sudah baik
  3. Menafsirkan data serial 
  4. Posting data ke Xively ke umpan yang sesuai 

Untuk melakukan fungsi-fungsi ini anda perlu menginstal modul prasyarat untuk menginstal pustaka serial dan komunikasi Xively. 

  • Login ke Pi dan jalankan perintah di bawah ini untuk menginstalnya. 
1
sudo apt-get install python-serial python-setuptools
2
sudo easy_install pip
3
sudo pip install --pre xively-python
4
mkdir ~/scripts

  • Salin skrip wirelessnetwork.py dari paket sumber untuk tutorial ini ke direktori skrip yang baru anda buat.  Anda dapat melakukannya dengan menyalin dan menempel konten atau dengan scping script ke Pi.
  • Pastikan skrip dapat dieksekusi dengan perintah
1
chmod u+x wirelessnetwork.py

Beberapa langkah selanjutnya akan membawa Anda melalui pengaturan akun Internet of Things yang memungkinkan anda merekam dan bereaksi terhadap data yang direkam perangkat anda.

Siapkan Akun Xively Anda untuk Pi

Xively adalah layanan yang mengumpulkan data dari things. Anda dapat mengatur dan mendaftarkan thing anda atau Raspberry Pi dengan Xively dan data dapat didorong dari Pi anda ke cloud untuk pelacakan dan pemicuan.

  • Buka xively.com dan daftar untuk mendapatkan akun gratis
  • Klik pada tombol Get Started
  • Gulir ke bagian bawah halaman dan pilih Sign Up for a free Developer Account
  • Isi informasi akun yang sesuai dan validasikan akun anda
  • Otentikasi sebagai akun baru anda sesuai kebutuhan
  • Pilih Web Tools > Develop untuk membuka halaman pengembang baru anda
  • Klik pada kotak + Add Device Perangkat besar untuk menambahkan Raspberry Pi Anda
  • Isi Nama Perangkat: Jaringan Nirkabel, Keterangan Perangkat: Monitor Lingkungan, pilih Perangkat Pribadi kecuali Anda ingin berbagi tingkat garam Anda dengan dunia.
  • Klik Add Device. Setelah perangkat dibuat anda akan disajikan dengan layar perangkat dengan kunci dan informasi tentang perangkat.
  • Catat Feed ID dan API Key dari halaman perangkat. Feed ID dalam huruf kecil di dekat bagian atas halaman dan API Key dalam huruf besar di sisi kanan halaman. Anda akan membutuhkan ini untuk menyelesaikan skrip wirelessnetwork.py yang anda unduh di bagian sebelumnya.

Konfigurasikan Skrip Python

Untuk memposting data ke Xively, skrip wirelessnetwork.py harus memiliki Feed ID dan API Keys yang Anda rekam di atas. Edit skrip menggunakan pico atau alat pengeditan favorit anda (tidak ada perang vs emacs di sini, silakan). Lihat cuplikan sampel dari bagian atas skrip wirelessnetwork.py untuk contoh di mana anda akan memasukkan variabel. Juga perhatikan anda dapat mengubah output dari skrip dengan mengubah variabel DEBUG menjadi 0.

1
#some defines for Xively 

2
FEED_ID = "FEED ID HERE"  #enter your feed ID number here

3
API_KEY = "API KEY HERE"  #set your API key here

4
# initialize api client

5
api = xively.XivelyAPIClient(API_KEY)
6
7
#Create mapping from transmitter ID number to names. This could be a DB some day

8
DEV={'1':'Bedroom', '2':'Basement'}
9
10
DEBUG = True

Saat anda mengedit skrip, pastikan untuk mengedit variabel DEV. Variabel ini adalah pemetaan nama untuk ID yang akan dikirimkan modul sensor. Dalam contoh ini ketika modul sensor dengan ID 1 mengirim pesan, skrip akan memposting ke saluran Xively dengan Nama Bedroom yang ramah alih-alih ID1. Dengan cara yang sama, modul sensor dengan ID 2 akan dilaporkan ke saluran Basement.

Program Penerima Arduino

Raspberry Pi sekarang siap menerima data menggunakan skrip wirelessnetwork.py. Arduino harus diprogram dengan sketsa wirelessreceiver.

  • Buka sketsa wirelessreceiver dari paket sumber dan simpan salinannya secara lokal
  • Salin pustaka VirtualWire dari direktori wirelesstransmitter/Library ke direktori Library di bawah direktori wirelessreceiver baru
  • Pasang receiver Arduino ke workstation pemrograman anda dan pastikan jenis port dan board diatur dengan benar.
  • Pastikan bahwa RXPIN mendefinisikan diatur ke nomor pin yang terhubung ke modul penerima RF. Jika dibangun per diagram sketsa harus baik-baik saja tanpa perubahan.
  • Verifikasi dan unggah sketsa ke Arduino
  • Buka jendela Serial Monitor dengan menekan Control-Shift-M. Jika pemancar tidak berjalan anda tidak akan melihat keluaran.
  • Colokkan salah satu modul pemancar ke daya menggunakan adaptor dinding 9V dan konektor barrel pada papan. Anda sekarang harus melihat pesan yang diterima di Arduino. Ini akan terlihat seperti data di bawah ini.
1
ID:1:TS:23143:TF:60.79:RH:44.00
2
ID:1:TS:24532:TF:60.79:RH:44.00
3
ID:1:TS:29324:TF:60.79:RH:44.00
  • Cabut kabel USB dari Arduino
  • Pasang jumper ground dan daya dari Raspberry Pi

Uji Script Penerima

Sekarang setelah anda memiliki Arduino menerima data dari modul sensor, anda dapat menguji skrip pada Pi untuk memastikan itu benar membaca data dan mempostingnya ke Xively. Buka sesi SSH atau terminal ke Pi untuk langkah-langkah berikut.

  • Aktifkan pemancar nirkabel kedua dengan menghubungkannya dengan adaptor 9V kedua
  • Jalankan script wirelessnetwork.py dari direktori /home/pi/scripts dengan perintah berikut
1
cd /home/pi/scripts/
2
./wirelessnetwork.py
  • Tinjau keluaran di konsol dan di situs web Xively.
1
 
2
Received input: ID:1:TS:154075:TF:73.39:RH:39.00
3
Processing data for: Bedroom
4
Posting temp fahrenheit for Bedroom
5
Creating datastream
6
Updating Xively feed with value: 73.39
7
Posting relative humidity for Bedroom
8
Found existing datastream
9
Updating Xively feed with value: 39.00
10
11
Received input: ID:2:TS:522:TF:60.79:RH:44.00
12
Processing data for: Basement
13
Posting temp fahrenheit for Basement
14
Creating datastream
15
Updating Xively feed with value: 60.79
16
Posting relative humidity for Basement
17
Found existing datastream
18
Updating Xively feed with value: 44.00

Skrip akan membuat feed untuk kelembaban dan suhu saat pertama kali dijalankan. Contoh di atas menunjukkan skrip menerima pesan, menguraikannya, dan mempostingnya ke Xiv berhasil. Gunakan Control-C untuk keluar dari skrip sebelum melanjutkan ke langkah berikutnya.

Beralih ke jendela browser tempat anda membuat akun dan perangkat Xively anda. Datastreams baru dan beberapa informasi tentang mereka harus tersedia dan terlihat seperti gambar di bawah ini.

Channel Xively Diperbarui

Atur Script untuk Luncurkan pada Boot

Karena Raspberry Pi akan dijalankan tanpa kepala, skrip harus diatur untuk memulai secara otomatis ketika unit diaktifkan.

  • Tambahkan baris berikut ke file /etc/rc.local. Gunakan editor favorit Anda, tetapi pastikan untuk sudo perintah edit sebagai /etc/rc.local adalah file yang dimiliki root. Script itu sendiri dapat dijalankan sebagai pengguna pi daripada sebagai root.
1
sudo -u pi /home/pi/scripts/wirelessnetwork.py &
  • Boot ulang Pi
  • Login ke Pi setelah reboot dan verifikasi bahwa skrip berjalan dengan perintah berikut.
1
ps ax |grep wirelessnetwork

Outputnya akan terlihat seperti kutipan di bawah ini.

1
22000 pts/1 S+ 0:02 /usr/bin/python /home/pi/scripts/wirelessnetwork.py

Ringkasan

Selamat! Anda telah bekerja melalui tutorial yang cukup panjang dan membangun jaringan sensor nirkabel yang sangat fleksibel dan dapat diperluas. Anda telah melatih berbagai keterampilan seperti membangun sirkuit breadboard berbasis Arduino, menghubungkan Arduino ke Raspberry Pi, mengirim dan menerima data serial secara aman antara Arduino dan Pi, dan mengirim Anda data sensor ke layanan Internet of Things Xively.

Ada banyak potensi untuk ekspansi atau eksperimen lebih lanjut dengan proyek ini. Anda dapat memilih untuk membangun modul sensor tambahan atau menambahkan sensor ke modul yang ada. Format pesan radio adalah kunci sederhana: pasangan nilai dan skrip python memiliki komentar tentang cara menambahkan tipe data yang berbeda. Cobalah membangun rumah permanen atau perumahan untuk pemancar. Ada banyak potensi yang menyenangkan dari mana untuk mengambil proyek ini.

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.