{"id":23139066,"url":"https://github.com/circuit/circuitkiosk","last_synced_at":"2026-05-14T21:06:28.748Z","repository":{"id":37217727,"uuid":"159086393","full_name":"circuit/circuitKiosk","owner":"circuit","description":"Build a communications device on a Raspberry PI using Circuit SDK","archived":false,"fork":false,"pushed_at":"2022-12-08T06:29:30.000Z","size":720,"stargazers_count":2,"open_issues_count":11,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-10-25T01:44:09.717Z","etag":null,"topics":["circuit","circuit-sdk","raspberry-pi","raspian"],"latest_commit_sha":null,"homepage":"https://medium.com/@wdmartins/building-a-circuit-communication-device-using-raspberry-pi-716a30bc60a7","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/circuit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-11-25T23:58:54.000Z","updated_at":"2025-08-25T16:44:47.000Z","dependencies_parsed_at":"2023-01-24T18:45:54.371Z","dependency_job_id":null,"html_url":"https://github.com/circuit/circuitKiosk","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/circuit/circuitKiosk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/circuit%2FcircuitKiosk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/circuit%2FcircuitKiosk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/circuit%2FcircuitKiosk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/circuit%2FcircuitKiosk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/circuit","download_url":"https://codeload.github.com/circuit/circuitKiosk/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/circuit%2FcircuitKiosk/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33043298,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T13:14:54.681Z","status":"online","status_checked_at":"2026-05-14T02:00:06.663Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["circuit","circuit-sdk","raspberry-pi","raspian"],"created_at":"2024-12-17T13:13:12.517Z","updated_at":"2026-05-14T21:06:28.729Z","avatar_url":"https://github.com/circuit.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Circuit Kiosk\r\n\r\nCircuit Kiosk is a [Circuit](https://www.circuit.com/) application that showcases the portability of the Circuit SDK and the unlimited potential of combining inexpensive hardware with a powerful platform to build all kind of communication devices.\r\nThis application allows offices without human receptionist to greet visitors and communicate them with people inside the office using video. People inside the office will then be able to unlock the door.\r\nLearn more and join the [Circuit Development Community](https://circuit.github.io/)\r\n\r\n## What you will need\r\n* A Raspberry PI (RPI 3B was used here)\r\n* A micro SD card (16GB preferred)\r\n* A 7\" touch screen display (Alternatively a HDMI Monitor and Cable, and Mouse)\r\n* A USB Keyboard (Only needed for initial setup)\r\n* A set of speakers and a microphone\r\n* The Raspberry camera module (A USB Webcam can alternatively be used)\r\n* A protoboard and some electronic components which are listed in another section down below\r\n\r\n## Setting up your Raspberry PI\r\n\r\n### Install Raspbian on the micro SD card\r\nThe easiest way is to flash the micro SD card with the Raspian Stretch with desktop and recommended software.\r\nThe ZIP file can be download from [raspberry.org](https://www.raspberrypi.org/downloads/raspbian/)\r\nI used Balena Etcher to flash the micro SD card. You can download Etcher for your OS from [balena.io](https://www.balena.io/etcher/)\r\n\r\nAlternatively you may installed Raspian using NOOBS following instructions on [Raspberry official site](https://projects.raspberrypi.org/en/projects/noobs-install)\r\n\r\n### Continue setup...\r\nPlug the keyboard to a USB port. Insert the micro SD card into the Raspberry and connect the 7\" touch screen cable. Power them both and follow instructions on the screen. (If you do not have a Raspberry touch screen just use an HDMI monitor, and USB mouse).\r\nFollow instructions to setup the Raspberry and update software.\r\n\r\n### Enable Camera (if RPI camera module will be installed), SSH and optionally VNC\r\nNavigate to Main Menu-\u003ePreferences-\u003eRaspberry PI Configuration-\u003eInterfaces and enable Camera, SSH, VNC\r\n\r\nNow you can SSH from your own computer to the RPI.\r\n\r\nNow enable the camera module to work with getUserMedia\r\n \r\n    echo 'options bcm2835-v4l2 gst_v4l2src_is_broken=1' | sudo tee -a /etc/modprobe.d/bcm2835-v4l2.conf\r\n    echo 'bcm2835-v4l2' | sudo tee -a /etc/modules-load.d/modules.conf\r\n\r\n### Get the latest updates\r\n\r\nOn your Raspberry console:\r\n\r\n    sudo apt-get update  \r\n\r\n## Share Raspberry Pi file system with windows using samba (Optional)\r\n\r\nFollow instructions [here](https://raspberrypihq.com/how-to-share-a-folder-with-a-windows-computer-from-a-raspberry-pi/)\r\n\r\n## Install VNC software (Optional)\r\n\r\nOn your Raspberry console:\r\n\r\n    sudo apt-get install realvnc-vnc-server realvnc-vnc-viewer\r\n\r\n### Configure and Test Audio Devices\r\n\r\nOn your Raspberry console:\r\n    \r\n1.  Find your recording and playback devices  \r\n  *  Locate your microphone in the list of capture hardware devices. Write down the card number and device number.  \r\n  \r\n         arecord -l  \r\n\r\n  *  Locate your speaker in the list of playback hardware devices. Write down the card number and device number. Note that the 3.5mm-jack is typically labeled Analog or bcm2835 ALSA (not bcm2835 IEC958/HDMI).  \r\n   \r\n         aplay -l  \r\n\r\n2.  Create a new file named .asoundrc in the home directory (/home/pi). Make sure it has the right slave definitions for microphone and speaker; use the configuration below but replace \u003ccard number\u003e and \u003cdevice number\u003e with the numbers you wrote down in the previous step. Do this for both pcm.mic and pcm.speaker.  \r\n    \r\n        pcm.!default {\r\n          type asym\r\n          capture.pcm \"mic\"\r\n          playback.pcm \"speaker\"\r\n        }\r\n        pcm.mic {\r\n          type plug\r\n          slave {\r\n            pcm \"hw:\u003ccard number\u003e,\u003cdevice number\u003e\"\r\n          }\r\n        }\r\n        pcm.speaker {\r\n          type plug\r\n          slave {\r\n            pcm \"hw:\u003ccard number\u003e,\u003cdevice number\u003e\"\r\n          }\r\n        }\r\n    \r\n3.  Verify that recording and playback work:  \r\n\r\n  *  Adjust playback volume  \r\n  \r\n         alsamixer\r\n\r\nYou may also adjust the recording level runnig alsamixer with the mic card number\r\n\r\n         alsamixer -c \u003cCard Number\u003e\r\n    \r\nPress the up and down arrow to set the the desired levels\r\n   \r\n  *  Play test sound. Press Ctrl-C when done. If you do not hear anything check your speaker or headset connections.\r\n  \r\n         speaker-test -t wav\r\n    \r\n  If you still do not hear anything and you have an HDMI monitor connected you need to force the audio output to your speakers or headset. Do the following:\r\n    \r\n       sudo raspi-config\r\n    \r\n  Go to \"Advance Options-\u003e Audio\" and select \"Force 3.5mm ('headphone') jack\r\n  \r\n  *  Record some audio\r\n  \r\n         arecord --format=S16_LE --duration=5 --rate=16000 --file-type=raw out.raw\r\n      \r\n  *  Check the recording by replaying it\r\n  \r\n         aplay --format=S16_LE --rate=16000 out.raw\r\n      \r\n## Install node and npm\r\nWe need a later version than the one in the raspian repo. So we will download from nodejs.org\r\n\r\n         wget https://nodejs.org/dist/v11.6.0/node-v11.6.0-linux-armv6l.tar.xz\r\n         tar -xzf node-v11.6.0-linux-armv6l.tar.xz\r\n         cd node-v11.6.0-linux-armv6l\r\n         sudo cp -R * /usr/local\r\n\r\nVerify everything is installed OK\r\n\r\n          node -v\r\n          npm -v\r\n\r\n## Install and build bcm2835 library\r\nThis C library for Raspberry Pi provides access to GPIO and other IO functions on the Broadcom BCM 2835 chip.\r\n\r\n         wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.58.tar.gz\r\n         tar zxvf bcm2835-1.58.tar.gz\r\n         cd bcm2835-1.xx\r\n         ./configure\r\n         make\r\n         sudo make check\r\n         sudo make install\r\n\r\n## Setup the application\r\n### Clone this repository, install and rebuild for electron\r\n        git clone https://github.com/wdmartins/circuitKiosk.git\r\n        npm install\r\n\r\n### Always run electron-rebuild after npm install\r\n    ./node_modules/.bin/electron-rebuild .\r\nThis may take a long time the first time.\r\n\r\nNote: If rgcp fails to compile, install gcc/g++ version 7. Check http://lektiondestages.blogspot.com/2013/05/installing-and-switching-gccg-versions.html to see how to have alternative versions of the compiler.\r\n\r\n### [Register an account](https://www.circuit.com/web/developers/registration) on circuitsandbox.net\r\n  \r\n###  [Register a bot](https://circuit.github.io/oauth) on the sandbox (OAuth 2.0 Client Credentials)\r\n  \r\n###  Create the config.json file  \r\n  \r\n          cp config.template.json config.json\r\n  \r\n###  Edit config.json file and complete all fields accordingly\r\n\r\n### (Optional) Use speech-to-text option to search for users\r\n#### Setup GCS\r\nGoogle Cloud Speech API is used to obtain audio transcriptions. Refer to https://cloud.google.com/speech/docs/quickstart\r\nto setup an account, billing and get your application credentials. Then set the path to your credentials JSON file in config.json\r\n\r\n### Install dependencies for Speech Recording (SOX)\r\n    \r\n    sudo apt-get install sox libsox-fmt-all\r\n\r\n\r\n## Build the electronic circuit\r\n\r\nComponents needed:\r\n\r\n* 10 KΩ Resistor (R3)\r\n* 1 KΩ Resistor (R1)\r\n* 220 Ω Resistor (R2)\r\n* NPN Transistor S8050\r\n* LED\r\n* Infrared Motion Sensonr HC SR501\r\n* Higroterm Sensor DHT11\r\n* Active Buzzer (Simulates the door locking mechanism)\r\n\r\n![](schematic.png)\r\n\r\nDisclaimer: An incorrect connection or a defective component may damage your Raspberry PI so always double check connections and components. If using a different sensor, or transistor always check the data sheet and adapt circuit accordingly.\r\n\r\n## Start the application\r\nOpen a terminal:\r\n\r\n    npm run dev  // Run in development mode. Opens up Chrome Console\r\n    npm start // Starts the application is regular sized window\r\n\r\nTo start the application in kiosk mode the following to a ssh file, and execute it.\r\n\r\n    npm run kiosk // Starts the application in kiosk mode. \r\n\r\n### Video Demostration\r\nhttps://youtu.be/6hbeP-hpG6k\r\n\r\n### Medium Article\r\nhttps://medium.com/@wdmartins/building-a-circuit-communication-device-using-raspberry-pi-716a30bc60a7\r\n\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcircuit%2Fcircuitkiosk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcircuit%2Fcircuitkiosk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcircuit%2Fcircuitkiosk/lists"}