Daftar Isi:
- Langkah 1: Hubungkan NodeMCU ke Wi-Fi
- Langkah 2: Minta Data Dari HTTPS Dari ANWB.nl
- Langkah 3: Ubah Data Menjadi Informasi yang Dapat Digunakan
- Langkah 4: Instal Pemicu
- Langkah 5: Desain Umpan Balik
- Langkah 6: Jalankan Kode
Video: Pemeriksaan Laporan Lalu Lintas (NL) Dengan Keset: 6 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:56
Dalam instruksi ini saya akan menjelaskan cara membuat keset yang akan memeriksa laporan lalu lintas jalan raya Belanda. Begitu Anda melangkah keluar dengan keset dan ada kemacetan lalu lintas di rute Anda, keset akan berubah menjadi warna merah. Ketika tidak ada kemacetan lalu lintas, tikar akan berubah menjadi hijau.
Saya akan mengerjakan NodeMCU 1.0 (Modul ESP0-12E). Kode untuk proyek ini juga dapat berfungsi di perangkat lain (mis., papan Arduino). Proyek ini didasarkan pada sumber Belanda untuk laporan lalu lintas, ANWB.
Apa yang kami butuhkan untuk proyek ini:
- NodeMCU - Kabel jumper - Lampu LED atau strip - Sensor analog (Aluminiuim foil, Spons) - Koneksi Wi-Fi - Keset
Langkah-langkah yang harus kita lakukan:
1. Hubungkan NodeMCu ke Wi-Fi 2. Minta data melalui HTTPS dari ANWB.nl 3. Ubah data menjadi Informasi yang dapat digunakan 4. Instal pemicu 5. Umpan balik desain
Langkah 1: Hubungkan NodeMCU ke Wi-Fi
Langkah ini akan menunjukkan cara melakukan HTTPSRequest yang berhasil untuk melihat apakah perangkat terhubung ke internet.
Pertama, instal library ESP8266 di Arduino IDE. Buka dari contoh ESP8266 >
Isi kredensial Wi-Fi Anda di bagian atas kode Anda, seperti yang ditunjukkan di bawah ini:
const char* ssid = "YOUR_SSID";
const char* kata sandi = "YOUR_PASS";
Unggah kode ke perangkat Anda dan periksa apakah NodeMCU terhubung ke internet. Contoh HTTPSRequest menggunakan Github sebagai default untuk mendapatkan informasi. Ketika HTTPSRequest berhasil, Anda menerima data Github di monitor serial.
Langkah 2: Minta Data Dari HTTPS Dari ANWB.nl
Pada langkah kedua ini, Anda mengubah sumber data dari default ke sumber yang diperlukan untuk proyek ini: ANWB.nl.
Di bagian atas kode Anda, ubah char* host menjadi www.anwb.nl (atau sumber lain yang Anda inginkan untuk mendapatkan data):
const char* host = "www.anwb.nl";!! Jika Anda menggunakan sumber lain, langkah 3 akan berbeda dari kode saya. Langkah 3 membutuhkan pengkodean khusus untuk mengambil informasi yang dapat digunakan!
Selanjutnya, ubah url string dalam pengaturan fungsi menjadi "/feeds/gethf", jalur tempat informasi diambil:
String url = "/feeds/gethf";!! Jika Anda menggunakan sumber lain, gunakan jalur ke sumber Anda!
Saat Anda mengunggah kode, Anda akan mendapatkan respons dengan semua data dari www.anwb.nl/feeds/gethf. Kode ini disimpan ke dalam string yang disebut baris.
Langkah 3: Ubah Data Menjadi Informasi yang Dapat Digunakan
Sampai saat ini, kode tersebut hanya berjalan ketika NodeMCU dimulai atau direset, karena semua kode tersebut berada dalam fungsi setup. Untuk mengatur pemicu agar kode terus berjalan, Anda harus mengubah posisi kode yang menjalankan permintaan HTTPS. Di bawah fungsi loop, Anda menambahkan fungsi lain. Saya menyebutnya void extractData:
ekstrakData(){
}
Salin bagian kode dari fungsi setup ke dalam extractData(). Mulailah dengan baris berikut hingga akhir fungsi pengaturan:
if (!client.connect(host, Kode sekarang ada di fungsi baru Anda, jadi hapus kode yang disalin dari fungsi pengaturan.
Selanjutnya, panggil fungsi extractData dalam fungsi loop dan tambahkan beberapa penundaan untuk memberikan waktu kepada nodeMCU untuk beristirahat:
lingkaran kosong(){
ekstrakData(); penundaan (30000); // ini akan dihapus nanti ketika kita memiliki sensor analog }
Karena data yang Anda terima disimpan dalam string dan hanya bagian dari string ini yang diperlukan, Anda harus menulis beberapa perulangan for.
Pertama, periksa semua posisi kata 'jalan'. Setelah kata 'jalan', nama jalan akan mengikuti (A1, A2, dst).
Sebelum mulai menulis for loop, Anda harus mendeklarasikan beberapa variabel yang akan Anda gunakan:
int noOfPos = 0;
boolean hasRunOnce = false; int dari = 0; int roadArray[20];
Sekarang saatnya untuk menulis beberapa loop. Saya telah menulis for loop di bagian bawah fungsi extractData. Saya mencoba membaginya menjadi beberapa fungsi terpisah, tetapi saya tidak dapat membuatnya berfungsi.
Untuk loop No. 1: temukan posisi kata jalan di baris string:
for(int i = 0; i < line.length(); i++){ int pos = line.indexOf("road\":", from); roadArray[noOfPos] = pos; noOfPos += 1; from = pos + 1; if(hasRunOnce == true && pos == line.indexOf("road\":")){ i = line.length(); } hasRunOnce = benar; }
Selanjutnya, periksa jalan mana yang macet, dengan menggunakan posisi for loop dari atas. Posisi nama jalan selalu sama dan dimulai 7 karakter dan diakhiri 10 karakter setelah kata jalan.
Sekarang kita mendefinisikan array nameOfRoadArray, yang akan diisi pada loop for berikutnya:
String namaOfRoadArray[20];
Untuk loop No. 2: Temukan semua nama jalan dengan input dari for loop no. 1
for(int k = 0; k < 20; k++){ int pos = roadArray[k]; int positionOfRoadName = pos + 7; int endOfPositionOfRoadName = pos + 10; nameOfRoadArray[k] = line.substring(positionOfRoadName, endOfPositionOfRoadName); }
Nama arrayOfRoudArray harus diisi dengan semua sinyal kemacetan lalu lintas.
Selanjutnya, Anda akan memeriksa apakah jalan Anda berada di deretan jalan yang macet. Cetak nameOfRoadArray untuk mendapatkan data jalan. Lakukan ini dengan menambahkan Serial.println(nameOfRoadArray[k]); ke dalam loop for ke-2 seperti:
for(int k = 0; k < 20; k++){ int pos = roadArray[k]; int positionOfRoadName = pos + 7; int endOfPositionOfRoadName = pos + 10; nameOfRoadArray[k] = line.substring(positionOfRoadName, endOfPositionOfRoadName); Serial.println(nameOfRoadArray[k]); }
Jika benar Anda akan melihat semua jalan dengan kemacetan lalu lintas di monitor Serial.
Sebelum menulis perulangan For terakhir, Anda harus mendeklarasikan boolean sebagai variabel global. Boolean, yang disebut trafficJam secara default salah dan akan berubah jika fungsi extractData akan mengembalikan true untuk kemacetan lalu lintas. Kode berikut berada di atas file.ino:
boolean trafficJam = false;
Untuk loop No. 3: Periksa apakah jalan, dalam hal ini A1, ada dalam daftar kemacetan lalu lintas.
for(int l=0; l < 20; l++){ if(nameOfRoadArray[l] == "A1\""){ //ubah A1 ke jalan yang Anda inginkan trafficJam = true; }
Jika Anda mencetak trafficJam di monitor serial, Anda tahu apakah ada kemacetan lalu lintas di A1 atau tidak.
Letakkan kode ini di bagian bawah fungsi extractData:
Serial.println(trafficJam); //melihat apakah ada kemacetan lalu lintas
Dengan informasi ini kita akan bekerja lebih jauh pada umpan balik dari sistem pada langkah 5.
Langkah 4: Instal Pemicu
Karena kita sekarang dapat mengambil data dengan sukses dari sumbernya, saatnya untuk membangun sebuah sensor yang akan memicu nodeMCU untuk menjalankan fungsi extractData. Saya memilih untuk membuat sensor analog dari keset saya. Anda dapat mengubah pemicunya dengan menggunakan sensor lain.
Membangun sensor analog
Saya menggunakan 2 lembar aluminium foil, dua kabel jumper dan spons.
Bor lubang di spons, ini adalah tempat di mana aluminium foil akan bersentuhan. Rekatkan aluminium foil di kedua sisi spons. Hubungkan kabel jumper ke aluminium foil. Hubungkan kabel jumper ke nodeMCU. Satu sisi ke pin A0 dan sisi lainnya ke pin V3. Letakkan spons di bawah keset Anda dan Anda baru saja mengubah keset Anda menjadi sensor. Luar biasa!
Kode untuk membaca nilai dari sensor untuk melihat apakah seseorang berdiri di keset:
int sensorValue = analogRead(A0);
if (nilai sensor == 1024){ extractData(); }
Saat aluminium foil membuat kontak (ketika seseorang berdiri di atas matras), nilai sensor adalah 1024. Ini menghasilkan fungsi extractData() yang menyala. Dan itulah yang kami ingin sistem lakukan.
Langkah 5: Desain Umpan Balik
Saya menggunakan LEDstrip untuk memberikan umpan balik kepada pengguna. Saat terjadi kemacetan, lampu akan berwarna merah. Ketika jalan bagus untuk dilalui, itu akan berubah menjadi hijau. Saya menggunakan perpustakaan neopixel adafruit untuk mengontrol LEDstrip saya.
Tulis kode ini di bagian atas file Anda untuk memastikan strip LED ditentukan:
#termasuk
#define PIXEL_PIN D5 #define PIXEL_COUNT 10 #define PIXEL_TYPE NEO_GRB + NEO_KHZ800 Adafruit_NeoPixel piksel = Adafruit_NeoPixel(PIXEL_COUNT, PIXEL_PIN, PIXEL_TYPE);
Tulis kode berikutnya dalam fungsi setup:
//neopiksel
piksel.mulai(); piksel.tampilkan();
Dan kode berikut dalam fungsi loop:
if (trafficJam == true){
for(int i; i < PIXEL_COUNT; i++){ pixels.setPixelColor(i, 255, 0, 0); // piksel merah.tampilkan(); penundaan (200); } } else{ for(int i; i < PIXEL_COUNT; i++){ pixels.setPixelColor(i, 0, 255, 0); // piksel hijau.show(); penundaan (200); }
Dalam kode di atas ada fungsi if/else. Ketika fungsi extractData mengembalikan adanya kemacetan lalu lintas, LEDstrip akan berubah menjadi merah. Jika tidak, strip LED akan berubah menjadi hijau.
Langkah 6: Jalankan Kode
Jika kita menjalankan kode lengkap sekarang, sensor dan lampu akan bekerja. Saat Anda berdiri di keset, sensor akan terhubung dan fungsi extractData akan berjalan. Ketika di deretan nama jalan, jalan yang kita cari ada, LEDstrip akan berubah menjadi merah, menandakan kemacetan lalu lintas. Jika tidak ada dalam larik, strip LED akan berubah menjadi hijau dan Anda tahu bahwa Anda siap melakukannya!
Semoga perjalanan Anda aman dan terima kasih telah membaca. Saya harap Anda menemukan beberapa inspirasi atau informasi. Jika Anda mendapat umpan balik, jangan ragu untuk merespons!
Direkomendasikan:
Cara Membuat Lampu Lalu Lintas Bekerja Dengan Papan Auduino: 5 Langkah
Cara Membuat Lampu Lalu Lintas yang Berfungsi Dengan Papan Auduino : Lampu lalu lintas adalah alat pemberi isyarat yang biasa digunakan persimpangan jalan, penyeberangan pejalan kaki, dan lokasi lainnya untuk mengatur arus lalu lintas. Lampu lalu lintas dengan penerangan gas yang dioperasikan secara manual adalah yang pertama dari jenisnya dan teknologinya telah sangat meningkat
Lampu Lalu Lintas Kebisingan - Dicetak 3D DIY: 8 Langkah (dengan Gambar)
Lampu Lalu Lintas Kebisingan - Dicetak 3D DIY: Semua orang ingin bekerja dalam keheningan dan Sangat penting untuk memiliki lingkungan kerja yang baik. Keheningan mengarah pada kerja yang efisien. Kami melakukan proyek ini untuk mencapai proposal ini. Lampu lalu lintas kebisingan terdiri dari 'lampu lalu lintas' yang mengontrol dB
State Machine di Arduino - Lampu Lalu Lintas Pejalan Kaki: 6 Langkah (dengan Gambar)
State Machine di Arduino - Lampu Lalu Lintas Pedestrian: Hai! Saya akan menunjukkan cara memprogram lampu lalu lintas pejalan kaki untuk Arduino di C++ dengan mesin status hingga menggunakan YAKINDU Statechart Tools. Ini akan menunjukkan kekuatan mesin negara dan dapat digunakan sebagai cetak biru untuk
6 Tahun Membuat Lampu Lalu Lintas Dasar Dengan Scratch untuk Arduino: 3 Langkah
6 Tahun Membuat Lampu Lalu Lintas Dasar Dengan Scratch untuk Arduino: Anak saya sudah penasaran dengan proyek Arduino saya. Dia bermain sebentar dengan Snap Circuits dan LEGODia juga mulai membangun beberapa proyek Scratch. Hanya masalah waktu bagi kami untuk bermain dengan Scratch untuk Arduino. Ini adalah proyek pertama kami. Ob
Lampu Lalu Lintas Arduino: 3 Langkah (dengan Gambar)
Arduino Traffic Light: Instruksi ini berasal dari: Arduino-Traffic-Light-SimulatorSaya telah menggunakan gambar dari instruksi ini, untuk membuat lampu lalu lintas terpisah. Saya membuat perubahan berikut: Lubang untuk LED lebih kecil, untuk LED 5mm (bukan LED 10mm)