NETWORKING: PIN THE TAIL ON THE HEADLESS RASPBERRY PI
eager to get deeper into robotics after dipping my toe in the water with my BB-8 droid, I purchased a Raspberry Pi 3 model B. The first step was to connect to it. but while it has built-in 802.11n wireless, I at first didn’t have a wireless access point, though I eventually did get one. That indicated I went through different ways of finding it and connecting to it with my desktop computer. definitely there are others seeking to do the same so let’s take a look at the secret incantations used to connect a Pi to a computer directly, and indirectly.
Why connect to the Pi from my desktop computer? After all, there are small monitors and keyboards that hackers frequently use to make Pi laptops and Pi tablets. Since I was going to be embedding the Pi in various robots, I saw no need to purchase a separate monitor and keyboard for it, but I did look a little into doing so.
My desktop’s monitor uses a VGA connector but the VGA-to-HDMI adapter I gotten along with the Pi didn’t work. Also, my desktop’s ancient KeyTronic keyboard uses a PS/2 connector so that wasn’t usable either. though PS/2-to-USB adaptors do exist, my research showed that I’d need the one that has USB smarts in it, as my keyboard predates USB and has no such electronics of its own. (But it does have sweet, deep tactile keys!) My Pi would remain headless, and I’d program it by connecting to it from my desktop computer.
Connecting directly by means of Ethernet Cable
My home modem was also ancient, having no wireless. It also had only one Ethernet port. That indicated I could connect my desktop computer either to the modem or to the Raspberry Pi but not both at the same time. So on unboxing the Pi, the only way to connect it to my computer was to unplug the Ethernet cord from the modem and plug it into the Pi instead. That indicated no Internet access while working with the Pi, hardly ideal, but good enough to see if the Pi worked at all.
But for my computer to speak to the Pi, I needed the Pi’s IP address. For those not familiar with IP addresses, they consist of 4 numbers ranging from 0 to 255 separated by dots. Till exempel:
169.254.95.208
It’s really a 32-bit number but it’s written that way for readability.
Network and Sharing center in Windows
IP address and subnet mask
Going to the Windows control panel on my desktop and then the Network and Sharing Center, I could see that a network now existed.
Clicking on view status and going deeper I found some beneficial information. The first was the IP address of the desktop computer, 169.254.95.208. The IPv4 tells me that it’s using Internet Protocol version 4. The IP addresses in IPv6 differ at least in that they’re four times as long.
Further, the presence of the IPv4 Subnet Mask, 255.255.0.0 told me that a subnet, or subnetwork, had been formed between the two machines. A subnet is a group of machines making up a smaller network that may or may not be a part of a larger one. Their IP addresses all start with the same binary values, though just how lots of bits at the beginning they have in common varies. how do you know which bits are common?
Using the subnet mask
That’s where the subnet mask comes in. To find out which bits, take the subnet mask and do a bitwise and with the IP address of a maker on that subnet. As the diagram shows, the result in my case was 169.254.0.0, indicating that the Pi’s IP address must start with 169.254. another way of writing the subnet mask is in CIDR notation. In CIDR notation the IP address is followed by a / and then the number of shared bits. In this case it would be 169.254.0.0/16. The last two numbers are zeros but they need not be considering that the 16 tells you what to keep. This CIDR notation will come in helpful shortly.
Though the 169.254 was shared, that still left 65,536 (256×256) possible combinations for the two remaining numbers. To scan the network, going through every possible combination of numbers, I used nmap, downloadable from nmap.org.
‘nmap -sn’ scan results
As shown in the snapshot, I ran it in a cygwin window though there are GUI versions available too. I used the following command line.
nmap -sn 169.254.0.0/16
Note that the subnet mask is given using CIDR notation. The section about the Raspberry Pi that you see in the snapshot appeared after around 10 minutes, indicating that it took that long to scan from 169.254.0.0 to 169.254.37.77, the Pi’s IP address. even though that was what I was looking for, I left it going anyway and the full scan took just over forty-four minutes. during that time it also found my desktop computer, the host from which it was doing the scan. had the Pi’s IP address been 169.254.255.255 then it would have taken the full forty-four minutes before finding it.
The Pi’s IP address continued to be 169.254.37.77 across shutdowns and so scanning again was not necessary.
Starting Up A terminal and VNC DesktopKitt för ssh terminal
VNC-skrivbord
Nu när jag hade det förbundet, behövde jag en terminal som körde ett säkert skal (SSH) i PI på stationär datorn. Att ställa in terminalen var helt enkelt en fråga om att ladda ner det populära kittprogrammet och köra det. I sessionen fyllde jag i PIs IP-adress, port 22 och såg till att SSH valdes. Som öppnade ett terminalfönster med en inloggningsprompt. Standard användarnamn är PI och lösenordet är hallon. Självklart det första jag gjorde var att köra passwd-verktyget för att ändra lösenordet.
Alternativt kan du få en grafisk terminal istället med VNC. Detta är ett grafiskt skrivbord som körs i ett fönster på din stationär dator men är verkligen en terminal i PI.
Anslutning med hjälp av Ethernet med en trådlös router
Det var inte länge efter att ha fått min PI att jag fattade ett beslut att byta till en trådlös router / fibermodem combo. Som en bonus innehåller denna uppgradering även flera Ethernet-portar. Jag satte upp min stationära dator för att använda trådlöst, men jag kunde inte göra detsamma för PI just än. Jag var tvungen att göra en konfiguration på PI för att ställa in den trådlösa, och så var jag tvungen att ansluta med Ethernet först.
Router Network Information i en webbläsare
Anslutning till routern med Ethernet var mycket lättare än den direkta anslutningsmetoden som omfattas över med tanke på att ingen skanning var inblandad. När jag hade anslutit PI med en Ethernet-kabel, tog jag helt enkelt upp en webbläsare på min stationära dator och skrivade routerns IP-adress i webbläsarens URL-fält på toppen. Detta är en adress som 192.168.1.1 eller 192.168.2.1, men med http: // framför det, även om vissa webbläsare inte behöver http: //. Kontrollera din router / modemhandbok.
Det du ser beror på ditt modem, men min visade ett nätverksdiagram längst ner med PI: s IP-adress, 192.168.2.14. Med det kunde jag ta upp en terminal med hjälp av kitt som beskrivits ovan.
Om du vill stanna med Ethernet mellan din PI och modemet är du klar. Men jag ville gå trådlöst så att mina robotar kunde vandra runt utan en efterföljande Ethernet-kabel. Nu när jag hade en terminal i PI kunde jag gå vidare till nästa steg.
Anslutning trådlöst
Raspberry PI 3-modellen B har trådlös inbyggd, men om du har en version utan trådlöst kan du också få en trådlös dongle som pluggar in i en av PIs USB-portar. Innan du kan ansluta till den huvudlösa PI trådlöst, måste du fortfarande ansluta till den med en av ovanstående metoder först och gör en konfiguration på PI.
Jag tog upp en terminal och loggade in som beskrivet ovan. Jag behövde sätta mitt trådlösa nätverksnamn och nätverkslösenord i konfigurationsfilen /etc/wpa_supplicant/wpa_supplicant.conf. Men av säkerhetsskäl ville jag inte att lösenordet skulle vara i vanlig text.
Använda WPA_passPhrase och redigering wpa_supplicant.conf
Redigering wpa_supplicant.conf
Så jag körde wpa_passprase “bobsnetnamn” “bobsnetpassword” och markerade utgången, som i den här terminalen kopierar den markerade texten till urklippet. “BobsnetName” och “bobsnetpassword” är naturligtvis fiktiva.
Jag redigerade sedan /etc/wpa_supplicant/wpa_supplicant.conf och klistras från klippbordet genom att högerklicka. Den klistrade texten inkluderade fortfarande en rad med lösenordet i tydlig text. Det kommenterades men ändå synligt, så jag tog bort det.
Efter att ha sparat, och avsluta redigeraren kopplade jag på Ethernet-kabeln. Ett löpande program som heter WPA-supplicant borde ha tagit bara några sekunder efter att filen ändrats för att märka den och få den trådlösa går. Och så efter att ha väntat några sekunder sprang jag Ping Google.com. Det fungerade. PI var ansluten trådlöst.
Hade det inte varit så kunde jag ha startat om det manuellt genom att köra sudo wpa_cli omkonfiguration. Detta rapporterar också gränssnittsnamnet, WLAN0 i mitt fall.
Running ‘IFCONFIG WLAN0’
För att dessutom testa det, och för att få PI: s IP-adress, körde jag IFCONFIG WLAN0 och letade efter IP-adressen bredvid Inet Addr. Det var där och med det kunde jag ansluta till PI och starta programmeringsroboterna.
Det var mina erfarenheter av att ansluta till min hallon Pi, men vi vet att det finns massor av Raspberry Pi-användare på Hackaday. Vilka metoder har du använt, vilka fällor har du hittat och vilka idéer du har för att komma ut ur dem? Låt oss veta i kommentarerna så att andra inte faller i dem också.