User Tools

Site Tools


pi1541

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
pi1541 [2019/04/01 10:58]
sausage
pi1541 [2021/02/02 01:24] (current)
Line 1: Line 1:
 ====== Building the Pi1541 ====== ====== Building the Pi1541 ======
  
-I first heard about the [[https://​cbm-pi1541.firebaseapp.com|Pi1541]] created by Steve White on [[http://​www.chickenlipsradio.org|Chicken Lips Radio]]. There had been other solutions in the past for hooking up an SD card to a C64/128 but nothing for the average hacker that would fully emulate a 1541 or daily chain to another real 1541. +{{ :​wiki:​pi-5165.jpg?​nolink&​300|}} ​I first heard about the [[https://​cbm-pi1541.firebaseapp.com|Pi1541]] created by Steve White on [[http://​www.chickenlipsradio.org|Chicken Lips Radio]]. There had been other solutions in the past for hooking up an SD card to a C64/128 but nothing for the average hacker that would fully emulate a 1541 or daisy chain to another real 1541. 
  
 Discovering that this project ran bare metal on the Raspberry Pi without any underlying OS was impressive to say the least, exactly what I was hoping someone would eventually produce. ​ Discovering that this project ran bare metal on the Raspberry Pi without any underlying OS was impressive to say the least, exactly what I was hoping someone would eventually produce. ​
Line 32: Line 32:
   * 40-pin header - https://​www.aliexpress.com/​item/​10PCS-2X20-PIN-Double-row-Straight-FEMALE-PIN-HEADER-2-54MM-PITCH-Strip-Connector-Socket-2/​32854215610.html   * 40-pin header - https://​www.aliexpress.com/​item/​10PCS-2X20-PIN-Double-row-Straight-FEMALE-PIN-HEADER-2-54MM-PITCH-Strip-Connector-Socket-2/​32854215610.html
   * Level Shifter Module (includes 12 header pins) - https://​www.aliexpress.com/​item/​5pcs-lot-5V-3V-IIC-UART-SPI-Four-Channel-Level-Converter-Module-for-Arduino-Free-Shipping/​32247463702.html   * Level Shifter Module (includes 12 header pins) - https://​www.aliexpress.com/​item/​5pcs-lot-5V-3V-IIC-UART-SPI-Four-Channel-Level-Converter-Module-for-Arduino-Free-Shipping/​32247463702.html
-  * 2 x DIN 6-pin Sockets - https://​www.aliexpress.com/​item/​10PCS-2X20-PIN-Double-row-Straight-FEMALE-PIN-HEADER-2-54MM-PITCH-Strip-Connector-Socket-2/​32854215610.html+  * 2 x DIN 6-pin Sockets - https://​www.aliexpress.com/​item/​32841961776.html
   * Hex Socket Screw Bolts M2.5 18mm - https://​www.aliexpress.com/​item/​50pcs-M2-5-18-20-22-25-28-30-32-35-38-40-mm-304-Stainless/​32859007238.html   * Hex Socket Screw Bolts M2.5 18mm - https://​www.aliexpress.com/​item/​50pcs-M2-5-18-20-22-25-28-30-32-35-38-40-mm-304-Stainless/​32859007238.html
   * Hex Lock Nuts M2.5 - https://​www.aliexpress.com/​item/​50pcs-M2-M2-5-M3-M4-M5-M6-304-stainless-Steel-Nylon-Insert-Hex-Lock-Nuts/​32858121224.html   * Hex Lock Nuts M2.5 - https://​www.aliexpress.com/​item/​50pcs-M2-M2-5-M3-M4-M5-M6-304-stainless-Steel-Nylon-Insert-Hex-Lock-Nuts/​32858121224.html
Line 67: Line 67:
 I chose the 3.3V and Bus 0. The I2C oLED screen I chose was the GND, Vcc (rather than Vcc, GND) so I configured the solder point for that. I chose the 3.3V and Bus 0. The I2C oLED screen I chose was the GND, Vcc (rather than Vcc, GND) so I configured the solder point for that.
  
-{{ :​wiki:​pi-5051.jpg?​direct |}}+{{ :​wiki:​pi-5051.jpg?​direct&​500 ​|}}
  
 Next, was placing the four resistors and single capacitor. Next, was placing the four resistors and single capacitor.
  
-{{ :​wiki:​pi-5055.jpg?​direct |}}+{{ :​wiki:​pi-5055.jpg?​direct&​500 ​|}}
  
 {{ :​wiki:​pi-5082.jpg?​direct |}} {{ :​wiki:​pi-5082.jpg?​direct |}}
Line 77: Line 77:
 Then I configured the 7406 chip solder points. Then I configured the 7406 chip solder points.
  
-{{ :​wiki:​pi-5080.jpg?​direct |}}+{{ :​wiki:​pi-5080.jpg?​direct&​500 ​|}}
  
 I add the 14-pin socket to the board which will house the 7406 IC. I noted the orientation of the socket, placing the notch to the left. For safety, as there were more components and points to solder, I didn't place the 7406 chip into the socket yet. I add the 14-pin socket to the board which will house the 7406 IC. I noted the orientation of the socket, placing the notch to the left. For safety, as there were more components and points to solder, I didn't place the 7406 chip into the socket yet.
  
-{{ :​wiki:​pi-5152.jpg?​direct |}}+{{ :​wiki:​pi-5152.jpg?​direct&​500 ​|}}
  
 Next placed were the two 5mm leds. I used green for the power indicator and orange for the drive activity indicator. The bill of materials asks for 3mm leds, but I opted for 5mm. This is totally fine and they fit without any issues. Next placed were the two 5mm leds. I used green for the power indicator and orange for the drive activity indicator. The bill of materials asks for 3mm leds, but I opted for 5mm. This is totally fine and they fit without any issues.
Line 93: Line 93:
 I then fitted the speaker enable header pins. I then fitted the speaker enable header pins.
  
-{{ :​wiki:​pi-5154.jpg?​direct |}}+{{ :​wiki:​pi-5154.jpg?​direct&​500 ​|}}
  
 Then, the 4-pin header. This is the header that will hold the removable oLED screen. Then, the 4-pin header. This is the header that will hold the removable oLED screen.
Line 101: Line 101:
 The next thing was the 40-way header that connects the daughter board onto the Raspberry Pi board. I was careful to get this around the right way. The header is connected to the underside of the board. That is, the opposite side of the PCB to all the other connected components. The next thing was the 40-way header that connects the daughter board onto the Raspberry Pi board. I was careful to get this around the right way. The header is connected to the underside of the board. That is, the opposite side of the PCB to all the other connected components.
  
-{{ :​wiki:​pi-5156.jpg?​direct |}}+{{ :​wiki:​pi-5156.jpg?​direct&​500 ​|}}
  
 Then I fitted the reset switch. Then I fitted the reset switch.
Line 121: Line 121:
 Next, the two DIN sockets were soldered into place. These two sockets sit very nicely together. Next, the two DIN sockets were soldered into place. These two sockets sit very nicely together.
  
-{{ :​wiki:​pi-5162.jpg?​direct |}}+{{ :​wiki:​pi-5162.jpg?​direct&​500 ​|}}
  
 Finally at this point, I added the 7406 IC into the 14-pin socket, noting the orientation,​ notch to the left. Finally at this point, I added the 7406 IC into the 14-pin socket, noting the orientation,​ notch to the left.
  
-{{ :​wiki:​pi-5163.jpg?​direct |}}+{{ :​wiki:​pi-5163.jpg?​direct&​500 ​|}}
  
 At this point, I was keen to give it a try, even though I didn't have the optional 5 switches in place. This is because I forgot to order some. I unsoldered a bunch of right angled button switches from various junk boards but they all varied in button depth. I wanted this to be a pretty nice build, so I ordered some from RS Electronics. At this point, I was keen to give it a try, even though I didn't have the optional 5 switches in place. This is because I forgot to order some. I unsoldered a bunch of right angled button switches from various junk boards but they all varied in button depth. I wanted this to be a pretty nice build, so I ordered some from RS Electronics.
Line 131: Line 131:
 I added the Pi1541 daughterboard to the Raspberry Pi, the oLed screen into the 4 pin header, attached the power, the DIN cable to the IEC socket and the other end into my Commodore 128. I added the Pi1541 daughterboard to the Raspberry Pi, the oLed screen into the 4 pin header, attached the power, the DIN cable to the IEC socket and the other end into my Commodore 128.
  
-{{ :​wiki:​pi-5164.jpg?​direct |}}+{{ :​wiki:​pi-5164.jpg?​direct&​500 ​|}}
  
-{{ :​wiki:​pi-5165.jpg?​direct |}}+{{ :​wiki:​pi-5165.jpg?​direct&​500 ​|}}
  
 I turned on the C128 and then the Pi1541. I turned on the C128 and then the Pi1541.
Line 155: Line 155:
 Checked all points. Pleased to say I'd done a pretty good job. However, I did spot that somehow the voltage pads for 3.3 volts on I2C configuration section were not joined. Nor was one of the GND / Vcc pad joiners. Checked all points. Pleased to say I'd done a pretty good job. However, I did spot that somehow the voltage pads for 3.3 volts on I2C configuration section were not joined. Nor was one of the GND / Vcc pad joiners.
  
-I could have sworn I soldered these up. A quick check of the photo sequence ​confirms I was right. Could soldering the nearby components have tranferred ​enough heat to have melted the joiners? I would doubt it. But it seemed to explain why my oLED screen wasn't working.+{{ :​wiki:​pi-5170.jpg?​direct&​500 |}} 
 + 
 +I could have sworn I soldered these up. A quick check of the earlier ​photo confirms I was right. Could soldering the nearby components have transferred ​enough heat to have melted the joiners? I would doubt it. But it seemed to explain why my oLED screen wasn't working.
  
 I rejoined the pads correctly and reassembled. I rejoined the pads correctly and reassembled.
Line 165: Line 167:
 I brought the Pi1541 inside and connected it to the TV to see what it outputs. I was pleased to see that a menu screen appeared and all the D64 images were listed. So something was working. I brought the Pi1541 inside and connected it to the TV to see what it outputs. I was pleased to see that a menu screen appeared and all the D64 images were listed. So something was working.
  
-More fiddle-diddling with the options.txt but there was no change. At this point I started reading around. You know... reading the manual? I went back to the original instructions,​ and forum post on Lemon64.+More fiddle-diddling with the options.txt but there was no change. At this point I started reading around. You know... reading the manual? I went back to the original instructions,​ and also read through [[http://​cheshire.iinet.net.au/​Pi1541Wiki.htm|the unofficial FAQ]] and [[https://​www.lemon64.com/​forum/​viewtopic.php?​t=67978|forum post on Lemon64]].
  
 As much as I read about "​browser mode" or the file browser disk that was available, the less I understood of it. As much as I read about "​browser mode" or the file browser disk that was available, the less I understood of it.
Line 173: Line 175:
 Checking the unit again on the TV, I connected a USB keyboard and realised after a cold boot time of around 7 seconds, the menu would be ready. I could hit enter and the first .D64 image from the list would mount. Ok good. This means I could test it on the C128 without a screen. Checking the unit again on the TV, I connected a USB keyboard and realised after a cold boot time of around 7 seconds, the menu would be ready. I could hit enter and the first .D64 image from the list would mount. Ok good. This means I could test it on the C128 without a screen.
  
-I hooked everything back up in the workshop, started the Pi1541, and after a few seconds, pressed ''​Enter''​ on the usb keyboard to mount the first disk: 1985.d64 from Mastertronic. ''​LOAD "​*",​8,​1''​ and lo and behold the game loaded! Complete with activity indicator led and buzzer sound! Can you believe it? This project actually works! ​+I hooked everything back up in the workshop, started the Pi1541, and after a few seconds, pressed ''​Enter''​ on the USB keyboard to mount the first disk: 1985.d64 from Mastertronic. ''​LOAD "​*",​8,​1''​ and lo and behold the game loaded! Complete with activity indicator led and buzzer sound! Can you believe it? This project actually works! ​
  
-My eight year old daughter then spent quite a while playing 1985, then onto 720 degrees which she loved. She found 8-bit skateboarders falling into water hillarious+My eight year old daughter then spent quite a while playing 1985, then onto 720 degrees which she loved. She found 8-bit skateboarders falling into water hilarious
  
 So it WAS working. Didn't answer the issue of my oLED not working though. ​ So it WAS working. Didn't answer the issue of my oLED not working though. ​
  
-Hooking it back up to the TV and I noticed the menu stated that ''​no I2C scan found''​. Checking my bill of materials order list, to my horror, I realise that I actually bought an SSD1315, not an SSD1306 as stated in the Pi1541 materials list.+Hooking it back up to the TV and I noticed the menu stated that ''​no I2C scan found''​. Checking my bill of materials order list, to my horror, I realise that I actually bought an ''​SSD1315''​, not an ''​SSD1306'' ​as stated in the Pi1541 materials list.
  
-But then researching the SSD1315 it is supposed to be compatible with the SSD1306. So is it? And how do I test if I have a dud? Youtube was a dead end, any video showing "ssd1306 ​test" showed oLEDs already hooked up to Arduino boards and displaying something. I just wanted to get a simple multimeter test on the voltage pins. +But then researching the ''​SSD1315'' ​it is supposed to be compatible with the ''​SSD1306''​. So is it? And how do I test if I have a dud? Youtube was a dead end, any video showing "SSD1306 ​test" showed oLEDs already hooked up to Arduino boards and displaying something. I just wanted to get a simple multimeter test on the voltage pins. 
  
 No-one demoed that. Perhaps I am the first person in the history of mankind to want to do the most basic of test. Anyway, I popped it onto a breadboard with a 3.6V lithum battery. Nothing. And no voltage on the Vcc. No-one demoed that. Perhaps I am the first person in the history of mankind to want to do the most basic of test. Anyway, I popped it onto a breadboard with a 3.6V lithum battery. Nothing. And no voltage on the Vcc.
Line 197: Line 199:
 That made more sense for me, and I easily changed this in the options.txt. That made more sense for me, and I easily changed this in the options.txt.
  
-To finish off the unit, I added the spacers, nuts and bolts to clamp the daughterboard ​to the Raspberry Pi. +{{ :​wiki:​pi-5175.jpg?​direct&​500 |}} 
 + 
 +To finish off the unit, I added the spacers, nuts and bolts to clamp the daughter-board ​to the Raspberry Pi.  
 + 
 +{{ :​wiki:​pi-5177.jpg?​direct&​500 |}}
  
 I since ordered another SSD1306, but it hasn't arrived in time for this article. I since ordered another SSD1306, but it hasn't arrived in time for this article.
  
-And that's the end of the journey so far. I've always hoped someone would turn a Raspberry Pi into a 1541. It's such an excellent project. I would like to thank both Steve White for creating the Pi1541 and to CG for sharing his Pi1541 ​daughterboard ​design.+And that's the end of the journey so far. I've always hoped someone would turn a Raspberry Pi into a 1541. It's such an excellent project. I would like to thank both Steve White for creating the Pi1541 and to CG for sharing his Pi1541 ​daughter-board ​design.
  
-I've donated to CG by purchasing his board via PCBWay, and also directly to Steve as a thanks for his hard work and generosity.+I've donated to CG by purchasing ​[[https://​www.pcbway.com/​project/​shareproject/​Pi1541_IO_Adapter__Rev_4.html|his board via PCBWay]], and also [[https://​cbm-pi1541.firebaseapp.com|directly to Steve]] as a thanks for his hard work and generosity.
  
 When you consider you're dropping money for all the parts required, it's a nice idea to drop a few extra dollars to Steve and CG. When you consider you're dropping money for all the parts required, it's a nice idea to drop a few extra dollars to Steve and CG.
pi1541.1554116312.txt.gz · Last modified: 2021/02/02 01:24 (external edit)