[{"content":"","date":"8 October 2025","externalUrl":null,"permalink":"/tags/misc/","section":"Tags","summary":"","title":"Misc","type":"tags"},{"content":"Here are a few smaller projects that I\u0026rsquo;ve worked on over the years.\n2021: Surveybot, a discord bot to track \u0026ldquo;anomalies\u0026rdquo; in Starscape. 2025: MASLAB team 7, aka \u0026ldquo;Ricky and the Rizzlers\u0026rdquo;. I helped design our arm and claws, as well as program some of the autonomouse cube seeking. 2025: The hardware and electronics for a pipetting machine for MIT\u0026rsquo;s Fluids and Health network. 2025: A go-kart drive for MIT\u0026rsquo;s power electronics laboratory (6.222/6.131). This involved designing and building a buck regulator and totem-pole circuit. ","date":"8 October 2025","externalUrl":null,"permalink":"/projects/1748456583000-misc.-projects/","section":"Projects","summary":"","title":"Misc. projects","type":"projects"},{"content":"","date":"8 October 2025","externalUrl":null,"permalink":"/tags/","section":"Tags","summary":"","title":"Tags","type":"tags"},{"content":"Hi! I\u0026rsquo;m Bernard Jin, a prospective 6-5 (Electrical Engineering and Computer Science) major at the Massachusetts Institute of Technology. I am part of the class of 2028. I enjoy working on projects involving electrical engineering, robotics, and hardware design.\nResume\n","date":"26 May 2025","externalUrl":null,"permalink":"/","section":"Bernard Jin's Portfolio","summary":"","title":"Bernard Jin's Portfolio","type":"page"},{"content":"List of all my projects.\n","date":"26 May 2025","externalUrl":null,"permalink":"/projects/","section":"Projects","summary":"","title":"Projects","type":"projects"},{"content":" Github, CAD\nHaving used Arduinos for a while, I wanted to move to something bigger and more industry-standard. As such, the natural next step would be to STMicroelectronics\u0026rsquo; STM32 chips. After playing around with a Nucleo board for a while, I decided to combine my interest in learning about STM32s with my interest in robotics and create an autonomous drone.\nDesign # Electronics # The core of the drone is the Cardinal - a small 30mm x 30mm STM32H562RIT6 based board I designed for this project. For localization and kinematics, I also included a built-in ICM20948 IMU, as well as a BMP390 barometer for altitude measurement. The board has a 2KB EEPROM to store tunable data (such as PID values), as well as a microSD card slot for logging (and hopefully programming in the future). Finally, the board has a USB-C connector with a CP2102N USB to UART bridge, allowing for debugging and programming via USB. On the edges of the board are connectors for various peripherals in case I want to expand upon this board in the future. The Cardinal control board. For communication, I plan to use an Xbee RR Zigbee module due to its range and minimal interface. This will be connected to a dedicated UART port labeled \u0026ldquo;RADIO\u0026rdquo;.\nHardware # As this is my first time making a drone, I decided to use 4\u0026quot; propellers for safety. To be strong yet light, I\u0026rsquo;m using 4 6mm carbon fiber tubes arranged in an \u0026ldquo;X\u0026rdquo; pattern. These tubes have notches carved into them to allow them to overlap in the middle, and are held together by clamps that also act as electronics mounts.\nIn order to make the frame portable, everything is held together by M3 screws. As such, when not in use, it can be easily disassembled to not take up too much space in my dorm room.\nSoftware # Besides just learning how to design a board for STM32, this project is also a deep dive into low-level electronics. My plans for this project are to write everything from the ground up (exclusing what\u0026rsquo;s already available in STM32\u0026rsquo;s HAL). As such, I am currently writing my own ICM20948 driver, and plan to write drivers for the other I2C devices on the board as well.\nGallery # PCB Layout for top and bottom side of Cardinal. ","date":"28 January 2025","externalUrl":null,"permalink":"/projects/1748454348851-drone/","section":"Projects","summary":"","title":"Drone","type":"projects"},{"content":"","date":"28 January 2025","externalUrl":null,"permalink":"/tags/in-progress/","section":"Tags","summary":"","title":"In Progress","type":"tags"},{"content":"","date":"1 June 2024","externalUrl":null,"permalink":"/tags/completed/","section":"Tags","summary":"","title":"Completed","type":"tags"},{"content":" Printer CAD, Hotend CAD\nIn summer 2024, I decided to revisit one of my old projects, except now with the knowledge and experience needed to actually do it right. This, combined with the recent release of the Prusa XL and the retirement of the E3D toolchanger (you will forever be in our hearts) led me to try and design a toolchanging printer of my own.\nDesign # Kinematics # To start off, I used a fairly popular toolchanger design, featuring a CoreXY kinematic system and direct drive extruders. CoreXY meant that docked toolheads didn\u0026rsquo;t need to move, and direct drive allowed for more straightforward and reliable filament paths.\nFor the Z axis, I went with a dual lead-screw design with MGN9H linear rails and blocks. This allowed for a smooth, robust, and precise movement.\nToolchanging # The most difficult part of this projet was tool mounting design. One reason why DIY toolchangers are rare is that repeated mating cycles with the toolhead wears out the connection point. As such, for commercial printers, these parts usually need to be made of hardended steel, making it difficult for someone to make at home. In my design, I tackled this problem by using magnets to attach the toolhead. On both the carriage and the toolhead, magnets were mounted in a circle with alternating polarities. By rotating the magnets on the carriage 60 degrees, pairs of opposing magnets went from attracting each other to repelling each other, or vice versa. With this, the printer can control the attachment of the carriage without any moving parts in contact with each other. While making the printer, I tested many magnet sizes and patterns, eventually settling on 4 12mm neodymium magnets.\nTo prevent the toolhead and carraige from getting misaligned, I designed a radially symmetric \u0026ldquo;sun\u0026rdquo; pattern. This pattern tool advantage of the attracting force of the magnets to automatically align the toolhead and the carriage while minimizing space. Electronics # A quirk of this printer is how many motors it uses. While most printers use 4 (XYZE), this printer uses 8 (2 for X/Y, 2 for Z, 1 for each of the 4 extruders). To handle this many motors, I used the BTT Octopus board, which supports up to 8 motors and 4 hotends. For control, I chose Klipper running on a Raspberry Pi 4 for its power and web interface.\nGallery # ","date":"1 June 2024","externalUrl":null,"permalink":"/projects/1748228026020-toolchanger/","section":"Projects","summary":"","title":"Toolchanger","type":"projects"},{"content":" Poster, Writeup\nIn the summer of 2023, I took part in a JHU ASPIRE internship with the QPS group. My task was to design a D-dot sensor (a type of electric field sensor) to detect hidden powerlines throughout the building they were working in, as well as the parking lot outside. My mentor was Dr. Kevin Claytor.\nTheory # D-dot sensors are electric field sensors that detect changes in the electric displacement field (D-field, hence the name). It does this by having two electrodes - one \u0026ldquo;reference\u0026rdquo; electrode that acts as the sensor\u0026rsquo;s ground, and another placed some distance away. When an electric field is placed between the plates, electrons flow from one electrode to the other, creating a current. The current generated by the applied electric field \\(|E|\\sin(2\\pi f t)\\) (where \\(|E|\\) is the magnitude of the E-field, and \\(f\\) is the frequency) at time \\(t\\) can be found from the following equation: $$ I=2\\pi f \\varepsilon_r \\varepsilon_0 A|E| \\cos (2 \\pi f t) $$ Where \\(A\\) is the area of the electrodes, \\(\\varepsilon_r\\) is the permittivity of the material between the electrodes, and \\(\\varepsilon_0\\) is the permittivity of free space.1\nBy feeding this current into a transimpedance amplifier, we are able to create a voltage from which we may take measurements.\nDesign # Amplifier circuit # To first convert a current into a voltage, I used a resistor placed between the plates of the capacitor. Because the area of the plates were fairly small, we could not expect much current from the plates. This could be solved using a large resistor - however, since the plates and resistor combined made an RC circuit, to preserve responsiveness, I wanted a fairly small time constant. Thus, the resistor cannot be too big (the end value I chose was \\(100 \\text{ k}\\Omega\\)). To convert this fairly small voltage drop across the plates to a large one we can plug into a DAQ, an inverting amplifier was used with a gain of \\(100 \\frac{\\text{V}}{\\text{V}}\\). A low-pass filter was also implemented on the input side to reduce high-frequency noise.\nBefore building the circuit, we used LTSpice simulated its frequency response from a \\(120 \\text{ V}\\) AC source ranging from \\(1 \\text{ Hz}\\) to \\(200 \\text{ Hz}\\). To simulate a high-impedance load, a \\(100 \\text{ m}\\Omega\\) resistor was placed on the output side From this, we were able to see that a \\(60 \\text{ Hz}\\) input would result in an output voltage of about \\(0.9 \\text{ V}\\). LTSpice Model Frequency sweep results Electrodes # For the sensor, I chose to use 2\u0026quot;x2\u0026quot; and 6\u0026quot;x6\u0026quot; electrodes. The 2\u0026quot;x2\u0026quot; electrodes were held 1\u0026quot; apart, while the 6\u0026quot;x6\u0026quot; electrodes were held 1 cm apart.\nTesting # To test the sensor, I needed a known uniform electric field. For this, I prepared two 12\u0026quot;x12\u0026quot; sheets of aluminum held 2\u0026quot; apart by standoffs. These plates were connected to a function generator generating a sine wave at \\(10 \\text{V}_\\text{pp}\\). From that, we were able to see the frequency responses of the sensor with different plate sizes. After confirmation that the circuit worked in the real world, I created PCBs for durability and reliability. Experimentation # Power line sensing # For power line sensing, I worked with 2 other QPS interns to create a sensor suite featuring a 3 axis magnetometer and GPS. We put this suite in a cart ~1 foot off the ground, and walked over a known powerline. The results showed a clear increase in activity corresponding to where the powerline was located. Over an unknown powerline, there was a noticable increase in activity consistent with a straight line under the parking lot. We believe that this is where a buried powerline is located. Presence detection # Another use case of these sensors was for human presence detection. By combining 4 sensors, were were able to use the human body\u0026rsquo;s disturbance of the 60 Hz E-field generated by power lines to roughly tell direction. We can see roughly where the tester\u0026rsquo;s hand was based on the locations of the points in the 120 Hz and 180 Hz harmonics Z. D. Drummond, K. E. Claytor, R. N. Adelman, D. R. Allee and D. M. Hull, \u0026ldquo;Planar Near-Field Electric Field Sensor Array Applications Facilitated by Neural Networks,\u0026rdquo; in IEEE Sensors Journal, vol. 21, no. 18, pp. 21038-21049, 15 Sept.15, 2021, doi: 10.1109/JSEN.2021.3099984.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","date":"14 July 2023","externalUrl":null,"permalink":"/projects/1748373859540-power-line-sensing/","section":"Projects","summary":"","title":"D-dot sensor","type":"projects"},{"content":"","date":"14 July 2023","externalUrl":null,"permalink":"/tags/internship/","section":"Tags","summary":"","title":"Internship","type":"tags"},{"content":" Github, CAD\nIn high school, I helped coach a local middle school Science Bowl team. Unfortunately, their buzzers from last year no longer worked, and no commercial buzzer system could support their amount of simultaneous players and space requirements. Furthermore, due to the school\u0026rsquo;s ban on personal devices, having them buzz via a website wasn\u0026rsquo;t an option either. Furthermore, I was interesting in learning PCB design, and was looking for a project to implement it. As such, I took it upon myself to build them a set of wireless buzzers for practice.\nDesign # When designing these, I had two main goals in mind - longevity and ease of use. For longevity, I tried to use off-the-shelf components as much as possible - namely, since the cords were most likely to break, I used standard 3.5mm audio cables to connect the plungers to the buzzer box. Furthermore, any console could be used as the master console, allowing for easy replacements in case one broke.\nFor ease of use, I wanted to minimize the interactions the students had to go through to get the game ready. As such, I designed my own auto-pairing protocol based off of ESP-NOW, which would search for a master console and automatically pair to it if it were available. As such, all the students would have to do is turn the buzzers on, and they would be ready to play. Below is a simplified explanation of the protocol:\nPrevious Nextsads Your browser doesn't support embedded videos, but don't worry, you can download it and watch it with your favorite video player! Upon connecting, each buzzer is also given a unique idenfitication number, so the proctor can tell who buzzed.\nIn order to be able to easily tell who buzzed, I put an OLED screen on the box, as well as the loudest buzzer I could find (that the board could power). The OLED screen would display the letter and the number of the buzzer according to the Science Bowl format, allowing the proctor to easily see who buzzed.\nYour browser doesn't support embedded videos, but don't worry, you can download it and watch it with your favorite video player! Finally, I implemented a lockout system preventing others from buzzing after the first person buzzed. Buzzes could be cleared by pressing the buzzer connected to the first buzzer slot of the master console.\nIn use # The first few times I brought the buzzers to club, there were still a few issues to iron out. Specifically, the master console could not handle simultanous buzzes (and just crashed), and disconnections would result in everyone needing to reset all their buzzers. However, after solving these issues, we were able to use these buzzers for practice for the rest of the year. Buzzers being used in club Gallery # ","date":"15 June 2023","externalUrl":null,"permalink":"/projects/1748389382390-wireless-buzzers/","section":"Projects","summary":"","title":"Wireless buzzers","type":"projects"},{"content":"Skateboards are cool! Electric skateboards even more so. Just one small issue - there\u0026rsquo;s this darn remote that you have to keep track of all the time! What if we could make a skateboard that doesn\u0026rsquo;t need an independent remote to control speed? This (combined with the fact that I wanted to stop having to walk to school at 7 AM) led me to design an electric skateboard with a novel weight-based control.\nDesign # The entire design of the skateboard centers around the control scheme. Instead of having a remote, there is a load cell positioned under each foot, and the weight difference between the load cells would determine your acceleration (i.e. more weight on front = accelerate forward, more weight on back = accelerate backwards). Furthermore, if no weight is detected, stop both motors.\nThe board # This meant that I also had to design my own board. My first design consisted of 2 sheets of 1/4\u0026quot; polycarbonate spaced apart with standoffs. However, this was nowhere near stiff enough, as can be seen below: Noticable bend. womp womp To stiffen it, I added multiple pieces of aluminum extrusion running across the length of the board, as well as 3D printed and CNC machined endplates to make sure the trucks don\u0026rsquo;t bend the ends too much. These modifications were able to bring the bend down to a reasonable level. End support structure Second stiffness test Electronics # To control the board, I used a Sparkfun ESP32 Thing board, which allowed for backup Bluetooth connectivity in case the weight-based control scheme didn\u0026rsquo;t pan out. I also used two 170KV BLDC motors belted at a 2:1 ratio to each of the front wheels, and a FLIPSKY dual VESC to control and power the motors.\nBy far the scariest part of the project was making the battery. I decided to use 3000 mAh 3.6V 18650 batteries in a 10S2P layout (10 in series, 2 in parallel), resulting in an estimated range of 11 km (or 6.8 mi). Using nickel strips and a custom 3D printed jig, I spot welded the batteries together and secured it to the underside of the skateboard. Performance # The control system worked on flat ground. On slopes, however, the board was very hard to control, as I subconsciously put more weight on the downward-facing foot, resulting in further downward acceleration.\nGallery # ","date":"16 June 2022","externalUrl":null,"permalink":"/projects/1748393834016-skateboard/","section":"Projects","summary":"","title":"Skateboard","type":"projects"},{"content":" This was a project I quickly put together for the Inventing merit badge. It uses four reflectivity sensors and two micro servos to achieve limited directional control based on the position of the eye. For ease of use, it clipped onto my glasses.\nGallery # ","date":"28 October 2021","externalUrl":null,"permalink":"/projects/1748395685345-eye-tracking-headlamp/","section":"Projects","summary":"","title":"Eye Tracking Headlamp","type":"projects"},{"content":" After seeing Zack Freedman\u0026rsquo;s video on his Somatic data glove, I wanted to make my own version. Furthermore, I was highly interested in learning how to use electronics and looking for a project idea. So, I decided to build my very own data glove.\nDesign # Glove # To detect finger position, I used hall effect sensors and small 6mm neodymium magnets. The sensors were mounted on the base of my knuckles and the magnets on my fingers, and were positioned in such a way where when I extended my fingers, the magnet would be close enough to the sensor to trigger it. On the center of the back of my hand was also a 6 DOF MPU6050 IMU, which I used to detect hand velocity and orientation.\nWrist box # The wrist box held a Teensy 4.0, the battery, battery charger, and an HC-05 Bluetooth module. These were all mounted on a (roughly) semicircular bracelet, with wires running to each hall effect sensor and the IMU. Electronics without glove Unfortunately, the HC-05 does not support acting as a HID (human interface device) by default. However, it shared a controller with the RN-42 bluetooth module, which does support HID. By using an FTDI and reflashing it, I was able to enable HID on the HC-05.\nSoftware # The glove was programmed using Arduino based C. By integrating the angular acceleration measurements twice, I was able to get angular position. From this, I translated the angle of the hand to relative position across the screen (90 degrees meant across the screen), and configured the HC-05 to behave as a bluetooth mouse. Curling the index and middle fingers were tied to left and right clicking respectively, and curling both was tied to middle click.\nGallery # ","date":"10 April 2021","externalUrl":null,"permalink":"/projects/1748401657434-data-glove/","section":"Projects","summary":"","title":"Data glove","type":"projects"},{"content":" V1 and V2 CAD, Y plate CAD, Z carriage\nOne of the big issues I encountered when building my 3D printer was manufacturing the frame. It was difficult manhandling the jigsaw to cut precisely where I wanted, and the drill holes never exactly lined up. Furthermore, as plate manufacturing is such a large thing in FTC, I wanted to be able to mull 1/8\u0026quot; 6061 T6 aluminum in house. As such, I set my sights on building a CNC machine. This machine was initially built in 2020, with improvements made in 2021 and 2022.\nV1 (2020) # Design # At first, I had nearly no idea what I was doing. Taking inspiration from commercial designs and 3D printers, I used NEMA 17 stepper motors and V-slot extrusion with plastic wheels. While this was able to move precisely and smoothly, when cutting, the large frame and flimsy construction resulted in imprecise and unrepeatable cuts.\nAs this machine was to be working indoors, I also designed a dust shoe to collect chips and dust that were created by the end mill. This dust shoe was connected to a shop vaccum to provide a large suction force.\nThough the machine was no good, this experience taught me a lot - how to work with aluminum extrusion, the basics of frame design and statics, and how to use a CNC machine.\nGallery # Your browser doesn't support embedded videos, but don't worry, you can download it and watch it with your favorite video player! V2 (2021) # Design # Learning from the first design, I drastically stiffened the frame (larger extrusions, linear bearings, aluminum extrusions for corners, bulkier 3D prints). I also upgraded the spindle from a cheap rotary tool to a Dewalt mini-router, finally giving the machine the horsepower it needed to be able to cut through aluminum.\nThough this machine was a big improvement, it still had quite a few issues. The Y carriages were still mostly 3D printed, which resulted in a lot of flex along the Y axis. Furthermore, the small bearings used for linear bushings were prone to breaking, expecially under high vibration environments. Finally, resonance generated by the cutting tool led to consistent imperfections in the cutting face.\nA brief foray into lasers # You may notice a small blue-and-orange thing hanging off the end of the spindle. In this iteration, I also tried to integrate a diode laser into the machine. The idea was to integrate laser etching (and possibly cutting) into the workflow of this machine, letting me make CNC cut parts that also had perfectly positioned laser features. While the laser did work (shockingly well), I found it unnecessary as I mostly did fast prototyping on this machine, and took it off in v3. MC Escher\u0026rsquo;s \u0026quot;Drawing Hands\u0026quot;, engraved by v2. Gallery # V3 (2022) # Design # To further stiffen the machine, I replaced the 3D printed Y-carriages with 1/4\u0026quot; mild steel plates. The added weight resulted in the Y-axis leadscrews binding - as such, they were replaced with ball screws, which provide more precise and smoother motion.\nPart mounting was also an issue with the previous two versions, as the simple clamping mount caused parts to slip. This was replaced by side gripping mounts which hold onto the spoilboard, and wood screws to hold the part being cut securely onto the spoilboard.\nThis design was able to precisely cut aluminum, as well as more exotic materials such as carbon fiber and G10.\nGallery # ","date":"14 March 2020","externalUrl":null,"permalink":"/projects/1748402810186-cnc-router/","section":"Projects","summary":"","title":"CNC Router","type":"projects"},{"content":" Yeah no not keeping this thing running overnight Say hello to my very first project! I built this thing because I was VERY into 3D printers, and started getting bored of my stock Ender 3. In particular, I wanted to try out multi-color printing. When I built this, I had no idea what tolerances, precision, or frame stiffness even was - I just wanted to get my hands moving and build something awesome. Of course, knowing next to nothing about engineering, I built this floppy and imprecise fire hazard. While it did print (in that it indeed melted plastic and put it vaguely in the shape I wanted it to), the dual-extrusion part turned out to be a flop. Nevertheless, I still hold great respect for this could-have-been great machine, as it kicked off a making streak that continues to this day.\n","date":"2 June 2019","externalUrl":null,"permalink":"/projects/1748405390093-babys-first-3d-printer/","section":"Projects","summary":"","title":"Baby's first 3D printer","type":"projects"},{"content":"","externalUrl":null,"permalink":"/authors/","section":"Authors","summary":"","title":"Authors","type":"authors"},{"content":"","externalUrl":null,"permalink":"/categories/","section":"Categories","summary":"","title":"Categories","type":"categories"},{"content":"","externalUrl":null,"permalink":"/series/","section":"Series","summary":"","title":"Series","type":"series"}]