Browsed by
Category: Uncategorized

Cypress PSoC 4 BLE Find Me Demo

Cypress PSoC 4 BLE Find Me Demo

Another day, another Bluetooth Low Energy (BLE) SoC. This one is by Cypress (not Hill, but now it’s Infineon). The PSoC 4 BLE SoC is the micro that is featured on the CY8CKIT-042-BLE-A kit.

I recently started working with other Cypress PSoC micro-controllers, so for me trying out the BLE variant isn’t too much of a stretch. It does seem that the integrated Bluetooth SoC market is getting more crowded every quarter, and Infineon is positioning against a couple other major vendors.

What PSoC offers with their BLE solution is a very powerful and customizable programmable hardware block that enables system designers to easily configure peripherals and custom component and logic blocks at the hardware level with minimum firmware hand-holding.

This CY8CKIT-042-BLE-A evaluation board, like many other modern kits, include Arduino Uno based expansion headers to allow for quick prototyping with custom expansion shields. Don’t forget to check out the JoeLABs Expansion Shield Special to help you kickstart your next project!

Cypress/Infineon has a PSoC 4 BLE 101 series of videos that are helpful towards understanding and getting started quickly with the platform.

Be well lit on your video calls

Be well lit on your video calls

Disclaimer: As an Amazon Associate I earn from qualifying purchases
Photo by Sam McGhee on Unsplash

In the era of video conference calls, practically every work desk has become a mini-studio setup equipped with web cameras and headsets interfaced with an array of collaborative platforms. Lighting, despite being just as important to your presence presentation, often tends to be an after-thought as evidenced by silhouetted faces and harsh shadows among your meeting’s gallery view.

Of course, with physical space permitting you could look into some Softbox Lighting Kits to Zoom your way to the Most Photogenic Teams Player. Indeed I have found such lighting kits fun to use and are of great value, but understandably might not be appropriate for a smaller dedicated workspace.

At minimum for overall reduced eye strain is to have a desk lamp to illuminate your general working area, as well as doubling as a light source for your video feed.

I tend to favor the articulating arm kind of lamps as they can be positioned downward to a specific area of interest to aid in minute tasks like PCB assembly or focused reading. OR to borrow from photography practices, can be aimed towards the ceiling to produce a soft bounced light effect. The gentler, well defused lighting avoids that “deer in the headlights” look from having a major light source pointed straight at you.

A more directed video light can be used to fill in the shadows that naturally occur on your face while on camera. This compact, yet versatile Neewer kit has been my battle station’s MVP.

This video light is USB (USB-A) powered and with its minimal power draw should work with practically any computer or mains USB port/charger. The included tripod is height and tilt adjustable.

Best of all, the light output is dimmable via an in-line controller to let you dial in the fill light to match ambient conditions.

Unless you’re going for that streaming gamer vibe, or just going to use a software superimposed background effect, you won’t want to forget about background lighting if your room is dim during your conference. An overhead light can be switched on if needed, or positioning a floor lamp in a corner to help.

Cheers to improving your presented image while reporting out your project progress and status in the morning, and showing off the kids brightly in the evening family call.

Virtualize your Virtual Meetings

Virtualize your Virtual Meetings

Q1-2020 has featured audio-video conferences in the spotlight. While the benefits and value of remote collaboration is greatly acknowledged and appreciated, there are some privacy and security concerns that come along for the ride.

Photo by Brooke Cagle on Unsplash

What video conference/meeting vendors do with account access and account data once on their platform is really up to their practices. However, for concerns regarding what the vendor client tools might do in regards to residual background processes or adding additional unwanted software packages, you have some mitigation options through containment.

  1. Dedicate a computer for conference meetings.
    • Vendor clients have no access to local data on your primary workstation due to air-gap.
    • Yet another computer to own and maintain. Won’t allow you to directly share content you might need on your primary workstation, unless you go through setting up network file sharing which is not without its own concerns.
  2. Dual-Boot: One computer but two disks/partitions. Similar pros/cons as dedicated computer.
  3. System Virtualization.
    • Can run in parallel within your workstation in it’s own container. No to (relatively) low hardware cost. Can share content with your host workstation through VM filesharing.
    • Your Performance May Vary. Definitely will want to do some preflight testing and have a backup ready to go should system fail to perform adequately during a call.

For our discussion, we’ll focus on virtualization. Before we continue…

THE DISCLAIMER: The contents of this article are intended for your personal use on your privately owned computing tools. Please adhere to your company’s policies and usage specifications for software, subscriptions, and computer tools provided to you for company use. DO NOT use this guide to circumvent company IT policy. Don’t blame me if Nick Burns your Company’s Computer Guy becomes angry and sarcastic with you. Other usual at-your-own-risk, no warranty, no liability disclaimers also apply.

Oracle Virtualbox is a free virtualization software that runs on Windows, Mac, and Linux hosts. It allows you to setup a virtual computing environment and allocate CPU, Memory, Video, storage, USB, file, etc resources to expose to the virtual …box.

For “Guests”, that is, the operating system running inside your container, Virtualbox supports several systems. However, Linux is free and easily accessible. I suggest Linux Mint.

A note on versions: The procedure in this article uses a Linux Mint 18.3 XFCE Host, using VirtualBox 5.2, and running a Linux Mint 18.3 XFCE guest. For whatever reason, the GUI presented in VirtualBox 6+ doesn’t play well with my 4k/UHD display, and Mint 19.3 apparently needs a Video Controller option that is only presented in VirtualBox 6+ to work correctly.

Download and install the VirtualBox software, and the associated extensions package. Then download the Linux ISO of your choice.

In VirtualBox, press “New” to create a new system profile.

Give your new system a name, set the type to Linux, and select the closest “Version”, then press Next.

Select “Create a virtual disk now” and press Create

Be sure that VDI is selected, and press Next.

I’ve only ever used “Fixed Size” because I have the Need for Speed

For your ‘physical disk’, give it a name/location, and size it just a little more than the minimum system requirement.

Wait for the virtual disk to be created. If the disk is created on an SSD, it won’t take long.

In the left panel of the VirtualBox utility, right click on your newly created system and select “Settings…”

Select “System” in the left pane, and within the “Motherboard” tab, give your virtual system at least 4 GB (adjust more or less, now or later, depending on the performance you are achieving, or available physical memory).

If you don’t have that much physical memory to allocate, now might be a good time to fill in that extra RAM slot on your computer, or swap out to higher density modules.

Within the Processor tab, give it as many ‘processors’ you have in the green range, again: more or less depending on performance. This is an allocation setting, meaning the VM will use up-to the specified value.

Select “Display” in the left pane, and within the “Screen” tab, tune the Video Memory if needed.

The minimum green value might actually work just fine.

Go to the “Storage” pane selection, select the virtual optical device, then expend the menu to choose a disc image.

Navigate to the Linux ISO you downloaded earlier. Then Press OK

Just showing the USB Controller setting here. I think it defaults to USB 2.0 (EHCI). If your webcam is choppy within the VM, try changing this to USB 3.0, if supported on your computer.

If your host machine is Linux and you can’t assign USB devices to your VM, be sure that your user account is added to the ‘vboxusers’ group.

Close out the settings dialog. Press Start to launch the VM. It should boot up with a “BIOS”, then boot from your Linux ISO.

Press Enter on the keyboard to go. You may to click in the VM window first. –To free the keyboard/mouse from the VM if it locks inside the VM, press the right CTRL key on your keyboard.

The LInux Live CD image should complete booting monetarily into a GUI system. Let’s test that your webcam works.

Open a terminal window, and type in

sudo apt-get install cheese

then press enter

From the VirtualBox menu bar, go to Devices->Webcams and select your webcam to attach to your VM.

Launch the Cheese from the Applications Menu

Verify that your webcam works. If it’s choppy, shut down the VM and try changing the USB setting from earlier, and try it again.

Close out the Cheese utility.

While we could just go conferencing with the live image load, you’ll have to reinstall application with every instance. Instead, let’s go ahead and install the OS to our virtual disk. Couple click on the Install icon on the desktop inside the VM. The Installer will launch.

Select your language

Check the box to install third-party software.

From here, just go with the defaults and press Next/Continue to install the system. We’re only using this VM for conf calls so this is good enough configuration.

When the installer finishes, it’ll prompt you to reboot. Go ahead. Press enter when it says to remove the boot image, and the VM will restart into the installed system.

Once rebooted into the installed system, pull down the “Devices” menu from the VirtualBox menu bar and select “Insert Guest Additions CD image…”

Double-click on the “Home” icon to open the file browser, select the mounted CD image. Right click in the file area and select “Open in Terminal”

In the terminal, enter

sudo ./

Follow the prompts to install the Guest Additions package. When finished, restart the VM.

With the VM restarted, you should be able to resize the VM by resizing the running Virtualbox window, and/or setting the screen size from the menu.

Its generally a good idea to run system updates right after a new install. Double click on the blue (i) shield in the lower right notification area to bring up the update manager. Follow the prompts to update the utility and system packages.

From here, you can certainly use the installed Firefox browser to access web resources, download and install Chrome if you wish, and access conference via web browser.

For WebEx, the limited testing I did with my account indicates positive potential.

For Zoom (yea, yes I know…), well I had some stability issues running within the browser within the VM earlier and ended up first resorting to using browser on the Host side (real) computer. Ultimately I ended up running their desktop client so I could see all videos (gallery view) at the same time…then uninstalled it.

I did install the Zoom application within the VM for next Zoom meeting. You can find the download on their website.

Once installed and launched, you get option to join meeting.

Virtualization is quite nifty for containerizing not only for running dodgy conference applications, but its also good for multi-platform testing and computer consolidation. VirtualBox is certainly not the only player in VMs (see VMware and Parallels) and you have your choices in Host and Guest systems.

New to full-time remote work? Mind these two words.

New to full-time remote work? Mind these two words.

If you’re reading this in March of 2020, you might be working remotely if your type of work permits such work arrangement. Generally the “work from home” conjurers up the image of sitting in bed, on the living room sofa, or at the kitchen counter. For those who work from home on an incidental basis (say, just to care for family illness), opening up the laptop and punching away at the dining table between clearing the dishes is passable for the limited time.

For remote work on a regular basis, it is in your and your productivity’s interest to setup a dedicated workspace.

While nice, a spare bedroom turned into a home office is not necessary. And even so, it’s not the bulletproof distraction-free environment as Professor Robert Kelly can confirm. Just a place that you can set aside for ‘exclusive work use’ is sufficient if it can contain the tools and instruments you need for being online, and that space can be left alone when not working.

Generally a proper desk or an available table positioned at a slightly less trafficked part of the residence will do. (The mahogany table in the dining room that’s only used on Thanksgiving and Christmas would qualify). Adding a low bookshelf can add a virtual wall to enclose an otherwise open space if necessary.

Photo by Kari Shea on Unsplash

The two immediate benefits of a dedicated workspace is

  1. It presents an opportunity for physical separation when working/not-working.
  2. The bench setup is not shuffled around due to other normal home events such as meal times.

The physical separation is important as its really easy to be distracted from work, or not fully unplugging after quitting time. In addition, you being in the dedicated workspace signals others in the home that “you’re at work”.

Often is the case that work projects don’t finish at end-of-business-day and continue the next work day. While you’ll prudently power-off instruments and stow away potentially hazardous items while off of work, the dedicated workspace saves you from daily full setup and tear-down so you don’t have to start every morning unpacking the office station.

If you’d like some ideas: here’s my current battle station, which happens to be in a corner of an otherwise unused guest bedroom:

It’s not always this tidy…

–As you can guess from the nature of this site, my work involves (small) electronics, firmware, and software.

If you’re tight on space, or just need more room, you might consider a closet office such as my other setup when I used to run two stations.

Adoption and office-culture acceptance of remote work has historically varied but trended upwards in past years. Recent global events have pushed the remote work arrangement to the forefront, and various research has indicated mutual benefits for companies and staff.

As working remotely is now in the spotlight, lets join together show the world that as the sh!t. hits the fan, we can still get sh!t done!

For more tips on successfully working from home, check out:

Placeholder First Post

Placeholder First Post

Hello!  Welcome to Learn At Joe’s.

At the moment there’s nothing here yet, but tentatively over time I hope to have easily accessible primers posted covering a range of topics including:

  • Basic Electronics
  • Microcontrollers
  • Software Development for embedded systems, web design, mobile and desktop platforms.

The Learn At Joe’s objective is not to become a formal educational resource (there’s plenty already out there), but rather to inspire curious readers with seeds of knowledge that may drive interest for further study.