2 poin oleh GN⁺ 2023-11-14 | 1 komentar | Bagikan ke WhatsApp
  • Setelah kontrak Bluefox yang menyediakan data kepadatan kantin hilang, dibuat perangkat untuk mengukur sendiri tren okupansi kampus berdasarkan jumlah perangkat yang terlihat dari paket iklan BLE
  • Dalam eksperimen dengan laptop, jumlah perangkat BLE bergerak cepat seiring kepadatan aktual di ruang kecil, dan di kantin besar pun cocok dengan perubahan tren pada jam perpindahan sebelum dan sesudah kelas
  • Raspberry Pi Zero W menjadi sulit dipakai sebagai perangkat deployment karena Linux Bluetooth, DBus, cross-compilation, dan konfigurasi Wi-Fi headless, sehingga arah beralih ke ESP32 yang lebih sederhana
  • Board ESP32-WROOM murah tidak stabil karena masalah memori di sekitar 250–400 perangkat, tetapi Seeed Studio XIAO ESP32C3/S3 berjalan stabil dalam jangka panjang dan bertahan hingga mendeteksi sekitar 1000 perangkat
  • Konfigurasi akhir memakai ESP32 untuk memindai jumlah perangkat BLE dan mengirimkannya ke Cloudflare Functions serta D1, lalu memvisualisasikan dan memprediksinya dengan Grafana·NeuralProphet; kalibrasi akurasi dan verifikasi privasi masih tersisa

Data kepadatan kantin yang menghilang

  • Saat tahun pertama kuliah, operator kantinnya adalah Sodexo, dan Sodexo memakai sensor okupansi melalui kontrak dengan Bluefox untuk menampilkan jumlah orang di dalam kantin
  • Menurut materi yang diterima lewat permintaan FOIA, perangkat Bluefox bekerja dengan menghitung alamat MAC smartphone dari paket iklan Bluetooth
  • Dengan menghubungkan panggilan API ke Grafana, kepadatan kantin bisa dilihat sebagai grafik real-time, sehingga dapat dimanfaatkan untuk menghindari jam ramai
  • Kemudian operator kantin berganti menjadi Aramark, dan karena Aramark tidak membuat kontrak penghitungan okupansi seperti Bluefox, data lama pun hilang

Menggunakan beacon BLE sebagai indikator pengganti jumlah orang

  • Inti proyek ini adalah memeriksa seberapa baik jumlah beacon Bluetooth dapat menggantikan jumlah orang sebenarnya dan durasi tinggal mereka
    • Sebagian orang membawa beberapa perangkat seperti headphone dan smartwatch
    • Sebagian orang mungkin tidak membawa perangkat atau mematikan Bluetooth ponselnya
  • Untuk estimasi durasi tinggal, variabelnya adalah apakah churn alamat MAC unik bisa digunakan, serta bagaimana dampak pengacakan alamat MAC oleh berbagai produsen seperti Android dan Apple
  • Untuk mengirim data ke server pusat, Wi-Fi adalah pilihan paling natural, tetapi tidak semua lokasi memiliki Wi-Fi yang mudah digunakan
  • LoRa juga bisa menjadi kandidat bergantung pada distribusi beacon, tetapi jangkauan aktual sangat dipengaruhi oleh gain antena dan lokasi pemasangan
  • Untuk penyimpanan data, hal yang dipertimbangkan mencakup apakah perlu memakai basis data deret waktu, dan untuk prediksi tren jangka panjang apakah event khusus seperti akhir pekan homecoming atau pekan ujian akhir bisa dikecualikan

Validasi awal dengan laptop

  • Eksperimen pertama adalah kode sederhana yang memindai selama x detik dengan adaptor Bluetooth laptop, mengulangnya setiap y detik, lalu menyimpannya ke basis data SQLite
  • Data dikumpulkan sambil menunggu dengan membawa laptop di berbagai tempat seperti kantin, Chick-Fil-A, dan Starbucks
  • Di Starbucks, ruang tunggal yang kecil, jumlah perangkat cukup akurat dan setidaknya cepat mencerminkan tren okupansi
    • Saat orang masuk, grafik cepat naik
  • Di ruang besar seperti kantin, jumlah orang total tidak bisa dihitung langsung dan jangkauan adaptor Bluetooth juga tidak pasti, tetapi kenaikan pada jam orang bergerak untuk makan setelah kelas berakhir selaras dengan kenaikan jumlah beacon yang terdeteksi

Mengapa pendekatan Raspberry Pi Zero W terhambat

  • Perangkat yang pertama terpikir untuk deployment jangka panjang adalah Raspberry Pi Zero W, yang kecil, murah, serta memiliki Wi-Fi dan Bluetooth
  • Kode ditulis ulang dengan Rust untuk menangani situasi seperti reboot, tidak ada jaringan, dan adaptor hilang
  • Menangani Linux Bluetooth di lingkungan headless ternyata jauh lebih rumit dari perkiraan
    • Binding DBus memerlukan konfigurasi terkait cross-compilation
    • Cross pun tidak menyelesaikan masalah
    • Setelah berbagai flag compiler, hilangnya pekerjaan Makefile, dan konfigurasi bridge QEMU, binary akhirnya berjalan di Pi
  • Koneksi Wi-Fi, instalasi library yang diperlukan saat startup, pendaftaran executable sebagai service, hingga penerapan update otomatis sudah diimplementasikan, tetapi setelah benar-benar boot, perangkat tidak berjalan dengan benar
  • Pendekatan ini merangkul seluruh kernel Linux dan banyak bagian bergerak, padahal fungsi yang diperlukan hanyalah Wi-Fi dan Bluetooth yang andal

Beralih ke ESP32

  • Di atas kertas, ESP32 adalah perangkat yang memiliki Wi-Fi, Bluetooth, konsumsi daya rendah, harga rendah, dan ukuran kecil sekaligus
  • Sebuah ESP32-WROOM-32 acak dengan layar OLED dibeli dari Amazon
    • Tujuannya adalah menampilkan data real-time di layar
  • Karena ekosistem Rust untuk ESP32 dinilai belum cukup matang, kode pengumpulan data ditulis ulang dalam C++
  • OLED dibuat berjalan dengan konfigurasi SSD1306Wire display(0x3c, 5, 4);
  • Permintaan whitelist alamat MAC diajukan ke IT kampus, dan Cloudflare Functions serta basis data D1 ditulis sebagai backend pengumpulan data

Masalah memori yang muncul pada deployment pertama

  • Perangkat pengumpulan data dipasang di perpustakaan kampus, dan masuknya data dikonfirmasi dari laptop
  • Setelah itu muncul hasil aneh yang seolah-olah semua orang telah meninggalkan perpustakaan, dan penyebabnya adalah spesifikasi rendah dari board ESP32 yang dibeli secara acak
  • Perangkat crash di sekitar 250 perangkat
    • Awalnya dicurigai ada masalah jumlah hasil disimpan dalam angka 1 byte sehingga mentok di sekitar 255
    • Hasil pengecekan Serial.print menunjukkan crash acak di rentang serupa seperti 249 dan 265, jadi bukan sekadar integer overflow
  • Selama pemindaian, hasil disimpan sampai akhir dalam struktur data, sehingga banyak data seperti kekuatan sinyal, layanan iklan, dan ID produsen menumpuk dan RAM kecil menjadi penuh
  • Nilai yang sebenarnya dibutuhkan hanyalah jumlah perangkat unik, sehingga struktur yang mempertahankan seluruh hasil pemindaian terlalu berlebihan

Hash set buatan sendiri dan batasannya

  • Sebagai solusi, struktur data C++ ditulis sendiri untuk membuat hash set kecil
  • Di setiap callback, alamat MAC dimasukkan ke hash set, lalu struktur hasil bawaan dikosongkan untuk membebaskan memori
  • Cara ini punya kelemahan: struktur hasil bawaan kehilangan data untuk pengecekan duplikat, sehingga callback terjadi untuk setiap paket iklan BLE
    • Pengecekan duplikat hash set dilakukan di addToSet
    • Namun callback duplikat terjadi ratusan kali, dan struktur hasil terus dialokasikan serta dibebaskan sehingga menimbulkan churn heap
  • Meski begitu, dibanding kapasitas mentok di sekitar 250 orang, mengecek hash map dengan maksimal kurang dari 1000 item secara sering dinilai lebih baik

Memilih board ESP32 yang lebih stabil

  • Selama libur musim gugur, uji jangka panjang 5 hari dicoba, tetapi perangkat kembali crash di sekitar 400 perangkat
  • Masalah muncul setelah sekitar 3 jam penggunaan, dan meski reboot berkala ditambahkan, muncul gejala setiap pemindaian langsung mengembalikan 0 perangkat
  • Beberapa board diuji
    • Seeed Studio XIAO ESP32S3/C3
    • WaveShare ESP32S3 Zero
    • ESP32-WROOM tanpa merek dengan OLED
    • Orange Pi Zero W
    • Raspberry Pi Zero W
  • Satu-satunya board yang berjalan stabil dalam jangka panjang adalah XIAO ESP32C3/S3, dan keduanya bekerja pada tingkat yang dapat diterima
  • Pilihan akhir adalah XIAO ESP32C3
    • Disukai karena berbasis RISC-V
    • Harganya lebih murah
  • Dengan beralih ke board dari produsen yang lebih baik, SRAM bertambah, dan crash berkurang meski struktur hasil default dipertahankan alih-alih hash map buatan sendiri
  • Tidak terlihat tanda-tanda melambat hingga mendeteksi sekitar 1000 perangkat, dan churn heap serta callback kemungkinan juga berkurang

Pola pergerakan yang terlihat dari jendela asrama

  • Setelah menemukan perangkat yang stabil, perangkat dipindahkan ke jendela kamar asrama agar iterasi deployment lebih mudah
  • Pada data satu hari, terlihat puncak pada jam pergantian kelas
  • Meski perangkat berada di asrama, yang terukur bukan hanya penghuni asrama
    • Jika hanya penghuni asrama yang terukur, semestinya nilai maksimum terjadi pada pagi-pagi sekali lalu menurun saat siang
    • Karena posisinya menghadap ke luar jendela, perangkat terutama mendeteksi mahasiswa yang bergerak menuju dua gedung akademik di dekatnya
  • Puncak sekitar pukul 7:50 pagi bertepatan dengan sesaat sebelum kelas pukul 8 di Ewell Hall dan Washington Hall
  • Puncak 8:50, 9:50, dan 10:50 masing-masing cocok dengan waktu perpindahan menuju kelas pukul 9, 10, dan 11
  • Perangkat tampak cocok untuk melacak tren pergerakan mahasiswa di sekitar, dan jangkauan antena tampaknya mencapai sekitar 160ft hingga Washington Hall dan sekitar 100ft hingga Ewell
  • Ketinggian lantai 3 juga tampaknya membantu jangkauan deteksi

Prediksi dan tugas validasi yang tersisa

  • Data yang dikumpulkan memiliki banyak tren per jam, harian, dan mingguan, sehingga cocok untuk prediksi deret waktu seperti NeuralProphet
  • Setelah fungsi prediksi ditambahkan, saat ini tren harian dapat diprediksi dengan baik
  • Tren jangka panjang skala mingguan, bulanan, dan musiman diperkirakan akan konvergen ketika data yang cukup terkumpul
  • Masih ada banyak pertanyaan yang belum terjawab
    • Seberapa baik jumlah beacon BLE mewakili jumlah populasi sebenarnya
    • Apakah karena orang membawa beberapa perangkat, bisa dibuat faktor koreksi seperti x beacon kira-kira setara 0.7x orang
    • Di gedung ilmu komputer, apakah jumlah perangkat membuat rasio beacon terhadap orang lebih tinggi, atau justru lebih rendah karena banyak orang mematikan Bluetooth
    • Apakah gedung staf memiliki rasio lebih rendah karena staf membawa lebih sedikit perangkat dibanding mahasiswa
    • Apakah kantin memiliki rasio lebih rendah karena kasus membawa laptop, iPad, dan sejenisnya bersamaan tidak sebanyak di ruang kelas
  • Cara meningkatkan akurasi juga masih tersisa
    • Menetapkan nilai minimum RSSI untuk mengecualikan sinyal lemah
    • Filtering yang hanya menghitung ID produsen Apple dan Android umum
    • Masalah Apple Watch, AirPods, MacBook, dan lainnya yang tetap ikut terhitung
    • Apakah noise tambahan diperlukan dalam pendekatan saat ini yang hanya melacak jumlah beacon dan tidak melacak alamat MAC sebenarnya
    • Apakah mengidentifikasi satu pengguna hanya dari jumlah perangkat itu realistis
    • Pemilihan durasi pemindaian: jika terlalu pendek ratusan perangkat tidak ditemukan semua, jika terlalu panjang perangkat yang sudah pergi ikut terhitung
    • Panjang pemindaian dinamis yang mengakhiri pemindaian jika tidak ada perubahan selama jangka waktu tertentu

Bentuk deployment yang memungkinkan

  • Ada rencana memvalidasi data di tempat yang jumlah populasi sebenarnya dapat diperoleh dengan mudah
    • Gym dengan catatan keluar-masuk
    • Kantin atau tempat seperti Starbucks dengan pintu masuk terbatas
  • Kasus penggunaan oleh komite universitas atau kemungkinan riset akademik sedang didiskusikan dengan para profesor
  • Opsi menjualnya untuk toko offline agar dapat mengukur tren okupansi juga sedang dipertimbangkan
  • Konfigurasi untuk satu unit deployment relatif sudah terpaketkan
    • Mengonfigurasi Wi-Fi di pengaturan
    • Jika ada portal, jaringan mem-whitelist alamat MAC
    • Wi-Fi terbuka atau berpassword tersambung saat boot
    • Mengubah machine ID dan site ID di pengaturan
    • Menghubungkan perangkat ke stopkontak di lokasi pusat atau lokasi yang nyaman
    • Mengonfigurasi dashboard Grafana di backend untuk membaca setiap perangkat
    • Mengonfigurasi dashboard Grafana untuk membaca tren prediksi sebagai grafik terpisah

1 komentar

 
GN⁺ 2023-11-14
Komentar Hacker News
  • Saya benar-benar membangun bisnis nyata dengan teknologi ini (occuspace.io), dan sudah mencoba menjawab sebagian besar pertanyaan yang diajukan
    Jumlah beacon BLE punya korelasi yang sangat tinggi dengan jumlah orang yang hadir, tetapi karena koefisien korelasinya sangat berbeda antara restoran, ruang kuliah, dan tiap lantai perpustakaan, lebih baik menggunakan fitur yang lebih kompleks juga
    Memperkirakan durasi tinggal dari lamanya beacon BLE terlihat tampaknya tidak akurat karena Bluetooth MAC diacak setiap 8–20 menit tergantung produsennya
    Mengecualikan RSSI yang lemah agar hanya menghitung perangkat yang dekat adalah ide yang bagus, tetapi nilai ambangnya berbeda tergantung jenis ruang dan lokasi pemasangan sensor

    • Saya penasaran seberapa sering jumlah yang benar-benar akurat itu memang diperlukan
      Jika kebutuhan awalnya adalah “menghindari keramaian kafetaria”, mungkin cukup hanya mengetahui secara kasar apakah sedang sepi atau ramai
      Dalam bisnis, saya juga penasaran apakah pelanggan memang mengharapkan akurasi tinggi, dan apakah semua orang seperti itu atau hanya sebagian
      Meski alamat MAC diacak, mungkin adakah cara mengenali jenis perangkat sehingga hanya ponsel yang dihitung dan headphone serta lainnya dikecualikan
    • Saya penasaran apakah pelacakan okupansi seperti ini juga bekerja akurat di luar ruangan
      Rasanya akan lebih sulit karena sinyal menyebar lebih jauh, dan saya sedang menjalankan startup yang perlu melacak okupansi lapangan tenis
      Mungkin juga bisa memasang perangkat Bluetooth di sudut area luar ruang dan menjadikan kekuatan sinyalnya sebagai ambang batas
    • Meraki juga menyediakan informasi seperti ini sebagai bagian dari fitur manajemen cloud jaringan mereka
      Dengan melacak Wi-Fi, Wi-Fi MAC, dan informasi video lalu menghubungkannya, mungkin bisa dilakukan lebih banyak hal
      Tampaknya bagus untuk diketahui sebagai salah satu calon pesaing
    • Fakta bahwa koefisien korelasinya berbeda di tiap ruang tampak seperti bagian yang sulit untuk dijadikan produk
      Di gedung universitas STEM, bisa saja ada lebih dari 3 perangkat Bluetooth per orang, tetapi di tempat lain bisa kurang dari 1
    • Apakah ini juga bisa dipakai untuk deteksi jatuh bagi lansia?
  • Tulisan yang luar biasa
    Disebutkan bahwa setelah menguji Seeed Studio XIAO ESP32S3/C3, WaveShare ESP32S3 Zero, ESP32-WROOM tanpa merek dengan OLED, Orange Pi Zero W, dan Raspberry Pi Zero W, satu-satunya yang berjalan stabil dalam jangka panjang, sekarang sekitar sebulan, hanyalah XIAO ESP32C3/S3; saya curiga ini mungkin masalah daya
    Keluarga ESP32 bisa sensitif terhadap fluktuasi tegangan saat transmisi, jadi saya sangat menyarankan menambahkan kapasitor besar pada rail daya
    Baik RPi maupun ESP bisa sensitif terhadap adaptor daya, kabel, dan panjang kabel, dan kartu SD pada RPi mudah rusak akibat pemutusan daya mendadak
    Meski begitu, semuanya seharusnya bisa bertahan lebih dari sebulan, dan Pi serta ESP saya berjalan berbulan-bulan
    Saya penasaran dengan hasilnya jika kapasitor yang lebih besar dipasang pada ESP32 atau Pi lain

    • Kemungkinan besar ini bukan masalah stabilitas platform ESP32 itu sendiri, melainkan masalah pada cara saya memakainya
      ESP32 digunakan sangat luas, jadi kemungkinan penyebabnya adalah ESP32 dari produsen tak dikenal yang pertama saya beli tidak mampu bertahan lama
      Setelah beralih ke produk dari produsen yang benar, masalahnya teratasi dan ESP32 berjalan baik
      Raspberry Pi pada praktiknya hampir tidak bekerja, karena saya membuat pekerjaan yang seharusnya hanya perlu pemindaian Bluetooth dan pemanggilan HTTP menjadi terlalu rumit dan berusaha mengelola terlalu banyak hal
      Saya memang memberi 5V 1A langsung dari stopkontak ke USB-C, jadi rasanya bukan masalah daya, tetapi XIAO ESP32-S3 juga sesekali bermasalah, dan setahu saya inti XTensa memakai daya lebih besar daripada ESP32-C3 berbasis RISC-V, jadi mungkin perlu diperiksa
    • Dalam Home Automation, beberapa ESP32 menangani tugas infrastruktur inti dan sudah berjalan tanpa masalah selama sekitar 1 tahun
      Sesekali saya memperbaruinya dengan ESPHome, tetapi tidak ada masalah khusus
      Sebagian menjalankan beberapa tugas sekaligus; misalnya, salah satunya adalah proxy Bluetooth untuk home office sekaligus mengendalikan light strip yang dipasang mengikuti papan dinding Skadis
      Saya memakai produk merek acak yang dibeli dari perusahaan Amazon bernama “AZDelivery”, dan tidak melakukan penanganan khusus apa pun
      Saya menaruhnya dalam casing cetak 3D, dan biasanya menghubungkannya ke adaptor minimal 5V/1A dengan kabel pendek, umumnya kurang dari 30 cm
    • Di RPi, saya sangat suka memakai Alpine untuk mengurangi penulisan ke kartu SD
      Data hanya disimpan ke disk saat menjalankan lbu commit -d, dan secara default sistem boot ke semacam tempfs
  • Karena ini proyek mahasiswa di universitas dan sampai tingkat tertentu mencakup pelacakan manusia, jika ini penelitian maka ini kesempatan bagus untuk bertanya kepada profesor tentang prosedur penelitian yang melibatkan subjek manusia apa yang diperlukan
    Bertanya kepada profesor mungkin lebih mudah daripada ke IRB universitas
    IRB bisa saja menolak berdiskusi dengan alasan itu bukan yurisdiksi mereka, atau bersikap waspada karena hal ini tidak dibicarakan lebih awal
    Kebijakan privasi dan keamanan dari IT kampus juga bisa berlaku
    Situs web umum, aplikasi, dan perangkat IoT memang sering melanggar privasi orang jauh lebih parah, tetapi universitas kadang punya tujuan untuk menjadi lebih baik daripada dunia luar

    • Justru hal itu sedang saya bicarakan dengan profesor
      Saya tidak memasukkannya ke teks utama karena bisa saja tidak berhasil
    • Saya penasaran aturan apa yang berlaku untuk hal seperti beacon pelacakan
      Beacon disiarkan, dan kemungkinan besar dikumpulkan tanpa persetujuan kita di hampir semua tempat yang kita kunjungi
      Rumah saya berada di persimpangan jalan, jadi banyak perangkat Bluetooth di sekitar sering berkumpul; saya pernah berpikir memasang pelacak BLE murni untuk iseng guna melihat apa yang bisa dikumpulkan dan apa yang bisa dipelajari dari datanya
      Misalnya, saya yakin ada korelasi antara memburuknya kualitas udara di dalam rumah saya dan datangnya perangkat Bluetooth ke area tersebut
    • Sayangnya, orang sering berbohong kepada IRB
  • Kalimat “dalam nerd snipe seperti ini, menjaga momentum itu sangat penting” terasa lucu
    Otak nerd saya juga sudah berkali-kali membujuk saya mengeluarkan uang dengan logika yang sama

    • Lucu, tapi juga benar
      Jelas ada masa ketika saya lebih ingin mengerjakan proyek, dan khususnya pada musim dingin saya lebih banyak mengerjakan proyek elektronik sekaligus lebih banyak bermain game
      “Musim” game saya juga dimulai lagi minggu lalu
      Perubahan besar dari “apa yang ingin saya lakukan hari ini?” menjadi “apa yang sedang ingin saya lakukan musim ini dan punya waktu untuk itu?” banyak dipengaruhi oleh bertambahnya usia dan punya anak, tetapi jeda antara munculnya kemauan dan waktu untuk mengerjakan proyek seperti ini begitu besar sehingga jika momentumnya hilang, saya mungkin baru kembali setahun kemudian atau bahkan tidak pernah kembali
      Ada satu proyek elektronik yang saya mulai setidaknya 10 tahun lalu; saya sudah menghabiskan cukup banyak uang untuknya dan masih keras kepala berkata akan menyelesaikannya suatu hari nanti, sampai-sampai proyek itu jadi terkenal buruk di keluarga saya
  • Jam alarm saya terdiri dari ESP32, susunan LED yang cukup besar, buzzer, dan sensor PIR
    Ia tidak menampilkan waktu; hanya memberi tahu lewat buzzer dan kedipan, lalu perlahan menerangi ruangan, atau pada malam hari membuatnya perlahan gelap setelah semua lampu mati dan sejumlah waktu berlalu
    Keuntungan tambahan yang baru saya sadari kemudian adalah bahkan ketika AP tidak berada di antara saya dan ESP, tubuh saya memantulkan RF dengan cukup baik sehingga hanya dari log RSSI saya bisa tahu bukan hanya kapan saya berada di tempat tidur, tetapi juga kapan saya berganti posisi pada malam hari
    https://imgur.com/a/VixOlu5
    Bertentangan dengan peringatannya, tidak ada konten sensual
    Yang hijau di tengah adalah RSSI, yang kuning di bawah adalah sensor PIR, dan bagian atas adalah gabungan data Mi Band 3 serta anotasi waktu saya berada di tempat tidur
    Memang benar saya membaca berita cukup lama sebelum tidur dan sebelum bangun

    • Saya penasaran seperti apa stack untuk pengumpulan dan visualisasi datanya
    • Saya juga ingin melihat foto konfigurasi jam alarm yang disebutkan tadi
  • Saya penasaran bagaimana orang merapikan proyek ESP32 agar tampak seperti produk
    Bukan soal produksi massal, maksud saya ingin membuatnya jadi perangkat mandiri alih-alih papan dengan kabel mencuat ke mana-mana
    Banyak halaman hanya menampilkan papan telanjang, tetapi di dunia nyata itu harus dikemas
    Kalau orang seperti saya yang lebih berlatar belakang software, kemungkinan lebih suka membayar sedikit lebih mahal demi bentuk yang rapi daripada mengutak-atik semuanya sendiri

    • Kalau mahir pertukangan kayu, pakai kayu saja
      Kalau punya printer 3D, tinggal buat cetakan 3D
      Kalau lebih ke akrilik, potong bentuknya dengan laser cutter dan bor beberapa lubang, jadilah kotak
      Kalau tidak punya apa-apa dan hanya ingin kotak paling minimal, bisa pakai Altoids Tin sekitar 25 dolar untuk 12 buah; buang saja mint yang tidak berguna di dalamnya lalu masukkan proyek Anda
      Kalau ingin sesuatu yang sedikit lebih baik daripada kaleng Altoids, beli saja Hammond Enclosure
      (https://www.hammfg.com/electronics/small-case)
      Kalau saya, mungkin saya akan membungkusnya dengan electrical tape lalu melapisinya lagi dengan sesuatu seperti duct tape, lalu mewarnainya dengan spidol permanen
    • Ada banyak perusahaan yang membuat enclosure untuk perangkat elektronik, termasuk yang tahan air
      Biasanya ada beberapa flange yang sudah dibor sebelumnya supaya papan bisa disekrup, dan lubang eksternal untuk input/output bisa Anda bor sendiri sesuai kebutuhan
      Beberapa produsen antara lain berikut ini, dan kalau Anda sudah membeli development board atau komponen lain, biasanya juga bisa menemukannya di adafruit atau digikey supaya hemat ongkos kirim
      https://www.hammfg.com/
      https://www.budind.com/
      http://takachi-enclosure.com/
      https://www.adafruit.com/product/903
    • Pilihannya banyak
      Sebagian besar proyek yang Anda lihat memang tidak dijadikan produk
      Itu proyek sekali pakai ala hacker; bagus kalau orang lain merasa berguna, tetapi itu bukan tujuannya, jadi tidak perlu packaging, dan kadang ya cuma didorong masuk ke kotak begitu saja
      Kalau ingin sesuatu yang terlihat lebih bagus, Anda perlu meminta seseorang mendesain casing
      Orang itu bisa jadi diri Anda sendiri
      ESP32 dirancang agar mudah dimasukkan ke produk sendiri, jadi alurnya adalah merancang PCB dan casing agar saling cocok, lalu membeli chip ESP32 dalam jumlah besar dan merakitnya ke papan
      Papan yang dibeli untuk prototipe secara resmi hanyalah reference board, bukan sesuatu yang memang diharapkan untuk dikirim sebagai produk akhir, tetapi dalam praktiknya sering juga papan itu dikirim apa adanya
      Karena ukurannya kecil, murah, dan ada orang lain yang sudah mengerjakan desain papan yang sulit itu
    • Suruh saja seorang “desainer produk” merancang casingnya
      Kalau produknya cukup standar, tahap ini kadang bisa dilewati
      Setelah itu, hubungi pabrikan lokal dan pabrikan di pasar yang lebih besar, lalu minta sampel dan cek apakah semuanya berfungsi dengan benar
      Kalau cocok, mulai pesan dalam jumlah kecil
      Sebaiknya cari ahli yang bisa merancang atau membantu prosedur jaminan kualitas agar pabrikan tidak mengirim 20% barang cacat
      Masukkan ke toko fisik atau buat situs web, lalu jual di portal seperti Amazon
      Bicara dengan pelanggan, dengarkan masukan, dan perbaiki setiap tahap sedikit demi sedikit
      Kedengarannya mungkin menakutkan, tetapi saat bekerja di startup smart home kecil saya belajar bahwa di Shenzhen sudah ada seluruh industri yang siap membantu pendiri mewujudkan produk impian mereka, dan Anda bisa mengontrak orang untuk membantu di setiap tahap
      Berdasarkan pengalaman kami, layanan dari pihak China jauh lebih baik, lebih murah, dan lebih cepat daripada proposal dari Eropa
    • Saya memasang papan ke tutup wadah takeout dengan nylon standoff
      Sisa wadah takeout itu menjadi enclosure-nya
      Lubang untuk kabel masuk dan keluar dibor pada wadahnya
      Kalau ingin sedikit lebih bagus, saya pakai wadah Tupperware
  • Saya tidak sepenuhnya mengikuti persoalan mempertahankan data di memori, dan sepertinya sekarang sudah teratasi, tetapi untuk memperkirakan jumlah beacon ID unik, sepertinya bisa memakai algoritma estimasi kardinalitas sehingga cukup dengan ruang konstan
    https://en.wikipedia.org/wiki/Count-distinct_problem

    • Poin yang bagus
      Baru-baru ini saya ingin membawanya ke pertandingan sepak bola untuk stress test pada kerumunan terbesar yang paling mudah dijangkau
      Kalau bisa memindai ribuan tanpa masalah, saya akan menganggapnya cukup tangguh
      Tetap saja, meneliti struktur data estimasi berukuran tetap sepertinya akan sangat menyenangkan, dan pasti akan saya lihat
      Salah satu hal yang paling saya sukai dari proyek ini adalah saya bisa menggali konsep ilmu komputer yang lebih dalam dan menarik tanpa tekanan untuk selalu memilih solusi termudah
      Saya bukan sedang mengembangkan solusi yang harus dikirim secepat mungkin, melainkan sedang menggaruk rasa gatal saya sendiri
  • Bagian yang mengatakan, “menangani Linux Bluetooth dengan pendekatan headless itu sangat menyakitkan. Binding DBus memerlukan sihir cross-compilation, dan bahkan Cross pun tidak bisa menyelesaikannya” benar-benar sama dengan pengalaman saya
    Karena saya sedang mengerjakan hal lain, pada akhirnya saya memutuskan menaruh kedua perangkat di jaringan Wi‑Fi yang sama dan memindai pi.local
    Namun saya tetap ingin tahu bagaimana crate lain bekerja ketika tanpa library yang diperlukan build tidak menolak, tetapi malah crash saat runtime

  • Seharusnya dijelaskan dengan jelas bahwa ini untuk BLE
    Awalnya saya kira ini berbasis detak jantung, panas, akses keluar-masuk, atau sesuatu yang lebih fisik
    Selain itu, sensitivitas penerimaan ESP32 sekitar -94 dBm, yang tergolong cukup buruk, sementara kebanyakan perangkat mencapai -100, -102, bahkan -104 dBm
    Selisih ini cukup besar

  • ESPresense adalah proyek yang menarik dan juga berjalan di ESP32-C3
    Desainnya lebih cocok untuk mengetahui seseorang berada di ruangan yang mana

    1. https://espresense.com/