Kikad
The BMP_180 is a temperature and pressure sensor manufactured by Bosh. My Goal was to write my own library using I2C in order to operate the device and access temperatures in my building. After doing this, My goal was to use the onboard WIFI in order to send POST requests to my website so I could monitor temperatures wherever I was through my website.
Vscode + Platformio
UW Orbital is a student design team at the University of Waterloo participating in the Canadian Satellite Design Challenge (CSDC) - a competition that involves a dozen universities from across Canada and runs every two years. Teams design a 3U CubeSats with unique missions and payloads, and attempt to pass launch readiness evaluations such as vibration testing. The competition offers to fund the launch costs for the winning team.
Starting this project, I learned the basics of SPI communication (MISO, MOSI, SS,CLK) and wrote basic functions in order to power on the device and initate readings. Along the way, I used both a logic analyser and oscilliscope to debug my program. Next I worked on implementing more functionality of the adxl345 such as changing data rate, tap detection, and interrupt handling. Next, I hope to convert the project to freeRTOS and C in order to more easily handle interrupts and bring my code closer to code seen in production.
Vscode + Platformio
The need for this project started after I hosted my own local music server and was able to start playing music from my phone, but needed to physically turn on the reciever and switch inputs. I figured if I could salvage an IR led from a previous remote and connect it to an esp32 using bluetooth or wifi, I could control the reciever remotely.
I used an IR led from an unused remote and connected it to my oscilliscope in order to view the data being sent from the reciver's remote for various commands such as ON, INPUT ETC. I then measured the lengths of these pulses and wrote a c++ program to mimmick this behaviour. On testing this, it did not work!. At first, I attributed this to the strength of the IR led, so I reduced it's resistance hoping for an improvement. However, this yeilded no success. Upon further research, I discovered my problem was twofold. First, my timing for what should be interpereted as a 1 and 0 were slightly off, and second the signal used a 40khz carrier wave. I fixed the first by simply adjusting the timing, and the second I wrote a function to oscillate a signal at 40khz when it was specified to be on. After testing this out, it worked!
My process for sending bits to the IR led was rudimentary so I improved it by using bitwise operations on a 16bit word of data in order to send a bit, then shift the remaining bits until none were left. Next, I researched the bluetooth capabilities of the ESP32 and BluetoothSerial library that would work. I then downloaded a serial terminal on my phone and was able to send commands to the receiver through character input over Bluetooth!
Vscode + Platformio
I often have many manual applications and keypresses I want to accomplish when I start my pc, or various programs. I decided to create a hardware device that would function as a keyboard and would have buttons that could be programmed to execute certain keypresses or strings of keypresses.
To start, I discovered I had a CP2102 USB to UART bridge already in my possesion so I connected this to the UART2 port of the ESP32. I then wrote basic freeRTOS functionality in order to detect and send button presses to a queue. On a button being pressed, this would trigger the serial output from the UART port, displaying a button has been pressed. Upon further reasearch I realized that I need this device to appear to the computer as a HID (Human Interface Device) in order for it to function as a keyboard. So, I plan on upgrading to a CP2110 which has this feature and should mean button interrupts can trigger HID events, such as keyboard presses, as described in the OSdev wiki
Vscode + Platformio