OpenMV MicroPython OpenMV MicroPython OpenMV MicroPython
  • Beranda
  • Tutorial
  • Pustaka
  • Papan
  • Shield
  • Sensor
  • Bahasa
  • CPython
  • Internal
  • Changelog
  • Lisensi
/
  • English
  • العربية
  • 简体中文
  • 繁體中文
  • Hrvatski
  • Čeština
  • Nederlands
  • Suomi
  • Français
  • Deutsch
  • עברית
  • Magyar
  • Bahasa Indonesia
  • Italiano
  • 日本語
  • 한국어
  • Polski
  • Português (Brasil)
  • Português (Portugal)
  • Română
  • Русский
  • Español
  • Svenska
  • ไทย
  • Türkçe
  • Українська
  • Tiếng Việt
  • Diskusi
  • Tutorial
    • 1. Mulai cepat
    • 2. Ikhtisar Python
    • 3. Kontrol Hardware
    • 4. Sensor Visi
    • 5. Pemrosesan Citra
    • 6. NumPy
    • 7. Pembelajaran Mesin
    • 8. Asyncio
    • 9. Jaringan
      • 9.1. Mengapa jaringan
      • 9.2. Protokol berlapis
      • 9.3. Kabel dan bingkai
      • 9.4. Mengaktifkan tautan
      • 9.5. Alamat IP
      • 9.6. Paket dan routing
      • 9.7. Jaringan privat dan NAT
      • 9.8. Port
      • 9.9. UDP -- kirim paket, harap yang terbaik
      • 9.10. TCP -- aliran byte yang andal
      • 9.11. Objek socket
      • 9.12. UDP sockets
      • 9.13. TCP sockets
      • 9.14. Socket dengan asyncio
      • 9.15. Nama dan DNS
      • 9.16. Waktu dan NTP
      • 9.17. Socket terenkripsi dan TLS
      • 9.18. MQTT, byte demi byte
      • 9.19. MQTT dalam Python
      • 9.20. Kesimpulan
    • 10. Server Web
    • 11. Bluetooth
    • 12. Protokol Host
    • 13. Alat
    • 14. Produksi
  • Pustaka
  • Papan
  • Perisai
  • Sensor
  • Bahasa
  • CPython
  • Internal
  • Changelog
  • Lisensi

Di halaman ini

  • 9.4.1. Modul network
  • 9.4.2. Alur Wi-Fi
  • 9.4.3. Apa yang bisa salah
  • 9.4.4. Tetap terhubung
  • 9.4.5. Ethernet, bila ada
micropython-doc 0 0
Edit halaman ini
  1. OpenMV MicroPython /
  2. Tutorial OpenMV Cam /
  3. 9. Jaringan /
  4. 9.4. Mengaktifkan tautan
Lihat Sumber Buka di ChatGPT Buka di Claude Buka di Perplexity

9.4. Mengaktifkan tautan¶

Lapisan tautan yang dibahas di halaman sebelumnya sebagian besar berjalan otomatis, tetapi ada satu tempat di mana skrip Python harus ikut campur: memberi tahu kamera jaringan mana yang akan bergabung. Hingga langkah tersebut berhasil, tidak ada fitur jaringan yang dibahas di bagian selanjutnya yang akan berfungsi.

9.4.1. Modul network¶

Modul network mengekspos perangkat keras jaringan kamera ke Python. Kumpulan antarmuka yang tepat bergantung pada board: banyak kamera memiliki chip nirkabel dan mengekspos kelas WLAN (dinamai untuk Wireless Local Area Network); beberapa board juga memiliki port Ethernet bawaan dan mengekspos kelas LAN (dinamai untuk Local Area Network, yaitu versi kabel). Pola penggunaannya sama untuk keduanya, dengan satu perbedaan penting: antarmuka nirkabel harus diberitahu jaringan mana yang akan bergabung, sementara Ethernet mengambil apa pun yang ada di kabel.

9.4.2. Alur Wi-Fi¶

Bergabung dengan jaringan Wi-Fi terdiri dari tiga langkah: buat antarmuka, aktifkan, minta untuk terhubung ke jaringan bernama dengan kata sandi. Antarmuka bernegosiasi dengan titik akses di latar belakang; panggilan isconnected() melaporkan ketika tautan telah selesai aktif:

import network
import time

wlan = network.WLAN(network.WLAN.IF_STA)
wlan.active(True)
wlan.connect("my-network", "my-password")

while not wlan.isconnected():
    time.sleep_ms(100)

print("link up")

Argumen IF_STA memilih mode station -- kamera bergabung ke jaringan yang dihosting orang lain. Mode sebaliknya, IF_AP, membuat kamera menghosting jaringan kecilnya sendiri yang dapat diikuti oleh perangkat lain; berguna untuk antarmuka konfigurasi dan pengaturan di lokasi, tetapi bukan kasus umum.

Setelah isconnected() mengembalikan True, kamera berada di jaringan. Semua yang diperlukan oleh lapisan yang lebih tinggi untuk menyiapkan diri telah terjadi secara otomatis saat tautan aktif; halaman-halaman berikutnya menjelaskan potongan-potongan itu satu per satu.

9.4.3. Apa yang bisa salah¶

Beberapa mode kegagalan praktis muncul pada langkah ini.

  • Nama jaringan atau kata sandi salah. Upaya koneksi secara diam-diam mencoba ulang hingga aplikasi menyerah. Bungkus penantian dengan batas waktu agar loop di atas tidak memblokir selamanya:

    start = time.ticks_ms()
    while not wlan.isconnected():
        if time.ticks_diff(time.ticks_ms(), start) > 10000:
            raise OSError("Wi-Fi did not come up in 10 s")
        time.sleep_ms(100)
    
  • Diluar jangkauan. Kamera dan titik akses harus cukup dekat agar sinyal cukup kuat untuk mempertahankan tautan. status() mengembalikan kode yang menunjukkan mengapa tautan tidak aktif; scan() mengembalikan daftar jaringan yang dapat dilihat oleh radio, yang merupakan diagnostik untuk dijalankan ketika connect tidak akan berhasil.

  • Titik akses meminta lebih dari sekadar kata sandi. Jaringan terbuka (tanpa kata sandi) dan jaringan yang dilindungi kata sandi umum dicakup oleh connect seperti yang ditunjukkan di atas. Jaringan yang lebih besar di tempat kerja dan sekolah terkadang menggunakan skema berbeda di mana kamera harus mengautentikasi terhadap server login terpisah; itu memerlukan argumen tambahan ke connect. Lihat kelas WLAN -- mengendalikan antarmuka WiFi bawaan untuk permukaan lengkapnya.

9.4.4. Tetap terhubung¶

Mengaktifkan tautan adalah setengah dari masalah. Tetap terhubung adalah setengah lainnya -- titik akses reboot, kamera keluar dari jangkauan, sewa DHCP kedaluwarsa, firmware radio sesekali macet. Kamera yang akan hidup di jaringan selama berbulan-bulan harus memperhatikan hal itu dan pulih sendiri.

Pola deteksinya adalah memanggil isconnected() sekali per iterasi main-loop dan bereaksi ketika mengembalikan False. isconnected() dapat berbohong sebentar ketika koneksi telah terputus tanpa radio menyadarinya -- pengiriman socket yang gagal ketika tautan "seharusnya" aktif adalah bukti lain aplikasi tentang pemutusan. status() adalah sumber yang lebih otoritatif ketika keduanya tidak setuju.

Pola reconnect adalah disconnect() diikuti oleh connect() dengan kredensial yang sama, dengan penantian yang dibungkus dalam batas waktu seperti pada koneksi awal. Mundur di antara upaya -- satu detik, dua, empat, berlipat ganda hingga sekitar satu menit -- agar pemadaman panjang tidak membebani AP dan tidak membakar anggaran daya radio pada spin loop:

import network
import time

_BACKOFF_S = (1, 2, 4, 8, 16, 32, 60)

def reconnect(wlan, ssid, password):
    for delay in _BACKOFF_S:
        wlan.disconnect()
        wlan.connect(ssid, password)
        deadline = time.ticks_add(time.ticks_ms(), 10_000)
        while not wlan.isconnected():
            if time.ticks_diff(deadline, time.ticks_ms()) < 0:
                break
            time.sleep_ms(100)
        if wlan.isconnected():
            return True
        time.sleep(delay)
    return False

Ketika helper tersebut terus mengembalikan False, firmware radio itu sendiri mungkin macet. Jalan terakhir adalah mengaktifkan ulang daya radio: active(False), jeda singkat, active(True), reconnect dari awal. Ini mengembalikan firmware radio ke keadaan yang diketahui dengan biaya beberapa detik tambahan downtime:

def radio_power_cycle(wlan, ssid, password):
    wlan.active(False)
    time.sleep(1)
    wlan.active(True)
    return reconnect(wlan, ssid, password)

Kamera yang telah offline selama menit-menit adalah kegagalan nyata yang harus dilihat aplikasi. Kode pemulihan harus menampilkan keadaan tersebut -- tandai jaringan sebagai tidak sehat dalam flag yang diperiksa main loop, dan biarkan aplikasi melewatkan pengiriman jaringan yang seharusnya dilakukan saat flag bersih -- agar pemadaman panjang tidak membuat aplikasi macet menunggu socket yang tidak akan pernah menulis.

9.4.5. Ethernet, bila ada¶

Board dengan Ethernet bawaan mengekspos pola yang sama tanpa langkah connect. Antarmuka LAN diaktifkan dengan active(), dan segera setelah kabel terpasang antarmuka siap digunakan:

import network

lan = network.LAN()
lan.active(True)
print("link up")

Setelah titik ini, halaman-halaman bagian selanjutnya berlaku dengan cara yang sama terlepas dari antarmuka mana yang membawa kamera ke jaringan. Lapisan yang lebih tinggi tidak peduli apakah tautan di bawahnya adalah Wi-Fi atau Ethernet -- "terhubung" adalah "terhubung".

Untuk referensi WLAN dan LAN lengkap, termasuk kenop konfigurasi yang tidak muat di sini, lihat network --- konfigurasi jaringan.

Sebelumnya
9.3. Kabel dan bingkai
Berikutnya
9.5. Alamat IP

Untuk firmware OpenMV v5.0.0 · berdasarkan MicroPython v1.28 · dokumen dibuat 18 Juni 2026 · Hak Cipta © 2014-2026 oleh OpenMV, Damien P. George, dan lainnya.

Dibuat dengan Sphinx menggunakan tema Shibuya.